﻿// JScript File

//2D array of divs in sliders
var slidernodes = new Object();
//Array of curent pages on slider
var curentslide = new Object();
//Array of old pages on slider
var oldslide = new Object();
//Array of fadeIn/Out effects
var fadeFx = new Object();
//State of slider (0=fadeout, 1=fadein, 2=break)
var state = new Object();
var turning = false;

var ContentSlider = new Class({
    // inicialization of slider
    initialize: function(id, fadeInTime, fadeOutTime, breakTime) {
        this.id = id;
        this.fadeInTime = fadeInTime;
        this.fadeOutTime = fadeOutTime;
        this.breakTime = breakTime;
        slidernodes[this.id] = [];
        fadeFx[this.id] = [];
        curentslide[this.id] = 0;
        oldslide[this.id] = 0;
        var slider = $(this.id);
        var alldivs = $$("div.ContentPage");
        for (var i = 0; i < alldivs.length; i++) {
            if (alldivs[i].parentNode.id == this.id) {
                slidernodes[this.id].push(alldivs[i])
                fadeFx[this.id].push(new Fx.Morph(alldivs[i], { duration: this.fadeInTime, wait: false }));
            }
        }
        if (slidernodes[this.id].length != 0) {
            this.show(curentslide[this.id]);
        }
    },
    //show start page and hide others
    show: function(page) {
        slidernodes[this.id].each(function(item, index) {
            item.setOpacity(0);
            item.setStyle('z-index', '-10');
        });
        slidernodes[this.id][page].setOpacity(1);
        slidernodes[this.id][page].setStyle('z-index', '10');
    },
    stopTurning: function() {
        if (typeof window[this.id + "timer"] != "undefined") {
            clearTimeout(window[this.id + "timer"])
        }
    },
    //turn page (fadeIn-fadeOut effect)
    turnPage: function(page, isAuto) {
        if (isAuto) {
            turning = true;
            var tmp = this.id;
            state[tmp] = 0;
            fadeFx[this.id][curentslide[this.id]].start({ 'opacity': 0.0, 'z-index': -10 }).chain(function() {
                state[tmp] = 1;
                fadeFx[tmp][page].start({ 'opacity': 1.0, 'z-index': 10 }).chain(function() {
                    state[tmp] = 2;
                });
            });
            oldslide[this.id] = curentslide[this.id];
            curentslide[this.id] = page;
        }
        else {   //disable autoTurnPage
            if (typeof window[this.id + "timer"] != "undefined") {
                clearTimeout(window[this.id + "timer"])
            }

            turning = false;

            var tmp = this.id;
            if (state[tmp] == 0) {  //if fadeOut
                //Clear old chain
                fadeFx[this.id][oldslide[this.id]].clearChain();

                state[tmp] = 0;
                fadeFx[this.id][oldslide[this.id]].start({ 'opacity': 0.0, 'z-index': -10 }).chain(function() {
                    state[tmp] = 1;
                    fadeFx[tmp][page].start({ 'opacity': 1.0, 'z-index': 10 }).chain(function() {
                        state[tmp] = 2;
                    });
                });

                oldslide[this.id] = curentslide[this.id];
                curentslide[this.id] = page;
            }
            else {  //if fadeIn or break
                //Clear old chain
                fadeFx[this.id][curentslide[this.id]].clearChain();

                state[tmp] = 0;
                fadeFx[this.id][curentslide[this.id]].start({ 'opacity': 0.0, 'z-index': -10 }).chain(function() {
                    state[tmp] = 1;
                    fadeFx[tmp][page].start({ 'opacity': 1.0, 'z-index': 10 }).chain(function() {
                        state[tmp] = 2;
                    });
                });

                oldslide[this.id] = curentslide[this.id];
                curentslide[this.id] = page;
            }
        }
    }
});

// Auto turn page 
function autoTurnPage(slider,page,time,turn){
    try
    {
        if (page >= slidernodes[slider.id].length)
        {   
            page = 0;
        }

        if(turn)
        {
            slider.turnPage(page,true);
        }
    
        window[slider.id+"timer"]=setTimeout(function(){autoTurnPage(slider,page+1,time,true)},time)
    }
    catch (ex)
    {
    }
}

function stopTurnPage(slider, page, time) {
    try {
        if (turning) {
            slider.turnPage(page, false);
        }
        else {
            page = page + 1;
            if (page >= slidernodes[slider.id].length) {
                page = 0;
            }
            slider.turnPage(page, true);

            window[slider.id + "timer"] = setTimeout(function() { autoTurnPage(slider, page + 1, time, true) }, time)
        }
    }
    catch (ex) {
    }
}

function getShownIdInSlider() {
    var currentSlider = null;
    var sliders = $('divSlider').children[0];
    if (sliders != undefined) {
        var i=0;
        for (i=0;i<sliders.children.length;i++) {
            try
            {
                if (parseInt(sliders.children[i].style['zIndex']) == 10 || sliders.children[i].style['opacity'] != '0') {
                    currentSlider = sliders.children[i];
                    break;
                }
            }
            catch(e)
            {}

        }
        if(currentSlider == null)
        {
            return null;
        }

        return currentSlider.id;
    }
    
    return null;
}

function pauseTurnPage(isTurning) {
        
    var visibleId = getShownIdInSlider();
    if (visibleId != null) {
        var index = findIndexInId(visibleId);
        if (index != null) {
            //Hardcoded fade in out & breaktime
            //var sliderRef = new ContentSlider($('divSlider').children[0].id, 1000, 1000, 3000);
            //stopTurnPage('Slider_' + $('divSlider').children[0].id, index, 5000);
            turning = isTurning;
            stopTurnPage(Slider_plc_lt_zoneProductInfo_ContentSlider, index, 5000);
        }
    }
}

function findIndexInId(id) {
    var indexBefore = id.indexOf('ContentSlider_');
    var indexAfter = id.indexOf('_content');

    if (indexBefore == -1 || indexAfter == -1) {
        return null;
    }

    indexBefore = indexBefore + 14;
    
    return parseInt(id.substring(indexBefore, indexAfter));
}
