// JavaScript Document
function ClassScroll(div_content_scroll,div_content_id,alto_img_srcoll){
	var me = this;
	var content_scroll = div_content_scroll;
	var content = div_content_id;
	var alto_imagen_scroll = alto_img_srcoll;
	var enabled = false;
	var inicio_scroll = 0;
	var alto_scroll;
	var ancho_imagen_scroll;
	var ultimo_scroll = 0;
	var ultimo_cant = 0;
	var whell_enabled = false;
	var vertical = false;
	
	var tiempo ;
	var diff ;
	var ultima_posicion;
	
	//Public Function
	me.ActivaScroll = function (div_scroll){
		var scroll_obj = document.getElementById(content_scroll);
		var content_obj = document.getElementById(content);

		alto_scroll = scroll_obj.offsetHeight;
		
		var alto_content= content_obj.clientHeight;
		var alto_scroll_content = content_obj.scrollHeight;
	
		//alert("content="+alto_content+" alto_cont_scroll="+alto_scroll_content);
		//document.getElementById(div_scroll).style.display='none';
		
		if(alto_scroll_content==alto_scroll_content){//>alto_content){
			scroll_obj.onmousedown = scroll_enabled;
			if (scroll_obj.addEventListener){
				scroll_obj.addEventListener('DOMMouseScroll', wheel, false);
				content_obj.addEventListener('DOMMouseScroll', wheel, false);
			}
			else{
				scroll_obj.onmousewheel = document.onmousewheel = wheel;
				content_obj.onmousewheel = document.onmousewheel = wheel;
			}
			scroll_obj.onmouseover = activa_wheell;
			content_obj.onmouseover = activa_wheell;
			scroll_obj.onmouseout = disabled_wheell;
			content_obj.onmouseout = disabled_wheell;
			scroll_obj.onmouseup = scroll_disabled;
			scroll_obj.onmousemove = scroll_change;
			document.onmousemove = scroll_change;
			document.onmouseup = scroll_disabled;
		}
	}
	
	me.ActivaScrollVertical = function (scroll_imagen_ancho){
		vertical = true;
		ancho_imagen_scroll = scroll_imagen_ancho;
		var scroll_obj = document.getElementById(content_scroll);
		var content_obj = document.getElementById(content);
		alto_scroll = scroll_obj.offsetHeight;

		var alto_content= content_obj.clientHeight;
		var alto_scroll_content = content_obj.scrollHeight;

		scroll_obj.onmousedown = scroll_enabled;
		if (scroll_obj.addEventListener){
			scroll_obj.addEventListener('DOMMouseScroll', wheel, false);
			content_obj.addEventListener('DOMMouseScroll', wheel, false);
		}
		else{
			scroll_obj.onmousewheel = document.onmousewheel = wheel;
			content_obj.onmousewheel = document.onmousewheel = wheel;
		}
		scroll_obj.onmouseover = activa_wheell;
		content_obj.onmouseover = activa_wheell;
		scroll_obj.onmouseout = disabled_wheell;
		content_obj.onmouseout = disabled_wheell;
		scroll_obj.onmouseup = scroll_disabled;
		scroll_obj.onmousemove = scroll_change;
		document.onmousemove = scroll_change;
		document.onmouseup = scroll_disabled;
	}
	
	me.DesactivaScrool = function(div_scroll){
			//Desactiva scroll
		var scroll_obj = document.getElementById(content_scroll);
		var content_obj = document.getElementById(content);
		
		var alto_content= content_obj.clientHeight;
		var alto_scroll_content = content_obj.scrollHeight;
		//alert("content="+alto_content+" alto_cont_scroll="+alto_scroll_content);
		if(alto_scroll_content<=alto_content){
			document.getElementById(div_scroll).style.display='none';
			if(div_scroll=="content_right_right"){
				document.getElementById("content_right_sin_scroll").style.display='inline';
			}
		}else{
			document.getElementById(div_scroll).style.display='inline';
			if(div_scroll=="content_right_right"){
				document.getElementById("content_right_sin_scroll").style.display='none';
			}
		}
	}
	
	me.DesactivaScroolH = function(){
			//Desactiva scroll
		var scroll_obj = document.getElementById(content_scroll);
		var content_obj = document.getElementById(content);
		
		var w_content= content_obj.clientWidth;
		var w_scroll_content = content_obj.scrollWidth;
		//alert("content="+alto_content+" alto_cont_scroll="+alto_scroll_content);
		if(w_scroll_content<=w_content){
			document.getElementById("scroll_vertical").style.display='none';
		}else{
			document.getElementById("scroll_vertical").style.display='inline';
		}
	}
	
	me.inicia_scroll = function(){
		var content_obj = document.getElementById(content);
		var scroll_obj = document.getElementById(content_scroll);
		content_obj.scrollTop =  0;
		scroll_obj.style.backgroundPosition = '0px ' + '0px';
		ultimo_cant = 0;
		whell_enabled = false;

	}
	
	//Private Function
	var scroll_enabled = function(evt){
		evt = (!evt)? ((event)?event : window.event):evt;
		
		enabled = true;
		var htm = document.getElementsByTagName('BODY')[0].parentNode;
		if(vertical == false){
			var scrollBody = typeof(window.scrollY) == 'undefined' ?htm.scrollTop:window.scrollY;
			inicio_scroll = findTopObj(document.getElementById(content_scroll));
			
			var cant = ((evt && evt.clientY ? evt.clientY : event.clientY ? event.clientY : null)*1 - inicio_scroll*1 + scrollBody*1 - (alto_imagen_scroll*1/2)*1);
			mueve_scroll(cant<0?0:cant);
			document.onselectstart = function()
			 {
				  return false;
			 } 
		// Firefox
			document.onmousedown = function()
			 {
				  return false;
			 }
		}
		else{
			var scrollBody = typeof(window.scrollX) == 'undefined' ?htm.scrollLeft:window.scrollX;
			inicio_scroll = findLeftObj(document.getElementById(content_scroll));
			
			var cant = ((evt && evt.clientX ? evt.clientX : event.clientX ? event.clientX : null)*1 - inicio_scroll*1 + scrollBody*1 - (ancho_imagen_scroll*1/2)*1);
			mueve_scrollVertical(cant<0?0:cant);
			document.onselectstart = function()
			 {
				  return false;
			 } 
		// Firefox
			document.onmousedown = function()
			 {
				  return false;
			 }
		}

	}
	
	var scroll_disabled = function(){
		enabled = false;
		inicio_scroll = 0;
		document.onselectstart = function()
		 {
			  return true;
		 } 
	// Firefox
		document.onmousedown = function()
		 {
			  return true;
		 }

	}

	var scroll_change = function(evt){
		if(enabled==true){
			if(vertical == false){
				var content_obj = document.getElementById(content);
				evt = (!evt)? ((event)?event : window.event):evt;
				//alert(Math.round(scroll_obj.offsetHeight*1/2));
				var htm = document.getElementsByTagName('BODY')[0].parentNode;
				var scrollBody = typeof(window.scrollY) == 'undefined' ?htm.scrollTop:window.scrollY;
				var cant = ((evt && evt.clientY ? evt.clientY : event.clientY ? event.clientY : null)*1 - inicio_scroll*1 + scrollBody*1 - Math.round(alto_imagen_scroll*1/2)*1);
				
				mueve_scroll(cant<0?0:cant);
			}
			else{ //Vertical
				var content_obj = document.getElementById(content);
				evt = (!evt)? ((event)?event : window.event):evt;
				//alert(Math.round(scroll_obj.offsetHeight*1/2));
				var htm = document.getElementsByTagName('BODY')[0].parentNode;
				var scrollBody = typeof(window.scrollX) == 'undefined' ?htm.scrollLeft:window.scrollX;
				var cant = ((evt && evt.clientX ? evt.clientX : event.clientX ? event.clientX : null)*1 - inicio_scroll*1 + scrollBody*1 - Math.round(ancho_imagen_scroll*1/2)*1);
				mueve_scrollVertical(cant<0?0:cant);
			}
		}
		else{
			//alert(enabled);
		}
	}
	
	me.scrollAutomatico = function(){
		if(vertical == false){
				
				mueve_scroll(ultimo_cant+diff);
			}
			else{
				//alert(ultimo_cant+diff);
				mueve_scrollVertical(ultimo_cant+diff);
			}
	}
	
	me.iniciaScroll = function(){
		if(vertical == false){
			mueve_scroll(0);
		}
		else{
			mueve_scrollVertical(0);
		}
	}
		
	me.modifica = function(time, diferencial){
		tiempo = time;
		diff = diferencial;		
	}
	
	me.final_scroll = function(){
		var scroll_obj = document.getElementById(content_scroll);
		if(vertical == false){
			if((ultimo_cant*1 + alto_imagen_scroll*1) >= scroll_obj.offsetHeight)
				return true;
			else
				return false
		}
		else{
			if((ultimo_cant*1 + ancho_imagen_scroll*1) >= scroll_obj.offsetWidth)
				return true;
			else
				return false
		}
	}
	
	
	var mueve_scroll = function(cant, direc){
		if(!direc){
			var content_obj = document.getElementById(content);
			var scroll_obj = document.getElementById(content_scroll);
			var alto_scroll = content_obj.scrollHeight;
			var mueve = cant*((alto_scroll*1-content_obj.offsetHeight*1)/(scroll_obj.offsetHeight*1 - alto_imagen_scroll*1));
			cant = ((cant*1 + alto_imagen_scroll*1) > scroll_obj.offsetHeight ? (scroll_obj.offsetHeight*1 - alto_imagen_scroll*1) : cant);
			ultimo_cant = cant;
			content_obj.scrollTop =  mueve;
			scroll_obj.style.backgroundPosition = '0px ' + cant + 'px';
		}
	}
	
	var mueve_scrollVertical = function(cant, direc){
		if(!direc){
			var content_obj = document.getElementById(content);
			var scroll_obj = document.getElementById(content_scroll);
			var ancho_scroll = content_obj.scrollWidth;
			var mueve = cant*((ancho_scroll*1-content_obj.offsetWidth*1)/(scroll_obj.offsetWidth*1 - ancho_imagen_scroll*1));
			cant = ((cant*1 + ancho_imagen_scroll*1) > scroll_obj.offsetWidth ? (scroll_obj.offsetWidth*1 - ancho_imagen_scroll*1) : cant);
			ultimo_cant = cant;
			content_obj.scrollLeft =  mueve;
			scroll_obj.style.backgroundPosition = cant + 'px ' + '0px';
		}
	}
	
	var wheel = function(evt){
		if(whell_enabled){
			var delta = 0;
			evt = (!evt)? ((event)?event : window.event):evt;
			if (evt.wheelDelta) { /* IE/Opera. */
					delta = event.wheelDelta/120;
					if (window.opera)
							delta = -delta;
			} else if (evt.detail) { /** Mozilla case. */
					delta = -evt.detail/3;
			}
			var cant = ultimo_cant - delta*3;
			if(vertical == true)
				mueve_scrollVertical(cant<0?0:cant);
			else
				mueve_scroll(cant<0?0:cant);
			if (evt.preventDefault)
					evt.preventDefault();
			evt.returnValue = false;
		}
	}

	var activa_wheell = function(){
		whell_enabled = true;
	}
	
	var disabled_wheell = function(){
		whell_enabled = false;
	}
	
	var findTopObj = function(obj) { 
		var curtop = 0;  
		if (obj.offsetParent) {      
			while (obj.offsetParent) {
				  curtop += obj.offsetTop;
				  obj = obj.offsetParent;      
			}  
		} 
		else {    
			if (obj.y) {      
				curtop += obj.y;     
			}  
		}  
		return(curtop);  
	}  
	
	var findLeftObj = function(obj) { 
		var curleft = 0;  
		if (obj.offsetParent) {      
			while (obj.offsetParent) {
				  curleft += obj.offsetLeft;
				  obj = obj.offsetParent;      
			}  
		} 
		else {    
			if (obj.x) {      
				curleft += obj.x;     
			}  
		}  
		return(curleft);  
	}  
	
}
