// #
// # Metodos de Validacao de Campos
// #

// # Verifica se um valor é nulo, vazio ou se contém apenas espaços em branco.
function isEmpty(s)
{
   // Define whitespace characters
   var whitespace = " \t\n\r";
   
   if ((s == null) || (s.length == 0))
      return true;
   
   // Search string looking for characters that are not whitespace
   for (i = 0; i < s.length; i++)    
   {   
      var c = s.charAt(i);
      if (whitespace.indexOf(c) == -1) {
         
         return false;
      }
   }
    
   // At this point all characters are whitespace.
   return true;
}

function isNUMB(c) { 
	if((cx=c.indexOf(","))!=-1) { 
  	    c = c.substring(0,cx)+"."+c.substring(cx+1); 
    } 
 	if((parseFloat(c) / c != 1)) { 
  		if(parseFloat(c) * c == 0) { 
   			return(1); 
   		} else { 
		   return(0); 
        } 
    } else { 
        return(1); 
    }
} 

function isNumber(c) { 
   
   var cx = c.indexOf(".");
   var carac = c;
   
   while (cx != -1) { 
  	  carac = carac.substring(0, cx) + carac.substring(cx + 1); 
  	  cx = carac.indexOf(".");
   } 
   
   // have ','
   cx = carac.indexOf(",");
   while (cx != -1) { 
  	  carac = carac.substring(0, cx) + "." + carac.substring(cx + 1); 
  	  cx = carac.indexOf(",");
   } 
   
   if (isNaN(parseFloat(carac))) {
      return false;
   } else {
      return true;
   }
   
} 

function isInteger(s) 
{
   var i=0, c;
   if (isEmpty(s)) return false;

   if (s.charAt(i) == "-") i++;
   
   for (i = 0; i < s.length; i++)   
   {
      // Check if all characters are numbers
      c = s.charAt(i);
      if (!isDigit(c)) return false;
   }
   
   return true;
}

function parseInteger(s)
{
	var c = s.indexOf('0');
	while (c == 0) {
		s = s.substring(1);
		c = s.indexOf('0');
	}
	if (s.length == 0) return 0;
	return parseInt(s);
}

function isDigit(c)
{   
   // Regular expression version:
   return /^\d$/.test(c);
   // return ((c >= "0") && (c < "9"));
}

function LIMP(c) { 
    while((cx=c.indexOf("-"))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf("/"))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf(","))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf("."))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf("("))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf(")"))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    while((cx=c.indexOf(" "))!=-1) { 
        c = c.substring(0,cx)+c.substring(cx+1); 
    } 
    return(c); 
} 

function VerifyCNPJ(CNPJ) { 
    CNPJ = LIMP(CNPJ); 
    if(isNUMB(CNPJ) != 1) { 
        return(0); 
    } else { 
        if(CNPJ == 0) { 
            return(0); 
        } else { 
            g=CNPJ.length-2; 
            if(RealTestaCNPJ(CNPJ,g) == 1) { 
                g=CNPJ.length-1; 
                if(RealTestaCNPJ(CNPJ,g) == 1) { 
                    return(1); 
                } else { 
                    return(0); 
                } 
            } else { 
                return(0); 
            } 
        } 
    } 
} 

function RealTestaCNPJ(CNPJ,g) { 
    var VerCNPJ=0; 
    var ind=2; 
    var tam; 
    for(f=g;f>0;f--) { 
        VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind; 
        if(ind>8) { 
            ind=2; 
        } else { 
            ind++; 
        } 
    } 
    VerCNPJ%=11; 
    if(VerCNPJ==0 || VerCNPJ==1) { 
        VerCNPJ=0; 
    } else { 
        VerCNPJ=11-VerCNPJ; 
    } 
    if(VerCNPJ!=parseInt(CNPJ.charAt(g))) { 
        return(0); 
    } else { 
        return(1); 
    } 
} 
  

function FormataCGC(Formulario, Campo, TeclaPres) { 
    var tecla = TeclaPres.keyCode; 
    var strCampo; 
    var vr; 
    var tam; 
    var TamanhoMaximo = 14; 
  
    eval("strCampo = document." + Formulario + "." + Campo); 
  
    vr = strCampo.value; 
    vr = vr.replace("/", ""); 
    vr = vr.replace("/", ""); 
    vr = vr.replace("/", ""); 
    vr = vr.replace(",", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace(".", ""); 
    vr = vr.replace("-", ""); 
    vr = vr.replace("-", ""); 
    vr = vr.replace("-", ""); 
    vr = vr.replace("-", ""); 
    vr = vr.replace("-", ""); 
    tam = vr.length; 

    if (tam < TamanhoMaximo && tecla != 8) { 
      tam = vr.length + 1; 
    } 

    if (tecla == 8) { 
      tam = tam - 1; 
    } 

    if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105) { 
        if (tam <= 2) { 
            strCampo.value = vr; 
        } 
        if ((tam > 2) && (tam <= 6)) { 
            strCampo.value = vr.substr(0, tam - 2) + '-' + vr.substr(tam - 2, tam); 
        }
        if ((tam >= 7) && (tam <= 9)) { 
            strCampo.value = vr.substr(0, tam - 6) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam); 
        } 
        if ((tam >= 10) && (tam <= 12)) { 
            strCampo.value = vr.substr(0, tam - 9) + '.' + vr.substr(tam - 9, 3) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam); 
        } 
        if ((tam >= 13) && (tam <= 14)) { 
            strCampo.value = vr.substr(0, tam - 12) + '.' + vr.substr(tam - 12, 3) + '.' + vr.substr(tam - 9, 3) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam); 
        } 
        if ((tam >= 15) && (tam <= 17)) { 
            strCampo.value = vr.substr(0, tam - 14) + '.' + vr.substr(tam - 14, 3) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + '-' + vr.substr(tam - 2, tam); 
        } 
    } 
} 

// #################################################################
// <!-- Validacao de datas -->
// #################################################################
function check_date(field) {

var DateValue = "";
var err = 0;
var separator = "/";
var day = 0;
var month = 0;
var year = 0;
var leap = 0;
    
    DateValue = field.value;
    var i = DateValue.lastIndexOf(separator);
    if (i < 0) {
        err = 1;
    } else {
        tmpStr = DateValue.substr(i+1);
        year = parseInteger(tmpStr);
        if (tmpStr.length == 0 || isNaN(year)) {
            err = 2;
        }
        if (year <= 0) {
            err = 3;
        }
    }
    // ------------
    if (err == 0) {
        DateValue = DateValue.substr(0,i);
        var j = DateValue.lastIndexOf(separator);
        if (j < 0) {
            err = 4;
        } else {
            tmpStr = DateValue.substr(j+1);
            month = parseInteger(tmpStr);
            if (tmpStr.length == 0 || isNaN(month)) {
                err = 5;
            }
            if (month <= 0 || month > 12) {
                err = 6;
            }
        }
    }
    // -------------
    if (err == 0) {
        DateValue = DateValue.substr(0,j);
        day = parseInteger(DateValue);
        if (tmpStr.length == 0 || isNaN(day)) {
            err = 7;
        }
        if (day <= 0 || day > 31) {
            err = 8;
        }
    }
    // -------------
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 9;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 10;
   }
   /* Validation of other months */
   if ((day > 30) && ((month == 4) || (month == 6) || (month == 9) || (month == 11))) {
      err = 11;
   }
    
    if (err > 0) {
      alert("Data incorreta!");
      field.select();
	  field.focus();
    }
    
    return err;
}

function check_date_hour(field) {

var HourValue;
var hseparator = ":";
var minutes = 0;
var hour = 0;
var err = 0;

    HourValue = field.value;
    var i = HourValue.lastIndexOf(hseparator);
    if (i < 0) {
        err = 12;
    } else {
        tmpStr = HourValue.substr(i+1);
        minutes = parseInteger(tmpStr);
        if (tmpStr.length == 0 || isNaN(minutes)) {
            err = 13;
        }
        if (minutes < 0 || minutes > 59) {
            err = 14;
        }
    }
    // ------------------------
    if (err == 0) {
        HourValue = HourValue.substr(0,i);
        var j = HourValue.lastIndexOf(' ');
        if (j < 0) {
            err = 15;
        } else {
            tmpStr = HourValue.substr(j+1);
            hour = parseInteger(tmpStr);
            if (tmpStr.length == 0 || isNaN(hour)) {
                err = 16;
            }
            if (hour < 0 || hour > 23) {
                err = 17;
            }
        }
    }
    // -------------
    if (err == 0) {
        var remain = field.value.substr(j);
        field.value = HourValue.substr(0,j);
        err = check_date(field);
        field.value = field.value + remain;
    } else {
      alert("Hora incorreta!");
      field.select();
	  field.focus();
    }

    return err;
}

// ###################################################
// Validacao de emails / login
// ###################################################
function verifyLogin(login){

    var a = login.toLowerCase();
    var esValido;

 if ( (a.indexOf("á")!=-1) || (a.indexOf("é")!=-1) ||
    (a.indexOf("í")!=-1) || (a.indexOf("ó")!=-1) || (a.indexOf("ú")!=-1) ||
    (a.indexOf("ã")!=-1) || (a.indexOf("õ")!=-1) || (a.indexOf(",")!=-1) ||
    (a.indexOf(":")!=-1) || (a.indexOf(";")!=-1) || (a.indexOf("/")!=-1) ||
    (a.indexOf("ç")!=-1) || (a.indexOf(" ")!=-1) )
   {
	   esValido=false;
   }
    else
   {
       esValido=true;
   }
   return esValido;
}

function validarDireccionEMail(direccion){

    var longitud = direccion.length;
    var limiteInf = 1;
    var limiteSup = longitud - 2;
    var posicionArroba = direccion.indexOf("@");
    var esValido;

    if ( (longitud < 3) || (posicionArroba > limiteSup ) || (posicionArroba < limiteInf ) ) {
       esValido=false;
    } else {
       esValido=true;
    }
    return esValido;
}

function validarEMail(direccion){

    var a = direccion.toLowerCase();
    var esValido;

 if ( (a.indexOf("á")!=-1) || (a.indexOf("à")!=-1) ||
    (a.indexOf("é")!=-1) || (a.indexOf("è")!=-1) || (a.indexOf("í")!=-1) ||
    (a.indexOf("ì")!=-1) || (a.indexOf("ó")!=-1) || (a.indexOf("ò")!=-1) ||
    (a.indexOf("ú")!=-1) || (a.indexOf("ù")!=-1) || (a.indexOf("ä")!=-1) ||
	(a.indexOf("ë")!=-1) || (a.indexOf("ï")!=-1) || (a.indexOf("ö")!=-1) ||
    (a.indexOf("ü")!=-1) || (a.indexOf("â")!=-1) || (a.indexOf("ê")!=-1) ||
    (a.indexOf("î")!=-1) || (a.indexOf("ô")!=-1) || (a.indexOf("û")!=-1) ||
	(a.indexOf("!")!=-1) || (a.indexOf("#")!=-1) || (a.indexOf("$")!=-1) ||
    (a.indexOf("%")!=-1) || (a.indexOf("&")!=-1) || (a.indexOf("*")!=-1) ||
    (a.indexOf("(")!=-1) || (a.indexOf(")")!=-1) || (a.indexOf("/")!=-1) ||
    (a.indexOf(":")!=-1) || (a.indexOf(">")!=-1) || (a.indexOf("<")!=-1) ||
    (a.indexOf("|")!=-1) || (a.indexOf("\\")!=-1)|| (a.indexOf(",")!=-1) ||
    (a.indexOf(" ")!=-1) || (a.indexOf("=")!=-1) || (a.indexOf("º")!=-1) ||
	(a.indexOf("}")!=-1) || (a.indexOf("{")!=-1) || (a.indexOf("ª")!=-1) ||
	(a.indexOf("®")!=-1) || (a.indexOf("\'")!=-1) || (a.indexOf("\"")!=-1) || 
	(a.indexOf("¨")!=-1) || (a.indexOf("^")!=-1) || (a.indexOf("´")!=-1) ||
	(a.indexOf("`")!=-1) || (a.indexOf("~")!=-1) )
   {
   esValido=false;
    }
    else
    {
       esValido=true;
    }
    return esValido;
}

// ### Funcao auxiliar
/**
*  Coloca no select o valor selecionado
*/
function selecionar( selectionTarget, value )
{
   var i= 0;
   for ( var i=0; i < selectionTarget.options.length; i++ )
   {
      if ( selectionTarget.options[i].value == value )
      {
         selectionTarget.selectedIndex= i;
         break;
      }
   }
}

// #### Validacao de Suporte ao Struts
function getElementIterate(form, name, property, index) {

    for (var j = 0; j < form.elements.length; j++){
        element = form.elements[j];
        if(element.name.match(name+"\\["+index+"\\]."+property)){
        	return element;
        }
    }
} 


