A4J.AJAX.onExpired = function(loc,expiredMsg) {
	goHome('index.faces');
}

A4J.AJAX.onError = function(req,status,message) {  
	goHome('index.faces');
}

function goHome(page) {
	//window.alert('Error - protocol='+window.location.protocol+', host='+window.location.hostname+', path='+window.location.pathname+', port'+window.location.port);
	var url = window.location.protocol+"//"+window.location.hostname;
	if (window.location.port != null && window.location.port.length > 0 && window.location.port != '80')
		url = url + ":" + window.location.port;
		
	var pos = window.location.pathname.lastIndexOf("/");
	var prefix = window.location.pathname.substring(0, pos+1);
	url = url + prefix + page;
	//alert('URL: '+url);
	window.location = url;
}

function _mng_newAjaxRequest(){
	var objetoAjax=false;
  	if (typeof XMLHttpRequest != 'undefined') objetoAjax = new XMLHttpRequest();
	
	if (!objetoAjax) {
		try { objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
			try { objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {
	     		objetoAjax = false;
	   		}
		}
	}
	
  	return objetoAjax;
}

function _mng_submitClose(pagina, event) {
	alert('CLOSE VENTANA '+window.document.body.scrollWidth+' '+window.closed);
	
	var iX = window.document.body.offsetWidth - event.clientX ;
	var iY = event.clientY;
	//alert('CLOSE VENTANA '+iX+' '+iY);
   	
   	if (document.body.clientWidth == 0) {
	   	var ajax = _mng_newAjaxRequest();
	   	ajax.open ('GET', pagina, true);
		ajax.setRequestHeader('Content-Type','text/html');
	    ajax.send(null);
    }
}

function _mng_submitAjax(pagina, capas, oncomplete) {
   	var ajax = _mng_newAjaxRequest();

   	var panels = new Array(capas.lenght);
   	for (i=0; i<capas.length; i=i+1) {
   		panels[i] = document.getElementById(capas[i]);
   	}

   	ajax.open ('GET', pagina, true);
   	ajax.onreadystatechange = function() {
		if (ajax.readyState==4){
		    if (ajax.status==200) {
		    	// Respuesta OK!!! Buscamos en el HTML de respuesta cada uno de los divs a repintar 
				if (window.ActiveXObject) {
					var doc=new ActiveXObject("Microsoft.XMLDOM");
			  		doc.async="false";
			  		doc.loadXML(ajax.responseText);
			  	}
				else {
			 		var parser=new DOMParser();
			  		var doc=parser.parseFromString(ajax.responseText,"text/xml");
			  	}
				var ajaxDoc = doc.documentElement;
				var list = ajaxDoc.getElementsByTagName("body");
				var tag = list.item(0);
				tag = tag.childNodes[0];
				if (tag.nodeType == 3 && tag.nodeValue.substr(0, 7) == "expired") {
					goHome(tag.nodeValue.substr(8));
				} else {
					var newPanels = new Array(capas.lenght);
   					for (i=0; i<capas.length; i=i+1) {
						newPanels[i] = _mng_findDiv(ajaxDoc, capas[i]);
						if (newPanels[i]) {
							if (window.ActiveXObject) {
								var innerPanel = '';
								for (j=0; j<newPanels[i].childNodes.length; j=j+1) {
									innerPanel = innerPanel + ajaxDoc.transformNode(newPanels[i].childNodes[j]);
								}
								panels[i].innerHTML = innerPanel;
							} else {
								panels[i].innerHTML = newPanels[i].innerHTML;
							}
						} 
					}
				}
				if (typeof oncomplete != 'undefined') {
					if (typeof oncomplete == 'string') eval(oncomplete);
					if (typeof oncomplete == 'function') oncomplete.call();
				}
			}
		}	
	}
	
	ajax.setRequestHeader('Content-Type','text/html');
    ajax.send(null);
    
    return
} 

function _mng_submitAjaxSync(pagina, capas) {
   	var ajax = _mng_newAjaxRequest();

   	var panels = new Array(capas.lenght);
   	for (i=0; i<capas.length; i=i+1) {
   		panels[i] = document.getElementById(capas[i]);
   	}

   	ajax.open ('GET', pagina, false);
   	
   	//ajax.setRequestHeader('Content-Type','text/html');
    ajax.send(null);
   	
	if (window.ActiveXObject) {
		var doc=new ActiveXObject("Microsoft.XMLDOM");
  		doc.async="false";
  		doc.loadXML(ajax.responseText);
  	}
	else {
 		var parser=new DOMParser();
  		var doc=parser.parseFromString(ajax.responseText,"text/xml");
  	}
	var ajaxDoc = doc.documentElement;
	var list = ajaxDoc.getElementsByTagName("body");
	var tag = list.item(0);
	tag = tag.childNodes[0];
	if (tag.nodeType == 3 && tag.nodeValue.substr(0, 7) == "expired") {
		goHome(tag.nodeValue.substr(8));
	} else {
		var newPanels = new Array(capas.lenght);
					for (i=0; i<capas.length; i=i+1) {
			newPanels[i] = _mng_findDiv(ajaxDoc, capas[i]);
			if (newPanels[i]) {
				if (window.ActiveXObject) {
					var innerPanel = '';
					for (j=0; j<newPanels[i].childNodes.length; j=j+1) {
						innerPanel = innerPanel + ajaxDoc.transformNode(newPanels[i].childNodes[j]);
					}
					panels[i].innerHTML = innerPanel;
				} else {
					panels[i].innerHTML = newPanels[i].innerHTML;
				}
			} 
		}
	}
} 

function _mng_submitAjaxXML(pagina, oncomplete) {
   	var ajax = _mng_newAjaxRequest();
   	
   	ajax.open ('GET', pagina, true);
   	ajax.onreadystatechange = function() {
		if (ajax.readyState==4){
		    if (ajax.status==200) {
		    	// Respuesta OK!!! Buscamos en el HTML de respuesta cada uno de los divs a repintar 
				if (window.ActiveXObject) {
					var doc=new ActiveXObject("Microsoft.XMLDOM");
			  		doc.async="false";
			  		doc.loadXML(ajax.responseText);
			  	}
				else {
			 		var parser=new DOMParser();
			  		var doc=parser.parseFromString(ajax.responseText,"text/xml");
			  	}
				var ajaxDoc = doc.documentElement;
				if (typeof oncomplete != 'undefined') {
					if (typeof oncomplete == 'string') eval(oncomplete);
					if (typeof oncomplete == 'function') oncomplete.call();
				}
			}
		}	
	}
	
	ajax.setRequestHeader('Content-Type','text/html');
    ajax.send(null);
    
    return
} 

function _mng_submitAjaxXMLSync(pagina) {
   	var ajax = _mng_newAjaxRequest();
   	
   	ajax.open ('GET', pagina, false);
   	
	ajax.setRequestHeader('Content-Type','text/html');
    ajax.send(null);
    
	if (window.ActiveXObject) {
		var doc=new ActiveXObject("Microsoft.XMLDOM");
  		doc.async="false";
  		doc.loadXML(ajax.responseText);
  	}
	else {
 		var parser=new DOMParser();
  		var doc=parser.parseFromString(ajax.responseText,"text/xml");
  	}
	return doc.documentElement;
} 

function _mng_findDiv (node, id) {
	var divs = node.getElementsByTagName("div");
	for (k=0; k<divs.length; k++) {
		if (divs[k].getAttribute('id') == id) {
			return divs[k];
		}
	}
	
	return null;
}


function _mng_imgFichaError(opcion, item, src) {
   	var ajax = _mng_newAjaxRequest();
   	var pagina = "errorImagen.faces?opcion="+opcion+"&item="+item+"&src="+src;
   	
   	ajax.open ('GET', pagina, true);
    ajax.send(null);
    
    return
}