// JavaScript Document

var _co_de_ = null;

var _code_ = null;
var _fun_ = null;
var _cop_ = null;
var _block_ = null;
var _clear_ = null;

var __err__ = null;
/*-----------------------------------------------------
	F U N C I O N E S      G E N E R A L E S
-----------------------------------------------------*/
//obtenemos lo parametros de las casillas correspondidntes
function Parametros(cad)
{
	//campo1|campo2|campo3
//	alert(cad);
	var cadena=cad;
	var c="";
	var a = [];
	a = cadena.split("|");
	for (i=0;i<a.length;++i)
	{
//		alert(a[i]);
		if (c=="")
			c = c + a[i] + "=" + encodeURIComponent(document.getElementById(a[i]).value);
		else
			c = c + "&" + a[i] + "=" + encodeURIComponent(document.getElementById(a[i]).value);
	}
	return c;
//	alert(cad);
}

//extrae los fragmentos de los parametros
function Parametros_Seed(cad)
{
	//campo1|campo2|campo3
//	alert(cad);
	var cadena=cad;
	var c="";
	var a = [];
	a = cadena.split("|");
	for (i=0;i<a.length;++i)
	{
//		alert(a[i]);
		if (c=="")
			try {
				c = a[i].substring(0, a[i].length-3) + "=" + document.getElementById(a[i]).value;
			} catch (err) {
				alert ("No esta Correctamente definida la variable: "+a[i]);
				}	
		else
			try {
				c = c + "&" + a[i].substring(0, a[i].length-3) + "=" + document.getElementById(a[i]).value;
			} catch (err) {
				alert ("No esta Correctamente definida la variable: "+a[i]);
				}	
//		alert(document.getElementById(a[i]).value);
	}
	return c;
//	alert(cad);
}

function Verify(c)
{
	try {
		x = _code_.getElementsByTagName(c)[0];
		xx = x.firstChild.data;
		return true;
	}
	catch (err) {
		alert ('Error: No existe la variable:'+c);
		return false;
	}
}

function Retorno(i)
{
	if (!isNaN(i))
	{
		var cod = _code_.childNodes[i].firstChild.data;
		if (cod=="_null_")
			return "";
		else
			return cod;
	}
	else
	{
		var cod = _code_.getElementsByTagName(i)[0];
		if (cod.firstChild.data=="_null_")
			return "";
		else 
			return cod.firstChild.data;
	}
}

/*-----------------------------------------------------
    C A R G A R    P A G I N A S   W E B    H T M L 
-----------------------------------------------------*/
//Funcion para Desplegar el contenido de un programa php en un bloque
function Html_Load(p, b)
{
  _block_=b;
  P = null;
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
//      parameters: P, 
      onComplete: _Load_Result_Only_
    });
//    document.getElementById(b).innerHTML = "<img src=/imageslib/general/progress/progresb01.gif border=0>";
//	alert('x')
}

function _Load_Result_Only_(req)
{
//	alert(req.responsetext);
	document.getElementById(_block_).innerHTML="";
	//document.getElementById(_block_).innerHTML = req.responsetext
	//evaluamos la respuesta
	var txt;
	var html;
	var js;
	
	var a = req.responsetext;
	
	b = a.split("</script>");
	
	for (i=0;i<b.length;++i)
	{
//		alert(b[i]);
		c=b[i].split("<script");
		if (c[0]!="")
		{
			//js = document.createElement("script");
			//document.getElementById(_block_).appendChild(js);
			//js.text="document.write('"+c[0]+"');";
			document.getElementById(_block_).innerHTML = document.getElementById(_block_).innerHTML + c[0];
//			txt = document.createTextNode(c[0]);
//			txt = document.createElement("div");
//			html.appendChild(txt);
//			document.getElementById(_block_).appendChild(document.getElementById("X"));
//			document.getElementById(_block_).appendChild(document.getElementById("Y"));
//			txt.text=c[0];
		}
		//alert ("HTML: " + c[0]);
		d=c[1].substring(c[1].indexOf(">")+1);
		if (d!="")
		{
			js = document.createElement("script");
			document.getElementById(_block_).appendChild(js);
			js.text=d;
//			alert(d);
		}
		//alert ("JS: " + d);
	}
//	alert (document.getElementById(_block_).innerHTML);
}
/*---------------------------------------------------
C A R G A M O S    E L    S C R I P T S 
---------------------------------------------------*/
function Html_Load_Script(p, param)
{
  if (param) P = Parametros(param);
  else P = null;
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: P, 
      onComplete: _Select_Solution_
    });
}

function _Select_Solution_(req)
{
//	alert(req.responsetext);
	_code_ = (req.responseXML).firstChild;
	if (Verify('PROGRAMA') && Verify('BLOQUE') && Verify('TYPE') && Verify('ERRORS'))
	{
		switch (Retorno('TYPE'))
		{
			case "HTML":
				Html_Load(Retorno('PROGRAMA'), Retorno('BLOQUE'));
				break;
			case "QUESTION":
				break;
			case "PARAM":
				break;
			case "ERRORS":
				SetErrors(Retorno('ERRORS'));
				break;
			case "MESSAGE":
				if (Retorno('ERRORS')!="") 
					SetErrors(Retorno('ERRORS'));
				alert(Retorno('BLOQUE'));
				break;
			case "RELOAD":
				location.reload();
				break;
			default:
				alert ("No se a definido el tipo de respuesta deseada");
		}
	}
	else
		alert ("La Salida entregada por el Servidor no es adecuada");
}

function SetErrors(txt)
{
//	alert(txt);
	var a, b;
	if (txt!="")
	{
		a=txt.split("||");
		for (i=0;i<a.length;++i)
		{
//			alert (a[i]);
			b=a[i].split("::");
			if (b[1]!="_NULL_")
			{
				document.getElementById(b[0]).innerHTML = "<img src='/imageslib/general/ops/error.gif' width=16 height=16 border=0 onmouseover=\"Tip('" + b[1] + "', TITLE, 'Error en las Variables', BGCOLOR, '#FFFFFF', FONTCOLOR, '#800000', FONTSIZE, '8pt', FONTFACE, 'Arial', BORDERCOLOR, '#C00000', WIDTH, 200)\" onmouseout=\"UnTip()\">";
			}
			else
			{
				document.getElementById(b[0]).innerHTML = "";//b[1];
			}
		}
	}
}


/*---------------------------------------------------
C A R G A M O S    U N   C O N J U N T O   D E   S C R I P T S 
---------------------------------------------------*/
function Html_Load_Multi_Script(p, param, r)
{
  if (r) { alert('Html_Load_Multi_Script:' + p + ' **** ' + param); __err__ =true; }

  if (r==true) alert(param);
  else P = null;
  if (param) P = Parametros(param);
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: P, 
      onComplete: _Select_Multi_Solution_
    });
}

function Html_Load_Multi_Script_Seed(p, param, r)
{
	
  if (r==true) { alert('Html_Load_Multi_Script_Seed:' +p + '\n' + param); __err__ =true; }
  if (param) P = Parametros_Seed(param);
  else P = null;
  
  if (r==true) alert(P);
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: P, 
      onComplete: _Select_Multi_Solution_
    });
}

function _Select_Multi_Solution_(req)
{
//	if (__err__) {alert (req.responsetext); __err__= false; }
	var s;
	
	try {		//VERIFICAMOS LA EXISTENCIA DE UN ERROR
		var datos = (req.responseXML).firstChild;
		var a = datos.childNodes.length;
	}
	catch (err) {
		alert('ERROR: ' + req.responsetext);
		return;
	}

	for (var i=0; i<datos.childNodes.length; i++)
	{
		s = datos.childNodes[i];		//obtenemos el i esimo registro
		var prog = s.childNodes[0].firstChild.data;
		var bloc = s.childNodes[1].firstChild.data;
		var tipo = s.childNodes[2].firstChild.data;
		var erro = s.childNodes[3].firstChild.data;

//		alert(tipo);
		switch (tipo)
		{
			case "HTML":
				Html_Load(Decode(prog), Decode(bloc));
				break;
			case "HTML_CODE":
				if (prog!="_NULL_")
					document.getElementById(bloc).innerHTML = Decode(prog);
				else
					document.getElementById(bloc).innerHTML = "";
				break;
			case "QUESTION":
				break;
			case "PARAM":
				break;
			case "ERRORS":
				SetErrors(Decode(erro));
				break;
			case "CLEAR":
				Clear_Block(bloc);
				break;
			case "MESSAGE":
				if (erro!="_NULL_") SetErrors(erro);
				alert(Decode(bloc));
				break;
			case "RELOAD":
				location.reload();
				break;
			case "DELETE_LINE":
				Delete_Line(bloc);
				break;
			case "SCRIPT":
				eval(Decode(prog));
				break;
			default:
				alert ("No se a definido el tipo de respuesta deseada");
		}
	}	
	
}


//Funcion para Desplegar el contenido de un programa php en un bloque
function Html_Load_Params(p, params, b, deb)
{
  if (deb) alert('Html_Load_Params: ' +p+"\n"+params+"\n"+b);
  _block_=b;
  P = Parametros(params);
  if (deb) alert(P);
  var myAjax = new Ajax.Request(p, 
    {
      method: 'get', 
      parameters: P,
      onComplete: _Load_Result_With_Params_
    });
  document.getElementById(b).innerHTML = "<img src=/imageslib/general/progress/progresb01.gif border=0>";
}
function _Load_Result_With_Params_(req)
{
	//document.getElementById(_block_).innerHTML = unescape(req.responsetext);
	document.getElementById(_block_).innerHTML = "<iframe width=400px></iframe>";
}

function cargar_iframe(p, params, b, deb)
{
	P = Parametros(params);
//	alert(P);
	if (document.getElementById('sitesearch1').checked == true)
		document.getElementById(b).innerHTML = "<iframe src='"+p+"&"+P+"' width='100%' height='100%' frameborder='0'></iframe>";
	else
	{
//		alert(document.getElementById('sitesearch2').value);
		document.getElementById(b).innerHTML = "<iframe src='"+p+"&"+P+"&sitesearch="+document.getElementById('sitesearch2').value+"' width='100%' height='100%' frameborder='0'></iframe>";
	}
}
//Funcion para Desplegar el contenido de un programa php en un bloque
//ademas de extrael los datos enviados por Seed
function Html_Load_Params_Seed(p, params, b, deb)
{
  if (deb) alert('Html_Load_Params_Seed: ' + p + '\n' + params + '\n' + b);
  _block_=b;
  P = Parametros_Seed(params);
  if (deb) alert(P);
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: P,
      onComplete: _Load_Result_With_Params_Seed_
    });
    document.getElementById(b).innerHTML = "<img src=/imageslib/general/progress/progresb01.gif border=0>";
}
function _Load_Result_With_Params_Seed_(req)
{
	document.getElementById(_block_).innerHTML = req.responsetext;
}


/*----------------------------------------------------
Imprimir: 
Cargar una pagina y mostrarla en las Celdas
correspondientes.
----------------------------------------------------*/
function Ejecutar(p, param, c) {
  _clear_=false;
  _cop_ = c;
  P = Parametros2(param);
  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: P, 
      onComplete: _Carga_Resultado_
    });
}

function _Carga_Resultado_(req) {
	_code_ = (req.responseXML).firstChild;
	if (Verify('ERROR'))
		if (Retorno('ERROR')!='OK')
			alert (req.responsetext);


//  if (_fun_) eval(_fun_+"();");
  if (_cop_) Copy(_cop_);
}

function Copy(cad)
{
	//campo1|campo2|campo3
	var cadena=cad;
	var c="";
	var a = [];
	a = cadena.split("|");
	for (i=0;i<a.length;++i)
	{
		c = a[i];
		b = c.split(">");
		switch (b[0].toUpperCase())
		{
			case 'V':
				if (Verify(b[1]))
					if (Retorno('ERROR')=='OK')
						document.getElementById(b[2]).value = Retorno(b[1]);
				break;
			case 'H':
				if (Verify(b[1]))
					if (Retorno('ERROR')=='OK')
						document.getElementById(b[2]).innerHTML = Retorno(b[1]);
				break;
		}
	}
//	return c;
}

function clear(ARGS)
{
	var cadena=ARGS;
	var a;
	a=cadena.split(" ");
	for (i=0;i<a.length;++i)
	{
		x=a[i];
		b=x.split(":");
		switch(b[0])
		{
		case "H":
			document.getElementById(b[1]).innerHTML = "";
			break;
		case "C":
			document.getElementById(b[1]).value = "";
			break;
		case "V":
			document.getElementById(b[1]).value = 0;			
			break;			
		}
	}
}

function Parametros2(cad)
{
	//campo1|campo2|campo3
	var cadena=cad;
	var c="";
	var a = [];
	a = cadena.split("|");
	for (i=0;i<a.length;++i)
	{
		if (c=="")
			c = c + a[i] + "=" + document.getElementById(a[i]).value;
		else
			c = c + "&" + a[i] + "=" + document.getElementById(a[i]).value;
	}
	return c;
//	alert(c);
}

function Set (val, dest)
{
	document.getElementById(dest).value = val;
}


/***************************************************************/
/*                  C A R G A R    C O M B O                   */
function Html_Load_From_Combo(p, val, cd, ops, r) {
//	alert(p);
	if (r) alert(p+'?'+ops+'&V='+val+' -- '+cd);
	Html_Load(p+'?'+ops+'&V='+val, cd);
}

function Load_Combo(p, val, cd, ops) {
  _co_de_ = cd;
  if (ops) ops=ops+"&";

  var myAjax = new Ajax.Request(p, 
    {
      method: 'post', 
      parameters: ops+'V='+val,
      onComplete: _CargaCombo2_
    });
//  alert(ops+'V='+val);
}

function _CargaCombo2_(req) {
	var s;
	try {
		var datos = (req.responseXML).firstChild;

		var obj = $(_co_de_);		//combo
		obj.options.length = 0;		//borra el comboi anterior
		
		for (var i=0; i<datos.childNodes.length; i++) {
			s = datos.childNodes[i];		//obtenemos el i esimo registro
			var cod = s.childNodes[0].firstChild.data;
			if (cod=="_NULL_")
				cod="";
			var elem = Decode(s.childNodes[1].firstChild.data);
			obj.options[i] = new Option(elem, cod);		//cargamos en el iesimo elemento del combo destino
		}
	
	} catch (e) {
		alert(req.responsetext);	
	}

//	if (datos.childNodes.length>10) alert('mas de 10');
}

function Clear_Combo(obj1)
{
	var obj = $(obj1);		//combo
	obj.options.length = 0;
}

function Clear_List(obj1)
{
	var obj = $(obj1);		//combo
//	alert('asdas');
	obj.options.length = 0;
}
/***************************************************************/

function Compose_List(cadena, block)
{
	var c="";
	var x="";
	a = cadena.split("|");
	for (i=0;i<a.length;++i)
	{
//		alert(a[i]);
//		alert(document.getElementById(a[i]).value);
		x=document.getElementById(a[i]).value;
		if (x!="")
			if (c=="")
				c = document.getElementById(a[i]).value;
			else
				c = c + "#" + document.getElementById(a[i]).value;
	}
	document.getElementById(block).value = c;
//	alert(c);
}

/*  DECODE ALL SIMBOLS FOR PHP SCRIP XML*/
function Decode(cad)
{
	var a=cad;
	while (a.lastIndexOf("*oma*")>-1)
		a = a.replace("*oma*","<");
	while (a.lastIndexOf("*omc*")>-1)
		a = a.replace("*omc*",">");
	while (a.lastIndexOf("*andp*")>-1)
		a = a.replace("*andp*","&");

	while (a.lastIndexOf("*aacento*")>-1)
		a = a.replace("*aacento*","á");
	while (a.lastIndexOf("*eacento*")>-1)
		a = a.replace("*eacento*","é");
	while (a.lastIndexOf("*iacento*")>-1)
		a = a.replace("*iacento*","í");
	while (a.lastIndexOf("*oacento*")>-1)
		a = a.replace("*oacento*","ó");
	while (a.lastIndexOf("*uacento*")>-1)
		a = a.replace("*uacento*","ú");
	while (a.lastIndexOf("*ntilde*")>-1)
		a = a.replace("*ntilde*","ñ");

	while (a.lastIndexOf("*aacento2*")>-1)
		a = a.replace("*aacento2*","Á");
	while (a.lastIndexOf("*eacento2*")>-1)
		a = a.replace("*eacento2*","É");
	while (a.lastIndexOf("*iacento2*")>-1)
		a = a.replace("*iacento2*","Í");
	while (a.lastIndexOf("*oacento2*")>-1)
		a = a.replace("*oacento2*","Ó");
	while (a.lastIndexOf("*uacento2*")>-1)
		a = a.replace("*uacento2*","Ú");
	while (a.lastIndexOf("*ntilde2*")>-1)
		a = a.replace("*ntilde2*","Ñ");
	return a;
}

function Delete_Line(id)
{
	var obj = document.getElementById(id); 
	obj.parentNode.removeChild(obj);
}

function Progress_Block(id, op)
{
	document.getElementById(id).innerHTML = "<img src=/imageslib/general/progress/progresb01.gif border=0>";
}

function Clear_Block(id, op)
{
	if (op) alert(id);
	if (id) document.getElementById(id).innerHTML= "";
}

function Visible_Block(id)
{
//	alert(document.getElementById(id).value);
//	document.getElementById(id).style.visibility = "visible";
	document.getElementById(id).style.visibility = 'visible'; 
//	document.getElementById(id).visible= true;
}

function InVisible_Block(id)
{

document.getElementById(id).style.visibility = 'hidden'; 
}

function Get_Value(id)
{
	if (id!="")
		return document.getElementById(id).value;
	return null;
}

function Set_Value(id, value)
{
	return document.getElementById(id).value = value;
}
