/**************************************************************
 Funcao que Abre uma janela convencional
  Parâmetros: 	1.tela = nome do arquivo (html/asp) a ser aberto na nova janela 
         2.nomeJanela = nome a ser atribuído a nova janela
         3.larg = largura da janela em pixels
         4.altura = altura da janela em pixels
         5.horiz = distância horizontal em pixels (-1 para centralizar)
         6.vert = distância vertical em pixels (-1 para centralizar)
*************************************************************/							  

var primeira=1;
var janela=null;

function abreJanela(tela,nomeJanela,larg,altura,horiz,vert)
{
var posicao = '';
var pos = 0;
if (vert == -1) {
	pos = (600 - altura) / 2;
	posicao = posicao + ',top=' + pos.toString();
	//alert('posicao1=' + posicao);
}
else {
	posicao = posicao + ',top=' + vert;
	//alert('posicao1=' + posicao);
}
if (horiz == -1) {
	pos = (800 - larg) / 2;
	posicao = posicao + ',left=' + pos.toString();
	//alert('posicao2=' + posicao);
}
else {
	posicao = posicao + ',left=' + horiz;
	//alert('posicao2=' + posicao);
}
if (primeira==1) { 
	janela=window.open(tela,nomeJanela, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no , resizable=no, copyhistory=no, width=' + larg + ',height=' + altura + posicao);
	primeira=0;
	janela.focus();
}
else { 
	if (janela.closed==0) {
		janela.focus();
	} 
	else { 
		janela=window.open(tela,nomeJanela, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=' + larg + ',height=' + altura + posicao);
		janela.focus();
	}
}
}

/**************************************************************
 Funcao que Abre um popup convencional
 Parametros : theURL --> Url que ira abrir
                     winName --> nome de janela
			   features --> caracteristicas da janela, tamanho, altura, etc
*************************************************************/							  
function MM_openBrWindow(theURL,winName,features) { //v2.0
  janela = window.open(theURL,winName,features);
  janela.focus();
}
/*******************************************************************
Abre Janela Relatorio
Parâmetros:  theURL --> Url que ira abrir
             winName --> nome de janela

********************************************************************/
function abreJanela2(tela,nomeJanela,larg,altura,horiz,vert) { //v2.0
  var janela = window.open(tela,nomeJanela, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no , resizable=no, copyhistory=no, width=' + larg + ',height=' + altura + ',top=120,left=200');
  janela.focus();
}
/*******************************************************************
Abre Janela MODAL
Parâmetros:

	pPagina: 	Nome da página que será aberta na janela Modal
	pnmJanela: 	Nome da janela
	pLargura: 	Largura da janela
	pAltura: 	Altura da janela
	pTopo: 		Distância em relação ao topo
	pEsquerda: 	Distância em relação a lateral esquerda
	pscrioll: se tiver scrol (1 ou 0)

obs: Caso os valores de pTopo e pEsquerda sejam passados com valor "-1", sua posição na tela será centralizada
***********************************************************************/
function abreJanelaModal( pPagina, pnmJanela, pLargura, pAltura, pTopo, pEsquerda, campo, pscroll, idimgPreview ){

    if(navigator.appName == 'Netscape' )
    {
 
      if (pPagina == '../include/ap_frCalendario.asp')
          {
             pPagina = '../include/ap_Calendario.asp';
          }
       else
          {
             pPagina = '../enviaimagem/ap_enviaImg.asp?tipo=T&idimgPreview=' + idimgPreview;
          }
      
      abreJanela( pPagina, pnmJanela, pLargura, pAltura, pTopo, pEsquerda, campo, pscroll, idimgPreview )
      return false;
    }

	var ltxtaux;1

	if ( ( pAltura == -1 ) || ( pEsquerda == -1 ) ) 
		ltxtaux = ";center:1";
	else   
		ltxtaux = ";dialogTop:"+pTopo+"px;dialogLeft:"+pEsquerda+"px"; 
//		window.open(pPagina)
		rvalor=  window.showModalDialog( pPagina, pnmJanela, "dialogWidth:"+pLargura+"px;dialogHeight:"+pAltura+"px;scroll:"+pscroll+";help:0;status:0"+ltxtaux );
	if ((rvalor!="")&&(rvalor!=null)){
		campo.value = rvalor;
        
        var strFile = rvalor;
        var strExteFile = strFile.substr((strFile.length - 3 ), strFile.length);
        strExteFile = strExteFile.toUpperCase();
        
        if ((strExteFile == 'JPG') || (strExteFile == 'GIF'))
           {
            PreviewIMG(rvalor, idimgPreview);
            
            if (idimgPreview == 'imgPreview')
               mostra_obj_id(document.limpa)
            else
               mostra_obj_id(document.limpa2)
            
           }
	}
}


/****************************************************************
	esconder objeto id
***************************************************************/

function esconde_obj_id(p_objname)
{   
    p_objname.style.display = 'none';
    //return true;
}

/****************************************************************
	mostra objeto id
***************************************************************/
function mostra_obj_id(p_objname)
{   
    p_objname.style.display = 'block';
    //return true
}

/*******************************************************************
Abre Janela MODAL
Parâmetros:

	pPagina: 	Nome da página que será aberta na janela Modal
	pnmJanela: 	Nome da janela
	pLargura: 	Largura da janela
	pAltura: 	Altura da janela
	pTopo: 		Distância em relação ao topo
	pEsquerda: 	Distância em relação a lateral esquerda
	pscrioll: se tiver scrol (1 ou 0)

obs: Caso os valores de pTopo e pEsquerda sejam passados com valor "-1", sua posição na tela será centralizada
***********************************************************************/
function abreJanelaModalReload(pPagina, pnmJanela, pLargura, pAltura, pTopo, pEsquerda,pScroll)
{   
	var ltxtaux;
	if ( ( pAltura == -1 ) || ( pEsquerda == -1 ) ) 
		ltxtaux = ";center:1";
	else   
		ltxtaux = ";dialogTop:"+pTopo+"px;dialogLeft:"+pEsquerda+"px"; 
//		window.open(pPagina)
	if (window.showModalDialog( pPagina, pnmJanela, "dialogWidth:"+pLargura+"px;dialogHeight:"+pAltura+"px;scroll:"+pScroll+";help:0;status:0"+ltxtaux) == 1)
		oForm.submit();
		window.location.reload();
}



/**************************************************************
 Funcao que Abre um popup modal
 Parametros : theURL --> Url que ira abrir
                     winName --> nome de janela
			   features --> caracteristicas da janela, tamanho, altura, etc
*************************************************************/							  
function MM_openBrWindowModal(theURL,winName,features) { //v2.0
  rv = window.showModalDialog(theURL,winName,features);
  return rv;
}



/**************************************************************
 Funcao que marca ou desmarca todos os Checkbox do Formulario
 Parametros : pformulario --> Nome do Formulario 
              pmarca      --> Se true ele marca todos 
			                  Se false ele desmarca todos
*************************************************************/							  

function MarcaCheckbox(valor,checkbox)
{ 
  if (typeof(checkbox.length)== 'undefined')
    checkbox.checked = valor;
  else
  {
      for (i = 0 ; i < checkbox.length ; i++)
              checkbox[i].checked = valor;
  }
}


/**************************************************************
 Funcao que desmarca os Checkboxs que marcam todos os outros
 Parametros : pformulario --> Nome do Formulario 
              pmarca      --> Se true ele marca todos 
			                  Se false ele desmarca todos
*************************************************************/							  
function DesmarcaCheckbox( pformulario, pmarca )
{

   for (var i = 0; i < pformulario.elements.length ; i++) 
   {
	       pformulario.elements[i].checked = false;
	}   

}	




/**************************************************************
 Funcao que Verifica se um campo eh numerico
 Parametros : field --> Nome do campo
                     msg   --> mensagems que será exibida se houver erro

*************************************************************/							  
function isNumber(field,msg){

  data = field.value;   

   //testa infinitos numeros sem virgula
   var r1 = new RegExp("^([0-9]+)$");

   //testa infinitos numeros com virgula
   var r2 = new RegExp("^([0-9]+\\,[0-9]{0,3})$");

   //testa numero com pontos e virgulas
   var r3 = new RegExp("^[0-9]{1,3}(\\.[0-9]{3})*(\\,[0-9]{0,2}){0,1}$");

 //  return((r1.test(data)) || (r2.test(data)) || (r3.test(data)) )

  if ( ((r1.test(data)) || (r2.test(data)) || (r3.test(data)) ) == true) 
     return true;
  else
  {  alert(msg);
     field.focus();  
     return false;	
  }
}


/**************************************************************
 Funcao que Verifica se um campo eh inteiro
 Parametros : field --> Nome do campo
                     msg   --> mensagems que será exibida se houver erro

*************************************************************/							  
function isInteiro(objNum,msg) {
   data = objNum.value;   
   var numStr = "0123456789";
   var thisChar;
   var counter = 0;
   for (var i=0; i<data.length; i++){
       thisChar = data.substring(i, i+1);
       if (numStr.indexOf(thisChar) != -1)
           counter++;
   }
   if (counter == data.length){
      return(true);
   }else{
		alert(msg);
		objNum.focus();		
	  	return false;
   }
	return true;
}


/**************************************************************
 Funcao de mascara de numero decimais positivos
 Parametros : field --> o nome do objeto do formulario
*************************************************************/
function mask_numero_percentual(field)
	{
    var local_caract_especial,cont_caract_especial;
	
	local_caract_especial = 0;
	cont_caract_especial = 0;
		
		if ( field.value.length == 0  && (event.keyCode == 44 || event.keyCode == 46) )
		{   
           return false;
        }
		else
		{
           if ( (event.keyCode == 44 || event.keyCode == 46) || (event.keyCode > 47 && event.keyCode < 58) )
		   {
 		      for (i=0; i <= field.value.length-1; i++)
			  {	
			     str = field.value.substring(i, i+1);
				 str = str.charAt(0)
			     if ( (str == ",") || (str == ".") )
				 {
				    cont_caract_especial++;
					local_caract_especial = i
				 }
			   }

			 if ( event.keyCode == 44 || event.keyCode == 46 )
		     {
			    if ( cont_caract_especial == 1 )
			    {
			       return false;
			    }
			    else
			    {
			       return true;
		   	    }
		     }
		     else
		     {  
  		         if ( field.value.length == 3 && (event.keyCode != 44 && event.keyCode != 46) && cont_caract_especial == 0 )
			     {
			        field.value = field.value + '.';
				    return true;
			     }
				 else
				 {
			        if ( cont_caract_especial == 1 )
			        {
  		               if ( field.value.length == 3 && (event.keyCode != 44 && event.keyCode != 46) && cont_caract_especial == 0 )
			           {
			                 field.value = field.value + '.';
				             return true;
			           }
				       else
				       {
				          if ( ( local_caract_especial == 0 || local_caract_especial == 1 ) && field.value.length >= 5 )
                             return false;
				       }
		            }
				 }
		     }
	   }
       else
	   {
	      return false;
	   }
   }
}


/**************************************************************
 Funcao que Verifica se um campo eh vazio
 Parametros : field --> Nome do campo
                     msg   --> mensagems que será exibida se houver erro

*************************************************************/							  
function isVazio(field,msg){
   var thisChar;
   var counter = 0;
   var str;
   
    str = field.value
    if ( str == "" ) {
            if (typeof(msg) != "undefined"){ 
		   alert(msg)
		   field.focus()
		}   
		return true;
    }
    
    for (var i=0; i<str.length; i++){
       thisChar = str.substring(i, i+1);
       if (thisChar == " ")
           counter++;
   }
   
   if (counter == str.length){
       if (typeof(msg) != "undefined"){
	    alert(msg);
          field.focus();		
	 }   
      return true;
   }
   
    return false;	
}

/**************************************************************
 Funcao que Verifica se um campo que nao sabemos o nome eh vazio
 Parametros : oForm --> Nome do formulário
                     msg   --> mensagems que será exibida se houver erro

*************************************************************/							  

function isCampoVazio(oForm,msg)
{

	for (i = 0; i < oForm.length; i++)
	{
		if (oForm.elements[i].id == "validar")
		{
            //alert(oForm.elements[i].name);
			
		  	if (!oForm.elements[i].disabled)
			{
			   if ((oForm.elements[i].value == '') || (oForm.elements[i].value == ' ') || (oForm.elements[i].value == '  ' ) )
		          {
				   alert(msg);
				   oForm.elements[i].focus();
				   return false;
			      }
            } 
		}
	}
return true;
}


/**************************************************************
 Funcao que Verifica se um radio é checado
 Parametros : field --> Nome do campo
                     mensagem   --> mensagems que será exibida se houver erro

*************************************************************/							  

function isChecked(field, msg)
{
   checado = false
   for (i=0; i < field.length; i++)
       { 
      // if (frm.elements[i].type == "radio")
            if (field[i].checked)
            checado = true;
       }    
   if (!checado)
   {
   alert(msg);
   return false;
   }
 return true;
}

/**************************************************************
 Funcao que verifica se uma data e hora eh Posterior a outra no formato dd/mm/aaaa
*************************************************************/


function isDateTimeCompara(p_data1, p_hora1,  p_data2, p_hora2, p_msg)
{
    var dia, mes, ano
    dia = p_data1.value.substr(0,2);
    mes = p_data1.value.substr(3,2);
    ano = p_data1.value.substr(6,4);
    
    var hora1, hora2, minuto1, minto2
       
    hora1  = p_hora1.value.substr(0,2);
    hora2 =  p_hora2.value.substr(0,2);

    minuto1  = p_hora1.value.substr(3,2);
    minuto2 =  p_hora2.value.substr(3,2);
    
  
   
    var dtinicio = new Date(ano + "/" + mes + "/" + dia + " " + hora1 + ":" + minuto1);
    dia = p_data2.value.substr(0,2);
    mes = p_data2.value.substr(3,2);
    ano = p_data2.value.substr(6,4);
    		
    var dtfinal = new Date(ano + "/" + mes + "/" + dia + " " + hora2 + ":" + minuto2);
    if (dtinicio >= dtfinal){
       alert(p_msg);
       p_data1.focus();
       return false;
       }
	else
    return true;
}



/**************************************************************
 Funcao que Verifica se um Combo é Selecionado
 Parametros : field --> Nome do campo
                     mensagem   --> mensagems que será exibida se houver erro

*************************************************************/							  

function isSelected(field, msg)
{ 
  if (field.selectedIndex == '')
       { 
        alert(msg);
        field.focus();
	    return false;	
	   }    
 return true;
}


/**************************************************************
 Funcao que Verifica se um campo eh zero
 Parametros : field --> Nome do campo
                     mensagem   --> mensagems que será exibida se houver erro

*************************************************************/							  
function isZero(field,msg){
    str = field.value
    if  ( str == 0) {
		alert(msg)
		field.focus()
		return true;
	}
    return false;	
}



/**************************************************************
 Funcao que Verifica  se é ou naum um email valido
 Parametros : str --> Email

*************************************************************/							  
function isEmail(str) {
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}


/**************************************************************
 Funcao de mascara de numero decimais positivos
 Parametros : field --> o nome do objeto do formulario
*************************************************************/							  
function mask_numero_decimal(field)
{	
    if ((field.value.length == 2) && (event.keyCode == 44))
        return(true);
    if ( (event.keyCode > 64 && event.keyCode < 91) || (event.keyCode > 96 && event.keyCode < 123) )
        return(false);
    if (((event.keyCode) > 47) && ((event.keyCode) < 58)){
        NumDig = field.value;
        TamDig = NumDig.length;
        Contador = 0;
        if ((TamDig > 0) && (TamDig < field.maxLength)){
            numer = "";
            for (i = TamDig; (i >= 0); i--){
                if ((parseInt(NumDig.substr(i,1))>=0) && (parseInt(NumDig.substr(i, 1))<=9)){
                    Contador++;
                    if ((Contador == 2) && ((TamDig -i) < 4)){
                   //     numer = ","+numer;
                   //     Contador = 0;
                    }else if (Contador == 3){
                             numer = "."+numer;
                             Contador = 0;
                    }
                    numer = NumDig.substr(i, 1)+numer;
                }
            }
            field.value = numer;
            return(true);
        }
    }else return(false);
}

/**************************************************************
 Funcao de mascara de numero natural
 Parametros : field --> o nome do objeto do formulario
*************************************************************/							  
function mask_numero_natural(field){
  
  var caracter = event.keyCode;

  //permit o backspace
  if (caracter  == 13)
    return true;
 //numeros de 0 a 9 
  if ((caracter  < 48) || (caracter  > 57)){  
     field.focus();     
     return false
  }    
  
return true;  
}




/**************************************************************
 Funcao que monta uma mascara para data
 Parametros : field --> objeto do form de data (campo de data)

*************************************************************/							  
function maskdata(field,teclapres){

  var caracter = teclapres.keyCode;
  
  if (caracter  == 13)
    return true;
  
  if (((field.value.length == 2) || (field.value.length == 5)) && (caracter == 47))
     field.value = field.value + '/';
 
  if ((caracter  < 48) || (caracter  > 57)){  
     field.focus();     
     return false
  }
  else{
        if (  ((field.value.length == 2) || (field.value.length == 5))  && (caracter != 8)  )
 	      field.value = field.value + '/';
  }
  
 
return true;
}

/**************************************************************
 Funcao para usar maskara no campo de horas(tecla-a-tecla)
 parâmetos : field    --> campo de hora
            teclapres --> tecla pressionada
*************************************************************/

function maskhora(field,teclapres){

  var caracter = teclapres.keyCode;
  
  if (caracter == 13)
    return true;
  
  if ((field.value.length == 2) && (caracter == 47))
     field.value = field.value + ':';
 
  if ((caracter  < 48) || (caracter  > 57)){  
     field.focus();     
     return false;
  }
  else{
       if (  (field.value.length == 0)  && (caracter > 50)  )
			return false;

        if (  (field.value.length == 1)  && (field.value.charAt(field.value.length-1) == '2' ) && (caracter > 51) )
			return false;

        if (  (field.value.length == 2)  && (caracter != 8)  )
 	      field.value = field.value + ':';

       if (  (field.value.length == 3)  && (caracter > 53)  )
			return false;

       if (field.value.length == 5)
			return false;

  }  
  return true;
}

/**************************************************************
 Funcao que monta uma mascara para data no formato mes/ano
 Parametros : field --> objeto do form de data (campo de data)

*************************************************************/							  
function maskdata_mesano(field,teclapres){

  var caracter = teclapres.keyCode;
  
  if (caracter  == 13)
    return true;
  
  if ((field.value.length == 2)  && (caracter == 47))
     field.value = field.value + '/';
 
  if ((caracter  < 48) || (caracter  > 57)){  
     field.focus();     
     return false
  }
  else{
        if ( (field.value.length == 2)  && (caracter != 8)  )
 	      field.value = field.value + '/';
  }
  
 
return true;
}




/**************************************************************
 Funcao que verifica se uma data eh válida no formato dd/mm/aaa
 Parametros : objdata --> objeto do form de data (campo de data)

*************************************************************/							  

function isDate(objdata){
	if ((objdata.value.length < 10) || (objdata.value.length == "")) {
		alert("Data inválida. Formato indicado: dd/mm/aaaa. Ex: 01/01/2002");
		objdata.focus();
		return false;
	}
	dia = objdata.value.substr(0,2);
	mes = objdata.value.substr(3,2);
	ano = objdata.value.substr(6,4);
    if   ((isNaN(parseInt(dia)) || isNaN(parseInt(mes)) ||
    isNaN(parseInt(ano))) ||
		(ano < 1900 || ano > 9999) ||
        (mes < 1 || mes > 12) ||
        (dia < 1 || dia > 31) ||
        (mes == 2 && dia > 28 && (ano % 4 != 0)) ||
        (mes == 2 && dia > 29 && (ano % 4 == 0)) ||
        (dia > 30 && (mes == 4 || mes == 6 || mes == 9 || mes == 11))) {
			alert("Data inválida! Informe uma data válida.");
			objdata.focus();
			return false;
    }else {
            return true;
    }
}




/**************************************************************
 Funcao que testa uma mascara passada.
 Parametros : codigo --> o objeto que se quer testar.
			   mascara --> mascara usando a barra como separador.
           			                      utiliza formato 99/99/999 para valores numericos
							    e aaa/aa/aaaa/aa para valores alpha

*************************************************************/							  

function mascara_generica(codigo,mascara){
  str = mascara;
  fim = str.length;
  valor = codigo.value;
  posicao = valor.length -1;
  tipo = str.charAt(posicao);
 
  
  if ((tipo == "a") || (tipo == "A")){
     if ((valor.charCodeAt(posicao) >= 48) && (valor.charCodeAt(posicao) <= 57) ||
		(valor.charCodeAt(posicao) >= 65) && (valor.charCodeAt(posicao) <= 90) ||
		(valor.charCodeAt(posicao) >= 97) && (valor.charCodeAt(posicao) <= 122)) {
		tipo = str.charAt(posicao+1);
             cont = posicao + 1;
		while ((tipo!="a") && (tipo!="A") && (tipo!="9") && (tipo!="") ) {
			codigo.value=codigo.value+tipo;
                    cont = cont + 1;
 		       tipo = str.charAt(cont);
		}
	 } else { 
		codigo.value = codigo.value.substr(0,posicao);
	 }
  } else {
	if (tipo == "9") {
		if ((valor.charCodeAt(posicao) >= 48) && (valor.charCodeAt(posicao) <= 57)) {
			tipo = str.charAt(posicao+1);
            cont = posicao + 1;
			while ((tipo!="a") && (tipo!="A") && (tipo!="9") && (tipo!="")) {
				codigo.value=codigo.value+tipo;
                           cont = cont + 1;
 	   	              tipo = str.charAt(cont);
			}
		} else { 
			codigo.value = codigo.value.substr(0,posicao);
		}
	} else {
        	tipo = str.charAt(posicao+1);
            cont = posicao + 1;
			while ((tipo!="a") && (tipo!="A") && (tipo!="9") && (tipo!="")) {
				codigo.value=codigo.value+tipo;
                           cont = cont + 1;
 	   	              tipo = str.charAt(cont);
			}
	}
  }
  codigo.value = codigo.value.substr(0,fim - 1) ;
  return true;
}

/**************************************************************
 
 Funcao de barra de rolagem horizontal para Layes
 
*************************************************************/							  

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

 var velo_scroll = 40; // velocidade do Srcroll
 var pixel_scroll = 10; // pixels que vai mudar
 var window_width = 0;
 var isNav;
 var isIE;
 var coll = "";
 var styleObj = "";
 if (parseInt(navigator.appVersion) >= 4) {
  if (navigator.appName == "Netscape") {
   isNav = true;
  } else {
   isIE = true;
   coll = "all.";
   styleObj = ".style";
  }
 }
 
 function getObjWidth(obj) {
  var theObj = eval("document." + coll + obj);
  if (isNav) {
   return theObj.clip.width;
  } else {
   return theObj.clientWidth;
  }
 }
 
 function getObject(obj) {
  if (typeof obj == "string") {
   theObj = eval("document." + coll + obj + styleObj);
  } else {
   theObj = obj;
  }
  return theObj;
 }
 
 function getInsideWindowWidth() {
  if (isNav) {
   return window.innerWidth;
  } else {
   return document.body.clientWidth;
  }
 }
 
 function getObjectLeft(obj) {
  var theObj = getObject(obj);
  if (isNav) {
   return theObj.left;
  } else {
   return theObj.pixelLeft;
  }
 }
 
 function shiftBy(obj, x, y) {
  var theObj = getObject(obj);
  if (isNav) {
   theObj.left = theObj.left + x;
   theObj.top = theObj.top + y;
  } else {
   theObj.pixelLeft = theObj.pixelLeft + x;
   theObj.pixelTop = theObj.pixelTop + y;
  }
 }
 
 var tim = 0;
 var noScroll = true;
 
 function mLeft(obj) {
  obj = "menu"
  if(!noScroll && getObjectLeft(obj) < window_width) {
   shiftBy(obj, pixel_scroll, 0);
   tim = setTimeout("mLeft()", velo_scroll);
  }
 }
 
 function mRight(obj) {
  obj = "menu" 
  if(!noScroll && getObjectLeft(obj) > -(getObjWidth(obj) - (getInsideWindowWidth())) - window_width) {
   shiftBy(obj, - pixel_scroll, 0);
   tim = setTimeout("mRight()", velo_scroll);
  }
 }
   
 function noMove() {
  clearTimeout(tim);
  noScroll = true;
  currentScroll = 'parar'
 }   
 
/*****************************************************

    funcao p/ Barra de rolagem vertical

*******************************************************/

  if (document.layers) ns=true; else ns=false; 
  if (document.all) ie=true; else ie=false;

  var scrollMargin=0;
  var scrollPos=0;
  var scrollStep=8;
  var scrollSpeedStep=100;
  var currentScroll=null;
  var continueFlag=false;
  var scrollEnable=false;
  var nmbox;
  var nmlist;

  function init(box,list) {
    nmbox = box;
	nmlist = list;

    //alert(box);
    //alert(list);
  
    document.onmouseup = mouseUp;
   // if (ie) Rolagem1.onmouseup = mouseUp;
   // if (ie) Rolagem2.onmouseup = mouseUp;
    if (ns) document.layers['Rolagem1'].onmouseup = mouseUp;
    if (ns) document.layers['Rolagem2'].onmouseup = mouseUp;
    if (ns) document.captureEvents(Event.MOUSEUP);

    if (ie) scrolldiff=nmlist.scrollHeight-nmbox.offsetHeight;
    if (ns) scrolldiff=document.nmbox.document.layers.nmlist.document.height-
      document.layers.nmbox.clip.height;
    

    if (scrolldiff > 0) {
      scrollEnable=true;
    }
  }

  function mouseUp(e) {
    if (!continueFlag) currentScroll=false;
    continueFlag=false;
    setTimeout("scrollFlag=false;", 100);
  }

  function scrollFunc(nmbox,nmlist,direction, type) {
    init(nmbox,nmlist)
    if (scrollEnable) {	  
      continueFlag=true;
      if ((currentScroll==direction) && (type=="step")) {
        currentScroll=null;
      }
      else {
		currentScroll=direction;
        scrollExec(direction, type);
		
      }
    }
  }
  
  function scrollExec(direction, type) {
     
    if (currentScroll==direction) {

      if ((type=="step") && (currentScroll)) {
        
        setTimeout("scrollExec('"+direction+"', '"+type+"');", scrollSpeedStep);

      }
      else currentScroll=null;
      
      if (ie) {
        boxheight=nmbox.offsetHeight;
        maxscroll=nmlist.scrollHeight-boxheight;
      }
      if (ns) {
        boxheight=document.nmbox.clip.height;
        maxscroll=document.nmbox.document.layers.nmlist.document.height-boxheight+25;
      }
      if (type=="page") delta=boxheight-scrollMargin;
      else delta=scrollStep;
      if (direction=="up") delta=-delta;
      scrollPos+=delta;
      if (scrollPos < 0) scrollPos=0;
      if (scrollPos > maxscroll) scrollPos = maxscroll;
      if (ie) nmlist.style.top=-scrollPos;
      if (ns) document.nmbox.document.nmlist.top=-scrollPos;
    }
  }
  
/**************************************************************
 
 Funcao para validar ano em uma consulta
 
*************************************************************/		
function ValidaAno(field){
if (field.value != ''){
  if (!isNumber(field,'Ano deve ser numérico'))
     {
     return false;
     }
  if ((field.value.length < 4) && (field.value.length >= 1))
    {
     alert('O Ano deve ser de 4 dígitos');
	 field.focus();
     return false;
    }
 }
return true;
} 

/************************************************************
Preview Imagem de Upload
************************************************************/
function PreviewIMG(txUpload)
{
 if (txUpload.value == ''){
     alert('Selecione a Imagem para Visualizar');
	 txUpload.focus();
     return false;
  }
  else
  {
    document.imgPreview.src = oForm.url_img.value + txUpload;
  }
return true;
}

/**************************************************************
 Funcao para popular combos relacionados (dependentes)
 onchage="popula_combo_dependente(window.oFrame(frame_escondido), oForm, oCampo);"
 parâmetor: combo origem e combo de destino

*************************************************************/

function popula_combo_dependente(p_nmFuncao, p_nmFrame_escondido, p_nmForm, p_nmCampo, p_codigoSQL, p_ordemform) 
{
  //alert(p_ordemform)
   p_nmForm.target = p_nmFrame_escondido;
   p_nmForm.action = '../include/ap_popula_filtros.asp?p_nmFuncao=' + p_nmFuncao + '&p_NmCombo=' + p_nmCampo + '&p_codigoSQL=' + p_codigoSQL + '&p_ordemform=' + p_ordemform ;
   p_nmForm.submit();
 return true;  
}

/**************************************************************
 Funcao para adicionar valores de combo p/ combo
 onchage="PapulaCombo(document.oForm.cb_Empregado,document.oForm.cd_grupo_func);"
 parâmetor: combo origem e combo de destino
*************************************************************/	
function PopulaCombo(origem, destino) 
//function insereItemCombo( origem,  destino )
  {
      var qtdexiste = 0;
      if (origem.selectedIndex >= 0 )
      {
      for ( lnx = 0 ;  lnx < origem.length  ; lnx++ )
      {
         
          if ( (origem.options[ lnx ].selected ) && ( !fn_procuravalor( destino, origem.options[ lnx ].value ) ) )
          {
	         destino.length =  destino.length + 1;
	         destino.options[ destino.length -1 ].value = origem.options[ lnx ].value;
	         destino.options[ destino.length -1 ].text = origem.options[ lnx ].text;

          }
          else 
          {
            qtdexiste++;
          }
      }	
      } 
      
      
  }
  
  
/**************************************************************
 Funcao que remove item do Combo aberto
 Parametros : src -> objeto
			  cor -> cor
			  strTxt -> 
			  tipo_cursor -> tipo do cursor
*************************************************************/							  
    
  function removeItemCombo( campo ) 
  {
		
      if ( campo.selectedIndex >= 0 )
         campo.options[ campo.selectedIndex ] = null;
				  
  }  

  
  
function fn_procuravalor( objeto, valor )
{
   existe = false;
   for ( lny = 0 ;  ((lny < objeto.length) && (!existe))  ; lny++ )
   {
       if ( objeto.options[ lny ].value == valor ) 
       {
	   existe = true;
       }
      }
   return existe;


}  
/**************************************************************
funcao para ordenar combo
***************************************************************/

function ordenaCombo(field,acao)
{  
 	var tmp = 0;
	var retorno = false;
	if ((acao.toLowerCase() == 'cima') && (field.options[field.selectedIndex].index != 0)) {
 		tmp = tmp - 1;
		retorno =  true;
	}
	else {
 		if ((acao.toLowerCase() == 'baixo') && (field.options[field.selectedIndex].index != field.options.length -1)){
			tmp = tmp + 1;
			retorno = true;
		}
 	}
	if (retorno){	
		//garda os textos e os values
		txselected = field.options[((field[field.selectedIndex].index))].text;
		txprox = field.options[((field[field.selectedIndex].index)+tmp)].text;
		vlselected = field.options[((field[field.selectedIndex].index))].value;
		vlprox = field.options[((field[field.selectedIndex].index)+tmp)].value;
		
		//faz a troca de acordo com a acao passada
		field.options[((field.options[field.selectedIndex].index))].text = txprox;
		field.options[((field.options[field.selectedIndex].index)+ tmp)].text = txselected;
		field.options[((field.options[field.selectedIndex].index))].value = vlprox;
		field.options[((field.options[field.selectedIndex].index)+tmp)].value = vlselected;
				
		field.selectedIndex = field.selectedIndex + tmp;
	 }
}


/*******************************************

Funcao usada para layers (oculpat layers...)

obs: Caso os valores de pTopo e pEsquerda sejam passados com valor "-1", sua posição na tela será centralizada

*********************************************/

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

/***************************************************

funcao que retorna o numero da qtd de %

**************************************************/

function RetornaPercentual_restante(Field, p_crme_pr_pagamento_total, p_msg)
{
 if (parseFloat(Field.value.replace(",",".")) > parseFloat(p_crme_pr_pagamento_total))
   {
    alert(p_msg);
	Field.focus();
    return false;
   }
 return true;
}



/****************************************************************
	Essa função deverá ser altera para atender as necessidades da página em questão. 
***************************************************************/

function ModalWindow( pagina, formelement, campo, titulo)
{  	
	if (formelement==""){
		janela = abreJanelaModal(pagina, titulo, 220, 250, -1, -1, campo);
	}
	else{
		var data;
		if (!isDate(campo)) {
		 return false;
		}		
		data=formelement.split("/");
		janela = abreJanelaModal(""+pagina+"?diam="+data[0]+"&mesa="+data[1]+"&anoa="+data[2]+"", titulo, 220, 250, -1, -1, campo);
	}
}  


/************************************************************************************
Parâmetros:
    field --> o nome do objeto do formulario
*************************************************************************************/

function mascara_moeda(field){
        //Arredondando o valor para duas casas decimais
        field.value = (Math.round((parseFloat(field.value))*100))/100;
        var cont = 0;
        var tam = (field.value).length;
        var flag_negativo = false;
        if ((tam == 0) || (field.value == '') || (isNaN(field.value)))
        {
           field.value = '0,00';
           return false;
         }else if(field.value < 0){//caso o numero seja negativo
                  field.value = (field.value)*(-1)
                  flag_negativo = true;
               }
       
        // varre todas as casas 
        for(i=1; i <= tam; i++)
        {
            if((field.value).substring(i-1,i) == '.'){
                field.value = (field.value).replace(".",",");
                cont = 0;//contar o numero de casas decimais
            }
            cont++;
        }
        if(cont == tam) //caso nao tenha casas decimais
            field.value = field.value + ',00';
        else
            if(cont == 2)//caso o numero esteja no formato '999.9' coloca '0' no final
                field.value = field.value + '0';
            
        tam = (field.value).length//atualiza tam
        cont = 0;
        
        for(j = tam - 3; j > 1; j--)
        {   
            cont++;            
            if((cont % 3) == 0){
               field.value = ((field.value).substring(0,j-1))+'.'+((field.value).substring(j-1,(field.value).length+1));//coloca '.' a cada 3 algarismos depois da virgula
            }   
        }
        if(flag_negativo)//se numero negativo
            field.value = '-'+field.value;
}
/************************************************************************************
Parâmetros:
    p_valor   --> o nome do objeto do formulario
	p_char    --> caracter que vai ser substituido
	p_charNew --> caracter substituto
*************************************************************************************/
function replaceAll(p_valor, p_char, p_charNew){
	p_valor_old = '';
    while(p_valor_old != p_valor){
		p_valor_old = p_valor;
		p_valor = p_valor.replace(p_char, p_charNew);
	}
	return p_valor;
}
/************************************************************************************
Parâmetros:
    p_field      --> o nome do objeto do formulario
	p_descricao  --> string que vai definir da descricao
*************************************************************************************/
function limpa_combo(p_field,p_descricao) {
    p_field.length = 1;
    p_field.options[p_field.length-1].text = p_descricao;
    p_field.options[p_field.length-1].value = '';
}
/*******************************************************************
Abre Janela MODAL Retorna 2 valores
Parâmetros:

	pPagina: 	Nome da página que será aberta na janela Modal
	pnmJanela: 	Nome da janela
	pLargura: 	Largura da janela
	pAltura: 	Altura da janela
	pTopo: 		Distância em relação ao topo
	pEsquerda: 	Distância em relação a lateral esquerda
    campo:      Campo para retorno
    campo_hd:   Campo hidden para segundo retorno
	pscrioll: se tiver scrol (1 ou 0)

obs: Caso os valores de pTopo e pEsquerda sejam passados com valor "-1", sua posição na tela será centralizada
***********************************************************************/
function abreJanelaModal_dois_retornos( pPagina, pnmJanela, pLargura, pAltura, pTopo, pEsquerda, campo, campo_hd, pscroll){
	var ltxtaux; 
    var i=0;
	if ( ( pAltura == -1 ) || ( pEsquerda == -1 ) ) 
		ltxtaux = ";center:1";
	else   
		ltxtaux = ";dialogTop:"+pTopo+"px;dialogLeft:"+pEsquerda+"px"; 
//		window.open(pPagina)
	rvalor = window.showModalDialog( pPagina, pnmJanela, "dialogWidth:"+pLargura+"px;dialogHeight:"+pAltura+"px;scroll:"+pscroll+";help:0;status:0"+ltxtaux );
	if ((rvalor!="")&&(rvalor!=null)){        
        while ((i<rvalor.length)&&(rvalor.charAt(i) != '#'))
             i++;
        campo.value    = rvalor.substring(0,i);
        campo_hd.value = rvalor.substring(i+1,rvalor.lenght)
        
	}
}
/**************************************************************
 Funcao que verifica se uma data eh válida no formato mm/aaaa
 Parametros : objdata --> objeto do form de data (campo de data)

*************************************************************/							  

function isDateMesAno(objdata){
	if ((objdata.value.length < 7) || (objdata.value.length == "")) {
		alert("Data inválida. Formato indicado: mm/aaaa. Ex: 01/2002");
		objdata.focus();
		return false;
	}
	mes = objdata.value.substr(0,2);    
	ano = objdata.value.substr(3,7);
    if  ((isNaN(parseInt(mes)) || isNaN(parseInt(ano))) ||
		(ano < 1900 || ano > 9999) ||
        (mes < 1 || mes > 12))  {
			alert("Data inválida! Informe uma data válida.");
			objdata.focus();
			return false;
    }else {
            return true;
    }
}
/****************************************************************
	Essa função deverá ser altera para atender as necessidades da página em questão. 
***************************************************************/

function ModalWindowMesAno( pagina, formelement, campo, titulo)
{  	
	if (formelement==""){
		janela = abreJanelaModal(pagina, titulo, 200, 230, -1, -1, campo);
	}
	else{
		var data;
		if (!isDateMesAno(campo)) {
		 return false;
		}		
		data=formelement.split("/");
		janela = abreJanelaModal(""+pagina+"?mesa="+data[0]+"&anoa="+data[1]+"", titulo, 200, 230, -1, -1, campo);
	}
}

/*********************************************************************************
    Muda cor da Linha na tabela para as listas
**********************************************************************************/

var marked_row = new Array;

function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3

    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == ''
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor              = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
             && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        if (theAction == 'out') {
            newColor              = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor              = (thePointerColor != '')
                                  ? thePointerColor
                                  : theDefaultColor;
            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  ? true
                                  : null;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5

    return true;
} // end of the 'setPointer()' function

/*
 * Sets/unsets the pointer and marker in vertical browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 *
 * @author Garvin Hicking <me@supergarv.de> (rewrite of setPointer.)
 */
function setVerticalPointer(theRow, theRowNum, theAction, theDefaultColor1, theDefaultColor2, thePointerColor, theMarkColor) {
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;

    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        domDetect    = false;
    } // end 3

    var c = null;
    // 5.1 ... with DOM compatible browsers except Opera
    for (c = 0; c < rowCellsCnt; c++) {
        if (domDetect) {
            currentColor = theCells[c].getAttribute('bgcolor');
        } else {
            currentColor = theCells[c].style.backgroundColor;
        }

        // 4. Defines the new color
        // 4.1 Current color is the default one
        if (currentColor == ''
            || currentColor.toLowerCase() == theDefaultColor1.toLowerCase() 
            || currentColor.toLowerCase() == theDefaultColor2.toLowerCase()) {
            if (theAction == 'over' && thePointerColor != '') {
                newColor              = thePointerColor;
            } else if (theAction == 'click' && theMarkColor != '') {
                newColor              = theMarkColor;
                marked_row[theRowNum] = true;
            }
        }
        // 4.1.2 Current color is the pointer one
        else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
                 && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
            if (theAction == 'out') {
                if (c % 2) {
                    newColor              = theDefaultColor1;
                } else {
                    newColor              = theDefaultColor2;
                }
            }
            else if (theAction == 'click' && theMarkColor != '') {
                newColor              = theMarkColor;
                marked_row[theRowNum] = true;
            }
        }
        // 4.1.3 Current color is the marker one
        else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
            if (theAction == 'click') {
                newColor              = (thePointerColor != '')
                                      ? thePointerColor
                                      : ((c % 2) ? theDefaultColor1 : theDefaultColor2);
                marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                      ? true
                                      : null;
            }
        } // end 4

        // 5. Sets the new color...
        if (newColor) {
            if (domDetect) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            }
            // 5.2 ... with other browsers
            else {
                theCells[c].style.backgroundColor = newColor;
            }
        } // end 5
    } // end for

     return true;
     
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

}

function writeFlash( targetFlash, widthFlash, heightFlash, backFlash  ) {
	document.write( '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="' + widthFlash + '" height="' + heightFlash + '">');
	document.write( '<param name="allowScriptAccess" value="sameDomain" />' );
	document.write( '<param name="movie" value="' + targetFlash + '">' );
	document.write( '<param name="quality" value="high">' );
	document.write( '<param name="menu" value="false">' );
	
	if ( backFlash ) {
		document.write( '<param name="bgcolor" value="' + backFlash + '">' );
		document.write( '<embed src="' + targetFlash + '" quality="high" bgcolor="' + backFlash + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + widthFlash + '" height="' + heightFlash + '"></embed>' );
	} else {
		document.write( '<param name="wmode" value="transparent">' );
		document.write( '<embed src="' + targetFlash + '" quality="high" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + widthFlash + '" height="' + heightFlash + '"></embed>' );
	}
		
	document.write( '</object>' );
}

