function MascaraTelefone(campo, evtKeyPress)
    {
        if (campo.value.length > 13)
            {
               colorir(campo, false);
               return autoTab(campo, 14, evtKeyPress);
            }
        else
            {  
            if (campo.value.length > 2){
                colorir(campo, true);  
                return txtBoxFormat(campo, '(99) 9999-9999', evtKeyPress);
                }
            }
    }

    function MascaraCep(campo, evtKeyPress)
       {
          if (campo.value.length > 8 )
            {
               colorir(campo, false);
               return autoTab(campo, 9, evtKeyPress);
            }
          else
            {    
                colorir(campo, true);  
                return txtBoxFormat(campo, '99999-999', evtKeyPress);
            }
       }

        function MascaraMoeda (objCampo){
				len = 20
				cur = objCampo
				n   = '0123456789';
				d   = objCampo.value;
				l   = d.length;
				r   = '';
				
				if ( l > 0 ){
					z = d.substr(0,l);
					s = '';
					a = 0;
					
					for ( i=0; i < l; i++ ){
						c = d.charAt(i);
						if ( n.indexOf(c) > a ){
							a  = -1;
							s += c;
						};
					};
					l = s.length;
					t = len - 1;
					if ( l > t ){
						l = t;
						s = s.substr(0,t);
					}
					if ( l > 2 ){
						r = s.substr(0,l-2)+','+s.substr(l-2,2);
					} else {
						if ( l == 2 ){
							r='0,'+s;
						}else{
							if ( l == 1 ){
								r = '0,0'+s;
							}
						}
					}
					if ( r == '' ){
						r = '0,00';
					} else {
						l=r.length;
						if (l > 6){
							j  = l%3;
							w  = r.substr(0,j);
							wa = r.substr(j,l-j-6);
							wb = r.substr(l-6,6);
							if ( j > 0 ){
								w+='.';
							};
							k = (l-j)/3-2;
							for ( i=0; i < k; i++ ){
								w += wa.substr(i*3,3)+'.';
							};
							r = w + wb;
						}
					}
				}
				if ( cur.value.length == len || cur.value.length > len ){
					cur.value = cur.value.substring(0 ,len);
					return false;
				} else {
						if ( r.length <= len ){
							cur.value = r;
						}else{
							cur.value = z;
						};
				}
	}




    //Máscara para datas 13/08/2008
    function mascaraHora(campoData, e)
     	{              
     	        	    
			var data = campoData.value;              
			if (data.length == 2)
			{                  
				// Verifica se o dia é menor que 32
				if (data < 24)
				{
				    // Coloca uma barra depois do dia
					data = data + ':';                  
					campoData.value = data;   
					return true;                            
                 }
				else
				 {
				   //se for maior que 32 apaga o conteúdo
  				   campoData.value = "";      
 				   return true;                           
			     }
			}              

			 //Da um tab no campo quando chegar a 10 digitos
		     return autoTab(campoData, 5, e);
			
	}
		

    //Máscara para datas 13/08/2008
    function mascaraData(campoData, e)
     	{              
     	        	    
			var data = campoData.value;              
			if (data.length == 2)
			{                  
				// Verifica se o dia é menor que 32
				if (data < 32)
				{
				    // Coloca uma barra depois do dia
					data = data + '/';                  
					campoData.value = data;   
					return true;                            
                 }
				else
				 {
				   //se for maior que 32 apaga o conteúdo
  				   campoData.value = "";      
 				   return true;                           
			     }
			}              

			if (data.length == 5)
			{              
			    //Verifica se o mês é menor que 13
				if (Mid(data,3,2) < 13)
				{
					data = data + '/';                  
					campoData.value = data;                  
					return true;             
				}
				else
				{
					campoData.value = "";                  
					return true;             
				}

			}         
			
			 //Da um tab no campo quando chegar a 10 digitos
		     return autoTab(campoData, 10, e);
			
	}
    //Permite apenas números no campo
    function Numero(e)
	    {
		    navegador = /msie/i.test(navigator.userAgent);
			if (navegador)
				var tecla = event.keyCode;
			else
				var tecla = e.which;
            
            // o tab no firefox é zero
            if(tecla == 0){
                return true;
            } 
            
			if(tecla > 47 && tecla < 58) // numeros de 0 a 9
				return true;
			else
			{
				if (tecla != 8) // backspace
					return false;
				else
					return true;
			}
	    }

    //Função identica ao mid no VB
    function Mid(str, start, len)
        {
	        if (start < 0 || len < 0) return "";
            var iEnd, iLen = String(str).length;
                if (start + len > iLen)
                iEnd = iLen;
            else
                  iEnd = start + len;
            return String(str).substring(start,iEnd);
        }
    
        
    //envia tecla tab...
    //return autoTab(this, 3, event) 
    var isNN = (navigator.appName.indexOf("Netscape")!=-1);
    function autoTab(input,len, e) 
    {
        var keyCode = (isNN) ? e.which : e.keyCode; 
        var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
            if(input.value.length >= len && !containsElement(filter,keyCode))
                {
                    input.value = input.value.slice(0, len);
                    input.form[(getIndex(input)+1) % input.form.length].focus();
                }

            function containsElement(arr, ele) 
                {
                    var found = false, index = 0;
                    while(!found && index < arr.length)
                        if(arr[index] == ele)
                            found = true;
                        else
                            index++;
                        return found;
                }

            function getIndex(input)
                {
                    var index = -1, i = 0, found = false;
                        while (i < input.form.length && index == -1)
                            if (input.form[i] == input)index = i;
                            else i++;
                            return index;
                }
            return true;
    }
    
    

function show_calendar(str_target, str_datetime) {

    if (str_datetime.length < 12  )
        {
            if (str_datetime.length > 2)
                    {
                        str_datetime = str_datetime.replace("/","-");
                        str_datetime = str_datetime.replace("/","-");
                        str_datetime = str_datetime + " 12:00:00";
                     }   
         }   
    
    
    
    //alert(str_datetime);
                
        
    str_target = "document.aspnetForm." + str_target;

    var arr_months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
		"Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
	var week_days = ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sa"];
	var n_weekstart = 0; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
		"<html>\n"+
		"<head>\n"+
		"	<title>Calendario</title>\n"+
		"</head>\n"+
		"<body bgcolor=\"White\">\n"+
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
		"<tr><td bgcolor=\"#4682B4\">\n"+
		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n	<td bgcolor=\"#4682B4\"><a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ dt3dtstr(dt_prev_month)+"'+' 12:00:00');\">"+
		"<img src=\"img/prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"previous month\"></a></td>\n"+
		"	<td bgcolor=\"#4682B4\" colspan=\"5\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
		+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
		"	<td bgcolor=\"#4682B4\" align=\"right\"><a href=\"javascript:window.opener.show_calendar('"
		+str_target+"', '"+dt3dtstr(dt_next_month)+"'+' 12:00:00');\">"+
		"<img src=\"img/next.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"next month\"></a></td>\n</tr>\n"
	);

	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer += "	<td bgcolor=\"#87CEFA\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
		week_days[(n_weekstart+n)%7]+"</font></td>\n";
	// print calendar table
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					str_buffer += "	<td bgcolor=\"#FFB6C1\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
				else
					// print working days of current month
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				else 
					// print days of other months
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer
	str_buffer +=
		"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
		"<font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
		"</font></td></tr>\n</form>\n" +
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";

	var vWinCal = window.open("", "Calendar", 
		"width=250,height=250,status=no,resizable=yes,top=200,left=200");
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt (str_datetime) {
	var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));

}

function dt2dtstr (dt_datetime) {
	return (new String (
			dt_datetime.getDate()+"/"+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()+""));
}

function dt2tmstr (dt_datetime) {
	return (new String (
			dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

function dt3dtstr (dt_datetime) {
	return (new String (
			dt_datetime.getDate()+"-"+(dt_datetime.getMonth()+1)+"-"+dt_datetime.getFullYear()+" "));
}


function colorir(campo, erro)
    {
       // if (erro == true)
       //     {
       //       var cor = "#CC0000"
       //       document.getElementById(campo).style.color = cor;    
       //     }
       //  else
       //     {
       //       var cor = "#0000CC"
       //       document.getElementById(campo).style.color = cor;    
       //     }
    }

function cpfcnpj(campoData, evtKeyPress)

    {
        var data = campoData.value;

        //alert(data);

    if(data.length == 3){
        data = data + '.';
        campoData.value = data;   
		return true;  
       
    }
    if(data.length == 7){
        data = data + '.';
        campoData.value = data;   
		return true;  
    }
    if(data.length == 11){
        data = data + '-';
        campoData.value = data;   
		return true;  
    }
    if(data.length == 15){
        p0=data.charAt(0);
        p1=data.charAt(1);
        p2=data.charAt(2);
        p3=data.charAt(4);
        p4=data.charAt(5);
        p5=data.charAt(6);
        p6=data.charAt(8);
        p7=data.charAt(9);
        p8=data.charAt(10);
        p9=data.charAt(12);
        p10=data.charAt(13);
        p11=data.charAt(14);
        data = '';
        data = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-';
        p0='';
        p1='';
        p2='';
        p3='';
        p4='';
        p5='';
        p6='';
        p7='';
        p8='';
        p9='';
        p10='';
        p11='';
        campoData.value = data;   
		return true; 
    }
    
         if(data.length < 18)
            {
                colorir (campoData, true);
            }    

    
        if(data.length == 18)
            {
                if (validaCNPJ(data) == true)
                   {
                    colorir (campoData, false);
                    return true;
                   // return autoTab(campoData, 18, evtKeyPress
                    //);
                };
            }
        
        if(data.length == 14)
           {
              if (ValidaCPF(data) == true) {
                    var cor = "#0000CC"
                    document.getElementById(campoData.name).style.color = cor;
                    return true;
                    //return autoTab(campoData, 14, evtKeyPress);
                };
           }     
}

function validaCNPJ(data) {
    CNPJ = data;
    erro = new String;
    if (CNPJ.length < 18) return false;
    if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
        {
            if (erro.length == 0) return false;
        }
    //substituir os caracteres que nao sao numeros
    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)) return false; 
        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])){
           return false;
        }
        if (erro.length > 0){
        alert(erro);
        return false;
        }
        else
        {
            return true;
        //alert("CNPJ valido!");
        }
            
}

function ValidaCPF(data) {

var CPF = data; // Recebe o valor digitado no campo

CPF = CPF.replace(".","");
CPF = CPF.replace(".","");
CPF = CPF.replace("-","");

// Aqui comeca a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois 

// Desemembra o n
for (I=0; I<=8; I++) {
  DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10
POSICAO = 10;
SOMA = 0;
   for (I=0; I<=8; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[9] = SOMA % 11;
   if (DIGITO[9] < 2) {
        DIGITO[9] = 0;
}
   else{
       DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11
POSICAO = 11;
SOMA = 0;
   for (I=0; I<=9; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[10] = SOMA % 11;
   if (DIGITO[10] < 2) {
        DIGITO[10] = 0;
   }
   else {
        DIGITO[10] = 11 - DIGITO[10];
   }

// Verifica se os valores dos d
DV = DIGITO[9] * 10 + DIGITO[10];
   if (DV != DV_INFORMADO)
    {
      return false;
    } 
    else
    {
      return true;
    }
}


function txtBoxFormat(campo, sMask, evtKeyPress) {

      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
      var nTecla = evtKeyPress.keyCode ? evtKeyPress.keyCode : evtKeyPress.which ? evtKeyPress.which : evtKeyPress.charCode;

      sValue = campo.value;

      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

      while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

        if (bolMask) {
          sCod += sMask.charAt(i);
          mskLen++; }
        else {
          sCod += sValue.charAt(nCount);
          nCount++;
        }

        i++;
      }

      campo.value = sCod;

      if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas números...
          return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...
          return true;
        } }
      else {
        return true;
      }
}

    function opencon(cp, cid)
        {
                var vWinCal = window.open("_consulta.aspx?c=" + cp + "&cid=" + cid , textoAleatorio(10), "width=480,height=490,status=yes,resizable=yes,top=200,left=200");
		        vWinCal.opener = self;
        }
        
        
    function opengeo(cp, cid)
        {
            var vWinCal = window.open("especificos/geoposicao_get.aspx?c=" + cp + "&cid=" + cid , "GeoPosition", 
            "width=630,height=470,status=yes,resizable=no,top=200,left=200");
            vWinCal.opener = self;
        }

    function opencep()
        {
            var vWinCal = window.open("especificos/correios_cep.html", "CEP", 
            "width=630,height=470,status=yes,resizable=no,top=200,left=200");
            vWinCal.opener = self;
        }

function textoAleatorio(tamanho)
{
    var letras = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
    var aleatorio = '';
    for (var i = 0; i <tamanho; i++) {
        var rnum = Math.floor(Math.random() * letras.length);
        aleatorio += letras.substring(rnum, rnum + 1);
    }
    return aleatorio;
} 
