//fpv=6
var mw_scroll_do_javavar;
mw_scroll_do_javavar = 0;
function mw_scroll(id,scrollamount,scrolltime,horizontal) {
	mw_scroll_do_javavar = 1;
	mw_scrolldo(id,scrollamount,scrolltime,horizontal);
}
function mw_scroll_stop() {
	mw_scroll_do_javavar = 0;
}
function mw_scrolldo(id,scrollamount,scrolltime,horizontal) {
  if ((mw_scroll_do_javavar==1)){
	var obj=fp_get_element_by_id_siexiste(id);
	  if (obj){
		if (horizontal){
			obj.scrollLeft=obj.scrollLeft + scrollamount;
			var horizontaltxt="true";
		}else{
			obj.scrollTop=obj.scrollTop + scrollamount;
			var horizontaltxt="false";
		}
		setTimeout("mw_scrolldo('" + id + "'," + scrollamount + "," + scrolltime + ","+horizontaltxt +")",scrolltime);
	  }
  }
}
function mw_scroll_obj_do_cmd(obj,cmd){
	if (typeof(obj)!="object"){
		return false;
	}
	if (cmd=="iniciar"){
		obj.startScroll();
		return;
	}
	if (cmd=="detener"){
		obj.stopScrollByCmd();
		return;
	}
	if (cmd=="elementosig"){
		obj.gotoNextElem();
		return;
	}
	if (cmd=="elementoant"){
		obj.gotoPrevElem();
		return;
	}
}
function mw_scroll_obj(iddiv,idobj){
    this.iddiv = iddiv;
    this.idobj = idobj;
    this.scrollamountTop = 10;
    this.scrollamountLeft = 0;
	
	
    this.scrolltime = 500;
    this.repetir = true;
    this.stopbyMO = false;
    this.stopbycmd = false;
    this.startonBot = false;
    this.startonRight = false;
    this.alculminar = '';
    this.getscrollHWtime = 500;
    this.getscrollHWmaxintentos = 100;
    this.getscrollHWintentos = 0;
    this.getscrollHWok = false;
    this.getscrollHWokH = false;
    this.getscrollHWokW = false;
	this.scrollstartTop = 0;
    this.scrollstartLeft = 0;
	this.addVspacer=0;
	this.addHspacer=0;

	this.pausaronelem=0;
	this.pausaronelem_do=0;
	this.pausaronelem_elemstagname="div";

	this.reportarchoquecada=1;
	this.reportechoque=0;

	this.pausaronelem_enpausa=false;
	this.pausaronelem_indexvector=0;
	this.timeOutScroll=false;
	this.timeOutPausaOnElem=false;
	this.pausaronelem_metaactualalcanzada=false;
	this.sentidoinvertido=false;
	this.gotoNextElem=function(){
		this.stopScroll();
		this.stopbyMO = false;
		this.stopbycmd=false;
		this.pausaronelem_reanudar();
	}
	this.gotoPrevElem=function(){
		this.stopScroll();
		var index;
		this.stopbyMO = false;
		this.stopbycmd=false;

		if(this.sentidoinvertido){
			this.sentidoinvertido=false;
			this.invertirsentido();
		}
		if(this.pausaronelem_metaactualalcanzada!==false){
			index=this.pausaronelem_metaactualalcanzada+(this.pausaronelem_indexvector*-1);
		}else{
			if(this.pausaronelem_indexvector<0){
				index=0;	
			}else{
				index=this.pausaronelem_metas_num-1;	
			}
		}
		this.pausaronelem_set_next_meta_index(index);
		this.pausaronelem_reanudar();
	}
	this.pausaronelem_set_next_meta_index=function(index){
		if(!this.pausaronelem_do){
			return false;	
		}
		if(index<0){
			index=0;	
		}
		if(index>=this.pausaronelem_metas_num){
			index=this.pausaronelem_metas_num-1;
		}
		var meta=this.pausaronelem_metas[index];
		var pa=this.pausaronelem_getPosActual();
		
		if(pa>meta){
			if(this.pausaronelem_indexvector>0){
				this.sentidoinvertido=true;
				this.invertirsentido();
			}
		}else if(pa<meta){
			if(this.pausaronelem_indexvector<0){
				this.sentidoinvertido=true;
				this.invertirsentido();
			}
		}
		
		//
		
		this.pausaronelem_metaexiste=true;	
		this.pausaronelem_metas_index=index;
		this.pausaronelem_metaactualpos=this.pausaronelem_metas[index];
		return true;
	}
	this.invertirsentido=function(){
		this.scrollamountTop=this.scrollamountTop*(-1);	
		this.scrollamountLeft=this.scrollamountLeft*(-1);
		this.pausaronelem_indexvector=this.pausaronelem_indexvector*(-1);
	}
	this.pausaronelem_get_next_meta_index=function(numindex){
		if(this.sentidoinvertido){
			this.sentidoinvertido=false;
			this.invertirsentido();
		}
		if(!numindex){
			numindex=1;	
		}
		nextmetaindex=this.pausaronelem_metas_index+(this.pausaronelem_indexvector*numindex);
		this.pausaronelem_metaexiste=false;	
		if (nextmetaindex>=0){
			if(nextmetaindex<this.pausaronelem_metas_num){
				this.pausaronelem_metas_index=nextmetaindex;
				this.pausaronelem_metaexiste=true;
				this.pausaronelem_metaactualpos=this.pausaronelem_metas[this.pausaronelem_metas_index];
				return true;
			}
		}
			
	}
	this.loaddiv=function(){
		this.last_choque_time=new Date().getTime()
		if (this.div = fp_get_element_by_id_siexiste(this.iddiv)){
			
			if (this.getscrollHWtime>0){
				this.getscrollHW();	
			}else{
				this.doscroll();
				this.divok=true;
			}
			
			return true;
		}
	}
	this.getscrollHW=function(){
		if (this.getscrollHWintentos<this.getscrollHWmaxintentos){
			this.getscrollHWintentos+=1;
			if (this.div.scrollHeight>0){
				if (this.addVspacer){
					addVspacerhtml="<div style='height:"+this.div.clientHeight+"px; '></div>";
					this.div.innerHTML=addVspacerhtml+this.div.innerHTML+addVspacerhtml;
				}
				if (this.startonBot){
					this.scrollstartTop = this.div.scrollHeight;
					this.div.scrollTop=this.div.scrollHeight;
					this.scrollamountTop=this.scrollamountTop*(-1);
				}
				
				this.getscrollHWokH=true;
			}
			if (this.div.scrollWidth>0){
				if (this.addHspacer){
					nwidth=this.div.scrollWidth;
					npading=this.div.clientWidth;
					this.div.innerHTML="<div  style='width:"+nwidth+"px; padding-right:"+npading+"px; padding-left:"+npading+"px;'>"+this.div.innerHTML+"</div>";
				}
				if (this.startonRight){
   					this.scrollstartLeft = this.div.scrollWidth;
					this.div.scrollLeft=this.div.scrollWidth;
					this.scrollamountLeft=this.scrollamountLeft*(-1);
				}
				this.getscrollHWokW=true;
			}
			if (this.getscrollHWokW){
				if (this.getscrollHWokH){
					 this.getscrollHWok = true;
				}
			}
			if (this.getscrollHWok){
				this.divok=true;
				if (this.pausaronelem){
					this.set_pausaronelem();
				}
				this.doscroll();
				return true;	
			}else{
				if (this.getscrollHWtime>0){
					setTimeout(this.idobj+".getscrollHW();",this.getscrollHWtime);
				}
			}
		}
	}
	this.set_pausaronelem=function(){
		if (this.pausaronelem_modo!="h"){
			this.pausaronelem_modo="v";
		}
		if (this.pausaronelem_tpidentificadorelems!="id"){
			this.pausaronelem_tpidentificadorelems="name";
		}
		if (this.pausaronelem_modo=="h"){
			if (this.scrollamountLeft==0){
				return false;	
			}else{
				this.pausaronelem_posparent=mw_dom_findPosX(this.div);
			}
		}else{
			if (this.scrollamountTop==0){
				return false;	
			}else{
				this.pausaronelem_posparent=mw_dom_findPosY(this.div);	
			}
		}
		if (!this.pausaronelem_get_elems()){
			return false;	
		}
		if (!this.pausaronelem_get_metas()){
			return false;	
		}
		this.pausaronelem_do=1;//activa
		this.pausaronelem_reset_metas_indexandorder();
		return true;
	}
	this.pausaronelem_reset_metas_indexandorderV=function(){
		if (this.pausaronelem_modo=="v"){
			return 	this.pausaronelem_reset_metas_indexandorder();
		}
	}
	this.pausaronelem_reset_metas_indexandorderH=function(){
		if (this.pausaronelem_modo=="h"){
			return 	this.pausaronelem_reset_metas_indexandorder();
		}
	}
	this.pausaronelem_reset_metas_indexandorder=function(){
		if (!this.pausaronelem_do){
			return false;	
		}
		if (this.pausaronelem_modo=="h"){
			vector=this.scrollamountLeft;
		}else{
			vector=this.scrollamountTop;
		}
		this.pausaronelem_indexvector=0;
		this.pausaronelem_metaexiste=false;	
		if (vector<0){
			this.pausaronelem_indexvector=-1;
			this.pausaronelem_metas_index=this.pausaronelem_metas_num-1;
			
		}else if(vector>0){
			this.pausaronelem_indexvector=1;
			this.pausaronelem_metas_index=0;
		}else{
			return false;
		}
		
		this.pausaronelem_metaexiste=true;
		this.pausaronelem_metaactualpos=this.pausaronelem_metas[this.pausaronelem_metas_index];
		return true;
	}
	this.pausaronelem_get_metas=function(){
		
		this.pausaronelem_metas=new Array();
		this.pausaronelem_metas_index=0;
		this.pausaronelem_metas_num=0;
		if (this.pausaronelem_numeroelems<0){
			this.pausaronelem_numeroelems=1;	
		}
		numelemscoger=Math.ceil(this.pausaronelem_elems_num/this.pausaronelem_numeroelems);
		nextindex=0;
		for (z=0;z<numelemscoger;z++){
			this.pausaronelem_get_metas_elem(this.pausaronelem_elems[nextindex]);
			nextindex=nextindex+this.pausaronelem_numeroelems;
		}
		this.pausaronelem_metas_num=numelemscoger;
		return true;
	}
	this.pausaronelem_get_metas_elem=function(elem){
		
		if (this.pausaronelem_modo=="h"){
			poselem=mw_dom_findPosX(elem);
		}else{
			poselem=mw_dom_findPosY(elem);	
		}
		posrel=poselem-this.pausaronelem_posparent;
		this.pausaronelem_metas[this.pausaronelem_metas_index]=posrel;
		this.pausaronelem_metas_index++;
		
	}
	this.pausaronelem_get_elems=function(){
		this.pausaronelem_elems=new Array();
		this.pausaronelem_elems_index=0;
		this.pausaronelem_elems_num=0;
		this.pausaronelem_elemsok=false;
		if (this.pausaronelem_identificadordeelementos==''){
			return false;
		}
		if (elems=this.div.getElementsByTagName(this.pausaronelem_elemstagname)){
			for (z=0;z<elems.length;z++){
				elemadd=false;
				if (this.pausaronelem_tpidentificadorelems=="id"){
					if(elems[z].id==this.pausaronelem_identificadordeelementos){
						elemadd=true;
					}
				}else{
					if(elems[z].getAttribute('name')==this.pausaronelem_identificadordeelementos){
						elemadd=true;
					}
				}
				if (elemadd){
					this.pausaronelem_elems[this.pausaronelem_elems_index]=elems[z];
					this.pausaronelem_elems_index++;
				}
			}
			if (this.pausaronelem_elems_index){
				this.pausaronelem_elems_num=this.pausaronelem_elems_index;	
				this.pausaronelem_elemsok=true;
				return true;
			}
		}
	}
	this.pausaronelem_movetonextmetaV=function(){
		if(!this.pausaronelem_do){
			return false;	
		}
		if (this.pausaronelem_modo!="v"){
			return false;
		}
		if(!this.pausaronelem_metaexiste){
			return false;	
		}
		if(((this.div.scrollTop + this.scrollamountTop)*this.pausaronelem_indexvector)>=(this.pausaronelem_metaactualpos*this.pausaronelem_indexvector)){
			this.pausaronelem_metaactualalcanzada=this.pausaronelem_metas_index;
			this.pausaronelem_enpausa=true;
			this.div.scrollTop=this.pausaronelem_metaactualpos;
			if (this.pausaronelem_invertirsentido_after){
				this.invertirsentido();
				this.pausaronelem_invertirsentido_after=false;
			}
			
			this.pausaronelem_get_next_meta_index();
			this.pausaronelem_setTimeout();
			return true;
		}
				
	}
	this.pausaronelem_getPosActual=function(){
		if (this.pausaronelem_modo=="h"){
			return this.div.scrollLeft;
		}else{
			return this.div.scrollTop;
		}
	}
	this.pausaronelem_movetonextmetaH=function(){
		if(!this.pausaronelem_do){
			return false;	
		}
		if (this.pausaronelem_modo!="h"){
			return false;
		}
		if(!this.pausaronelem_metaexiste){
			return false;	
		}
		if(((this.div.scrollLeft + this.scrollamountLeft)*this.pausaronelem_indexvector)>=(this.pausaronelem_metaactualpos*this.pausaronelem_indexvector)){
			this.pausaronelem_enpausa=true;
			this.pausaronelem_metaactualalcanzada=this.pausaronelem_metas_index;
			this.div.scrollLeft=this.pausaronelem_metaactualpos;
			if (this.pausaronelem_invertirsentido_after){
				this.invertirsentido();
				this.pausaronelem_invertirsentido_after=false;
			}
			this.pausaronelem_get_next_meta_index();
			this.pausaronelem_setTimeout();
			return true;
		}
				
	}
	this.pausaronelem_setTimeout=function(){
		this.clearTimeOutPausaOnElem();
		if (!this.pausaronelem_detenerdespuesdeelems){
			this.timeOutPausaOnElem=setTimeout(this.idobj+".pausaronelem_reanudar();",this.pausaronelem_tiempo);
		}
	}
	this.pausaronelem_reanudar=function(){
		this.clearTimeOutPausaOnElem();
		this.pausaronelem_enpausa=false;
		this.setTimeoutdoscroll();
	}

	this.doscrollV=function(){
		if (this.pausaronelem_movetonextmetaV()){
			return true;
		}

		scrollTopactual=this.div.scrollTop;
		this.div.scrollTop=this.div.scrollTop + this.scrollamountTop;
		if(scrollTopactual==this.div.scrollTop){
			if (this.alculminar=="rebotar"){
				this.scrollamountTop=this.scrollamountTop*(-1);
				this.pausaronelem_reset_metas_indexandorderV();
				
			}else if (this.alculminar=="reiniciar"){
				this.div.scrollTop=this.scrollstartTop;
				this.pausaronelem_reset_metas_indexandorderV();
			}else{
				this.scrollamountTop=0;
			}
			if (this.reportechoque==0){
				ahora=new Date().getTime();
				tiempochoque=ahora-this.last_choque_time;
				this.last_choque_time=ahora;
			}
			this.reportechoque=this.reportechoque+1;
			if (this.reportechoque>=this.reportarchoquecada){
				this.reportechoque=0;
			}
			
		}
	}
	this.doscrollH=function(){
		scrollLeftactual=this.div.scrollLeft;
		if (this.pausaronelem_movetonextmetaH()){
			return true;
		}
		this.div.scrollLeft=this.div.scrollLeft + this.scrollamountLeft;
		if(scrollLeftactual==this.div.scrollLeft){
			if (this.alculminar=="rebotar"){
				this.scrollamountLeft=this.scrollamountLeft*(-1);
				this.pausaronelem_reset_metas_indexandorderH();
			}else if (this.alculminar=="reiniciar"){
				this.div.scrollLeft=this.scrollstartLeft;
				this.pausaronelem_reset_metas_indexandorderH();
			}else{
				this.scrollamountLeft=0;
			}
		}
	}
	this.doscroll=function(){
		this.clearTimeOutScroll();
		if (this.doscrollok()){
			
			if ((!this.stopbyMO)&&(!this.pausaronelem_enpausa)){
				if (this.scrollamountTop!=0){
					this.doscrollV();
				}
				if (this.scrollamountLeft!=0){
					this.doscrollH();
				}
				if (this.repetir){
					this.setTimeoutdoscroll();
				}
			}
			
		}
	}
	this.clearTimeOutPausaOnElem=function(){
		if(this.timeOutPausaOnElem){
			clearTimeout(this.timeOutPausaOnElem);	
			this.timeOutPausaOnElem=false;
		}
	}
	this.clearTimeOutScroll=function(){
		if(this.timeOutScroll){
			clearTimeout(this.timeOutScroll);	
			this.timeOutScroll=false;
		}
	}
	this.setTimeoutdoscroll=function(){
		this.clearTimeOutScroll();
		this.timeOutScroll=setTimeout(this.idobj+".doscroll();",this.scrolltime);
	}
	this.stopScrollByCmd=function(){
		this.stopScroll();	
		this.stopbycmd=true;
	}
	this.startScroll=function(){
		this.stopScroll();
		this.stopbyMO = false;
		this.stopbycmd=false;
		this.doscroll();
	}
	this.setstoponMO=function(){
		this.stopbyMO = true;
		this.stopScroll();
	}
	this.stopScroll=function(){
		this.clearTimeOutPausaOnElem();	
		this.clearTimeOutScroll();
	}
	this.setdoonMOUT=function(){
		this.stopbyMO = false;
		if(!this.stopbycmd){
			this.doscroll();	
		}
	}
	this.doscrollok=function(){
		if (this.divok){
			if (!this.stopbycmd){
				if((this.scrollamountTop==0)&&(this.scrollamountLeft==0)){
					return false;	
				}
				return true;
			}
		}
		return false;
	}
	this.setdebugmsgdiv=function(debugid){
		this.bebugdiv=fp_get_element_by_id_siexiste(debugid);
		if (this.bebugdiv){
			this.debugmsg="";
			this.debug=true;	
		}
	}
	this.debugmsgwrite=function(){
		if (this.debug){
			this.bebugdiv.innerHTML=this.debugmsg;
		}
	}
	this.debugmsgadd=function(msg){
		if (this.debug){
			this.debugmsg+=msg;
		}
	}
	

}
