﻿//-------------------------------------------------------------------------------------------------------------//
function HtmlRotator(p_var_name, p_container_id, p_width, p_height, p_slide_pause, p_transition_time, p_data) {
    this.Obj_name = p_var_name;
    this.Data = p_data;
    this.Count = this.Data.length;
    this.Width = p_width;
    this.Height = p_height;

    this.timer = null;
    this.SlidePause = p_slide_pause;
    this.TransitionTime = p_transition_time;
    this.CurrentIndex = 0;
    this.BackIndex = 1;
    this.Opacity = 1;
    this.BackOpacity = 0
    
    this.Container = document.getElementById(p_container_id);
    if (!this.Container) {
        alert("Element with id '" + p_container_id + "' not found ....");
    }
    this.Container.style.width = p_width;
    this.Container.style.height = p_height;
    var l_slide_element;
    for (var i = 0; i < p_data.length; i++) {
        l_slide_element = document.getElementById(p_data[i]);
        if (l_slide_element != null) {
            l_slide_element.style.position = "absolute";
            l_slide_element.style.zIndex = "-1";
            l_slide_element.style.visibility = "hidden"; 
            l_slide_element.style.width = p_width;
            l_slide_element.style.height = p_height;
        }
    }
}

//-----------------------------------------------//
HtmlRotator.prototype.getNextIndex = function () {
    return (this.CurrentIndex + 1) % this.Count;
}

/*
//----------------------------------------------//
HtmlRotator.prototype.followLink = function () {
    var l_url = this.Data[this.CurrentIndex][0];
    var l_target = this.Images[this.CurrentIndex][1];
    if (l_url.length != 0) {
        l_target = (l_target.length == 0) ? '_self' : l_target;
        window.open(l_url, l_target);
    }
}
*/

//-----------------------------------------//
HtmlRotator.prototype.Start = function () {
    this.Opacity = 1;
    this.BackOpacity = 0;

    this.CurrentSlide = document.getElementById(this.Data[this.CurrentIndex]);
    this.NextSlide = document.getElementById(this.Data[this.BackIndex]);

    this.CurrentSlide.style.filter = 'alpha(opacity=100)';
    this.CurrentSlide.style.opacity = '1';
    this.CurrentSlide.style.zIndex = 2;
    this.CurrentSlide.style.visibility = 'visible';

    this.NextSlide.style.filter = 'alpha(opacity=0)';
    this.NextSlide.style.opacity = '0';
    this.NextSlide.style.zIndex = 1;
    this.NextSlide.style.visibility = 'visible';

    this.IsAuto = true;

    this.timer = setTimeout(this.Obj_name + ".startSlideShow()", this.SlidePause);
}

//---------------------------------------//
HtmlRotator.prototype.GoNext = function () {
    this.Opacity = 1;
    this.BackOpacity = 0;

    this.CurrentSlide = document.getElementById(this.Data[this.CurrentIndex]);
    this.NextSlide = document.getElementById(this.Data[this.BackIndex]);

    this.CurrentSlide.style.filter = 'alpha(opacity=100)';
    this.CurrentSlide.style.opacity = '1';
    this.CurrentSlide.style.zIndex = 2;
    this.CurrentSlide.style.visibility = 'visible';

    this.NextSlide.style.filter = 'alpha(opacity=0)';
    this.NextSlide.style.opacity = '0';
    this.NextSlide.style.zIndex = 1;
    this.NextSlide.style.visibility = 'visible';

    this.IsAuto = false;

    this.startSlideShow();
}

//----------------------------------------------//
HtmlRotator.prototype.GoPrevious = function () {
    alert('Not Implemented');
}

//-------------------------------------------------//
HtmlRotator.prototype.startSlideShow = function () {
    clearTimeout(this.timer);
    this.Counter = 0;
    this.timer = setInterval(this.Obj_name + ".applyTransition()", parseInt(this.TransitionTime / 50));
}

//---------------------------------------------------//
HtmlRotator.prototype.applyTransition = function () {
    this.Counter++;
    if (this.Counter > 50) {
        this.CurrentSlide.style.zIndex = -1;
        this.CurrentSlide.style.visibility = 'hidden';
        this.CurrentIndex = this.getNextIndex();
        this.BackIndex = this.getNextIndex();
        clearInterval(this.timer);
        if (this.IsAuto) {
            this.Start();
        }
    }
    else {
        var l_opacity;
        this.Opacity -= (1 / 50);
        this.BackOpacity += (1 / 50);

        l_opacity = parseFloat(this.Opacity).toFixed(2);
        this.CurrentSlide.style.opacity = l_opacity;
        l_opacity = (l_opacity < 0) ? 0 : (l_opacity * 100);
        this.CurrentSlide.style.filter = 'alpha(opacity=' + l_opacity + ')';

        l_opacity = parseFloat(this.BackOpacity).toFixed(2);
        this.NextSlide.style.opacity = l_opacity;
        l_opacity = (l_opacity >= 1) ? 100 : (l_opacity * 100);
        this.NextSlide.style.filter = 'alpha(opacity=' + l_opacity + ')';
    }
}

