function RollSlideshow(i,max)
{
    if(i>max)
        i=0;
    $('.slideshow').blinds_change(i);
    setTimeout("RollSlideshow("+(i+1).toString()+","+max.toString()+");",6000);
}

var FadeInTime = 1500;
var FadeOutTime = 1000;
var FadeDelayTime = 2000;
var FirstFade=1;
function RollFade(BaseID,i,max)
{
    if(i>max)
        i=FirstFade;
    CallNext="RollFade('"+BaseID+"', "+(i+1).toString()+", "+max.toString()+");";
    ThisID="#"+BaseID+i.toString();
    $(ThisID).fadeIn(FadeInTime, function(){
        setTimeout("$('"+ThisID+"').fadeOut("+FadeOutTime+");"+CallNext,FadeDelayTime);
    });
}

function List(ParamList)
{
    this.ID=ParamList.ID;
 
    this.ListElement=$("#"+this.ID);
    this.ListItems=$("#"+this.ID+" li");
 
    if(ParamList.TimeoutID)
        this.TimeoutID=ParmList.TimeoutID;
 
    if(ParamList.Index)
        this.Index=ParamList.Index;
    else
        this.Index=0;
 
    if(ParamList.RollFadeDelayTime)
        this.FadeDelay=ParamList.RollFadeDelayTime;
    else
        this.FadeDelay = FadeDelayTime;
 
    if(ParamList.RollFadeInTime)
        this.FadeInTime=ParamList.RollFadeInTime;
    else
        this.FadeInTime = FadeInTime;
 
    if(ParamList.RollFadeOutTime)
        this.FadeOutTime=ParamList.RollFadeOutTime;
    else
        this.FadeOutTime = FadeOutTime;
 
    if(ParamList.OnIndexChange)
        this.OnIndexChange=ParamList.OnIndexChange;
    this.ListElement.bind("IndexChange",this.OnIndexChange);
    
    if(ParamList.AutoRoll==false)
        this.AutoRoll=false;
    else
        this.AutoRoll=true;
    
    this.Pausing=false;
    this.CancelSwitch=false;
}

var ResetRoll=true;
function FadeRollList(ListID)
{
    $('#'+ListID+' li').stop(true);
    var oList=window['o'+ListID];
    var ListItems=oList.ListItems;
    if(ResetRoll)
        ListItems.fadeOut(0);

    var i=oList.Index;
    if(i==null || i==undefined || i>ListItems.size()-2)
        oList.Index=-1;

    var Item=ListItems.eq(i);
    var ItemText='$("#'+ListID+' li").eq('+i+')';
    var CallNext="FadeRollList('"+ListID+"');";
 
    // This is because microsoft IE cannot fade propperly. Stupid browser... 
    var lFadeInTime=0;
    var lFadeOutTime=0;
    var lDelay=oList.FadeDelay;
    lFadeInTime=oList.FadeInTime;
    lFadeOutTime=oList.FadeOutTime;
    var FadeOut=ItemText+".fadeOut("+lFadeOutTime+");";

    //    alert("Timeout ID: "+oList.TimeoutID);               
    if($.browser.msie)
    {
        var ChildrenFadeOut=ItemText+".children().fadeOut("+lFadeOutTime+");";
        Item.fadeIn(0,function(){
            Item.children().fadeIn(lFadeInTime, function(){
                if(oList.AutoRoll)
                {
                    oList.TimeoutID=setTimeout(FadeOut+ChildrenFadeOut+ CallNext,lDelay);
                }
            });
        });
    }
    else
    {
        Item.fadeIn(lFadeInTime, function(){
            if(oList.AutoRoll)
            {
                oList.TimeoutID=setTimeout(FadeOut+ CallNext,lDelay);
            //            alert( "Timeout Changed To: "+oList.TimeoutID);            
            }
        });
    }
    oList.Index++;
    oList.ListElement.trigger("IndexChange");
}

function PauseListRoll(ListID)
{
    //    alert( "Timeout Cleared: "+window['o'+ListID].TimeoutID);                
    if(window['o'+ListID].TimeoutID)
        clearTimeout(window['o'+ListID].TimeoutID);
}
 
function SwitchItem(ListID,i, PauseTime)
{
    var oList=window['o'+ListID];
    if (oList.CancelSwitch)
        return;
    PauseListRoll(ListID);
    if(i!=null && i!=undefined)
    {
        if(i<0)
        {
            oList.Index=oList.Index+i-1;
            if(oList.Index<0)
                oList.Index +=oList.ListItems.size();
        }
        else
        {
            oList.Index=i;
        }
    }

    if(oList.AutoRoll && !oList.Pausing)
    {
        var NormalDelay=oList.FadeDelay;
        var NormalFadeIn=oList.FadeInTime;
        //    var NormalFadeOut=oList.FadeOutTime;
        if(PauseTime==undefined){
            oList.FadeDelay=10000;
        }
        else{
            oList.FadeDelay=PauseTime;
        }
        
        oList.FadeInTime='fast';
        FadeRollList(ListID);
        oList.Pausing=true;
        var SetNormalText='o'+ListID+'.FadeDelay='+NormalDelay+';';
        SetNormalText+='o'+ListID+'.FadeInTime='+NormalFadeIn+';'
        setTimeout(SetNormalText,NormalDelay+100);
        setTimeout(' window["o'+ListID+'"].Pausing=false;',oList.FadeDelay);
    }
    else
    {
        FadeRollList(ListID);            
    }
}
function AddListItem(Name, AddThumb)
{
    var ImageIndex=$('#'+Name+' li').size()+1;
    if(ImageIndex>1)
    {
        $('#'+Name+' li').last().clone().appendTo($('#'+Name));
        $('#'+Name+' li img').last().attr('id','poster'+ImageIndex)
        if(AddThumb==undefined || AddThumb==true)
        {
            $('#'+(ImageIndex-1) ).clone().attr('id',ImageIndex).attr('src','images/gallery/'+Name.toLowerCase()+'/tumb/'+ImageIndex+'.jpg').insertBefore('#Create');
        }
    }
    else
    {
        $('#'+Name).append('<li><img src="" id="poster1"/></li>');
        $('#Create').before('<img id="1" src="images/gallery/'+Name.toLowerCase()+'/tumb/1.jpg"/>');
    }
    window['o'+Name].ListItems=$("#"+Name+" li");
    SwitchItem(Name, ImageIndex-1);
}

function GalleryBind(Name)
{
    $('.tumb').hover(function(){
        $(this).attr("src",'images/gallery/'+Name.toLowerCase()+'/tumb/'+$(this).attr('id')+ '.jpg').addClass('selected');
    },function(){
        $(this).attr("src",'images/gallery/'+Name.toLowerCase()+'/tumb/'+$(this).attr('id')+ 'bw.jpg').removeClass('selected');
    });
        

    $(".tumb").click( function()
    {
        var clicked =  $(this).attr('id');
        SwitchItem(Name, parseInt(clicked)-1);
        $('.tumb.selected').trigger('mouseleave');
        $('#'+clicked).trigger('mouseenter').unbind('mouseleave').mouseleave(function(){
            $(this).mouseleave(function(){
                $(this).attr("src",'images/gallery/'+Name.toLowerCase()+'/tumb/'+$(this).attr('id')+ 'bw.jpg').removeClass('selected');
            });
        });
    });

    SetHoverPause(Name, '.poster')
    
    $('.Pager').fadeTo(0,0.5);
    
    $('.Pager').bind('mouseenter', function () {
        $(this).fadeTo("fast", 1);
    }).bind('mouseleave', function () {
        $(this).fadeTo("fast", 0.5);
    } ) ;
    
    $(".Pager.Next").click(function(){
        SwitchItem(Name);
    });

    $(".Pager.Prev").click(function(){
        SwitchItem(Name,-1);
    });

}

function SetHoverPause(ListID, HoverSelector)
{
    var oList=window['o'+ListID];
    $(HoverSelector).mouseover(
        function(){
            if(!oList.Pausing)
                PauseListRoll(ListID);
        });
    /*        
    $(HoverSelector).mousemove(
        function(){
            PauseListRoll(ListID);
        });
*/
    $(HoverSelector).mouseout(
        function(){
            if(oList.AutoRoll && !oList.Pausing)
            {   
                oList.TimeoutID=setTimeout('SwitchItem("'+ListID+'", '+oList.Index-1+', '+oList.FadeDelay+');',1500);
            }
        });

}
