﻿
var postbackElement;
var _strCurrent;
var _lImageDefinition;
var _lImageDefinitionThumb;
var _intImageCurrent;
var _imgImageCached;

var _hdlTickHandler;
var _timTimer;


function beginRequest(sender, args) {
    postbackElement = args.get_postBackElement();
}

function pageLoad() {
    if (typeof (postbackElement) === "undefined") {
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest);

        this._intImageCurrent = 1;
        this._hdlTickHandler = null;
        this._strCurrent = "THUMB";

        PageMethods.GetImageDefinition("NORMAL", setImageDefinition, setError);
        PageMethods.GetImageDefinition("THUMB", setImageDefinitionThumb, setError);

        addTickHandler();
    }
}


function dispose() {
    
    this._strCurrent = null;
    this._lImageDefinition = null;
    this._lImageDefinitionThumb = null;
    this._intImageCurrent = null;
    this._imgImageCached = null;
    
    if (this._hdlTickHandler) {
        $removeHandler(this._timTimer, 'tick', this._hdlTickHandler);
        this._hdlTickHandler = null;
    }

    if (this._timTimer) {
        this._timTimer.dispose();
        this._timTimer = null;
    }
}


function setImageDefinition(lImageDefinitionResult) {

    this._lImageDefinition = lImageDefinitionResult;
    setImageSlideCache("NORMAL");
}

function setImageDefinitionThumb(lImageDefinitionResult) {

    this._lImageDefinitionThumb = lImageDefinitionResult;
    setImageSlideCache("THUMB");
}

function addTickHandler() {
    
    this._timTimer = new Sys.Timer();
    this._timTimer.set_enabled(false);
    this._timTimer.initialize();

    var objThis = this;
    this._hdlTickHandler = Function.createDelegate(objThis, onSlide);
    this._timTimer.add_tick(this._hdlTickHandler);
    this._timTimer.set_interval(3000);
    this._timTimer.set_enabled(true);
    objThis = null;
}

function restartTickHandler() {

    this._timTimer.set_enabled(false);
    this._timTimer.set_enabled(true);
}

function onSlide(e) {

    var imgImageSlide1;
    var lImageDefinition;
           
    if (this._strCurrent == "THUMB") {
        imgImageSlide1 = document.getElementsByName("imgPopUp01Thumb")[0];
        lImageDefinition = this._lImageDefinitionThumb;
    }
    if (this._strCurrent == "NORMAL") {
        imgImageSlide1 = document.getElementsByName("imgPopUp01")[0];
        lImageDefinition = this._lImageDefinition;
    }

    if (!imgImageSlide1)
        this._strCurrent = "";
    if (this._strCurrent == "")
        return;
    
    if (!imgImageSlide1.complete)
        return;
    if (!this._imgImageSlideCached.complete)
        return;

    var anim1 = new AjaxControlToolkit.Animation.FadeOutAnimation(imgImageSlide1, .25, 25, 1, 0, false);
    anim1.play();

    imgImageSlide1.src = lImageDefinition[this._intImageCurrent].strImageUrl;
    imgImageSlide1.alt = lImageDefinition[this._intImageCurrent].strImageAlternateText;
    
    var anim2 = new AjaxControlToolkit.Animation.FadeInAnimation(imgImageSlide1, .25, 25, 0, 1, false);
    anim2.play();

    this._intImageCurrent = this._intImageCurrent + 1;
    if (this._intImageCurrent >= lImageDefinition.length) {
        this._intImageCurrent = 0;
    }
    else {
        setImageSlideCache(this._strCurrent)
    }
}

function setImageSlideCache(strCurrent) {

    if (this._strCurrent != "") {
        if (this._strCurrent == strCurrent) {
            this._imgImageSlideCached = new Image();
            this._imgImageSlideCached.src = this._lImageDefinitionThumb[this._intImageCurrent].strImageUrl;
        }
        else {
            this._imgImageSlideCached = new Image();
            this._imgImageSlideCached.src = this._lImageDefinition[this._intImageCurrent].strImageUrl;
        }
    }
}

function setStatusPopUpHide() {
    document.getElementById("PopUp01").style.visibility = "hidden";
    this._strCurrent = "THUMB";
    restartTickHandler();
}

function setStatusPopUpShow() {
    document.getElementById("PopUp01").style.visibility = "visible";
    this._strCurrent = "NORMAL";
    restartTickHandler();
}

function setError(strResult) {
    Sys.Debug.trace("Error")
}

if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
