var isExplorer = navigator.appVersion.match(/MSIE/) == "MSIE";

// LTrim(string) : Regresa una copia de la cadena sin espacios en blanco a la izquierda.
function ltrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(0)) != -1) {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

//RTrim(string) : Regresa una copia de la cadena sin espacios en blanco a la derecha.
function rtrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      var i = s.length - 1;       // Obtiene el largo de la cadena
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}

// Trim(string) : Devuelve una cadena sin espacios en blanco a la izquierda y derecha
function trim(str) {
   return rtrim(ltrim(str));
}


/*
*   Funcion convierte el valor escrito en un input a mayusculas (al instante)
*/
function toUpper(elm){
    var Upper = elm.value.toUpperCase();
    elm.value = Upper;
}

function quitarAcentos(cadena){
	cadenaTmp="";
	cadenaTmp = trim(cadena.toUpperCase());
	cadenaTmp = cadenaTmp.replace("Á","A");
	cadenaTmp =  cadenaTmp.replace("É","E");
	cadenaTmp = cadenaTmp.replace("Í","I");
	cadenaTmp = cadenaTmp.replace("Ó","O");
	cadenaTmp = cadenaTmp.replace("Ú","U");
	return cadenaTmp;
}

/*
	Funcion para validar formularios
*/
function validar(formu,divtag){
      obj = formu.getElementsByTagName("input");
      obj2 = formu.getElementsByTagName("textarea");
      obj3 = formu.getElementsByTagName("select");
      var e = 0;
      var msgError="Los campos sombreados son obligatorios o no cumplen con el tipo de dato requerido.";
      var ifocus=-1;
      var ifocus2=-1;
      var ifocus3=-1;
      var separator="";
      var dataType="";
      
     if(divtag) { 
     	$(divtag).innerHTML="";
     	separator="<br />";
     }
     else separator="\n";
      
	for (i=0; i<obj.length; i++) {
			if (obj.item(i).getAttribute("ref") && obj.item(i).getAttribute("ref") == "1"){
				
				try{
					dataType=obj.item(i).getAttribute("dataType");
				}catch(e){
					
					dataType="";
				}
				
				if(trim(obj.item(i).value) == ""){
						
					if(ifocus==-1) ifocus=i;
					obj.item(i).style.borderWidth = "1px";
					obj.item(i).style.borderColor = "#FF0000";
					obj.item(i).style.backgroundColor = "#FFFACD";
					e = e+1;				
				}else if(obj.item(i).name == "mail" || obj.item(i).name == "email" || dataType=="mail"){

				  if(!validarEmail(obj.item(i).value)){	  
							obj.item(i).style.borderWidth = "1px";
							obj.item(i).style.borderColor = "#FF0000";
							obj.item(i).style.backgroundColor = "#FFFACD";
							e = e+1;
							if(ifocus==-1) ifocus=i;
                	}else{
							obj.item(i).style.borderWidth = "1px";
							obj.item(i).style.borderColor = "#FFC20F";
							obj.item(i).style.backgroundColor = "#FFFFFF";
					}
				}else if(dataType=="number"){
					numberTmp= obj.item(i).value;
					if(isNaN(numberTmp)){
							obj.item(i).style.borderWidth = "1px";
							obj.item(i).style.borderColor = "#FF0000";
							obj.item(i).style.backgroundColor = "#FFFF66";
							alert("El valor "+obj.item(i).value+" no es válido.\nEste campo solo acepta valores numéricos");
							e = e+1;
							if(ifocus==-1) ifocus=i;
					}else{
							obj.item(i).style.borderWidth = "1px";
							obj.item(i).style.borderColor = "#FFC20F";
							obj.item(i).style.backgroundColor = "#FFFFFF";
					}							
				}else{
							obj.item(i).style.borderWidth = "1px";
							obj.item(i).style.borderColor = "#FFC20F";
							obj.item(i).style.backgroundColor = "#FFFFFF";
                }
			}
	}
for(i=0;i<obj2.length;i++){
	if (obj2.item(i).getAttribute("ref") && obj2.item(i).getAttribute("ref") == "1"){
	  if(obj2.item(i).value == ""){
 		//alert("Olvidaste llenar un campo obligatorio.");	
		//obj2.item(i).focus();
		e = e+1;
		if(ifocus2==-1) ifocus2=i;
				obj2.item(i).style.borderWidth = "1px";
				obj2.item(i).style.borderColor = "#FF0000";
				obj2.item(i).style.backgroundColor = "#FFFACD";	    
	  }else{
	  						obj2.item(i).style.borderWidth = "1px";
							obj2.item(i).style.borderColor = "#FFC20F";
							obj2.item(i).style.backgroundColor = "#FFFFFF";
	  }
	}
}	

for(i=0;i<obj3.length;i++){
	if (obj3.item(i).getAttribute("ref") && obj3.item(i).getAttribute("ref") == "1"){
	  if(trim(obj3.item(i).value) == "" || obj3.item(i).value == "0" ){
 		//alert("Olvidaste llenar un campo obligatorio.");	
		//obj2.item(i).focus();
		e = e+1;
		if(ifocus3==-1) ifocus3=i;
				obj3.item(i).style.borderWidth = "1px";
				obj3.item(i).style.borderColor = "#FF0000";
				obj3.item(i).style.backgroundColor = "#FFFACD";	    
	  }else{
	  			obj3.item(i).style.borderWidth = "1px";
				obj3.item(i).style.borderColor = "#FFC20F";
				obj3.item(i).style.backgroundColor = "#FFFFFF";
	  }
	}
}

if(e > 0){
  if(ifocus>=0) obj.item(ifocus).focus();
  else if(ifocus2>=0) obj2.item(ifocus2).focus();
  else if(ifocus3>=0) obj3.item(ifocus3).focus();
  
  if(divtag) { $(divtag).innerHTML=msgError; $(divtag).show(); }
  else alert(msgError);	
  return false;
}
return true;
}

function validarEmail(valor) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
    return (true)
  } else {
    alert("La dirección de email: "+valor+"\nEs incorrecta, por favor corrijala");
    return (false);
  }
}

function validarPassword(formu,divtag){
	form=document.formModPassword;
	if(validar($(formu),divtag)){
	  if((String(form.pass.value))!= (String(form.pass2.value))){  
	  	$(divtag).innerHTML="Los passwords no coinciden intente de nuevo!";
	  	$(divtag).show();
	  	form.pass.value="";
	  	form.pass2.value="";
	  	return false;
	  }else{
	  	$(divtag).hide();
	  	return true;
	  }
	}else{
		return false;
	}
	return true;
}
/****** funciones para enviar formularios usando Ajax	******/

 function sendFormAjax(idformulario,url,fcomplete,alertmsg,idwindow,closewindow,reload,formreload){
 	 
 	   $('titleWorking').innerHTML='Enviando Datos...';
 	   $('systemWorking').show();
 	   
		if(typeof fcomplete != "function") fcomplete = null;
		if(reload==null) reload = false;
		
		var opt = {
		    parameters : Form.serialize(idformulario),
		   onFailure:function(){
				alert("Falló el envio de datos");
			},
		 	onSuccess:function(t){
			 	if(t.responseXML.getElementsByTagName("respuesta")[0].firstChild.data == 1) {
					if(fcomplete!=null) fcomplete(t,idformulario,idwindow);
					if(alertmsg==1) alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
					if($(idwindow)){
						if(closewindow==1) Windows.close(idwindow);
					}
					if(reload){
						reloadCatalogo(formreload);
					}
			 	}else {
			 		$('titleWorking').innerHTML='Cargando...';
 	   				$('systemWorking').hide();
			 		alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
			 	}
		 	}
		}
		
			var request = new Ajax.Request(url,opt);
}

function reloadCatalogo(idformulario){
	try{
		$(idformulario).submit();
		//document.idformulario.submit();
	}catch(e){
		
	}
}

/*
 * Funciones para ejemplo de paginacion
 */
function cargarDatosTabla(url,formulario,idtabla,xml){
	if(xml==null) xml=false;
 	   parent.$('titleWorking').innerHTML='Cargando Datos...';
 	   parent.$('systemWorking').show();

	var opt = {
	    parameters : Form.serialize(formulario),
	 	onSuccess:function(t){
	 		if(!xml)crearPaginacion(t,formulario,idtabla);
	 		else if(xml)crearPaginacionXML(t,formulario,idtabla);
	 	},
	 	onComplete: function() {
			 		 parent.$('titleWorking').innerHTML='Cargando...';
 	   				 parent.$('systemWorking').hide();
		}
	}

	var request = new Ajax.Request(url,opt);
}

/*Crear y Rellenar Tabla mediante responseXML*/
function crearPaginacionXML(t,formulario,idtabla){
	var total=0;
	var limit=0;
	var limitstart=0;
	var paginador = null;
	
	if(paginador==null) paginador = new Paginator(formulario);
	try{
		total = parseInt(t.responseXML.getElementsByTagName("rows")[0].getAttribute("total"));
		limit = parseInt(t.responseXML.getElementsByTagName("rows")[0].getAttribute("limit"));
		limitstart = parseInt(t.responseXML.getElementsByTagName("rows")[0].getAttribute("limitstart"));
	}catch(e){
		
	}

	paginador.setTotal(total);	
	paginador.setLimit(limit);
	paginador.setLimitStart(limitstart);		
	paginador.writeContadorPaginas();
	paginador.writeLinks();
	
	rellenarTablaXML(t,idtabla+"_body");
}

function rellenarTablaXML(t,idbody){
	var response = t.responseXML;
	var tb = $(idbody);
	
	
	while (tb.firstChild) {
	  	tb.removeChild(tb.firstChild);
	}
		
	var filas = response.getElementsByTagName("tr");
	
	for (var j = 0; j < filas.length; j++) {
	     
	     var oRow = document.createElement("TR");
		 var fila= filas[j];
		 var idFila="";
		 var classFila="";
		 //		  t.responseXML.getElementsByTagName("rows")[0].getAttribute("limitstart")
		try{
		 idFila=fila.getAttribute("id");
		}catch(e){
			idFila="";
		}

		try{
		 classFila=fila.getAttribute("class");
		}catch(e){
		 classFila="";
		}
		
		if(trim(idFila)!="") oRow.id=idFila;
		if(trim(classFila)!="") oRow.className=classFila;		
		 
		 var columnas = fila.getElementsByTagName("td");

	 	   	   for (var k = 0; k < columnas.length; k++) {
	 	   	   	   var columna = columnas[k];
	 	   	   	   var oCell = document.createElement("TD");
			       var textoColumna = "";
				   var idColumna="";
				   var classColumna="";

				try{
				 idColumna=columna.getAttribute("id");
				}catch(e){
					idColumna="";
				}
		
				try{
				 classColumna=columna.getAttribute("class");
				}catch(e){
				 classColumna="";
				}
				
				if(trim(idColumna)!="") oCell.id=idColumna;
				if(trim(classColumna)!="") oCell.className=classColumna;	
		

				       try {
				       	textoColumna = columna.firstChild.data;
				       }catch(e){
				       	
				       }
				  		oRow.appendChild(oCell);
				 		oCell.innerHTML = textoColumna;  	   	 	   	   	   	   	 	   	   	
	   	 	   }
	   		
	   	  tb.appendChild(oRow); 
	   } 
	   
	  // st1.sort(0,false);    
}


/*Crear y Rellenar Tabla mediante responseTEXT*/
function crearPaginacion(t,formulario,idtabla){
	var total=0;
	var limit=0;
	var limitstart=0;
	var paginador = null;
	
	if(paginador==null) paginador = new Paginator(formulario);
	try{
		var response = t.responseText;
		var lastResponse = response.substring(0,20);
		var splitResponse = new Array();
		splitResponse = lastResponse.split('#');
		var pagNums = new Array();
		pagNums = splitResponse[0].split(';');
				
		total = parseInt(pagNums[0]);
		limit = parseInt(pagNums[1]);
		limitstart = parseInt(pagNums[2]);
	}catch(e){
		
	}

	paginador.setTotal(total);	
	paginador.setLimit(limit);
	paginador.setLimitStart(limitstart);		
	paginador.writeContadorPaginas();
	paginador.writeLinks();
	
	rellenarTabla(t,idtabla+"_body");
}

function rellenarTabla(t,idbody){
	var response = t.responseText;
	var tb = $(idbody);
	
	var lastResponse = response.substring(0,20);
	var splitResponse = new Array();
	splitResponse = lastResponse.split('#');
	var gato = splitResponse[0].length;
	
	tb.innerHTML = response.substring(gato+1);
}

//FIN FUNCIONES PAGINACIÓN


  function errFunc(){
	alert("No se encontró el archivo especificado");
  }
  
	/*
	*  Funcion para generar ventanas cargadas con ajax.
	*  
	*/
	function showWindowAjax(id, opt , file, parametros,files, observer, metodo,isModal){
	   if($(id)){   Windows.getWindow(id).minimize(); Windows.getWindow(id).toFront(); return;  }	

	   if(metodo == null)metodo = 'post';
   	   if(isModal== null)isModal=false;
	
		if(files!=null){
			try{	
	    	for(i=0;i<files.jscripts.length;i++){
	    		if(!$("js_"+files.jscripts[i]))
	    		ScriptLoader.loadScript(files.jscripts[i],"js_"+files.jscripts[i]);
	    	}
			}catch(e){
				
			}
			
	    	try{
	    	for(i=0;i<files.css.length;i++){
	    		if(!$("css_"+files.css[i]))
	    		ScriptLoader.loadCSS(files.css[i],"css_"+files.css[i]);
	    	}
	    	}catch(e){
	    		
	    	}
	    }
	    
	    if(opt==null) opt = {};
	    
		if(trim(opt.className)=="undefined") opt.className="alphacube";
		if(trim(opt.iconImg)=="undefined") opt.iconImg="images/ico_windows.gif";
		//if(trim(opt.wiredDrag)=="undefined") opt.wiredDrag=true;
		//showEffect:Element.show,hideEffect:Element.hide
		if(trim(opt.showEffect)=="undefined") opt.showEffect=Element.show;
		if(trim(opt.hideEffect)=="undefined") opt.hideEffect=Element.hide;
		
		var ventana = new Window(id,opt);
		ventana.setDestroyOnClose();  
		ventana.setAjaxContent(file, {method: metodo, parameters:parametros, asynchronous:true,onFailure:errFunc, evalScripts:true},true,isModal);
	    //WindowsBar.addWindow(ventana);
	   if(observer!=null){
	   		Windows.addObserver(observer);
	   }
	}
	
	function showForm(idForm,titulo,url,parametros,isModal,w,h){
		if(idForm==null) idForm = Application.getNewId();
		if(url==null) url="modulos.php";
		if(isModal==null) isModal=false;
		if(w==null) w=300;
		if(h==null) h=200;
		if(titulo==null) titulo="&nbsp;";
//function showWindowAjax(id, opt , file, parametros,files, observer, metodo,isModal){
		showWindowAjax(idForm,{width: w, height: h, title: titulo, minimizable:false,showTaskBar:false},url,parametros,null,null,null,isModal);	
	}
	
	function sendCheckBoxValue(idForm,titulo,form,multiple,url,parametros,isModal,w,h){
		 var query = getCheckBoxValue(form,multiple);
		 if(query=="") {
		 	alert("Seleccione al menos un elemento"); 
		 	return;
		 }
		 if(parametros==""){
		 	parametros=query;
		 }else{
		 	parametros=parametros+"&"+query;
		 }
		 showForm(idForm,titulo,url,parametros,isModal,w,h);
	}

	function getCheckBoxValue(form,isMultiple){
		 obj = form.getElementsByTagName("input");
		 var query = "";
		 //query=query+elements.item(i).name+"="+elements.item(i).value;
		for (i=0; i<obj.length; i++) {//obj.item(i).name == "mail"
			if(obj.item(i).type == "checkbox"){
				if(obj.item(i).checked==true){
					query=query+obj.item(i).name+"="+obj.item(i).value+"&";
					if(!isMultiple) break;
				}
			}
		}
		
		return query;
	}
	//dForm,titulo,form,multiple,url,parametros,isModal,w,h
	//idformulario,url,fcomplete,alertmsg,idwindow,closewindow,reload,formreload
	function sendCheckBoxAction(form,url,parametros,multiple,fcomplete,alertmsg,reload){
		 var query = getCheckBoxValue(form,multiple);
		 if(query=="") {
		 	alert("Seleccione al menos un elemento"); 
		 	return;
		 }
		 if(parametros==""){
		 	parametros=query;
		 }else{
		 	parametros=parametros+"&"+query;
		 }		
		 
		 //sendAjaxAction(url,parametros,fcomplete,alertmsg,reload,formreload)
		 sendAjaxAction(url,parametros,fcomplete,alertmsg,reload,form);
	}
	
	function sendAjaxAction(url,parametros,fcomplete,alertmsg,reload,formreload){
 	   parent.$('titleWorking').innerHTML='Ejecutando la acción...';
 	   parent.$('systemWorking').show();
 	   
		if(typeof fcomplete != "function") fcomplete = null;
		if(reload==null) reload = false;
		if(alertmsg==null) alertmsg = false;
		
		var opt = {
			   parameters : parametros,
			   onFailure:function(){
					alert("Falló al intentar ejecutar la acción");
				},
			 	onSuccess:function(t){
				 	if(t.responseXML.getElementsByTagName("respuesta")[0].firstChild.data == 1) {
						if(fcomplete!=null) fcomplete(t);
						if(alertmsg==true) alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
						if(reload){
							reloadCatalogo(formreload);
						}
				 	}else {
				 		parent.$('titleWorking').innerHTML='Cargando...';
	 	   				parent.$('systemWorking').hide();
				 		alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
				 	}
			 	},
			 	onComplete:function(t){
			 		parent.$('systemWorking').hide();
			 	}
		}
		
			var request = new Ajax.Request(url,opt);	
	}

	function showFormNormal(idForm,titulo,url,showNormal,isModal,w,h){
		if(idForm==null) idForm = Application.getNewId();
		if(url==null) url="modulos.php";
		if(isModal==null) isModal=false;
		if(w==null) w=300;
		if(h==null) h=200;
		if(titulo==null) titulo="&nbsp;";
		//showWindowNormal(id, opt, file,files,observer,isModal,showNormal,pLeft,pTop)
		showWindowNormal(idForm,{width: w, height: h, title: titulo, minimizable:false,showTaskBar:false},url,null,null,isModal,showNormal);	
	}
	
	//function showWindowAjax(id, opt , file, parametros,files, observer, metodo,isModal){
	function showWindowNormal(id, opt, file,files,observer,isModal,showNormal,pLeft,pTop){
	   if($(id)){    Windows.getWindow(id).toFront(); return;  }	
	   if(id==null) id = Application.getNewId();
   	   
   	   if(isModal== null) isModal=false;
	   if(showNormal==null) showNormal=false;
	   
    	if(files!=null){
			try{	
	    	for(i=0;i<files.jscripts.length;i++){
	    		if(!$("js_"+files.jscripts[i]))
	    		ScriptLoader.loadScript(files.jscripts[i],"js_"+files.jscripts[i]);
	    	}
			}catch(e){
				
			}
			
	    	try{
	    	for(i=0;i<files.css.length;i++){
	    		if(!$("css_"+files.css[i]))
	    		ScriptLoader.loadCSS(files.css[i],"css_"+files.css[i]);
	    	}
	    	}catch(e){
	    		
	    	}
	    }
	    
	    if(opt==null) opt = {};
	    
	    if(trim(opt.url)=="undefined") opt.url=file;
		if(trim(opt.className)=="undefined") opt.className="alphacube";
		if(trim(opt.iconImg)=="undefined") opt.iconImg="images/ico_windows.gif";

		if(trim(opt.showEffect)=="undefined") opt.showEffect=Element.show;
		if(trim(opt.hideEffect)=="undefined") opt.hideEffect=Element.hide;
				
		var ventana = new Window(id, opt) 
		//ventana.toFront();
		ventana.setDestroyOnClose();  		

		if(pLeft!=null && pTop!=null){
			ventana.setLocation(pTop,pLeft);
		}

        if(showNormal) ventana.show();
        else ventana.showCenter(isModal);

	   if(observer!=null){
	   		Windows.addObserver(observer);
	   }	   
	}
	
/*
 * Funciones para el calendario
 */
// JS Calendar
var calendar = null; // remember the calendar object so that we reuse
// it and avoid creating another

// This function gets called when an end-user clicks on some date
function selectedCalendar(cal, date) {
	cal.sel.value = date; // just update the value of the input field
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks the "Close" (X) button.  It just hides the calendar without
// destroying it.
function closeHandlerCalendar(cal) {
	cal.hide();			// hide the calendar

	// don't check mousedown on document anymore (used to be able to hide the
	// calendar when someone clicks outside it, see the showCalendar function).
	Calendar.removeEvent(document, "mousedown", checkCalendar);
}

// This gets called when the user presses a mouse button anywhere in the
// document, if the calendar is shown.  If the click was outside the open
// calendar this function closes it.
function checkCalendar(ev) {
	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
	for (; el != null; el = el.parentNode)
	// FIXME: allow end-user to click some link without closing the
	// calendar.  Good to see real-time stylesheet change :)
	if (el == calendar.element || el.tagName == "A") break;
	if (el == null) {
		// calls closeHandler which should hide the calendar.
		calendar.callCloseHandler(); Calendar.stopEvent(ev);
	}
}

// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id) {
	var el = document.getElementById(id);
	if (calendar != null) {
		// we already have one created, so just update it.
		calendar.hide();		// hide the existing calendar
		//calendar.parseDate(el.value); // set it to a new date
	} else {
		// first-time call, create the calendar
		var cal = new Calendar(true, null, selectedCalendar, closeHandlerCalendar);
		calendar = cal;		// remember the calendar in the global
		cal.setRange(1900, 2070);	// min/max year allowed
		calendar.create();		// create a popup calendar
	}

/*
 *   calendar.parseDate(el.value);      // try to parse the text in field
  _dynarch_popupCalendar.sel = el;                 // inform it what input field we use
 */
	
	calendar.parseDate(el.value);
	calendar.sel = el;		// inform it about the input field in use
	calendar.showAtElement(el);	// show the calendar next to the input field

	// catch mousedown on the document
	Calendar.addEvent(document, "mousedown", checkCalendar);
	return false;
}

/*
 * Funciones para sumar o restar dias a una fecha determinada en formato yyyy-mm-dd 
 */

  var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  function finMes(nMes, nAno){
   return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
  }

   function padNmb(nStr, nLen, sChr){
    var sRes = String(nStr);
    for (var i = 0; i < nLen - String(nStr).length; i++)
     sRes = sChr + sRes;
    return sRes;
   }

   function makeDateFormat(nDay, nMonth, nYear){
    var sRes;
	sRes =  padNmb(nYear, 4, "0") + "-" + padNmb(nMonth, 2, "0") + "-" + padNmb(nDay, 2, "0") ;
    return sRes;
   }
   
  function incDate(sFec0){
   var nAno= parseInt(sFec0.substr(0, 4), 10);
   var nMes = parseInt(sFec0.substr(5, 2), 10);
   var nDia = parseInt(sFec0.substr(8, 2), 10);
   nDia += 1;
   if (nDia > finMes(nMes, nAno)){
    nDia = 1;
    nMes += 1;
    if (nMes == 13){
     nMes = 1;
     nAno += 1;
    }
   }
   return makeDateFormat(nDia, nMes, nAno);
  }

  function decDate(sFec0){
   var nAno = Number(sFec0.substr(0, 4));
   var nMes = Number(sFec0.substr(5, 2));
   var nDia = Number(sFec0.substr(8, 2));
   nDia -= 1;
   if (nDia == 0){
    nMes -= 1;
    if (nMes == 0){
     nMes = 12;
     nAno -= 1;
    }
    nDia = finMes(nMes, nAno);
   }
   return makeDateFormat(nDia, nMes, nAno);
  }

  function addToDate(sFec0, sInc){
   var nInc = Math.abs(parseInt(sInc));
   var sRes = sFec0;
   if (parseInt(sInc) >= 0)
		for (var i = 0; i < nInc; i++)sRes = incDate(sRes);
   else
    for (var i = 0; i < nInc; i++) sRes = decDate(sRes);
   return sRes;
  }
 
 /*
  * Funciones para listas dependientes
  */
  
function cargarLista(url,parametros,valor,idSelect,tag,selected,alertmsg,fcomplete){
	//function sendAjaxAction(url,parametros,fcomplete,alertmsg,reload,formreload){
 	   $('titleWorking').innerHTML='Cargando lista...';
 	   $('systemWorking').show();
 	   //alert(parametros);
 	   if(!$(idSelect)){
 	   	 return;
 	   }
 	   
 	   if(valor=="" || valor=="0" || valor==null){
			limpiarCombo(idSelect);
 	   		$(idSelect).hide();
 	   		return;
 	   }
 	   
 	   parametros = parametros+"&valor="+valor;
 	   
 	   if(tag==null) tag="item";
 	   
		if(typeof fcomplete != "function") fcomplete = null;
		if(alertmsg==null) alertmsg = false;
		
		var opt = {
			   parameters : parametros,
			   onFailure:function(){
					alert("Falló al intentar cargar la lista");
				},
			 	onSuccess:function(t){
				 	if(t.responseXML.getElementsByTagName("respuesta")[0].firstChild.data == 1) {
						if(fcomplete!=null) fcomplete(t);
						if(alertmsg==true) alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
						//cargarComboSeleccion(xml,idSelect,tag,selected)
						cargarComboSeleccion(t.responseXML,idSelect,tag,selected);
				 	}else {
				 		$('titleWorking').innerHTML='Cargando...';
	 	   				$('systemWorking').hide();
				 		alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
				 	}
			 	},
			 	onComplete:function(t){
			 		$('systemWorking').hide();
			 	}
		}
		
			var request = new Ajax.Request(url,opt);	
	
}

function appendToSelect(select, value, content,selected) {
    var opt;
    opt = document.createElement("option");
    opt.value = value;
    try{
    	
    	if(selected==value){
    		opt.selected=true;
    	}
    	
    }catch(e){
    	
    }
    opt.appendChild(content);
    select.appendChild(opt);
}


function cargarComboSeleccion(xml,idSelect,tag,selected) {
	try{
	limpiarCombo(idSelect);
    var select = $(idSelect);
    var items = xml.getElementsByTagName(tag);
    if(items.length==0) {
    	$(idSelect).hide();
    	return;
    }
    $(idSelect).show();
    
    for (var i = 0; i < items.length; i++) {
        var item = items[i];
        var valor = item.getElementsByTagName("valor").item(0).firstChild.data;
        var texto = item.getElementsByTagName("etiqueta").item(0).firstChild.data;
 
        appendToSelect(select, valor ,document.createTextNode(texto),selected);
    }
	}catch(e){

	}
}


function limpiarCombo(idSeleccion){
	$(idSeleccion).innerHTML="";
    var select = $(idSeleccion);
    while (select.length > 0) {
        select.remove(0);
    }   
}


function initAccordion(idAccordion,opt){
		
		if(opt==null) opt = {};
	    	
	    var sampleAccordion = new Rico.Accordion( $(idAccordion),opt );
	
}

/*
 * 
 */

function sendFormNormal(idformulario,url,fcomplete,alertmsg,idwindow,closewindow,reload,formreload){
 	 
 	   parent.$('titleWorking').innerHTML='Enviando Datos...';
 	   parent.$('systemWorking').show();

		if(typeof fcomplete != "function") fcomplete = null;
		if(reload==null) reload = false;
		parametros = Form.serialize(idformulario);
		
		var opt = {
		    parameters : parametros,
		   	onFailure:function(){
				alert("Falló el envio de datos");
			},
		 	onSuccess:function(t){
			 	if(t.responseXML.getElementsByTagName("respuesta")[0].firstChild.data == 1) {
					if(fcomplete!=null) fcomplete(t,idformulario,idwindow);
					if(alertmsg==1) alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
					if(reload){
						top.reloadCatalogo(formreload);
					}
					if(parent.$(idwindow)){
						if(closewindow==1) top.Windows.close(idwindow);
					}
			 	}else {
			 		 parent.$('titleWorking').innerHTML='Cargando...';
 	   				 parent.$('systemWorking').hide();
			 		 alert(t.responseXML.getElementsByTagName("mensaje")[0].firstChild.data);
			 	}
		 	}
		}

		//		new Ajax.Request(this.options.url, {parameters: params, onComplete: this.onComplete, onFailure: this.onFailure});

		var request =	new top.Ajax.Request(url,opt);
}

function comboImagenes(combo,dir,selected,idimagen){
	//listImages
	   if(dir=='') dir="/";
	   url="modulos.php";
	   parametros="modulo=media&accion=listImages&listdir="+dir;
		var opt = {
			   parameters : parametros,
			   onFailure:function(){
					alert("Falló al intentar ejecutar la acción");
				},
			 	onSuccess:function(t){
						var items = t.responseXML.getElementsByTagName('img');

					   limpiarCombo($(combo));
					    try{
					    for (var i = 0; i < items.length; i++) {			       
					        var item = items[i];
					        var valor = item.getAttribute("src");
					        var texto = item.getAttribute("nombre");

					        appendToSelect($(combo), valor ,document.createTextNode(texto),selected);
					    }
					    
					    if(selected!='')changeImg(idimagen,selected); 
					    
					    }catch(e){
					    	
					    }
			 	},
			 	onComplete:function(t){
			 		top.$('systemWorking').hide();
			 	}
		}
		
			var request = new top.Ajax.Request(url,opt);
}

function changeImg(idimagen,src){
	if(!$(idimagen)) return;
	
	if(trim(src)!=null){
		$(idimagen).src=src;
	}else{
		$(idimagen).src='../files/Image/noimg.gif';
	}
}

function sendFormUpdate(idformulario,url,divupdate)
{
		
		parametros = Form.serialize(idformulario);
		
		$(divupdate).innerHTML="Enviando sus datos por favor espere...";
		
		var opt = {
			   parameters : parametros,
			   method: 'post'
		}		
		
	
		var myAjax = new Ajax.Updater( divupdate, url, opt);
}