//fpv=21
function fp_ajax_multicont_loader(_parent){
	this.reqargs=new Object;
	this.parent=_parent;
	this.unsetargs_on_load=true;
	this.loading=false;
	this.loaded=false;
	this.responsedata=false;
	this.get_tp_items_nodes=function(tp){
		if(!tp){
			return false;	
		}
		if(typeof( this.responsedata)!="object"){
			
			if(!this.responseXML){
				return false;	
			}
			this.responsedata=new Object;
			var roots=this.responseXML.getElementsByTagName('root');
			if(!roots){
				return false;
			}
			if(!roots[0]){
				return false;
			}
			var _root=roots[0];
			var _i=0;
			var _tp;
			for (_i=0;_i<_root.childNodes.length;_i++){
				if (_root.childNodes[_i].nodeType == 1){
					_tp=_root.childNodes[_i].nodeName;
					if(_tp){
						this.responsedata[_tp]=this.set_items_nodes(_root.childNodes[_i]);
					}
				}
			}
		}
		if(this.responsedata[tp]){
			return this.responsedata[tp];
		}
	}
	this.set_items_nodes=function(node){
		if(!node.childNodes){
			return false;	
		}
		var _r=new Object;
		var _i=0;
		var id;
		for (_i=0;_i<node.childNodes.length;_i++){	
			if (node.childNodes[_i].nodeType == 1){
				if (node.childNodes[_i].nodeName == "item"){
					id=node.childNodes[_i].getAttribute('id');
					if(id){
						_r[id]=	node.childNodes[_i];
					}
				}
			}
		}
		return _r;
	}
	this.get_item_node=function(id,tp){
		var nodes =this.get_tp_items_nodes(tp);
		if(nodes){
			return nodes[id];	
		}
	}
	this.get_data_from_node=function(node,cod){
		if(!node){
			return false;	
		}
		if(!cod){
			return false;	
		}
		var chnodes=node.getElementsByTagName(cod);
		if(!chnodes){
			return false;	
		}
		if(!chnodes.item(0)){
			return false;	
		}
		var _r=fp_ajax_xml2obj_item(chnodes.item(0));
		return _r;
	}
	this.get_elem_html=function(cod,tp,contcod){
		if(!contcod){
			contcod="cont";	
		}
		if(!tp){
			tp="fpcont";	
		}
		var node=this.get_item_node(cod,tp);
		if(node){
			
			var _html=this.get_data_from_node(node,contcod);	
			if(_html){
				return _html;
			}
			 
		}
		return "";
	}
	this.send_req=function(){
		this.responsedata=false;
		this.unset_req();
		var url=this.get_url();
		
		if(!url){
			return false;	
		}
		if(this.parent){
			this.parent.on_ajax_multicont_sent();	
		}
		this.req=fp_ajax_crear_Request();
		var _this=this;
		this.req.onreadystatechange = function (){
			if (_this.req.readyState == 4) {
				if (_this.req.status == 200) {
					_this.onreqresponse();
				}
			}
		}
		this.loading=true;
		this.loaded=false;
		this.req.open("GET", this.url, true);
		this.req.send(null);

	}
	this.get_url=function(){
		this.url="";
		if(typeof(this.reqargs)!="object"){
			return false;
		}
		this.url= fp_get_modoutput_url("jsoptim","multicont",this.reqargs);
		return this.url;
	}
	this.onreqresponse=function(){
		this.loading=false;
		this.loaded=true;

		this.responseText=	this.req.responseText;
		this.responseXML=	this.req.responseXML;
		if(this.unsetargs_on_load){
			this.unset_reqargs();	
		}
		if(this.parent){
			this.parent.on_ajax_multicont_loaded(this);
		}
	}
	this.addreq_bk=function(idbk){
		if(!idbk){
			return false;
		}
		this.add_req_arg(idbk,"bks["+idbk+"][idbk]");
		return true;
	}
	this.addreq_cont=function(id,pl,asmain){
		if(!id){
			return false;
		}
		this.add_req_arg(id,"cont["+id+"][id]");
		if(pl){
			this.add_req_arg(pl,"cont["+id+"][pl]");	
		}
		if(asmain){
			this.add_req_arg("true","cont["+id+"][asmain]");	
		}
		return true;
	}
	this.addreq_pl=function(cod){
		if(!cod){
			return false;
		}
		this.add_req_arg(cod,"pl["+cod+"][cod]");
		return true;
	}
	this.add_req_arg=function(val,cod){
		if(!cod){
			return false;
		}
		if(typeof(this.reqargs)!="object"){
			this.reqargs=new Object;	
		}
		this.reqargs[cod]=val;
		return true;
	}
	this.unset_req=function(){
		if(this.req){
			this.req.abort();
			this.req=false;
		}
	}
	this.unset_reqargs=function(){
		this.reqargs=new Object;	
	}
	this.unset_all=function(){
		this.unset_req();
		this.unset_reqargs();
	}
	
}




function fp_ajax_input_set_user_id_by_mail_inputmail_obj(inputmail,inputuserid,modo){
	var mail=inputmail.value;
	var inputuser=fp_get_element_by_id(inputuserid);
	if(inputuser){
		return 	fp_ajax_input_set_user_id_by_mail(mail,inputuser,modo);
	}
}
function fp_ajax_input_set_user_id_by_mail(mail,inputuser,modo){
	if(!mail){
		return false;	
	}
	if(!modo){
		modo="id";	
	}
	inputuser.value="";
	var params=new Object;
	params.mail=mail;
	params.modo=modo;
	
	var ourl= fp_get_modoutput_url("usuarios","getuserbymail",params);
	
	var ajaxl=new fp_ajax_launcher(ourl);
	ajaxl.setHtmlElemDest(inputuser);
	ajaxl.destIsInput=true;
	ajaxl.addOnLoadAcction(function(){ajaxl.setDestValAsResp()});
	ajaxl.run();

	
}


function fp_ajax_postloaderjs(){
	this.scriptsondemandloaded=new Object();
	this.scriptsondemandloading=new Object();
	this.jsdoacumulado="";
	this.afterloadondemand=new Array();
	this.afterloadondemand_ejecutar=function(){
		var listo;
		var scriptcod;
		for (var i=0;i<this.afterloadondemand.length;i++){
			if(!this.afterloadondemand[i].done){
				listo=true;
				for (scriptcod in this.afterloadondemand[i].ondemandscripts){
					if(!this.scriptsondemandloaded[scriptcod]){
						listo=false;	
					}
				}
				if(listo){
					this.afterloadondemand[i].done=true;
					this.ejecutarjs(this.afterloadondemand[i].script);	
				}
			}
		}
	}
	this.ejecutarjs_bk_reloadcont=function(){
		this.jsdoacumulado="";
		this.doafterloadondemandobjacumulado=new Object;
		this.doafterloadondemandobjacumulado.ondemandscripts=new Object;
		this.doafterloadondemandobjacumulado.doafter=false;
		for (var elem in fp_bk_reloadcont){
			this.ejecutar_js_from_elemid(fp_bk_reloadcont[elem],true);
		}
		this.ejecutarjsofregisterafterloadondemand(this.jsdoacumulado,this.doafterloadondemandobjacumulado);
	}
	this.scriptsondemandloaded_register=function(script){
		this.scriptsondemandloaded[script]=true;
		this.afterloadondemand_ejecutar();
	}
	this.ejecutar_js_from_elem=function(obj,modoacumular){
		var jsdo=false;
		var jsdoexiste=false;
		var doafterloadondemand=false;
		var doafterloadondemandobj=new Object;
		doafterloadondemandobj.ondemandscripts=new Object;
		doafterloadondemandobj.doafter=false;
		if (obj){
			var elems=obj.getElementsByTagName("script");
			if (elems){
				if (elems.length>0){
					var z;
					jsdo="";
					var scriptondemand;
					for (z=0;z<elems.length;z++){
						scriptondemand=elems[z].getAttribute("fp_script_ondemand");
						//alert(scriptondemand+ elems[z].innerHTML);
						if(scriptondemand){
							doafterloadondemand=true;
							doafterloadondemandobj.ondemandscripts[scriptondemand]=true;
							doafterloadondemandobj.doafter=true;
							this.load_scriptondemand(scriptondemand,elems[z].innerHTML);
							if(modoacumular){
								this.doafterloadondemandobjacumulado.ondemandscripts[scriptondemand]=true;
								this.doafterloadondemandobjacumulado.doafter=true;
							}
							
						}else{
							jsdo=jsdo+elems[z].innerHTML+"\n";
							//alert(jsdo);
							jsdoexiste=true;
						}
					}
				}
				
			}
		}
		if(jsdoexiste){
			if(modoacumular){
				this.jsdoacumulado=	this.jsdoacumulado+"\n"+jsdo;
			}else{
				this.ejecutarjsofregisterafterloadondemand(jsdo,doafterloadondemandobj);
			}
		}
		//return (jsdo);
	}
	this.ejecutarjsofregisterafterloadondemand=function(jsdo,doafterloadondemandobj){
		if(doafterloadondemandobj.doafter){
			doafterloadondemandobj.script=jsdo;	
			this.afterloadondemand.push(doafterloadondemandobj);
			this.afterloadondemand_ejecutar();
		}else{
			this.ejecutarjs(jsdo);	
		}
	}
	this.ejecutar_js_from_elemid=function(id,modoacumular){
		var obj=fp_get_element_by_id_siexiste(id);
		if (obj){
			return this.ejecutar_js_from_elem(obj,modoacumular);
		}
		
	}
		
	this.ejecutarjs=function(script){
		var jsdodivelement=document.createElement("SCRIPT");
		jsdodivelement.language="javascript";
		jsdodivelement.type="text/javascript";
		jsdodivelement.text=script;
		//alert(script);
		document.body.appendChild(jsdodivelement);
	}
	this.load_scriptondemand=function(script,cont){
		if(this.scriptsondemandloaded[script]){
			return true;
		}
		if(this.scriptsondemandloading[script]){
			return true;
		}
		this.scriptsondemandloading[script]=true;
		var jsdodivelement=document.createElement("SCRIPT");
		jsdodivelement.src="/facipub/java/ondemand/"+script+".js";
		jsdodivelement.language="javascript";
		jsdodivelement.type="text/javascript";
		if(!cont){
			cont="";	
		}
		jsdodivelement.text=cont;
		document.body.appendChild(jsdodivelement);
		//alert(script);	
	}
}
var fp_ajax_postloaderjs_man=new fp_ajax_postloaderjs();
//var isIE = false;
var fp_ajax_loader;
fp_ajax_loader="<div align='center'><img src='"+fp_url_get()+"img/loader.gif'></div>";
function fp_ajax_crear_Request() {
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}else{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}
function fp_ajax_launcher(url){
	this.url=url;
	this.htmlelemdest=false;
	this.onloadActionList=new Array;
	this.noLoadingDisplay=false;
	this.autoLoaderSize=true;

	
	this.donextactionobj=false;
	this.loadingDisplay=fp_ajax_loader;
}
fp_ajax_launcher.prototype.buildReq=function(){
	this.req=fp_ajax_crear_Request();
	var _this=this;
	this.req.onreadystatechange = function(){_this.onAjaxLoad()};

}
fp_ajax_launcher.prototype.setHtmlElemDest=function(o){
	if(o){this.htmlelemdest=o;}
}
fp_ajax_launcher.prototype.setHtmlElemDestByID=function(id){
	this.setHtmlElemDest(fp_get_element_by_id(id));
}
fp_ajax_launcher.prototype.doLoadingDisplay=function(){
	if(!this.htmlelemdest){
		return false;	
	}
	if(this.destIsInput){
		return false;	
	}
	
	if(this.noLoadingDisplay){
		return false;	
	}
	
	var contLD=fp_ajax_get_loader_on_contenedor(this.htmlelemdest);
	
	if(contLD){
		if(contLD=="_fp_none_"){
			return false;	
		}else{
			this.loadingDisplay=contLD;
		}
	}
	if(!this.loadingDisplay){
		return false;	
	}
	var thisloaderHTML="";
	if(this.autoLoaderSize){
		var h=this.htmlelemdest.clientHeight;
		var w=this.htmlelemdest.clientWidth;
		thisloaderHTML="<div style='height:"+h+"px; width:"+w+"px;  overflow:hidden;'>";
		thisloaderHTML=thisloaderHTML+"<table cellpadding='0' cellspacing='0' border='0' width='"+w+"' height='"+h+"'>";
		thisloaderHTML=thisloaderHTML+"<tr><td  align='center' valign='middle'>";
		thisloaderHTML= thisloaderHTML+this.loadingDisplay;
		thisloaderHTML=thisloaderHTML+"</td></tr></table></div>";
	}else{	
		thisloaderHTML= this.loadingDisplay;
	}
	this.htmlelemdest.innerHTML =thisloaderHTML;
}
fp_ajax_launcher.prototype.addOnLoadAcction=function(fnc){
	if(fnc){
		this.onloadActionList.push(fnc);
	}
}
fp_ajax_launcher.prototype.onAjaxLoad=function(){
	if(this.req.readyState == 4){
		var fnc;
		for (var i=0;i<this.onloadActionList.length;i++){
			fnc=this.onloadActionList[i];
			if(fnc){
				if ( fnc != undefined ) {
					if(typeof(fnc)=="string"){
						eval(fnc);
					}else{
						fnc();
					}
				}
			}
		}
		if(this.donextactionobj){
			this.donextactionobj.donextaction();	
		}
	}
	
}
fp_ajax_launcher.prototype.setNextactionobj=function(donextactionobj){
	this.donextactionobj=donextactionobj;	
}
fp_ajax_launcher.prototype.run=function(){
	this.doLoadingDisplay();
	if(!this.url){
		return false;	
	}
	
	this.buildReq();
	this.req.open("GET", this.url, true);
	this.req.send(null);
}
fp_ajax_launcher.prototype.setDestValAsResp=function(){
	if(this.htmlelemdest){
		
		this.htmlelemdest.value=this.req.responseText;
	}
}
fp_ajax_launcher.prototype.evalResp=function(){
	eval(this.req.responseText);
}
fp_ajax_launcher.prototype.alertResp=function(){
	alert(this.req.responseText);
}
fp_ajax_launcher.prototype.setDestInnerHTMLAsResp=function(){
	if(this.htmlelemdest){
		this.htmlelemdest.innerHTML=this.req.responseText;
	}
}
fp_ajax_launcher.prototype.setDestVarAsResp=function(){
	if(this.varnameDest){
		eval(this.varnameDest+'="'+this.req.responseText+'"' );
	}
}
fp_ajax_launcher.prototype.execJSscriptonDest=function(){
	if(this.htmlelemdest){
		fp_ajax_postloaderjs_man.ejecutar_js_from_elem(this.htmlelemdest);
	}
}


function fp_ajax_post_load_elem() {
	var e=document.getElementsByTagName("fp_post_load_elem");
	var pn;
	var url;
	var sinloader;
	if(e){
		for (var i=0;i<e.length;i++){
			if(e[i].getAttribute('loading')=="false"){
				url=e[i].getAttribute('url');
				e[i].setAttribute('loading','true');
				sinloader=false;
				if(e[i].getAttribute('noloaderimg')){
					sinloader=true;
				}
				pn=e[i].parentNode;
				//alert("mas");
				if(pn.childNodes.length>1){
					//alert("mas");
					var npn=document.createElement("span");
					pn.replaceChild(npn, e[i]);
					pn=npn;
					pn.style["display"]="";
				}
				pn.innerHTML="";
				if(url){
					fp_ajax_cargaURL_onelem(url,pn,sinloader,false,function(){fp_ajax_post_load_elem()},true);
				}
			}
		}
	}
	fp_accionesbk_doauto_on_parents();
	
}
function fp_ajax_get_loader_on_contenedor(contenedor){
	if(!contenedor){
		return false;	
	}
	var loaderoncont=contenedor.getAttribute("ajaxloader");
	if(	loaderoncont){
		if(	loaderoncont=="def"){
			return false;
		}else if(	loaderoncont=="none"){
			return "_fp_none_";
		}else if (	loaderoncont=="img"){
			var loaderoncontsrc=contenedor.getAttribute("ajaxloaderimg");
			if(loaderoncontsrc){
				return "<img src='"+loaderoncontsrc+"' align='center'>";
			}
		}else if (	loaderoncont=="txt"){
			var loaderonconttxt=contenedor.getAttribute("ajaxloadertxt");
			if(loaderonconttxt){
				return loaderonconttxt;
			}
		}
	}
	return false;
	
}
function fp_ajax_cargaURL(url,destino,metodo,onload,sinloader,donextactionobj,ejecutarjs) {
	var a=new fp_ajax_launcher(url);
	if ((metodo=='cont')||(metodo=='contandrunjs')||(metodo=='valor')){
		a.setHtmlElemDestByID(destino);
		if(metodo=='valor'){
			a.destIsInput=true;	
		}
	}
	a.noLoadingDisplay=sinloader;
	if (metodo=='cont'){
		a.addOnLoadAcction(function(){a.setDestInnerHTMLAsResp()});
	}
	if (metodo=='valor'){
		a.addOnLoadAcction(function(){a.setDestValAsResp()});
	}
	if (metodo=='alert'){
		a.addOnLoadAcction(function(){a.alertResp()});
	}
	if (metodo=='varval'){
		a.varnameDest=destino;
		a.addOnLoadAcction(function(){a.setDestVarAsResp()});
	}
	if (metodo=='eval'){
		a.addOnLoadAcction(function(){a.evalResp()});
	}
	a.addOnLoadAcction(onload);
	if(ejecutarjs){
		a.addOnLoadAcction(function(){a.execJSscriptonDest()});
	}
	a.setNextactionobj(donextactionobj);
	a.run();
}
function fp_ajax_cargaURL_onelem(url,contenedor,sinloader,donextactionobj,onload,ejecutarjs) {
	var a=new fp_ajax_launcher(url);
	a.setHtmlElemDest(contenedor);
	a.noLoadingDisplay=sinloader;
	a.addOnLoadAcction(function(){a.setDestInnerHTMLAsResp()});
	a.addOnLoadAcction(onload);
	if(ejecutarjs){
		a.addOnLoadAcction(function(){a.execJSscriptonDest()});
	}
	a.setNextactionobj(donextactionobj);
	a.run();
}
var fp_ajax_secuencia=function(nombre,sinloader){
	this.nombre=nombre;
	this.sinloader=sinloader;
	this.numelems=0;
	this.elemactual=0;
	this.elems=new Array();
	this.addelem=function(url,destino,metodo){
		this.elems[this.numelems]=new fp_ajax_secuencia_elem(url,destino,metodo);
		this.numelems++;
	}
	this.ejecutar=function(){
		if (this.elemactual<this.numelems){
			elemejecutar=this.elems[this.elemactual];
			this.elemactual++;
			this.setporcentaje();
			fp_ajax_cargaURL(elemejecutar.url,elemejecutar.destino,elemejecutar.metodo,this.nombre+'.ejecutar()',this.sinloader)
		}
	}
	this.getindicadores=function(){
		if (this.indicador){
			this.indicadorobj=fp_get_element_by_id_siexiste(this.indicador);
		}
		if (this.indicadortxt){
			this.indicadortxtobj=fp_get_element_by_id_siexiste(this.indicadortxt);
		}
	}

	this.setporcentaje=function(){
		if (this.numelems>0){
			this.porcentaje=parseInt(this.elemactual/this.numelems*100);
			if (this.indicadortxtobj){
				this.indicadortxtobj.innerHTML=this.porcentaje+"%";
			}
			if (this.indicadorobj){
				this.indicadorobj.style.width=this.porcentaje+"%";
			}
		}
	}

}
var fp_ajax_secuencia_elem=function(url,destino,metodo){
	this.url=url;
	this.destino=destino;
	this.metodo=metodo;
	
}


