/*==============================================================================

PROYECTO  : rpuerto web
NOMBRE    : /js/global.js
FECHA     : 20-ABR-07
AUTOR     : Ricardo Puerto <rpuerto@veoveo.es>
COPYRIGHT : Copyright (c) 2007 Ricardo Puerto

SUMARIO

Funciones javascript de uso general para ejecución en cliente.

==============================================================================*/


/*------------------------------------------------------------------------------
Recupera un documento XML.
'url' es la URL (relativa o completa) del archivo XML cuyo Content-Type es un
tipo XML válido (como por ejemplo, 'text/xml'). La URL debe estar en el mismo
dominio que el archivo HTML.
'fn' es la función a llamar cuando el archivo se haya recuperado (la operación
es asíncrona). A fn le es pasado un objeto req y un valor val. El objeto req
contiene en responseText los datos recuperados en formato texto y en
responseXML los datos recuperados en formato XML.
'val' es un valor a pasar a fn.
Refs: [1] http://developer.apple.com/internet/webcontent/xmlhttpreq.html
------------------------------------------------------------------------------*/

var req, reqfn, reqval;

function loadXMLDoc(url, fn, val){
	reqfn = fn;
	reqval = val;
	if(window.XMLHttpRequest){
		req = new XMLHttpRequest();
		req.onreadystatechange = _reqchange;
		req.open("GET", url, true);
		req.send(null);
	}else
	if(window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if(req){
			req.onreadystatechange = _reqchange;
			req.open("GET", url, true);
			req.send();
		}
	}
}

function _reqchange(){
	if(req.readyState == 4 && req.status == 200)
		reqfn(req, reqval);
}

/*------------------------------------------------------------------------------
Comprueba que una dirección de e-mail sea sintácticamente correcta.
'adr' es la dirección de e-mail a comprobar.
Nota: Adicionalmente comprueba que los dominios tras la arroba sean al menos
dos y que no haya ninguno vacío.
Nota: Traducción literal de CheckEMailAddr() en /inc/fn.php.
Refs: [1] RFC 2822 cap 3.4.1 (http://rfc.net/rfc2822.html)
------------------------------------------------------------------------------*/

function checkEMailAddr(adr){
	var a, j;
	if(!adr.match(new RegExp("^[-!#$%&'*+./0-9=?@A-Z^_`a-z{|}~]+$")))
		return false;
	a = adr.split("@");
	if(a.length != 2 || !a[0].length)
		return false;
	a = a[1].split(".");
	if(a.length < 2)
		return false;
	for(j = 0; j < a.length; j++)
		if(!a[j].length)
			return false;
	return true;
}

/*------------------------------------------------------------------------------
Elimina los espacios blancos de principio y final de cadena.
Nota: Equivalente a la función trim() de PHP.
------------------------------------------------------------------------------*/

function trim(str){
	return str.replace(/^[ \t\n\r\0\x0B]+/g, "").replace(/[ \t\n\r\0\x0B]+$/g, "");
}
