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;
}

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;       // Get length of string
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      	s = s.substring(0, i+1);
   }

   return s;
}
function Trim(str)
{
   return RTrim(LTrim(str));
}


var nav4 = window.Event ? true : false;
function acceptNum(evt){	
var key = nav4 ? evt.which : evt.keyCode;	
return (key <= 13 || (key >= 48 && key <= 57));
}

function ValidaFecha (dia,mes,ano,oblig){
	Error=true;
	if (oblig==true){
		if (dia=="" || mes=="" || ano=="")
			Error=false;
	}
	if ((mes>12) || (dia>31))
			{Error=false;}
	if (((mes==4)||(mes==6)||(mes==9)||(mes==11)) && (dia==31)){
			Error=false;}
	if ((mes==2) && (dia>28)){
			Error=false;}
	resto=ano%4;
	
	if ((resto==0) && (mes==2) && (dia==29)){
			Error=true;}
	if (ano<1880)
		{Error=false;}
	return Error;
}

function ValidaHora (hora,minuto,oblig){
	Error=true;
	if (oblig==true){
		if (hora=="" || minuto=="")
			{Error=false;}
	}
	if (hora>25 || minuto >60)
		{Error=false;}
	return Error;
}

function validarmail(pass)
{
    if (pass)
    {
       var tevaloresults = true;
       var index = 0;
       var filter=/^.+@.+\..{2,3}$/
       var filter2=/\.\./
       var rejected = false;
       var rejectedDomain=new Array();
       rejectedDomain[index]="";
       if (filter.test(pass))
       {
	    	var tempstring = pass.split("@");
            tempstring = tempstring[1].split(".")
            for ( i = 0; i < rejectedDomain.length; i++) 
              if (tempstring[0]==rejectedDomain[i])
                rejected=true
            if (rejected)
            {
              return false
            }
            if ( filter2.test(pass) )
              return false;
       }
       else
         return false;
   }
   else
     return false;
  return true;
}

function dateDiff(p_Interval, p_Date1, p_Date2, p_firstdayofweek, p_firstweekofyear){
	if(!isDate(p_Date1)){return "invalid date: '" + p_Date1 + "'";}
	if(!isDate(p_Date2)){return "invalid date: '" + p_Date2 + "'";}

	var dt1 = new Date(p_Date1);
	var dt2 = new Date(p_Date2);
   	//get ms between dates (UTC) and make into "difference" date
	var iDiffMS = dt2.valueOf() - dt1.valueOf();
	var dtDiff 	= new Date(iDiffMS);

	// calc various diffs
	var nYears 			= dtDiff.getUTCFullYear()-1970;
	var nMonths 		= dtDiff.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
	var nQuarters 		= parseInt(nMonths/3);
	var nWeeks 			= parseInt(iDiffMS/1000/60/60/24/7);
	var nDays			= parseInt(iDiffMS/1000/60/60/24);
	var nHours 			= parseInt(iDiffMS/1000/60/60);
	var nMinutes 		= parseInt(iDiffMS/1000/60);
	var nSeconds		= parseInt(iDiffMS/1000);
	var nMilliseconds 	= iDiffMS;

	// return requested difference
	var iDiff = 0;		
	switch(p_Interval.toLowerCase()){
		case "yyyy": return nYears;
		case "q": return nQuarters;
		case "m": return nMonths;
		case "y": 		// day of year
		case "d": return nDays;
		case "w": return nDays;
		case "ww":return nWeeks;		// week of year	// <-- inaccurate, WW should count calendar weeks (# of sundays) between
		case "h": return nHours;
		case "n": return nMinutes;
		case "s": return nSeconds;
		case "ms":return nMilliseconds;	// millisecond	// <-- extension for JS, NOT available in VBScript
		default: return "invalid interval: '" + p_Interval + "'";
		}
}

function isDate(p_Expression){
	return !isNaN(new Date(p_Expression));
}

/**
 * [dami] Esta funcion la tenia leao y no la quería compartir con sus amigos.
 * se las traigo a uds, para su deleite personal.
 */
function validarEmail(email)
{
	var re = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/);
	return re.test(email);
}
/**
 * [dami] Esta funcion la hizo Nano.
    Se usa para limitar la entrada de un input a "solo numeros".
 * Forma de uso: onkeypress="return isNumberKey(event);"
 * 
 */
function isNumberKey(evt)
{
	var charCode = ((evt.which) ? evt.which : event.keyCode);
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	else
		return true;
}

/**
 * [Pablo] Esta funcion la hizo dami, limita la cantidad de caracteres
 * que se ingresan en un textbox / textArea.
 */
function limitChars(textarea, limit, infodiv) 
{
    var text = textarea.value;
    var textlength = text.length;
    var info = document.getElementById(infodiv);

    if(textlength > limit) 
    {
        info.innerHTML = "0"; //'No puedes usar mas de ' + limit + ' caracteres.';
        textarea.value = text.substr(0, limit);
        return false;
    } 
    else 
    {
        info.innerHTML = (limit - textlength);
        return true;
    }
} 