function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_openBrWindow(theURL,winName,features) 
{ //v2.0
  window.open(theURL,winName,features);
}

function MM_validateForm()
{ //v4.0
  var i, j = 1, 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];
    obj = MM_findObj(args[i]);
    nm = (args[i + 1] != '') ? args[i + 1] : args[i];
    if (obj)
      {
      if ((obj.type == 'select-one') || (obj.type == 'select-multiple'))
        val = obj.options[obj.selectedIndex].value;
      else
        val = obj.value;
      if (val != '')
        {
        if (test.indexOf('isEmail') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um endereço de e-mail válido.\n';
            }
          }
        else if (test.indexOf('isListaDeEmails') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)[ ]*([\;]" +
                                     "[ ]*([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)" +
                                     "[ ]*)*[ ]*[\;]?[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um endereço de e-mail válido (ou uma lista de endereços ' +
                            'separados por \';\').\n';
            }
          }
        else if (test.indexOf('isTelefoneSemDDD') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{3,4})[ ]*-?[ ]*([0-9]{4})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um nº de telefone válido, sem o DDD [ex: 3252-2237].\n';
            else
              obj.value = RegExp.$1 + '-' + RegExp.$2;
            }
          }
        else if (test.indexOf('isTelefoneComDDD') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*[\(]?[ ]*0?([0-9A-Za-z]{2})?([0-9]{2})[ ]*[\)]?[ ]*([0-9]{3,4})[ ]*-?[ ]*" +
						                         "([0-9]{4})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um nº de telefone válido, com o DDD [ex: (19)3252-2237].\n';
            else
              obj.value = '(' + RegExp.$2 + ')' + RegExp.$3 + '-' + RegExp.$4;
            }
          }
        else if (test.indexOf('isDataDDMMAAAA') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{1,2})[ ]*[/-]?[ ]*([0-9]{1,2})[ ]*[/-]?[ ]*([0-9]{4})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser uma data válida no formato DD/MM/AAAA [ex: 31/01/2001].\n';
            else if ((!(RegExp.$1 >= 1 && RegExp.$1 <= 31)) || (!(RegExp.$2 >= 1 && RegExp.$2 <= 12)))
              errors += j++ + ') \'' + nm + '\' deve ser uma data válida no formato DD/MM/AAAA [ex: 31/01/2001].\n';
            else
              obj.value = ((Number(RegExp.$1) < 10) ? '0' : '') + Number(RegExp.$1) + '/' +
                              ((Number(RegExp.$2) < 10) ? '0' : '') +  Number(RegExp.$2) + '/' + RegExp.$3;
            }
          }
        else if (test.indexOf('isDataMMDDAAAA') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{1,2})[ ]*[/-]?[ ]*([0-9]{1,2})[ ]*[/-]?[ ]*([0-9]{4})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser uma data válida no formato MM/DD/AAAA [ex: 01/31/2001].\n';
            else if ((!(RegExp.$1 >= 1 && RegExp.$1 <= 12)) || (!(RegExp.$2 >= 1 && RegExp.$2 <= 31)))
              errors += j++ + ') \'' + nm + '\' deve ser uma data válida no formato MM/DD/AAAA [ex: 01/31/2001].\n';
            else
              obj.value = ((Number(RegExp.$1) < 10) ? '0' : '') + Number(RegExp.$1) + '/' +
                              ((Number(RegExp.$2) < 10) ? '0' : '') +  Number(RegExp.$2) + '/' + RegExp.$3;
            }
          }
        else if (test.indexOf('isURL') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*(http://)?([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser uma URL válida [ex: http://www.uol.com.br].\n';
            else
              obj.value = 'http://' + RegExp.$2;
            }
          }
        else if (test.indexOf('isCEP') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{5})*-?([0-9]{3})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um n° de CEP válido [ex: 13095020].\n';
            else
              obj.value = RegExp.$1 + RegExp.$2;
            }
          }
        else if (test.indexOf('isCPF') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{1,3})[\.]?([0-9]{3})[\.]?([0-9]{3})-?([0-9]{2})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um n° de CPF válido [ex: 65.294.393-91].\n';
            else
              obj.value = RegExp.$1 + RegExp.$2 + RegExp.$3 + RegExp.$4;
            }
          }
        else if (test.indexOf('isCNPJ') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{2})[\.]?([0-9]{3})[\.]?([0-9]{3})/?([0-9]{4})-?([0-9]{2})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um n° de CNPJ válido [ex: 26.895.574/0001-00].\n';
            else
              obj.value = RegExp.$1 + '.' + RegExp.$2 + '.' + RegExp.$3 + '/' + RegExp.$4 + '-' + RegExp.$5;
            }
          }
        else if (test.indexOf('is_CPF_CNPJ') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{2})[\.]?([0-9]{3})[\.]?([0-9]{3})/?([0-9]{4})-?([0-9]{2})[ ]*$", "gi");
            if (!reg.test(val))
              {
              var reg2 = new RegExp("^[ ]*([0-9]{1,3})[\.]?([0-9]{3})[\.]?([0-9]{3})-?([0-9]{2})[ ]*$", "gi");
              if (!reg2.test(val))
                errors += j++ + ') \'' + nm + '\' deve ser um n° de CPF ou CNPJ válido.\n';
              else
                obj.value = RegExp.$1 + '.' + RegExp.$2 + '.' + RegExp.$3 + '-' + RegExp.$4;
              }
            else
              obj.value = RegExp.$1 + '.' + RegExp.$2 + '.' + RegExp.$3 + '/' + RegExp.$4 + '-' + RegExp.$5;
            }
          }
        else if (test.indexOf('isContaCorrente') != -1)
          {
          if (window.RegExp)
            {
            var reg = new RegExp("^[ ]*([0-9]{1,3})[\.]?([0-9]{3})-?([0-9]{1})[ ]*$", "gi");
            if (!reg.test(val))
              errors += j++ + ') \'' + nm + '\' deve ser um n° de conta corrente válido [ex: 820.028-0].\n';
            else
              obj.value = RegExp.$1 + '.' + RegExp.$2 + '-' + RegExp.$3;
            }
          }
		  else if (test.indexOf('isPositivo') != -1)
          {
          	if (val < 0)
			{
		        errors += j++ + ') \'' + nm + '\' é um campo obrigatório.\n';
			}
          }
        else if (test != 'R')
          {
					var reg = new RegExp("^[ ]*(R[\$])?[ ]*(-?[0-9]+([\,][0-9]+)?)[ ]*$", "gi");
          if (!reg.test(val))
            errors += j++ + ') \'' + nm + '\' deve ser um número (caso necessário utilize "," como ponto decimal).\n';
          else
            val = String(RegExp.$2).replace(',', '.');
          if (test.indexOf('inRange') != -1)
            {
            p = test.indexOf(':');
            min = Number(test.substring(8, p));
            max = Number(test.substring(p + 1));
            val = Number(val);
            if (val < min || max < val)
              errors += j++ + ') \'' + nm + '\' deve ser um número entre ' + min + ' e ' + max + '.\n';
            }
          }
        }
      else if (test.charAt(0) == 'R')
        errors += j++ + ') \'' + nm + '\' ausente.\n';
      }
    }
  if (errors)
    alert('Os seguintes erros foram observados:\n\n' + errors);
  document.MM_returnValue = (errors == '');
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}