//****************************************************************************************************************************//
//****************************************************************************************************************************//
//**																														**//
//**  La funcion hay que definirla o inicializarla primero con todos los parametros que se quieran cambiar.					**//
//**  Si los valores de los campos que estan por defecto no se desean cambiar simplemente se inicializa asi:				**//
//**	alertaErrores.init();																								**//
//**																														**//
//**  Pero si se desean cambiar los valores iniciales, estos son todos los valores referidos a la funcion					**//
//**  se cambian los que se deseen, el resto los toma por defecto:															**//
//**	alertaErrores.init({idioma				: "english", -> lenguaje para los botones, por defecto es "spanish"			**//
//**						ancho_capa_alert	: "500", -> ancho de la capa del alert										**//
//**						alto_capa_alert		: "200", -> alto de la capa del alert										**//
//**						ancho_capa_confirm	: "500", -> ancho de la capa del confirm									**//
//**						alto_capa_confirm	: "200", -> alto de la capa del confirm										**//
//**						ancho_capa_guardando: "500", -> ancho de la capa guardando										**//
//**						alto_capa_guardando	: "200", -> alto de la capa guardando										**//
//**						fichero_css 		: "/css/alertsEstilos.css", -> ruta del fichero de estilos					**//
//**						imagen_guardando	: "/img/loading.gif", -> ruta de la imagen que aparece con					**//
//**																	 el guardando...									**//
//**						txt_guardando		: "Guardando datos..." -> txt que aparece en guardando, por	defecto			**//
//**																	  es "Guardando..." o "Saving..."					**//
//**						txt_aceptar_alert	: "Aceptar" -> txt del boton del alert, por defecto es "Aceptar" o "OK"		**//
//**						txt_aceptar_confirm	: "Aceptar" -> txt del boton del confirm, por defecto es "Aceptar"	o "OK"	**//
//**						txt_cancelar_confirm: "Cancelar" -> txt del boton de cancelar del confirm, por defecto			**//
//**														    es "Cancelar" o "Cancel"									**//
//**						});																								**//
//**																														**//
//**  Funcionamiento:																										**//
//**	alertaErrores.init(); (Ya explicado anteriormente)																	**//
//**	alertaErrores.alert("texto", funcion(opcional cuando se clica en el boton de aceptar));								**//
//**	alertaErrores.confirm("texto", funcion(opcional cuando se clica en el boton de aceptar));							**//
//**	alertaErrores.guardando("texto" (opcional, sino aparece "Guardando..." o "Saving..."));								**//
//**	alertaErrores.ocultarGuardando(); (se puede colocar en el onload o usar para cerrar la capa de guardando)			**//
//**																														**//
//**  Ejemplo:																												**//
//**	alertaErrores.init();																								**//
//**	alertaErrores.alert("Debe insertar el nombre", function(){ document.formulario.xxxx.focus(); });					**//
//**	alertaErrores.alert({	texto : "texto del alert",																	**//
//**							onclick : function(){alert('alert prueba');},												**//
//**							focus : "nombre_campo"																		**//
//**						});																								**//
//**	alertaErrores.confirm("¿Esta seguro?", function(){ hacer_ajax("ajax.php",parametros...) });							**//
//**	alertaErrores.confirm(	"Prueba de funcionamiento",																	**//
//**							function(){	alertaErrores.alert("Prueba del alert",											**//
//**															function(){ alertaErrores.guardando("Prueba Guardando"); }	**//
//**															);															**//
//**							});																							**//
//**	alertaErrores.confirm(	texto: "Prueba de funcionamiento",															**//
//**							onclick: function(){	alertaErrores.alert("Prueba del alert",								**//
//**															function(){ alertaErrores.guardando("Prueba Guardando"); }	**//
//**															),															**//
//**							focus: "campo"																				**//
//**							});																							**//
//**	alertaErrores.guardando("Espere mientras se cargan los datos");														**//
//**	alertaErrores.guardando();																							**//
//**																														**//
//**																														**//
//****************************************************************************************************************************//
//****************************************************************************************************************************//

alertaErrores = {};

if (document.getElementsByTagName("body")[0]){
	
	alertaErrores.init = function(params) {

		if (!params) {
			var params = [];
		}
		
		function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
		
		param_default("idioma"						, "spanish");
	
		param_default("ancho_capa_alert"			, "373");
		param_default("alto_capa_alert"				, "142");
		
		param_default("ancho_capa_confirm"			, "373");
		param_default("alto_capa_confirm"			, "142");
					
		param_default("ancho_capa_guardando"		, "200");
		param_default("alto_capa_guardando"			, "50");
		
		param_default("directorio"					, "");
		
		param_default("fichero_css"					, params["directorio"]+"/css/alertsEstilos.css");			
		param_default("imagen_guardando"			, params["directorio"]+"/img/loading.gif");
		param_default("imagen_cerrar"				, params["directorio"]+"/img/close.png");
		
		if (params["idioma"] == "spanish") {
			param_default("txt_guardando"				, "Guardando...");
			
			param_default("txt_aceptar_alert"			, "Aceptar");
			
			param_default("txt_aceptar_confirm"			, "Aceptar");
			param_default("txt_cancelar_confirm"		, "Cancelar");
			
		} else if (params["idioma"] == "english") {
			param_default("txt_guardando"				, "Guardando...");
		
			param_default("txt_aceptar_alert"			, "&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;");
			
			param_default("txt_aceptar_confirm"			, "&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;");
			param_default("txt_cancelar_confirm"		, "Cancel");
		} else {
		
			param_default("txt_aceptar_alert"			, "&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;");
			
			param_default("txt_aceptar_confirm"			, "&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;");
			param_default("txt_cancelar_confirm"		, "Cancel");
		}
		param_default("dimensiones"						, "");
		param_default("scroll"							, "");	
		
		param_default("capa_actual"						, "");
		
		this.parametros = params;	

	//******************************************************************************************************//
	//*********************************  FUNCIONES ADICIONALES DE NODOS  ***********************************//
		this.createObjNode = function(type, params){
			idNewObj = (typeof idNewObj == "undefined")? "" : idNewObj;
			type = (typeof type == "undefined")? "" : type;
			
			function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
		
			param_default("id"				, "");
			param_default("name"			, "");
			param_default("value"			, "");
			param_default("estilos"			, "");
			param_default("propiedades"		, "");
			param_default("onclick"			, "");
			param_default("onchange"		, "");
			param_default("innerHTML"		, "");	
			
		
			if (!document.getElementById(idNewObj)){
				if (type == ""){
					alert("Debes insertar el atributo 'type' del elemento '"+idNewObj+"' que deseas crear.");
					return false;
				} else {
					var newObj = document.createElement(type), i=0, estilo="";
					if (params["id"] != "") newObj.setAttribute("id", params["id"]);
					
					if (params["name"] != "") newObj.setAttribute("name", params["name"]);
					else if (params["id"] != "") newObj.setAttribute("name", params["id"]);
		
					if (params["value"] != "") newObj.setAttribute("value", params["value"]);
					
					if (params["estilos"] != ""){
						params["estilos"] = (params["estilos"]).split(";");
						
						i=0;
						while (params["estilos"][i]){
							estilo = (params["estilos"][i]).split(":");
							eval("newObj.style."+estilo[0]+" = '"+estilo[1]+"';");
							i++;
						}
					}
					
					if (params["propiedades"] != ""){
						params["propiedades"] = (params["propiedades"]).split(";");
						
						i=0;
						while (params["propiedades"][i]){
							propiedad = (params["propiedades"][i]).split("=");
							newObj.setAttribute(propiedad[0], propiedad[1]);
							i++;
						}
					}
					
					if (params["innerHTML"] != "") newObj.innerHTML = params["innerHTML"]; 
					if (params["onclick"] != "") newObj.onclick = function() { eval(params["onclick"]); };
					if (params["onchange"] != "") newObj.onchange = function() { eval(params["onchange"]);};
				}
				
				return newObj;
			}
			else{
				alert("Ya existe "+idNewObj);
				return false;
			}
		}
		
		this.addObjIntoNode = function(idParentNode, type, params){
			if (typeof params == "undefined") params = new Array();
			
			function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
		
			param_default("id"				, "");
			param_default("name"			, "");
			param_default("value"			, "");
			param_default("estilos"			, "");
			param_default("propiedades"		, "");
			param_default("onclick"			, "");
			param_default("onchange"		, "");
			param_default("innerHTML"		, "");
			
			if (typeof idParentNode == "string" && !document.getElementById(idParentNode)){
				alert("Para insertar el elemento debes asociarlo a un nodo padre. Pero el nodo '"+idParentNode+"' no \n existe y es donde estas tratando de insertar el nuevo elemento.");
				return false;
			} else {
				
				if (typeof idParentNode == "object"){
					var parentNode = idParentNode;
				} else {
					var parentNode = document.getElementById(idParentNode);
				}
				
				if (parentNode){
					newObj = this.createObjNode(type, params);
		
					if (newObj){
						parentNode.appendChild(newObj);
						return newObj;
					} else {
						alert("No se ha podido crear el objeto '"+idNewObj+"'");
						return false;
					}
				} else {
					alert("No existe en nodo padre "+idParentNode+" - "+idNewObj);
					return false;
				}
			}
		}
		
		this.removeObjIntoNode = function(idObj){
			
			if (typeof idObj == "string" && !document.getElementById(idObj)){
				return false;
			} else {
				
				if (typeof idObj == "string"){
					idObj = document.getElementById(idObj);
				}
			
				if (idObj){
					if (idObj.parentNode.removeChild(idObj))
						return true;
					else
						return false;
				} else {
					return false;
				}
			}
		}
	//******************************************************************************************************//
	//******************************************************************************************************//
	
	//******************************************************************************************************//
	//***************************  FUNCIONES DE TAMAÑOS DE LA VENTANA Y SCROLLS  ***************************//		
		this.___obtenerTamanoVentana = function() {
			var xScroll, yScroll;
			if (window.innerHeight && window.scrollMaxY) {	
				xScroll = window.innerWidth + window.scrollMaxX;
				yScroll = window.innerHeight + window.scrollMaxY;
			} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
				xScroll = document.body.scrollWidth;
				yScroll = document.body.scrollHeight;
			} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
				xScroll = document.body.offsetWidth;
				yScroll = document.body.offsetHeight;
			}
			var windowWidth, windowHeight;
			if (self.innerHeight) {	// all except Explorer
				if(document.documentElement.clientWidth){
					windowWidth = document.documentElement.clientWidth; 
				} else {
					windowWidth = self.innerWidth;
				}
				windowHeight = self.innerHeight;
			} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
				windowWidth = document.documentElement.clientWidth;
				windowHeight = document.documentElement.clientHeight;
			} else if (document.body) { // other Explorers
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
			}	
			// for small pages with total height less then height of the viewport
			if(yScroll < windowHeight){
				pageHeight = windowHeight;
			} else { 
				pageHeight = yScroll;
			}
			// for small pages with total width less then width of the viewport
			if(xScroll < windowWidth){	
				pageWidth = xScroll;		
			} else {
				pageWidth = windowWidth;
			}
			arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
			return arrayPageSize;
		};

		this.___obtenerScroll = function() {
			var xScroll, yScroll;
			if (self.pageYOffset) {
				yScroll = self.pageYOffset;
				xScroll = self.pageXOffset;
			} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
				yScroll = document.documentElement.scrollTop;
				xScroll = document.documentElement.scrollLeft;
			} else if (document.body) {// all other Explorers
				yScroll = document.body.scrollTop;
				xScroll = document.body.scrollLeft;	
			}
			arrayPageScroll = new Array(xScroll,yScroll);
			return arrayPageScroll;
		};
	//******************************************************************************************************//
	//******************************************************************************************************//
		
	//******************************************************************************************************//
	//*****************************************  RESTO DE FUNCIONES  ***************************************//
		this.ejecutarFuncion = function (a,b,c) {
			if (a) {
				
				if(a.addEventListener){
					a.addEventListener(b,c,false);
				} else if(a.attachEvent){
					
					a.detachEvent("on"+b);
					a.attachEvent("on"+b, c);

				}
			}
		}
		
		this.esExplorer6oMenorVersion = function(){
			var browser = navigator.appName;
			if (browser == "Microsoft Internet Explorer"){
				browser = "explorer"
				var b_version=navigator.appVersion
				
				var version=b_version.split(";");
				version = String(version[1]);
				version = version.split(" ");
				version = String(version[2]);
				version = parseFloat(version);
			}
			else
				version = "";
			
			if (browser == "explorer" && version < 7)
				return 1;
			else
				return 0;
		}
		
		this.esExplorer6oMenorVersion = this.esExplorer6oMenorVersion();
		
		this.repararCamposProblema = function(tipo){
			if (this.esExplorer6oMenorVersion){
				var i = 0;
				while (document.getElementsByTagName("select")[i]) {
					if (tipo == 1) {
						document.getElementsByTagName("select")[i].lang = (document.getElementsByTagName("select")[i].style.visibility == "")? "visible" : document.getElementsByTagName("select")[i].style.visibility;
						document.getElementsByTagName("select")[i].style.visibility = "hidden";
					} else if (tipo == 0 && document.getElementsByTagName("select")[i].lang == "hidden") {
						document.getElementsByTagName("select")[i].style.visibility = "visible";
					} else if (tipo == 2 && document.getElementsByTagName("select")[i].lang != "") {
						document.getElementsByTagName("select")[i].style.visibility = "visible";
					}
					i++;
				}
			}
		}
		
		this.validarCapa = function(capa){
			var valido = "0";
			if (capa){				
				if (typeof capa == "string" && document.getElementById(capa)) {
					valido = "1";
					capa = document.getElementById(capa);
				} else if (typeof capa == "object") {
					valido = "1";
					capa = capa;
				}
			}
			
			retornar = [ valido, capa ];
			
			return retornar;
		}
		
		this.cerrarCapaMsn = function(capa){
			var validCapa = this.validarCapa(capa);
			if (validCapa[0]){
				validCapa[1].style.visibility = "hidden";
				_div_capa_fondo.style.visibility = "hidden";
				this.repararCamposProblema(0);
			} else {
				alert("Error esta tratando de cerrar una capa que no existe.");
			}
		}
	
		this.ocultarGuardando = function(){			
			if (_div_capa_guardando.style.visibility == "visible"){
				this.cerrarCapaMsn(_div_capa_guardando);
				document.getElementById("alertsContenidoCapaGuardando").innerHTML = this.parametros["txt_guardando"];
				this.repararCamposProblema(0);
			}
		}
		
		this.mostrarCapaFondo = function(){	
			this.parametros["dimensiones"] = this.___obtenerTamanoVentana(); /* [pageWidth,pageHeight,windowWidth,windowHeight] */
			_div_capa_fondo.style.height = this.parametros["dimensiones"][1]+"px";
			_div_capa_fondo.style.width = this.parametros["dimensiones"][0]+"px";
			_div_capa_fondo.style.visibility = "visible";
			this.repararCamposProblema(1);
		}
		
		this.inicializarCapaFondo = function(){	
			this.parametros["dimensiones"] = this.___obtenerTamanoVentana(); /* [pageWidth,pageHeight,windowWidth,windowHeight] */
			_div_capa_fondo.style.height = this.parametros["dimensiones"][1]+"px";
			_div_capa_fondo.style.width = this.parametros["dimensiones"][0]+"px";
			_div_capa_fondo.style.visibility = "hidden";
			if (this.esExplorer6oMenorVersion){
				this.repararCamposProblema(2);
			}
		}
		
		this.centrarCapaAlert = function(capa){
			var validCapa = this.validarCapa(capa);
			this.parametros["scroll"] = this.___obtenerScroll(); /*  [left, top]  */
			if (validCapa[0] && validCapa[1]){
				var leftCapa = Math.abs((Math.round(((this.parametros["dimensiones"][0])/2) + this.parametros["scroll"][0])) - (Math.round((validCapa[1].style.width).replace(/px/,"")/2)));
				var topCapa = Math.abs((Math.round(((this.parametros["dimensiones"][3])/2 + this.parametros["scroll"][1]))) - (Math.round((validCapa[1].style.height).replace(/px/,"")/2)));
				
				capa.style.top = topCapa+"px";
				capa.style.left = leftCapa+"px";
			} else {
				var leftCapa = 0;
				var topCapa = 0;
			}
		}
		
		this.onFocus = function(elemento){
			var retornar = "";
			if (elemento){
				if (typeof elemento == "string" && document.getElementById(elemento)) {
					document.getElementById(elemento).focus();
				} else if (typeof elemento == "object") {
					elemento.focus();
				}
			}
		}
		
	//******************************************************************************************************//
	//******************************************************************************************************//
		
		
	//*****************************************************************************************************//
	//**********************************  ESTILOS Y CREACION DE CAPAS  ************************************//
	
		//***********************  HOJA DE ESTILOS  *************************//
			var objCSS = this.addObjIntoNode(	document.getElementsByTagName("head")[0],
												"link",
												{	id			:	'alertsCapaEstilos',
													propiedades	:	'rel=stylesheet;href='+this.parametros["fichero_css"]+';type=text/css'});
		
		//***********************  CAPA DE FONDO  *************************//
			if (!document.getElementById("alertsCapaFondo")){				
				var _div_capa_fondo = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
															"div",
															{	id		:	'alertsCapaFondo',
																estilos	:	'position:absolute;zIndex:999999;left:0px;top:0px;visibility:visible'});
			}
			
		//***********************  CAPA ALERT  *************************//
			if (!document.getElementById("alertsCapaAlert")){				
				var _div_capa_alert = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
															"div",
															{	id			:	'alertsCapaAlert',
																estilos		:	'position:absolute;zIndex:1000000;visibility:hidden',
																innerHTML	:	'	<table id="alertsTablaCapaAlert" width="'+this.parametros["ancho_capa_alert"]+'px" height="'+this.parametros["alto_capa_alert"]+'px" border="0" cellpadding="0" cellspacing="0">'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td align="center" valign="middle" width="100%" height="100%">'
																				+'				<table cellpadding="0" cellspacing="0" width="96%" height="100%" align="center" border="0">'
																				+'					<tr>'
																				+'						<td width="100%" height="100%" valign="middle" align="center" style="vertical-align:middle;"><div id="alertsCapaContenidoAlert"></div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td align="center"><div id="alertsBotonCapaAlert">'+this.parametros["txt_aceptar_alert"]+'</div></td>'
																				+'		</tr>'
																				+'	</table>'});
				
				var _div_alertsTablaCapaAlert = document.getElementById("alertsTablaCapaAlert");
			}
			
		//***********************  CAPA CONFIRM  *************************//
			if (!document.getElementById("alertsCapaConfirm")){				
				var _div_capa_confirm = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
																"div",
																{	id		  : 'alertsCapaConfirm',
																	estilos	  : 'position:absolute;zIndex:1000000;visibility:hidden',
																	innerHTML :	'	<table id="alertsTablaCapaConfirm" width="'+this.parametros["ancho_capa_confirm"]+'px" height="'+this.parametros["alto_capa_confirm"]+'px" border="0" cellpadding="0" cellspacing="0">'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td align="center" valign="middle" width="100%" height="100%">'
																				+'				<table cellpadding="0" cellspacing="0" width="96%" height="100%" align="center" border="0">'
																				+'					<tr>'
																				+'						<td width="100%" height="100%" valign="middle" align="center"style="vertical-align:middle;"><div id="alertsCapaContenidoConfirm"></div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td>'
																				+'				<table cellpadding="0" cellspacing="0" width="100%" border="0">'
																				+'					<tr>'
																				+'						<td align="right" valign="middle"><div id="alertsBotonConfirmAceptar">'+this.parametros["txt_aceptar_confirm"]+'</div></td>'
																				+'						<td width="20"></td>'
																				+'						<td align="left" valign="middle"><div id="alertsBotonConfirmCancelar">'+this.parametros["txt_cancelar_confirm"]+'</div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'	</table>'});
				
				var _div_alertsTablaCapaConfirm = document.getElementById("alertsTablaCapaConfirm");
			}
		
		//***********************  CAPA GUARDANDO  *************************//
			if (!document.getElementById("alertsCapaGuardando")){				
				var _div_capa_guardando = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
																"div",
																{	id			:	'alertsCapaGuardando',
																	estilos 	:	'position:absolute;zIndex:1000000;visibility:hidden',
																	innerHTML	:	'	<table id="alertsTablaCapaGuardando" width="'+this.parametros["ancho_capa_guardando"]+'px" height="'+this.parametros["alto_capa_guardando"]+'px" border="0" cellpadding="0" cellspacing="0">'
																					+'		<tr><td style="height:5px"></td></tr>'
																					+'		<tr>'
																					+'			<td align="center"><img src="'+this.parametros["imagen_guardando"]+'"></td>'
																					+'		</tr>'
																					+'		<tr><td height="5"></td></tr>'
																					+'		<tr>'
																					+'			<td align="center" valign="middle" style="vertical-align:middle;"><div id="alertsContenidoCapaGuardando">'+this.parametros["txt_guardando"]+'</div></td>'
																					+'		</tr>'
																					+'		<tr><td style="height:5px"></td></tr>'
																					+'	</table>'});
	
				var _div_alertsTablaCapaGuardando = document.getElementById("alertsTablaCapaGuardando");
			}
			
		//***********************  CAPA CONFIRM  *************************//
			if (!document.getElementById("alertsCapaInput")){				
				var _div_capa_input = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
																"div",
																{	id		  : 'alertsCapaInput',
																	estilos	  : 'position:absolute;zIndex:1000000;visibility:hidden',
																	innerHTML :	'	<table id="alertsTablaCapaInput" width="'+this.parametros["ancho_capa_confirm"]+'px" height="'+this.parametros["alto_capa_confirm"]+'px" border="0" cellpadding="0" cellspacing="0">'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td align="center" valign="middle" width="100%" height="100%">'
																				+'				<table cellpadding="0" cellspacing="0" width="96%" height="100%" align="center" border="0">'
																				+'					<tr>'
																				+'						<td width="100%" height="100%" valign="middle" align="center"style="vertical-align:middle;"><div id="alertsCapaContenidoInput"></div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'		<tr>'
																				+'			<td>'
																				+'				<table cellpadding="0" cellspacing="0" width="100%" border="0">'
																				+'					<tr>'
																				+'						<td align="right" valign="middle"><div id="alertsBotonInputAceptar">'+this.parametros["txt_aceptar_confirm"]+'</div></td>'
																				+'						<td width="20"></td>'
																				+'						<td align="left" valign="middle"><div id="alertsBotonInputCancelar">'+this.parametros["txt_cancelar_confirm"]+'</div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'	</table>'});
				
				var _div_alertsTablaCapaInput = document.getElementById("alertsTablaCapaInput");
			}
			
		//***********************  CAPA TEXTO  *************************//
			if (!document.getElementById("alertsCapaTexto")){				
				var _div_capa_texto = this.addObjIntoNode(	document.getElementsByTagName("body")[0],
															"div",
															{	id			:	'alertsCapaTexto',
																estilos		:	'position:absolute;zIndex:1000000;visibility:hidden',
																innerHTML	:	'	<table id="alertsTablaCapaTexto" border="0" cellpadding="0" cellspacing="0">'
																				+'		<tr><td style="padding:0; width:100%; text-align:right;"><img border="1" src="'+this.parametros["imagen_cerrar"]+'" style="cursor:pointer;" onclick="alertaErrores.cerrarCapaMsn(\'alertsCapaTexto\');"></td></tr>'
																				+'		<tr>'
																				+'			<td align="center" valign="middle" width="100%" height="100%">'
																				+'				<table cellpadding="0" cellspacing="0" width="96%" height="100%" align="center" border="0">'
																				+'					<tr>'
																				+'						<td width="100%" height="100%" valign="middle" align="center"><div id="alertsContenidoCapaTexto"></div></td>'
																				+'					</tr>'
																				+'				</table>'
																				+'			</td>'
																				+'		</tr>'
																				+'		<tr><td style="height:8px"></td></tr>'
																				+'	</table>'});
				
				var _div_alertsTablaCapaTexto = document.getElementById("alertsTablaCapaTexto");
		}
	
	//*****************************************************************************************************//
	//**************************************  FUNCIONALIDAD CAPAS  ****************************************//

		//***********************  CAPA ALERT  *************************//
			this.alert = function(parametros, funcion_a_ejecutar){			
				if (typeof parametros == "string"){
					var msn = parametros;
					var parametros = {};
					parametros["texto"] = msn;
					parametros["onclick"] = funcion_a_ejecutar;
					parametros["focus"] = "";
				}
				else if (typeof parametros == "object"){
					function param_default(pname, def) { if (typeof parametros[pname] == "undefined") { parametros[pname] = def; } };
				
					param_default("texto"			, "");
					param_default("onclick"			, "");
					param_default("focus"			, "");
				
				} else {
					parametros["texto"] = "";
					parametros["onclick"] = "";	
					parametros["focus"] = "";
				}
	
				this.ocultarGuardando();
				this.repararCamposProblema(1);
				this.mostrarCapaFondo();
				
				document.getElementById("alertsCapaContenidoAlert").innerHTML = parametros["texto"];
				
				_div_capa_alert.style.height = _div_alertsTablaCapaAlert.offsetHeight+"px";
				_div_capa_alert.style.width = _div_alertsTablaCapaAlert.offsetWidth+"px";
				this.centrarCapaAlert(_div_capa_alert);
				
				_div_capa_alert.style.visibility = "visible";
				
				this.parametros["capa_actual"] = _div_capa_alert;
				
				if (window.scrollMaxX >= 0 ){ // si es FF
					if (parametros["onclick"] && typeof parametros["onclick"] == "function"){
						
						document.getElementById("alertsBotonCapaAlert").onclick = parametros["onclick"];
					}
				} else {  // si es IE
					if (parametros["onclick"] && typeof parametros["onclick"] == "function") {						
						document.getElementById("alertsBotonCapaAlert").onclick = eval(parametros["onclick"]);
					}
				}
				this.ejecutarFuncion(document.getElementById("alertsBotonCapaAlert"), "click", function(){  eval(parametros["onclick"]); alertaErrores.cerrarCapaMsn('alertsCapaAlert'); alertaErrores.onFocus(parametros["focus"]); });
			}
			
		//***********************  CAPA CONFIRM  *************************//
			this.confirm = function(parametros, funcion_a_ejecutar){
				if (typeof parametros == "string"){
					var msn = parametros;
					var parametros = {};
					parametros["texto"] = msn;
					parametros["onclick"] = funcion_a_ejecutar;
				}
				else if (typeof parametros == "object"){
					function param_default(pname, def) { if (typeof parametros[pname] == "undefined") { parametros[pname] = def; } };
				
					param_default("texto"			, "");
					param_default("onclick"			, "");
					
				} else {
					parametros["texto"] = "";
					parametros["onclick"] = "";	
				}
				
				this.ocultarGuardando();
				this.repararCamposProblema(1);
				this.mostrarCapaFondo();
				
				document.getElementById("alertsCapaContenidoConfirm").innerHTML = parametros["texto"];			
				
				_div_capa_confirm.style.height = _div_alertsTablaCapaConfirm.offsetHeight+"px";
				_div_capa_confirm.style.width = _div_alertsTablaCapaConfirm.offsetWidth+"px";
				
				this.centrarCapaAlert(_div_capa_confirm);
				
				_div_capa_confirm.style.visibility = "visible";
				
				this.parametros["capa_actual"] = _div_capa_confirm;
				
				if (window.scrollMaxX >= 0 ){ // si es FF
					if (parametros["onclick"] && typeof parametros["onclick"] == "function"){
						document.getElementById("alertsBotonConfirmAceptar").onclick = parametros["onclick"];
					}
				} else {  // si es IE
					if (parametros["onclick"] && typeof parametros["onclick"] == "function") {						
						document.getElementById("alertsBotonConfirmAceptar").onclick = eval(parametros["onclick"]);
					}
				}
				this.ejecutarFuncion(document.getElementById("alertsBotonConfirmAceptar"), "click", function(){  alertaErrores.cerrarCapaMsn('alertsCapaConfirm'); });
				document.getElementById("alertsBotonConfirmCancelar").onclick = function(){  alertaErrores.cerrarCapaMsn('alertsCapaConfirm'); };
			}
	
		//***********************  CAPA GUARDANDO  *************************//
			this.guardando = function(msn){
				this.repararCamposProblema(1);
				this.mostrarCapaFondo();
				
				_div_capa_guardando.style.height = _div_alertsTablaCapaGuardando.offsetHeight+"px";
				_div_capa_guardando.style.width = _div_alertsTablaCapaGuardando.offsetWidth+"px";
				
				this.centrarCapaAlert(_div_capa_guardando);
				
				this.parametros["capa_actual"] = _div_capa_guardando;

				if (!msn){ document.getElementById("alertsContenidoCapaGuardando").innerHTML = this.parametros["txt_guardando"];}
				else{ document.getElementById("alertsContenidoCapaGuardando").innerHTML = msn;}
				
				_div_capa_guardando.style.visibility = "visible";
			}
		
		//***********************  CAPA INPUT  *************************//
			this.input = function(parametros, funcion_a_ejecutar){
				if (typeof parametros == "string"){
					var msn = parametros;
					var parametros = {};
					parametros["texto"] = msn;
					parametros["onclick"] = funcion_a_ejecutar;
				}
				else if (typeof parametros == "object"){
					function param_default(pname, def) { if (typeof parametros[pname] == "undefined") { parametros[pname] = def; } };
				
					param_default("texto"			, "");
					param_default("onclick"			, "");
					param_default("id_input"		, "txt");
					param_default("size_input"		, "32");
					
				} else {
					parametros["texto"] = "";
					parametros["onclick"] = "";
					parametros["id_input"] = "txt";
					parametros["size_input"] = "32";
				}
				
				this.ocultarGuardando();
				this.repararCamposProblema(1);
				this.mostrarCapaFondo();
				
				if (typeof parametros != "string"){
					document.getElementById("alertsCapaContenidoInput").innerHTML = parametros["texto"]+'<br><br><input type="text" name="'+parametros["id_input"]+'" id="'+parametros["id_input"]+'" size="'+parametros["size_input"]+'">';
				} else {
					document.getElementById("alertsCapaContenidoInput").innerHTML = parametros["texto"];	
				}
				
				_div_capa_input.style.height = _div_alertsTablaCapaInput.offsetHeight+"px";
				_div_capa_input.style.width = _div_alertsTablaCapaInput.offsetWidth+"px";
				
				this.centrarCapaAlert(_div_capa_input);
				
				_div_capa_input.style.visibility = "visible";
				
				this.parametros["capa_actual"] = _div_capa_input;
				
				if (window.scrollMaxX >= 0 ){ // si es FF
					if (parametros["onclick"] && typeof parametros["onclick"] == "function"){
						document.getElementById("alertsBotonInputAceptar").onclick = parametros["onclick"];
					}
				} else {  // si es IE
					if (parametros["onclick"] && typeof parametros["onclick"] == "function") {						
						document.getElementById("alertsBotonInputAceptar").onclick = eval(parametros["onclick"]);
					}
				}
				this.ejecutarFuncion(document.getElementById("alertsBotonInputAceptar"), "click", function(){  alertaErrores.cerrarCapaMsn('alertsCapaInput'); });
				document.getElementById("alertsBotonInputCancelar").onclick = function(){  alertaErrores.cerrarCapaMsn('alertsCapaInput'); };
			}
			
		//***********************  CAPA TEXTO Y/O HTML  *************************//
			this.texto = function(parametros, funcion_a_ejecutar){			
				if (typeof parametros == "string"){
					var msn = parametros;
					var parametros = {};
					parametros["texto"] = msn;
					parametros["onclick"] = funcion_a_ejecutar;
					parametros["focus"] = "";
				}
				else if (typeof parametros == "object"){
					function param_default(pname, def) { if (typeof parametros[pname] == "undefined") { parametros[pname] = def; } };
				
					param_default("texto"			, "");
					param_default("onclick"			, "");
					param_default("focus"			, "");
				
				} else {
					parametros["texto"] = "";
					parametros["onclick"] = "";	
					parametros["focus"] = "";
				}
	
				this.ocultarGuardando();
				this.repararCamposProblema(1);
				this.mostrarCapaFondo();
				
				document.getElementById("alertsContenidoCapaTexto").innerHTML = parametros["texto"];
				
				_div_capa_texto.style.height = _div_alertsTablaCapaTexto.offsetHeight+"px";
				_div_capa_texto.style.width = _div_alertsTablaCapaTexto.offsetWidth+"px";
				
				this.centrarCapaAlert(_div_capa_texto);
				
				_div_capa_texto.style.visibility = "visible";
				
				this.parametros["capa_actual"] = document.getElementById("alertsTablaCapaTexto");

			}
			
		this.ejecutarFuncion(window, "resize", function(){ if (_div_capa_fondo.style.visibility == "visible"){ alertaErrores.mostrarCapaFondo();  alertaErrores.centrarCapaAlert(alertaErrores.parametros["capa_actual"]); } });
		this.ejecutarFuncion(window, "load", function(){ alertaErrores.inicializarCapaFondo(); });
		this.ejecutarFuncion(window, "scroll", function(){ if (_div_capa_fondo.style.visibility == "visible"){ alertaErrores.centrarCapaAlert(alertaErrores.parametros["capa_actual"]); } });
		
	}
	
	
	
} else {
	alert(" Debes insertar el fichero 'alertsFunciones.js' justo debajo \n  de la linea <body... para que funcione correctamente.");
	alertaErrores.init = function(){  };
	alertaErrores.alert = function(){  };
	alertaErrores.confirm = function(){  };
	alertaErrores.guardando = function(){  };
	
}