/******************************************************************
***			Ing. Juan Pablo Ballesteros Quintero				***
***			Ingeniero de Sistemas								***
***			Universidad Industrial de Santander					***
******************************************************************/

/*Funcion para validar y permitir solo numeros en campo de formulario*/

function validar_numeros(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8) return true; //Tecla de retroceso (para poder borrar)
    // dejar la línea de patron que se necesite y borrar el resto
    //patron =/[A-Za-z]/; // Solo acepta letras
    patron = /\d/; // Solo acepta números
    //patron = /\w/; // Acepta números y letras
    //patron = /\D/; // No acepta números
    //
    te = String.fromCharCode(tecla);
    return patron.test(te); 
} 

/*Funcion para validar y permitir solo letras en campo de formulario (sin tildes)*/

function validar_letras(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8) return true; //Tecla de retroceso (para poder borrar)
    // dejar la línea de patron que se necesite y borrar el resto
    patron =/[A-Za-z]/; // Solo acepta letras
    //patron = /\d/; // Solo acepta números
    //patron = /\w/; // Acepta números y letras
    //patron = /\D/; // No acepta números
    //
    te = String.fromCharCode(tecla);
    return patron.test(te); 
} 

/*Funcion para validar y permitir el numero maximo de caracteres de un textarea*/

function validar_maxcar(textarea,maxcar)
{
	var textarea = document.getElementById(textarea);
   	if(textarea.value.length > maxcar)
    {
		textarea.value = textarea.value.substr(0,maxcar);
		alert("Maximo de caracteres es " + maxcar);
    }
}

/*Funcion para convertir las letras a mayusculas durante la digitación en la caja de texto del formulario*/

function convertir_mayuscula(caja_texto)
{
	document.getElementById(caja_texto).value = document.getElementById(caja_texto).value.toUpperCase();
}

/*Funcion para convertir las letras a minusculas durante la digitación en la caja de texto del formulario*/

function convertir_minuscula(caja_texto)
{
	document.getElementById(caja_texto).value = document.getElementById(caja_texto).value.toLowerCase();
}

/*Funcion para validar correos electrónicos en un formulario*/

function validar_email(caja_texto)
{
	if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById(caja_texto).value)))
	{
		alert("El correo es invalido");
		document.getElementById(caja_texto).value = "";	
	}	
}

/* Funcion para crear una instancia del objeto XMLHTTPRequest
XMLHTTPRequest es una interfaz empleada para realizar peticiones HTTP y HTTPS a servidores WEB*/

function createREQ()
{
	try
	{
		req = new XMLHttpRequest(); /* p.e. Firefox */
    }
	catch(err1)
	{
		try
		{
			req = new ActiveXObject('Msxml2.XMLHTTP'); /* algunas versiones IE */
			
		}
		catch (err2) 
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP"); /* algunas versiones IE */
			}
			catch (err3)
			{
				req = false;
			}
		}
     }
     return req;
}

/*Funcion que nos permite llevar a cabo las peticiones GET
url es a donde se envia la peticion, query es la peticion & req es la instancia del objeto XMLHttpRequest*/

function requestGET(url, query, req)
{
	myRand=parseInt(Math.random()*99999999);
	req.open("GET",url+'?'+'query'+'&rand='+myRand,true);
	req.send(null);
}

/*Funcion que nos permite llevar a cabo las peticiones POST
url es a donde se envia la peticion, query es la peticion & req es la instancia del objeto XMLHttpRequest*/

function requestPOST(url, query, req)
{
	req.open("POST", url,true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(query);
}

/*Funcion que determina si la repuesta a recibir sera como texto o XML
callback nombre de la funcion a utilizar como funcion de respuesta, item indica como manejar los datos devueltos si como texto o XML*/

function doCallback(callback,item) 
{
	eval(callback + '(item)');
}

/*Funcion que permite que interactue toda la libreria
url es a donde se envia la peticion, query es la peticion, callback nombre de la funcion a utilizar como funcion de respuesta, reqtype es el tipo de peticion GET o POST, getxml determina el tipo de datos 0 xml o 1 text*/

function doAjax(url,query,callback,reqtype,getxml)
{
	// crea la instancia del objeto XMLHTTPRequest 
	var myreq = createREQ();
	myreq.onreadystatechange = function() 
	{
		if(myreq.readyState == 4)
		{
			if(myreq.status == 200)
			{
				var item = myreq.responseText;
				if(getxml==1) 
				{
					item = myreq.responseXML;
				}
				doCallback(callback, item);
			}
		}
	}
	if(reqtype=='post') 
	{
		requestPOST(url,query,myreq);
	}
	else
	{
		requestGET(url,query,myreq);
	}
}
