//fpv=4
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"){
		if(obj.stopbycmd){
			obj.stopbycmd=false;
			obj.doscroll();	
		}
		return;
	}
	if (cmd=="detener"){
		obj.stopbycmd=true;
		return;
	}
	if (cmd=="elementosig"){
		if (obj.pausaronelem_enpausa){
			nextmetaindex=obj.pausaronelem_metaactualalcanzada+(obj.pausaronelem_indexvector);
			//nextmetaindex=obj.pausaronelem_metas_index;
			if (nextmetaindex>=0){
				if(nextmetaindex<obj.pausaronelem_metas_num){
					obj.pausaronelem_enpausa=false;
				}
			}
		}
		return;
	}
	if (cmd=="elementoant"){
		if (obj.pausaronelem_enpausa){
			nextmetaindex=obj.pausaronelem_metaactualalcanzada;
			eninicio=false;
			if ((obj.pausaronelem_metaactualalcanzada==0)||(obj.pausaronelem_metaactualalcanzada==(obj.pausaronelem_metas_num-1))){
				eninicio=true;
			}

			//nextmetaindex=obj.pausaronelem_metas_index+(obj.pausaronelem_indexvector*-2);
			nextmetaindex=obj.pausaronelem_metaactualalcanzada+(obj.pausaronelem_indexvector*-1);
			if (nextmetaindex>=0){
				if(nextmetaindex<obj.pausaronelem_metas_num){
					obj.pausaronelem_invertirsentido_after=true;
					obj.invertirsentido();
					obj.pausaronelem_get_next_meta_index();
					if(!eninicio){
						obj.pausaronelem_get_next_meta_index();
					}
					obj.pausaronelem_enpausa=false;
					return;
				}
			}
		}
		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.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;
			this.debugmsgadd(" <B>getscrollHW intento:"+this.getscrollHWintentos+" </B><br>");
			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;
				}
			}
			this.debugmsgwrite();
			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(){
		this.debugmsgadd("reset metas <br> ");
		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];
		//this.debugmsgadd("metapos, "+this.pausaronelem_metaactualpos+" scroll "+this.div.scrollTop+"<br> ");
		return true;
	}
	this.pausaronelem_get_next_meta_index=function(){
		nextmetaindex=this.pausaronelem_metas_index+this.pausaronelem_indexvector;
		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];
				//this.debugmsgadd("Next meta, "+this.pausaronelem_metaactualpos+"<br>");
				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);
		//this.debugmsgadd(" <B>total elemes pausar:"+this.pausaronelem_elems_num+" </B><br>");
		//this.debugmsgadd(" <B>num por pausa:"+this.pausaronelem_numeroelems+" </B><br>");
		//this.debugmsgadd(" <B>total metas:"+numelemscoger+" </B><br>");
		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.debugmsgadd("<B>meta "+this.pausaronelem_metas_index+": "+posrel+" </B><br>");
		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){
						//this.debugmsgadd(" <B>ID:"+elems[z].id+" </B><br>");
						elemadd=true;
					}
				}else{
					if(elems[z].getAttribute('name')==this.pausaronelem_identificadordeelementos){
						//this.debugmsgadd(" <B>NAME:"+elems[z].id+" </B><br>");
						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(){
		//this.debugmsgadd("metapos, "+this.pausaronelem_metaactualpos+" scroll "+this.div.scrollTop+"<br> ");
		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;
			this.debugmsgadd("metaalcanzada, "+this.div.scrollTop+"<br> ");
			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_movetonextmetaH=function(){
		//this.debugmsgadd("metapos, "+this.pausaronelem_metaactualpos+" scroll "+this.div.scrollTop+"<br> ");
		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;
			this.debugmsgadd("metaalcanzada, "+this.div.scrollLeft+"<br> ");
			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(){
		if (!this.pausaronelem_detenerdespuesdeelems){
			setTimeout(this.idobj+".pausaronelem_reanudar();",this.pausaronelem_tiempo);
		}
	}
	this.pausaronelem_reanudar=function(){
		this.pausaronelem_enpausa=false;
	}
	this.invertirsentido=function(){
		this.scrollamountTop=this.scrollamountTop*(-1);	
		this.scrollamountLeft=this.scrollamountTop*(-1);
		this.pausaronelem_indexvector=this.pausaronelem_indexvector*(-1);
	}

	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.debugmsgadd("CHOCO TOP, "+tiempochoque+"ms "+this.scrollamountTop+" "+this.scrolltime+" "+this.div.scrollTop+"<br> ");
			}
			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.debugmsgadd("CHOCO LEFT<br> ");
		}
	}
	this.doscroll=function(){
		if (this.doscrollok()){
			
			if ((!this.stopbyMO)&&(!this.pausaronelem_enpausa)){
				if (this.scrollamountTop!=0){
					this.doscrollV();
				}
				if (this.scrollamountLeft!=0){
					this.doscrollH();
				}
				this.debugmsgwrite();
			}
			
			if (this.repetir){
				this.setTimeoutdoscroll();
			}
		}
	}
	
	this.setTimeoutdoscroll=function(){
		setTimeout(this.idobj+".doscroll();",this.scrolltime);
	}
	this.setstoponMO=function(){
		this.stopbyMO = true;
	}
	this.setdoonMOUT=function(){
		if (this.stopbyMO){
			this.stopbyMO = false;
			//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;
		}
	}
	

}