// requiere avx_ajax.js
// requiere avx_cookies.js
// requiere avx_msg.js

	

function refreshAcciones() {
	var selectorAcc="<select id='acciones' name='acciones' class='AVXLIST_selector' onChange='cambioResXPag(this.value)' style='width:90px;'>";
	selectorAcc+="</select>";
	changeDivContent("lst_celda_acciones","<img src='"+listLibPath+"img/ico_acciones.gif' width='17' height='23' border='0' alt='Acciones' title='Acciones' style='margin-left:5px;'/>"+selectorAcc);
}
	
function refreshAccionesDis() {
	var selectorAcc="<select id='resultados' name='resultados' class='AVXLIST_selector' onChange='cambioResXPag(this.value)' style='width:50px;' disabled></select>";
	changeDivContent("lst_celda_acciones","<img src='"+listLibPath+"img/ico_acciones.gif' width='17' height='23' border='0' alt='Acciones' title='Acciones' />"+selectorAcc);
}

function listSelAll(selAll) {
	var campos=document.listForm.elements;
	for (i=0;i<campos.length;i++) {
		if(campos[i].name.substring(0,6)=="selId_") {
			campos[i].checked=selAll.checked;
		}
	}
}



function doAction(params) {
  var parametros=params.split(";");
  formURI=parametros[0];
  if (parametros.length>2) { formURI+=";"+parametros[2]; }
  var http = getHTTPObject();
  http.open("POST", formURI, true);
  http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.onreadystatechange = function() {
    if (http.readyState == 4) { 
      refreshList();
    }
  }
  http.send("x="+parametros[1]+getParams());
  changeDivContent("lst1_contenido","");
  actualizando=true;
}

function listOrder(uri, i, o) {
  var uris=uri.split(";");
  ses="";
  if (uris.length>1) { ses=";"+uris[1]; }  
  var http = getHTTPObject();
  http.open("GET", uris[0]+"&i="+i+"&o="+o, true);
  http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.onreadystatechange = function() {
    if (http.readyState == 4) { 
      refreshList();
    }
  }
  http.send(null);
  changeDivContent("lst1_contenido","");
  actualizando=true;
}


function getParams() {
	var campos=document.listForm.elements;
	query="";
	for (i=0;i<campos.length;i++) {
		if(campos[i].name.substring(0,6)=="selId_") {
			if (campos[i].checked) {
			query+="&"+campos[i].name+"="+campos[i].value;
			}
		}
	}
	return query;
}


// NUEVOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo

function AvxListado(id, pag, ord, sen, res, vis, busq) {

	if (!window.avxListIndex) { window.avxListIndex = 0; }
	if (!window.avxListObjects) { window.avxListObjects = new Array(); }
	this.index = avxListIndex++;
	avxListObjects[this.index] = this;

	this.id=id;
	this.target=id+"_contenido";
	
	this.pag=pag;
	this.ord=ord;
	this.sen=sen;
	this.res=res;
	this.vis=vis;
	this.busq=busq;
	this.ordAct=0; //orden actual inicial
	this.tot=0; //totales inicial

	this.msgFound0="No se encontr&oacute; ning&uacute;n resultado.";
	this.msgFound1="Se encontr&oacute; un resultado.";
	this.msgFoundN="Se encontraron %T resultados.";

	this.listURI="";
	this.itemsURI="";
	this.ckPath="";
	this.recordar=true;
	this.setRecordar= function (val) { this.recordar= val; };
	
	this.camposOrden=new Array();
	this.resXpag=new Array();
	this.vistas=new Array();

	this.filters=new Array();

	this.actMsg=null;
	this.paginacionCtr=null;
	this.resXpagCtr=null;
	this.ordenacionCtr=null;
	this.vistasCtr=null;
	this.busquedaCtr=null;


// Funciones configuracion

	this.changeMsgFound0= function (msg) { this.msgFound0 = msg; };
	this.changeMsgFound1= function (msg) { this.msgFound1 = msg; };
	this.changeMsgFoundN= function (msg) { this.msgFoundN = msg; };

	this.setListURI= function (uri) { this.listURI = uri; };
	this.setItemsURI= function (uri) { this.itemsURI = uri; };
	this.setCkPath= function (path) { this.ckPath= path; };
	
	this.setCamposOrden= function (arrai) { this.camposOrden=arrai; };
	this.setResXpag= function (arrai) { this.resXpag=arrai; };
	this.setVistas= function (arrai) { this.vistas=arrai; };

	this.setFilters= function (filts) { this.filters= filts; };

	this.setActMsg= function (obj) { this.actMsg= obj; };
	this.setPaginacionCtr= function (obj) { this.paginacionCtr= obj; };
	this.setResXpagCtr= function (obj) { this.resXpagCtr= obj; };
	this.setOrdenacionCtr= function (obj) { this.ordenacionCtr= obj; };
	this.setVistasCtr= function (obj) { this.vistasCtr= obj; };
	this.setBusquedaCtr= function (obj) { this.busquedaCtr= obj; };

	
// Funciones operacion

	this.start= function () { this.update(); };
	this.end= function () { };
	
	this.update= function () {
		//changeDivContent(this.target,"");
		this.actMsg.start();

		var listObj=this;
		var http = getHTTPObject();
		http.open("GET", this.listURI+"&pag="+this.pag+"&res="+this.res+"&ord="+this.ord+"&sen="+this.sen+"&vis="+this.vis+"&busq="+escape(this.busq)+"&"+this.getFilterString(), true);
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		http.onreadystatechange = function() {
			if (http.readyState == 4) { 
				listObj.contentArrive(http.responseText); 
			}
		}
		http.send(null);
		return false;
	};
				
	// llego la respuesta de la peticion
	this.contentArrive=	function (content) {
		if (this.recordar) {
			setCookie(this.id+"_ck", this.pag+"/"+this.res+"/"+this.ord+"/"+this.sen+"/"+this.vis+"/"+this.busq+"/"+this.getFilterStringCookie()+"/", 10, this.ckPath);
		}
		var data=content.split("\n");
		var divContent="";
		var ok=true;
		for (i=0;i<data.length;i++) {
			linea=data[i];
			if (linea.substring(0,15)=="<!--#LISTPARAM#") {
				var campos=linea.split("#");
				this.tot=campos[2];
				if (this.tot==-1) { // Error
					ok=false;
					actualizando=false;
					actMsgStop()
					msg0="<span style='color:"+actCol+";font-weight:bold;'>ERRROR</span>";
					changeDivContent("lst_celda_info_txt","<div id='lst_celda_info_txt_actualizando'>"+msg0+"</div>");
					//document.location.replace(unescape(document.location.pathname));
				}
			} else {
				divContent+=data[i];
			}
		}
		if (ok) {
			changeDivContent(this.target,divContent);
			this.refreshInfo();
			if (this.paginacionCtr!=null) {
				this.paginacionCtr.update(this.index, this.id+"_paginacionTop", this.tot, this.pag, this.resXpag[this.res]);
				this.paginacionCtr.update(this.index, this.id+"_paginacionBottom", this.tot, this.pag, this.resXpag[this.res]);
			}
			if (this.resXpagCtr!=null) {
				this.resXpagCtr.update(this.index, this.id+"_resXpagTop", this.tot, this.res, this.resXpag);
				this.resXpagCtr.update(this.index, this.id+"_resXpagBottom", this.tot, this.res, this.resXpag);
			}
			if (this.ordenacionCtr!=null) {
				this.ordenacionCtr.update(this.index, this.id+"_ordenacionTop", this.tot, this.ord, this.sen, this.camposOrden);
				this.ordenacionCtr.update(this.index, this.id+"_ordenacionBottom", this.tot, this.ord, this.sen, this.camposOrden);
			}
			if (this.vistasCtr!=null) {
				this.vistasCtr.update(this.index, this.id+"_vistasTop", this.tot, this.vis, this.vistas);
				this.vistasCtr.update(this.index, this.id+"_vistasBottom", this.tot, this.vis, this.vistas);
			}
			if (this.busquedaCtr!=null) {
				this.busquedaCtr.update(this.index, this.id+"_busquedaTop", this.tot, this.busq);
				this.busquedaCtr.update(this.index, this.id+"_busquedaBottom", this.tot, this.busq);
			}
			for (i=0;i<this.filters.length;i++) {
				var filter=this.filters[i];
				filter.update(this.index, this.id+"_filtro"+i+"Top", this.tot, i);
				filter.update(this.index, this.id+"_filtro"+i+"Bottom", this.tot, i);
			}			

			this.end();
			this.actMsg.stop();
			//this.refreshAcciones();
			//this.refreshFiltros();

		}
		return false;
	};


	// actualiza la informacion con el numero de resultados encontrados
	this.refreshInfo= function () {
		if (this.tot==0) {
			changeDivContent(this.actMsg.target,this.msgFound0);
		} else if (this.tot==1) {
			changeDivContent(this.actMsg.target,this.msgFound1);
		} else {
			var msgPrev=this.msgFoundN.substring(0,this.msgFoundN.indexOf("%T"));
			var msgPost=this.msgFoundN.substring(this.msgFoundN.indexOf("%T")+2);
			changeDivContent(this.actMsg.target,msgPrev + this.tot + msgPost);
		}
	}


	// devuelve los valores de los filtros en una cadena para la url
	this.getFilterString= function () {
		var txt="";
		for (i=0;i<this.filters.length;i++) {
			txt+="f"+i+"="+this.filters[i].activo+"&";
		}
		return txt;
	}

	// devuelve los valores de los filtros en una cadena para la cookie
	this.getFilterStringCookie= function () {
		var txt="";
		for (i=0;i<this.filters.length;i++) {
			txt+=this.filters[i].activo+"/";
		}
		return txt;
	};
		

}




function AvxListPaginacion(){
	this.etiqueta=null;
	this.anchuraCtr=100;
	this.botAnterior="&lt;";
	this.botSiguiente="&gt;";
	this.botAnteriorDis="&nbsp;";
	this.botSiguienteDis="&nbsp;";
	
	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };
	this.setBotAnterior= function (txt) { this.botAnterior = txt; };
	this.setBotSiguiente= function (txt) { this.botSiguiente = txt; };
	this.setBotAnteriorDis= function (txt) { this.botAnteriorDis = txt; };
	this.setBotSiguienteDis= function (txt) { this.botSiguienteDis = txt; };
	
	this.update=function(indexObj, target, tot, pag, resultXpag) {
		if (document.getElementById(target)!=null) {
			if (tot>resultXpag) {
				var totPaginas=Math.floor(tot/resultXpag);
				if (tot%resultXpag) { totPaginas++; }
				var selector="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' onChange='cambioPagina("+indexObj+",this.value)' style='width:"+this.anchuraCtr+"px;'>";
				for (i=0;i<totPaginas;i++) {
					var topeSup=(i+1)*resultXpag;
					if (topeSup>tot) { topeSup=tot; }
					activa="";
					if (pag==(i+1)) { activa=" selected"; }
					selector+="<option"+activa+" value='"+(i+1)+"'>";
					selector+="Pag. "+(i+1)+": "+ (i*resultXpag+1) + " a " + topeSup ;
					selector+="</option>";
				}
				selector+="</select>";
				var botAnteriorTxt=this.botAnteriorDis;
				var botSiguienteTxt=this.botSiguienteDis;
				if (pag>1) {botAnteriorTxt="<a href='javascript:void(null)' onClick='paginaAnterior("+indexObj+");return false;'>"+this.botAnterior+"</a>"; }
				if (pag<totPaginas) {botSiguienteTxt="<a href='javascript:void(null)' onClick='paginaSiguiente("+indexObj+");return false;'>"+this.botSiguiente+"</a>"; }
				var etiq="";
				if (this.etiqueta!=null) { etiq=this.etiqueta; }
				changeDivContent(target,etiq + botAnteriorTxt + selector + botSiguienteTxt);
			} else {
				var paginacion=this.botAnteriorDis;
				paginacion+="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' disabled style='width:"+this.anchuraCtr+"px;'></select>";
				paginacion+=this.botSiguienteDis;
				changeDivContent(target,paginacion);
			}
		}

	}
}


function AvxListResXpag(){
	this.etiqueta="Resultados por página:";
	this.anchuraCtr=50;
	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };
	this.update=function(indexObj, target, tot, res, resXpagArr) {
		if (document.getElementById(target)!=null) {
			if (tot>0) {
				var selectorRes="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' onChange='cambioResXPag("+indexObj+",this.value)' style='width:"+this.anchuraCtr+"px;'>";
				for (i=0;i<resXpagArr.length;i++) {
					activa="";
					if (res==i) { activa=" selected"; }
					selectorRes+="<option"+activa+" value='"+i+"'>";
					selectorRes+=resXpagArr[i];
					selectorRes+="</option>";
				}
				selectorRes+="</select>";
				changeDivContent(target, this.etiqueta + selectorRes);
			} else {
				var selectorRes="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' disabled style='width:"+this.anchuraCtr+"px;'>";
				selectorRes+="</select>";
				changeDivContent(target, this.etiqueta + selectorRes);
			}
		}
	}
}


function AvxListOrdenacion(){
	this.etiqueta="Orden:";
	this.anchuraCtr=80;
	this.botAscendente="/\\";
	this.botDescendente="\\/";
	this.botAscendenteOn="/\\";
	this.botDescendenteOn="\\/";


	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };
	this.setBotAscendente= function (txt) { this.botAscendente = txt; };
	this.setBotDescendente= function (txt) { this.botDescendente = txt; };
	this.setBotAscendenteOn= function (txt) { this.botAscendenteOn = txt; };
	this.setBotDescendenteOn= function (txt) { this.botDescendenteOn = txt; };
	
	this.update=function(indexObj, target, tot, ord, sen, camposOrdenArr) {
		if (document.getElementById(target)!=null) {
			if (tot>0) {
				var selectorOrden="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' onChange='cambioOrden("+indexObj+",this.value)' style='width:"+this.anchuraCtr+"px;'>";
				for (i=0;i<camposOrdenArr.length;i++) {
					activa="";
					if (ord==i) { activa=" selected"; }
					selectorOrden+="<option"+activa+" value='"+i+"'>";
					selectorOrden+=camposOrdenArr[i];
					selectorOrden+="</option>";
				}
				selectorOrden+="</select>";
				var sentidoAsc="<a href='javascript:cambioSentido("+indexObj+",0)'>"+this.botAscendente+"</a>";
				var sentidoDes="<a href='javascript:cambioSentido("+indexObj+",1)'>"+this.botDescendente+"</a>";
				if (sen==0) { sentidoAsc=this.botAscendenteOn;}
				if (sen==1) { sentidoDes=this.botDescendenteOn;}
				changeDivContent(target, this.etiqueta+selectorOrden+sentidoAsc+sentidoDes);
			} else {
				var selectorOrden="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' disabled style='width:"+this.anchuraCtr+"px;'></select>";
				changeDivContent(target,this.etiqueta+selectorOrden+this.botAscendente+this.botDescendente);
			}
		}
	}
}



function AvxListVistas(){
	this.etiqueta="Orden:";
	this.anchuraCtr=50;
	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };
	this.update=function(indexObj, target, tot, vis, vistasArr) {
		if (document.getElementById(target)!=null) {
			if (tot>0) {
				var selectorVistas="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' onChange='cambioVista("+indexObj+",this.value)' style='width:"+this.anchuraCtr+"px;'>";
				for (i=0;i<vistasArr.length;i++) {
					activa="";
					if (vis==i) { activa=" selected"; }
					selectorVistas+="<option"+activa+" value='"+i+"'>";
					selectorVistas+=vistasArr[i];
					selectorVistas+="</option>";
				}
				selectorVistas+="</select>";
				changeDivContent(target,this.etiqueta+selectorVistas);
			} else {
				var selectorVistas="<select id='"+target+"_sel' name='"+target+"_sel' class='AVXLIST_selector' disabled style='width:"+this.anchuraCtr+"px;'></select>";
				changeDivContent(target,this.etiqueta+selectorVistas);
			}
		}
	}
}


function AvxListBusqueda(){
	this.etiqueta="Buscar:";
	this.botCancelar="X";
	this.anchuraCtr="50";
	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setBotCancelar= function (txt) { this.botCancelar = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };
	
	this.update=function(indexObj, target, tot, busq) {
		if (document.getElementById(target)!=null) {
			var stl=" style='visibility:hidden; display:inline;'";
			if (busq!="") { stl=" style='visibility:visible; display:inline;'" }
			var buscador="<input type='text' id='"+target+"_busq' name='"+target+"_busq' value='"+busq+"' class='AVXLIST_input' maxlength='20' onkeypress='if(event.keyCode==13) {filtrar("+indexObj+",\""+target+"\");}' style='width:"+this.anchuraCtr+"px;'/><a href='javascript:filtrar("+indexObj+",\""+target+"\");'>"+this.etiqueta+"</a><div id='"+target+"_cancelar'"+stl+"><a href='javascript:cancelarBusqueda("+indexObj+");'>"+this.botCancelar+"</a></div>"
			changeDivContent(target,buscador);
		}
	}
}



function AvxListFiltro(etiqueta, opciones, activo, anchura) {
	this.etiqueta=etiqueta;
	this.anchuraCtr=(anchura!=null)?anchura:80;
	this.opciones=opciones;
	this.activo=activo;
	this.setEtiqueta= function (txt) { this.etiqueta = txt; };
	this.setAnchuraCtr= function (txt) { this.anchuraCtr= txt; };

	this.update=function(indexObj, target, tot, i) {
		if (document.getElementById(target)!=null) {
			var selectorFiltro="<select id='"+target+"_f"+i+"' name='"+target+"_f"+i+"' class='AVXLIST_selector' onChange='cambioFiltros("+indexObj+","+i+",this.value)' style='width:"+this.anchuraCtr+"px;'>";
			for (j=0;j<this.opciones.length;j++) {
				activa="";
				if (this.opciones[j].value==this.activo) { activa=" selected"; }
				selectorFiltro+="<option"+activa+" value='"+this.opciones[j].value+"'>";
				selectorFiltro+=this.opciones[j].nombre;
				selectorFiltro+="</option>";
			}
			selectorFiltro+="</select>";
			changeDivContent(target,this.etiqueta+selectorFiltro);
		}
	}
}

function AvxListFilterOption(nombre, val) {
	this.nombre=nombre;
	this.value=val;
}




// FUNCIONES PAGINACION
function cambioPagina(index,pag) {
	var listObj=avxListObjects[index];
	listObj.pag=pag;
	listObj.update();
	return false;
}

function paginaSiguiente(index) {
	var listObj=avxListObjects[index];
	listObj.pag++;
	listObj.update();
	return false;
}

function paginaAnterior(index) {
	var listObj=avxListObjects[index];
	listObj.pag--;
	if (listObj.pag<1) {listObj.pag=1;}
	listObj.update();
	return false;
}

// FUNCIONES RESULTADOS POR PAGINA
function cambioResXPag(index,res) {
	var listObj=avxListObjects[index];
	listObj.res=res
	listObj.pag=1;
	listObj.update();
}

// FUNCIONES ORDENACION
function cambioOrden(index,ord) {
	var listObj=avxListObjects[index];
	listObj.ord=ord;
	listObj.pag=1;
	listObj.update();
}

function cambioSentido(index,sen) {
	var listObj=avxListObjects[index];
	listObj.sen=sen;
	listObj.pag=1;
	listObj.update();
}

// FUNCIONES VISTAS
function cambioVista(index,vis) {
	var listObj=avxListObjects[index];
	listObj.vis=vis;
	listObj.update();
}

// FUNCIONES BUSQUEDA
function filtrar(index,target) {
	var listObj=avxListObjects[index];
	listObj.pag=1;
	listObj.busq=document.getElementById(target+"_busq").value;
	listObj.update();
}

function cancelarBusqueda(index) {
	var listObj=avxListObjects[index];
	listObj.pag=1;
	listObj.busq="";
	listObj.update();
}

// FUNCIONES FILTROS
function cambioFiltros(index,id,val) {
	var listObj=avxListObjects[index];
	listObj.pag=1;
	listObj.filters[id].activo=val;
	listObj.update();
}


// FUNCIONES VARIAS

function listClickItem(uri,id) {
	document.location.href=uri+"&tr="+listEscape(id);
}

function listEscape(txt) {
	txt=escape(txt);
	return txt.replace(/\+/g,"%2B");
}
