
<!-- Begin 
// Funções neste módulo:
//   CheckDate
//   CheckNumber


// Exemplo de execução: >>>>  CheckDate( document.frmRel.txtDataInicio, document.frmRel.txtDataInicio.value, true ) <<<<
// Check browser version 
var isNav4 = false, isNav5 = false, isIE4 = false 
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator. 
var vDateType = 3; // Global value for type of date format 
//                1 = mm/dd/yyyy 
//                2 = yyyy/dd/mm  (Unable to do date check at this time) 
//                3 = dd/mm/yyyy 
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape 
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating. 
var err = 0; // Set the error code to a default of zero 
if(navigator.appName == "Netscape") { 
if (navigator.appVersion < "5") { 
	isNav4 = true; 
	isNav5 = false; 
} 
else 
	if (navigator.appVersion > "4") { 
		isNav4 = false; 
		isNav5 = true; 
	   } 
	} 
	else { 
		isIE4 = true; 
	} 
function CheckDate(vDateName, vDateValue, blnCpoObrigatorio ) { 
	vDateType = 3; // está fixo o formato dd/mm/yyyy 
	// vDateName = object name 
	// vDateValue = value in the field being checked 
	// e = event 
	//Enter a tilde sign for the first number and you can check the variable information. 
	if (vDateValue == "~") { 
		alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator); 
		vDateName.value = ""; 
		vDateName.focus(); 
		return true; 
	} 

	//	var whichCode = (window.Event) ? e.which : e.keyCode; 
	whichCode = 0;
	// Check to see if a seperator is already present. 
	// bypass the date if a seperator is present and the length greater than 8 
	if (vDateValue.length > 8 && isNav4) { 
		if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1)) 
			return true; 
	} 
	//Eliminate all the ASCII codes that are not valid 
	var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-"; 
	if (alphaCheck.indexOf(vDateValue) >= 1) { 
		if (isNav4) { 
			vDateName.value = ""; 
			vDateName.focus(); 
			vDateName.select(); 
			return false; 
		} 
		else { 
			vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); 
			return false; 
	   } 
	} 
	if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value 
		return false; 
	else { 
		//Create numeric string values for 0123456789/ 
		//The codes provided include both keyboard and keypad values 
		var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105'; 
		if (strCheck.indexOf(whichCode) != -1) { 
			if (isNav4) { 
				if (((vDateValue.length < 6 ) || (vDateValue.length == 7 )) && (vDateValue.length >=1)) { 
					alert("Data Inválida . "); 
					vDateName.value = ""; 
					vDateName.focus(); 
					vDateName.select(); 
					return false; 
				} 
				if (vDateValue.length == 6 ) { 
					var mDay = vDateName.value.substr(2,2); 
					var mMonth = vDateName.value.substr(0,2); 
					var mYear = vDateName.value.substr(4,4) 
					//Turn a two digit year into a 4 digit year 
					if (mYear.length == 2 && vYearType == 4) { 
						var mToday = new Date(); 
						//If the year is greater than 30 years from now use 19, otherwise use 20 
						var checkYear = mToday.getFullYear() + 30; 
						var mCheckYear = '20' + mYear; 
						if (mCheckYear >= checkYear) 
							mYear = '19' + mYear; 
						else 
							mYear = '20' + mYear; 
					} 
					var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 
					if (!dateValid(vDateValueCheck)) { 
						alert("Data Inválida . "); 
						vDateName.value = ""; 
						vDateName.focus(); 
						vDateName.select(); 
						return false; 
					} 
					return true; 
				} 
				else { 
					// Reformat the date for validation and set date type to a 1 
					if (vDateValue.length >= 8  ) { 

						// formato: ddmmyyyy 
						var mMonth = vDateName.value.substr(2,2); 
						var mDay = vDateName.value.substr(0,2); 
						var mYear = vDateName.value.substr(4,4) 
						vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; 

						//Create a temporary variable for storing the DateType and change 
						//the DateType to a 1 for validation. 
						var vDateTypeTemp = vDateType; 
						vDateType = 1; 
						var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 
						if (!dateValid(vDateValueCheck)) { 
							alert("Data Inválida . "); 
							vDateType = vDateTypeTemp; 
							vDateName.value = ""; 
							vDateName.focus(); 
							vDateName.select(); 
							return false; 
						} 
						vDateType = vDateTypeTemp; 
						return true; 
					} 
					else { 
						if (((vDateValue.length < 8 ) || (vDateValue.length == 9 )) && (vDateValue.length >=1)) { 
							alert("Data Inválida . "); 
							vDateName.value = ""; 
							vDateName.focus(); 
							vDateName.select(); 
							return false; 
				        } 
				        else {
							if ((vDateValue.length ==0) && (blnCpoObrigatorio) ) {
								alert("Data Inválida . "); 
								vDateName.value = ""; 
								vDateName.focus(); 
								vDateName.select(); 
								return false; 
							}
				        }
 			        } 
				} 
			} 
			else { // if (isNav4)  
				// Non isNav Check 
				if (((vDateValue.length < 8 ) || (vDateValue.length == 9 )) && (vDateValue.length >=1)) { 
					alert("Data Inválida . "); 
					vDateName.value = ""; 
					vDateName.focus(); 
					return false; 
				} 
				// Reformat date to format that can be validated. mm/dd/yyyy 
				if (vDateValue.length >= 8 ) { 
					// Additional date formats can be entered here and parsed out to 
					// a valid date format that the validation routine will recognize. 
					var mDay = vDateName.value.substr(0,2); 
					var mMonth = vDateName.value.substr(3,2); 
					var mYear = vDateName.value.substr(6,4) 

					if (vYearLength == 4) { 
						if (mYear.length < 4) { 
							alert("Data Inválida . "); 
							vDateName.value = ""; 
							vDateName.focus(); 
							return false; 
						} 
					} 
					// Create temp. variable for storing the current vDateType 
					var vDateTypeTemp = vDateType; 
					// Change vDateType to a 1 for standard date format for validation 
					// Type will be changed back when validation is completed. 
					vDateType = 1; 
					// Store reformatted date to new variable for validation. 
					var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 
					if (mYear.length == 2 && vYearType == 4 ) { 
						//Turn a two digit year into a 4 digit year 
						var mToday = new Date(); 
						//If the year is greater than 30 years from now use 19, otherwise use 20 
						var checkYear = mToday.getFullYear() + 30; 
						var mCheckYear = '20' + mYear; 
						if (mCheckYear >= checkYear) 
							mYear = '19' + mYear; 
						else 
							mYear = '20' + mYear; 
						vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 
						// Store the new value back to the field.  This function will 
						// not work with date type of 2 since the year is entered first. 
						if (vDateTypeTemp == 1) // mm/dd/yyyy 
							vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear; 
						if (vDateTypeTemp == 3) // dd/mm/yyyy 
							vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; 
					} 
					if (!dateValid(vDateValueCheck)) { 
						alert("Data Inválida . "); 
						vDateType = vDateTypeTemp; 
						vDateName.value = ""; 
						vDateName.focus(); 
						return false; 
					} 
					vDateType = vDateTypeTemp; 
					return true; 
				} 
				else { 
					if (vDateValue.length == 2) { 
						vDateName.value = vDateValue+strSeperator; 
					} 
					if (vDateValue.length == 5) { 
						vDateName.value = vDateValue+strSeperator; 
					} 
					if (( vDateValue.length == 0) && (blnCpoObrigatorio) ) { 
						alert("Data Inválida . "); 
						return false;
					} 
					
					return true; 
				} 
			} 
			if (vDateValue.length == 10) { 
				if (!dateValid(vDateName)) { 
					// Un-comment the next line of code for debugging the dateValid() function error messages 
					//alert(err);   
					alert("Data Inválida . "); 
					vDateName.focus(); 
					vDateName.select(); 
					return false; 
	 		    } 
			} 
			return false; 
		} 
		else { 
			// If the value is not in the string return the string minus the last 
			// key entered. 
			if (isNav4) { 
				vDateName.value = ""; 
				vDateName.focus(); 
				vDateName.select(); 
				return false; 
			} 
			else { 
				vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); 
				return false; 
		    } 
		} 
	} // if (strCheck.indexOf(whichCode) != -1) 
} 
	
function dateValid(objName) { 
	var strDate; 
	var strDateArray; 
	var strDay; 
	var strMonth; 
	var strYear; 
	var intday; 
	var intMonth; 
	var intYear; 
	var booFound = false; 
	var datefield = objName; 
	var strSeparatorArray = new Array("-"," ","/","."); 
	var intElementNr; 
	// var err = 0; 
	var strMonthArray = new Array(12); 
	strMonthArray[0] = "Jan"; 
	strMonthArray[1] = "Feb"; 
	strMonthArray[2] = "Mar"; 
	strMonthArray[3] = "Apr"; 
	strMonthArray[4] = "May"; 
	strMonthArray[5] = "Jun"; 
	strMonthArray[6] = "Jul"; 
	strMonthArray[7] = "Aug"; 
	strMonthArray[8] = "Sep"; 
	strMonthArray[9] = "Oct"; 
	strMonthArray[10] = "Nov"; 
	strMonthArray[11] = "Dec"; 
	//strDate = datefield.value; 
	strDate = objName; 
	if (strDate.length < 1) { 
		return true; 
	} 
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) { 
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) { 
			strDateArray = strDate.split(strSeparatorArray[intElementNr]); 
			if (strDateArray.length != 3) { 
				err = 1; 
				return false; 
			} 
			else { 
				strDay = strDateArray[0]; 
				strMonth = strDateArray[1]; 
				strYear = strDateArray[2]; 
			} 
			booFound = true; 
		} 
	} 
	if (booFound == false) { 
		if (strDate.length>5) { 
			strDay = strDate.substr(0, 2); 
			strMonth = strDate.substr(2, 2); 
			strYear = strDate.substr(4); 
	    } 
	} 
	//Adjustment for short years entered 
	if (strYear.length == 2) { 
		strYear = '20' + strYear; 
	} 
	strTemp = strDay; 
	strDay = strMonth; 
	strMonth = strTemp; 
	intday = parseInt(strDay, 10); 
	if (isNaN(intday)) { 
		err = 2; 
		return false; 
	} 
	intMonth = parseInt(strMonth, 10); 
	if (isNaN(intMonth)) { 
		for (i = 0;i<12;i++) { 
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) { 
				intMonth = i+1; 
				strMonth = strMonthArray[i]; 
				i = 12; 
			} 
		} 
		if (isNaN(intMonth)) { 
			err = 3; 
			return false; 
	    } 
	} 
	intYear = parseInt(strYear, 10); 
	if (isNaN(intYear)) { 
		err = 4; 
		return false; 
	} 
	if (intMonth>12 || intMonth<1) { 
		err = 5; 
		return false; 
	} 
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) { 
		err = 6; 
		return false; 
	} 
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) { 
		err = 7; 
		return false; 
	} 
	if (intMonth == 2) { 
		if (intday < 1) { 
			err = 8; 
			return false; 
		} 
		if (LeapYear(intYear) == true) { 
			if (intday > 29) { 
				err = 9; 
				return false; 
			   } 
			} 
			else { 
				if (intday > 28) { 
					err = 10; 
					return false; 
		        } 
		    } 
		} 
	return true; 
	} 
	
function LeapYear(intYear) { 
	if (intYear % 100 == 0) { 
	if (intYear % 400 == 0) { return true; } 
	} 
	else { 
	if ((intYear % 4) == 0) { return true; } 
	} 
	return false; 
} 
//  End --> 


// ------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------

// <!-- Início de Validate()
//
//	Define Validate class constructor
//

function Validate() {}


Validate.prototype.isOnlyAlphaNumeric = function(string)
{
	var invalidCharactersRegExp = /[^a-z\d ]/i;
	var isValid = !(invalidCharactersRegExp.test(string));
	
	return isValid;
}


Validate.prototype.isOnlyAlphaNumericNoSpace = function(string)
{
   var invalidCharactersRegExp = /[^a-z\d]/i;
   var isValid = !(invalidCharactersRegExp.test(string));
      
   return isValid;
}



Validate.prototype.isOnlyAlphabetic = function(string)
{
	invalidCharactersRegExp = /[^a-z ]/i;
	var isValid = !(invalidCharactersRegExp.test(string));
	
	return isValid;
}

Validate.prototype.isOnlyNumeric = function(string)
{
	var invalidCharactersRegExp = /[^\d]/;
	var isValid = !(invalidCharactersRegExp.test(string));
	
	return isValid;
}

Validate.prototype.isValidInteger = function(string)
{
	var invalidCharactersRegExp = /[^\d-]/;
	var isValid = !(invalidCharactersRegExp.test(string));
	
	return isValid;
}

Validate.prototype.isValidFloatingPoint = function(string)
{
	var invalidCharactersRegExp = /[^\d\.-]/;
	var isValid = !(invalidCharactersRegExp.test(string));
	
	return isValid;
}

Validate.prototype.isValidAge = function(age)
{
	var isValid = false;
	if (this.isOnlyNumeric(age))
	{
		isValid = (parseInt(age) > 0 && parseInt(age) < 140)
	}
	
	return isValid;
}

Validate.prototype.isValidPassword = function(password)
{
	var invalidCharactersRegExp = /[^a-z\d]/i
	var isValid = !(invalidCharactersRegExp.test(password));
	if (isValid)
	{
		isValid = (password.length >= 8 && password.length <= 16);
	}
	return isValid;
	
}



Validate.prototype.isValidTelephoneNum = function(telephoneNum)
{

//    A formatação abaixo só aceita números e como separador os caracteres espaço, "." ou "-" 
//    ( uma ou mais ocorrência de apenas um dos separadores, pois devem sofrer um replace destes 
//    caracteres antes de gerar o XML )

//   var validFormatRegExp = /^\d{1,9}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,4}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,4}$/;
   var validFormatRegExp = /^[ ]{0,}\d{1,9}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,4}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,4}[ ]{0,}$/;
   
   var isValid = validFormatRegExp.test(telephoneNum);
   return isValid;
   
}

Validate.prototype.isValidCelularNum = function(telephoneNum)
{

//    A formatação abaixo só aceita números e como separador os caracteres espaço, "." ou "-" 
//    ( uma ou mais ocorrência de apenas um dos separadores, pois devem sofrer um replace destes 
//    caracteres antes de gerar o XML )

   var validFormatRegExp = /^\d{1,9}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,9}([ ]{0,}|[-]{0,}|[.]{0,})\d{1,9}$/;
   var isValid = validFormatRegExp.test(telephoneNum);
   return isValid;
   
}


Validate.prototype.isValidCPF = function(CPFNumber)
{

//    Formato: 111.222.333-44

   var validFormatRegExp = /^[ ]{0,}\d{3}([.]{0,1})\d{3}([.]{0,1})\d{3}([-]{0,1})\d{2}[ ]{0,}$/;
   var isValid = validFormatRegExp.test(CPFNumber);
   return isValid;
   
}

Validate.prototype.isValidCNPJ = function(CNPJNumber)
{

//    Formato: 00.000.000/0000-00

   var validFormatRegExp = /^[ ]{0,}\d{2}([.]{0,1})\d{3}([.]{0,1})\d{3}([/]{0,1})\d{4}([-]{0,1})\d{2}[ ]{0,}$/;
   var isValid = validFormatRegExp.test(CNPJNumber);
   return isValid;
   
}

Validate.prototype.isValidPostalCode = function(postalCode)
{
//   var validFormat = /^(\d{5}(-\d{4})?|[a-z]{1,2}[\da-z]{1,2} ?\d[a-z][a-z])$/i
   var validFormat = /^(\d{5}([-]{0,1}\d{3}))$/i  // formato: 99999-999
   var isValid = validFormat.test(postalCode);
   return isValid;
}

Validate.prototype.isValidEmail = function(email)
{
   var validFormatRegExp =  /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
   var isValid = validFormatRegExp.test(email);
   return isValid;
}




Validate.prototype.isValidDate = function(day, month,year)
{
	var isValid = true;

	var enteredDate = new Date(day + " " + month + " " + year);
	if (enteredDate.getDate() != day)
	{
		isValid = false;
	}
	return isValid;
}

Validate.prototype.isValidDateOfBirth = function(day, month, year)
{
	var isValid = true;
	var nowDate = new Date();
	year = parseInt(year);
	dateOfBirth =  new Date(day + " " + month + " " + year);
	if (!this.isValidDate(day,month,year))
	{
		isValid = false;
	}
	else if (dateOfBirth > nowDate || (year + 140) < nowDate.getFullYear())
	{
		isValid = false;
	}
	
	return isValid;
}


//  Fim de Validate() --> 


