// 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;
		
	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;
	
	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}\)\ \d{4}\-\d{4}/
        if(!exp.test(tel.value))
                alert('Numero de Telefone Invalido!');
}

//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;
}

//valida o CPF digitado
function ValidarCPF(Objcpf, classErro, classOk){
	var cpf = Objcpf.value;
	exp = /\.|\-/g
	cpf = cpf.toString().replace( exp, "" ); 
	if (cpf == "00000000000")
	{
		alert('CPF Inválido!');   
		PintaCampoErro(Objcpf, false, classErro, classOk)
		return false
	}
	var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
	var soma1=0, soma2=0;
	var vlr =11;
	
	for(i=0;i<9;i++){
			soma1+=eval(cpf.charAt(i)*(vlr-1));
			soma2+=eval(cpf.charAt(i)*vlr);
			vlr--;
	}       
	soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
	soma2=(((soma2+(2*soma1))*10)%11);
	
	var digitoGerado=(soma1*10)+soma2;
	if(digitoGerado!=digitoDigitado)        
	{
		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 =============*/