
//=========================================================================================

    //////////////////////////////////////////////////////////
    // Author: Jeff McIver
    // copyright 2008, all rights reserved
    // v1.02.1 September 13, 2009
    //
    // 090913 Improved Image cacheing



    var Resource="http://www.chunyimciver.com/CommonResources/";
    var PreloadTimer;
    var PreloadGoing=0;

    function InitPage()
    {
        MakeCustomMenu();
        SetMode();
        SetSlideControl();
        PrepPreLoad();
        SetPage(1);
        IEFix();
    }

    window.onload=InitPage;


    function IEFix()
    {
        // this test succeeds only in IE
        // IE does not support the hover pseudoclass in elements other than <A>
        // so this code is a workaround for dropdown menus
        if (document.all && document.getElementById) 
        {
            var sfEls = document.getElementById("Nav").getElementsByTagName("LI");
            for (var i=0; i<sfEls.length; i++) 
            {
                sfEls[i].onmouseover=function() 
                {
                    this.className+=" over";
                }
                sfEls[i].onmouseout=function()
                {
                    this.className=this.className.replace(" over", "");
                }
            }
        }
    }


    //=============================================================
    // ConfigMenu.js fills in these configurable menu items
    // if CustomMenu is left as 0, no customized menu will appear
    // if CustomMenu!=0, then CustomString and CustomLink will
    // contain the top level menu link
    // NCustomDrop will contain the number of 
    // elements in the dropdown menu (which may be 0)
    // and the the arrays CustomDropStrings and CustomDropLinks
    // will contain items 0,1,...,N-1

    var CustomMenu=0;
    var CustomString="";
    var CustomLink="";
    var NCustomDrop=0;
    var CustomDropStrings=new Array();
    var CustomDropLinks=new Array();






    var Page=1;
    var ImagesThisPage=0;
    var Showing="Status1";
    var Current=1;
    var Mode="Rollover";


    function RollOver(X)
    {
        if (Mode!="Rollover") return;
        var N=(Page-1)*PerPage+X-1;
        SwapStatus(X);
        document.MainPic.src="http://www.chunyimciver.com/CommonResources/SafariBug.gif";
        if (CommentIndex[N]!=0)
        {
            document.getElementById("PicComment").innerHTML=Comments[CommentIndex[N]-1];
            document.getElementById("CommentContainer").style.visibility="visible";
        }
        else
        {
            document.getElementById("PicComment").innerHTML="&nbsp;";
            document.getElementById("CommentContainer").style.visibility="hidden";
        }
        document.MainPic.src="./Pics/"+Images[N];
        PreLoadI[N]=1;
    }


    function SwapStatus(X) 
    {
        document.getElementById(Showing).src="http://www.chunyimciver.com/CommonResources/SelectedNot.gif";
        Showing="Status"+X;
        document.getElementById(Showing).src="http://www.chunyimciver.com/CommonResources/Selected.gif";
    }

    function ThumbMouseClick(X)
    {
        if (Mode=="Rollover") return;
        else SelectThumb(X-1);
    }

    function ChangePage(P)
    {
        if (Mode!="Rollover") ChangeMode();
        SetPage(P);
    }

    function SetPage(P)
    {
        if (PreloadGoing)
        {
            PreloadGoing=0;
            clearTimeout(PreloadTimer);
        }
        if (P>NPage) P=NPage;
        if (P<1)     P=1;
        var start=(P-1)*PerPage+1;
        var AbstractEnd=P*PerPage;
        var end=AbstractEnd;
        if (end>NImages) end=NImages;
        ImagesThisPage=end-start+1;
        var i;
        var T="Thumb";
        var S="Status";
        var I="Index";
        var G="TBag";
        Page=P;
        var N=(Page-1)*PerPage;
        document.MainPic.src="http://www.chunyimciver.com/CommonResources/SafariBug.gif";
        document.MainPic.src="./Pics/"+Images[N];
        Showing="Status1";
        if (CommentIndex[N]!=0)
        {
            document.getElementById("PicComment").innerHTML=Comments[CommentIndex[N]-1];
            document.getElementById("CommentContainer").style.visibility="visible";
        }
        else
        {
            document.getElementById("PicComment").innerHTML="&nbsp;";
            document.getElementById("CommentContainer").style.visibility="hidden";
        }
        for(i=start;i<=end;i++)
        {
            var name=T+(i-start+1);
            document.getElementById(name).src="http://www.chunyimciver.com/CommonResources/SafariBug.gif";
            document.getElementById(name).src="./Thumbs/"+Images[i-1];
            name=S+(i-start+1);
            document.getElementById(name).src="http://www.chunyimciver.com/CommonResources/SelectedNot.gif";
            name=I+(i-start+1);
            document.getElementById(name).innerHTML=i;
            name=G+(i-start+1);
            document.getElementById(name).style.display="block";
        }
        for(i=end+1;i<=AbstractEnd;i++)
        {
            var name=G+(i-start+1);
            document.getElementById(name).style.display="none";
        }
        document.getElementById("Status1").src="http://www.chunyimciver.com/CommonResources/Selected.gif";
        SetPageButtons();
        PreLoadPage();
    }


    function ChangeToRoll()
    {
        if (Mode=="Slide")
        {
            ChangeMode();
        }
    }


    function ChangeToSlide()
    {
        if (Mode=="Rollover")
        {
            ChangeMode();
        }
    }

    function ModeRollOver(X)
    {
        if ((X==1) && (Mode=="Slide"))
        {
            document.getElementById("gotoroll").style.color="#FF9999";
        }
        else if ((X==2) && (Mode=="Rollover"))
        {
            document.getElementById("gotoslide").style.color="#FF9999";
        }
    }


    function ChangeMode()
    {
        if (Mode=="Rollover")
        {
            Mode="Slide";
        }
        else
        {
            Mode="Rollover";
            if (TimerStarted)
            {
                clearInterval(TimerID);
                TimerStarted=0;
                document.getElementById("SlideGif").src=Resource+"Play.gif";
                document.getElementById("SlideGif").title="play";
            }
        }
        SetMode();
        SetPageButtons();
        SetSlideControl();
        if (Mode=="Rollover")
        {
            SetPage(1);
        }
        else
        {
            InitSlidePage();
        }
    }


    function SetPageButtons()
    {
        if (Mode=="Rollover")
        {
            if (Page==NPage) document.getElementById("NextPage").style.visibility="hidden";
            else             document.getElementById("NextPage").style.visibility="visible";
            if (Page==1)     document.getElementById("PrevPage").style.visibility="hidden";
            else             document.getElementById("PrevPage").style.visibility="visible";
            document.getElementById("PageLabel").style.visibility="visible";
            document.getElementById("PageTopLine").style.visibility="visible";
            document.getElementById("PageBottomLine").style.visibility="visible";
        }
        else
        {
            document.getElementById("NextPage").style.visibility="hidden";
            document.getElementById("PrevPage").style.visibility="hidden";
            document.getElementById("PageLabel").style.visibility="hidden";
            document.getElementById("PageTopLine").style.visibility="hidden";
            document.getElementById("PageBottomLine").style.visibility="hidden";
        }
    }


    function SetSlideControl()
    {
        if (Mode=="Rollover")
        {
            document.getElementById("SlideControl").style.visibility="hidden";
        }
        else
        {
            document.getElementById("SlideControl").style.visibility="visible";
        }
    }


    function SetMode()
    {
        if (Mode=="Rollover")
        {
            document.getElementById("RollTopLine").style.visibility="Visible";
            document.getElementById("RollBottomLine").style.visibility="Visible";
            document.getElementById("SlideTopLine").style.visibility="hidden";
            document.getElementById("SlideBottomLine").style.visibility="hidden";
            //-------------------------------------------------------------------------
            document.getElementById("gotoroll").style.cursor="default";
            //-------------------------------------------------------------------------
            document.getElementById("gotoslide").style.cursor="pointer";
        }
        else
        {
            document.getElementById("RollTopLine").style.visibility="hidden";
            document.getElementById("RollBottomLine").style.visibility="hidden";
            document.getElementById("SlideTopLine").style.visibility="Visible";
            document.getElementById("SlideBottomLine").style.visibility="Visible";
            //-------------------------------------------------------------------------
            document.getElementById("gotoroll").style.cursor="pointer";
            //-------------------------------------------------------------------------
            document.getElementById("gotoslide").style.cursor="default";
        }
    }

    function NextPage()
    {
        SetPage(Page+1);
    }

    function PrevPage()
    {
        SetPage(Page-1);
    }


    //////////////////////////////////////////////
    //  Premptive Loading of Images
    //////////////////////////////////////////////
    var PreLoadI=new Array();
    var PreLoadLag=20;
    var PDone=0;
    var CachePic=new Image();
    var LoadPrefs;

    function PrepPreLoad()
    {
        var i;
        for(i=0;i<NImages;i++)
        {
            PreLoadI[i]=0;
        }
    }

    function PreLoadPage()
    {
        SetLoadPrefs();
        PDone=0;
        PreloadGoing=1;
        var NxtPic=(Page-1)*PerPage+LoadPrefs[PDone];
        while((PreLoadI[NxtPic]==1) && (PDone < ImagesThisPage))
        {
            PDone++;
            NxtPic=(Page-1)*PerPage+LoadPrefs[PDone];
        }
        if (PDone==ImagesThisPage)
        {
            PreloadGoing=0;
        }
        else
        {
            CachePic=new Image();
            CachePic.src="./Pics/" + Images[NxtPic];
            document.body.style.cursor = "wait";
            PreloadTimer=setTimeout("LoadPics()",PreLoadLag);
        }
    }


    function SetLoadPrefs()
    {
        if      (ImagesThisPage==10) LoadPrefs=new Array(0,1,2,3,9,8,7,6,5,4);
        else if (ImagesThisPage==9)  LoadPrefs=new Array(0,1,2,3,8,7,6,5,4);
        else if (ImagesThisPage==8)  LoadPrefs=new Array(0,1,2,3,7,6,5,4);
        else if (ImagesThisPage==7)  LoadPrefs=new Array(0,1,2,3,6,5,4);
        else if (ImagesThisPage==6)  LoadPrefs=new Array(0,1,2,3,5,4);
        else if (ImagesThisPage==5)  LoadPrefs=new Array(0,1,2,3,4);
        else if (ImagesThisPage==4)  LoadPrefs=new Array(0,1,2,3);
        else if (ImagesThisPage==3)  LoadPrefs=new Array(0,1,2);
        else if (ImagesThisPage==2)  LoadPrefs=new Array(0,1);
        else if (ImagesThisPage==1)  LoadPrefs=new Array(0);
    }




    function LoadPics()
    {
        if (PDone < ImagesThisPage)
        {
            if (CachePic.complete)
            {
                PreLoadI[NxtPic]=1;
                PDone++;
                var NxtPic=(Page-1)*PerPage+LoadPrefs[PDone];
                while((PreLoadI[NxtPic]==1) && (PDone < ImagesThisPage))
                {
                    PDone++;
                    NxtPic=(Page-1)*PerPage+LoadPrefs[PDone];
                }
                if (PDone==ImagesThisPage)
                {
                    PreloadGoing=0;
                    document.body.style.cursor = "default";
                }
                else
                {
                    CachePic=new Image();
                    CachePic.src="./Pics/" + Images[NxtPic];
                    PreloadTimer=setTimeout("LoadPics()",PreLoadLag);
                }
            }
            else PreloadTimer=setTimeout("LoadPics()",PreLoadLag);
        }
        else
        {
            PreloadGoing=0;
            document.body.style.cursor = "default";
        }
    }

    


    function MakeCustomMenu()
    {
        if (CustomMenu==0) return;
        var i;
        var ss="<LI class=\"TMenu\"><A HREF=\"";
        ss+=CustomLink;
        ss+="\">";
        ss+=CustomString;
        ss+="</A><UL>";
        if (NCustomDrop==1)
        {
            ss+="<LI>";
            ss+="<A HREF=\"";
            ss+=CustomDropLinks[0];
            ss+="\">";
            ss+=CustomDropStrings[0];
            ss+="</A></LI>";
        }
        else if (NCustomDrop>1)
        {
            for(i=0;i<NCustomDrop;i++)
            {
                if (i==0)                    ss+="<LI>";
                else if (i==(NCustomDrop-1)) ss+="<LI>";
                else                         ss+="<LI>";
                ss+="<A HREF=\"";
                ss+=CustomDropLinks[i];
                ss+="\">";
                ss+=CustomDropStrings[i];
                ss+="</A></LI>";
            }
        }
        ss+="</UL></LI>";
        if (document.all && document.getElementById) 
        {
            // IE
            var DD=document.createElement("SPAN");
            DD.innerHTML=ss;
            var Head=DD.firstChild;
            var Last=document.getElementById("LastMenu");
            document.getElementById("Nav").insertBefore(Head,Last);
        }
        else
        {
            document.getElementById("CMenu").innerHTML=ss;
        }
    }


//======================= Slide Show Code ========================

    var CurrentSlide=0;
    var Next=1;
    var TimerID=0;
    var TimerStarted=0;
    var Delay=4000;
    var NxtImage=new Image();

    var SpeedUp=0;
    var SlideUp=0;
    var Speed=4;



    NxtImage.src="./Pics/" + Images[Next];



    var ThumbNums=new Array();

    function InitSlidePage()
    {
        var i;
        for(i=0;i<NThumbs;i++)
        {
            ThumbNums[i]=FitImageNum(CurrentSlide+i-NThumbsMid);
        }
        SetSlideIndicator();
        document.getElementById("CommentContainer").style.visibility="hidden";
        document.getElementById("PicComment").innerHTML="&nbsp;";
        DoFade=1;
        DisplayCurrentSlide();
        ToggleShow();
    }

    function SetSlideIndicator()
    {
        var i;
        var name;
        var G="TBag";
        for(i=1;i<=NThumbs;i++)
        {
            name="Status"+i;
            document.getElementById(name).src="http://www.chunyimciver.com/CommonResources/SelectedNot.gif";
            name=G+i;
            document.getElementById(name).style.display="block";
        }
        name="Status"+(NThumbsMid+1);
        document.getElementById(name).src="http://www.chunyimciver.com/CommonResources/Selected.gif";
    }


    function ChangeImage()
    {
        CurrentSlide++;
        if (CurrentSlide>=NImages) CurrentSlide=0;
        Next=CurrentSlide+1;
        if (Next>=NImages) Next=0;
        CountThumbs();
        DisplayCurrentSlide();
    }

    function CountThumbs()
    {
        var i;
        for(i=0;i<NThumbs;i++)
        {
            ThumbNums[i]=FitImageNum(CurrentSlide+i-NThumbsMid);
        }
    }


    var Opacity=10;
    var OpacDelay=5;
    var DoFade=0;
    var OpacInterval=1;  // = 1 or 2

    function LightImage()
    {
        if (DoFade)
        {
            if (Opacity>0)
            {
                Opacity=Opacity-OpacInterval;
                if (document.MainPic.filters) 
                {
                    document.MainPic.style.filter = 'alpha(opacity='+ Opacity*10 +')';
                } 
                else
                {
                    document.MainPic.style.opacity=Opacity/10.0;
                }
                if (Opacity>0.0)
                {
                    setTimeout("LightImage()",OpacDelay);
                }
                else
                {
                    DoFade=0;
                    document.MainPic.src=
                        "http://www.chunyimciver.com/CommonResources/SafariBug.gif";
                    document.MainPic.src="./Pics/" + Images[CurrentSlide];
                    PreLoadI[CurrentSlide]=1;
                    setTimeout("LightImage()",OpacDelay);
                }
            }
        }
        else
        {
            if (Opacity<10)
            {
                Opacity=Opacity+OpacInterval;
                if (document.MainPic.filters) 
                {
                    document.MainPic.style.filter = 'alpha(opacity='+ Opacity*10 +')';
                } 
                else
                {
                    document.MainPic.style.opacity=Opacity/10.0;
                }
                if (Opacity<10)
                {
                    setTimeout("LightImage()",OpacDelay);
                }
                else
                {
                    DoFade=1;
                }
            }
            else if (Opacity==10) DoFade=1;
        }
    }



    function DisplayCurrentSlide()
    {
        LightImage();
        NxtImage.src="./Pics/" + Images[Next];
        document.getElementById("StartPic").innerHTML=CurrentSlide+1;
        if (CommentIndex[CurrentSlide]!=0)
        {
            document.getElementById("PicComment").innerHTML=Comments[CommentIndex[CurrentSlide]-1];
            document.getElementById("CommentContainer").style.visibility="visible";
        }
        else
        {
            document.getElementById("PicComment").innerHTML="&nbsp;";
            document.getElementById("CommentContainer").style.visibility="hidden";
        }
        DisplayThumbs();

    }

    function DisplayThumbs()
    {
        var i;
        for(i=1;i<=NThumbs;i++)
        {
            var ssT="Thumb"+i;
            var ssI="Index"+i;
            var J=ThumbNums[i-1]+1;
            document.getElementById(ssT).src=
                "http://www.chunyimciver.com/CommonResources/SafariBug.gif";
            document.getElementById(ssT).src="./Thumbs/" + Images[ThumbNums[i-1]];
            document.getElementById(ssI).innerHTML=J;
        }
    }

    function FitImageNum(M)
    {
        if ((M>=0) && (M<NImages)) return M;
        else if (M<0)
        {
            while(M<0) M+=NImages;
            return M;
        }
        else
        {
            while(M>=NImages) M-=NImages;
            return M;
        }
    }

    function SelectThumb(X)
    {
        if (TimerStarted==0)
        {
            CurrentSlide=ThumbNums[X];
            CountThumbs();
            DisplayCurrentSlide();
        }
        else
        {
            clearInterval(TimerID);
            TimerStarted=0;
            document.getElementById("SlideGif").src=Resource+"Play.gif";
            document.getElementById("SlideGif").title="play";
            CurrentSlide=ThumbNums[X];
            CountThumbs();
            DisplayCurrentSlide();
        }
    }


    function ToggleShow()
    {
        if (TimerStarted==0)
        {
            Delay=Speed*1000;
            document.getElementById("SlideGif").src=Resource+"Pause.gif";
            document.getElementById("SlideGif").title="pause";
            if (CurrentSlide<0) CurrentSlide=NImages+CurrentSlide;
            else if (CurrentSlide>=NImages) CurrentSlide=0;
            CountThumbs();
            DoFade=0;
            DisplayCurrentSlide();
            TimerID=setInterval("ChangeImage()",Delay);
            TimerStarted=1;
        }
        else
        {
            clearInterval(TimerID);
            TimerStarted=0;
            document.getElementById("SlideGif").src=Resource+"Play.gif";
            document.getElementById("SlideGif").title="play";
        }
    }


    
    function SetSpeed(X)
    {
        Speed=X;
        document.getElementById("Speed").innerHTML=X;
        if (TimerStarted!=0)
        {
            clearInterval(TimerID);
            Delay=Speed*1000;
            TimerID=setInterval("ChangeImage()",Delay);
        }
    }


    function SetStart(X)
    {
        CurrentSlide=X-1;
        var restart=0;
        if (TimerStarted!=0)
        {
            restart=1;
            clearInterval(TimerID);
            TimerStarted=0;
        }
        if (CurrentSlide<0) CurrentSlide=NImages+CurrentSlide;
        else if (CurrentSlide>=NImages) CurrentSlide=0;
        CountThumbs();
        DoFade=1;
        DisplayCurrentSlide();
        if(restart)
        {
            TimerStarted=1;
            Delay=Speed*1000;
            TimerID=setInterval("ChangeImage()",Delay);
        }
    }

    function FlipSpeed()
    {
        if (SpeedUp==0)
        {
            document.getElementById("SpeedTab").style.visibility="Visible";
            SpeedUp=1;
        }
    }

    function FlipStart()
    {
        if (SlideUp==0)
        {
            document.getElementById("StartTab").style.visibility="Visible";
            SlideUp=1;
        }
    }

    function UnFlipSpeed()
    {
        if (SpeedUp!=0)
        {
            document.getElementById("SpeedTab").style.visibility="hidden";
            SpeedUp=0;
        }
    }

    function UnFlipStart()
    {
        if (SlideUp!=0)
        {
            document.getElementById("StartTab").style.visibility="hidden";
            SlideUp=0;
        }
    }

    function UnFlip()
    {
        UnFlipSpeed();
        UnFlipStart();
    }


//=========================================================================================
