// CONSTANTES
var http = getHTTPObject();
var http2 = getHTTPObject();
var NORMAL_STATE = 4;

preLoadImg = new Image();
preLoadImg.src = "/correios/imagem/loading.gif";

// VERIFICA SE O CEP É VÁLIDO
function verificarCEP() {
	get('calcularFreteINPUT').disabled=true;
	get('entregaTD').style.display = '';
	get('cepTABLE').style.display = 'none';
	get('entregaTD').innerHTML = "<img src='/correios/imagem/loading.gif' hspace='5' align='absmiddle'><font size=1>aguarde, consultando...</font>";
	
	http2.open('GET',obterURL("verificarCEP",null), true);
	http2.onreadystatechange = handleVerificarCEP;
	http2.send(null);
}

function handleVerificarCEP() {
	if (http2.readyState == NORMAL_STATE) {
		results = http2.responseText;
		results = results.split('|');
		
		if (results[1]=='0') {
			if (results!='') alert('Erro: CEP não encontrado');
			get('entregaTD').style.display = 'none';
			get('calcularFreteINPUT').disabled=false;
		} else {
			for(i=0;i<results.length;i=i+2){
				switch (results[i]) {
					case "uf":
						get('ufCEP').innerHTML = results[i+1];
						break
					case "cidade":
						cidade = results[i+1];
						get('cidadeCEP').innerHTML = cidade;
						break
					case "bairro":
						get('bairroCEP').innerHTML = results[i+1];
						break
					case "endereco":
						get('enderecoCEP').innerHTML = results[i+1];
						break
				}
			}
			formasEntrega();
		}
	}
}


// EXIBE AS FORMAS DE ENTREGA DISPONÍVEIS
function formasEntrega() {
	var PARAM_CORREIOS = '&peso='+get('pesototal').value;

	http.open('GET',obterURL("formasEntrega",PARAM_CORREIOS), true);
	http.onreadystatechange = handleFormasEntrega;
	http.send(null);
}

function handleFormasEntrega() {
	if (http.readyState == NORMAL_STATE) {
		get('calcularFreteINPUT').disabled=false;
		results = http.responseText.split('|');
		pesoTotalParam = pesototal;

		problemaFrete = true;
		
		htmlResult = "<select name='formaEntrega' id='formaEntrega' size='4' onChange='precoFrete(this.value)'><option value='0' style='color:red'>Escolha a Forma de Entrega</option>";
		for(i=0;i<results.length;i=i+3){
			dias = results[i+2];
			valor = results[i+1];
			if (dias == 1) texto = dias+" dia útil"
			else texto = dias+" dias úteis"
			
			if (dias!=0){
				problemaFrete = false;
				if (results[i] == '81019')
					htmlResult += "<option value='"+results[i]+"'>E-Sedex - "+texto+" - R$ "+valor+"</option>";
				if (results[i] == '40010')
					htmlResult += "<option value='"+results[i]+"'>Sedex - "+texto+" - R$ "+valor+"</option>";
				if (results[i] == '41068')
					htmlResult += "<option value='"+results[i]+"'>PAC (Frete Econômico) - "+texto+" - R$ "+valor+"</option>";
			}
		}
		if (cidade == 'Goiânia') htmlResult += "<option value='1'>Moto Boy - no mesmo dia - R$ (pós-pago)</option>";
		htmlResult += "</select>";

		if (problemaFrete)
		{
			var precoFrete = 1;
			verificarFrete = true;
			get('precoFreteTD').innerHTML = "pós-pago"
			get('entregaTD').innerHTML = '<font size=1>ERRO DE COMUNICAÇÃO COM OS CORREIOS.<br>O valor do frete será enviado após finalizar a compra.</font>';
		} else {	
			get('entregaTD').innerHTML = htmlResult;
		}
		
		get('cepTABLE').style.display = '';
		
		//get('formaEntrega').options[0].style.color ='red';
	}
}


// INFORMA PRECO DO FRETE
function precoFrete(paramFormaEntrega) {
	var PARAM_CORREIOS = '&peso='+get('pesototal').value+'&formaEntrega='+paramFormaEntrega;
	formaEntrega = paramFormaEntrega;
	
	http.open('GET',obterURL("precoFrete",PARAM_CORREIOS), true);
	http.onreadystatechange = handlePrecoFrete;
	http.send(null);
}

function handlePrecoFrete() {
	if (http.readyState == NORMAL_STATE) {
		results = http.responseText.split('|');
		var precoFrete = parseFloat(results[0].replace(",","."));
		
		get('precoFreteTD').innerHTML = "R$ "+float2moeda(precoFrete);
		get('precoTotalTD').innerHTML = "R$ "+float2moeda(parseFloat(subtotal+precoFrete));
		
		if (precoFrete != 0)
			verificarFrete = true;
		else
			if (formaEntrega == '1')
				verificarFrete = true;
			else
				verificarFrete = false;
	}
}

// VERIFICA SE FRETE FOI CALCULADO.
function verificarSelect(campo){
	var myselect=get(campo);
	if (myselect==null) {
		return true;
	} else {
		for (var i=0; i<myselect.options.length; i++){
			if (myselect.options[i].selected==true && myselect.options[i].value!='0'){
				return true;
				break
			}
		}
		return false;
	}
}


function finalizarCompra(){
	if (verificarFrete){
		MM_goToURL('parent','/verificar.asp');return document.MM_returnValue;
	} else {
		if (verificarSelect('formaEntrega')==false){
			alert('Escolha a forma de entrega antes de finalizar a compra.');
		} else {
			alert('Calcule o frete antes de finalizar a compra.');
		}
	}
}


//FUNÇÕES GERAIS
function get(elemento){
	return document.getElementById(elemento);
}

function obterURL(acao,complemento) {
	if (complemento==null) complemento = "";
	var URL = "/correios/consultarFrete.asp?acao="+acao+"&cep="+get('cep1').value+get('cep2').value+complemento
	return URL
}

function selectedValue(selBox) {
  return selBox.options[selBox.selectedIndex].value;
}

function float2moeda(num) {
   x = 0;
   if(num<0) {
      num = Math.abs(num);
      x = 1;
   }
   if(isNaN(num)) num = "0";
      cents = Math.floor((num*100+0.5)%100);
   num = Math.floor((num*100+0.5)/100).toString();
   if(cents < 10) cents = "0" + cents;
      for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
         num = num.substring(0,num.length-(4*i+3))+'.'
               +num.substring(num.length-(4*i+3));
   ret = num + ',' + cents;
   if (x == 1) ret = ' - ' + ret;return ret;
}
