/* validate */
function validateCNPJ(inputElement) {
	var peso1 = "543298765432",	
		peso2 = "6543298765432", 
		dig1 = 0,
		dig2 = 0,	
		n = 0, 
		xx, 
		value = inputElement.value.replace(/[^0-9]/g, "");
	if(value.blank() || value.length != 14) {
		return false;
	}
	for(xx = 0; xx < 12; ++xx) {
		n = parseInt(value.substring(xx, xx+1));
		dig1 += n * parseInt(peso1.substring(xx, xx+1));
		dig2 += n * parseInt(peso2.substring(xx, xx+1));
	}	
	dig2 += parseInt(value.substring(xx, xx+1)) * parseInt(peso2.substring(xx, xx+1));
	dig1 -= Math.floor(dig1 / 11) * 11;
	dig1 = (dig1 <= 1 ? 0 : 11 - dig1);dig2 -= Math.floor(dig2 / 11) * 11;
	dig2 = (dig2 <= 1 ? 0 : 11 - dig2);
	if(dig1 + "" + dig2 == value.substring(12, 14)) {
		return true;
	} else {
		return false;
	}
}

function validateCPF(inputElement) {
	var digit1 = 0, 
		digit2 = 0,	
		m = 12,	
		n = 0, 
		value = inputElement.value.replace(/[^0-9]/g, "");

	if(value.blank() || value.length != 11){
		return false;
	}
	for(var xx = 0; xx < 9; ++xx) {
		n=value.substring(xx, xx+1);
		digit2+=n*--m;
		digit1+=n*(m-1);
	}
	digit2+=value.substring(xx, xx+1)*--m;
	if((digit1=(digit1*10)%11)>=10){
		digit1=0;
	}
	if((digit2=(digit2*10)%11)>=10){
		digit2=0;
	}
	
	
	if(digit1+""+digit2==value.substring(9,11)){
		return true;
	}else{
		return false;
	}	
}

function validatePIS(inputElement){
	var pis = inputElement.value.replace(/[^0-9]/g,'');
	var n = 0;
	var resto = 0;
	if(pis == '' || pis.length < 11){	
		return false;
	}

	for(var x = 0;x < 10; ++x){                      
		n += parseInt(pis.substring(x,x+1))*parseInt('3298765432'.substring(x,x+1));
	}
	
	if((resto=n%11)!=0){
		resto=11-resto;
	}
	
	if(resto != parseInt(pis.substring(11,10),10)){
		return false;
	}
	return true;
}

function validateDateMY(inputElement) {
	var value, month, year, datePat, matchArray;
	value = inputElement.value;
	datePat = /^(\d{1,2})(\/)(\d{2,4})$/;
	matchArray = value.match(datePat);
	if (matchArray == null){
		return false;
	}
	month = matchArray[1];
	year = matchArray[3];
	month--;
	dteDate=new Date(year,month,1);
	return ((1==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}

function validateDateDMY(inputElement) {
	var value, day, month, year, datePat, matchArray;
	value = inputElement.value;
	datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2,4})$/;
	matchArray = value.match(datePat);
	if (matchArray == null){
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[5];
	month--;
	dteDate=new Date(year,month,day, 12, 0, 0);
	return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
	

function validateDateDMYHM(inputElement) {
	var value, day, month, year, datePat, matchArray;
	value = inputElement.value;
	datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2,4})( )(\d{1,2})(:)(\d{1,2})$/;
	matchArray = value.match(datePat);
	if (matchArray == null){
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[5];
	hours = matchArray[7];
	minutes = matchArray[9];
	month--;
	dteDate=new Date(year,month,day,hours,minutes,0);
	return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()) && (hours==dteDate.getHours()) && (minutes==dteDate.getMinutes()));	
}


function validateEmail(inputElement){
	var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    if(pattern.test(inputElement.value)){         
		return true;   
    }else{   
    	return false; 
    }
}

function fixNewLine(str){
	return str.replace(/\r\n/g, '<br/>').replace(/\r/g, '<br/>').replace(/\n/g, '<br/>').replace(/<br\/>/g, '\r\n');
}

function getRealLength(inputElement) {
	return fixNewLine(inputElement.value).length; 
}

function validateSpecialChars(inputElement) {
	var value = inputElement.value;
	if(value.match(/[^A-Za-z0-9_ ]/gi)){
		return false;
	}
	return true;
}

function validateNumber(inputElement) {
	var value = inputElement.value;
	if ((value.match(/[^0-9]/gi)!=null)) {
		return false;
	}
	return true;
}

function validateHourHM(input){
	str = input.value;
	len = str.length;
	if(len != 5) {
    	alert("A hora deve ser informada no formato HH:MM");
    	input.value = '';
    	input.focus();
		return false;
	}
	hour = str.substring(0, 2);
	minute = str.substring(3, 5);
	if(isNaN(hour) || (hour < 0) || (hour > 23) || isNaN(minute) || (minute < 0) || (minute > 59)) {
		alert( "A hora informada não é válida.");
		input.value = '';
		input.focus();
		return false;
	}
	return true;
}

function mask(event, mask) {
	var value = Event.element(event).value.replace(/[^0-9]/g, '');
	var finalValue = "";
	var indexValue = 0;
	var indexMask = 0;
	if(event.keyCode==8){
		return;
	}
	
	for(indexMask = 0; indexMask < mask.length; indexMask++){
		if(mask.charAt(indexMask)=="0" || mask.charAt(indexMask)=="A"){
			finalValue += value.charAt(indexValue)?value.charAt(indexValue):"";indexValue++;
		} else{
			if(value.charAt(indexValue)){
				finalValue += mask.charAt(indexMask)?mask.charAt(indexMask):"";
			}
		}
	}
	Event.element(event).value = finalValue;
}

function maskCurrency(event, decimalDigits){
	var strValue = Event.element(event).value.replace(/[^0-9+e.]/g, '').replace(/^[0\-]+/g, '');
	var numValue = 0;
	if(strValue.length>0){
		numValue = parseInt(strValue);
	}
	strValue = numValue.toPaddedString(decimalDigits+1);
	strValue = strValue.substring(0, strValue.length-decimalDigits) + "," + strValue.substring(strValue.length-decimalDigits); 
	Event.element(event).value = strValue;
}
