// JavaScript Document
var id;
var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
var http2 = getHTTPObject(); // Creamos el objeto XMLHttpRequest



//Función para crear el objeto XMLHTTP diferenciado entre los distintos navegadores
function getHTTPObject() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
       try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
          xmlhttp = new XMLHttpRequest();
       } catch (e) { xmlhttp = false; }
    }
    return xmlhttp;
}



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;
}


//Función que pretende sustituir a la anterior, es idéntica salvo que tiene un parámetro más: TransferirJS
//Debe ser true o false para que se cargue el javascript de la página en la cabecera o no
function cargarContenidoEnCapaJS(url, parametros, capa, TransferirJS)
{
	var cadena;
	var x;
	var capacargando;
	var capadestino = capa;
	var aperturascript = "<script language='javascript'>";
	var cierrescript = "</script>";
	var cabecerapagina = document.getElementsByTagName('head')[0];
	
	//Limpiamos el contenido de la capa contenedora
	//	capadestino.innerHTML = '';
	////

	ajax = nuevoAjax();
	if (url.indexOf('?')==-1)
		url = url + '?';

	ajax.open("GET", noCache(url),true);
	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	ajax.onreadystatechange = function()
		{
			if (ajax.readyState!=4) 	// Está cargando
			{
				//Si no esta creada la capa de cargando, la creamos
				//capacargando = document.getElementById('CapaCargando');
				//if (!capacargando)
					//capacargando = CreaCapaCargando();
				
				//Ponemos 1 segundo de espera hasta que salga el "Cargando..."
				//var tiempoespera = setTimeout(function ()
					//{
						//capacargando.style.visibility = 'visible';
					//}, 1000);
				
				//scrollTo(0,0);			//	Instrucción para mandarle arriba de la página
				if (TransferirJS)			// Limpiamos los scripts de la cabecera
				{
					x = 0;
					while (cabecerapagina.childNodes[x])
					{
						if (cabecerapagina.childNodes[x].tagName)
						{
							if (cabecerapagina.childNodes[x].tagName.toUpperCase() == 'SCRIPT' && cabecerapagina.childNodes[x].OBLIGATORIO == null)
							{
								alert(cabecerapagina.childNodes[x].innerText);
								cabecerapagina.removeChild(cabecerapagina.childNodes[x]);
							}
							else
								x++;
						}
						else
							x++;
					}
				}
			}
			
			if (ajax.readyState == 4) 				// Página cargada
			{
				//Nos cepillamos la capa cargando
				//capacargando = document.getElementById('CapaCargando');
				//if (capacargando)
					//document.getElementById("header").removeChild(capacargando);
				
				//Nos cepillamos el tiempo de espera
				//if (tiempoespera)
					//clearTimeout(tiempoespera);
				
				cadena = ajax.responseText;
				contenidopagina = cadena;			//Metemos en una variable el contenido entero de la página puesto que jugaremos con la variable "cadena" despues
				
				if (TransferirJS)
				{
					while (cadena.indexOf(aperturascript) != -1 && cadena.indexOf(cierrescript) != -1)
					{
						var script_pagina = document.createElement('script');
						script_pagina.setAttribute('type', 'text/javascript');
						script_pagina.text = cadena.substring(cadena.indexOf(aperturascript) + aperturascript.length, cadena.indexOf(cierrescript))
						//alert(script_pagina.text); // <<--Esta linea sirve para ver los scripts cargados en la página principal
						cabecerapagina.appendChild(script_pagina); 
									
						cadena = cadena.substring(cadena.indexOf(cierrescript) + cierrescript.length);
					}
				}
				
				//document.getElementById("pruebaAJAX").innerText=contenidopagina;
				capadestino.innerHTML = contenidopagina;
				contenidopagina = BuscarScriptAux(contenidopagina);
			}
		}
		
		// Hacemos el send - Lo hemos puesto aquí porque la posición inicial de éste código (al principio) no permitía hacer el open con GET 
		// cuando le enviábamos parámetros, y el POST no nos valía por el error Length del Firefox
		if (parametros != '')
			ajax.send(escape_variables(parametros));
		else
			ajax.send(null);
		
		return false;
}

//función para formatear la cadena de los parametros 
//con el escape de cada uno de los valores
function escape_variables (parametros)
{
	var paraux = parametros;
	var cadenafinal = '';
	if (paraux != '')
	{
		if (paraux.charAt(0) == '&')						//Si nos manda un ampersand como primer caracter lo eliminamos
			paraux = paraux.substring(1);
		
		while (paraux.indexOf('=') != -1)
		{
			cadena_variable = paraux.substring(0, paraux.indexOf('='));
			if (paraux.indexOf('&') != -1)			//Miramos a ver si existe un ampersand en lo que queda de cadena
				cadena_valor = paraux.substring(paraux.indexOf('=')+1, paraux.indexOf('&'));
			else
				cadena_valor = paraux.substring(paraux.indexOf('=')+1);
			cadenafinal += '&' + cadena_variable + '=' + escape(cadena_valor);
			
			//Seteamos paraux al resto de cadena para seguir sacando variables y sus valores
			if (paraux.indexOf('&') != -1)
				paraux = paraux.substring(paraux.indexOf('&')+1);
			else
				paraux = '';
		}

		if (cadenafinal.charAt(0) == '&')						//Le quitamos el primer ampersand que le hemos metido
			cadenafinal = cadenafinal.substring(1);
	}
	
	return cadenafinal;
}

function CreaCapaCargando ()
{
	//Capa que contendrá la capa "cargando"
	var capacargando = document.createElement('DIV');
	capacargando.id = 'CapaCargando';
	capacargando.style.position = "absolute";
	capacargando.style.top = "60";
	capacargando.style.left = "25";
	capacargando.className = "ArialNaranja111Bold";
	
	//Metemos en su sitio la capa
	capacargando.innerHTML = "Cargando datos...";
	document.getElementById("header").appendChild(capacargando);
	
	/////////////////////////////////////////
	//Colocamos en x posicion la capita
	/////////////////////////////////////////
	
	return (capacargando);
}

function BuscarScriptAux(cadena)
{
	var InicioBloque = "<SCRIPTAUX>";
	var FinBloque = "</SCRIPTAUX>";
	var AuxWebo = cadena;
	var InicioEv = null;
	var FinEv = null;
	var CadenaEvaluar = null;
	
	if (trim(AuxWebo) != '' && AuxWebo != null)
	{
		while (AuxWebo.indexOf(InicioBloque) != -1 && AuxWebo.indexOf(FinBloque) != -1)
		{
			InicioEv = AuxWebo.indexOf(InicioBloque);
			FinEv = AuxWebo.indexOf(FinBloque);
			CadenaEvaluar = AuxWebo.substring(InicioEv + InicioBloque.length, FinEv)
			
			eval(CadenaEvaluar);
			
			AuxWebo = AuxWebo.substring(0, InicioEv) + AuxWebo.substr(FinEv + FinBloque.length);
		}
	}
	
	return AuxWebo;
}

function ConcatenarFormulario(formu)
{
	var x = 0;
	var cadenatotal = '';
	while (formu.elements[x])
	{
		if (formu.elements[x].type != 'checkbox' || formu.elements[x].type == 'checkbox' && formu.elements[x].checked)
		{
			if (x > 0)
				cadenatotal += '&';				//Esto es para que ponga el ampersand después de la primera variable
			cadenatotal += formu.elements[x].name;
			cadenatotal += '=';
			cadenatotal += formu.elements[x].value;
		}
		
		x++;
	}
	return cadenatotal;
}

function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}


function noCache(
  uri  
  // uri string to open
 ){

 return uri.concat( 
  // concat String prototype,
  // the fastest way to produce
  // a complete string using multiple values

  /\?/.test(uri) ?
  // if uri has a query string

   "&"
  // add last value using & separator char
   :

  // else
   "?",
  // add a query string to this url

  "noCache=",
  // this should be a "cool name" for generated key

  (new Date).getTime(),
  // the noCache value will be milliseconds
  // from 1970/01/01

  ".",
  // plus a dot ...

  Math.random()*1234567
  // ... and a random value using
  // a "big" integer as generator
 );

 // then this is a return example using uri: http://host.com/mypage.html
 // http://host.com/mypage.html?noCache=1166301156233.332083.6663326991

 // while this is an example using uri: http://host.com/mypage.html?v0=1&v2=a
 // http://host.com/mypage.html?v0=1&v2=a&noCache=1166301168420.631416.7190624559
};

function include(file_path){
	var j = document.createElement("script");
	j.type = "text/javascript";
	j.src = file_path;
	document.body.appendChild(j);
}
