var detect = navigator.userAgent.toLowerCase();
var browser,thestring;

if (checkIt('konqueror')) browser = "Konqueror";
else if (checkIt('safari')) browser = "Safari"
else if (checkIt('omniweb')) browser = "OmniWeb"
else if (checkIt('opera')) browser = "Opera"
else if (checkIt('webtv')) browser = "WebTV";
else if (checkIt('icab')) browser = "iCab"
else if (checkIt('msie')) browser = "Internet Explorer"
else if (checkIt('firefox')) browser = "Firefox"
else if (!checkIt('compatible')) browser = "Netscape Navigator"
else browser = "An unknown browser";

function checkIt(string) {
    place = detect.indexOf(string) + 1;
    thestring = string;
    return place;
}

var firefox = false;
if (browser == 'Firefox')
    firefox = true;
   
if(document.layers) { // If Netscape 4
        layerRef='document.'
        styleRef=''
        topRef='.top'
        leftRef='.left'
}else if(document.all){ // If IE4
        layerRef='document.all.'
        styleRef='.style'
        topRef='.pixelTop'
        leftRef='.pixelLeft'
}

function _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 ajustaLayer(nome, evento, pos) {
      var l = _findObj(nome);
      x = evento.clientX + pos;
      eval(layerRef+nome+styleRef+leftRef+'='+x);
}

function traduzLayer(nome) {
    novo_conteudo = substitui_campos(nome);
    change_layercontent(nome+'_menulayer',novo_conteudo);
}

var olayer;

function change_layercontent(layerid, msgstring){
        if(document.layers){
           //thisbrowser='NN4';
           olayer = document.layers[layerid];
           olayer.document.open();
           olayer.document.write(msgstring);
           olayer.document.close();
        }
        if(document.all){
           //thisbrowser='ie';
           olayer = document.all[layerid];
           olayer.innerHTML=msgstring;
        }
        if(!document.all && document.getElementById){
           //thisbrowser='NN6';
           olayer = document.getElementById(layerid);
           olayer.innerHTML = msgstring;
        }
}

function substitui_campos(nome) {
    var lay = _findObj(nome+'_menulayer', document);
    var conteudo_final = new String(lay.innerHTML);
    var rExp = new RegExp();

    for (i = 0; i < _MENU[nome].length; i++) {       
        rExp = new RegExp('__ITEM'+i+'__','igm');
        conteudo_final = conteudo_final.replace(rExp, _MENU[nome][i]);
    }
    return conteudo_final;
}
function fix_date(obj) {

            try {

                  data = new String(obj.value);

                  if (data.length == 0) return;

                  if (data.length < 8 || data.length > 10) {

                        alert('Data inválida');

                        obj.focus();

                  }

                  if (data.length == 8) {

                        ano = parseInt(data.substr(6,2));

                        if (ano < 40) ano += 2000; else ano += 1900;

                        obj.value = data.substr(0,6)+ano;

                  }               

            } catch (e) {

                  alert(e.description);

            }

}

function Mask_FormatField(e){
            this.maxlength = this.mask.length;
            var tecla;
           
            if (!firefox) tecla = event.keyCode;   
            else tecla = e.keyCode

            tecla_especial = false;

            tecla_ok = false;
             var n = ''; 

            if (tecla >= 48 && tecla <= 57) {
                tecla_ok = true;
                n = tecla - 48;
            }

            if (tecla >= 96 && tecla <= 105) {
                tecla_ok = true; 
                n = tecla - 96;
            }

            switch (tecla) {

                        case 9: //tab

                        case 8:     //backspace

                        case 35: //end

                        case 36: //home

                        case 45: //insert

                        case 46: //del

                        case 115: //F5

                             tecla_especial = true;

                             tecla_ok = true;

                             break;

            }

            if (!tecla_ok) return false;
           
            var shiftPressed;
            var altPressed;
            var ctrlPressed;
   
               if (!firefox) {
                   shiftPressed = (window.Event) ? event.modifiers & 
Event.SHIFT_MASK : event.shiftKey;
                   altPressed   = (window.Event) ? event.modifiers & 
Event.ALT_MASK : event.altKey;
                ctrlPressed  = (window.Event) ? event.modifiers & 
Event.CONTROL_MASK : event.ctrlKey;       
               } else {
                   shiftPressed = (window.Event) ? e.modifiers & 
Event.SHIFT_MASK : e.shiftKey;
                   altPressed   = (window.Event) ? e.modifiers & 
Event.ALT_MASK : e.altKey;
                ctrlPressed  = (window.Event) ? e.modifiers & 
Event.CONTROL_MASK : e.ctrlKey;
               }
              
               if (shiftPressed || altPressed || ctrlPressed) return false;

            if (!tecla_especial && this.value.length == 
this.mask.length) return false;

            if (!firefox) {
                 if (event.type == 'keydown') return;

                    if (event.type == 'keypress') return;
            } else {
                 if (e.type == 'keydown') return;

                    if (e.type == 'keypress') return;
            }

            var vr = new String(this.value);

            var mk = new String(this.mask);    
           
            if (firefox) vr += n; // gambiarra pro firefox o valor do campo nao vem o valor q acabou de ser digitado
           
            for (i=0; i < mk.length; i++) {
                  ch = mk.charAt(i);
                  if (ch != '#') vr = vr.replace(ch, '');
            }       
           
            tam = vr.length;
        
            var valor = new String();

            for (i=0,j=0; i<mk.length && j<vr.length; i++) {

                  ch = mk.charAt(i);

                  if (ch == '#') valor += vr.charAt(j++);
                  else valor += ch;   

            }

            ch = mk.charAt(i);

           // while (ch != '#') {
             //     valor += ch;
               //   ch = mk.charAt(++i);
            //}       
 
            this.value = valor;

            return true;

      }

      function MaskEdit_focus() {
            this.select();
      }

      function DefineMask(field, mask) {

            if (field == null) throw('DefineMask: field NULL');

            if (mask == null) throw('DefineMask: mask NULL');

            if (mask.length == 0) throw('DefineMask: NO mask ??');

          

            field.onkeydown = Mask_FormatField;

            field.onkeypress = Mask_FormatField;

            field.onkeyup = Mask_FormatField;

            field.mask = mask;

            field.onfocus = MaskEdit_focus;

      }
