var regexNaoVazia = new RegExp(/^[^\s].*$/);
var regexInteira = new RegExp(/^[0-9]+$/);
var regexTexto = new RegExp(/^[^\s].{2,}$/);
var regexDDD = /^0?[1-9]{2}$/;
var regexTelefone = /^\d{3,4}[\-|\s|\.]?[\d]{4}$/;
var regexEmail = /^(([^<>()[\]\\.,;:\s@""]+(\.[^<>()[\]\\.,;:\s@""]+)*)|("".+""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
var regexCNPJ = /^\d{2}.?\d{3}.?\d{3}\/?\d{4}-?\d{2}$/;
var regexCPF = /^\d{3}.?\d{3}.?\d{3}-?\d{2}$/;
var pesoCNPJEtapa1 = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
var pesoCNPJEtapa2 = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
var pesoCPFEtapa1 = new Array(10,9,8,7,6,5,4,3,2)
var pesoCPFEtapa2 = new Array(11,10,9,8,7,6,5,4,3,2)



var labels = new Array(
					   ["nome","razao_social","cpf","cnpj","nome_contato","endereco","cidade","ddd_tel","tel","ddd_cel","cel","email","observacao","referencia","variante","metragem"],
					   ["*Nome","*Razão Social","*CPF","*CNPJ","*Nome para contato","Endereço","*Cidade","*DDD","*Telefone","DDD","Celular","*E-mail","Observações","*Referência","*Variante","*Metragem"]
					   );

var valoresCombo = new Array(
							 ["AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO"],
							 ["Acre","Alagoas","Amazonas","Amapá","Bahia","Ceará","Distrito Federal","Espírito Santo","Goiás","Maranhão","Minas Gerais","Mato Grosso do Sul","Mato Grosso","Pará","Paraíba","Pernambuco","Piauí","Paraná","Rio de Janeiro","Rio Grande do Norte","Rondônia","Roraima","Rio Grande do Sul","Santa Catarina","Sergipe","São Paulo","Tocantins"]
							 );

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

var delimitador = "-;@;-";

function add_produto(){
	var referencia = document.getElementById("referencia");
	var variante = document.getElementById("variante");
	var metragem = document.getElementById("metragem");
	
	if(validar_add(referencia,variante,metragem)){
		adicionar_lista(referencia.value,variante.value,metragem.value)
		referencia.value = "";
		variante.value = "";
		metragem.value = "";
		metragem.focus();
		variante.focus();
		referencia.focus();
	}
}

function validar_add(referencia,variante,metragem){
	var ok = true;
	//referencia	
	if((!regexNaoVazia.test(referencia.value)) || (referencia.value == "*Referência")){
		referencia.className = "erro";
		ok = false;
	}
	else{
		referencia.className = "";
	}
	//variante
	if((!regexNaoVazia.test(variante.value)) || (variante.value == "*Variante")){
		variante.className = "erro";
		ok = false;
	}
	else{
		variante.className = "";
	}
	//metragen
	if(!regexInteira.test(metragem.value)){
		metragem.className = "erro";
		ok = false;
	}
	else{
		if(parseInt(metragem.value) >= 500){
			metragem.className = "";
		}
		else{
			metragem.className = "erro";
			ok = false;
			exibeRevendas();
		}
	}
	return ok;
}

function exibeRevendas(){
	exibeRevend();
	document.getElementById("metragem").focus();
}

function adicionar_lista(referencia,variante,metragem){
	var lista = document.getElementById("lista");
	var elemento = document.createElement("li");
	
	var frm = document.getElementById("frm_orcamento");
	var hidden = document.createElement("input");	
	hidden.type = "hidden";
	
	elemento.name = "estampa_" + Math.random().toString().replace("0.","");
	elemento.id = elemento.name;
	
	hidden.name = "hdn_" + elemento.id;
	hidden.id = hidden.name;
	
	hidden.value = referencia + delimitador + variante + delimitador + metragem;
	
	elemento.innerHTML = "<img src='imagens/icon_remove.png' onclick=\"remover_lista('" + elemento.name + "')\" title='Remover produto da lista'/>";
	elemento.innerHTML += "<span><strong>Referência:</strong> " + referencia + "</span> <span><strong>Variante:</strong> " + variante + "</span> <span><strong>Metragem:</strong> " + metragem + "</span>";
	
	lista.appendChild(elemento);
	frm.appendChild(hidden);
}

function remover_lista(element){
	var lista = document.getElementById("lista");
	var elemento = document.getElementById(element);
	lista.removeChild(elemento);
	
	var form = document.getElementById("frm_orcamento");
	var hidden = document.getElementById("hdn_" + element);
	form.removeChild(hidden);
}

function enviar(){
	if (validar_envio()){
		document.getElementById("frm_orcamento").submit();
	}
}

function validar_envio(){
	ok = true;	
	
	if(document.getElementById("pessoa_fisica").checked){
	  if((!regexTexto.test(document.getElementById("nome").value)) || (document.getElementById("nome").value == "*Nome")){
		  document.getElementById("nome").className = "erro";
		  ok = false;
	  }
	  if(!validaCPF(document.getElementById("cpf").value)){
		  document.getElementById("cpf").className = "erro";
		  ok = false;
	  }
	}else if(document.getElementById("pessoa_juridica").checked){
	  if((!regexTexto.test(document.getElementById("razao_social").value)) || (document.getElementById("razao_social").value == "*Razão Social")){
		document.getElementById("razao_social").className = "erro";
		ok = false;
	  }
	  if((!regexTexto.test(document.getElementById("nome_contato").value)) || (document.getElementById("nome_contato").value == "*Nome para contato")){
		document.getElementById("nome_contato").className = "erro";
		ok = false;
	  }
	  if(!validaCNPJ(document.getElementById("cnpj").value)){
		  document.getElementById("cnpj").className = "erro";
		  ok = false;
	  }
	}
	
	if((!regexTexto.test(document.getElementById("cidade").value)) || (document.getElementById("cidade").value == "*Cidade")){
		document.getElementById("cidade").className = "erro";
		ok = false;
	}
	if(document.getElementById("uf_value").value == ""){
		document.getElementById("uf").className = "erro";
		ok = false;
	}

	if((!regexInteira.test(document.getElementById("ddd_tel").value)) || (document.getElementById("ddd_tel").value == "*DDD")){
		document.getElementById("ddd_tel").className = "erro";
		ok = false;
	}
	
	if ((!regexTelefone.test(document.getElementById("tel").value)) || (document.getElementById("tel").value == "*Telefone")){
		document.getElementById("tel").className = "erro";
		ok = false;
	}
	
	if ((!regexEmail.test(document.getElementById("email").value)) || (document.getElementById("email").value == "*E-mail")){
		document.getElementById("email").className = "erro";
		ok = false;
	}
	
	if(document.getElementById("lista").getElementsByTagName("li").length == 0){
		alert("Selecione quais produtos deseja incluir no orçamento.");
		ok = false;
	}
	return ok;
}


function validaCPF(numCpf){
	if(regexCPF.test(numCpf)){
		var cpfTemp = numCpf.replace(/\D/g,"")
		var cpf = cpfTemp.substr(0,9)
		var cpfDigitoTemp = cpfTemp.substr(9,11)
		var soma = 0;
		var cpfDigito, digitoUm, digitoDois;

		soma = calculaDigito(cpf, pesoCPFEtapa1, 0, null)
		//Calculando o 1º dígito verificador
        var resto = soma % 11;
        if(resto < 2) digitoUm = 0
        else digitoUm = 11 - resto
  
		soma = calculaDigito(cpf, pesoCPFEtapa2, 0, digitoUm)
		//Calculando o 2º dígito verificador
        resto = soma % 11;
        if(resto < 2) digitoDois = 0
        else digitoDois = 11 - resto

      	//Verificando se os digitos são iguais aos digítados.
        cpfDigito = digitoUm + "" + digitoDois
        if (cpfDigitoTemp == cpfDigito){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

function validaCNPJ(numCnpj){
	if(regexCNPJ.test(numCnpj)){
		var cnpjTemp = (numCnpj).replace(/\D/g,"")
		var cnpj = cnpjTemp.substr(0,12)
		var cnpjDigitoTemp = cnpjTemp.substr(12,14)
		var soma = 0;
		var cnpjDigito, digitoUm, digitoDois;
		var resto;

		soma = calculaDigito(cnpj, pesoCNPJEtapa1, 0, null)
		//Calculando o 1º dígito verificador
        resto = soma % 11;
        if(resto < 2){
			digitoUm = 0
		}else{
			digitoUm = 11 - resto
		}
  

		soma = calculaDigito(cnpj, pesoCNPJEtapa2, 0, digitoUm)
		//Calculando o 2º dígito verificador
        resto = soma % 11;
        if(resto < 2){
			digitoDois = 0
		}else{
			digitoDois = 11 - resto
		}

      	//Verificando se os digitos são iguais aos digítados.
        cnpjDigito = digitoUm + "" + digitoDois
        if (cnpjDigitoTemp == cnpjDigito){
			return true;
		}else{
			return false;
		}
	}
	else{
		return false;
	}
}


function calculaDigito(cnpj, vetorPeso, pos, digitoUm)
{
	var tot;
	if (pos >= (vetorPeso.length-1)){
		if(digitoUm != null){
			return(digitoUm * vetorPeso[pos])
		}else{
			return(vetorPeso[pos] * parseInt(cnpj.charAt(pos)))	
		}
	}
	else{
		tot = (parseInt(cnpj.charAt(pos)) * vetorPeso[pos]) + calculaDigito(cnpj, vetorPeso, (pos+1), digitoUm);
	}
	return( tot );
}

function defineLabels(e){
  if (!e) var e = window.event;
  var alvo = (window.event) ? e.srcElement : e.target;
  for(var i = 0; i < labels[0].length; i++){
	if(alvo.name == labels[0][i]){
	  if(e.type == "focus"){
		alvo.className = "ativo";
		if(alvo.value == labels[1][i]){
		  alvo.value = "";
		}
	  }else if(e.type == "blur"){
		alvo.value = alvo.value.trim();
		if(alvo.value.length <= 0){
		  alvo.className = "";
		  alvo.value = labels[1][i];
		}
	  }
	  break;
	}
  }
}

function exibeCombobox(idAlvo){
  if(!ocultaCombobox()){
	var alvo = document.getElementById(idAlvo);
	alvo.className = alvo.className.replace("erro","");
  
	var cb = document.createElement("ul");
	cb.id = "combobox"
	
	for(var i = 0; i < valoresCombo[0].length; i++){
		var novoItem = document.createElement("li")
		novoItem.innerHTML = valoresCombo[0][i];
		novoItem.valItem = valoresCombo[0][i];
		novoItem.txtIten = valoresCombo[1][i];
		novoItem.onclick = function(){selecionaItemCombobox(alvo,this.valItem,this.txtIten);}
		cb.appendChild(novoItem);
	}
	cb.lastChild.className = "ultimo";
	document.body.appendChild(cb);
	window.onresize = function(){posicionaCombobox(alvo);}
	posicionaCombobox(alvo);
  }
}

function posicionaCombobox(alvo){
  try{
	var cb = document.getElementById("combobox");
  }catch(e){}
  if(cb){
	var pos = findPos(alvo);
	cb.style.width = (alvo.offsetWidth-2)+"px";
	cb.style.left = pos[0]+"px";
	cb.style.top = (pos[1]+alvo.offsetHeight+2)+"px";
  }
}

function selecionaItemCombobox(alvo,texto,valor){
	alvo.value = texto;
	alvo.className = "ativo";
	document.getElementById(alvo.id+"_value").value = valor;
	ocultaCombobox();
}

function ocultaCombobox(){
  try{
	var cb = document.getElementById("combobox");
  }catch(e){}
  if(cb){
	document.body.removeChild(cb);
	window.onresize = null;
	return true;
  }
  return false;
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
	do {
	  curleft += obj.offsetLeft;
	  curtop += obj.offsetTop;
	} while (obj = obj.offsetParent);
  }
  return [curleft,curtop];
}

function enter_add_produto(e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	
	if (keycode == 13){
		add_produto();
		return false;
	}
	else{
		return true;
	}
}


function exibeRevend(){
  ocultaRevend();
  document.getElementById("revendedores").className = "";

  var objOverlay = document.createElement("div")
  objOverlay.id="overlay"
  document.body.appendChild(objOverlay);

  posicionaRevend();

  window.onresize = function(){posicionaRevend();}
  window.onscroll = function(){posicionaRevend();}
}

function ocultaRevend(){
  try{
	var objOverlay = document.getElementById("overlay")
	var objRevend = document.getElementById("revendedores")
  }catch(e){}

  if(objOverlay)document.body.removeChild(objOverlay);
  if(objRevend)objRevend.className = "oculto";

  window.onresize = null
  window.onscroll = null
}


function posicionaRevend(){
	var obj = document.getElementById("revendedores");
	obj.className = "";
	var ScrollTop;
	if (window.pageYOffset){
	  ScrollTop = window.pageYOffset;
	}
	else{
	  ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	var tamJanela = getTamanhoJanela();
	obj.style.left = ((tamJanela[0] - obj.offsetWidth)/2)+"px";
	obj.style.top = (((tamJanela[1] - obj.offsetHeight)/2)+ScrollTop)+"px";
	document.getElementById("overlay").style.height = document.body.offsetHeight+"px";
}


function getTamanhoJanela(){
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [myWidth,myHeight];
}

function tipoPessoa(){
  var tdNome = document.getElementById("td_nome");
  var tdCPF = document.getElementById("td_cpf");
  
  var td_razao_social = document.getElementById("td_razao_social");
  var td_cnpj = document.getElementById("td_cnpj");
  var td_nome_contato = document.getElementById("td_nome_contato");
   
  if(document.getElementById("pessoa_juridica").checked){
	td_razao_social.className = "";
	td_cnpj.className = "";
	td_nome_contato.className = "";
	  
	tdNome.className = "oculto"
	tdCPF.className = "oculto"
  }else if(document.getElementById("pessoa_fisica").checked){
	tdNome.className = ""
	tdCPF.className = ""
	
	td_razao_social.className = "oculto";
	td_cnpj.className = "oculto";
	td_nome_contato.className = "oculto";
  }
}
