    
	/* ATEA: Funciones de propósito general */
	
    function trim(cadena)
    {
        for(i=0; i<cadena.length; )
        {
            if(cadena.charAt(i)==" ")
                cadena=cadena.substring(i+1, cadena.length);
            else
                break;
        }

        for(i=cadena.length-1; i>=0; i=cadena.length-1)
        {
            if(cadena.charAt(i)==" ")
                cadena=cadena.substring(0,i);
            else
                break;
        }
        
        return(cadena);
    }

	function addslashes(str)
	{
		str=str.replace(/\'/g,'\\\'');
		str=str.replace(/\"/g,'\\"');
		str=str.replace(/\\/g,'\\\\');
		str=str.replace(/\0/g,'\\0');
		return str;
	}

	function stripslashes(str)
	{
		str=str.replace(/\\'/g,'\'');
		str=str.replace(/\\"/g,'"');
		str=str.replace(/\\\\/g,'\\');
		str=str.replace(/\\0/g,'\0');
		return str;
	}
	// Esta funcion asume que en el form que se le pasa como parametro
	// hay un campo hidden con el nombre "buscador_desplegado"
	function toggle_hidden(the_form, name_hidden)
	{
		eval("var input_hidden = the_form."+name_hidden);
		//var input_hidden = eval("the_form."+name_hidden);
		if (input_hidden.value=='1')
		{
			input_hidden.value='0';
		}		
		else
		{
			input_hidden.value='1';			
		}		
	}

	function getRadioButtonSelectedValue(ctrl)
	{
		for(i=0;i<ctrl.length;i++)
			if(ctrl[i].checked) return ctrl[i].value;
	}

	
	// Esta funcion asume que en el form que se le pasa como parametro
	// hay un campo hidden con el nombre "eliminar"
	function confirmar_eliminar(the_form, valor, texto)
	{
		if (confirm(texto))
		{
			the_form.eliminar.value=valor;
			the_form.submit();
		}
	}
	
	// Esta funcion asume que en el form que se le pasa como parametro
	// hay un campo hidden con el nombre "home"
	function confirmar_establecer_home(the_form, valor, texto)
	{
		if (confirm(texto))
		{
			the_form.home.value=valor;
			the_form.submit();
		}		
	}

	function ir_a(what, url)
	{
	   what.reset();
	   limpiarHidden(what);
	   //what.parametro.value='{$parametro}';
	   what.action=url;
	   what.submit();
	}
	
	function ir_a_con_parametro(what, url, parametro)
	{
	   what.reset();
	   limpiarHidden(what);
	   what.parametro.value=parametro;
	   what.action=url;
	   what.submit();
	}
	
	function ir_a_con_insertar(what, url, insertar)
	{
	   what.reset();
	   what.insertar.value=insertar;
	   what.action=url;
	   what.submit();
	}

	function limpiarHidden(what)
	{
		// Establecemos inputs hidden a "" 
		for (var i = 0; i < what.elements.length; i++)
		{
			if (what.elements[i].type.toUpperCase() == "HIDDEN")
			{			
				what.elements[i].value = "";
			}
		}
	}

	function ir_a_con_hidden(what, url, hidden, value)
	{
		//what.reset();
		eval("document.forms."+what+".reset()");
		//limpiarHidden(what)
		//eval("what."+hidden+".value='"+value+"';");
		eval("document.forms."+what+"."+hidden+".value='"+value+"';");
		eval("document.forms."+what+".action='"+url+"'");
		//what.action=url;
		eval("document.forms."+what+".submit()");
		//what.submit();	
	}
	
	function ir_a_con_2hidden(what, url, hidden1, value1, hidden2, value2)
	{
		what.reset();
		eval("what."+hidden1+".value='"+value1+"';");
		eval("what."+hidden2+".value='"+value2+"';");
		what.action=url;
		what.submit();	
	}
	
	function ir_a_con_3hidden(what, url, hidden1, value1, hidden2, value2, hidden3, value3)
	{
		what.reset();
		eval("what."+hidden1+".value='"+value1+"';");
		eval("what."+hidden2+".value='"+value2+"';");
		eval("what."+hidden3+".value='"+value3+"';");
		what.action=url;
		what.submit();	
	}
	
	function ir_a_con_4hidden(what, url, hidden1, value1, hidden2, value2, hidden3, value3, hidden4, value4)
	{
		what.reset();
		eval("what."+hidden1+".value='"+value1+"';");
		eval("what."+hidden2+".value='"+value2+"';");
		eval("what."+hidden3+".value='"+value3+"';");
		eval("what."+hidden4+".value='"+value4+"';");
		what.action=url;
		what.submit();	
	}
	
	function ir_a_con_5hidden(what, url, hidden1, value1, hidden2, value2, hidden3, value3, hidden4, value4, hidden5, value5)
	{
		what.reset();
		eval("what."+hidden1+".value='"+value1+"';");
		eval("what."+hidden2+".value='"+value2+"';");
		eval("what."+hidden3+".value='"+value3+"';");
		eval("what."+hidden4+".value='"+value4+"';");
		eval("what."+hidden5+".value='"+value5+"';");
		what.action=url;
		what.submit();	
	}
		
	function getScrollXY() 
	{
		var scrOfX = 0, scrOfY = 0;
		if( typeof( window.pageYOffset ) == 'number' ) {
			//Netscape compliant
			scrOfY = window.pageYOffset;
			scrOfX = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			//DOM compliant
			scrOfY = document.body.scrollTop;
			scrOfX = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			//IE6 standards compliant mode
			scrOfY = document.documentElement.scrollTop;
			scrOfX = document.documentElement.scrollLeft;
		}
		return [ scrOfX, scrOfY ];
	}
	
	function ordenar(the_form, valor)
	{
		the_form.order_by_old.value=the_form.order_by.value;
		the_form.order_by.value=valor;
		the_form.submit();
	}
	
	function paginar(the_form, valor)
	{
		the_form.StartRow.value=valor;
		the_form.submit();
	}	
	
	function establecerIdioma(idioma_id, texto)	// llamar con #_JS_VOLVER_PRINCIPAL_# como texto
	{
		if (texto != "")
		{
			if (confirm(texto))
			{
				document.location.href="/admin/principal.html?idi_id="+idioma_id;
			}
		}
		else
		{
			document.location.href="/admin/principal.html?idi_id="+idioma_id;			
		}
	}
	
	function urlFriendlyRewrite(cadena)
	{		
		// Clean up the title		
		var url = cadena
			.toLowerCase() 					// change everything to lowercase
			.replace(/[á]/g, "a") 		    // quitar acentos y ñ
			.replace(/[é]/g, "e") 		    // quitar acentos y ñ
			.replace(/[í]/g, "i") 		    // quitar acentos y ñ
			.replace(/[ó]/g, "o") 		    // quitar acentos y ñ
			.replace(/[ú]/g, "u") 		    // quitar acentos y ñ
			.replace(/[ñ]/g, "n") 		    // quitar acentos y ñ
			.replace(/^\s+|\s+$/g, "") 		// trim leading and trailing spaces		
			.replace(/[_|\s]+/g, "-") 		// change all spaces and underscores to a hyphen
			.replace(/[^a-z0-9-]+/g, "") 	// remove all non-alphanumeric characters except the hyphen
			.replace(/[-]+/g, "-") 			// replace multiple instances of the hyphen with a single instance
			.replace(/^-+|-+$/g, "") 		// trim leading and trailing hyphens				
			; 
		return url;
	}

	function urlFriendlyRewriting(cadena)	// sobre la marcha (onkeypress)
	{		
		// Clean up the title		
		var url = cadena
			.toLowerCase() 					// change everything to lowercase
			.replace(/[á]/g, "a") 		    // quitar acentos y ñ
			.replace(/[é]/g, "e") 		    // quitar acentos y ñ
			.replace(/[í]/g, "i") 		    // quitar acentos y ñ
			.replace(/[ó]/g, "o") 		    // quitar acentos y ñ
			.replace(/[ú]/g, "u") 		    // quitar acentos y ñ
			.replace(/[ñ]/g, "n") 		    // quitar acentos y ñ
			//.replace(/^\s+|\s+$/g, "") 		// trim leading and trailing spaces		
			.replace(/[_|\s]+/g, "-") 		// change all spaces and underscores to a hyphen
			.replace(/[^a-z0-9-]+/g, "") 	// remove all non-alphanumeric characters except the hyphen
			.replace(/[-]+/g, "-") 			// replace multiple instances of the hyphen with a single instance
			.replace(/^-+/g, "") 		    // trim leading hyphens	
			; 
		return url;
	}
	
	function bookmarksite(title, url, firefox_warning, others_warning)
	{  
		if (window.sidebar) // firefox 
		{
			window.sidebar.addPanel(title, url, ""); // Dont use until it's fixed 
			//alert(firefox_warning); 
		}
		else if(window.opera && window.print) // opera 
		{
			var elem = document.createElement('a'); 
			elem.setAttribute('href',url); 
			elem.setAttribute('title',title); 
			elem.setAttribute('rel','sidebar'); 
			elem.click(); 
		}  
		else if(document.all)// ie 
		{
			window.external.AddFavorite(url, title); 
		} 
		else
		{ // for Safari, Konq etc - browsers who do not support bookmarking scripts (that i could find anyway)   
			alert(others_warning);
        } 		
	}
	
	function validarInputEmail(the_email, msg_error, input_email_id)
	{
		var expRegEmail = /^\w+([\-\.]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,4}$/i;
		
		if (trim(the_email) == "" && (!expRegEmail.test(the_email))) 
		{
			if (msg_error != "")
			{
				alert(msg_error);
			}
			if (input_email_id != "")
			{
				var input_email = document.getElementById(input_email_id);
				if (input_email)
				{
					input_email.focus();
					input_email.select();
				}
			}
			return false; 
		}
		else
		{
			return true;
		}
	}

	// Check Email
	function is_valid_email(email) 
	{
		var email = trim(email);
		//var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		var filter = /^\w+([\-\.]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,4}$/i;
		return filter.test(email);
	}


	// Check Form Field Is Empty
	function isEmpty(value){
		if (trim(value) == "") {
			return true;
		}
		return false;
	}
	
	// Check Name
	function is_valid_name(name) {
		var name = trim(name);
		var filter  = /[(\*\(\)\[\]\+\,\/\?\:\;\'\"\`\~\\#\$\%\^\&\<\>)+]/;
		return !filter.test(name);
	}

	// Check Remarks
	function is_valid_remarks(remarks) {
		var remarks = trim(remarks);
		var injection_strings = new Array('apparently-to', 'cc', 'bcc', 'boundary', 'charset', 'content-disposition', 'content-type', 'content-transfer-encoding', 'errors-to', 'in-reply-to', 'message-id', 'mime-version', 'multipart/mixed', 'multipart/alternative', 'multipart/related', 'reply-to', 'x-mailer', 'x-sender', 'x-uidl');
		for(i = 0; i < injection_strings.length; i++) {
			if(remarks.indexOf(injection_strings[i]) != -1) {
				return false;
			}
		}
		return true;
	}

	function validar_login(id_username, id_pass, msg_error)
	{
		var user = document.getElementById(id_username);
		var pass = document.getElementById(id_pass);
		if (trim(user.value) == "" || trim(pass.value) == "")
		{
			alert(msg_error);
			return false;
		}
		else
		{
			return true;
		}	
	}
	
	function checkNumber( objname, decplaces, reqdfield )
	{
		var num  = objname;
		var dp   = decplaces;
		var reqd = reqdfield;
		var x    = num.value;
		if ( x == "" )
		{
			if ( reqd )
			{
				alert( "Please enter a numeric value in this field " );
				num.select();
				num.focus();
				return (false);
			}
			else
			{
				num.value = 0;
				return (true);
			}
		}
	
		var dpFound  = false;
		var dpCount  = 0;
		var allValid = true;
		var checkOK ;
	
		if ( dp > 0 )
		{
			checkOK = ".0123456789";
		}
		else
		{
			checkOK = "0123456789";
		}
	  
		for ( i = 0;  i < x.length;  i++ )
		{
			ch = x.charAt(i);
		
			for ( j = 0;  j < checkOK.length;  j++ )
	
				if ( ch == checkOK.charAt(j) )
				{
					if ( ch == "." )
					{
						if ( dpFound )  // more than one decimal point found
						{
							allValid = false;
							break;
						}
						else
						{
							dpFound = true;
						}
					}
					else
					{
						if ( dpFound )
						{
							dpCount++ ;
						}
					}
			
					break;
				}
		  
			if ( j == checkOK.length )
			{
				allValid = false;
				break;
			}
		}
	  
		if ( !allValid )
		{
			alert( "Please enter only numeric values in this field " );
			num.select();
			num.focus();
			return (false);
		}
	
		if ( dpCount > dp )
		{
			alert( "Please enter only "+dp+" decimal places in this field " );
			num.select();
			num.focus();
			return (false);
		}
	
		return (true);
	}