function valida_CPF(s){

s = sonumero(s);
if(s.length == 0){
return false;
}

var i;
var c = s.substr(0,9);
var dv = s.substr(9,2);
var d1 = 0;
	for (i = 0; i < 9; i++){
		d1 += c.charAt(i)*(10-i);
	}
	if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1){
		return false;
	}
	d1 *= 2;
	for (i = 0; i < 9; i++){
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1){
		return false;
	}
	return true;
	
}

function valida_cnpj(s){

var i;
s = sonumero(s);
if (s.length > 14) {
	if (s.substr(0,1) == 0){
		var c = s.substr(1,12);
		var dv = s.substr(13,2);
	}
	else{
		var c = s.substr(0,12);
		var dv = s.substr(12,2);
	}
}
else{
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
}
var d1 = 0;
if (s.length < 14) {
	return false;
}
	for (i = 0; i < 12; i++){
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
	if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1){
		return false;
	}
	d1 *= 2;
	for (i = 0; i < 12; i++){
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1){
		return false;
	}
	return true;
}

function sonumero(s){
	if ( s != '' ) {
		var i;
		var dif = '';
		for (i = 0; i < s.length; i++){
			var c = s.charAt(i);
			if (((c >= '0') && (c <= '9'))){
				dif += s.charAt(i);
			}
		}
		return dif;
	}
	
}


function isNumeric(strString)
   {
   var strValidChars = "0123456789,";
   var strChar;
   var blnResult = true;
   var ponto = false;

   if (strString.length == 0) return false;

   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
         
      	if (strChar==","){
      		if(ponto==true){
      			blnResult = false;
      		}
      			ponto = true;
      	}
      
      }
      
            
   return blnResult;
}


function isDate(dateStr,format) {

var datePat;
  switch(format){
  
  case 'dd/mm/yyyy':
  datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  break;
  
  case 'dd/mm/yy':
  datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2})$/;
  break;
  
  case 'hh:MM:ss':
  datePat = /^(\d{1,2})(|:)(\d{1,2})(|:)(\d{2})$/;
  break;
  
  case 'hh:MM':
  datePat = /^(\d{1,2})(|:)(\d{1,2})$/;
  break;
  
  case 'dd/mm/yyyy hh:MM':
  datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})(\s)(\d{1,2})(|:)(\d{1,2})$/;
  break;
  
  case 'dd/mm/yyyy hh:MM:ss':
  datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})(\s)(\d{1,2})(|:)(\d{1,2})(|:)(\d{2})$/;
  break;
  
  
  }
  
    var matchArray = dateStr.match(datePat);

  if (matchArray == null) {
  	return false;
  }


  switch(format){
  
  case 'dd/mm/yyyy','dd/mm/yy':
  month = matchArray[3];
  day = matchArray[1];
  year = matchArray[5];
  hour = 0;
  minute = 0;
  second = 0;
  break;
  
  
  case 'hh:MM:ss':
  month = 1;
  day = 1;
  year = 2001;
  hour = matchArray[1];
  minute = matchArray[3];
  second = matchArray[5];
  break;
  
  case 'hh:MM':
  month = 1;
  day = 1;
  year = 2001;
  hour = matchArray[1];
  minute = matchArray[3];
  second = 0;
  break;
  
  case 'dd/mm/yyyy hh:MM':
  month = matchArray[3];
  day = matchArray[1];
  year = matchArray[5];
  hour = matchArray[7];
  minute = matchArray[9];
  second = 0
  break;
  
  case 'dd/mm/yyyy hh:MM:ss':
  month = matchArray[3];
  day = matchArray[1];
  year = matchArray[5];
  hour = matchArray[7];
  minute = matchArray[9];
  second = matchArray[11];
  break;
  
  }
  
  
  if (month < 1 || month > 12) {
    return false;
  }

  if (day < 1 || day > 31) {
  	return false;
  }

  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
  	return false;
  }

  if (month == 2) {
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day > 29 || (day==29 && !isleap)) {
    return false;
    }
  }
  
  if (hour < 0 || hour > 23) {
  return false;
  }
  
  if (minute < 0 || minute > 59) {
  return false;
  }
  
  if (second < 0 || second > 59) {
  return false;
  }
  
  
  return true; 
}




function verifica_mail(mail) {
  if (mail.length > 0) {
	if (!/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test(mail)) {
		return false;
	}
	return true;
 }
 return false;
}



function restrictMin(obj,min,msg,focus){

	if(obj.value.length <= min){
		if(focus==true){obj.focus();};
		alert(msg);
        return false;
    }
	return true
}


function restrictMinText(obj,text,min,msg,focus){

	if(text.length <= min){
		if(focus==true){obj.focus();};
		alert(msg);
        return false;
    }
	return true;
}


function restrictArray(obj,msg,focus){

	for(i = 0; i < obj.length; i++){
		if(obj[i].checked==true){return true};
	}
	if(focus==true){obj[0].focus;};
	alert(msg);
	return false;
}

function restrictEmail(obj,msg){
	if(verifica_mail(obj.value)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictEmailText(obj,text,msg){
	if(verifica_mail(text)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictCNPJ(obj,msg){
	if(valida_cnpj(obj.value)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}


function restrictCNPJText(obj,text,msg){
	if(valida_cnpj(text)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}


function restrictCPF(obj,msg){
	if(valida_CPF(obj.value)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}


function restrictCPFText(obj,text,msg){
	if(valida_CPF(text)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}


function restrictNumeric(obj,msg){
	if(isNumeric(obj.value)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictNumericText(obj,text,msg){
	if(isNumeric(text)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictDate(obj,format,msg){
	if(isDate(obj.value,format)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictDateText(obj,text,format,msg){
	if(isDate(text,format)==false){
	obj.focus();
	alert(msg);
	return false;
	}
	return true
}

function restrictCompare(obj1,obj2,msg){
	if(obj1.value!=obj2.value){
	obj1.focus();
	alert(msg);
	return false;
	}
	return true
}


