/**
 * Método para abertura do chat.
 */
function callChat() {
	//window.open("/entryPoint.php?package=crm&plugin=chat", "Atendimento", "height = 300, width = 400");
	window.open("/entryPoint.php?package=crm&plugin=chat", "AtendimentoOnline", "width=350,height=500" );	
}

/**
 * Método principal para mascarar campos.
 */
function mask(o,f){
    v_obj = o
    v_fun = f
    setTimeout ("execMask()",1)
}

/**
 * Efetua a execução da mascara.
 */
function execMask(){
    v_obj.value=v_fun(v_obj.value)
}

/**
 * Formato de telefone com ddd
 */
function telphone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

/**
 * Método para formatação de cep
 */
function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

/**
 * Formato de telefone com ddd
 */
function date(v){
	v = v.replace(/\D/g,"")               //Remove tudo o que não é dígito
   	v = v.replace(/(\d{2})(\d)/,"$1/$2"); //Coloca uma barra entre o segundo e o terceiro dígitos
   	v = v.replace(/(\d{2})(\d)/,"$1/$2"); //Coloca uma barra entre o quarto e quinto digito.
    return v
}

/**
 * Método para formatação de cpf com pontos
 */
function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    
    return v;
}

function checkCPF(CPF) {
	
	// Retira os pontos.
	var pontos = CPF.value.split('.').join('');
	// Retira o traço.
	CPF = pontos.split('-').join('');
	
	if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
		CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
		CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
		CPF == "88888888888" || CPF == "99999999999")return false;
	
	soma = 0;
		
	for (i=0; i < 9; i ++)
		soma += parseInt(CPF.charAt(i)) * (10 - i);
	resto = 11 - (soma % 11);
	if (resto == 10 || resto == 11)
		resto = 0;
	if (resto != parseInt(CPF.charAt(9)))
		return false;
	soma = 0;
	for (i = 0; i < 10; i ++)
		soma += parseInt(CPF.charAt(i)) * (11 - i);
	resto = 11 - (soma % 11);
	if (resto == 10 || resto == 11)
		resto = 0;
	if (resto != parseInt(CPF.charAt(10))) 
		return false;
	return true;
}

/**
 * Valida formulários dinamicamente.
 * Para incluir um campo na verificação basta adicionar um title com o nome do campo.
 * Ex:
 * <input type="text" id="nome" name="nome" title="Nome">
 * Por ter um title, esse input sera verificado.
 * 
 */
function checkForm(local){
	
	// Campos a serem verificados
	var arr = new Array('input','option','select','textarea');
	
	var titleValue = null;
	
	//var formName = new Array();
	
	for(var a=0; a < arr.length; a++){
		
		// Formulario a ser verificado.
		var localValidar = document.getElementById(local);
		
		// Campo a ser verificado.
		var formulario = localValidar.getElementsByTagName(arr[a]);
				
		// Loop percorrendo os campos.
		for (var i=0; i < formulario.length; i++){
			
			// Verifica se existe title.
			var title = formulario[i].attributes.getNamedItem("title");
			
			// Verifica se tem valor.
			if(title !== null){
				titleValue = title.value;
			}
			
			if(titleValue == 'CPF') {
				if(!checkCPF(formulario[i])) {
					formulario[i].focus();
					alert('Por favor digite um cpf válido.');
					return false;	
				}
			}
			
			if(titleValue == 'CNPJ') {
				if(!validateCNPJ(formulario[i].value)) {
					formulario[i].focus();
					return false;
				}
			}
			
			// Retorna a cor original do campo.
			//formulario[i].style.background = "#666666";
			
			// Se existir titulo...
			if(title !== null && titleValue !== null && titleValue.length > 0){
				
				/*
				if(formulario[i].type == 'radio') {
					if(formulario[i].checked == true) {
						selected = true;	
					}
				}
				
				if(selected == false) {
					alert('Por favor selecione uma das opções do campo: '+ titleValue);
					formulario[i].focus();
					return false;
				}
				* */
				
				// Se não foi digitado valor...
				if (formulario[i].value == ""){
					
					alert ("Por favor preencha o campo: " + titleValue );
					
					//formulario[i].style.background = "#FF0000";
					formulario[i].focus();
					
					return false;
				}
			}
		}
	}
	
	return true;
} 

/**
 * Método para mascara de cpnj
 */
function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

/**
 * Efetua validação de CNPJ
 */
 function validateCNPJ(CNPJ) {
	erro = new String;
	if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! \n\n";
	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! \n\n";
	}
	
	//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! \n\n";
	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);
		return false;
	}
	return true;
}