// JavaScript Document

/* == GENEREC FUNCTIONS =============== */
function showHide(field, modeIni){
	var target = document.getElementById(field);
	if (target){
		if (!target.style.display) target.style.display = modeIni;
		else if (target.style.display == "none") target.style.display = "block";
		else									 target.style.display = "none";
	}
}
function getMousePosition(e){
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY){
		posx = e.pageX;
		posy = e.pageY;
	}else if (e.clientX || e.clientY){
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	return [posx, posy];
}
function getElementsByClassName(_className, _target, _tag){
	if(!_target) _target = document;
	if(!_tag) _tag = "*";
	var elements = _target.getElementsByTagName(_tag);
	var result = [];
	for (var i=0; i<elements.length; i++){
		if (elements[i].className == _className) result.push(elements[i]);
	}
	return result;
}

/* == RESIZE WINDOW =============== */
function _onresize(){
	var maxWidth = 940;
	var pageContainer = document.getElementById('pageContainer');
	if(document.body.offsetWidth<=(maxWidth+20)) pageContainer.style.width = maxWidth+'px';
	else pageContainer.style.width = 'auto';
}
if(document.all){
	window.onresize = _onresize;
	window.onload = _onresize;
}

/* == MENU DROP =============== */
function resetMenu(){
	var menuList = document.getElementById('menuList');
	if(!menuList) return;
	
	var allSubMenu = getElementsByClassName('subMenuList', menuList, 'div');
	for (var i=0; i<allSubMenu.length; i++){
		allSubMenu[i].style.display='none';
	}
	
	var allLinks = menuList.getElementsByTagName('a');
	for (var i=0; i<allLinks.length; i++){
		allLinks[i].className='none';
	}
}

function hideMenu(e){
	var barMenuList 	= document.getElementById('barMenuList');
	var menuList 		= document.getElementById('menuList');
	var categoriaGroup 	= barMenuList.categoriaGroup;
	if(!barMenuList || !menuList) return;

	if(categoriaGroup){
		var subMenu = categoriaGroup.getElementsByTagName('ul');
		subMenu = subMenu[0];
	}
	
	var mousePosition = getMousePosition(e);
		var tempX = mousePosition[0];
		var tempY = mousePosition[1];
		var tempX_ref = tempX - barMenuList.offsetLeft;
		var tempY_ref = tempY - barMenuList.offsetTop;
		
		//alert(tempX_ref)
		
	if(
		!(
			(tempX_ref > menuList.offsetLeft) && 
			(tempX_ref < (menuList.offsetLeft + menuList.offsetWidth)) && 
			(tempY_ref > (menuList.offsetTop-1)) && 
			(tempY_ref < (menuList.offsetTop + menuList.offsetHeight))
		) &&  
		!(
			subMenu && (
			(tempX_ref > subMenu.offsetLeft) && 
			(tempX_ref < (subMenu.offsetLeft + subMenu.offsetWidth)) && 
			(tempY_ref > (categoriaGroup.offsetTop+2)) && 
			(tempY_ref < (categoriaGroup.offsetTop + subMenu.offsetHeight))
			)
		)
	){ 
		resetMenu();
		if(barMenuList.showAndHide) barMenuList.style.display = 'none';
	}
	
}
function showMenu(){
	var barMenuList = document.getElementById('barMenuList');
	if(!barMenuList) return;
	
	if ( barMenuList.style.display == 'block'){
		barMenuList.style.display='none';	
	}else{
	    barMenuList.style.display='block';
	}
	
	//barMenuList.style.display='block';
	//barMenuList.showAndHide = true;
}

function showSubMenuClick(linkCategoria){
	var barMenuList = document.getElementById('barMenuList');
	var subMenuList = linkCategoria.nextSibling.nextSibling;
	if(subMenuList) 
		var _class = 'hoverSub';
	else 
		var _class = 'hover';
	if (subMenuList.style.display == 'block')
	{
		resetMenu();
		return;
	}
	resetMenu();
	if(subMenuList) subMenuList.style.display = 'block';
	linkCategoria.className = _class;
		barMenuList.categoriaGroup 	= linkCategoria.parentNode;
		//if(!barMenuList.onclick) barMenuList.onclick = hideMenu;
}

function showSubMenu(linkCategoria){
	var barMenuList = document.getElementById('barMenuList');
	var subMenuList = linkCategoria.nextSibling.nextSibling;
	if(subMenuList) 
		var _class = 'hoverSub';
	else 
		var _class = 'hover';
	resetMenu();
	if(subMenuList) subMenuList.style.display = 'block';
	linkCategoria.className = _class;
		barMenuList.categoriaGroup 	= linkCategoria.parentNode;
		if(!barMenuList.onmouseover) barMenuList.onmouseover = hideMenu;
}

/* == GALERY PICTURE =============== */
function loadedPicture(obj){
	obj.style.visibility='visible';
	//obj.parentNode.style.height='auto';
}
function showPicture(url){
	var targetPicture = document.getElementById('targetPicture');
	if(String(targetPicture.src).search(url)<=0){
		targetPicture.style.visibility='hidden';
		targetPicture.src=url;
	}
}

/*======== validacoes de formularios =============*/
// Javascript Document
//adiciona mascara de cnpj
function MascaraCNPJ(cnpj, event){
        if(mascaraInteiro(event)==false){
                event.returnValue = false;
        }       
        return formataCampo(cnpj, '00.000.000/0000-00', event);
}

//adiciona mascara de cep
function MascaraCep(cep, event){
	if(!mascaraInteiro(event)){
		return false;
	}       
	return formataCampo(cep, '00.000-000', event);
}

//adiciona mascara de data
function MascaraData(data, event){
	return MascaraCampo(data, true, '00/00/0000', event);
}

//adiciona mascara ao telefone
function MascaraTelefone(tel, event){
        //if(mascaraInteiro(event)==false){
		//	return false;
        //}
		
        return formataCampo(tel, '(00) 0000-0000', event);
				
}

//adiciona mascara ao CPF
function MascaraCPF(cpf, event){
        if(!mascaraInteiro(event)){
			return false;
        }
        return formataCampo(cpf, '000.000.000-00', event);
}

function MascaraCampo(campo, sonumero, formato, event){
	if(sonumero)
		if(!mascaraInteiro(event)){
			return false;
		}       
	return formataCampo(campo, formato, event);
}

//valida numero inteiro com mascara
function mascaraInteiro(event){
	var nTecla = 0;
	if (document.all) {
		  nTecla = event.keyCode;
	} else {
		  nTecla = event.which;
	}
	if (nTecla < 48 || nTecla > 57)
		if(nTecla !=8 && nTecla != 0)
			return false;
	return true;
}

//formata de forma generica os campos
function formataCampo(campo, Mascara, evento) { 
        var boleanoMascara; 
        
        var Digitato = evento.keyCode;
        exp = /\-|\.|\/|\(|\)| /g
        campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
        var posicaoCampo = 0;    
        var NovoValorCampo="";
        var TamanhoMascara = campoSoNumeros.length;; 
        
        if (Digitato != 8) { // backspace 
                for(i=0; i<= TamanhoMascara; i++) { 
                        boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                                                || (Mascara.charAt(i) == "/")) 
                        boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
                        if (boleanoMascara) { 
                                NovoValorCampo += Mascara.charAt(i); 
                                  TamanhoMascara++;
                        }else { 
                                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                                posicaoCampo++; 
                          }              
                  }      
                campo.value = NovoValorCampo;
                  return true; 
        }else { 
                return true; 
        }
}

function PintaCampoErro(campo, booleano, classErro, classOk)
{
	if(classErro == undefined) classErro = campo.className;
	if(classOk == undefined) classOk = campo.className;
	if(!booleano)
		campo.className = classErro;
	else
		campo.className = classOk;
}

//valida telefone
function ValidaTelefone(tel){
        exp = /\(?\d{2}\)?[\s-]?\d{4}-?\d{4}/
        if(!exp.test(tel.value))
		{
                alert('Número de Telefone Inválido!');
		}
}

//valida CEP
function ValidaCep(cep, classErro, classOk){
	exp = /\d{2}\.\d{3}\-\d{3}/
	if(!exp.test(cep.value))
	{
		alert('Cep Inválido!');    
		PintaCampoErro(cep, false, classErro, classOk)
		return false;		
	}
	PintaCampoErro(cep, true, classErro, classOk)
	return true;
}

//valida data
function ValidaData(data, classErro, classOk){
	exp = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/
	if(!exp.test(data.value))
	{
		alert('Data Inválida!');
		PintaCampoErro(data, false, classErro, classOk)
		return false;
	}
	PintaCampoErro(data, true, classErro, classOk)
	return true;
}

function ValidarCPF(Objcpf, classErro, classOk) {
var CPF = Objcpf.value; // Recebe o valor digitado no campo
	exp = /\.|\-/g
	CPF = CPF.toString().replace( exp, "" ); 
// Verifica se o campo é nulo
if (CPF == '00000000000') {
  	alert('CPF Inválido!');   
  	PintaCampoErro(Objcpf, false, classErro, classOk)
  	return false
   }

// Aqui começa a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

// Desemembra o número do CPF na array DIGITO
for (I=0; I<=8; I++) {
  DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação
POSICAO = 10;
SOMA = 0;
   for (I=0; I<=8; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[9] = SOMA % 11;
   if (DIGITO[9] < 2) {
        DIGITO[9] = 0;
}
   else{
       DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11º dígito da verificação
POSICAO = 11;
SOMA = 0;
   for (I=0; I<=9; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[10] = SOMA % 11;
   if (DIGITO[10] < 2) {
        DIGITO[10] = 0;
   }
   else {
        DIGITO[10] = 11 - DIGITO[10];
   }

// Verifica se os valores dos dígitos verificadores conferem
DV = DIGITO[9] * 10 + DIGITO[10];
   if (DV != DV_INFORMADO) {
      alert('CPF inválido');
      PintaCampoErro(Objcpf, false, classErro, classOk)
      return false;
   }
   PintaCampoErro(Objcpf, true, classErro, classOk)
   return true;
}

//valida o CNPJ digitado
function ValidarCNPJ(ObjCnpj, classErro, classOk, obrigatorio){
	var cnpj = ObjCnpj.value;
	var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
	var dig1= new Number;
	var dig2= new Number;
	
	exp = /\.|\-|\//g
	cnpj = cnpj.toString().replace( exp, "" ); 
	
	if(obrigatorio == undefined) obrigatorio = true;
	
	if (cnpj == "" && !obrigatorio) return true;
	
	if (cnpj == "00000000000000")
	{
		alert('CNPJ Inválido!');   
		PintaCampoErro(ObjCnpj, false, classErro, classOk)
		return false
	}
	
	var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
			
	for(i = 0; i<valida.length; i++){
			dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);  
			dig2 += cnpj.charAt(i)*valida[i];       
	}
	dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
	dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
	
	if(((dig1*10)+dig2) != digito)  
	{
		alert('CNPJ Invalido!');
		PintaCampoErro(ObjCnpj, false, classErro, classOk)
		return false;
	}
	PintaCampoErro(ObjCnpj, true, classErro, classOk)
	return true;
}
/* ======== fim - validacoes de formularios =============*/
function acesso_chat(url) {
		w = 480;
		h = 490;
		url_chat = url
		prop = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width="+w+",height="+h+",";
		prop+= "left="+Math.floor((screen.width-w)/2)+",";
		prop+= "top="+Math.floor((screen.height-h)/2)+",";
		window.open(url_chat,'chat',prop);
	}
