
/*--------------------------------------------------------------------------
ESPECIFICAÇÃO DAS FUNÇÕES:		

ex.: Nome_da_Funcao(parametroA, parametroB, ...) ............... Retorno
(-) é o que já está implementado e testado;
(+) ainda nao foi implementado/testado

- ehNumero(numero) .............................................. true/false
- soNumero(event) ............................................... nada
- soMoeda(campo, event) ......................................... nada
- ehData(data) .................................................. true/false
- ehHora(campo) ................................................. true/false
+ ehTexto(event) ................................................ true/false
- soTexto(texto) ................................................ nada
- abrePopup(pagina,nome,propriedades)	........................... nada
 	propriedades: height=500,width=600,status=no,toolbar=no
- converteDataUSAFormat(data) ................................... data	
- comparaData(dataMenor, dataMaior) ............................. true/false
+ comparaHora(horaMenor, horaMaior) ............................. true/false
+ comparaNumero(numMenor, numMaior) ............................. true/false 
- formataData(Campo,teclapres) .................................. nada
- formataHora(Campo,teclapres) .................................. nada 
+ formataMoeda(Campo,teclapres) ................................. nada 

-------------------------------------------------------------------------*/

function ehNumero(numero){
	for (var i = 0; i < numero.length; i++) {
		var oneChar = numero.substring(i, i + 1)
		if (oneChar < "0" || oneChar > "9") {
			return false;
   	}
	}
	return true;
}

//=========================================================================

function soNumero(evento){
	chars= "0123456789";
    evento = window.event;
   	if((chars.indexOf(String.fromCharCode(evento.keyCode))==-1) && (evento.keyCode != 13)) // 13 eh o codigo do ENTER 
   	{
   		window.event.keyCode=0;
	}
}

//=========================================================================

function soMoeda(campo, evento){
	valor = campo.value
	chars= "0123456789,";
    evento = window.event;
	
   	if(chars.indexOf(String.fromCharCode(evento.keyCode))==-1) 
   	{
   		window.event.keyCode=0;
	}
}

//=========================================================================

function ehData(objData, dsCampo){
	var DataP = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = objData.value.match(DataP);
	if (matchArray == null){
		alert("O campo "+dsCampo+ " deve estar no formato: dd/mm/aaaa.");
		objData.focus();
		return false;
	}
	dia = matchArray[1];
	mes = matchArray[3];
	ano = matchArray[4];
	//Validar o mês
	if (mes < 1 || mes > 12) { 
		alert("O campo "+dsCampo+ " deve estar com o mês entre 1 e 12.");
		objData.focus();
		return false;
	}
	//Validar o dia
	if (dia < 1 || dia > 31){
		alert("O campo "+dsCampo+ " deve estar com o dia entre 1 e 31.");
		objData.focus();
		return false;
	}
	//Validar dia em relação ao mês
	if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31){
		alert("Mês "+mes+" não tem 31 dias.")
		objData.focus();
		return false
	}
	//Validar ano bissexto
	if (mes == 2){ 
		var isleap = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
		if (dia>29 || (dia==29 && !isleap)){
			alert("Fevereiro de " + ano + " não tem " + dia + " dias.");
			objData.focus();
			return false;
		}
	}
	//Data válida - OK!
	return true;  
}

//=========================================================================

function ehHora(campo){
	var Hora, tam;
	tam = campo.value;
	tam = tam.length;
	if (campo.value !=''){
		if (tam<5){
			alert("A hora deve estar no formato: hh:mm.")
			campo.focus();
			return false;
		}
		Hora	= campo.value;
		Hora2	= Hora.split(":");
		horap	= Hora2[0];
		minuto	= Hora2[1]; 
		if (minuto > 59 || minuto < 0){
			alert("O minuto deve estar entre 0 e 59.");
			campo.focus();
			return false;
		}
		if (horap < 0 || horap > 23){
			alert("A hora deve estar entre 0 e 23.");
			campo.focus();
			return false;
		}
		return true;
	}
}

//=========================================================================

function ehTexto(evento){

}

//=========================================================================

function soTexto(evento){
	chars= "abcdefghijklmnopqrstuvxzABCDEFGHIJKLMNOPQRSTUVXZáéíóúÁÉÍÓÚàèìòùÀÈÌÒÙâêôÂÊÔãõÃÕçÇ ";
    evento = window.event;
   	if(chars.indexOf(String.fromCharCode(evento.keyCode))==-1)
   	{
   		window.event.keyCode=0;
	}
}

//=========================================================================

function abrePopup(pagina,nome,propriedades){
	window.open(pagina,nome,propriedades);
}

//=========================================================================

function converteDataUSAFormat(data){
   return data.substr(3, 3)+data.substr(0, 3)+data.substr(6)
}

//=========================================================================

function comparaData(Inicio, Fim, msg){
    if ((Inicio.value!='')&&(Fim.value!='')) {
	if (ehData(Inicio.value, "data Inícial do Período")){  
		if (ehData(Fim.value, "data Final do Período")){  
		  if(Inicio.value == ""){
			alert('Você deve preencher a data de início.');
			return false;
		  }
		  if(Fim.value == ""){
			alert('Você deve preencher a data de retorno.');
			return false;
		  }
		  var dataini = Date.parse(converteDataUSAFormat(Inicio.value));
		  var datafim = Date.parse(converteDataUSAFormat(Fim.value));
		  var r = dataini - datafim;
	      r = r/(1000 * 60 * 60 * 24);
		  if(r > 0){
			 if (msg==2){
				 alert('Data inicial deve ser maior ou igual a data final.');
			 }else{
				 alert('Data de retorno deve ser maior ou igual a data de saída.');
	         }
		    
			Fim.focus();
			return false;
		}
		return true;
		}
		else {
			Fim.value="";
		}
	}
}
}

//=========================================================================

function comparaHora(horaMenor, horaMaior){

}

//=========================================================================

function comparaNumero(numMenor, numMaior){

}

//=========================================================================

function formataData(Campo,teclapres){
	var tecla = teclapres.keyCode;
	vr = Campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			Campo.value = vr.substring( 0, tam - 1  ) + '/' + vr.substr( tam - 1, tam );
		if ( tam >= 5 && tam <= 10 )
			Campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}
}

//=========================================================================

function formataHora(Campo,teclapres){
	var tecla = teclapres.keyCode;
	vr = Campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( ":", "" );
	vr = vr.replace( ",", "" );
	tam = vr.length + 1;
	if ( tecla != 4 && tecla != 5 ){
		if ( tam > 2 && tam < 5 )
			Campo.value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
	}
}

//=========================================================================

function mudaFigura(figura,imagem)
{
	if(document.images){document.images[figura].src=imagem}
}

//===============================================================================
//===============================================================================
//===============================================================================
//===============================================================================


bCancel = false;

function checkTodos(obj) { 
  vetorChecks = document.forms[0].getElementsByTagName('input'); 
  for (i=0; i < vetorChecks.length; i++) { 
    if (vetorChecks[i].type == 'checkbox') { 
      vetorChecks[i].checked = obj.checked; 
    } 
  } 
}
// *-*-*-*-*-*-*-*-*-*-*-* BEGIN Máscaras *-*-*-*-*-*-*-*-*-*-*-*
  function retornaTecla(evento){
    if (document.all) {
      return String.fromCharCode(evento.keyCode);
    } else if (evento.which) {
      return String.fromCharCode(evento.charCode);
    }
  }
  
  function valida_cpf(cpf) 
      { 
      var numeros, digitos, soma, i, resultado, digitos_iguais; 
      digitos_iguais = 1; 
      if (cpf.length < 11) 
            return false; 
      for (i = 0; i < cpf.length - 1; i++) 
            if (cpf.charAt(i) != cpf.charAt(i + 1)) 
                  { 
                  digitos_iguais = 0; 
                  break; 
                  } 
      if (!digitos_iguais) 
            { 
            numeros = cpf.substring(0,9); 
            digitos = cpf.substring(9); 
            soma = 0; 
            for (i = 10; i > 1; i--) 
                  soma += numeros.charAt(10 - i) * i; 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(0)) 
                  return false; 
            numeros = cpf.substring(0,10); 
            soma = 0; 
            for (i = 11; i > 1; i--) 
                  soma += numeros.charAt(11 - i) * i; 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(1)) 
                  return false; 
            return true; 
            } 
      else 
            return false; 
      } 
 

  function valida_cnpj(cnpj) 
      { 
      var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais; 
      digitos_iguais = 1; 
      if (cnpj.length < 14 && cnpj.length < 15) 
            return false; 
      for (i = 0; i < cnpj.length - 1; i++) 
            if (cnpj.charAt(i) != cnpj.charAt(i + 1)) 
                  { 
                  digitos_iguais = 0; 
                  break; 
                  } 
      if (!digitos_iguais) 
            { 
            tamanho = cnpj.length - 2 
            numeros = cnpj.substring(0,tamanho); 
            digitos = cnpj.substring(tamanho); 
            soma = 0; 
            pos = tamanho - 7; 
            for (i = tamanho; i >= 1; i--) 
                  { 
                  soma += numeros.charAt(tamanho - i) * pos--; 
                  if (pos < 2) 
                        pos = 9; 
                  } 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(0)) 
                  return false; 
            tamanho = tamanho + 1; 
            numeros = cnpj.substring(0,tamanho); 
            soma = 0; 
            pos = tamanho - 7; 
            for (i = tamanho; i >= 1; i--) 
                  { 
                  soma += numeros.charAt(tamanho - i) * pos--; 
                  if (pos < 2) 
                        pos = 9; 
                  } 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(1)) 
                  return false; 
            return true; 
            } 
      else 
            return false; 
      } 
  
	
  function validarCnpjCpf(nomeField, campo){
    if (nomeField == '' ) { return true; }
    if ((nomeField.length != 14 ) && (nomeField.length != 11 ) ) {
      alert("Número inválido de caracteres no campo " + campo);
      return false;
     } else { 
          if (nomeField.length == 11 ){
              if (!valida_cpf(nomeField)) {
                 alert("O " + campo +" informado está inválido.");
                 return false;
                 }           
          }else { 
              if (nomeField.length == 14 ) {
                 if (!valida_cnpj(nomeField)) {
                    alert("O " + campo +" informado está inválido.");
                    return false;
                 }
              }
           }
      
      }
          return true;
           
     }       
  
  function TeclaValida(evento){
     var tecla = 0,
     BCK=8,
     ENTER=13,
     DEL=127,
     LEFT=37,
     RIGHT=39,
     caracteres = '0123456789';
     
    tecla = retornaTecla(evento);
          
    if (caracteres.indexOf(tecla) != -1) {
      return true;
    }
    return false;
  }
  
  function mascaraData(objeto, evento, botao){
    var BCK=8,
        ENTER=13,
        DEL=127,
        LEFT=37,
        RIGHT=39
    if (evento.keyCode == ENTER) {
      submeterNoEnter(botao,evento);
      return true;
    } else if (document.getElementById) {
      switch (evento.which) {
         case ENTER:
            submeterNoEnter(botao,evento);
         case BCK:
         case DEL:
         case LEFT:
         case RIGHT:
            return true;
      }
    }
    if (TeclaValida(evento)==true){
      if((objeto.value.length == 2) || (objeto.value.length == 5)){
        objeto.value += '/';
      }/*else if (objeto.value.length == 5){
        objeto.value +='/';
      }*/
      return true;
    }
    return false;
  }
  function mascaraCEP(objeto, evento, botao){
    var BCK=8,
        ENTER=13,
        DEL=127,
        LEFT=37,
        RIGHT=39
    if (evento.keyCode == ENTER) {
      submeterNoEnter(botao,evento);
      return true;
    } else if (document.getElementById) {
      switch (evento.which) {
         case ENTER:
            submeterNoEnter(botao,evento);
         case BCK:
         case DEL:
         case LEFT:
         case RIGHT:
            return true;
      }
    }
    
    if (TeclaValida(evento)==true){
      if (objeto.value.length == 2){
        objeto.value += '.'
      }else if (objeto.value.length == 6){
        objeto.value += '-'
      }
      return true;
    }
  }
  
  function mascaraTelefone(objeto, evento, botao){
    var tecla = 0,
        BCK=8,
        ENTER=13,
        DEL=127,
        LEFT=37,
        RIGHT=39,
        HOME=0,
        END=35,
        caracteres = '0123456789'
    if (evento.keyCode == ENTER) {
      submeterNoEnter(botao,evento);
      return true;
    } else if (document.getElementById) {
      switch (evento.which) {
         case ENTER:
            submeterNoEnter(botao,evento);
         case BCK:
         case DEL:
         case LEFT:
         case RIGHT:
            return true;
      }
    }
    if (!objeto.value[0] == '('){ objeto.value[0] = '(';}
    if ((objeto.value.length != 0)&&(objeto.value.length == objeto.selectionEnd) && (objeto.selectionStart == 0)){
      if (caracteres.indexOf(retornaTecla(evento)) != -1) {
          objeto.value = '';
          //return false;
        }
      switch (evento.which){            
        case BCK: case DEL:
          objeto.value = '';
          //return false;
      }
    }
    
    if (objeto.value.length == 14){
      return false;
    }
    if (TeclaValida(evento)==true){
      if (objeto.value.length == 0){
        objeto.value = '(';
      }else if (objeto.value.length == 3){
        objeto.value +=')';
      }else if (objeto.value.length == /*8*/10){
        //objeto.value +='-';
        objeto.value = objeto.value.substring(0,7)+'-'+objeto.value.substring(7,12);
      }else if (objeto.value.length == 12){
        objeto.value = objeto.value.substring(0,7)+objeto.value.substring(8,9)+'-'+objeto.value.substring(9,12);
      }
      return true;
    }else{
      //alert("false")
      return false;
    }
  }



function submeter(action) { 
  if (action != '') { 
    document.forms[0].action = action;     
    document.forms[0].submit();     
    return true; 
  } else {
    return false; 
  }
} 

function validaEditDetalhes(newMethod,check) {
  vetorChecks = document.forms[0].getElementsByTagName('input'); 
  qtdChecados = 0; 
  for (i=0; i < vetorChecks.length; i++) { 
    if (vetorChecks[i].type=='checkbox' && vetorChecks[i].name != check && vetorChecks[i].alt != "naoValida") { 
      if (vetorChecks[i].checked) { 
        qtdChecados++; 
      } 
    } 
  } 
  if (qtdChecados > 1) { 
    alert('Selecione apenas um item!'); 
    return false; 
  } 
  if (qtdChecados == 0) { 
    if (newMethod == 'editar') { 
      alert('Selecione um item para ser editado!'); 
    } else if (newMethod == 'detalhar') { 
      alert('Selecione um item para ser detalhado!'); 
    } 
    return false; 
  } 
  return true; 
} 

function validaExcluir(check) { 
  vetorChecks = document.forms[0].getElementsByTagName('input'); 
  qtdChecados = 0; 
  for (i=0; i < vetorChecks.length; i++) { 
    if (vetorChecks[i].type == 'checkbox' && vetorChecks[i].name != check){ 
      if (vetorChecks[i].checked) { 
        qtdChecados++; 
      } 
    } 
  } 
  if (qtdChecados < 1 && check != '' && check != null) { 
    alert('Selecione um item para ser excluído!'); 
    return false; 
  } 
  if (qtdChecados > 1) {
     return confirm('Tem certeza que deseja excluir os ítens selecionados?');
  } else {
     return confirm('Tem certeza que deseja excluir o item selecionado?');
  }
}


function setMethod(newMethod,check,action) { 
  vetorChecks = document.forms[0].getElementsByTagName('input'); 
  qtdChecados = 0; 
  
  trimTodos();
  
  if ( (newMethod == "editar" || newMethod == "excluir" || newMethod == "detalhar")
        && check == "SEM_CHECK" && action != "") {   
     document.forms[0].method.value = newMethod; 
     if (newMethod == "excluir") {
      if (confirm ("Deseja realmente excluir este registro?")) {
        submeter(action);
        return true;
      }
     } else {     
      submeter(action); 
      return true;
     }
     return false; 
  }
  
  for (i=0; i < vetorChecks.length; i++) { 
    if (vetorChecks[i].type == 'checkbox'){ 
      if (vetorChecks[i].checked) { 
        qtdChecados++; 
      } 
    } 
  } 
  if (newMethod == '' || newMethod == null) { 
    return false; 
  } 
  if ( newMethod == 'editar' || newMethod == 'excluir' || newMethod == 'detalhar' 
    || newMethod == 'pesquisar' || newMethod == 'navegar' || newMethod == 'incluir' 
    || newMethod.substring(0, 7) == 'alterar' || newMethod == 'visualizar' 
    || newMethod == 'reenviarSenha' || newMethod == 'pesquisarValidar') { 
    if ( newMethod.substring(0, 7) != 'alterar' && newMethod != 'incluir' && newMethod != 'pesquisar' 
      && newMethod != 'navegar' && newMethod != 'visualizar' && newMethod != 'reenviarSenha'
      && newMethod != 'pesquisarValidar' && (check == '' || check == null) ) { 
      if (qtdChecados == 0) { 
        if (newMethod == 'excluir') { 
          if (validaExcluir('')) { 
            document.forms[0].method.value = newMethod; 
          } else {
            return false;
          }
        } else if (newMethod == 'editar') { 
          document.forms[0].method.value = newMethod; 
        } 
        document.forms[0].submit(); 
      } else { 
        return false; 
      } 
    } else if (newMethod == 'editar' || newMethod == 'detalhar') { 
      if (validaEditDetalhes(newMethod,check)) { 
        document.forms[0].method.value = newMethod;
        submeter(action); 
        return true; 
      } else {
        return false; 
      }
    } else if (newMethod == 'excluir') { 
      if (validaExcluir(check)) { 
        document.forms[0].method.value = newMethod; 
        submeter(action); 
        return true; 
      } else {
        return false; 
      }
    } else if (newMethod == 'pesquisar' || newMethod == 'visualizar' || newMethod == 'navegar') { 
      document.forms[0].method.value = newMethod; 
      document.forms[0].submit(); 
    } else if (newMethod == 'pesquisarValidar' || newMethod == 'incluir' || newMethod.substring(0, 7) == 'alterar' 
              || newMethod == 'reenviarSenha') {
      if (newMethod == 'pesquisarValidar'){
        document.forms[0].method.value = newMethod.substring(0, 9);       
      } else{
        document.forms[0].method.value = newMethod; 
      }
      
      if (bCancel == true) {
        document.forms[0].method.value = newMethod; 
        document.forms[0].submit(); 
      } else if (validarForm(document.forms[0])) {
        
        document.forms[0].submit(); 
      } else {
       
        return false;
      }
    }
  } else if (newMethod == 'novo') { 
    document.forms[0].method.value = newMethod; 
    submeter(action); 
  } else { 
    document.forms[0].method.value = newMethod; 
    document.forms[0].submit(); 
  } 
} 


function recuar() { 
  pagina = document.forms[0].pagina.value; 
  pagina--; 
  document.forms[0].pagina.value = pagina; 
  setMethod('navegar','',''); 
} 

function avancar() { 
  pagina = document.forms[0].pagina.value; 
  pagina++; 
  document.forms[0].pagina.value = pagina; 
  setMethod('navegar','',''); 
} 

function irPara(pagina){
  campos  = document.forms[0].getElementsByTagName('input');
  action = pagina; 
  
  for (i=0; i < campos.length; i++) { 
     if(campos[i].name == 'proxima_pagina') { 
       document.forms[0].pagina.value = campos[i].value;       
       setMethod('navegar','',''); 
       break; 
     }
   
     if (i == campos.length) { 
        alert('O nome do campo que contém o valor da página que deseja-se ir deve se chamar proxima_pagina'); 
        return false; 
     } 
  }     
 
  submeter(action); 
} 

function validaEditarSemCheck(obj) { 
  vetorChecks = document.forms[0].getElementsByTagName('input'); 
  quantidade = 0; 
  document.forms[0].method.value = 'editar'; 
  for (i = 0; i < vetorChecks.length; i++) { 
    if (vetorChecks[i].type == 'checkbox') { 
      if (vetorChecks[i].checked) { 
        vetorChecks[i].checked = false; 
      } else if (vetorChecks[i] == obj) return false; 
    } 
  } 
  obj.checked = true; 
} 

/**
  * Esta função deve ser chamada na tag form da seguinte forma:
  * onsubmit="trimTodos();"
  */
function trimTodos() {
  camposInput = document.forms[0].getElementsByTagName('input');
  textsArea = document.forms[0].getElementsByTagName('textarea');

  for (i=0;i<camposInput.length;i++) {
     if (camposInput[i].type == 'text' || camposInput[i].type == 'password') {
        camposInput[i].value = trimEspacos(camposInput[i]);
     }
  } 
  
  for (j=0;j<textsArea.length;j++) {
     textsArea[j].value = trimEspacos(textsArea[j]);
  }
}

function trimEspacos(obj) {
   return obj.value.replace(/^\s+/,"").replace(/\s+$/,"");
}

function trimZeros(valor) {
   return valor.replace(/^0+/,"");
}


function caracteresAceitos(caracteres,evento,botao) {
   var tecla = 0,
   BCK=8,
   ENTER=13,
   DEL=127,
   LEFT=37,
   RIGHT=39;

   if (document.all) {
      tecla = String.fromCharCode(evento.keyCode);
   } else if (evento.which) {
      tecla = String.fromCharCode(evento.charCode);
   }

   if (evento.keyCode == ENTER) {
      submeterNoEnter(botao,evento);
      return true;
   } else if (document.getElementById) {
      switch (evento.which) {
         case ENTER:
            submeterNoEnter(botao,evento);
         case BCK:
         case DEL:
         case LEFT:
         case RIGHT:
            return true;
      }
   }
   
   if (caracteres.indexOf(tecla) != -1) {
      return true;
   }

   return false;
}

function validarCombo(obj) {
   if (document.forms[0].elements[obj].value == "") {
      alert("O campo Situação é obrigatório!");
      obj.focus();
      return false;
   }
   
   return true;
}



function submeterNoEnter(obj,evento) {
   var tecla = 0,
   BCK=8,
   ENTER=13,
   DEL=127,
   LEFT=37,
   RIGHT=39;      

   if (document.all) {
      tecla = String.fromCharCode(evento.keyCode);
   } else if (evento.which) {
      tecla = String.fromCharCode(evento.charCode);
   }
   
   if (document.all) {
      if (evento.keyCode == ENTER) {
         trimTodos();
         document.all[obj].click();
      }   
   } else if (document.getElementById) {
      switch (evento.which) {
         case ENTER:
            trimTodos();
            elementos = document.forms[0].getElementsByTagName('img');
            
            for (i=0;i<elementos.length;i++) {
               if (elementos[i].id == obj) {
                  elementos[i].onclick();
               }
            }
      }
   }
}


function validateDate(form) {
               var bValid = true;
               var focusField = null;
               var i = 0;
               var fields = new Array();
               oDate = new DateValidations();
               for (x in oDate) {
                   var value = form[oDate[x][0]].value;
                   var datePattern = oDate[x][2]("datePatternStrict");
                   if ((form[oDate[x][0]].type == 'text' ||
                        form[oDate[x][0]].type == 'textarea') &&
                       (value.length > 0) &&
                       (datePattern.length > 0)) {
                     var MONTH = "MM";
                     var DAY = "dd";
                     var YEAR = "yyyy";
                     var orderMonth = datePattern.indexOf(MONTH);
                     var orderDay = datePattern.indexOf(DAY);
                     var orderYear = datePattern.indexOf(YEAR);
                     if ((orderDay < orderYear && orderDay > orderMonth)) {
                         var iDelim1 = orderMonth + MONTH.length;
                         var iDelim2 = orderDay + DAY.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderDay && iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{1,2})(\\d{1,2})(\\d{4})$");
                         } else if (iDelim1 == orderDay) {
                            dateRegexp = new RegExp("^(\\d{1,2})(\\d{1,2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{1,2})[" + delim1 + "](\\d{1,2})(\\d{4})$");
                         } else {
                            dateRegexp = new RegExp("^(\\d{1,2})[" + delim1 + "](\\d{1,2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                            if (!isValidDate(matched[2], matched[1], matched[3])) {
                               if (i == 0) {
                                   focusField = form[oDate[x][0]];
                               }
                               fields[i++] = oDate[x][1];
                               bValid =  false;
                            }
                         } else {
                            if (i == 0) {
                                focusField = form[oDate[x][0]];
                            }
                            fields[i++] = oDate[x][1];
                            bValid =  false;
                         }
                     } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                         var iDelim1 = orderDay + DAY.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{1,2})(\\d{1,2})(\\d{4})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{1,2})(\\d{1,2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{1,2})[" + delim1 + "](\\d{1,2})(\\d{4})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{1,2})[" + delim1 + "](\\d{1,2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[1], matched[2], matched[3])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                 }
                                 fields[i++] = oDate[x][1];
                                 bValid =  false;
                              }
                         } else {
                             if (i == 0) {
                                 focusField = form[oDate[x][0]];
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                         }
                     } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                         var iDelim1 = orderYear + YEAR.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{1,2})(\\d{1,2})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{1,2})[" + delim2 + "](\\d{1,2})$");
                         } else if (iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{1,2})(\\d{1,2})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{1,2})[" + delim2 + "](\\d{1,2})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[3], matched[2], matched[1])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                  }
                                  fields[i++] = oDate[x][1];
                                  bValid =  false;
                              }
                          } else {
                              if (i == 0) {
                                  focusField = form[oDate[x][0]];
                              }
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                          }
                     } else {
                         if (i == 0) {
                             focusField = form[oDate[x][0]];
                         }
                         fields[i++] = oDate[x][1];
                         bValid =  false;
                     }
                  }
               }
               if (fields.length > 0) {
                  focusField.focus();
                  alert(fields.join('\n'));
               }
               return bValid;
            }

            function isValidDate(day, month, year) {
                if (month < 1 || month > 12) {
                    return false;
                }
                if (day < 1 || day > 31) {
                    return false;
                }
                if ((month == 4 || month == 6 || month == 9 || month == 11) &&
                    (day == 31)) {
                    return false;
                }
                if (month == 2) {
                    var leap = (year % 4 == 0 &&
                               (year % 100 != 0 || year % 400 == 0));
                    if (day>29 || (day == 29 && !leap)) {
                        return false;
                    }
                }
                // Validacoes implementadas para o tipo SMALLDATETIME do SQLServer 7
                if ((year < 1900) || (year > 2079)) {
                    return false;
                }
                if (year == 2079) {
                    if (month > 6) {
                        return false;
                    }
                    if ((month == 6) && (day > 6)) {
                        return false;
                    }
                }
                return true;
            }

function validateEmail(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oEmail = new email();
                for (x in oEmail) {
                    if ((form[oEmail[x][0]].type == 'text' ||
                         form[oEmail[x][0]].type == 'textarea') &&
                        (form[oEmail[x][0]].value.length > 0)) {
                        if (!checkEmail(form[oEmail[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oEmail[x][0]];
                            }
                            fields[i++] = oEmail[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
             * http://javascript.internet.com
             */
            function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
               var emailPat=/^(.+)@(.+)$/;
               var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
               var validChars="\[^\\s" + specialChars + "\]";
               var quotedUser="(\"[^\"]*\")";
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
               var atom=validChars + '+';
               var word="(" + atom + "|" + quotedUser + ")";
               var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
               var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
               var matchArray=emailStr.match(emailPat);
               if (matchArray == null) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i <= 4; i++) {
                      if (IPArray[i] > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,"g");
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length < 2) ||
                   (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len < 2) {
                   return false;
               }
               return true;
            }


// -- ************************************************************************************************
// -- Funcao que valida se a hora eh ou nao valida

// -- ************************************************************************************************
// -- Funcao que valida se o numero eh ou nao valido
function isValidNumber(obj) {
	var numeros = '0123456789'
	var num
	var ponto = 0
	var i = 0
	var result = 0
		numStr = obj.value
		for (i;i<numStr.length;i++){
		   temp = numStr.substring(i, i + 1)
		   result = numeros.indexOf(temp)
		   if (result==10) { ponto++ }
		   if ((result==-1) || (ponto>1)) {
			  alert('O campo selecionado não possui um número válido')
			  obj.focus();
			  return obj.value
			  return false
		   }
		}
		return obj.value
}

function validaCampoLogin(campo, msg){
	var abc= new String("!\"#$%&'()*+,-/:;<=>?@[\]^`{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ");
	var s=campo.value;
	for (var i=0;i<abc.length;i++){
		if (s.indexOf(abc.substr(i, 1))>-1){
			alert(msg);
			campo.focus();
			return false;
			}
	}
	return true;
}

/* =========== Uso da funcao checa_aspas ==================================

for (var i=0; i<document.forms[0].elements.length; i++){
if (!checa_aspas(document.forms[0].elements[i])){
alert('Por Favor, não utilize aspas simples !');
document.forms[0].elements[i].focus();
return false;
}
}

========================================================================= */

function checa_aspas(campo)
{

var str = campo.value;
var newstr = str.replace(/'/g, "´");
campo.value=newstr;
return true;

}

function substitui_aspas_aspasdupla(campo)
{
var str = campo.value;
var newstr = str.replace(/'/g, "\"");
campo.value=newstr;
return true;
}

// -- ************************************************************************************************
// Função que valida CPF ou CNPJ
// -- ************************************************************************************************


function Mascara (formato, keypress, objeto){
campo = eval (objeto);

// cep
if (formato=='cep'){
	separador = '-';
	conjunto1 = 5;
	
	if (campo.value.length == conjunto2){
		campo.value = campo.value + separador;
	}
	
	if (campo.value.length == conjunto1){
		campo.value = campo.value + separador;
	}
}

// cpf
if (formato=='cpf'){
	separador1 = '.'; 
	separador2 = '-'; 
	conjunto1 = 3;
	conjunto2 = 7;
	conjunto3 = 11;

	if (campo.value.length == conjunto1) {
		campo.value = campo.value + separador1;
	}

	if (campo.value.length == conjunto2){
		campo.value = campo.value + separador1;
	}
	
	if (campo.value.length == conjunto3){
		campo.value = campo.value + separador2;
	}
}


// nascimento
if (formato=='nascimento'){
	separador = '/'; 
	conjunto1 = 2;
	conjunto2 = 5;
	if (campo.value.length == conjunto1){
		campo.value = campo.value + separador;
	}

	if (campo.value.length == conjunto2){
		campo.value = campo.value + separador;
	}
}

// telefone
if (formato=='telefone'){
	separador1 = '(';
	separador2 = ')';
	separador3 = '-';
	conjunto1 = 0;
	conjunto2 = 3;
	conjunto3 = 8;
	
	if (campo.value.length == conjunto1){
		campo.value = campo.value + separador1;
	}
	
	if (campo.value.length == conjunto2){
		campo.value = campo.value + separador2;
	}
	
	if (campo.value.length == conjunto3){
		campo.value = campo.value + separador3;
	}
}


}

/* ======================================================================
/* Campo todo em Maiusculo
/* ======================================================================*/

function Maiuscula(campo)
{
campo.value = campo.value.toUpperCase();
}
function Minuscula(campo)
{
campo.value = campo.value.toLowerCase();
}


/* ======================================================================
/* FORMATA CAMPO VALOR MOEDA DOUBLE
/* ======================================================================*/

/* ======================================================================
/* Validação de valores R$
/* ======================================================================*/

function Limpar(valor, validos) {
	var result = "";
	var aux;
	
	for (var i=0; i < valor.length; i++) {
		aux = validos.indexOf(valor.substring(i, i+1));
		if (aux>=0) {
			result += aux;
		}
	}

	return result;
}

function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
dec=decimal

if (tam < tammax && tecla != 8){ tam = vr.length + 1; }

if (tecla == 8 )
   { tam = tam - 1; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{

if ( tam <= dec )
{ campo.value = vr; }

if ( (tam > dec) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + "." + vr.substr( tam - dec, tam ); }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + "" + vr.substr( tam - 5, 3 ) + "." + vr.substr( tam - dec, tam ); 
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam  - 8 ) + "" + vr.substr( tam  - 8, 3 ) +  "" + vr.substr( tam - 5, 3 ) + "." + vr.substr( tam - dec, tam ); }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + "" + vr.substr( tam - 11, 3 ) + "" + vr.substr( tam - 8, 3 ) + "" + vr.substr( tam - 5, 3 ) + "." + vr.substr( tam - dec, tam ); }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + "" + vr.substr( tam - 14, 3 ) + "" + vr.substr( tam - 11, 3 ) + "" + vr.substr( tam - 8, 3 ) + "" + vr.substr( tam - 5, 3 ) + "." + vr.substr( tam - 2, tam );}
} 

}



/* ======================================================================
/* Calcula valor de venda do produto
/* ======================================================================*/


function startCalcProduto(){
  interval = setInterval("calcServico()",1);
}
function calcServico(){
  um = document.form1.valorCompra.value;
  dois = document.form1.lucro.value;
  document.form1.preco.value = ( ((um * 1) * (dois * 1)) / 100 ) + (um * 1);
}

function stopCalc(){
  clearInterval(interval);
}

/* ======================================================================
/* Abre popup
/* ======================================================================*/
function abrir(URL) {

  var width = 525;
  var height = 525;

  var left = 99;
  var top = 99;

  window.open(URL,'janela', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');

}
