function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Por favor, preencha o campo ' + fieldLabel +'.');
		formField.focus();
		formField.select();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789-");
}

function inValidCharSet(str,charset)
{
	var result = true;

	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField)
{
	var result = true;
	var reMail = '^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]$';				
	reMail = new RegExp(reMail,'gi');
	if(!reMail.test(formField.value)) {
		alert("Email inválido. Por favor, verifique seu email.");
		formField.focus();
		formField.select();
		result = false;
	}
		return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Por favor, preencha o campo ' + fieldLabel +' com somente números.');
			formField.focus();
			formField.select();
			result = false;
		}
	} 
	
	return result;
}


function validSelect(formField,fieldLabel){
	var result = true;
	if (formField.options[formField.selectedIndex].value == "-1") {
		result = false;
	}
	
	if(!result){
		alert("Selecione " + fieldLabel + " .");
		formField.focus();
	}
	return result;
}


function validRadio(formField,fieldLabel) {
	var result = false;

	for (i=0;i < formField.length;i++)	{
		if(formField[i].checked) result = true; 
	}

	if (!result){
 			alert('Por favor, selecione o campo ' + fieldLabel +'.');
			for (i=0;i < formField.length;i++)	{
				if(!formField[i].disabled) {
					result = formField[i].focus();
					break;					
				}
			}
	}
	return result;
}

function stringFilter (svalue) {
s = svalue;
filteredValues = ".-/";     // Characters stripped out
var i;
var returnString = "";
for (i = 0; i < s.length; i++) {  // Search through string and append to unfiltered values to returnString.
var c = s.charAt(i);
if (filteredValues.indexOf(c) == -1) returnString += c;
}
return  returnString;
}

function validCPF(formField) {
        cpf = formField.value;
        erro = new String;
        if (cpf.length < 11) erro += "CPF inválido, verifique seu CPF. ";
        cpf = stringFilter(cpf);
        var nonNumbers = /\D/;
        if (nonNumbers.test(cpf)) erro += "Por favor, insira somente números. ";
        if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
                erro += "Numero de CPF inválido."
      }
      var a = [];
      var b = new Number;
      var c = 11;
      for (i=0; i<11; i++){
              a[i] = cpf.charAt(i);
              if (i < 9) b += (a[i] * --c);
      }
      if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
      b = 0;
      c = 11;
      for (y=0; y<10; y++) b += (a[y] * c--);
      if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
      if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
              erro +="Digito verificador com problema.";
     }
      if (erro.length > 0){
              alert(erro);
			  formField.focus();
			  formField.select();
              return false;
      }
      return true;
     }
	 
 function validCNPJ(formField) {
                 CNPJ = formField.value;
                 erro = new String;
                 if (CNPJ.length < 18) erro += "CNPJ inválido, por favor verifique seu CNPJ. ";
                 if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
                 if (erro.length == 0) erro += "CNPJ inválido, por favor verifique seu CNPJ. ";
                 }
                 //substituir os caracteres que n?o s?o n?meros
               if(document.layers && parseInt(navigator.appVersion) == 4){
                       x = CNPJ.substring(0,2);
                       x += CNPJ. substring (3,6);
                       x += CNPJ. substring (7,10);
                       x += CNPJ. substring (11,15);
                       x += CNPJ. substring (16,18);
                       CNPJ = x;
               } else {
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace ("-","");
                       CNPJ = CNPJ. replace ("/","");
               }
               var nonNumbers = /\D/;
               if (nonNumbers.test(CNPJ)) erro += "O CNPJ contém apenas números.";
               var a = [];
               var b = new Number;
               var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
               for (i=0; i<12; i++){
                       a[i] = CNPJ.charAt(i);
                       b += a[i] * c[i+1];
 }
               if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
               b = 0;
               for (y=0; y<13; y++) {
                       b += (a[y] * c[y]);
               }
               if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
               if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro +="Dígito verificador com problema!";
               }
               if (erro.length > 0){
                       alert(erro);
					   formField.focus();
					   formField.select();
                       return false;
              }
               return true;
       }


       // Valida??o de data no formato dd/mm/aaaaa
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr,alertmsg){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
    if (arguments[1].length == 0) alertmsg = true
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		if (alertmsg) alert("O formato da data deve ser dd/mm/aaaa")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		if (alertmsg) alert("Por favor entre com um mês válido ")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		if (alertmsg) alert("Por favor entre com um dia válido")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		if (alertmsg) alert("Por favor entre com um ano de  4 digitos entre "+minYear+" e "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		if (alertmsg) alert("Por favor entre com uma data válida")
		return false
	}
return true
}


function correctDate(strdate){

	splitDate = strdate.split("/");
	if (splitDate[2] && splitDate[2].length == 2){splitDate[2] = "20"+splitDate[2]}
	refDate = new Date(splitDate[1]+"/"+splitDate[0]+"/"+splitDate[2]);
	if (splitDate[1] < 1 || splitDate[1] > 12 || refDate.getDate() != splitDate[0] || splitDate[2].length != 4 || (!/^20/.test(splitDate[2])))
		return false
	
	return true
}


/* ############ PROGESTRUZ ############ */
/* Fun??es para valida??o no PROGESTRUZ */

function isNumberRange(obj,min,max){

    intOnly(obj);
    s = obj.value;
    var sWhitespace = " \t\f\n\r\v";
    if (sWhitespace.indexOf(s) != -1) {
        obj.className = '';
        return true;
    }

    if (((s < min) || (s > max))) {
        msg = document.getElementById("errormsg");
        msg.innerHTML = "O valor " + s + " está fora do limite permitido entre " + min +  " e " + max;
        obj.className = 'invalidfield';

        showhide(obj);
        obj.focus();
        obj.select()
        return false;
    } else {
        obj.className = '';
    }

    return true;
}


function validNumProgestruz(obj) {
	intOnly(obj);
    if ( obj.value != "" )
        obj.className = '';
}

function validDate(obj) {
    s = obj.value;
    var sWhitespace = " \t\f\n\r\v";
    if (sWhitespace.indexOf(s) != -1) {
        obj.className = '';
        return true;
    }

    valid = correctDate(obj.value);

    if (!valid)  {
        msg = document.getElementById("errormsg");
        msg.innerHTML = "A data informada não é válida. Verifique o formato dd/mm/aa.";
        obj.className = 'invalidfield';
        showhide(obj);
        obj.focus();
        obj.select()
        return false;
    }

    obj.className = '';
    return true;
}


function validPeso(obj) {
	if(obj.value.length>0) {
		obj.value = obj.value.replace(/[^\d\,]+/g, '');
	}
}

function isFilled(obj){

	if(obj.value.length>0) {
		obj.value = obj.value.replace(/[^\w]+/g, '');
	}

	if(obj.value.length>0)
		obj.className = ''

    return true;
}




