/*
  5Brand JavaScript Lib
*/

String.prototype.isDate = function() {
  if ((/^\d{1,2}\/\d{1,2}\/\d{4}$/).test(this)) {
    var dArr = this.split("/");
    var d = new Date(dArr[2], dArr[0] - 1, dArr[1]);
    return d.getMonth() + 1 == dArr[0] && d.getDate() == dArr[1] && d.getFullYear() == dArr[2];
  } else {
    return false;
  }
};

String.prototype.isEMail = function() {
  return (/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/).test(this);
}

String.prototype.isTime = function() {
  return (/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/).test(this);
}

String.prototype.trim = function() {
  return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

String.prototype.isInteger = function(){
  return (/^[0-9]+$/).test(this);
}

String.prototype.isCd = function(){
  return (/^[0-9]{1,9}$/).test(this);
}

var ns6=document.getElementById && !document.all?1:0;

function getStyle(n) {
  return ns6?document.getElementById(n).style:document.all[n].style;
}

function getObject(n) {
  return ns6?document.getElementById(n):document.all[n];
}

function focusField() {
  var fFocus=getObject("focus");
  if (fFocus) {
    fFocus.focus();
  }
}

function chkForm(form) {
  if (form[form.length - 1].disabled) {
    return false;
  }
  var inputs = document.getElementsByTagName("input");
  for (i = 0; i < inputs.length; i++) {
    if (inputs[i].type.toLowerCase() == "submit" || inputs[i].type.toLowerCase() == "reset" || inputs[i].type.toLowerCase() == "button") {
      inputs[i].disabled = true;
    }
  }
  return true;
}

function enableForm() {
  var inputs = document.getElementsByTagName("input");
  for (i = 0; i < inputs.length; i++) {
    inputs[i].disabled = false;
  }
}

function filterDigit(s) {
  s = s.split("");
  var r = "";
  for(i in s) {
    r += (isNaN(s[i]) || s[i] == " ")?"":s[i];
  }
  return r
}

function abortSubmit(form, msg) {
  alert(msg);
  enableForm();
  return false;
}

function chkFormField(form) {
  for (i = 0; i < form.length; i++) {
    if (form.elements[i].value.trim() == "") {
      form.elements[i].focus();
      return abortSubmit(form, "All fields must be filled.");
    }
  }
  return true;
}

function fillNickName(form) {
  if (form.apelido.value == "") {
    var s = form.nome.value;
    var i = s.indexOf(" ");
    form.apelido.value = (i <= 0 || i > 25)?s.substring(0, 25):s.substring(0, i);
  }
}

function passwordChk(form) {
  if (form.senha.value != form.senha2.value) {
    form.senha.focus();
    form.senha.select();
    return abortSubmit(form, "Password must be equal.");
  }
  return true;
}

function professionChk(form) {
  if (form.cd_tipo_profissao.selectedIndex < 1 && form.tipo_profissao.value == "0") {
    form.cd_tipo_profissao.focus();
    return abortSubmit(form, "Select or type in your Profession.");
  }
  return true;
}

function brandsChk(form) {
  if ((form.cd_marca1.selectedIndex < 1 || form.cd_marca1[form.cd_marca1.selectedIndex].value == "0") && form.marca1.value == "") {
    form.cd_marca1.focus();
    return abortSubmit(form, "Select or type in the Brand #1.");
  }
  if ((form.cd_marca2.selectedIndex < 1 || form.cd_marca2[form.cd_marca2.selectedIndex].value == "0") && form.marca2.value == "") {
    form.cd_marca2.focus();
    return abortSubmit(form, "Select or type in the Brand #2.");
  }
  if ((form.cd_marca3.selectedIndex < 1 || form.cd_marca3[form.cd_marca3.selectedIndex].value == "0") && form.marca3.value == "") {
    form.cd_marca3.focus();
    return abortSubmit(form, "Select or type in the Brand #3.");
  }
  if ((form.cd_marca4.selectedIndex < 1 || form.cd_marca4[form.cd_marca4.selectedIndex].value == "0") && form.marca4.value == "") {
    form.cd_marca4.focus();
    return abortSubmit(form, "Select or type in the Brand #4.");
  }
  if ((form.cd_marca5.selectedIndex < 1 || form.cd_marca5[form.cd_marca5.selectedIndex].value == "0") && form.marca5.value == "") {
    form.cd_marca5.focus();
    return abortSubmit(form, "Select or type in the Brand #5.");
  }
  return true;
}

function editBrand(cd_marca) {
  var j = window.open("", "b" + cd_marca, "height=610, width=680, status=1, scrollbars=1, resizable=0");
  j.location.replace("Index.cfm?p=Brand&c=" + cd_marca);
  j.focus();
}

/* --------------------------------------------------
    Client side form validation structure
   -------------------------------------------------- */
var ruleFormList = new Array();
var ruleFormReturn = new Array();

function ruleFormObj(formulario, obrigatorio, descricao, formato, mensagem, valormin, valormax, tamanhomin, tamanhomax) {
  if (formulario == "") {
    formulario = "form";
  }
  this.formulario = formulario;
  this.obrigatorio = obrigatorio;
  this.descricao = descricao;
  this.formato = formato;
  this.mensagem = mensagem;
  this.valormin = valormin;
  this.valormax = valormax;
  this.tamanhomin = tamanhomin;
  this.tamanhomax = tamanhomax;
}

function ruleForm(formulario, campo, obrigatorio, descricao, formato, mensagem, valormin, valormax, tamanhomin, tamanhomax) {
  ruleFormList[campo] = new ruleFormObj(formulario, obrigatorio, descricao, formato, mensagem, valormin, valormax, tamanhomin, tamanhomax);
}

function ruleFormChk(form) {
  chkForm(form);
  ruleFormReturn.length = 0;
  var flfocar = false;
  var focar = undefined;
  for (i in ruleFormList) {
    var r = ruleFormList[i]; /* regra */
    /* Campo pertence ao formulario? */
    if (form.name != r.formulario) {
      continue; /* Proximo loop */
    }
    var c = form[i]; /* Campo do form */
    /* Verifica existencia do campo */
    if (!c) {
      /* Nao localizou campo citado na regra */
      return abortSubmit(form, 'ruleFormChk - Field "' + i + '" not found.');
    }
    /* Verifica descricao do campo */
    if (!r.descricao) {
      /* Nao localizou descricao do campo */
      return abortSubmit(form, 'ruleFormChk - Description for field "' + i + '" not found.');
    }
    /* Verifica clausula "obrigatorio" */
    if (r.obrigatorio) {
      /* Campo obrigatorio */
      if (c.type) {
        var t = c.type.toLowerCase();
      } else {
        var t = c[0].type.toLowerCase();
      }
      var vazio = true;
      if (t == "text" || t == "textarea" || t == "password") {
        /* Campo texto ou senha */
        vazio = c.value.trim() ? false : true;
      } else if (t == "radio") {
        /* Campo radio */
        for (i = 0; i < c.length; i++) {
          if (c[i].checked) {
            vazio = false;
            break;
          }
        }
        if (vazio) {
          c = c[0];
        }
      } else if (t == "checkbox") {
        /* Campo checkbox */
        if (c.length) {
          for (i = 0; i < c.length; i++) {
            if (c[i].checked) {
              vazio = false;
              break;
            }
          }
        } else {
          if (c.checked) {
            vazio = false;
          }
        }
        if (vazio) {
          c = c[0];
        }
      } else if (t == "select-one") {
        /* Drop down */
        vazio = c.selectedIndex < 1 || c[c.selectedIndex].value == "0";
      } else if (t == "select-multiple") {
        /* List box */
        for (i = 0; i < c.length; i++) {
          if (c[i].selected) {
            vazio = false;
            break;
          }
        }
        if (vazio) {
          c = c[0];
        }
      }
      if (vazio) {
        if (!focar) {
          focar = c;
        }
        if (r.mensagem) {
          ruleFormReturn[ruleFormReturn.length] = r.mensagem;
        } else {
          ruleFormReturn[ruleFormReturn.length] = r.descricao + " must be informed.";
        }
      }
    }
    /* Verifica clausula "formato" */
    if (r.formato && c.value) {
      /* Testa formato */
      var rf = r.formato.toLowerCase(); /* regra.formato */
      var v = c.value; /* valor do campo */
      var msg = null;
      /* Verifica o tipo formato informado */
      if ("t,d,n,i,cd,c,email".indexOf(rf) == -1) {
        return abortSubmit(form, 'ruleFormChk - Field format "' + i + '" is invalid.');
      /* Data */
      } else if (rf == "d" && !v.isDate()) {
        flfocar = true;
        msg = r.descricao + " must contain a valid date (format MM/DD/YYYY).";
      /* Numero decimal */
      } else if (rf == "n" && !v.isFloat()) {
        flfocar = true;
        msg = r.descricao + " must contain a valid number.";
      /* Numero inteiro */
      } else if (rf == "i" && (isNaN(v) || !v.isInteger())) {
        flfocar = true;
        msg = r.descricao + " must contain a valid integer.";
      /* Codigo */
      } else if (rf == "cd" && (isNaN(v) || !v.isCd())) {
        flfocar = true;
        msg = r.descricao + " must contain a valid numeric 9 digits code.";
      /* E-mail */
      } else if (rf == "email" && !v.isEMail()) {
        flfocar = true;
        msg = r.descricao + " must contain a valid address.";
      }
      if (flfocar && !focar) {
        focar = c;
      }
      if (msg) {
        if (r.mensagem) {
          ruleFormReturn[ruleFormReturn.length] = r.mensagem;
        } else {
          ruleFormReturn[ruleFormReturn.length] = msg;
        }
      }
    }
    /* Verifica clausula "valormin" */
    if (r.valormin && c.value) {
      /* Testa valor minimo */
      if (c.value < r.valormin) {
        if (!focar) {
          focar = c;
        }
        ruleFormReturn[ruleFormReturn.length] = r.descricao + " must be greater or equal than " + r.valormin + ".";
      }
    }
    /* Verifica clausula "valormax" */
    if (r.valormax && c.value) {
      /* Testa valor maximo */
      if (c.value < r.valormax) {
        if (!focar) {
          focar = c;
        }
        ruleFormReturn[ruleFormReturn.length] = r.descricao + " must be less or equal than " + r.valormax + ".";
      }
    }
    /* Verifica clausula "tamanhomin" */
    if (r.tamanhomin && c.value) {
      /* Testa tamanho minimo */
      if (c.value.length < r.tamanhomin) {
        if (!focar) {
          focar = c;
        }
        ruleFormReturn[ruleFormReturn.length] = r.descricao + " must have at least " + r.tamanhomin + " positions.";
      }
    }
    /* Verifica clausula "tamanhomax" */
    if (r.tamanhomax && c.value) {
      /* Testa tamanho maximo */
      if (c.value.length > r.tamanhomax) {
        if (!focar) {
          focar = c;
        }
        ruleFormReturn[ruleFormReturn.length] = r.descricao + " must have no more than " + r.tamanhomax + " positions.";
      }
    }
  }
  if (ruleFormReturn[0]) {
    var m = "";
    for (i = 0; i < ruleFormReturn.length; i++) {
      m += ruleFormReturn[i] + "\n";
    }
    abortSubmit(form, m);
    if (focar) {
      if (focar.type == "text" || t == "password") {
        focar.select();
      }
      focar.focus();
    }
    return false;
  }

  return true;
}
/* -------------------------------------------------- */
