function validateForm($name_form, $array_validator){
	
	//global vars

	var $notNumber = /\D/;
	var $validForm = true;
	var $alert_content = '';
	var $cnt_alert=0;

	
	for ($cnt=0; $cnt<$array_validator.length; $cnt++){ 

		//set vars
		$component=$array_validator[$cnt].split(',');
		$name=$component[0];
		$min_length=$component[1];
		$type=$component[2];
		$element = document.getElementsByName($name);
		
		
		if($element[0]==undefined){
			$value = 'undefined';
			if($type!='defined'){
				alert('Campo "'+$name+'" não Encontrado');	
			} 
		} else {
			$value = $element[0].value;
		}
		
		
		//set defaul borders for inputs
		if($value!='undefined'){
			$element[0].className = '';
		}
		
		if($type=='password') {
			$element_conf = document.getElementsByName($name+'_conf');
			$element_conf[0].className = '';
		}
		
		if($type=='checkbox' || $type=='radio' || $type=='defined' || $type=='ckeditor') {
			$element_resp = document.getElementById($name+'_resp');
			$element_resp.className = 'input_none';
		}

		
		switch($type){
		
		case 'text':

			if( $value.length < $min_length){

				$element[0].className = '';
				$element[0].className = 'input_fail';
				$validForm=false;
				$cnt_alert++;

			} 			
		
		break;
		
		
		
		case 'numeric':

			if( $value.length < $min_length){

				$element[0].className = '';
				$element[0].className = 'input_fail';
				$validForm=false;	
				$cnt_alert++;

			}

			if($notNumber.test( $value )==true){

				$element[0].className = '';
				$element[0].className = 'input_fail';
				$validForm=false;
				$cnt_alert++;

			}
		
		break;
		
		case 'combo':

			if($value==$min_length){

				$element[0].className = '';
				$element[0].className = 'input_fail';
				$validForm=false;
				$cnt_alert++;

			}
		
		break;
		
		case 'cpf':
			
			if(validateCPF($value)==false){
				
				$element[0].className = '';
				$element[0].className = 'input_fail';
				$alert_content = 'Favor preencher corretamente seu CPF';
				$validForm=false;
				$cnt_alert++;

			}
			
		break;
		
		case 'cnpj':		

			if(validateCNPJ($value)==false){
				
				$element[0].className = '';
				$element[0].className = 'input_fail';
				$alert_content = 'Favor preencher corretamente seu CNPJ';
				$validForm=false;
				$cnt_alert++;

			}
		
		break;
		
		
		case 'date':

			$date=$value.split('/');

			if( ($date[0]<1 || $date[0]>31) || ($date[1]<1 || $date[1]>12) || ($date[2]<1900 || $date[2]>2050) ){

				$element[0].className = '';
				$element[0].className = 'input_fail';
				$validForm=false;	
				$cnt_alert++;

			}
		
		break;
		
		case 'email':			

			if(validateEmail($value)==false){
				$element[0].className = '';
				$element[0].className = 'input_fail';
				$alert_content = 'Favor preencher corretamente seu email';
				$validForm=false;
				$cnt_alert++;
			}
		
		break;
		
		
		case 'password':			

			if($element[0].value!=$element_conf[0].value ){
				
				$element[0].className = '';
				$element[0] = 'input_fail';
				$element_conf[0].className = '';
				$element_conf[0].className = 'input_fail';			
				$alert_content = 'As senhas não coincidem. Favor digitar novamente.';
				$validForm=false;
				$cnt_alert++;

			} else if($element[0].value.length < $min_length){
			
				$element[0].className = '';
				$element[0].className = 'input_fail';
				$element_conf[0].className = '';
				$element_conf[0].className = 'input_fail';			
				$alert_content = 'A Senha devem conter ao menos '+$min_length +' caracteres';
				$validForm=false;
				$cnt_alert++;

			}
		
		break;
		
		case 'checkbox':

			if($element[0].checked!=true){
				$element_resp.className = '';
				$element_resp.className = 'input_fail';
				$alert_content = '';
				$validForm=false;
				$cnt_alert++;
			}
		
		break;
		
		case 'radio':
			
			radio = document.getElementsByName($name);
			$validate_radio=false;
			for(i=0; i<radio.length; i++){
				if(radio[i].checked){
					$validate_radio=true;
				}
			}
			
			if($validate_radio==false){
				$element_resp.className = '';
				$element_resp.className = 'input_fail';
				$alert_content = '';
				$validForm=false;
				$cnt_alert++;
			}
			
		break;
		
		case 'defined':
			if($value=='undefined'){
				$element_resp.className = '';
				$element_resp.className = 'input_fail';
				$alert_content = '';
				$validForm=false;
				$cnt_alert++;
			}
		break;
	
		case 'ckeditor':
			
			if( $value.length < $min_length){

				$element_resp.className = '';
				$element_resp.className = 'input_fail';
				$validForm=false;
				$cnt_alert++;

			} 
			
		break;

		default:
			alert('Tipo de Validação Não Definido');
		}
	
	}



	if($validForm==true){
		document.getElementsByName($name_form)[0].submit();
		return true;
		
		
	} else {
		
		if($alert_content==''){ 
			alert('Favor preecher corretamente o formulário');
		} else {
			if($cnt_alert==1){
				alert($alert_content);
			} else {
				alert('Favor preecher corretamente o formulário');
			}		
		}
	
		return false;
		
	}
	
}



function validateCNPJ(CNPJ){

	var retorno = true;

	erro = new String;
	
	if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! "; 
	if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
		if (erro.length == 0) erro += "É necessário preencher corretamente o número do 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 += "A verificação de CNPJ suporta 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){
		retorno = false;
	}
    return retorno;				
}

function validateCPF(cpf){
	   
	//Limpa pontos e Traï¿½os da string
	cpf = cpf.replace(/\./g, ""); 
	cpf = cpf.replace(/\-/g, "");
	cpf = cpf.replace(/\_/g, ""); 
	
	if(cpf.length!=11){ var result = false; };
	   
	pri = eval(cpf.substring(0,3));
	seg = eval(cpf.substring(4,7));
	ter = eval(cpf.substring(8,11));
	qua = eval(cpf.substring(12,14));
	
	var i;
	var numero;
	
	numero = (pri+seg+ter+qua);
	
	c = cpf.substr(0,9);
	
	var dv = cpf.substr(9,2);
	
	var d1 = 0;

	for (i = 0; i < 9; i++){
		d1 += c.charAt(i)*(10-i);
	}

	if (d1 == 0){
		var result = false;
	}
	
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	
	if (dv.charAt(0) != d1){
		var result = 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){
		var result = false;
	}
	
	return result;
}



function validateEmail(email) {

    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))) { 
		return false;
	} else {
		return true;
	}
  
}

