/*
	scroll_obj_id: nombre del objeto CGraphicScroll creado
	scroll_div: contenedor de la herramienta de scroll (donde se encuantran las flechas y el ascensor)
	scroll_content: contenedor externo del contenido a desplazar (MASCARA)
	scroll_mask: marco del contenido que será desplazado
	scroll_elevator: identificador del ascensor del scroll grafico
	scroll_bar: espacio en el cual se desplaza el ascensor
	bt_scroll_lef: elemento grafico del scroll para mover hacia la izquierda
	bt_scroll_down: elemento grafico del scroll para mover hacia la derecha
	content_offset: contiene un desplazamiento al final del scroll para mostra contenido que puede quedar oculto
	speed: velocidad del scroll
*/
function CGraphicScrollHorizontal(scroll_obj_id,scroll_div,scroll_mask,scroll_content,scroll_elevator,scroll_bar, bt_scroll_left, bt_scroll_right, content_offset, speed)
{
	//alert(scroll_obj_id+","+scroll_div+","+scroll_mask+","+scroll_content+","+scroll_elevator+","+scroll_bar+","+ bt_scroll_left+","+ bt_scroll_right+","+ content_offset+","+ speed);
	/* metodos*/
	this.scrollLeft = scrollLeft;
	this.scrollRight = scrollRight;
	this.stopScrollingHorizontal = stopScrollingHorizontal;
	this.setLoopHorizontal = setLoopHorizontal;
	this.scrollHorizontalInit = scrollHorizontalInit;
	/*atributos*/
	this.content_offset = content_offset;
	this.obj_scroll_id = scroll_obj_id;

	if (scroll_div)
		this.obj_scroll_div = document.getElementById(scroll_div);
	else
		this.obj_scroll_div = null;
	this.obj_scroll_mask = document.getElementById(scroll_mask);
	this.obj_scroll_mask.position = "relative";
	this.obj_scroll_mask.style.overflow = "hidden";
	this.obj_scroll_content = document.getElementById(scroll_content);
	this.obj_scroll_content.style.float = "left";
	this.obj_scroll_content.style.position = "relative";
	this.obj_scroll_content.className = scroll_obj_id;	
	this.obj_scroll_content.style.top='0px';	
	
	if (speed)
		this.scroll_step = speed;
	else
		this.scroll_step = 5;
	
	if (scroll_elevator)
		this.obj_scroll_elevator = document.getElementById(scroll_elevator);
	if (scroll_bar)
		this.obj_scroll_bar = document.getElementById(scroll_bar);
	if (bt_scroll_left)
	{
		this.obj_bt_scroll_left = document.getElementById(bt_scroll_left);
		this.obj_bt_scroll_left.onmousedown=function () {window[scroll_obj_id].setLoopHorizontal(true);window[scroll_obj_id].scrollLeft(true);};
		this.obj_bt_scroll_left.onmouseup=function(){window[scroll_obj_id].stopScrollingHorizontal();};
		this.obj_bt_scroll_left.onmouseout=function(){window[scroll_obj_id].stopScrollingHorizontal();};
		this.obj_bt_scroll_left.style.cursor = "pointer";
		this.obj_bt_scroll_left.className = "hide_rel";
	}
	if (bt_scroll_right)
	{
		this.obj_bt_scroll_right = document.getElementById(bt_scroll_right);
		this.obj_bt_scroll_right.onmousedown=function(){window[scroll_obj_id].setLoopHorizontal(true);window[scroll_obj_id].scrollRight(true);};
		this.obj_bt_scroll_right.onmouseup=function(){window[scroll_obj_id].stopScrollingHorizontal();};
		this.obj_bt_scroll_right.onmouseout=function(){window[scroll_obj_id].stopScrollingHorizontal();};
		this.obj_bt_scroll_right.style.cursor = "pointer";
		this.obj_bt_scroll_right.className = "hide_rel";
	}
	/*metodos*/
	
	
	setMousewheelHorizontal(scroll_mask,this.obj_scroll_content);
	window.setTimeout(scroll_obj_id+".scrollHorizontalInit()",200);
	
}

function scrollHorizontalInit()
{
	this.scroll_content_left = 0;
	this.scroll_loop = true;
	this.scroll_desp = 0;
	this.scroll_elevator_left = 0;	
	/*
		h_dif: contiene la diferencia de alturas de la caja de texto (scroll_content) y la mascara de la caja (scroll_mask)
		h_divs: contiene la cantidad de segemntos de tamaño scroll_step que se necesitan para recorrer h_dif
		h_desp: contiene el desplazamiento que debe hacer en cada paso el scroll_elevator
	*/
	/**/
	//alert(this.obj_scroll_content.offsetWidth);
	if (this.obj_scroll_content.offsetWidth!=0)
	{
		this.h_dif = this.obj_scroll_content.offsetWidth - this.obj_scroll_mask.offsetWidth;
		this.h_divs = Math.ceil(this.h_dif/this.scroll_step);
		if (this.obj_scroll_bar)
			this.h_desp = Math.ceil(this.obj_scroll_bar.offsetWidth/this.h_divs);

	}
	else
	{
		this.h_dif = 0;
		this.h_divs = 0;
		this.h_desp = 0;
	}
	
	/*alert("content: "+this.obj_scroll_content.offsetWidth+" > area: "+this.obj_scroll_mask.offsetWidth);
	alert("content: "+this.obj_scroll_content.offsetWidth+" > area: "+this.obj_scroll_mask.offsetWidth);*/
	if (this.obj_scroll_content.offsetWidth>this.obj_scroll_mask.offsetWidth&&this.obj_scroll_div)
	{
		this.obj_scroll_div.className="show_rel";
	}
	if (this.obj_scroll_content.offsetWidth>this.obj_scroll_mask.offsetWidth)
	{
		this.obj_bt_scroll_right.className = "show_rel";	
	}
	
}

function scrollLeft(lo)
{	
	if(this.h_dif>0&&this.scroll_content_left<0&&this.obj_scroll_elevator)
	{
		
		this.scroll_elevator_left -= this.h_desp;
		this.obj_scroll_elevator.style.left = this.scroll_elevator_left + "px";
		//alert("divs: "+divs+"\ndesp: "+desp+"\nobj_scroll_elevator.style.left: "+obj_scroll_elevator.style.left);
	}	
	
	this.scroll_content_left += this.scroll_step;
	this.obj_bt_scroll_right.className = "show_rel";
	
	if(this.scroll_content_left>0)
	{
		this.scroll_loop = false;
		this.scroll_content_left -= this.scroll_step;
		this.obj_bt_scroll_left.className = "hide_rel";
	}
	
	if (lo)
	{	
		this.obj_scroll_content.style.left = this.scroll_content_left + "px";
		setTimeout(this.obj_scroll_id+".scrollLeft("+this.scroll_loop+")",10);
	}
	else
	{
		this.obj_scroll_content.style.left = this.scroll_content_left + "px";
	}
}

function scrollRight(lo)
{		
	if(this.h_dif&&this.obj_scroll_elevator)
	{
		this.scroll_elevator_left += this.h_desp;
		this.obj_scroll_elevator.style.left = this.scroll_elevator_left + "px";
		//alert("divs: "+divs+"\ndesp: "+desp+"\nobj_scroll_elevator.style.left: "+obj_scroll_elevator.style.left);
	}
	
	this.scroll_content_left -= this.scroll_step;
	act_pos = this.obj_scroll_content.offsetWidth - this.obj_scroll_mask.offsetWidth;
	this.obj_bt_scroll_left.className = "show_rel";

	if (Math.abs(this.scroll_content_left)-this.content_offset > act_pos)
	{			
		this.scroll_loop = false;
		this.scroll_content_left += this.scroll_step;
		this.obj_bt_scroll_right.className = "hide_rel";
	}		
	if (lo)		
	{
		//alert(this.obj_scroll_content.style.left);
		this.obj_scroll_content.style.left = this.scroll_content_left + "px";					
		setTimeout(this.obj_scroll_id+".scrollRight("+this.scroll_loop+")",10);
		//alert(this.obj_scroll_content.style.left);
	}
	else
	{
		this.obj_scroll_content.style.left = this.scroll_content_left + "px";
	}
}

function stopScrollingHorizontal()
{		
	this.scroll_loop=false;
}

function setLoopHorizontal(b)
{
	this.scroll_loop=b;
}


/**** MOUSE WHELL FUNCS **/

var speed = 3;
var scroll_wheelHorizontal_listeners = 0;
function setMousewheelHorizontal(div_id,div_obj)
{
	if (div_obj.addEventListener)
		div_obj.addEventListener('DOMMouseScroll', wheelHorizontal, false);
	div_obj.onmousewheelHorizontal /*= document.onmousewheelHorizontal */ = wheelHorizontal;
}

function handleHorizontal(delta, div_obj) 
{
	if (delta < 0)		
		window[div_obj.className].scrollRight(true);
		//div_obj.scrollRight();		
	else
		window[div_obj.className].scrollLeft(true);
		//div_obj.scrollBy(0,-speed*3);
}

function wheelHorizontal(event)
{
	var delta = 0;
	if (!event) 
		event = window.event;
	if (event.wheelHorizontalDelta) 
	{
		delta = event.wheelHorizontalDelta/120; 
		if (window.opera)
			delta = -delta;
	} 
	else if (event.detail) {
		delta = -event.detail/3;
	}
	if (delta)
		handleHorizontal(delta, this);
        if (event.preventDefault)
                event.preventDefault();
        event.returnValue = false;
}

