/*
	Copyright (c) 2007 FormatoWeb.com.ar
	Prohibida la copia o modificación del presente código fuente.
*/

var scrollList=new Array();
var disabledButtons = false;
var initialIndex = 0;

function posicionaScroll(div, viewIndex) {
	var theContainerTable = getEl(div);
	var realScrollingWidth = (theContainerTable.lastChild.childNodes.length * 60) + 60;
	var	size = 60;
	
	theContainerTable.scrollLeft = ((initialIndex)*size);
}

function registraScroll(div, velIzq, velDer, size, type,movement) {
	var theContainerTable = getEl("Container" + div);
	var scrollLimit = new Boolean() 
	
	size = 64;
	velIzq = 4;
	velDer = -4;	

	if (disabledButtons) return;
	
	if (window.XMLHttpRequest) {
		if(document.epando) {
			//IE7
			width = 60;
		} else {
			//mozilla, safari, opera 9 ... etc
			width = 58;
		}
	} else {
		// IE6, older browsers
		width = 60;
	}
	
	var realScrollingWidth = (theContainerTable.lastChild.childNodes.length * 60) + 60;	
	var realScrollingItems = (theContainerTable.lastChild.childNodes.length-1) / 2;
	
	var agentVar=navigator.userAgent
	if (agentVar.indexOf("IE") != -1){
	 scrollLimit = (realScrollingWidth > theContainerTable.offsetWidth);
	} 
	else {
	 scrollLimit = (theContainerTable.scrollLeft <= (realScrollingItems*60-theContainerTable.offsetWidth));
	} 

	
	if (movement=="izq" || scrollLimit) {
		if (scrollList["Container" + div] == null) {			
			scrollList["Container" + div] = new Array(velIzq, velDer, size, type,realScrollingWidth);
		}
		
		iniciaScroll("Container" + div,movement);
	}
			
}

function getEl(elementId) {
	return document.getElementById(elementId);
}

function iniciaScroll(div,movement) {		
	disabledButtons = true;
	scrollDivs=new Array();
	velDivs=new Array();
				
	var velocidad = 0;
	if (movement == 'izq') {			
		velocidad = scrollList[div][1];			
	}else {
		velocidad = scrollList[div][0];			
	}
		
	velDivs.push(velocidad);		
	scrollDivs.push(new Array(div,scrollList[div][2],0,setInterval('scrollNow()', 50),scrollList[div][3],scrollList[div][4]));		
}

function detieneScroll(identificador) {		
	clearInterval(identificador);
	disabledButtons=false;	
}

function scrollNow() {
	for(key in scrollDivs) {		

		if (scrollDivs[key][4] == 'vertical') {		
			var desplazamientoActual=scrollDivs[key][0].scrollTop;
			var nuevoDesplazamiento=desplazamientoActual+velDivs[key];		
			var size = scrollDivs[key][1];
			
			if (velDivs[key] > 0) {
				scrollDivs[key][2] += velDivs[key];	
				var currentSize = scrollDivs[key][2];
				//alert("Scroll Top: " + scrollDivs[key][0].scrollTop + " Scroll Height: " + scrollDivs[key][0].scrollHeight + "Div Height: " + scrollDivs[key][0].clientHeight );
				if (size <= currentSize || (scrollDivs[key][0].scrollTop >=(scrollDivs[key][0].scrollHeight - scrollDivs[key][0].clientHeight - size))) {
					//alert("Size: " + size + " CurrentSize: " + currentSize);
					scrollDivs[key][2] = 0;
					detieneScroll(scrollDivs[key][3]);
				}else {
					scrollDivs[key][0].scrollTop=nuevoDesplazamiento;
				}	
			}else {
				//alert("en negativo");
				scrollDivs[key][2] += velDivs[key];
				var currentSize = scrollDivs[key][2];
				size = size*(-1);
				//alert("-Size: " + size + " CurrentSize: " + currentSize);
				if (size >= currentSize || (scrollDivs[key][0].scrollTop == 0)) {
					scrollDivs[key][2] = 0;
					detieneScroll(scrollDivs[key][3]);
				}else {
					scrollDivs[key][0].scrollTop=nuevoDesplazamiento;
				}
			}
		} else {
			//alert('horizontal');	
			var theDiv = getEl(scrollDivs[key][0]);	
			//alert(theDiv);		
			var desplazamientoActual=theDiv.scrollLeft;
			var nuevoDesplazamiento=desplazamientoActual+velDivs[key];					
			var size = scrollDivs[key][1];
			
			if (velDivs[key] > 0) {
				scrollDivs[key][2] += velDivs[key];	
				var currentSize = scrollDivs[key][2];
				//alert("Scroll Left: " + theDiv.scrollLeft + " Scroll Width: " + scrollDivs[key][5] + "Div Width: " + theDiv.clientWidth +" Size:" + size);
				//alert("Size: " + size + " CurrentSize: " + currentSize);
				if (size <= currentSize || (theDiv.scrollLeft >= (scrollDivs[key][5] - theDiv.clientWidth - size))) {
					//alert("Size: " + size + " CurrentSize: " + currentSize);
					scrollDivs[key][2] = 0;
					initialIndex ++;
					detieneScroll(scrollDivs[key][3]);
				}else {
					theDiv.scrollLeft=nuevoDesplazamiento;
				}	
			}else {
				//alert("en negativo");
				scrollDivs[key][2] += velDivs[key];
				var currentSize = scrollDivs[key][2];
				size = size*(-1);
				//alert("-Size: " + size + " CurrentSize: " + currentSize);
				if (size >= currentSize || (theDiv.scrollLeft == 0)) {
					scrollDivs[key][2] = 0;
					initialIndex --;
					detieneScroll(scrollDivs[key][3]);
				}else {
					theDiv.scrollLeft=nuevoDesplazamiento;
				}
			}
		}
	}
}
