/*
	-------  Base 1.1, 2003 Jdr@pixarnet.com -----------
		Funciones generales de desarrollo
	----------------------------------------------------
*/

/**
 * Devuelve un nombre identificador del navegador que se está usando
 *
 * @return MZ:Mozilla NS:Netscape IE: MSExplorer
 */
function browserInfo(){
	var agn=navigator.userAgent.toLowerCase(); 
	
	var isMozilla=agn.indexOf("mozilla")!=-1; 
	var isGecko=agn.indexOf("gecko")!=-1; 
	var isIE=agn.indexOf("msie")!=-1; 
	
	if (isMozilla && isGecko){ result_name="MZ"	} else if (isMozilla && !isIE){	result_name="NS" } else if (isIE){ result_name="IE"	}

	return result_name; 
}

/**
 * Emula el comportamiento de los eventos de Explorer en Mozilla 
 * @source http://webfx.eae.net/dhtml/ieemu/
 * @return void
 */	
	if (window.addEventListener){
		HTMLElement.prototype.attachEvent = window.attachEvent = function (sType, fHandler) {
		   fHandler._ieEmuEventHandler = function (e) { window.event = e; window.event.toElement=e.relatedTarget; window.event.srcElement=e.currentTarget; return fHandler(); };
		   this.addEventListener(sType.replace(/on/, ""), fHandler._ieEmuEventHandler, false);
		};
		window.addEventListener( "DOMContentLoaded", function(){
			if (document.readyState==undefined){ document.readyState="complete"; };
			if (!document.onreadystatechange){	document.onreadystatechange=function(){}}
			document.onreadystatechange();
		}, true )
	}
	

/**
 * Asigna a una variable un valor por defecto si es null
 * @return void
 */
 
 	isset=isnull=function (variable,defecto){
		eval("var valor=typeof("+variable+")");
		return ((valor!="undefined")  ? valor: (defecto || false));
	}	
	
	
/**
 * Extensión por expando del objeto Window. Permite apilar eventos onload del documento
 */
	 
	window.pxQUE=new Array();
	window.pxQUEstart=function(){
		for (var j=0; j<this.pxQUE.length;j++){
			var q=this.pxQUE[j]; 
			if (typeof(q)=="string"){
				eval(this.pxQUE[j]); 
			} else if (q instanceof Array) {
				this.pxQUE[i][0].apply(this,this.pxQUE[j][1]); 
			} else if (q instanceof Function) {
				this.pxQUE[j](); 
			} else if (q!=null){
				alert("Tipo de objeto no contemplado - "+q); 
			}; 
		}; 
	}; 
	window.pxQUEadd=function(f,args){
		this.pxQUE_override(); 
		if (f!=null ){ 
			if (args instanceof Array){
				this.pxQUE.push([f,args]); 
			} else if (f!=window.pxQUEstart){
				this.pxQUE.push(f); 
			}; 
		}; 
		window.onload=window.pxQUEstart; 
	}; 
	
	window.pxQUE_override=function(){
		if (typeof(window.onload)=="function"){
			if (window.onload!=window.pxQUEstart){
				this.pxQUE.push(onload); 
			}; 
		}; 
		window.onload=window.pxQUEstart; 
	}; 
	
	window.pxQUE_killbodyonload=function(){
		$body=document.body; 
		if ($body && $body.getAttribute("onload") && ($body.getAttribute("onload")!=window.pxQUEstart)){
			this.pxQUE.push($body.getAttribute("onload")); 
			$body.setAttribute("onload",""); 
		};
		window.onload=window.pxQUEstart; 
	}; 

/* MOZILLA */
	if (window.addEventListener){
		//window.addEventListener( "load", window.pxQUE_killbodyonload, true );
		window.addEventListener( "DOMContentLoaded", window.pxQUE_killbodyonload, true );
	}; 
/* MSExplorer */
	document.onreadystatechange=function ()	{
	   if (document.readyState=="complete")	   {  window.pxQUE_killbodyonload() }; 
	};

/**
 * Devuelve si un nodo es hijo de otro
 *
 * @return true|false
 */
	document.hasParentNode=function(a,p){
		var e=a; while (e && (e.parentNode!=null)){ if (e==p){ return true } else { e=e.parentNode } }; return false; 
	}; 



