// JavaScript Document

function changeOpac(opacity, id) 
{
    var object = document.getElementById(id);
	if ( object )
	{
		var o_style = object.style;
    	o_style.opacity = (opacity / 100);
    	o_style.MozOpacity = (opacity / 100);
    	o_style.KhtmlOpacity = (opacity / 100);
    	o_style.filter = "alpha(opacity=" + opacity + ")";
	}
}

function opacity(id, opacStart, opacEnd, millisec, cb_done) 
{
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
	if(opacStart > opacEnd) 
	{
		for(i = opacStart; i >= opacEnd; i--) 
		{
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
    	}
	} 
	else if(opacStart < opacEnd) 
	{
		for(i = opacStart; i <= opacEnd; i++) 
		{
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
	}
	if ( cb_done )	setTimeout(cb_done,(timer * speed));
}

function fade_in (id, millisec, cb_done)
{
	opacity(id, 0, 100, millisec, cb_done);
}

function fade_out (id, millisec, cb_done)
{
	opacity(id, 100, 0, millisec, cb_done);
}

function Animate ( base, count, subcount )
{
	var cntr = 1;
	var subcntr = 1;
	var timer = null;
	var animated = true;
	var mutex = false;
	
	function show_subitem(layer)
	{
		if ( subcntr <= subcount )
		{
			mutex = true;
			fade_in(layer+"-"+subcntr, 700, function(){show_subitem(layer)});
			subcntr ++;
		}
		else 	
		{
			mutex = false;
			timer = setTimeout ( function() { switch_view(); }, 3000 );
		}
	}
	
	function show_sub(layer)
	{
		subcntr = 1;
		show_subitem(layer);		
	}
	
	function hide_sub(layer)
	{
		for ( var i=1; i<=subcount; i++ )
			changeOpac(0, layer+'-'+i);
	}
	
	function show_layer(layer)
	{
		hide_sub(layer);
		fade_in(layer,500,function(){show_sub(layer);});
	}
	
	function hide_layer(layer)
	{
		fade_out(layer,500,function(){hide_sub(layer);});
	}
	
	function switch_view()
	{
		if ( mutex == false && animated )
		{
			var prev_div = base + cntr;

			cntr ++;
			if ( cntr > count )		cntr=1;
			var next_div = base + cntr;

			hide_layer(prev_div);
			show_layer(next_div);
		}
		else 
			timer = setTimeout ( function() { switch_view(); }, 3000 );
	}
	
	this.show = function( i )
	{
		animated = false;
		var prev_div = base + cntr;
		var next_div = base + i;
		cntr = i;

		hide_layer(prev_div);
		fade_in(next_div,500,null);	
		
		for ( var i=1; i<=subcount; i++ )
			changeOpac(100, next_div+'-'+i);	
	}
	
	this.pause = function()
	{
		animated = false;
	}
	
	this.start = function()
	{
		cntr = 1;
		subcntr = 1;
		animated = true;
	
		for ( var i=2; i<=count; i++ )
			changeOpac(0, base+i);

		hide_sub(base+1);
		changeOpac(100, base+1);
		show_sub(base+1);
	}
	
	this.restart = function()
	{
		animated = true;
	}
}
