/*

Funciones.js - Copyright 2002-2008 by CoNE

*/

function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
		}
	}
	return xmlhttp; 
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="txtPais";
listadoSelects[1]="txtProvincia";

var listadoSelectsClio=new Array();
listadoSelectsClio[0]="txtClio";
listadoSelectsClio[1]="txtModelo";

// buscarEnArray
// Busca un dato en un array
function buscarEnArray(array, dato)
{
	// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
	var x=0;
	while(array[x])
	{
		if(array[x]==dato) return x;
		x++;
	}
	return null;
}

// cargaContenido
// Carga el contenido de un Combo
// Se usa para los combos de país, provincia, ciudad, etc.
function cargaContenido(idSelectOrigen)
{
	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);
	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	if(opcionSeleccionada==0)
	{
		var x=posicionSelectDestino, selectActual=null;
		// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
		while(listadoSelects[x])
		{
			selectActual=document.getElementById(listadoSelects[x]);
			selectActual.length=0;		
			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="<Seleccionar>";
			selectActual.appendChild(nuevaOpcion);	selectActual.disabled=true;
			x++;
		}
	}
	// Compruebo que el select modificado no sea el ultimo de la cadena
	else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
	{
		// Obtengo el elemento del select que debo cargar
		var idSelectDestino=listadoSelects[posicionSelectDestino];
		var selectDestino=document.getElementById(idSelectDestino);
		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "combos.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;	
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}
}

function cargaContenidoClio(idSelectOrigen)
{
	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionSelectDestino=buscarEnArray(listadoSelectsClio, idSelectOrigen)+1;
	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);
	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	if(opcionSeleccionada==0)
	{
		var x=posicionSelectDestino, selectActual=null;
		// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
		while(listadoSelectsClio[x])
		{
			selectActual=document.getElementById(listadoSelectsClio[x]);
			selectActual.length=0;		
			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="<Seleccionar>";
			selectActual.appendChild(nuevaOpcion);	selectActual.disabled=true;
			x++;
		}
	}
	// Compruebo que el select modificado no sea el ultimo de la cadena
	else if(idSelectOrigen!=listadoSelectsClio[listadoSelects.length-1])
	{
		// Obtengo el elemento del select que debo cargar
		var idSelectDestino=listadoSelectsClio[posicionSelectDestino];
		var selectDestino=document.getElementById(idSelectDestino);
		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "combosclio.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;	
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}
}

// Buscar
// Consulta la existencia de un campo en una tabla
// Argumentos:
// ID		es el objeto de destino, por ej un textbox
// CAMPO	es el campo
// BUSCADO	es el valor buscado del campo
// Devuelve true si existe o false si no.
function Buscar(id,tabla,campo,buscado) {
	var ajax=nuevoAjax();
	if (buscado!=='') {
		ajax.open("GET", "consultasql.php?campo="+campo+"&tabla="+tabla+"&buscado="+buscado, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras se busca pongo un texto que dice "Buscando..."
				document.getElementById(id).value = "Buscando...";
				document.getElementById(id).disabled = true;
			}
			if (ajax.readyState==4)
			{
				document.getElementById(id).disabled = false;
				if (ajax.responseText) {
					alert ('Ya existe ese/a '+campo+' en la base de datos.');
					document.getElementById(id).value = "";
				} else {
					document.getElementById(id).value = buscado;
				}
			} 
		}
	}
	ajax.send(null);
}

// TraerRegistro
// Trae un registro de una tabla
// Argumentos:
// ID		es el objeto de destino, por ej un textbox
// CAMPO	es el campo buscado
// TABLA	es la tabla en la que se va a buscar
// FILTRO	es la condición
// Devuelve el campo buscado o "no encontrado"
function TraerRegistro(id,campo,tabla,filtro) {
	var ajax=nuevoAjax();
	if (campo!=='') {
		ajax.open("GET", "consultasql.php?campo="+campo+"&tabla="+tabla+"&filtro="+filtro, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras se busca pongo un texto que dice "Buscando..."
				document.getElementById(id).value = "Buscando...";
				document.getElementById(id).disabled = true;
			}
			if (ajax.readyState==4)
			{
				document.getElementById(id).disabled = false;
				if (ajax.responseText) {
					document.getElementById(id).value = ajax.responseText;
				} else {
					document.getElementById(id).value = "no encontrado";				
				}
			} 
		}
	}
	ajax.send(null);
}

// Cambia el color de fondo de un objeto si está lleno o no
// Sirve para resaltar campos obligatorios
function Actualiza(objeto) {
	if (trim(document.getElementById(objeto).value)!=='' || trim(document.getElementById(objeto).value)!==0) {
		document.getElementById(objeto).className = "input";
	} else {
		document.getElementById(objeto).className = "inputreq";
	}
}

// trim
// Saca espacios en una cadena
// Argumento: la cadena
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


// guardar_idioma
// Graba el idioma elegido en una variable de sesión y refrezca la página actual
// Argumento: el ID del idioma a guardar
function guardar_idioma(ididioma) {
	var ajax=nuevoAjax();
	if (ididioma!=='') {
		ajax.open("GET", "guardar_idioma.php?lang="+ididioma, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras ejecuta la función no hago nada
			}
			if (ajax.readyState==4)
			{
				if (ajax.responseText) {
					// Se ejecutó sin problemas
					// cargo de nuevo la página para actualizar el cambio de idioma
					window.location.reload();
				}
			} 
		}
	}
	ajax.send(null);
}

// isEmailAddress
// Verifica una dirección de email
// Argumento: la dirección de email
function isEmailAddress(email)
{
	var s = email.value;
	var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
	if (filter.test(s))
		return false;
	else
		return true;
}

// doPrint
// Imprime una ventana sin mostrar botones ni nada
// Argumento: ID que es el <div> de lo que se quiere imprimir
function doPrint(id)
{
	var area_impresion = document.getElementById(id);
	var ventana_impresion = window.open('','popimpr','status=0,toolbar=0');
	ventana_impresion.document.write('<link href="styles.css" rel="stylesheet" type="text/css" />')
	ventana_impresion.document.write( area_impresion.innerHTML );
	ventana_impresion.document.close();
	ventana_impresion.print( );
	ventana_impresion.close();
}

function cargar_captcha(id,destino) {
	var ajax=nuevoAjax();
	// Genero el codigo de captcha
	var cadena = "abcdefghijklmnopqrstuvwxyz0123456789";
	var largo = 6;
	var codigo = "";
	for (a=0;a<largo;a++)
	codigo += cadena.charAt( parseInt( cadena.length * Math.random() ) );
	ajax.open("GET", "captcha.php", true);
	ajax.onreadystatechange=function() { 
		if (ajax.readyState==1) {
			// Mientras ejecuta la función no hago nada
			document.getElementById(id).innerHTML = "Generando...";
		}
		if (ajax.readyState==4) {
				if (ajax.responseText) {
					// Se ejecutó sin problemas
					document.getElementById(id).innerHTML = "<img src=\"captcha.php?codigo="+codigo+"\" width=\"100\" height=\"30\" vspace=\"3\">";
					document.getElementById(destino).value = codigo;
				}
			} 
	}
	ajax.send(null);
}

function esNumero(evt) {
	var charCode = (evt.which) ? evt.which : event.keyCode
	if ( charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46 ) {
		return false;
	} else {
		return true;
    }
}

// Solo deja teclear números y guiones para ingresar un telefono
function esNumeroTelefono(evt) {
	var charCode = (evt.which) ? evt.which : event.keyCode
	if ( charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=45 ) {
		return false;
	} else {
		return true;
    }
}

// Solo deja teclear números
function numerico(obj){ 
	var tecla = window.event.keyCode;
	if (48<=tecla && tecla<=57){
	} else {
		window.event.keyCode=0;
	}
} 

// Solo deja teclear números, el punto, la coma y los dos puntos
// Se usa para los tiempos de 1/4 de milla o la aceleración
function numericoplus(obj){ 
	var tecla = window.event.keyCode;
	if (48<=tecla && tecla<=57 || tecla==44 || tecla==46 | tecla==58){
	} else {
		window.event.keyCode=0;
	}
} 

// Solo deja teclear letras y números
function alfanumerico(obj){ 
	var tecla = window.event.keyCode;
	if(65<=tecla && tecla<=90 || 97<=tecla && tecla<=122 || 48<=tecla && tecla<=57){
	} else {
		window.event.keyCode=0;
	}
}

function toggle_visibility(id) {
	var e = document.getElementById(id);
	if(e.style.display == 'block') {
		e.style.display = 'none';
	} else {
		e.style.display = 'block';
	}
}

function toggle_visibility_otro(value,id) {
	alert (id);
	var e = document.getElementById(id);
	if(value != -1) {
		e.style.display = 'none';
	} else {
		e.style.display = 'block';
	}
}