/*
Função meucarrinho
Adiciona Produtos no Carrinho de Compras, pega a quantidade e o código do produto
Testado em IE/Firefox
*/
function meucarrinho(idItem,cod_produto){
	if(idItem != ""){
		var qtdeItem = document.getElementById('qtdeAjax_' + idItem).value;	
		var caracteristicas_produto = '';
	}
	else{
		qtdeItem = document.getElementById('qtde').value;
		
		codCaracteristica = '&codCaracteristica=' + document.getElementById('cbCaracteristicas').value;

	}

	if(qtdeItem > 0 && cod_produto.maxlength != 0){
		document.getElementById('frm_produtos').action='Default.asp?Sessao=Adiciona_Carrinho&qtdeItem=' + qtdeItem + '&codProduto=' + cod_produto + codCaracteristica;
		document.getElementById('frm_produtos').submit();
	}
	else{
		alert('É necessário inserir uma unidade para comprar!');
	}

}


/*
Função Confirma
Exibe mensagem na tela com o botão Ok e cancelar
Testado em IE/Firefox
*/
function confirma(alerta,url,modo){
	if(confirm(alerta)){
		if(modo=="upload"){
			parent.frm_upload.location=url;
		}
		else{
			document.location.href=url;
		}
	}
}

/*
Função focaCampo
Utilizada para alterar a cor de fundo qualquer form object quando o mesmo é focado.
Testado em IE/Firefox
*/
var corFundoCampo = '#E9DCDC';
var ns6 = document.getElementById&&!document.all;
var campoAnterior = '';
var eventobj;
var campos = /INPUT|TEXTAREA|SELECT|OPTION/

function checarCampo(which){
	if (which.style&&campos.test(which.tagName)){
		if (ns6&&eventobj.nodeType==3)
			eventobj=eventobj.parentNode.parentNode
		return true
	}
	else
		return false
}

function focaCampo(e){
	eventobj=ns6? e.target : event.srcElement
	if (campoAnterior!=''){
		if (checarCampo(campoAnterior))
			campoAnterior.style.backgroundColor='';
			campoAnterior=eventobj;
		if (checarCampo(eventobj))
		eventobj.style.backgroundColor=corFundoCampo;
	}
	else{
		if (checarCampo(eventobj))
			eventobj.style.backgroundColor=corFundoCampo;
			campoAnterior=eventobj;
	}
}


/*
Função mascaraCampos
Formata strings em tempo de execução com máscara Ex.: 13920-000 (#####-###)
Testado em IE/Firefox
*/
function mascaraCampos(e,obj,mascara,campo){
	if(window.event){
		codCampo = e.keyCode;
	}
	else if(e.which){
		codCampo = e.which;
	}

	if(codCampo == 8){
		obj.value='';
	}
	else if(codCampo > 47 && codCampo < 58 || codCampo ==8){
		var saida = mascara.substring(0,1);
		var texto = mascara.substring(obj.value.length);

		if(texto.substring(0,1) != saida){
			obj.value += texto.substring(0,1);
		}
		return true;
	}
	else{
		alert('O Campo ' + campo + ' só pode ser preenchido com números!');
		if (codCampo != 8){ 
			return false; 
		}
		else{
			return true;
		}
	}
}

/*
Função camposNumericos
Não permite a digitação de letras em campos numéricos de um form.
Testado em IE/Firefox
*/
function camposNumericos(obj,campo){
	if(window.event){
		key = event.keyCode;


	if(key < 48 || key > 57){
			alert('O campo só pode ser preenchido com números!');
			event.returnValue = false;
		}
	}
	else{
		key = obj.which;

		if(key < 8 || key  >57){
			alert('O campo só pode ser preenchido com números!');
			obj.whichValue=0;
			obj.preventDefault();
		}
	}
}

/*
Função checarEmail
Verifica se o e-mail é válido funciona como string e como objeto.
Testado em IE/Firefox
*/
function checarEmail(email){
    var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
   
	if(typeof(email) == "string"){
        if(er.test(email)){ 
			return true; 
		}
    }else if(typeof(email) == "object"){
        if(er.test(email.value)){ 
			return true; 
        }
    }else{
		return false;
    }
}

/*
Função abrir_popup
Abre poups na tela, com opções parametrizadas como centralizar na tela.
Testado IE/Firefox
*/
function abrir_popup(url,nome,width,height,top,left,scrollbars,centralizado){
	if(centralizado=='S'){
		var tela_width = window.screen.width;
		var tela_height = window.screen.height - 160; 
		var tela_top = (tela_height - height) / 2;
		var tela_left = (tela_width - width) / 2;
	}
	else{
		var tela_top = top;
		var tela_left = left;
	}

	window.open(url, nome, 'width=' + width +',height='+ height +',left='+ tela_left +',top='+ tela_top +',scrollbars=' + scrollbars);
}

/*
Função imprimir
Imprimi o arquivo do qual ele é instanciado.
Testado IE/Firefox
*/
function imprimir(condicao){
	alert('Prepare a impressora com papel e clique em OK!');
	window.print();
}

/*
Função troca_imagem
Utilizada para alterar a imagem em tempo de execução na popup de descrição do produto.
Testado IE/Firefox
*/
var corFundoJanelaAmpliada = '#89bdff';
var trocar_automaticamente = false;
function troca_imagem(valor,automatico){
	if (automatico){
		for (j=0; j < imgContador; j++){
			if (!imagens[j].complete) return;
		}
	}
	
	if (!automatico && trocar_automaticamente) trocar_automaticamente= false;
	imgNova+=valor;
	
	if (imgNova == imgContador) imgNova = 0;
	else if (imgNova < 0) imgNova = imgContador-1;
	document.imgProduto.src = imagens[imgNova].src;
	document.imgProduto.alt = imagens[imgNova].alt;
}

function troca_automatica(){
	if (trocar_automaticamente){
		troca_imagem(1, true);
		setTimeout("troca_automatica();", 2000);
	}
}

function Janela_Amplia_Produto(pUrl, pNome, pWidth, pHeight, pScroll, pTexto, pConf_Especiais){
	pLeft=(screen.width)?(screen.width-pWidth)/2:0;
	pTop=(screen.height)?(screen.height-pHeight)/2:0;
	pConfiguracoes = 'height='+ pHeight +',width='+ pWidth +',top='+ pTop +',left=' + pLeft +',scrollbars='+ pScroll + pConf_Especiais
	
	Monta_Janela = window.open(pUrl,pNome,pConfiguracoes);
	if(Monta_Janela.window.focus){Monta_Janela.window.focus();}
	if(pTexto != ""){
			Monta_Janela.document.write(pTexto);
			Monta_Janela.document.close();
	}
	return Monta_Janela
}

var zoomJanela;
function Imagem_Zoom(){
	if (zoomJanela){
		zoomJanela.close();
	}
	zoomJanela = Janela_Amplia_Produto('', '', 450, 338, 'yes','<html><head><title>' + titulo_janela_ampliada + '</title></head><body bgcolor="' + corFundoJanelaAmpliada + '" scrollbars="no" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><div align="center"><img src="' + url_imagem[imgNova] + '" width="450" height="338"></div></body></html>');
}

/*
Função checarCPF
Verifica se o CPF é válido.
Testado em IE/Firefox
*/
function checarCPF(num_cpf){
	var cpf = num_cpf.replace(".","").replace(".","").replace("-","");
 
	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;
}

/*
Função checarCNPJ
Verifica se o CNPJ é válido.
Testado em IE/Firefox
*/
function checarCNPJ(num_cnpj){
	CNPJ = num_cnpj;
	erro = new String;
			
	if (CNPJ.length < 18) return false;
			
	if ((CNPJ.charAt(2) != '.') || (CNPJ.charAt(6) != '.') || (CNPJ.charAt(10) != '/') || (CNPJ.charAt(15) != '-')){
		if (erro.length == 0) return false;
	}

	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)) return false; 
					
	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])){
		return false
	}

	return true;
}

/*
Função adicionarFavoritos
Adiciona site a lista de favoritos.
Testado em IE/Firefox
*/
function adicionarFavoritos(titulo,url) {
    if(window.sidebar){
        window.sidebar.addPanel(titulo, url,"");
    }
	else if(document.all){
        window.external.AddFavorite(url, titulo);
    } 
	else if(window.opera && window.print){
	  return true;
	}
}

/*
Função favoritosDelIcioUs
Adiciona o link em favoritos do del.icio.us
Testada em IE / Firefox
*/
function favoritosDelIcioUs(url,descricao,conteudo){
	window.open('http://del.icio.us/post?v=4&noui&jump=close&url=' + encodeURIComponent(url) + '&title=' + encodeURIComponent(descricao) + '&notes=' + encodeURIComponent(conteudo), 'delicious','toolbar=no,width=700,height=400');
}

/* 
Função formatCurrenncy
Formata valores em tempo de execução.
Testado em IE / Firefox
*/
function formatCurrency(num){
	num = num.toString().replace(/\R$|\,/g,'');
	if(isNaN(num))
		num = "0";
	 sign = (num == (num = Math.abs(num)));
	 num = Math.floor(num*100+0.50000000001);
	 cents = num%100;
	 num = Math.floor(num/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));
		 return (((sign)?'':'-') + 'R$ ' + num + ',' + cents);
}

/* 
Função formatNumber
Formata valores em tempo de execução.
Testado em IE / Firefox
*/
function formatNumber(num){
	num = num.toString().replace(/\R$|\,/g,'');
	if(isNaN(num))
		num = "0";
	 sign = (num == (num = Math.abs(num)));
	 num = Math.floor(num*100+0.50000000001);
	 cents = num%100;
	 num = Math.floor(num/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));
		 return (((sign)?'':'-') + num + '.' + cents);
}

/* 
Função checarData
Verifica se a data é válida.
Testado em IE / Firefox
*/
function checarData(data){
	if(data.length != 10){
		return true;
	}
	else{
		if(data instanceof Date)return true;

		var adt = data.replace(/[\s\:\/\.\-]/g,"-").split("-");
		if(adt.length>3){
			var odt = new Date(adt[2],--adt[1],adt[0],adt[3],adt[4]);
			var hr = (odt.getHours()==adt[3] && odt.getMinutes()==adt[4]);
		}else 
			var odt = new Date(adt[2],--adt[1],adt[0]);		
		var dt = (odt.getFullYear()==adt[2] && odt.getMonth()==adt[1] && odt.getDate()==adt[0]);
		return (adt.length>3) ? dt && hr : dt;
	}
}

/*  
Função cepEndereco
Envia o CEP nos campos.
Testado em IE / Firefox
*/
function cepEndereco(divId,cep,idUid){
	if(cep.length == 9){
		if(typeof(idUid) == "undefined"){
			idUid = null;
		}
		else{
			idUid = '&Id=' + idUid;
		}
		Ajax(divId,'ajax/Campos_CEP.asp?CEP='+ cep.replace("-","") + idUid,'Aguarde Verificando','#000000;',null);
	}
}

/*
Função escreverDinamicamente
Escreve na layer solicitada a mensagem informada na variável
*/
function escreverDinamicamente(divId,strMsg){
	if(divId.length != 0){
		var d = document;
		d.getElementById(divId).innerHTML = strMsg;
	}
}

/*
Função Enquete
Abre Popup para votação na enquete.
Testado em IE / Firefox
*/
function enquete(){
	var d = document;
	var radio_length = d.frm_enquete.resposta.length;
	var radio_checked = false;

	for (i=0;i<radio_length;i++) {
      if (d.forms['frm_enquete'].resposta[i].checked) {
	       radio_checked =true;
	  }
    }
	
	if(radio_checked ==true){
		d.forms['frm_enquete'].target='janela_enquete';
		d.forms['frm_enquete'].submit(window.open('','janela_enquete','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=420,height=229'));
   }
   else{
     alert("Selecione uma opção para Votar!");
   }
}

/*
Função formataValor
//uso: <input type="Text" name="fat_vr_bruto" maxlength="17" onKeyDown="FormataValor(this,17,event)">
Testado em IE/Firefox
*/
function formataValor(campo,tammax,teclapres){
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;

	if (tam < tammax && tecla != 8){ 
		tam = vr.length + 1 ; 
	}

	if (tecla == 8){	
		tam = tam - 1 ; 
	}
		
	if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105){
		if(tam <= 2){ 
	 		campo.value = vr ;
		}

	 	if ((tam > 2) && (tam <= 5)){
	 		campo.value = vr.substr(0, tam - 2) + ',' + vr.substr(tam - 2, tam) ; 
		}

	 	if ((tam >= 6) && (tam <= 8)){
	 		campo.value = vr.substr(0, tam - 5) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam) ;
		}

	 	if ((tam >= 9) && (tam <= 11)){
	 		campo.value = vr.substr(0, tam - 8) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam) ; 
		}

	 	if ((tam >= 12) && (tam <= 14)){
	 		campo.value = vr.substr(0, tam - 11) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam) ; 
		}

	 	if ((tam >= 15) && (tam <= 17)){
	 		campo.value = vr.substr(0, tam - 14) + '.' + vr.substr(tam - 14, 3) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam) ;
		}
	}			
}

/*
Função autoTab()
Pula campos automaticamente.
Testado em IE / Firefox
*/
var tamanho_campo=0;
function autoTab(objeto,evento,tamanho,proximo_campo){
	if(evento=="ant"){
		tamanho_campo = objeto.value.length;
	}
	else if(evento=="prox"){
		if(objeto.value.length != tamanho_campo){
			tamanho_campo = objeto.value.length
			if(tamanho_campo == tamanho)
				proximo_campo.focus();
		}
	}
}

/*
Função isValidCreditCardNumber
Testa validação de cartoes de crédito
Testado em IE / Firefox
*/
function isValidCreditCardNumber(cardNumber, cardType){
    var isValid = false;
	var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);
	if (isValid){
		var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
	    var lengthIsValid = false;
		var prefixIsValid = false;
        var prefixRegExp;
		
		switch(cardType){
			case "mastercard":
				lengthIsValid = (cardNumberLength == 16);
	            prefixRegExp = /^5[1-5]/;
			    break;
			case "visa":
				lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
	            prefixRegExp = /^4/;
			    break;
			case "amex":
				lengthIsValid = (cardNumberLength == 15);
		        prefixRegExp = /^3(4|7)/;
			    break;
			default:
	           prefixRegExp = /^$/;
		       alert("Cartão de Crédio não reconhecido");
		}

		prefixIsValid = prefixRegExp.test(cardNumbersOnly);
		isValid = prefixIsValid && lengthIsValid;
	}
	if (isValid){
		var numberProduct;
		var numberProductDigitIndex;
		var checkSumTotal = 0;
	    
		for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--){
            checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
            digitCounter--;
            numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
				for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++){
					checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
				}
        }
        isValid = (checkSumTotal % 10 == 0);
    }

		return isValid;
}

/*
Função parcelaCartaoCredito
Compara o valor e gera as parcelas para o cartão de crédito!
Testado IE/Firefox
*/
function parcelaCartaoCredito(vlCompra,vlMinimo,intParcelas){
	var vlTotalCompra = parseFloat(vlCompra);
	var vlMinimoCartao = parseFloat(vlMinimo);
	var intNumParcelas = parseInt(intParcelas);
	
	if(vlTotalCompra >= vlMinimoCartao){
		return vlTotalCompra / intNumParcelas;
	}
	else{
		return(false);
	}
}
