/*
 * Java Script Financiamento Crediário Internet
 * 06/06/05
 */

function getProfType(selT, selC, cap){
	var i;

	i=parseInt(cap, 10);
	cap=i;
	i=0;

	if(cap>0){
		if     (cap<20) i=1;
		else if(cap<35) i=2;
		else if(cap<40) i=0;
		else if(cap<50) i=3;
		else if(cap<60) i=4;
		else if(cap<70) i=5;
		else if(cap<90) i=6;
		else if(cap<99) i=7;
	}
	selT.selectedIndex=i;
	buildProfessionCAPSelectOptions(selT, selC);
	return getProfCap(selT, selC, cap);
}

function getProfCap(selT, selC, cap){
	var value = selT.options[selT.selectedIndex].value;
	var i;

	i=parseInt(value, 10);
	value=i;
	i=0;

	switch(value) {
		case 1:
					if     (cap < 6) i=cap;
					else if(cap>=10 && cap<=15) i=cap-4;
					else if(cap==19) i=12;
					break;
		case 2:
					if     (cap>=20 && cap<=23) i=cap-19;
					else if(cap>=29 && cap<=34) i=cap-24;
					break;
		case 3:
					if     (cap>=40 && cap<=42) i=cap-39;
					else if(cap==49) i=4;
					break;
		case 4:
					switch(cap){
						case 50: i=1; break;
						case 55: i=2; break;
						case 59: i=3; break;
					}
					break;
		case 5:
					switch(cap){
						case 60: i=1; break;
						case 65: i=2; break;
						case 69: i=3; break;
					}
					break;
		case 6:
					if     (cap>=70 && cap<=71) i=cap-69;
					else if(cap>=75 && cap<=77) i=cap-72;
					else if(cap>=80 && cap<=81) i=cap-74;
					else if(cap==85) i=8;
					else if(cap==89) i=9;
					break;
		case 7:
					if     (cap>=90 && cap<=93) i=cap-89;
					else if(cap>=95 && cap<=98) i=cap-90;
					break;
	}
	selC.selectedIndex=i;
	return true;
}

function validOptionContract(obj){
	/* Posicao 0: Aceita Contrato */
	if (!obj.accept[0].checked == true){
		alert("Para continuar é preciso aceitar os termos do contrato");
		return false;
	}
	return true;
}

function fillAddress(txtZipCodeField, zipField, addressField, distrField, cityField, stateField) { 
	var windowName = window.name; 
	var formName   = "frmMain"; 	
	var cep = txtZipCodeField.value;
	parent.fraAux.location.href = ("../../Util/servlet/ToolsCep?resultType=3&idCep=" + cep + "&windowName=" + windowName + "&addressField=" + addressField + "&distrField=" + distrField + "&cityField=" + cityField + "&stateField=" + stateField + "&formName=" + formName) ;
}   

function errorField(msg, obj){
	alert(msg);
	obj.focus();
	return false;
}

function errorFieldMask(msg, obj){
	return errorField("Campo \'" + msg + "\' Invalido", obj);
}

function parseValue(field, re) { 
    if (!field.value.match(re)) { 
	return false;
    }
    return true; 
}	    

function validateAndSubmit(obj, isAnalise) {

	
	var field = obj.clientTitle;
        if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
          	return errorFieldMask("Tratamento", field);
        }

	field = obj.clientName;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || field.value.indexOf(' ') == -1) {
		return errorFieldMask("Nome do Cliente", field);
	} else {
		field.value = abbreviateName(field.value, 40);
	}

	field = obj.clientCPF;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("CPF", field);
	} else if (!validateCPF(field.value)) {
		return errorFieldMask("CPF", field);
	}

	field = obj.clientRg;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Documento de identificacao", field);
	}
	else if (!stringIsLetterOrDigit(field.value)) {
		return errorFieldMask("Documento de identificacao", field);
	}

	field = obj.clientDocIssuer;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Orgao Emissor", field)
	}

	field = obj.clientBornState;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Estado de Nascimento", field)
	}

	field = obj.clientBornDate;
	var auxDate = field.value.substring(0, 2) + "/" + field.value.substring(2, 4) + "/" +field.value.substring(4, field.value.length);
	if(!isProperDate(auxDate)){
		return errorFieldMask("Data de Nascimento", field);
	}

		
	field = obj.clientCivilState;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Estado Civil", field)
	}

	field = obj.clientEmail;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || !stringIsValidToEmail(field.value)) {
		return errorFieldMask("E-mail", field);
	}


	field = obj.clientCEP;
	field.value = trim(field.value);
	if (field.value.length != 8) {
		return errorFieldMask("CEP", field);
	}


	field = obj.clientAddress;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Endereco", field);
	}

	field = obj.clientAddrNumber;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Numero", field);
	}

	field = obj.clientAddrNeig;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Bairro", field);
	}

	field = obj.clientAddrCity;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Cidade", field);
	}

	field = obj.clientAddrUf;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Estado residencial", field)
	}

	field = obj.clientAddrType;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Tipo de Residencia", field);
	}
	
	field = obj.clientPhoneDDD;
	field.value = trim(field.value);
	if (field.value.length != 2) {
		return errorFieldMask("DDD", field);
	}

	field = obj.clientPhone;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || (field.value.length < 7) || (field.value.charAt(0) == '0')|| (field.value.charAt(0) == '1') || (field.value.charAt(0) == '7') || (field.value.charAt(0) == '8') ||  (field.value.charAt(0) == '9')) {
    		return errorFieldMask("Telefone", field);
	}

	var auxPhoneDDD_ = trim(obj.clientMobPhoneDDD.value);
	var auxPhone_ = trim( obj.clientMobPhone.value);
	var field = obj.clientDontHaveMob;
	
	if (!isAnalise){
		if ( 	
				(!obj.clientDontHaveMob.checked  &&   auxPhoneDDD_ == "" && auxPhone_ == "") ||
				( obj.clientDontHaveMob.checked  && ( auxPhoneDDD_ != "" || auxPhone_ != "") ) || 
				(!obj.clientDontHaveMob.checked  && ( auxPhoneDDD_ != "" || auxPhone_ != "") ) ) {
			field = obj.clientMobPhoneDDD;
			field.value = trim(field.value);
			if (field.value.length != 2) {
				return errorFieldMask("DDD", field);
			}

			field = obj.clientMobPhone;
			field.value = trim(field.value);

			if ( isEmptyString(field.value) || (field.value.length != 8) || (field.value.charAt(0) < '7') ) {
    			return errorFieldMask("Celular", field);
			}
		}
	} else {
		if (auxPhoneDDD_ != "" || auxPhone_ != ""){
			field = obj.clientMobPhoneDDD;
			field.value = trim(field.value);
			if (field.value.length != 2) {
				return errorFieldMask("DDD", field);
			}

			field = obj.clientMobPhone;
			field.value = trim(field.value);

			if ( isEmptyString(field.value) || (field.value.length != 8) || (field.value.charAt(0) < '7') ) {
    			return errorFieldMask("Celular", field);
			}
		}
	}

	field = obj.clientProfAtv;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Atividade Profissional", field);
	}

	field = obj.clientProfType;
	if ((field.selectedIndex <= 0) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Tipo de Profissao", field)
	}

	field = obj.clientCAP;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("CAP", field)
	}
	/*
	field = obj.accountSalaryRange;
	if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
		return errorFieldMask("Faixa Salarial", field)
	}
	*/

	field = obj.accountSalaryRange
	if( !parseValue(field, /^\d{1,8}\,\d{2}$/) ){
		return errorFieldMask("Renda", field);
	}

	field = obj.clientCompanyName;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("Empresa em que trabalha", field);
	}



	field = obj.clientProfPhoneDDD;
	field.value = trim(field.value);
	if (field.value.length != 2) {
		return errorFieldMask("DDD", field);
	}

	field = obj.clientProfPhone;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || (field.value.length < 7) || (field.value.charAt(0) == '0')|| (field.value.charAt(0) == '1') || (field.value.charAt(0) == '7') || (field.value.charAt(0) == '8') ||  (field.value.charAt(0) == '9')) {
    		return errorFieldMask("Telefone", field);
	}
/*
	field = obj.accountOpenDate;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || field.value.length < 6 ) {
		return errorFieldMask("Data de abertura", field);
	}
*/


	field = obj.accountOpenDate;
	auxDate = "01/" + field.value.substring(0, 2) + "/" +field.value.substring(2, field.value.length);
	if(!isProperDate(auxDate)){
		return errorFieldMask("Data de abertura", field);
	}

	field = obj.accountLimit;
	if (!isEmptyString(field.value)) {
		if( !parseValue(field, /^\d{1,8}\,\d{2}$/) ){
			return errorFieldMask("Limite", field);
		}
	}


	field = obj.accountComp;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || field.value.length != 3 ) {
		return errorFieldMask("COMP", field);
	}

	field = obj.accountBank;
	if (!isAnalise){
		if ((field.selectedIndex == -1) || isEmptyString(field.options[field.selectedIndex].value)) {
			return errorFieldMask("Banco", field)
		}
	}
	else {
		if (field.value == ""){
			return errorFieldMask("Banco", field);
		}
	}



	field = obj.accountAgency;
	field.value = trim(field.value);
	if (isEmptyString(field.value) || field.value.length != 4 ) {
		return errorFieldMask("Agencia", field);
	}

	field = obj.accountC1;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("C1", field);
	}
	
	field = obj.account;
	field.value = trim(field.value);
	if(isEmptyString(field.value)) {
		return errorFieldMask("Conta Corrente", field);
	}

	field = obj.accountC2;
	field.value = trim(field.value);
	if (isEmptyString(field.value)) {
		return errorFieldMask("C2", field);
	}

	if (!isAnalise){
		obj.accountBankAux.value = obj.accountBank.options[obj.accountBank.selectedIndex].value;
	} else {
		obj.accountBankAux.value = obj.accountBank.value;
	}

	if (!validateCompBankAgencyC1Fields(obj.accountComp, obj.accountBankAux, obj.accountAgency, obj.accountC1)) {
		return errorFieldMask("Erro ao validar dígito verificador C1", obj.accountC1);
	}
	if (!validateAccountC2Fields(obj.accountComp ,obj.accountBankAux, obj.accountAgency, obj.accountC1, obj.account, obj.accountC2)) {
		return errorFieldMask("Erro ao validar dígito verificador C2", field);
	}

	return true;
}

function setEnabled(el, enabled, color) {
    
    if (document.getElementById) { // test DOM compatibility
	el.disabled = !enabled;
	el.style.backgroundColor = color;
    }
}

function buildSalaryRangeSelect(name, atts, option) {
/*
 *
 * Depende da funcao buildGenericSelect que esta em HTMLSelect.js
 * Combinado com a SADE : 
 * -> O valor enviado, sera o ultimo valor da faixa.
 * -> Para o valor maior que valor x enviar valor x + 1000.
 * Este valor devera ser enviado no campo salario da instancia.
 *
*/
	var list = new Array(
		  new Option("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,00 -  &nbsp;&nbsp;260,00"                    , "000000000026000")
		, new Option("&nbsp;&nbsp;260,01 - 1000,00"                                                , "000000000100000")
		, new Option("1000,01 - 1300,00"                                                           , "000000000130000")
		, new Option("1300,01 - 2000,00"                                                           , "000000000200000")
		, new Option("2000,01 - 4000,00"                                                           , "000000000400000")
		, new Option("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; > 4000,00", "000000000500000")
		);
	buildGenericSelect(name, list, atts, option);
}

function disableProductDataFields(obj){
	//obj.selCPaymentMode.disable=true;
	//obj.purchasePaymentType.disabled=true;
	obj.purchaseValue.disabled=true;
	obj.entryValue.disabled=true;
	obj.btnCalcFin.disabled=true;
	obj.finValue.disabled=true;
	obj.selMode.disabled=true;
	obj.qtdInstallments.disabled=true;
	obj.selInsurance.disabled=true;
	obj.installmentValue.disabled=true;
	obj.btnCalcPrest.disabled=true;
}

function closeContractTermsPage(obj){
	if (confirm('Essa operação perderá todos os dados anteriores\nDeseja continuar?')){
		obj.close();
	}
}

