﻿//v 1.0
//Inbicom.com
//CMS Gallery


scrollInterval = 0;

opacityLinesImagesInterval = 0;

opacityFullImageInterval = 0;

playInterval = 0;

currentFrame = 0;

allFrames = 0;

visibleFrames = 0;

lineImages = "";

lineImagesWidth = 0;

fullImage = "";

fullImageMain = "";

fullImageText = "";

visibleImages = "";

visibleImagesWidth = 0;

imageWidth = 0;

isSlideShowMode = false;

informer = "";

frameBackground = "#f5f5f5";

buttonPlayStop = "";

isPlayMode = false;

playTimeout = 5000;

isExistsHeaderRow = false;



function InitializeCMSGallery(VisibleFrames, CurrentFrame, LineImages, FullImage, FullImageMain, FullImageText,
    VisibleImages, Informer, ButtonPlayStop, IsSlideShowMode, PlayTimeout, FrameBackground) {

    currentFrame = (CurrentFrame >= 0) ? CurrentFrame : 0;

    allFrames = imageLink.length;

    visibleFrames = (VisibleFrames >= 0) ? VisibleFrames : 0;

    lineImages = LineImages;

    lineImagesWidth = document.getElementById(lineImages).offsetWidth;

    fullImage = FullImage;

    fullImageMain = FullImageMain;

    fullImageText = FullImageText;

    imageWidth = (allFrames>0)?(lineImagesWidth / allFrames):0;

    visibleImages = VisibleImages;

    document.getElementById(visibleImages).style.width = visibleFrames * imageWidth + "px";

    document.getElementById(visibleImages).style.height = (document.getElementById(lineImages).offsetHeight+40) + "px";
    
    visibleImagesWidth = document.getElementById(visibleImages).offsetWidth;

    isSlideShowMode = IsSlideShowMode;

    informer = Informer;

    buttonPlayStop = ButtonPlayStop;

    playTimeout = PlayTimeout;

    frameBackground = FrameBackground;

    isExistsHeaderRow = (document.getElementById(lineImages + '_10') != null);



    if (currentFrame != 0) {

        if ((currentFrame + visibleFrames) < allFrames) {

            document.getElementById(lineImages).style.left = (currentFrame * imageWidth * -1) + 'px';

        }
        else if (visibleFrames <= allFrames) {

        document.getElementById(lineImages).style.left = ((allFrames - visibleFrames) * imageWidth * -1) + 'px';

        }
    
    
    }
    


    SetInformerAndShowActive();


    FillFullImage(currentFrame);


}



function ClickPlayStop() {

    if (isPlayMode == true) {

        Stop();

    }
    else {

        Play();

    }
        

}



function SetInformerAndShowActive() {

    document.getElementById(informer).innerHTML = (currentFrame + 1) + " из " + allFrames;



    for (Count = 0; Count < allFrames; Count++) {

        document.getElementById(lineImages + '_0' + Count).style.background = "Transparent";


        if (isExistsHeaderRow) {

            document.getElementById(lineImages + '_1' + Count).style.background = "Transparent";

        }


    }


    document.getElementById(lineImages + '_0' + currentFrame).style.background = frameBackground;

    if (isExistsHeaderRow) {
    
        document.getElementById(lineImages + '_1' + currentFrame).style.background = frameBackground;

    }


}



function ClickImage(Number) {

    if (scrollInterval == 0&&opacityFullImageInterval==0&&opacityLinesImagesInterval==0 ) {

        if (allFrames > 0 && Number >= 0 && Number < allFrames) {

            if (isSlideShowMode == true) {

                pastFrame = currentFrame;

                Offset = ((pastFrame + visibleFrames) <= allFrames)
                ? (((Number + visibleFrames) <= allFrames) ? Number - currentFrame : allFrames - Number - 1) : 0;

                currentFrame = Number;


                SetInformerAndShowActive();


                FillFullImage(Number);


                if ((pastFrame + visibleFrames) < allFrames) {

                    setTimeout("MoveFrameWithOutSetCurrentFrame(" + Offset + ");", 300);

                }


            }
            else {

                window.location = imageLink[Number];

            }


        }


    }


}



function Stop() {

    clearInterval(playInterval);
    
    document.getElementById(buttonPlayStop).src = "/images/gallery/play.gif"

    isPlayMode = false;
    

}



function Play() {

    if (allFrames > 0 ) { //&& allFrames > visibleFrames || isSlideShowMode

        document.getElementById(buttonPlayStop).src = "/images/gallery/stop.gif"

        isPlayMode = true;



        PlayMove();


    }


}



function PlayMove() {

    pastcurrentFrame = currentFrame;


    clearInterval(playInterval);


    SmartMoveFrame(1);


    if (pastcurrentFrame != currentFrame && (pastcurrentFrame == 0 && currentFrame == (allFrames - 1)
                || currentFrame == 0 && pastcurrentFrame == (allFrames - 1))) {

        setTimeout("FillFullImage(currentFrame);", 710);

    }
    else if (pastcurrentFrame != currentFrame) {

        FillFullImage(currentFrame);

    }


    playInterval = setTimeout("PlayMove();", playTimeout);


}



function MoveButtonClick(Number) {

    pastcurrentFrame = currentFrame;


    if (scrollInterval == 0 && opacityFullImageInterval == 0 && opacityLinesImagesInterval == 0) {

        Stop();


        if (Number != 0 && allFrames > 1) {

            SmartMoveFrame(Number);


            if (isSlideShowMode == true) {

                if (pastcurrentFrame != currentFrame && (pastcurrentFrame == 0 && currentFrame == (allFrames - 1)
                || currentFrame == 0 && pastcurrentFrame == (allFrames - 1))) {

                    setTimeout("FillFullImage(currentFrame);", 710);

                }
                else if (pastcurrentFrame != currentFrame) {

                    FillFullImage(currentFrame);

                }


            }


        }


    }


}



function SmartMoveFrame(Number) {

    if (allFrames > 1) {

        if (Number > 0) {

            if (currentFrame >= 0 && currentFrame < (allFrames - 1)) {

                if (currentFrame < (allFrames - visibleFrames)) {

                    MoveFrame(1);

                }
                else {

                    currentFrame++;

                }


            }
            else if (currentFrame >= (allFrames - 1)) {

                if (visibleFrames < allFrames) {

                    Element = document.getElementById(lineImages);

                    setTimeout("SmoothOpacityObject(lineImages, 100, -20, -20, 100, 50);", 0);

                    setTimeout("Element.style.left = '0px';", 700);

                    setTimeout("SmoothOpacityObject(lineImages, 0, 20, -20, 100, 50);", 710);

                }


                currentFrame = 0;


            }


        }
        else if (Number < 0) {

            if (currentFrame > 0) {

                if (currentFrame <= (allFrames - visibleFrames)) {

                    MoveFrame(-1);

                }
                else {

                    currentFrame--;

                }


            }
            else if (currentFrame <= 0) {

                if (visibleFrames < allFrames) {

                    Element = document.getElementById(lineImages);

                    setTimeout("SmoothOpacityObject(lineImages, 100, -20, -20, 100, 50);", 0);

                    setTimeout("Element.style.left = -1*(lineImagesWidth-visibleImagesWidth)+'px';", 700);

                    setTimeout("SmoothOpacityObject(lineImages, 0, 20, -20, 100, 50);", 710);

                }


                currentFrame = allFrames - 1;

            }


        }


    }
    else if (allFrames == 1) {

        currentFrame = 0;

    }



    if (allFrames > 0 && currentFrame >= 0 && currentFrame < allFrames) {

        SetInformerAndShowActive();
    
    }


}



function MoveFrame(Number) {

    if (Number != 0 && allFrames > 1) {

        Move(lineImages, imageWidth * -1 * Number);


        currentFrame = currentFrame + Number;


    }


}



function MoveFrameWithOutSetCurrentFrame(Number) {

    if (Number != 0 && allFrames > 1) {

        Move(lineImages, imageWidth * -1 * Number);

    }


}



function Move(ElementName, Lenght) {

    Element = document.getElementById(ElementName);


    if (Lenght != 0) {

        Left = parseInt(Element.style.left);


        if (Lenght > 0) {

            Step = 20;

            MinLimit = Left;

            MaxLimit = Left + Lenght;


        }
        else {

            Step = -20;

            MinLimit = Left + Lenght;

            MaxLimit = Left;


        }

        //            scrollInterval = setTimeout("MoveObject('" + ElementName + "'," + Left + "," + Step
        //                + "," + MinLimit + "," + MaxLimit + "," + 50 + ");", 50);


        MoveObject(ElementName, Left, Step, MinLimit, MaxLimit, 50);


    }


}


function MoveObject(ElementName, Left, Step, MinLimit, MaxLimit, Interval) {

    Element = document.getElementById(ElementName);


    clearInterval(scrollInterval);

    scrollInterval = 0;


    if (Left >= MinLimit && Left <= MaxLimit) {

        Element.style.left = Left+'px';

        scrollInterval = setTimeout("MoveObject('" + ElementName + "'," + (Left + Step) + "," + Step
                + "," + MinLimit + "," + MaxLimit + "," + Interval + ");", Interval);


        //            MoveObject(ElementName,(Left + Step),Step,MinLimit,MaxLimit,Interval);


    }
    else if (Left < MinLimit && Left <= MaxLimit) {

        Element.style.left = MinLimit+'px';

    }
    else if (Left >= MinLimit && Left > MaxLimit) {

        Element.style.left = MaxLimit+'px';

    }


}



function SmoothOpacityObject(ElementName, Opacity, Step, MinLimit, MaxLimit, Interval) {

    if (ElementName == lineImages) {

        clearInterval(opacityLinesImagesInterval);

        opacityLinesImagesInterval = 0;


    }
    else if (ElementName == fullImage) {

        clearInterval(opacityFullImageInterval);

        opacityFullImageInterval = 0;

    }
    
    
    
    if (Opacity >= MinLimit && Opacity <= MaxLimit) {

        SetOpacityObject(ElementName, Opacity);



        if (ElementName == lineImages) {

            opacityLinesImagesInterval = setInterval("SmoothOpacityObject('" + ElementName + "'," + (Opacity + Step) + "," + Step
                + "," + MinLimit + "," + MaxLimit + "," + Interval + ");", Interval);
        }
        else if (ElementName == fullImage) {

            opacityFullImageInterval = setInterval("SmoothOpacityObject('" + ElementName + "'," + (Opacity + Step) + "," + Step
                + "," + MinLimit + "," + MaxLimit + "," + Interval + ");", Interval);

        }
        

    }


}



function ClearInterval() {

    if (scrollInterval > 0) {
        clearInterval(scrollInterval);
    }


}



function SetOpacityObject(ElementName, Opacity) {

    Element = document.getElementById(ElementName);


    if (Opacity >= 0 && Opacity <= 100 && Element != null) {

        if (navigator.appVersion.match('MSIE') != null) {

            Element.style.filter = "alpha(opacity=" + Opacity + ")";

        }
        else {

            Element.style.opacity = parseFloat(Opacity) / 100;

        }


    }


}



function FillFullImage(Number) {

    if (Number >= 0 && isSlideShowMode==true) {

        SetOpacityObject(fullImage,0);


        document.getElementById(fullImageMain).src = imageSrc[Number];

        document.getElementById(fullImageMain).alt = imageHeader[Number];


        document.getElementById(fullImageText).innerHTML = "<b>" + imageHeader[Number] + "</b><br/>" + imageDesc[Number];



        SmoothOpacityObject(fullImage, 0, 20, -20, 120, 50);


    }

}



