﻿var preloadArray = new Array();
var blnOneTime = false;

function slide(varImage) {
    slide("", "", varImage, "")
}

function slide(varName, varLink, varImage, varDescription) {
    this.Name = varName;
    this.Link = varLink;
    this.Image = varImage;
    this.Description = varDescription;
    preloadArray[preloadArray.length] = new Image();
    preloadArray[preloadArray.length - 1].src = varImage;
}

function slideShow(arrSlides) {
    slideShow(arrSlides, 1000, 10000, "Slide");
}

function slideShow(arrSlides, varFadeSpeed, varSpeed) {
    slideShow(arrSlides, varFadeSpeed, varSpeed, "Slide");
}

function slideShow(arrSlides, varFadeSpeed, varSpeed, varElementID, varFade) {
    var varTimeOffset = 0;
    var varFadeFrameLimit = 24;
    //  continue or new
    var varFadeType = "new";

    var varLastSlideIndex = arrSlides.length - 1;
    if (varFade) {
        varLastSlideIndex = 0;
    }
    var varCurrentSlideIndex = 0;
    var varSlideInterval;
    var varTimeout;

    var imageFade;
    var imageShift;
    var quoteFade;
    this.startSlide = function (varSlideIndexIn, varNewTimeout, varElementID) {
        document.getElementById("div" + varElementID).style.backgroundImage = "url(" + arrSlides[varSlideIndexIn].Image + ")";
        document.getElementById("img" + varElementID).src = arrSlides[varSlideIndexIn].Image;
        if (document.getElementById("lnk" + varElementID) != null) {
            document.getElementById("lnk" + varElementID).href = arrSlides[varSlideIndexIn].Link;
        }
        if (document.getElementById("txt" + varElementID) != null) {
            document.getElementById("txt" + varElementID).innerHTML = arrSlides[varSlideIndexIn].Description;
        }
        setTimeout(function () { showSlide(varSlideIndexIn + 1, varNewTimeout); }, 4000);
    }
    this.showSlide = function (varSlideIndexIn, varNewTimeout) {
        showSlide(varSlideIndexIn, varNewTimeout);
    }

    function showSlide(varSlideIndexIn, varNewTimeout) {
        varCurrentSlideIndex = varSlideIndexIn;

        if (varCurrentSlideIndex > arrSlides.length - 1) {
            varCurrentSlideIndex = 0;
        }
        if (varFade) {
            if (varNewTimeout) {
                //alert(varTimeout);
                //clearTimeout(varTimeout);
                if (varFadeType == "new") {
                    if (imageFade != undefined) {
                        imageFade.stop();
                    }
                    if (quoteFade != undefined) {
                        quoteFade.stop();
                    }
                }
                clearInterval(varSlideInterval);
                varTimeout = setTimeout(function () { varSlideInterval = setInterval(function () { showSlide(varCurrentSlideIndex + 1, false) }, varSpeed); }, varTimeOffset);
                //alert(varTimeout);
            }

            if (varFadeType == "new" || (varFadeType == "continue" && (!varNewTimeout || (imageFade == undefined || !imageFade.isFading())))) {
                imageFade = new fade("img" + varElementID, varFadeSpeed);
                imageFade.fadeOut();
                if (document.getElementById("txt" + varElementID) != null) {
                    quoteFade = new fade("txt" + varElementID, varFadeSpeed);
                    quoteFade.fadeIn();
                }
            }
            document.getElementById("div" + varElementID).style.backgroundImage = "url(" + arrSlides[varCurrentSlideIndex].Image + ")";
            document.getElementById("img" + varElementID).src = arrSlides[varLastSlideIndex].Image;
        }
        else {
            clearInterval(varSlideInterval);
            varTimeout = setTimeout(function () { varSlideInterval = setInterval(function () { showSlide(varCurrentSlideIndex + 1, false) }, varSpeed); }, varTimeOffset);
            imageShift = new shift("img" + varElementID, 50000, 617);
            imageShift.ShiftIn();
            
            document.getElementById("div" + varElementID).style.backgroundImage = "url(" + arrSlides[varLastSlideIndex].Image + ")";
            
            document.getElementById("img" + varElementID).src = arrSlides[varCurrentSlideIndex].Image;
        }

        //set the current image as background
        if (document.getElementById("lnk" + varElementID) != null) {
            document.getElementById("lnk" + varElementID).href = arrSlides[varCurrentSlideIndex].Link;
        }
        if (document.getElementById("txt" + varElementID) != null) {
            document.getElementById("txt" + varElementID).innerHTML = arrSlides[varCurrentSlideIndex].Description;
        }
        //alert(arrSlides[varLastSlideIndex].Image);

        varLastSlideIndex = varCurrentSlideIndex;
    }
    function shift(elementId, millisec, width) {
        var varFadeInterval;
        var varIsFading;
        var speed = Math.round(millisec / 100);
        var varFadeFrame;
        var object;

        this.ShiftIn = function () {
            ShiftToLeft(0);
        };

        this.stop = function () {
            clearInterval(varFadeInterval);
        };

        this.isShifting = function () {
            return (varFadeFrame < varFadeFrameLimit);
        };

        function ShiftToLeft(varFadeFrameIn) {
            varFadeFrame = varFadeFrameIn;
            var object = document.getElementById(elementId).style;
            object.left = width - (width * (varFadeFrameIn/varFadeFrameLimit)) + 'px';
            object.position = 'absolute';
            if (varFadeFrame < varFadeFrameLimit) {
                varFadeInterval = setTimeout(function () { ShiftToLeft(varFadeFrameIn + 1) }, speed * (1 / varFadeFrameLimit));
            }
            blnOneTime = true;
        }


        this.ShiftOut = function () {
            ShiftToRight(0);
        };

        function ShiftToRight(varFadeFrameIn) {
            varFadeFrame = varFadeFrameIn;
            var object = document.getElementById(elementId).style;
            object.left = varFadeFrameIn + 'px';
            object.position = 'absolute';
            if (varFadeFrame < varFadeFrameLimit) {
                varFadeInterval = setTimeout(function () { ShiftToRight(varFadeFrameIn + 1) }, speed * (100 / varFadeFrameLimit));
            }
        }
    }

    function fade(elementId, millisec) {
        var varFadeInterval;
        var varIsFading;
        var speed = Math.round(millisec / 100);
        var varFadeFrame;
        var object;

        this.fadeIn = function () {
            changeOpacUp(0);
        };

        this.stop = function () {
            clearInterval(varFadeInterval);
        };

        this.isFading = function () {
            return (varFadeFrame < varFadeFrameLimit);
        };

        function changeOpacUp(varFadeFrameIn) {
            varFadeFrame = varFadeFrameIn;
            object = document.getElementById(elementId).style;
            object.opacity = (varFadeFrame / varFadeFrameLimit);
            object.MozOpacity = (varFadeFrame / varFadeFrameLimit);
            object.KhtmlOpacity = (varFadeFrame / varFadeFrameLimit);
            object.filter = "alpha(opacity=" + varFadeFrame * (100 / varFadeFrameLimit) + ")";
            if (varFadeFrame < varFadeFrameLimit) {
                varFadeInterval = setTimeout(function () { changeOpacUp(varFadeFrameIn + 1) }, speed * (100 / varFadeFrameLimit));
            }
        }

        this.fadeOut = function () {
            changeOpacDown(0);
        };

        function changeOpacDown(varFadeFrameIn) {
            varFadeFrame = varFadeFrameIn;
            object = document.getElementById(elementId).style;
            object.opacity = 1 - (varFadeFrame / varFadeFrameLimit);
            object.MozOpacity = 1 - (varFadeFrame / varFadeFrameLimit);
            object.KhtmlOpacity = 1 - (varFadeFrame / varFadeFrameLimit);
            object.filter = "alpha(opacity=" + (100 - (varFadeFrame * (100 / varFadeFrameLimit))) + ")";
            if (varFadeFrame < varFadeFrameLimit) {
                varFadeInterval = setTimeout(function () { changeOpacDown(varFadeFrameIn + 1) }, speed * (100 / varFadeFrameLimit));
            }
        }
    }
}

function ContactValidate(evt) {
    var regEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

    if (document.getElementById(varContactPrefix + "txtEmail").value == "") {
        alert("Please enter your email address.");
        document.getElementById(varContactPrefix + "txtEmail").focus();
        return CancelEvent(evt);
    }
    if (!regEmail.test(document.getElementById(varContactPrefix + "txtEmail").value)) {
        alert("Please enter a valid email.");
        document.getElementById(varContactPrefix + "txtEmail").focus();
        return CancelEvent(evt);
    }

    return (true);
}

function ContactLoad() {
    var objEvents = new EventArray();
    objEvents.Add(new Event(varContactPrefix + "btnJoinNewsletter", "click", ContactValidate));
    objEvents.AttachEvents();
}

var varContactPrefix = "ctl00_plcPageContentPlaceholder_";
