    function domAtual() {        
        if(document.layers) {
             return "layers";
        }
        if(document.all) {
             return "all";
        }
        if(document.getElementById && !document.all){
            return "getElementById";
        }
    }
    
    function areaVisualBrowserW() {
        dom = domAtual();
        
        //IE
        if(dom == "all") {
             return window.document.body.offsetWidth
        }
        //Netscape4
        if(dom == "layers") {
             return window.outerWidth
        }
        //Netscape6 ou +
        if(dom == "getElementById") {
             return window.outerWidth
        }
    }
    
    function areaVisualBrowserH() {
        dom = domAtual();
        
        //IE
        if(dom == "all") {
             return window.document.body.offsetHeight
        }
        //Netscape4
        if(dom == "layers") {
             return window.innerHeight
        }
        //Netscape6 ou +
        if(dom == "getElementById") {
             return window.innerHeight
        }
    }
    
    function posicionaLayer(layerId, w, h) {
        dom = domAtual();
        areaVisualW = areaVisualBrowserW();
        areaVisualH = areaVisualBrowserH();
        larguraSite = 779;
        alturaSite = 0;
        y = 0;
        x = 0;
    
        y = (areaVisualH - areaVisualH)/2;
        x = (areaVisualW - larguraSite)/2;
        
        if(dom == "layers") {
            eval("document."+dom+"['"+layerId+"'].top = "+ (y+h) +"");
            eval("document."+dom+"['"+layerId+"'].left = "+ (x+w) +"");
        } else {
            eval("document."+dom+"('"+layerId+"').style.top = "+ (y+h) +"");
            eval("document."+dom+"('"+layerId+"').style.left = "+ (x+w) +"");
        }
    }

function MM_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.getElementById(n); return x;
}

function MM_validateForm() { //v3.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- O Campo ['+nm+'] deve conter um e-mail válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (val!=''+num) errors+='- O Campo ['+nm+'] deve conter um número.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- O Campo ['+nm+'] deve conter um número entre '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- O Campo ['+nm+'] deve ser preenchido.\n'; }
  } if (errors) alert('Os seguintes erros ocorreram:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function Trocastring(input, from, to) {
  var output='';
  while(input.length >= from.length && input.length > 0 && from.length > 0){
  if(input.substring(0,from.length) == from){
   output += to;
   input = input.substring(from.length);
  }else{
   output += input.substring(0,1);
   input = input.substring(1);
  }
 }
 return output + input;
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function LimpaString(parNumero)
{
	// Deixa so os digitos no numero
	var l_js_Digitos = "0123456789";
	var l_js_Retorno = "";
	var l_js_Digito = "";
	for (var l_js_Contador=0; l_js_Contador < parNumero.length; l_js_Contador++) {
    l_js_Digito = parNumero.charAt(l_js_Contador);
    if (l_js_Digitos.indexOf(l_js_Digito) >= 0) {
			l_js_Retorno = l_js_Retorno + l_js_Digito
		}
  }
  return l_js_Retorno
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function Soma(valor,checkbox)
{
	var form  = document.f;
	if (checkbox.checked == true)
	{
		total = Trocastring(form.total_geral.value, '.', '');
		total = Trocastring(total, ',', '.');
		total = eval(total) + eval(valor);
	}

	if (checkbox.checked == false)
	{	
		total = Trocastring(form.total_geral.value, '.', '');
		total = Trocastring(total, ',', '.');
		total = eval(total) - eval(valor);
	}
	
	total = formatCurrency(total);
	total = Trocastring(total, ',', '-');
	total = Trocastring(total, '.', ',');
	total = Trocastring(total, '-', '.');

	document.f.total_geral.value = total;
}

function isValidDate(dateStr) 
{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = dateStr.match(datePat); 
	if (matchArray == null) 
	{
		alert("Data fora do formato correto DD/MM/AAAA")
		return false;
	}

	day = matchArray[1]; 
	month = matchArray[3];
	year = matchArray[4];

	if (month < 1 || month > 12) 
	{ 
		alert("Mês de ser entre 1 e 12.");
		return false;
	}
	if (day < 1 || day > 31) 
	{
		alert("Dia deve ser entre 1 e 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		alert("Mês "+month+" não possue 31 dias!")
		return false
	}
	if (month == 2) 
	{ 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) 
		{
			alert("Fevereiro " + year + " não tem " + day + " dias!");
			return false;
	   }
	}

	return true;
}

 function valida_cnpj(valor) {
                 CNPJ = valor;
                 erro = new String;
                 if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! \n\n"; 
                 if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
                 if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ! \n\n";
                 }
                 //substituir os caracteres que não são números
               if(document.layers && parseInt(navigator.appVersion) == 4){
                       x = CNPJ.substring(0,2);
                       x += CNPJ. substring (3,6);
                       x += CNPJ. substring (7,10);
                       x += CNPJ. substring (11,15);
                       x += CNPJ. substring (16,18);
                       CNPJ = x; 
               } else {
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace ("-","");
                       CNPJ = CNPJ. replace ("/","");
              }
               var nonNumbers = /\D/;
               if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! \n\n"; 
               var a = [];
               var b = new Number;
               var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
              for (i=0; i<12; i++){
                       a[i] = CNPJ.charAt(i);
                       b += a[i] * c[i+1];
 }
               if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
               b = 0;
               for (y=0; y<13; y++) {
                       b += (a[y] * c[y]); 
               }
               if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
               if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro +="Dígito verificador com problema!";
               }
               if (erro.length > 0){
                       alert(erro);
                       return false;
               } 
               return true;
       }


function valida_cnpj2(valor)
{
			valor = valor.replace(/^\s*|\s*$/g,"");
	 		CNPJ = valor;
			erro = new String;
            if (CNPJ.length < 18) erro = "O Campo [CNPJ] deve ser preenchido corretamente, com todos seus caracteres (.),(/) e (-). 1"; 
            if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
            if (erro.length == 0) erro = "O Campo [CNPJ] deve ser preenchido corretamente, com todos seus caracteres (.),(/) e (-). 2";
            }
            //substituir os caracteres que não são números
            if(document.layers && parseInt(navigator.appVersion) == 4){
            x = CNPJ.substring(0,2);
            x += CNPJ. substring (3,6);
            x += CNPJ. substring (7,10);
            x += CNPJ. substring (11,15);
            x += CNPJ. substring (16,18);
            CNPJ = x; 
            } else {
            CNPJ = CNPJ. replace (".","");
            CNPJ = CNPJ. replace (".","");
            CNPJ = CNPJ. replace ("-","");
            CNPJ = CNPJ. replace ("/","");
            }
            var nonNumbers = /\\D/;
            if (nonNumbers.test(CNPJ)) erro = "O Campo [CNPJ] deve ser preenchido corretamente, com todos seus caracteres (.),(/) e (-). 3"; 
            var a = [];
            var b = new Number;
            var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
            for (i=0; i<12; i++){
            	a[i] = CNPJ.charAt(i);
            	b += a[i] * c[i+1];
				}
           	if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
            	b = 0;
           		for (y=0; y<13; y++) {
                b += (a[y] * c[y]); 
                }
            if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
            if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro ="O Campo [CNPJ] deve ser preenchido corretamente, com todos seus caracteres (.),(/) e (-). 4";
               }
           if (erro.length > 0){
                       alert(erro);
                       return false;
               } 

}


function valida_cpf(valor)
{

		var l_js_Contador;
		parNumero = LimpaString(valor);
		var l_js_Corpo = parNumero.substr(0, 9);
		var l_js_DV = parNumero.substr(9, 2);
		var d1 = 0;
		for (l_js_Contador = 0; l_js_Contador < 9; l_js_Contador++) {
			d1 += l_js_Corpo.charAt(l_js_Contador)*(10 - l_js_Contador);
		}
		if (d1 == 0) {
			return false;
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) 
			d1 = 0;
		if (l_js_DV.charAt(0) != d1) {
			return false;
		}
	
		d1 *= 2;
		for (l_js_Contador = 0; l_js_Contador < 9; l_js_Contador++)	{
			d1 += l_js_Corpo.charAt(l_js_Contador)*(11 - l_js_Contador);
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) 
			d1 = 0;
		if (l_js_DV.charAt(1) != d1) 
		{
			return false;
		}

		return true;
}

function valida_telefone(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "() -0123456789";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function valida_cep(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "-0123456789 ";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;
   if (strString.length != 9) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function valida_rg(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "-.0123456789QWERTYUIOPASDFGHJKLÇZXCVBNM qwertyuiopasdfghjklçzxcvbnm";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;
   if (strString.length < 11) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }



function valida_email(str)
{
	  	if  ( /[(#%&$,;^=:<>*+{}()!)?]/.test(str) )
		{
    	alert ("O Campo E-mail contem caracteres inválidos.");
		return false;
  		}
		
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		var the_length=str.length;
		var last_char=str.charAt(the_length-1);

		
		if (last_char == "@"){
		   return false;
		}
	
		if (last_char == "."){
		   return false;
		}
		
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		   return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		   return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		   return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		   return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		   return false;
		 }

 		 return true;
	
}


function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}

function Replace_virg(Campo)
{
var virg
virg = Campo.value;
virg = virg.replace(",",".");
Campo.value = virg;
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}


function IsCurrency(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function formatar_geral(src, mask) 
{
	var i = src.value.length;
	var saida = "#";
	var texto = mask.substring(i);

	if (texto.substring(0,1) != saida) 
	{
		src.value += texto.substring(0,1);
  	}
}

function formatoMoeda(fld, milSep, decSep, e) 
{
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = (window.Event) ? e.which : e.keyCode;
  if (whichCode == 13) return true; 
  key = String.fromCharCode(whichCode);
  if (strCheck.indexOf(key) == -1) return false;
  len = fld.value.length;
  for(i = 0; i < len; i++)
  if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
  if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2)
	{
   aux2 = '';
	   for (j = 0, i = len - 3; i >= 0; i--) 
		 {
		   if (j == 3)
			 {
			 	aux2 += milSep;
				j = 0;
		   }
			 aux2 += aux.charAt(i);
			 j++;
		 }
		 fld.value = '';
		 len2 = aux2.length;
		 for (i = len2 - 1; i >= 0; i--)
		 fld.value += aux2.charAt(i);
		 fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}

function LimpaPonto(parNumero)
{
	// Deixa so os digitos no numero
	var l_js_Digitos = "0123456789,";
	var l_js_Retorno = "";
	var l_js_Digito = "";
	for (var l_js_Contador=0; l_js_Contador < parNumero.length; l_js_Contador++) {
    l_js_Digito = parNumero.charAt(l_js_Contador);
    if (l_js_Digitos.indexOf(l_js_Digito) >= 0) {
			l_js_Retorno = l_js_Retorno + l_js_Digito
		}
  }
  return l_js_Retorno
}

function Grava_Valor(val)
{
var virg;
virg = LimpaPonto(val);
virg = virg.replace(",",".");
return virg;
}

function MM_jumpMenu_delete(targ,selObj,restore){ //v3.0

	doyou = confirm("Tem certeza que deseja apagar ? Todas as informações serão apagadas. (OK = Sim   Cancel = Não)"); //Your question.
	if (doyou == true){
		eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
		if (restore) selObj.selectedIndex=0;
	}else{
		return false;
	}
}

function MM_jumpMenuBlank(targ,selObj,restore){ //v3.0

	end = selObj.options[selObj.selectedIndex].value;
 	window.open(end,'windw','location=yes,width=710,height=700,scrollbars=yes,menubar=yes,resizable=yes,top=20,left=50');
	if (restore) selObj.selectedIndex=0;
}
