//---------------------------------------------------------------------------------------
// FICHERO : ajax.js
//---------------------------------------------------------------------------------------
// AUTOR : Alvaro Verdion Malagamba.
//---------------------------------------------------------------------------------------
// DESCRIPCION : Este fichero es la parte cliente JAVASCRIPT del modulo ajax.
//				Consta de varias funciones:
//
//				nuevoAjax: Crea un objeto ajax diferenciando entre IE y el resto
//
//				EnviarFormularioAjax: Recorre un formulario indicado por su id y envia por
//				POST todas las variables al servidor, esperando la respuesta XML.
//
//				LiveSearch: función ideada para relizar "Busqueda Vivas" en las que mientras
//				se va tecleando la busqueda, se va buscando.
//
//				getParamenters: Extrae los valores del todos los campos del formulario
//
//				AppendToSelect,AppendTo y LimpiaSelect: Son funciones comunes para añadir
//				nodos a un elemento de la pagina, como <select> o <p>.
//
//---------------------------------------------------------------------------------------

var Ajax_Activo=false,Ajax_Correcto="",Ajax_Error="",Ajax_Resultado="",Ajax_Extra="",Ajax_Url="",Ajax_Id="",Ajax_Callback="",Ajax_Primera_Pagina="";
var options;

/* Desactivar boton tras hacer click */

function nuevoAjax(){
	var xmlhttp=false;
	try {
	  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (E) {
	   xmlhttp = false;
	  }
	}
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	  xmlhttp = new XMLHttpRequest();
	}
	
	return xmlhttp;
}


function EnviarFormularioAjax(id,callback){
	var formulario=document.getElementById(id);
	var pagina=formulario.action;
	var parameters=getParamenters(id);
	if(callback==""){
		callback="DefaultCallback";
	}
	PeticionAjax(pagina,parameters,callback);
}

function EnviarPaginaAjax(pagina,callback){
	var arr_pagina=new Array();
	var now=new Date();
	if(typeof(pagina)=="string"){
		arr_pagina=pagina.split('?');
	}else if(typeof(pagina)=="object"){
		arr_pagina=pagina.href.split('?');
	}else{
		alert("¡El tipo de objeto no era el esperado en la función 'EnviarPaginaAjax'!");
		return false;
	}
	if(callback==""){
		callback="DefaultCallback";
	}
	var url=arr_pagina[0];
	if(arr_pagina.length>1){
		var parameters=arr_pagina[1]+"&Output=Ajax&time=" + URLencode(now.getTime());
	}else{
		var parameters="Output=Ajax&time=" + URLencode(now.getTime());
	}
	PeticionAjax(url,parameters,callback);
}

function PeticionAjax(pagina,parameters,callback){
	var ajax = nuevoAjax();
	var reloj;

	ajax.open("POST", pagina, true);

	Ajax_Url=pagina+"?"+parameters;
	Ajax_Url=Ajax_Url.replace(/&Output=Ajax&time=[0-9]*/,"");

	var carga = new Image();
	carga.src = "images/wait.gif";
	if(!document.getElementById('reloj')){
		reloj=document.createElement("span");
		reloj.id="reloj";
		d=reloj;
	}else{
		d = document.getElementById('reloj')
	}
	d.innerHTML="";
	d.appendChild(carga);


	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			d.innerHTML="";

			if(ajax.responseXML){
				var elementos = ajax.responseXML.getElementsByTagName("elemento");
				Ajax_Extra = ajax.responseXML.getElementsByTagName("extra")[0];
				if(Ajax_Extra.getAttribute("status")){
					if(Ajax_Extra.getAttribute("status")=="0"){
						Ajax_Error=Ajax_Extra.getAttribute("message");
					}else{
						Ajax_Correcto=Ajax_Extra.getAttribute("message");
					}
				}
				if(elementos.length==0){
					eval(callback+'();');
					Ajax_Correcto="";
					Ajax_Error="";
				}else{
					Ajax_Resultado=elementos;
					eval(callback+'();');
					Ajax_Resultado=new Array();
					Ajax_Correcto="";
					Ajax_Error="";
				}
			}
		}
	}
	ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajax.setRequestHeader("Content-length", parameters.length);
	ajax.setRequestHeader("Connection", "close");
	ajax.send(parameters);
}

function getParamenters(id) {
	var valores=Array(),nombres=Array(),contador=0,strpost="";
	var formulario=document.getElementById(id);
	var now=new Date();

	// CAMPOS DE TIPO INPUT
	var elementos=formulario.getElementsByTagName('input');
	for(var i=0;i<elementos.length;i++){
		if(elementos[i].type=="checkbox"){
			if(elementos[i].checked==true){
				valores[contador]=elementos[i].value;
				nombres[contador]=elementos[i].name;
				contador++;
			}
		}else if(elementos[i].type=="radio"){
			if(elementos[i].checked==true){
				valores[contador]=elementos[i].value;
				nombres[contador]=elementos[i].name;
				contador++;
			}
		}else{
			valores[contador]=elementos[i].value;
			nombres[contador]=elementos[i].name;
			contador++;
		}
	}

	// CAMPOS DE TIPO textarea
	var elementos=formulario.getElementsByTagName('textarea');
	for(var i=0;i<elementos.length;i++){
		valores[contador]=elementos[i].value;
		nombres[contador]=elementos[i].name;
		contador++;
	}

	// CAMPOS DE TIPO select
	var elementos=formulario.getElementsByTagName('select');
	for(var i=0;i<elementos.length;i++){
		if(elementos[i].selectedIndex>-1){
			valores[contador]=elementos[i].options[elementos[i].selectedIndex].value;
			nombres[contador]=elementos[i].name;
			contador++;
		}else{
			contador=elementos.length;
			contador++;
		}
	}

	for(var i=0;i<nombres.length;i++){
		if(i>0){
			strpost+="&";
		}
		strpost+=URLencode(nombres[i])+"="+URLencode(valores[i]);
	}
	if(strpost!=""){
		strpost+="&";
	}
	strpost+="Output=Ajax&time=" + URLencode(now.getTime());
	return strpost;
}


function LiveSearch(idcampo,idform,callback,NumKey){
	var campo=document.getElementById(idcampo);
	var cadena=campo.value;
	if(cadena.length>=NumKey){
		EnviarFormularioAjax(idform,callback);
	}else if(cadena.length==0){
		EnviarFormularioAjax(idform,callback);
	}
}
		
var templates,ids,campos,secuencia;
templates=new Array();
ids=new Array();

function RenderTemplate(unidad){
	var entra=true;
	var campoanterior="NULO";
	var retornable="";
	var mensaje="";
	var mensajecompleto="";
	var arraycondiciones=new Array();
	for(var j=0;j<secuencia.length;j++){
		/*if(entra==false && (tipoanterior=="condicion" || tipoanterior=="otrocaso")){
			
			for(var k=j;k<secuencia.lenght && entra==false;k++){
				if(secuencia[k]['campo']==campoanterior){
					if(secuencia[k]['tipo']=="otrocaso"){
						j=k+1;
						entra=true;
						campoanterior="NULO";
					}else if(secuencia[k]['tipo']=="fincondicion"){
						j=k+1;
						entra=true;
						campoanterior="NULO";
					}
				}
			}
		}*/
		mensaje="";
		if(entra){
			if(secuencia[j]['tipo']=='condicion'){
				operador=secuencia[j]['operador'];
				if(secuencia[j]['campo']!=""){
					if(secuencia[j]['campo'].indexOf("%")==0){
						campo=secuencia[j]['campo'].substring(1);
					}else{
						campo=unidad.getAttribute(secuencia[j]['campo']);
					}
				}else{
					campo="";
				}
				if(secuencia[j]['valor']!=""){
					if(secuencia[j]['valor'].indexOf("%")==0){
						valor=secuencia[j]['valor'].substring(1);
					}else{
						valor=unidad.getAttribute(secuencia[j]['valor']);
					}
				}else{
					valor="";
				}
				if(operador=="=" || operador=="=="){
					if(campo==valor){
						entra=true;
					}else{
						entra=false;
					}
				}else if(operador=="!="){
					if(campo!=valor){
						entra=true;
					}else{
						entra=false;
					}						
				}else if(operador==">"){
					if(campo>valor){
						entra=true;
					}else{
						entra=false;
					}
				}else if(operador=="<"){
					if(campo<valor){
						entra=true;
					}else{
						entra=false;
					}
				}else if(operador==">="){
					if(campo>=valor){
						entra=true;
					}else{
						entra=false;
					}
				}else if(operador=="<="){
					if(campo<=valor){
						entra=true;
					}else{
						entra=false;
					}
				}else if(operador=="<>"){
					if(campo!=valor){
						entra=true;
					}else{
						entra=false;
					}
				}
				arraycondiciones[arraycondiciones.length]=secuencia[j]['campo'];
			}
		}
		if(secuencia[j]['tipo']=='otrocaso'){
			if(entra==false && secuencia[j]['campo']==arraycondiciones[arraycondiciones.length-1]){
				entra=true;
			}else{
				entra=false;
			}
			arraycondiciones[arraycondiciones.length]=secuencia[j]['campo'];
		}else if(secuencia[j]['tipo']=='fincondicion'){
			if(secuencia[j]['campo']==arraycondiciones[arraycondiciones.length-1]){
				entra=true;
			}
			arraycondiciones=ArrayPop(arraycondiciones);
		}


		if(entra){
			if(secuencia[j]['tipo']=='funcion'){
				mensaje=ConvertirValor(secuencia[j]['operador'],unidad.getAttribute(secuencia[j]['campo']),secuencia[j]['param']);
			}else if(secuencia[j]['tipo']=='metodo'){
				mensaje=ConvertirValor(secuencia[j]['operador'],CTE_NULO_CAD,secuencia[j]['param']);
			}else if(secuencia[j]['tipo']=='asignacion'){
				mensaje=unidad.getAttribute(secuencia[j]['campo']);
			}else if(secuencia[j]['tipo']=='texto'){
				mensaje=secuencia[j]['valor'].replace(/\\/g,"");
			}
			mensajecompleto+=mensaje;
		}

		if(entra==false && secuencia[j]['campo']!=""){
			campoanterior=secuencia[j]['campo'];
			tipoanterior=secuencia[j]['tipo'];
		}
	}
	retornable+=mensajecompleto+"\n";
	mensajecompleto="";
	mensaje="";
	return retornable;
}

function ExtraerCampos(template){
	var cadena="",tmptemplate="";
	secuencia=new Array();
	tmptemplate=template;
	tmptemplate=tmptemplate.replace(/\]/g,"@@SEPARA@@");
	tmptemplate=tmptemplate.replace(/\[/g,"@@SEPARA@@");
	cadena=tmptemplate.split("@@SEPARA@@");
	for(var r=0;r<cadena.length;r++){
		elemento=cadena[r];
		accion=new Array();
		if(elemento.length>0 && elemento.charAt(0)==":"){
			operador="";
			if(elemento.indexOf("<")>-1){
				operador+="<";
			}
			if(elemento.indexOf(">")>-1){
				operador+=">";
			}
			if(elemento.indexOf("!=")>-1){
				operador+="!=";
			}else if(elemento.indexOf("==")>-1){
				operador+="==";
			}else if(elemento.indexOf("=")>-1){
				operador+="==";
			}
			campos=elemento.split(operador);
			accion['tipo']="condicion";
			accion['campo']=campos[0].substring(1);
			accion['valor']=campos[1].substring(0);
			accion['operador']=operador;
		}else if(elemento.length>0 && elemento.charAt(0)=="?"){
			campos=elemento.split(operador);
			accion['tipo']="otrocaso";
			accion['campo']=campos[0].substring(1);
		}else if(elemento.length>0 && elemento.charAt(0)=="/"){
			campos=elemento.split(operador);
			accion['tipo']="fincondicion";
			accion['campo']=campos[0].substring(1);
		}else if(elemento.length>0 && elemento.charAt(0)=="="){
			if(elemento.indexOf("{")>-1){
				if(elemento.indexOf("}")>-1){
					operador=elemento.substring(elemento.indexOf("{")+1,elemento.indexOf("}")-elemento.indexOf("{")+1);
					if(operador.indexOf("(")>-1){
						accion['operador']=operador.substring(0,operador.indexOf("("));
					}else{
						accion['operador']=operador;
					}
				}
				cad=operador.replace(/\(/g,"(");
				cad=cad.replace(/\)/g,")");
				campos=elemento.split("{"+cad+"}");
				accion['param']=operador.substring(operador.indexOf("(")+1,(operador.length)-1);
				accion['tipo']="funcion";
				accion['campo']=campos[1];
			}else{
				accion['tipo']="asignacion";
				accion['campo']=elemento.substring(1);
			}
		}else if(elemento.length>0 && elemento.charAt(0)=="%"){
			if(elemento.indexOf("{")>-1){
				if(elemento.indexOf("}")>-1){
					operador=elemento.substring(elemento.indexOf("{")+1,elemento.indexOf("}")-elemento.indexOf("{")-1);
				}
				accion['param']=operador.substring(operador.indexOf("(")+1,operador.length-1);
				accion['tipo']="metodo";
				accion['operador']=operador;
			}else{
				accion['tipo']="asignacion";
				accion['campo']=elemento.substring(1);
			}
		}else{
			accion['tipo']="texto";
			accion['valor']=elemento;
		}
		secuencia[secuencia.length]=accion;
	}
	
}

function ConvertirValor(operacion,valor,parametros){
	var cadena;
	if(operador!=""){
		devolucion="";
		cadena="devolucion=" + operacion + "(";
		strparametros=parametros.replace("this","valor");
		cadena+=strparametros+");";
		eval(cadena);
//		alert(devolucion);
		return devolucion;
	}else{
		return valor;
	}
}

function RenderContent(id,content){
	var elemento,htmlout="";
	ExtraerCampos(getTemplate(id));
	for(i=0;i<content.length;i++){
		content[i].setAttribute("Contador",i);
		htmlout+=RenderTemplate(content[i]);
	}
	var contenedor=document.getElementById(id);
	PrintContent(htmlout,contenedor);
}

function PrintContent(htmlout,contenedor){
	if(contenedor.childNodes){
		while (contenedor.childNodes.length > 0){
			contenedor.removeChild(contenedor.childNodes[0]);
		}
	}
	try{
		contenedor.innerHTML=htmlout;
	}catch(e){
		// ESTO ES PARA IE, ES UN ASCO PERO FUNCIONA
		if(contenedor.tagName.toUpperCase()=="TBODY"){
			var capa_contenedora=contenedor.parentNode.parentNode;
			var alltext=capa_contenedora.innerHTML;
			listado=alltext.split("<TBODY id="+contenedor.id+">");
			htmlout=listado[0]+"<tbody id=\""+contenedor.id+"\">"+htmlout+listado[1];
			capa_contenedora.innerHTML=htmlout;
		}
	}
}

// Callback por defecto
function DefaultCallback(){
	if(Ajax_Resultado.length > 0){
		RenderContent(Ajax_Id,Ajax_Resultado);
	}else{
		PrintContent('<div><strong>No hay elementos que mostrar.</strong></span>',document.getElementById(Ajax_Id));
	}
	RenderPagination(Ajax_Extra);
}

// ids reservados a la paginacion: 
//	ajax-pagina-siguiente <- para la pagina siguiente
//	ajax-pagina-anterior <- para la pagina anterior
//	ajax-pagina-[n] <- para las paginas numeradas

function RenderPagination(data){
	var ajax_paginasiguiente,ajax_paginaanterior,ajax_paginaanteriorgrupo,ajax_paginasiguientegrupo,ajax_paginanumerica,ajax_arraypaginas,ajax_numero_paginas,ajax_pagina_actual,ajax_tmppagina;
	ajax_arraypaginas=new Array();
	
	if(data.getAttribute("numero_paginas")){
		ajax_numero_paginas=parseInt(data.getAttribute("numero_paginas"));
	}else{
		ajax_numero_paginas=0;
		return 0;
	}
	if(data.getAttribute("pagina_actual")){
		ajax_pagina_actual=parseInt(data.getAttribute("pagina_actual"));
	}else{
		ajax_pagina_actual=-1000;
		return 0;
	}
	if(data.getAttribute("pagina_inicial")){
		ajax_paginainicial=parseInt(data.getAttribute("pagina_inicial"));
	}else{
		ajax_paginainicial=-1000;
	}
	if(data.getAttribute("pagina_final")){
		ajax_paginafinal=parseInt(data.getAttribute("pagina_final"));
	}else{
		ajax_paginafinal=-1;
	}
	if(document.getElementById("ajax-pagina-siguiente")){
		ajax_paginasiguiente=document.getElementById("ajax-pagina-siguiente");
		if(ajax_pagina_actual<ajax_numero_paginas){
			ajax_paginasiguiente.style.display="inline";
			var tmpsiguientes=ajax_paginasiguiente.getElementsByTagName("a");
			for(var j=0;j<tmpsiguientes.length;j++){
				if(Ajax_Url.indexOf("pagina=")>-1){
					tmpsiguientes[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+(ajax_pagina_actual+1));
				}else{
					if(Ajax_Url.indexOf("?")>-1){
						tmpsiguientes[j].href=Ajax_Url+"&pagina="+(ajax_pagina_actual+1);
					}else{
						tmpsiguientes[j].href=Ajax_Url+"?pagina="+(ajax_pagina_actual+1);
					}
				}
			}
		}else{
			ajax_paginasiguiente.style.display="none";
		}
	}
	if(document.getElementById("ajax-pagina-anterior")){
		ajax_paginaanterior=document.getElementById("ajax-pagina-anterior");
		if(ajax_pagina_actual>1){
			ajax_paginaanterior.style.display="inline";
			var tmpanteriores=ajax_paginaanterior.getElementsByTagName("a");
			for(var j=0;j<tmpanteriores.length;j++){
				if(Ajax_Url.indexOf("pagina=")>-1){
					tmpanteriores[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+(ajax_pagina_actual-1));
				}else{
					if(Ajax_Url.indexOf("?")>-1){
						tmpanteriores[j].href=Ajax_Url+"&pagina="+(ajax_pagina_actual-1);
					}else{
						tmpanteriores[j].href=Ajax_Url+"?pagina="+(ajax_pagina_actual-1);
					}
				}
			}
		}else{
			ajax_paginaanterior.style.display="none";
		}
	}

	if(ajax_paginainicial>-1000 && ajax_paginainicial<1){
		ajax_paginafinal=(ajax_paginafinal-ajax_paginainicial)+1;
		ajax_paginainicial=1;
	}

	if(ajax_paginafinal>ajax_numero_paginas){
		ajax_paginainicial=ajax_numero_paginas-(ajax_paginafinal-ajax_paginainicial);
		ajax_paginafinal=ajax_numero_paginas;
	}

	if(document.getElementById("ajax-pagina-anterior-grupo")){
		ajax_paginaanteriorgrupo=document.getElementById("ajax-pagina-anterior-grupo");
		if(ajax_paginainicial>1){
			ajax_paginaanteriorgrupo.style.display="inline";

			var tmpanteriores=ajax_paginaanteriorgrupo.getElementsByTagName("a");
			for(var j=0;j<tmpanteriores.length;j++){
				if(Ajax_Url.indexOf("pagina=")>-1){
					tmpanteriores[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+(ajax_pagina_actual-(ajax_paginafinal-ajax_paginainicial)));
				}else{
					if(Ajax_Url.indexOf("?")>-1){
						tmpanteriores[j].href=Ajax_Url+"&pagina="+(ajax_pagina_actual-(ajax_paginafinal-ajax_paginainicial));
					}else{
						tmpanteriores[j].href=Ajax_Url+"?pagina="+(ajax_pagina_actual-(ajax_paginafinal-ajax_paginainicial));
					}
				}
			}
		}else{
			ajax_paginaanteriorgrupo.style.display="none";
		}
	}

	if(document.getElementById("ajax-pagina-siguiente-grupo")){
		ajax_paginasiguientegrupo=document.getElementById("ajax-pagina-siguiente-grupo");
		if(ajax_paginafinal<ajax_numero_paginas && ajax_paginafinal>-1000){
			ajax_paginasiguientegrupo.style.display="inline";

			var tmpsiguientes=ajax_paginasiguientegrupo.getElementsByTagName("a");
			for(var j=0;j<tmpsiguientes.length;j++){
				if(Ajax_Url.indexOf("pagina=")>-1){
					tmpsiguientes[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+(ajax_pagina_actual+(ajax_paginafinal-ajax_paginainicial)));
				}else{
					if(Ajax_Url.indexOf("?")>-1){
						tmpsiguientes[j].href=Ajax_Url+"&pagina="+(ajax_pagina_actual+(ajax_paginafinal-ajax_paginainicial));
					}else{
						tmpsiguientes[j].href=Ajax_Url+"?pagina="+(ajax_pagina_actual+(ajax_paginafinal-ajax_paginainicial));
					}
				}
			}
		}else{
			ajax_paginasiguientegrupo.style.display="none";
		}
	}

	var i=1;
	var contador=1;
	var salir=false
	while(!salir){
		if(document.getElementById("ajax-pagina-"+i)){
			if((ajax_paginainicial==-1000 || ajax_paginainicial==-1000) || (contador>=ajax_paginainicial && contador<=ajax_paginafinal)){
				if(contador<=ajax_numero_paginas){
					ajax_paginanumerica=document.getElementById("ajax-pagina-"+i);
					ajax_paginanumerica.style.display="inline";
					var tmppaginas=ajax_paginanumerica.getElementsByTagName("a");
					if(i==ajax_pagina_actual){
						ajax_paginanumerica.className="activa";
						for(var j=0;j<tmppaginas.length;j++){
							tmppaginas[j].removeAttribute("href");
							DetachEvent(tmppaginas[j],"click",EventoPagina,false);
						}
					}else{
						ajax_paginanumerica.className="";
						for(var j=0;j<tmppaginas.length;j++){
							if(Ajax_Url.indexOf("pagina=")>-1){
								tmppaginas[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+i);
							}else{
								if(Ajax_Url.indexOf("?")>-1){
									tmppaginas[j].href=Ajax_Url+"&pagina="+i;
								}else{
									tmppaginas[j].href=Ajax_Url+"?pagina="+i;
								}
							}
							AttachEvent(tmppaginas[j],"click",EventoPagina,false);
						}
					}
				}else{
					ajax_paginanumerica=document.getElementById("ajax-pagina-"+i);
					ajax_paginanumerica.style.display="none";
				}
			}else{
				ajax_paginanumerica=document.getElementById("ajax-pagina-"+i);
				ajax_paginanumerica.style.display="none";
				ajax_paginanumerica.className="";
			}
		}else{
			if(contador<=ajax_numero_paginas){
				if((ajax_paginainicial==-1000 || ajax_paginainicial==-1000) || (contador>=ajax_paginainicial && contador<=ajax_paginafinal)){
					var anteriorpagina=document.getElementById("ajax-pagina-"+Ajax_Primera_Pagina);
					if(anteriorpagina){
						var nuevapagina=anteriorpagina.cloneNode(true);
						tmppaginas=nuevapagina.getElementsByTagName("a");
						nuevapagina.className="";
						nuevapagina.id="ajax-pagina-"+i;
						for(var j=0;j<tmppaginas.length;j++){
							tmppaginas[j].href=Ajax_Url.replace(/pagina=[0-9]*/g,"pagina="+i);
							tmppaginas[j].innerHTML=i;
							AttachEvent(tmppaginas[j],"click",EventoPagina,false);
						}
						if(contador>Ajax_Primera_Pagina){
							anteriorpagina.parentNode.appendChild(nuevapagina);
						}else{
							anteriorpagina.parentNode.insertBefore(nuevapagina,anteriorpagina);
							Ajax_Primera_Pagina=contador;
						}
					}else{
						salir=true;
					}
				}
			}else{
				salir=true;
			}
		}
		i++;
		contador++;
	}
}

function ActivaBoton(elemento,accion){
	var encontrado=false,enlace,tmpelemento;
	tmpelemento=elemento;
	while(!encontrado){
		if(tmpelemento.tagName.toUpperCase()=="A"){
			encontrado=true;
		}else{
			tmpelemento=tmpelemento.parentNode;
		}
	}
	EnviarPaginaAjax(tmpelemento.href,accion);
	return false;
}

function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
}

function DetachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.removeEventListener){
		obj.removeEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.detachEvent) return obj.detachEvent("on"+evt,fnc);
}

function EventoPagina(evento){
	var elemento;
	if(typeof(evento.target)!="undefined"){
		elemento=evento.target;
	}else{
		elemento=window.event.srcElement;
	}
	ActivaBoton(elemento,Ajax_Callback);
	if(typeof(evento.target)!="undefined"){
		evento.preventDefault();
	}
	return false;
}

function Inicialize(id,template,callback){
	var entra=true;
	Ajax_Activo=true;

	setTemplate(id,template);
	
	Ajax_Id=id;
	Ajax_Callback=callback;
	
	if(window.event){
		window.event.returnValue=false;
	}
	
	if(document.getElementById('ajax-pagina-siguiente')){
		var tmpsiguientes=document.getElementById('ajax-pagina-siguiente').getElementsByTagName("a");
		for(var i=0;i<tmpsiguientes.length;i++){
			AttachEvent(tmpsiguientes[i],"click",EventoPagina,false);
		}
	}
	if(document.getElementById('ajax-pagina-anterior')){
		var tmpanteriores=document.getElementById('ajax-pagina-anterior').getElementsByTagName("a");
		for(var i=0;i<tmpanteriores.length;i++){
			AttachEvent(tmpanteriores[i],"click",EventoPagina,false);
		}
	}

	if(document.getElementById('ajax-pagina-siguiente-grupo')){
		var tmpsiguientes=document.getElementById('ajax-pagina-siguiente-grupo').getElementsByTagName("a");
		for(var i=0;i<tmpsiguientes.length;i++){
			AttachEvent(tmpsiguientes[i],"click",EventoPagina,false);
		}
	}
	if(document.getElementById('ajax-pagina-anterior-grupo')){
		var tmpanteriores=document.getElementById('ajax-pagina-anterior-grupo').getElementsByTagName("a");
		for(var i=0;i<tmpanteriores.length;i++){
			AttachEvent(tmpanteriores[i],"click",EventoPagina,false);
		}
	}

	var cont=1;
	var regexp = new RegExp(/\"ajax\-pagina\-[0-9]*\"/);
	var m = regexp.exec(document.body.innerHTML);
	if(m!=null){
		cont=m.toString().substring(13,m.toString().length-1)
	}
	Ajax_Primera_Pagina=cont;
	while(entra){
		if(document.getElementById('ajax-pagina-'+cont)){
			var tmppaginasnumeradas=document.getElementById('ajax-pagina-'+cont).getElementsByTagName("a");
			for(var i=0;i<tmppaginasnumeradas.length;i++){
				AttachEvent(tmppaginasnumeradas[i],"click",EventoPagina,false);
			}
		}else{
			entra=false;
		}
		cont++;
	}
}

function setTemplate(id,tmptemplate){
	var index=templates.length;
	templates[index]=tmptemplate;
	ids[index]=id;
}

function getTemplate(id){
	for(var i=0;i<ids.length;i++){
		if(ids[i]==id){
			return templates[i];
		}
	}
	return "";
}

function ArrayPop(theArray){
	var theArrayAux=new Array();
	for(var i=0;i<theArray.length-1;i++){
		theArrayAux[i]=theArray[i];
	}
	return theArrayAux;
}

/* Funciones para añadir a select y p */
function appendToSelect(select, value, content) {
    var opt;
	var a;
	var f;
    opt = document.createElement("option");
    opt.value = value;
	a = document.createTextNode(content);
    opt.appendChild(a);
	f = document.getElementById(select);
    f.appendChild(opt);
}

function appendToP(p, content){
	var a;
	a = document.createTextNode(content);
	f = document.getElementById(p);
	f.appendChild(a);
}

function limpiaselect(select) {
	var o = document.getElementById(select);
	while (o.length > 0){
		o.remove(0);
	}
}

function URLencode(sStr) {
    return escape(sStr).
             replace(/\+/g, '%2B').
                replace(/\"/g,'%22').
                   replace(/\'/g, '%27').
                     replace(/\//g,'%2F');
}