var defIs = 1;
var defWillBe = 2;
var defDelay = 7500;
var defSpeed = 10;

var tids = new Array();
var autoplays = new Array();

var names = new Array();
var totals = new Array();
var iss = new Array();
var willBes = new Array();
var speeds = new Array();
var delays = new Array();
var randoms = new Array();

var Using = new Array();
var Using2 = new Array();


function checkName(nombre)
{
	for(var temp=0 ; names[temp] != null ; temp++)
	{
		if(names[temp]==nombre)
		{
			return temp;
		}
	}

	return null;
}

function storeInfo(name, total)
{
	var is = arguments[2];
	var willBe = arguments[3];
	var speed = arguments[4];
	var delay = arguments[5];
	var random = arguments[6];
	var autoplay = arguments[7];

	if(is == null)
	{
		is = defIs;
	}

	if(willBe == null)
	{
		willBe = defWillBe;
	}

	if(speed == null)
	{
		speed = defSpeed;
	}

	if(delay==null)
	{
		delay = defDelay;
	}

	if(random != true)
	{
		random = false;
	}

	if(autoplay != false)
	{
		autoplay = true;
	}

	if(checkName(name) == null)
	{
		var position = names.length;
		
		tids[position] = new Array();
		autoplays[position] = autoplay;
		
		names[position] = name;
		totals[position] = total;
		iss[position] = is;
		willBes[position] = willBe;
		speeds[position] = speed;
		delays[position] = delay;
		randoms[position] = random;
	}
}

function startOrStopScroll(force, number, is)
{

	var speed = arguments[3];
	var delay = arguments[4];

	if(speed == null)
	{
		speed = defSpeed;
	}

	if(delay == null)
	{
		delay = defDelay;
	}


	if(autoplays[number] == false)
	{
        	autoplays[number] = true;
        	var willBe = is;

        	if(is + 1 > totals[number])
        	{
            		willBe = 1;

        	}
        	else
        	{
            		willBe ++;
        	}

        	rollTheScroll(force, number, is, willBe, speed, delay);

    	}
    	else
    	{
        	autoplays[number] = false;
        	
        	while(tids[number].length > 0)
        	{
           		clearTimeout(tids[number].pop());

        	}

    	}

}

function changeScroller(number, is, willBe)
{

	var speed = arguments[3];
	
	if(speed == null)
	{
		speed = defSpeed;
	}

	var timer = 0;

	for(i = 99; i >= 0; i--)
	{
    		var tid = setTimeout("changeOpacity(" + i + ",'" + names[number] + is + "')", (timer * speed));

    		if(autoplays[number])
    		{
    			tids[number].push(tid);
    		}

    		timer++;
    	}

	var tid1 = setTimeout("document.getElementById('" + names[number] + is + "').style.display = 'none'", (timer * speed));
    	var tid2 = setTimeout("document.getElementById('" + names[number] + willBe + "').style.display = 'block'", (timer * speed));

    	if(autoplays[number])
    	{
    		tids[number].push(tid1, tid2);
    	}

    	timer++;

    	for(i = 0; i <= 99; i++)
    	{

		var tid = setTimeout("changeOpacity(" + i + ",'" + names[number] + willBe + "')", (timer * speed));
		
		if(autoplays[number])
		{
			tids[number].push(tid);
		}

		timer++;
    	}

}

function changeOpacity(opacity, id)
{
	var object = document.getElementById(id);

	if(typeof object.style.filter != 'undefined')
	{
		object.style.filter = 'alpha(opacity='+opacity+')';
	}
    	else if(typeof object.style.MozOpacity != 'undefined')
    	{
    		object.style.MozOpacity=opacity/100;
	}
    	else if(typeof object.style.khtmlOpacity != 'undefined')
    	{
    		object.style.khtmlOpacity = opacity/100;
    	}
    	else
    	{
    		object.style.opacity = opacity/100;
    	}
}

function rollTheScroll(force, number, is)
{

	var willBe = arguments[3];
	var speed = arguments[4];
	var delay = arguments[5];
	var delayNow = delay;

	var rand = Math.round( Math.random() * (totals[number]-1 ) + 1);

	while(rand == is)
	{
		rand=Math.round( Math.random() * (totals[number]-1 ) + 1);
	}

	if(force == true)
	{
		delayNow = 0;
	}

	if(randoms[number] == true)
	{
		willBe = rand;
	}

	if(willBe == null)
	{
		willBe = is + 1;
	}

	if(speed == null)
	{
		speed = defSpeed;
	}

	if(delay == null)
	{
		delay = defDelay;
	}

	var tid = setTimeout("changeScroller(" + number + "," + is + "," + willBe + "," + speed + ")", delayNow);

    	if(autoplays[number])
    	{
    		tids[number].push(tid);
    	}

	if(randoms[number]==true)
	{

		is=willBe;

	}
	else
	{
    		if(is + 1 > totals[number])
    		{
    			is = 1;
    		}
    		else
    		{
    			is ++;
    		}
	}

    	if(willBe + 1 > totals[number])
    	{
    		willBe = 1;
    	}
    	else
    	{
    		willBe ++;
    	}

    	if(autoplays[number])
    	{
        	var tid = setTimeout("rollTheScroll(" + false + "," + number + "," + is + "," + willBe + "," + speed + "," + delay + ")", delay);
        	tids[number].push(tid);
    	}
}

function changeAndResetTimer(number, is, willBe)
{

	var speed = arguments[3];
	var delay = arguments[4];

	if(is == null)
	{
		is = iss[number];
	}

	if(speed == null)
	{
		speed = speeds[number];
	}

	if(delay == null)
	{
		delay = delays[number];
	}

    	changeScroller(number, is, willBe, speed);

	iss[number] = willBe;
}

function defSwap(name,total)
{
	var is = arguments[2];
	var willBe = arguments[3];
	var speed = arguments[4];
	var delay = arguments[5];
	var random = arguments[6];

	if(is == null)
	{
		is = 1;
	}

	storeInfo(name, total, is, willBe, speed, delay, random, false);
}

function startSwap(name, total)
{
	var is = arguments[2];
	var willBe = arguments[3];
	var speed = arguments[4];
	var delay = arguments[5];
	var random = arguments[6];

	if(is == null)
	{
		is = 1;
	}

	storeInfo(name, total, is, willBe, speed, delay, random, true);

	var position = names.length-1;
	var force = false;

	rollTheScroll(force, position, iss[position], willBes[position], speeds[position], delays[position]);
}

function changeSwap(name, is, willBe)
{
	var speed = arguments[3];
	var delay = arguments[4];
	var temp = checkName(name);

	if(temp == null)
	{
		return temp;
	}

	changeAndResetTimer(temp, is, willBe);
}

function pauseSwap(name, is)
{
	var willBe = arguments[2];
	var speed = arguments[3];
	var delay = arguments[4];
	var temp = checkName(name);

	if(temp == null)
	{
		return temp;
	}

	iss[temp] = is;

	startOrStopScroll(true, temp, iss[temp], speeds[temp], delays[temp]);
}
