var bajoIE = document.all ? true : false;

String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,'') };

function elById(id)
{
	return document.getElementById(id);
}

function elsByClass(searchClass,node,tag) {
       var classElements = new Array();
       if ( node == null )
               node = document;
       if ( tag == null )
               tag = '*';
       var els = node.getElementsByTagName(tag);
       var elsLen = els.length;
       var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
       for (i = 0, j = 0; i < elsLen; i++) {
               if ( pattern.test(els[i].className) ) {
                       classElements[j] = els[i];
                       j++;
               }
       }
       return classElements;
}

function mxPagina(e)
{
	if (bajoIE) {
		var offset = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
		return event.clientX + offset;
	} else {
		return e.pageX;
	}
}

function myPagina(e)
{
	if (bajoIE) {
		var offset = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
		return event.clientY + offset;
	} else {
		return e.pageY;
	}
}

function mxElemento(e)
{
	if (bajoIE) {
		return event.offsetX;
	} else {
		return e.layerX;
	}
}

function myElemento(e)
{
	if (bajoIE) {
		return event.offsetY;
	} else {
		return e.layerY;
	}
}

function ponerEvento(nombreEvento, manejador)
{
	if (bajoIE) {
		document.documentElement.attachEvent('on' + nombreEvento, manejador);
	} else {
		document.body.addEventListener(nombreEvento, manejador, false);
	}
}

function ponerEventoElemento(nombreEvento, manejador, elemento)
{
	if (bajoIE) {
		elemento.attachEvent('on' + nombreEvento, manejador);
	} else {
		elemento.addEventListener(nombreEvento, manejador, false);
	}
}

function lanzarEvento(elemento, nombreEvento)
{
	if (bajoIE) {
		elemento.fireEvent(nombreEvento);
	} else {
		elemento.dispatchEvent(nombreEvento);
	}
}

function enviadorEvento(e)
{
	if (bajoIE) {
		return event.srcElement;
	} else {
		return e.target;
	}
}

function cancelarEvento(e)
{
	if (bajoIE) {
		event.cancelBubble = true;
		event.returnValue = false;
	} else {
		e.stopPropagation();
		e.preventDefault();
	}
	return false;
}

function pulsarPadre(e)
{
	var padre = (bajoIE ? event.srcElement : e.target).parentNode;
	padre.click();
	return cancelarEvento();
}

function cogerNumero(valorPropiedad)
{
	return parseInt(valorPropiedad.substring(valorPropiedad.search(/(-?\d+)/)));
}

function redimensionarXY(xy, maxXY)
{
	var nuevoXY = new Array(2);
	if (xy[0] == 0 || xy[1] == 0 || maxXY[0] == 0 || maxXY[1] == 0)
	{
		nuevoXY[0] = 0;
		nuevoXY[1] = 0;
		return nuevoXY;
	}

	if (xy[0] > xy[1])
	{
		nuevoXY[0] = maxXY[0];
		nuevoXY[1] = nuevoXY[0] * xy[1] / xy[0];
		if (nuevoXY[1] > maxXY[1])
		{
			$p = maxXY[1] / nuevoXY[1];
			nuevoXY[0] *= $p;
			nuevoXY[1] *= $p;
		}
	}
	else
	{
		nuevoXY[1] = maxXY[1];
		nuevoXY[0] = nuevoXY[1] * xy[0] / xy[1];
		if (nuevoXY[0] > maxXY[0])
		{
			$p = maxXY[0] / nuevoXY[0];
			nuevoXY[0] *= $p;
			nuevoXY[1] *= $p;
		}
	}

	nuevoXY[0] = Math.floor(nuevoXY[0]);
	nuevoXY[1] = Math.floor(nuevoXY[1]);
	
	return nuevoXY;
}

function coordsAbsolutas(elem)
{
	var x = 0, y = 0;
	while (elem)
	{
		x += elem.offsetLeft;
		y += elem.offsetTop;
		elem = elem.offsetParent;
	}

	return [x, y];
}

function soportaCanvas()
{
	try {
		var canvas = document.createElement('canvas');
		if (canvas.getContext('2d')) return true;
	}
	catch (err)
	{
		return false;
	}
	return false;
}

function ponerFoco(id)
{
	var el = elById(id);
	el.focus();
	if (el.type == 'text' || el.type == 'password') el.select();
}

function getElementsByClass(searchClass, node, tag)
{
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function documentoIFrame(iframe)
{
	var doc = iframe.document;

	if (iframe.contentDocument)
		doc = iframe.contentDocument;
	else if(iframe.contentWindow)
		doc = iframe.contentWindow.document;

	return doc;
}

function trasPagarIrA(url)
{
	if (!bajoIE)
	{
		window.top.opener.top.location = url;
		window.top.close();
	}
	else
	{
		window.top.opener.location = url;
		window.top.close();
	}
}

function emailValido(str)
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
		
	 if (str.indexOf(" ")!=-1){
	    return false
	 }

	 return true					
}
