// Documento JavaScript
// Esta función cargará las paginas
function llamarAjax(url,valores,id_contenedor,divLoader,tipo){//parametros:1.-archivo a cargar; 2.-nombre del div que carga la info; 3.-DIV donde se ve el loading, 4.-Tipo de cargador del loader
	var pagina_requerida=false;
try {
	pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
	try {
			pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			pagina_requerida= false;
	}
}
if (!pagina_requerida && typeof XMLHttpRequest!='undefined') {
	pagina_requerida = new XMLHttpRequest();
}
	//document.getElementById(id_contenedor).innerHTML="";
	document.getElementById(id_contenedor).visibility="hidden";
	pagina_requerida.onreadystatechange=function(){ // función de respuesta
		//amagaTotsMenys(divLoader);
		cargarpagina(pagina_requerida, id_contenedor,divLoader,tipo)
	}
	if(url.indexOf("?")!=-1){
		url=url+"&ms="+new Date().getTime();
	}
	else
	{
		url=url+"?ms="+new Date().getTime();
	}
	pagina_requerida.open('POST', url, true); // asignamos los métodos open y send
	pagina_requerida.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	pagina_requerida.send(valores);
	return pagina_requerida;
}

// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor,divLoader,tipo){
	document.getElementById(divLoader).style.display="block";	
	switch(tipo){//Define el contenido de la capa loader para cada uno de los estados
		case 'alias':
			readyState0='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader2"><img src="images/ajax-form.gif" align="absmiddle">&nbsp;&nbsp;Enviando información...&nbsp;&nbsp;</td></tr></table>';
			readyState1='<table  align="left" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader2"><img src="images/ajax-form.gif" align="absmiddle">&nbsp;&nbsp;Comprobando repetici&oacute;n...</td></tr></table>';
			readyState2='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader2"><img src="images/ajax-form.gif" align="absmiddle">&nbsp;&nbsp;Datos cargados...</td></tr></table>';
			readyState404='<table align="left" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader2"><img src="images/ajax-form.gif" align="absmiddle">&nbsp;&nbsp;Archivo no encontrado...</td></tr></table>';
			readyStateDefecto='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader2"><img src="images/ajax-form.gif" align="absmiddle">&nbsp;&nbsp;Ha habido problemas recibiendo los datos.</td></tr></table>';
			break;
		default:
			readyState0='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader">Enviando información...&nbsp;&nbsp;<img src="images/ajax-loader.gif" align="absmiddle">&nbsp;&nbsp;</td></tr></table>';
			readyState1='<table  align="left" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader">&nbsp;Cargando datos...&nbsp;&nbsp;<img src="images/ajax-loader.gif"  align="absmiddle">&nbsp;&nbsp;</td></tr></table>';
			readyState2='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader">Datos cargados...&nbsp;&nbsp;<img src="images/ajax-loader.gif"  align="absmiddle">&nbsp;&nbsp;</td></tr></table>';
			readyState404='<table align="left" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader">Archivo no encontrado...&nbsp;&nbsp;<img src="images/ajax-loader.gif"  align="absmiddle">&nbsp;&nbsp;</td></tr></table>';
			readyStateDefecto='<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" align="left" class="loader">Ha habido problemas recibiendo los datos.&nbsp;&nbsp;<img src="images/ajax-loader.gif"  align="absmiddle">&nbsp;&nbsp;</td></tr></table>';
	}
	if(pagina_requerida.readyState == 0)
	{
		document.getElementById(divLoader).innerHTML = readyState0;
	}
	if(pagina_requerida.readyState == 1)
	{
		document.getElementById(divLoader).innerHTML = readyState1;
	}
	if(pagina_requerida.readyState == 2)
	{
		document.getElementById(divLoader).innerHTML = readyState2;
	}
	if(pagina_requerida.readyState == 3)
	{
		document.getElementById(divLoader).innerHTML = "";
		document.getElementById(divLoader).style.display="none";
	}
	if(pagina_requerida.readyState == 4)
	{
		 if(pagina_requerida.status == 200 || window.location.href.indexOf("http")==-1)
		 {
		  document.getElementById(divLoader).style.display="none";		  
		  var scs=pagina_requerida.responseText.extractScript();    //capturamos los scripts 
        document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText.stripScript();    //eliminamos los scripts... ya son innecesarios 
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  

		 }
		 else if(pagina_requerida.status == 404)
		 {
		  // Add a custom message or redirect the user to another page
		  document.getElementById(divLoader).innerHTML =readyState404;
		 }
		 else
		 {
		  document.getElementById(divLoader).innerHTML =readyStateDefecto;
		 }
	}
}


//--------------------Interpretador de Javascript directamente desde el resultado de Ajax, interpretará todo lo que encuentre entre <script></script>----------------
// JavaScript Document
var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)'; 
        /** 
        * Eval script fragment 
        * @return String 
        */ 
        String.prototype.evalScript = function() 
        { 
                return (this.match(new RegExp(tagScript, 'img')) || []).evalScript(); 
        }; 
        /** 
        * strip script fragment 
        * @return String 
        */ 
        String.prototype.stripScript = function() 
        { 
                return this.replace(new RegExp(tagScript, 'img'), ''); 
        }; 
        /** 
        * extract script fragment 
        * @return String 
        */ 
        String.prototype.extractScript = function() 
        { 
                var matchAll = new RegExp(tagScript, 'img'); 
                return (this.match(matchAll) || []); 
        }; 
        /** 
        * Eval scripts 
        * @return String 
        */ 
        Array.prototype.evalScript = function(extracted) 
        { 
                var s=this.map(function(sr){ 
                         var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1]; 
                         if(window.execScript){ 
                              window.execScript(sc); 
                         } 
                        else 
                       { 
                           window.setTimeout(sc,0); 
                        } 
                }); 
                return true; 
        }; 
        /** 
        * Map array elements 
        * @param {Function} fun 
        * @return Function 
        */ 
        Array.prototype.map = function(fun) 
        { 
                if(typeof fun!=="function"){return false;} 
                var i = 0, l = this.length; 
                for(i=0;i<l;i++) 
                { 
                        fun(this[i]); 
                } 
                return true; 
        };  




