/**
 * Libreria de funciones JScript para mejorar la experiencia del usuario
 * generando efectos visuales.
 * @author Joseph Bergin
 * @version 1.70
 */


/**
* Dado un <strong>ID</strong> de un elemento html
* y su tamaÃ±entra el objeto en la pantalla teniendo en cuenta
* la medida del area utlizable de la pantalla.
* @param  objId  un ID especifico del elemento HTML que se desea
*				 centrar en pantalla
*         height El alto del objeto HTML que se desea centrar.
*         width  El ancho del objeto HTML que se desea centrar.
*/
function centerObjectInScreen(objId, height, width)
{
	var frame = document.getElementById(objId);
	if(frame)
	{
		var wid = null;
		var hit = null;
		if (window.innerWidth)
		{
			wid = window.innerWidth;
			hit = window.innerHeight;
		}
		else
		{
			wid = document.body.clientWidth;
			hit = document.body.clientHeight;
		}
		frame.style.left = (wid - width) / 2;
		frame.style.top = (hit - height) / 2;
		frame.style.display = 'block';
	}
}

/**
* FunciÃ³e inicializaciÃ³ara la pÃ¡na de Mantenimiento y
* la pÃ¡na de log-in. Alinea el contenido de la pantalla hacia el
* centro de la misma y establece un handler al evento onresize
* (Se dispara cuando se cambia el tamaÃ±e la ventana).
*/
function startup()
{
	window.onresize = alignMe
	alignMe();
}


function Seleccionar_Todos() {
	var elems = document.FRMListado.elements;
	for (var i=0;i<elems.length;i++) {
		var e = elems[i];
		if ((e.name != 'cktodos') && (e.type=='checkbox')) {
			e.checked = (document.FRMListado.cktodos.checked);
		}
	}
}




/**
 * FunciÃ³ara el alineamiento de las pÃ¡nas de Mantenimiento y Log-In,
 * con las medidas especificas y de las paginas (en pixels) y el ID del objeto.
 */
function alignMe()
{
	centerObjectInScreen('frame',443,770);
}

/**
 * FunciÃ³ara resaltar un objeto estableciendole la clase <em>selected<em> a si mismo,
 * asi como a su primer nodo hijo.
 * @param  sender  objeto Html que efectuo la llamada a la funciÃ³ */
function highlight(sender)
{
	var child = sender.firstChild;
	child.className = sender.className = 'selected';
}

/**
 * FunciÃ³ara quitar el resaltado a un objeto estableciendole quitandole la clase a si mismo,
 * asi como a su primer nodo hijo.
 * @param  sender  objeto Html que efectuo la llamada a la funciÃ³ */
function unHighlight(sender)
{
	var child = sender.firstChild;
	child.className = sender.className = '';
}


/**
 * FunciÃ³ara mostrar un error en el formulario.
 */
function showError()
{
	 //Elemento HTML SPAN que contiene el error.
	 var errorMessage = document.getElementById('fechaFinError');
	 //Elemento HTML INPUT en el cual se genero el error.
	 var inputControl = document.getElementById('TxtFechaFin');
	 /* Elemento HTML DIV contenedor de mensajes en
	  * la parte superior del formulario
	  */
	 var message = document.getElementById('message');

	 if( message && inputControl && errorMessage)
	 {
		if( errorMessage.style.visibility != 'visible' )
		{
			errorMessage.style.visibility = 'visible';
			errorMessage.title = 'La fecha ingresada no corresponde con el formato dd/mm/yyyy';
			inputControl.style.background = '#FFCCCC';
			inputControl.focus();
			message.style.visibility = 'visible';

		}
		else
		{
			errorMessage.style.visibility = 'hidden';
			inputControl.style.background = '#FFFFFF';
			message.style.visibility = 'hidden';

		}
	}
}

/**
 * FunciÃ³ara reslatar el elemento HTML SPAN que contiene el mensaje de error.
 */
function alertThis(source)
{
	source.className = 'errorOver';
}

/**
 * FunciÃ³ara quitar el reslatado el elemento HTML SPAN
 * que contiene el mensaje de error.
 */
function unAlertThis(source)
{
	source.className = 'error';
}

/**
 * FunciÃ³ara cambiar el icono del
 * listado que muestra el ordenamiento de una columna
 */


 /*
 FUNCIONES ajax2
 */
function changerSortOrder(source)
{
	if (source.src.indexOf('up') > 0)
	{
		source.src = 'sorted.gif';
		return;
	}
	source.src = 'sorted_up.gif';
}
/*
function createRequestObject(){
	var request_o; //declare the variable to hold the object.
	var browser = navigator.appName; //find the browser name
	if(browser == "Microsoft Internet Explorer"){
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		request_o = new XMLHttpRequest();
	}
	return request_o; //return the object
}
*/

function LimpiarContenido(NombreContenedor){
//	alert('Contenedor ' + NombreContenedor);
	var contenedor;
	contenedor = document.getElementById(NombreContenedor);
	contenedor.innerHTML = '';
}

function CambiarVisibilidad(contenedor){
	var div;
	if (document.getElementById) { // DOM3 = IE5, NS6
		 div = document.getElementById(contenedor)
		 div.style.display = (div.style.display=="block" ? "none" : "block");
	}
	else {
		if (document.layers) { // Netscape 4
		    document.contenedor.display = (document.contenedor.display=="block" ? "none" : "block");

		}
		else { // IE 4
		    document.all.contenedor.style.display = (document.all.contenedor.style.display=="block" ? "none" : "block");

		}
	}
}

function hidediv(contenedor) {

	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(contenedor).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.contenedor.display = 'none';
		}
		else { // IE 4
			document.all.contenedor.style.display = 'none';
		}
	}
}

function showdiv(contenedor) {
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(contenedor).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.contenedor.display = 'block';
		}
		else { // IE 4
			document.all.contenedor.style.display = 'block';
		}
	}
}

function cargarContenido(NombreContenedor, Accion, Parametros,Asinc){
//	alert('Accion: ' + Accion + ' Parametros: ' + Parametros);
	var contenedor;
	var Asinc = (Asinc == null) ? true : false;
	var Parametros = (Parametros == null) ? '' : Parametros;
	contenedor = document.getElementById(NombreContenedor);
	ajax = createRequestObject();
	contenedor.innerHTML = "<img src='images/loading.gif'><font size=2> Cargando...</font>";
	ajax.open("GET", 'opciones.php?accion=' + Accion + '&parametros=' + Parametros, Asinc);

	ajax.onreadystatechange=function() {

		if(ajax.readyState!=4) {
		//	contenedor.innerHTML = "<img src='images/loading1.gif'><font size=2> Cargando...</font>";
			estadoGlobal = ajax.readyState;
		}
		if (ajax.readyState==4) {
		   contenedor.innerHTML = ajax.responseText;

		}
	}

	ajax.send(null);
}

function CrearComboZonas(NombreContenedor){
	CrearCombo(NombreContenedor, 'includes/xml_combos.php','ListadoZonas', '');
}

function CrearComboDocumentos(NombreContenedor){
	CrearCombo(NombreContenedor, 'includes/xml_combos.php','ListadoDocumentos', '');
}

function Cargando(contenedor){
		contenedor.innerHTML = "<img src='images/loading.gif'><font size=2> Cargando...</font>";
}

function CrearCombo(NombreContenedor, url, Accion, Parametros,Asinc){
//	alert('Accion: ' + Accion + ' Parametros: ' + Parametros);
	var contenedor;
	var Asinc = (Asinc == null) ? true : false;
	var Parametros = (Parametros == null) ? '' : Parametros;

	contenedor = document.getElementById(NombreContenedor);
	 AjaxRequest.get(
		{
		  	'url': url + '?accion=' + Accion + '&parametros=' + Parametros
		   	,'onLoading':function() { Cargando(contenedor) }
			,'onLoaded':function() { Cargando(contenedor) }
			,'onInteractive':function() { Cargando(contenedor) }
			,'onComplete':function() { Cargando(contenedor) }
			,'onSuccess':function(req){
					contenedor.innerHTML ='';
					var longitudXML = req.responseXML.getElementsByTagName('item').length;
					var comboItem;
					/** Creo el nuevo combo */
					var NuevoCombo = document.createElement('select');
					/** Le coloco el ID */
					NuevoCombo.id = 'Combo' + contenedor.id;
					/* Itero sobre los resultados del xml para crear las opciones */
					for(var i=0;i<=longitudXML-1;i++){
						comboItem = req.responseXML.getElementsByTagName('item')[i];
						/* Nueva opcion para el combo */
						var NuevaOpcion = document.createElement('option');
						/* Le pongo el valor a la opcion con lo que saco via DOM del XML */
						NuevaOpcion.value = comboItem.getElementsByTagName('value')[0].firstChild.nodeValue;
						/* El texto se lo pongo como un hijo tipo texto de la opcion */
						NuevaOpcion.appendChild(document.createTextNode(comboItem.getElementsByTagName('text')[0].firstChild.nodeValue));
						/* Agrego la opcion creada al combo*/
						NuevoCombo.appendChild(NuevaOpcion);
					}
//		   			contenedor.innerHTML = NuevoCombo;
					/* Agrego el combo al contenedor del mismo */
					contenedor.appendChild(NuevoCombo);
			 }
		}
	  );

}

//Para que el iframe tome el tamaño del contenido
function resizeMe(obj){
docHeight = obj.document.body.scrollHeight
 obj.style.height = docHeight + 'px'
 }

function LlenarDiv(NombreContenedor, url, parametros){

	var contenedor
	var url
	contenedor = document.getElementById(NombreContenedor);
	if (parametros==null){
		parametros = {t:1}
	}
	AjaxRequest.get(
	{
		'url': url
		,'onLoading':function() { Cargando(contenedor) }
		,'onLoaded':function() { Cargando(contenedor) }
		,'onInteractive':function() { Cargando(contenedor) }
		,'onComplete':function() { Cargando(contenedor) }
		,'onSuccess':function(req){
				contenedor.innerHTML ='';
				contenedor.innerHTML = req.responseText;
				}
		,'parameters':parametros
		, 'onError':function(req){ contenedor.innerHTML = req.statusText}
	}
	);
}

function TraerElemento(Nombre){
	if (document.getElementById(Nombre)){
		return document.getElementById(Nombre);
	} else if(document.getElementsByName(Nombre)[0]){
		var elemento = document.getElementsByName(Nombre)[0]
		elemento.setAttribute('id', elemento.name);
		return elemento;
	} else {
		alert('No se puede encontrar elemento para validar su contenido')
		return false;
	}

}
function ValidarString(NombreCampo, Minimo, Maximo){
	if (!TraerElemento(NombreCampo)){
		return false;
	}
	var Campo = TraerElemento(NombreCampo);
	if (Campo.value.length > Maximo || Campo.value.length < Minimo){
		return false;
	} else {
		return true;
	}
}

function ValidarSelect(NombreCampo){
	if (!TraerElemento(NombreCampo)){
		return false;
	}
	var Campo = TraerElemento(NombreCampo);
	if (Campo.selectedIndex == 0){
		return false;
	} else {
		return true;
	}
}


function MarcarError(Campo){
	Campo.className = 'error';
	var NuevoSpan = document.createElement('span');
	NuevoSpan.id = Campo.id + 'Error';
	NuevoSpan.className = 'errorOver';
	//NuevoSpan.setAttribute('obligatorio',true);
//	NuevoSpan.appendChild(document.createTextNode("This is a new span element. "));
//	alert(NuevoSpan.getAttribute("obligatorio"));
	var Padre = Campo.parentNode;
	Padre.insertBefore(NuevoSpan, Campo.nextSibling);;
	//alert (Padre);
//	Nuevo.appendChild(document.createTextNode(comboItem.getElementsByTagName('text')[0].firstChild.nodeValue));
}

function DesMarcarError(Campo){
	Campo.className = 'normal';
	var SpanError = document.getElementById(Campo.id + 'Error');
	if (SpanError){
		SpanError.className = 'normal';
	}
}

function ValidaIngresoSoloNumeros(){

		var key=window.event.keyCode;//codigo de tecla.

		if (key < 47 || key > 57)
		{//si no es numero
			window.event.keyCode=0;//anula la entrada de texto.
		}
}


function limita(maximoCaracteres) {
	var nav4 = window.Event ? true : false;



  var elemento = document.getElementById("expensas");
  if(elemento.value.length >= maximoCaracteres ) {

    alert('Has superado el tamaño máximo permitido');
    return false;


  }
  else {
    return true;
  }
}

function valida_longitud(){
contenido_textarea = ""
num_caracteres_permitidos = 10
   num_caracteres = document.forms[0].texto.value.length

   if (num_caracteres > num_caracteres_permitidos){
      document.forms[0].texto.value = contenido_textarea
   }else{
      contenido_textarea = document.forms[0].texto.value
   }

   if (num_caracteres >= num_caracteres_permitidos){
      document.forms[0].caracteres.style.color="#ff0000";
   }else{
      document.forms[0].caracteres.style.color="#000000";
   }

   cuenta()
}
function cuenta(){
   document.forms[0].caracteres.value=document.forms[0].texto.value.length
}
function validaNum(ingreso,num_min,num_max){
//alert(ingreso.value);
	variable = parseFloat(ingreso.value);
	//alert(variable);
	if (variable > num_max || variable < num_min)
	{
		alert("El numero ingresado debe ser mayor a "+num_min+" y menor a "+num_max);
		ingreso.focus();
		return false;
	}else
	{
		return true;
	}
}

function Validar(form){
	this.form = document.getElementById(form);;
	this.resultado = true;
	this.custom = function(){}
	this.prefijada = function(){
		//alert(this.form)
		var resultado = true;
		var CamposInput = this.form.getElementsByTagName('input');
		for (var i=0; i < CamposInput.length;i++){
			if(CamposInput[i].getAttribute("validar") == 'true'){
				DesMarcarError(CamposInput[i]);
				if (!ValidarString(CamposInput[i].name, CamposInput[i].getAttribute("vMinimo"), CamposInput[i].getAttribute("vMaximo"))){
					MarcarError(CamposInput[i]);
					resultado = false;
				}
			}
		}
		var CamposSelect = this.form.getElementsByTagName('select');
		for (var i=0; i < CamposSelect.length;i++){
		//alert(CamposSelect[i].getAttribute("validar")	);
		if(CamposSelect[i].getAttribute("validar") == 'true'){
				DesMarcarError(CamposSelect[i]);
				if (!ValidarSelect(CamposSelect[i].id)){
					MarcarError(CamposSelect[i]);
					resultado = false;
				}
			}
		}
		var CamposArea = this.form.getElementsByTagName('textarea');
		for (var i=0; i < CamposArea.length;i++){
		//alert(CamposSelect[i].getAttribute("validar")	);
		if(CamposArea[i].getAttribute("validar") == 'true'){
				DesMarcarError(CamposArea[i]);
				if (!ValidarString(CamposArea[i].name, CamposArea[i].getAttribute("vMinimo"), 10000000)){
					MarcarError(CamposArea[i]);
					resultado = false;
				}
			}
		}


	return resultado
	}
	this.hacer=function(){
			var resultado = true
			resultado = this.prefijada();
			this.resultado = resultado;
			//alert(this.resultado)
	}
	this.submit=function(){
		if (this.resultado)
			this.resultado = submitAjax(this.form);
	}
	this.submitContenedor=function(contenedor){
		if(this.resultado)
			this.resultado = submitAjaxContenedor(this.form, contenedor);
	}

}

function Ahora(){
		var Fecha = new Date();
		return Fecha.getDate()+'/'+ (Fecha.getMonth()+1)+'/'+Fecha.getFullYear()+' - '+Fecha.getHours()+':'+Fecha.getMinutes()+':'+Fecha.getSeconds();
	}


function EscribirMensaje(texto){
	var divMensajes = document.getElementById('divMensajitos');
	var Fecha = new Date();
	divMensajes.innerHTML = '<div class=Mensaje><span class=Tiempo>'+ Ahora() + '</span><div class=TextoMensaje> ' + texto + '</div></div>';
	divMensajes.focus();
}

function submitAjaxContenedor(theform, contenedor) {
/* theform es el OBJETO form que va a ser enviado*/
var status = AjaxRequest.submit(
    theform
    ,{
		'onLoading':function() { Cargando(contenedor) }
		,'onLoaded':function() { Cargando(contenedor) }
		,'onInteractive':function() { Cargando(contenedor) }
		,'onComplete':function() { Cargando(contenedor) }
		,'onSuccess':function(req){
				contenedor.innerHTML ='';
				contenedor.innerHTML = req.responseText;
				}
		, 'parameters':{PedidoAjax:true}
		, 'onError':function(req){ contenedor.innerHTML = req.statusText}
	}
  );
  return status;
}

function submitAjax(theform) {
/* theform es el OBJETO form que va a ser enviado*/
var status = AjaxRequest.submit(
    theform
    ,{
      'onSuccess':function(req){
		  var Mensaje = req.responseXML.getElementsByTagName('Mensaje')[0].firstChild.nodeValue;
			EscribirMensaje(Mensaje)
			var CantidadVariables = req.responseXML.getElementsByTagName('Variable').length
			var NombreVariable;
			var ValorVariable;
			var ObjetoVariable;
			for(var i=0; i<CantidadVariables;i++){
				ObjetoVariable = req.responseXML.getElementsByTagName('Variable')[i]
				NombreVariable = ObjetoVariable.getAttribute('Nombre')
				ValorVariable = ObjetoVariable.getAttribute('Valor')
				if (document.getElementById(NombreVariable)){
					document.getElementById(NombreVariable).value = ValorVariable;
				}
			}
			if(req.responseXML.getElementsByTagName('Funcion')){
				var Funciones = req.responseXML.getElementsByTagName('Funcion').length
				var ObjetoFuncion
				for(var i=0; i<Funciones;i++){
					ObjetoFuncion = req.responseXML.getElementsByTagName('Funcion')[i]
					eval(ObjetoVariable.firstChild.nodeValue);
				}
			}

		}

	, 'parameters':{PedidoAjax:true}
	}
  );
  return status;
}

function cambiarImagen(Elemento, Imagen1, Imagen2){
	if (this.src == Imagen1)
		this.src = Imagen2
	else
		this.src = Imagen1
}

function LlenarDiv2(NombreContenedor, url, parametros){

	var contenedor
	var url
	contenedor = document.getElementById(NombreContenedor);
	if (parametros==null){
		parametros = {t:1}
	}
	AjaxRequest.get(
	{
		'url': url
		,'onLoading':function() { Cargando(contenedor) }
		,'onLoaded':function() { Cargando(contenedor) }
		,'onInteractive':function() { Cargando(contenedor) }
		,'onComplete':function() { Cargando(contenedor) }
		,'onSuccess':function(req){
			contenedor.innerHTML ='';
			if(req.responseXML.getElementsByTagName('Texto')){
			var Respuesta = req.responseXML.getElementsByTagName('Texto')[0].firstChild
			var RespuestaTexto = Respuesta.nodeValue;
		//	alert(Respuesta.nodeName)
			//alert(Respuesta.nodeType)
			//alert(Respuesta.hasChildNodes())
//			RespuestaTexto = RespuestaTexto.replace('&amp;', '&');
		//	 RespuestaTexto = RespuestaTexto.replace('&lt;', '<');
				// RespuestaTexto = RespuestaTexto.replace('&gt;', '>');
			 contenedor.innerHTML = RespuestaTexto;
			}

			if(req.responseXML.getElementsByTagName('Mensaje')[0].hasChildNodes()){
				var Mensaje = req.responseXML.getElementsByTagName('Mensaje')[0].firstChild.nodeValue;
				EscribirMensaje(Mensaje)
			}
			if (req.responseXML.getElementsByTagName('Variable').length > 0){
				var CantidadVariables = req.responseXML.getElementsByTagName('Variable').length
				var NombreVariable;
				var ValorVariable;
				var ObjetoVariable;
				for(var i=0; i<CantidadVariables;i++){
					ObjetoVariable = req.responseXML.getElementsByTagName('Variable')[i]
					NombreVariable = ObjetoVariable.getAttribute('Nombre')
					ValorVariable = ObjetoVariable.getAttribute('Valor')
					if (document.getElementById(NombreVariable)){
						document.getElementById(NombreVariable).value = ValorVariable;
					}
				}
			}
			if(req.responseXML.getElementsByTagName('Funcion')){
				var Funciones = req.responseXML.getElementsByTagName('Funcion').length
				var ObjetoFuncion
				for(var i=0; i<Funciones;i++){
					ObjetoFuncion = req.responseXML.getElementsByTagName('Funcion')[i]
					eval(ObjetoFuncion.firstChild.nodeValue);
				}
			}
		}
		,'parameters':parametros
		, 'onError':function(req){ contenedor.innerHTML = req.statusText}
	}
	);
}


