window.setInterval("atualizarInfo()", 50000);

function atualizarInfo(){
	time = new Date();
	jQuery.get("services/auth.services.php", {"a": "ping", "time": time.getTime()},
    function(r){
      	time = new Date();
      	intervalo = time.getTime() - r;
    } );
}


/*
* CEP -> 99.999-999
* CPF -> 999.999.999-99
* CNPJ -> 99.999.999/9999-99
* Data -> 99/99/9999
* Tel Resid -> (99) 999-9999
* Tel Cel -> (99) 9999-9999
* Processo -> 99.999999999/999-99
* C/C -> 999999-!
***/
function terribleHack(hackObject) {
	hackObject.setAttribute('value',hackObject.value);
}

function txtBoxFormatNumber(fieldID) {
	
	/*var field = document.getElementById(fieldID);

	var formator = new NumberFormat();
	 formator.setInputDecimal ( ',' );
	 formator.setNumber ( field.value );
	 formator.setPlaces ( '2' );
	 formator.setCurrencyValue ( 'R$' );
	 formator.setCurrency ( false );
	 formator.setCurrencyPosition (formator.LEFT_OUTSIDE);
	 formator.setNegativeFormat (formator.LEFT_DASH);
	 formator.setNegativeRed (false);
	 formator.setSeparators (true, '.', ',' );
	 field.value = formator.toFormatted ();*/
}

function numbersonly(field, e, decimal) {
	var key;
	var keychar;
	var permite = true;

	if (window.event) {
	   key = window.event.keyCode;
	}else if (e) {
	   key = e.which;
	}else {
	   return true;
	}
	
	var string = field.value;
	var matchPos = string.search(",");
	if(matchPos>0){
		permite = false;
	}	
	
	keychar = String.fromCharCode(key);
	
	if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) ) {
	   return true;
	}else if ((("0123456789").indexOf(keychar) > -1)) {
	   return true;
	}else if ((decimal) && (permite) && (keychar == ",")) { 
	  return true;
	}else if ((keychar == "-")) { 
		  return true; 
	}else
	   return false;
	
}

/**
* Formata o Campo de acordo com a mascara informada.
* Ex de uso: onkeyup="AplicaMascara('HORA', this);".
* @author Igor Escobar (blog@igorescobar.com)
* @param Mascara String que possui o nome da mascara de formatação do campo.
* @param elemento Campo que será formatado de acordo com a mascara, voce pode informar o id direto ou o próprio elemento usando o this.
* @returns {void}
* @methods
    - DATA:
    - HORA:
    - CEP:
    - CPF:
    - CNPJ
    - TEL
    - TELDDD
*/
function aplicarMascara(Mascara, elemento)
{
 
    // Seta o elemento
    var elemento = (elemento) ? elemento : document.getElementById(elemento);
    if(!elemento) return false;
 
    // DEFINE AS REGRAS DE FORMATAÇÃO DOS CAMPOS
    var Regexs = {
        DATA: /(([0-9]){2})(([0-9]){2})(([0-9]){4})/,
        HORA: /(([0-9]{2}))(([0-9]){2})/,
        CEP: /(([0-9]{5}))(([0-9]){3})/,
        CPF: /(([0-9]{3}))(([0-9]){3})(([0-9]){3})(([0-9]){2})/,
        CNPJ: /(([0-9]{2}))(([0-9]){3})(([0-9]){3})(([0-9]){4})(([0-9]){2})/,
        TEL: /(([0-9]){4})(([0-9]){4})/,
        TELDDD: /(([0-9]){2})(([0-9]){4})(([0-9]){4})/
    }
    MyRegex = eval('Regexs.'+Mascara);
 
    // INSTANCIA A REGRA REGEX PARA FORMATACAO
    getRegexGroups = new RegExp(MyRegex);
 
    // INSTANCIA A REGRA QUE VERIFICA SE O CAMPO POSSUI SOMENTE NÚMEROS
    onlyNumbers = new RegExp(/^([0-9]+)$/);
 
    // ESTE É O CAMPO COM AS IMPURESAS (DIGITADO PELO USUÁRIO FINAL)
    var CampoSujo = elemento.value;
 
    // RETIRA OS EXCESSOS DOS CAMPOS PARA QUE POSSAMOS APLICAR A MASCARA EM UM CAMPO LIMPO
    var oValue = CampoSujo.replace(/([./;:,\-()]+)/g,"");
 
    // VERIFICA SE A REGRA QUE ELE SE ESCOLHEU SE APLICA AO TEXTO DIGITADO NO CAMPO
    if(getRegexGroups.test(oValue) == true){
        //APLICA A REGRA NO CAMPO E FORMATA
        switch(Mascara){
            case 'DATA': oNewCampo = oValue.replace(getRegexGroups,"$1/$3/$5"); break;
            case 'HORA': oNewCampo = oValue.replace(getRegexGroups,"$1:$3"); break;
            case 'CEP': oNewCampo = oValue.replace(getRegexGroups,"$1$3-$5"); break;
            case 'CPF': oNewCampo = oValue.replace(getRegexGroups,"$1.$3.$5-$7"); break;
            case 'CNPJ': oNewCampo = oValue.replace(getRegexGroups,"$1.$3.$5/$7-$9"); break;
            case 'TEL': oNewCampo = oValue.replace(getRegexGroups,"$1-$3"); break;
            case 'TELDDD': oNewCampo = oValue.replace(getRegexGroups,"($1)$3-$5"); break;
        }
        // Retorna o valor do elemento com seu novo valor
        elemento.value = oNewCampo;
    }
}


function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {	
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	if(document.all) { 
    	nTecla = evtKeyPress.keyCode;
	} else if(document.layers) { 
   		nTecla = evtKeyPress.which;
	} else {
	    nTecla = evtKeyPress.which;
	    if (nTecla == 8) {
	    return true;
    }  
	}

	sValue = objForm[strField].value;
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;
	
	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
		
		if (bolMask) {
		    sCod += sMask.charAt(i);
		    mskLen++;
		} else {
		    sCod += sValue.charAt(nCount);
		    nCount++;
		}
		i++;
	}

	objForm[strField].value = sCod;
	if (nTecla != 8) { // backspace
	    if (sMask.charAt(i-1) == "9") { // apenas n�meros...
	    return ((nTecla > 47) && (nTecla < 58)); } // n�meros de 0 a 9
	else { // qualquer caracter...
	    return true;
	}
	} else {
	    return true;
	}
}

//FIM DA FUN��O M�SCARAS GERAIS


	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode;
    var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
    
    if(input.value.length >= len && !containsElement(filter,keyCode)) {
        input.value = input.value.slice(0, len);
        //input.form[(getIndex(input)+1) % input.form.length].focus();
    }
    

function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
        found = true;
    else
        index++;
        return found;
    }

function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
        if (input.form[i] == input)index = i;
        else i++;
        return index;
    }
    return true;
}
//FIM DA FUN��O AUTO TAB

//COMEÇO FUNÇÕES PARA FORMATAR REAIS
documentall = document.all;
function formatamoney(c) {
    var t = this; if(c == undefined) c = 2;
    var p, d = (t=t.split("."))[1].substr(0, c);
    for(p = (t=t[0]).length; (p-=3) >= 1;) {
	        t = t.substr(0,p) + "." + t.substr(p);
    }
    return t+","+d+Array(c+1-d.length).join(0);
}

String.prototype.formatCurrency=formatamoney

function demaskvalue(valor, currency){
	var val2 = '';
	var strCheck = '0123456789';
	var len = valor.length;
		if (len== 0){
			return 0.00;
		}
	
		if (currency ==true){
			/* Elimina os zeros � esquerda
			* a vari�vel  <i> passa a ser a localiza��o do primeiro caractere ap�s os zeros e
			* val2 cont�m os caracteres (descontando os zeros � esquerda)
			*/
	
			for(var i = 0; i < len; i++)
				if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;
	
			for(; i < len; i++){
				if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
			}
	
			if(val2.length==0) return "0.00";
			if (val2.length==1)return "0.0" + val2;
			if (val2.length==2)return "0." + val2;
	
			var parte1 = val2.substring(0,val2.length-2);
			var parte2 = val2.substring(val2.length-2);
			var returnvalue = parte1 + "." + parte2;
			return returnvalue;
	
		}
		else{
				/* currency � false: retornamos os valores COM os zeros � esquerda,
				* sem considerar os �ltimos 2 algarismos como casas decimais
				*/
			var val3 ="";
			for(var k=0; k < len; k++){
					if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
			}
			
			return val3;
		}
}

function reais(obj,event){
	//return true;
    
	var whichCode = (window.Event) ? event.which : event.keyCode;
	if (whichCode == 8 ) {
		if (event.preventDefault){
				event.preventDefault();
			}else{
				event.returnValue = false;
		}
		var valor = obj.value;
		var x = valor.substring(0,valor.length-1);
		obj.value= demaskvalue(x,true).formatCurrency();
		return false;
	}
	//FormataReais(obj,'.',',',event);
}


function backspace(obj,event){
	var whichCode = (window.Event) ? event.which : event.keyCode;
	if (whichCode == 8 && documentall) {
		var valor = obj.value;
		var x = valor.substring(0,valor.length-1);
		var y = demaskvalue(x,true).formatCurrency();
	
		obj.value ="";
		obj.value += y;
	
		if (event.preventDefault){
				event.preventDefault();
			}else{
				event.returnValue = false;
		}
		return false;
	
		}
}

function FormataReais(fld, milSep, decSep, e) {
	
	fld.formatCurrency();
	return true;
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	if (whichCode == 0 ) return true;
	if (whichCode == 9 ) return true; //tecla tab
	if (whichCode == 13) return true; //tecla enter
	if (whichCode == 16) return true; //shift internet explorer
	if (whichCode == 17) return true; //control no internet explorer
	if (whichCode == 27 ) return true; //tecla esc
	if (whichCode == 34 ) return true; //tecla end
	if (whichCode == 35 ) return true;//tecla end
	if (whichCode == 36 ) return true; //tecla home
	
	
	if (e.preventDefault){
			e.preventDefault()
		}else{
			e.returnValue = false
	}
	
	var key = String.fromCharCode(whichCode);
	if (strCheck.indexOf(key) == -1) return false;
	
	fld.value += key;
	
	var len = fld.value.length;
	var bodeaux = demaskvalue(fld.value,true).formatCurrency();
	fld.value=bodeaux;
    if (fld.createTextRange) {
	    var range = fld.createTextRange();
	    range.collapse(false);
	    range.select();
	 }
	 else if (fld.setSelectionRange) {
	    fld.focus();
	    var length = fld.value.length;
	    fld.setSelectionRange(length, length);
	  }
	  return false;
}
//FIM FUNÇÕES PARA FORMATAR REAIS


function addDias(nroDias, campo){
	if(document.getElementById('dataEmissao').value==""){
		alert("A data de emissão não foi informada!");
	}else{
		var dataVenda = new Date(formatdate(document.getElementById('dataEmissao').value));
		var dia, mes, ano, dataResult;
		dataVenda.setDate(dataVenda.getDate()+parseInt(nroDias));
		dia = dataVenda.getDate();
		dia = dia.toString();		
		if((dia.length)==1){
			dia = '0'+dia;
		}
		mes = dataVenda.getMonth()+1;
		mes = mes.toString();		
		if((mes.length)==1){
			mes = '0'+mes;
		}
		
		ano = dataVenda.getFullYear();
		dataResult = dia +'/'+ mes +'/'+ ano;
		//alert(dataResult);
		document.getElementById(campo).value = dataResult;
	}
	
}

function diferencaEntreDatas(per,d1,d2) {
	
	d1 = formatdate(d1);
	d2 = formatdate(d2);
	d1 = new Date(d1)
	d2 = new Date(d2)
	
	var d = (d2.getTime() - d1.getTime())/1000
	
	switch(per) {
		case "yyyy": d/=12
		case "m": d*=12*7/365.25
		case "ww": d/=7
		case "d": d/=24
		case "h": d/=60
		case "n": d/=60
	}
	
	return Math.round(d);
}

function diferencaDatas(per,d1,d2,campo) {
	
	d1 = formatdate(d1);
	d2 = formatdate(d2);
	d1 = new Date(d1)
	d2 = new Date(d2)
	
	var d = (d2.getTime() - d1.getTime())/1000
	
	switch(per) {
		case "yyyy": d/=12
		case "m": d*=12*7/365.25
		case "ww": d/=7
		case "d": d/=24
		case "h": d/=60
		case "n": d/=60
	}
	document.getElementById(campo).value = Math.round(d);
	
}

function formatdate(date){
	var result;
	result = date.substr(3,2) + '/'+date.substr(0,2) + '/' + date.substr(6,4);
	return(result.toString());
}

function nroUsa(nro){
	var pos;
	pos = nro.indexOf(".");
	if(pos != -1){
		nro = nro.substring(0,pos) + nro.substring(pos+1,nro.length);
	}
	pos = nro.indexOf(",");
	if(pos != -1){
		nro = nro.substring(0,pos) + '.' + nro.substring(pos+1,nro.length);
	}
	return nro;
}

function nroBraInt(nro){	
	var pos;
	nro = parseFloat(nro);
	nro = nro.toFixed(0);
	pos = nro.indexOf(".");
	if(pos != -1){
		nro = nro.substring(0,pos) + ',' + nro.substring(pos+1,nro.length);
	}
	return nro;	
}

function nroBra(nro){	
	var pos;
	nro = parseFloat(nro);
	nro = nro.toFixed(2);
	pos = nro.indexOf(".");
	nro = nro.substring(0,pos) + ',' + nro.substring(pos+1,nro.length);
	return nro;	
}


function somaDias(nroDias, data){
	var data = new Date(data);
	//alert(parseInt(nroDias,10));
	var dia, mes, ano, dataResult;
	data.setDate(data.getDate()+parseInt(nroDias, 10));
	dia = data.getDate();
	dia = dia.toString();		
	if((dia.length)==1){
		dia = '0'+dia;
	}
	mes = data.getMonth()+1;
	mes = mes.toString();		
	if((mes.length)==1){
		mes = '0'+mes;
	}
	
	ano = data.getFullYear();
	dataResult = dia +'/'+ mes +'/'+ ano;
	return dataResult;
	
}

function diaDaSemana(data){ 
	// 2/05/2007 
	var len = data.length;	
   	pos = data.indexOf("/");   	   
   	day = data.substring(0,pos);
   	data2 = data.substring(pos+1,len);
   	pos2 = data2.indexOf("/");
   	month =  data2.substring(0,pos2);
   	var len2 = data2.length;
   	year = data2.substring(len2-4,len2);  	
   var val1 = parseInt(day, 10)
   var val2 = parseInt(month, 10)
   var val2x = parseInt(month, 10)
   var val3 = parseInt(year, 10)
   if (val2 == 1) {
      val2x = 13;
      val3 = val3-1
   }
   if (val2 == 2) {
      val2x = 14;
      val3 = val3-1
   }
   var val4 = parseInt(((val2x+1)*3)/5, 10)
   var val5 = parseInt(val3/4, 10)
   var val6 = parseInt(val3/100, 10)
   var val7 = parseInt(val3/400, 10)
   var val8 = val1+(val2x*2)+val4+val3+val5-val6+val7+2
   var val9 = parseInt(val8/7, 10)
   var val0 = val8-(val9*7)
   return val0;
}

function ocultar(){
	document.getElementById('desaparece').style.visibility = 'hidden';
}

function mostrar(){
	document.getElementById('desaparece').style.visibility = '';
}

function imprimir(){
	ocultar();
	window.print();
	tempo();
}

function tempo(){	
	window.setTimeout("mostrar()", 1000);		
}

function dataUsa(data,separador){
	var aData = data.split(separador.toString());
	var novaData = aData[2]+'/'+aData[1]+'/'+aData[0];	
	return novaData;
}

function dataBr(data,separador){
	var aData = data.split(separador.toString());
	var novaData = aData[2]+'/'+aData[1]+'/'+aData[0];	
	return novaData;
}

function openPopup(url,width,height) {
	myPopup = window.open(url,"popupWindow","scrollbars=yes,status=yes,width="+width+",height="+height+"");

}

function displayWait(div){	
	document.getElementById(div).innerHTML = "<img src='images/load.gif' />";
}

function displayWaitRelatorios(div){	
	document.getElementById(div).innerHTML = "<img src='../images/load.gif' />";
}

function closeWait(div){
	document.getElementById(div).innerHTML = "";
}

function closeWaitByClass(className){
  var elem = document.getElementsByClass(className);
	for(i=0; i++; i<len(elem)) {
		 elem[i].innerHTML = "";
	}
}

function formatDateField(field){
	var currentTime = new Date()
	var month = currentTime.getMonth() + 1
	var day = currentTime.getDate()
	var year = currentTime.getFullYear()	
	anoStr = year.toString();	
	//str = field.value;
	str = field.value;
	var mySplitResult = str.split("/");		
	var dataNumber = '';	
	for(i = 0; i < mySplitResult.length; i++){		
		temp = mySplitResult[i];
		if (temp.length==1){
			temp = '0' + temp;
		}
		dataNumber += temp;
	}		
	dataNumber = formatNumber(dataNumber);	
	if (dataNumber.length == 0){
		return false;
	}	
	if (dataNumber.length == 2){	
		dia = dataNumber.substr(0,2);
		mes = month.toString();
		if (mes.length==1){
			mes = '0' + mes;
		}
		ano = anoStr.substr(0,4);	
	}else if(dataNumber.length == 4){	
		dia = dataNumber.substr(0,2);
		mes = dataNumber.substr(2,2);
		ano = anoStr.substr(0,4);	
	}else if(dataNumber.length == 6){	
		dia = dataNumber.substr(0,2);
		mes = dataNumber.substr(2,2);
		ano = anoStr.substr(0,2) + dataNumber.substr(4,2);		
	}if (dataNumber.length == 8){	
		dia = dataNumber.substr(0,2);
		mes = dataNumber.substr(2,2);
		ano = dataNumber.substr(4,4);
	}	
	field.value = dia + '/' + mes + '/' + ano;
}

function formatNumber(sText){
	var ValidChars = "0123456789";
	var result = "";
	var Char;	
	for (i = 0; i < sText.length; i++) {	
		Char = sText.charAt(i);	
		if (ValidChars.indexOf(Char) != -1){
			result += Char;
		}
	}	
	return result;
}

function getElementsByClassName(className){
	var arr = new Array();
	var elems = document.getElementsByTagName("*");
	for(var i = 0; i < elems.length; i++){
		var elem = elems[i];
		var id = elem.getAttribute("id");
		var cls = elem.getAttribute("class");
		if(cls == className){
			arr[arr.length] = id;
		}
	}
	return arr;
}

function marcarDesmarcarTodosCheckbox(field,nameClass,atrivarOnclick){
	var aItens = document.getElementsByClassName(nameClass);
	for(var i=0; i < aItens.length; i++) {
		if(field.checked==true){
			aItens[i].checked = true;	
			if(atrivarOnclick=='S'){
				aItens[i].onclick()
			}		
		}else{
			aItens[i].checked = false;	
			if(atrivarOnclick=='S'){
				aItens[i].onclick()
			}		
		}		
	}	
}

function rowHighLight(elementId) {	
   //alert(elementId);
   new Effect.Highlight($(elementId));
}

function removeAcentos(Campo){
	var Acentos = "áàãââÁÀÃÂéêÉÊíÍóõôÓÔÕúüÚÜçÇ";
	var Traducao ="aaaaaAAAAeeEEiIoooOOOuuUUcC";
	var Posic, Carac;
	var TempLog = "";
	for (var i=0; i < Campo.length; i++){
		Carac = Campo.charAt(i);
		Posic = Acentos.indexOf(Carac);
		if(Posic > -1){
			TempLog += Traducao.charAt(Posic);
		}else{
			TempLog += Campo.charAt(i);
		}
	}
	return (TempLog);
}

function formatNumeroBra(field){
	
 	var tam;
	var valor;
	var achou = false;
	var ValidChars = "0123456789";
	
	//valor = field.value; 
	valor = field.value;
	tam = valor.length;
	
	cont = 0;
	strTemp = '';
	for (i=tam-1;i>=0;i--){
		
		Char = valor.charAt(i); 
	  
      	if (ValidChars.indexOf(Char) != -1){
        	strTemp += Char;
        	cont ++;
      	}
		
		if (Char=='.'){			
			
			if ((!achou) && (cont>2)){
				strTemp = '00,'+strTemp;
				achou = true;
			}
			
			if (!achou){
				strTemp += ',';
				achou = true;
				if (cont==0){
					strTemp = '00'+strTemp;
				}
				if (cont==1){
					strTemp = '0'+strTemp;
				}
				cont = 0;
			}			 
		}else if (Char==','){
			
			if ((!achou) && (cont>2)){
				strTemp = '00,'+strTemp;
				achou = true;
			}
			
			if (!achou){
				strTemp += Char;
				achou = true;
				if (cont==0){
					strTemp = '00'+strTemp;
				}
				if (cont==1){
					strTemp = '0'+strTemp;
				}
				cont = 0;
			} 
		}  
	}
	
	if (strTemp==''){
		strTemp = '0';
	}
	
	if (!achou){
		strTemp = '00,'+strTemp;
	}
	
	str= '';
	for(i = 0; i < strTemp.length; i++){
		Char = strTemp.charAt(i); 
		str = Char + str;  	
	}
	
	if (str.charAt(0)==','){
		str = '0'+str;
	} 
	
	field.value = str;

}


function efeitoHighLight(elementId) {
   new Effect.Highlight($(elementId));
}


function debug(s) {
	if (typeof console != "undefined" && typeof console.debug != "undefined") {
		console.log(s);
	}
}

function isEmailAddress(email){
    var s = email;
    var filter=/^[A-Za-z][A-Za-z0-9_.-]*@[A-Za-z0-9_.-]+\.[A-Za-z0-9_.]+[A-za-z]$/;
   
    if (s.length == 0 ){
        return false;
    }
   
    if (filter.test(s)){
        return true;
    }else{
        return false;
    }
}

function hideSelects(visibility){
	selects = document.getElementsByTagName('select');
	for(i = 0; i < selects.length; i++) {
		selects[i].style.visibility = visibility;
	}
}
