/*******************************************************************************
FUNCAO: VERIFICA TAMANHO DE CAMPOS DO FORMULARIO

PROTOTIPO: int validForm(formObject Form, char RequiredFieldsName[],
                         char SepFieldsNames char SepFieldsMinRange)

PARAMETROS: Form: OBJETO FORMULARIO
            RequiredFieldsName: CAMPOS OBRIGATORIOS E CARACTERES MINIMOS
            SepFieldsNames: CARACTER SEPARADOR PARA NOMES DOS CAMPOS
            SepFieldsMinRange: CARACTER SEPARADOR PARA TAMANHO MINIMO DOS CAMPOS

DESCRICAO: VERIFICA TAMANHO DE CAMPOS OBRIGATORIOS DO FORMULARIO E RETORNA
           VERDADEIRO SE TODOS OS VALORES DOS CAMPOS PASSADOS NO PARAMETRO
           "RequiredFieldsName" SATISFAZEM A CONDICAO DE NUMERO MINIMO DE
           CARACTERES.

EX.: <!-- O FORMULARIO -->
     <form name="nome_formulario" action="arquivo_alvo.ext" method="post"
      onSubmit="javascript: return validForm(this, this.campos_obrigatorios.value, ';', ':')">

     <!-- CAMPO OCULTO QUE CONTEM O NOME E TAMANHO DE CAMPOS OBRIGATORIOS -->
     <input type="hidden" name="campos_obrigatorios" value="nome_completo:10;telefone:7;email:12">

     <!-- OS CAMPOS -->
     <input type="text" name="nome_completo" value="" title="Nome comleto">

     <input type="text" name="telefone" value="" title="Telefone para contato">

     <input type="text" name="email" value="" E-mail válido>

*******************************************************************************/
function validForm(Form, RequiredFieldsName, SepFieldsNames, SepFieldsMinRange) {
  var arr_required_fields = null;
  var arr_field = null;
  var field_name = "";
  var field_min_len = 0;
  var field_title = "";
  var parse_object = null;

  if(SepFieldsNames.length < 1)
    SepFieldsNames = ";";

  arr_required_fields = RequiredFieldsName.split(SepFieldsNames);

  if(SepFieldsMinRange.length < 1)
    SepFieldsMinRange = ",";

  for(var i=0;i<arr_required_fields.length;i++) {
    tmp = arr_required_fields[i];

    if(tmp.charAt(0)=="(" && tmp.charAt(tmp.length -1)==")") {
      tmp_2 = tmp.substring(1, (tmp.length -1));

      arr_tmp = tmp_2.split("<");

      field_1 = arr_tmp[0].split(SepFieldsMinRange);
      field_2 = arr_tmp[1].split(SepFieldsMinRange);

      field_value_1 = eval("Form." + field_1[0] + ".value");
      field_value_2 = eval("Form." + field_2[0] + ".value");

      if(parseInt(field_value_1.length) <= parseInt(field_value_2.length)) {
        arr_field = field_2;
      }
      else {
        arr_field = field_1;
      }

    }
    else {
      arr_field = arr_required_fields[i].split(SepFieldsMinRange);
    }

    if(arr_field.length > 1) {
      field_name    = arr_field[0];
      field_min_len = arr_field[1];
    }
    else if(arr_field.length == 1) {
      field_name    = arr_field[0];
      field_min_len = 0;
    }
    else
      continue;

    try {
      field_value = eval("Form." + field_name + ".value");
      field_title = eval("Form." + field_name + ".title");
    }
    catch (e) {

    }

    parse_object = "Form." + field_name;

    if(field_title.length < 1)
      field_title = field_name;

    if(field_min_len > 0) {
      if(field_value.length < field_min_len) {
        var msg = "Atenção!\n\nO tamanho mínimo para o campo listado abaixo é de " + field_min_len + " caracteres.\n\n" +
                  "\"" + field_title + "\"\n\n" +
                  "Por favor, faça as correções necessárias para poder continuar.";

        alert(msg);
        eval(parse_object + ".focus()");

        return false;
      }
    }
    else {
      if(field_value.length < 1) {
        var msg = "Atenção!\n\nVocê deve informar um o valor para o seguinte campo listado abaixo.\n\n" +
                  "\"" + field_title + "\"\n\n" +
                  "Por favor, faça as correções necessárias para poder continuar.";

        alert(msg);
        eval(parse_object + ".focus()");

        return false;
      }
    }
  }

  return true;
}

/*******************************************************************************
FUNCAO: FORMATA CAMPO ESPECIFICADO

PROTOTIPO: void formatField(fieldObject src, char[] mask)

PARAMETROS: src: OBJETO FIELD
            mask: MASCARA DE FORMATACAO

DESCRICAO: FORMATATA CAMPO PASSADO EM src PARA O FORMATO PASSADO em mask

EX.: <!-- O CAMPO A SER FORMATADO -->
     <input type="text" name="telefone" value="" title="Telefone de contato"
      onKeyUp="javascript: formatField(this, '####-####')">

*******************************************************************************/
function formatField(src, mask) {
  var i = src.value.length;
  var out = mask.substring(0,1);
  var value = mask.substring(i);

  if (value.substring(0,1) != out) {
    src.value += value.substring(0,1);
  }
}

/*******************************************************************************
FUNCAO: RANDOMIZA OBJETOS

PROTOTIPO: char *randomizeObjects(char[] Objects, char SepObjects, char SepTypes, int width , int height)

PARAMETROS: Objects: OBJETOS (ARQUIVOS) A SEREM SELECIONADOS
            SepObjects: CARACTER SEPARADOR PARA NOMES DOS OBJETOS
            SepTypes: CARACTER SEPARADOR PARA TIPO DO OBJETO (flash, image)
            width: LARGURA DO OBJETO
            heigth: ALTURA DO OBJETO

DESCRICAO: SELECIONA ALEATORIAMENTE UM DOS OBJETOS PASSADOS EM Objects

EX.: <!-- ALGUNS DESTES OBJETOS-->
     <script>
       document.write(randomizeObjects("http://www.dom.com/meu_arquivo_flash.swf,flash; http://www.outro.com/imagem.jpg,image",
                                        ";", ",", 500, 200 ))
     </script>
*******************************************************************************/
function randomizeObjects(Objects, SepObjects, SepTypes, width, height) {

  function selectObject(Selections) {
    var max  = Selections.length;
    var rand = parseInt(Math.random() * max);

    var result = null;

    for(var i=0;i<max;i++) {
      if(i==rand) {
        result = Selections[i];
        break;
      }
    }

    return result;
  }

  var parse_object  = null;
  var parse_type    = null;
  var type          = null;

  var parse_obj = null
  var src       = null

  var obj_name = "";
  var result = new Array();

  if(SepObjects.length < 1)
    SepObjects = ";";

  if(SepTypes.length < 1)
    SepTypes = ",";

  parse_object = Objects.split(SepObjects);

  for(var i=0;i<parse_object.length;i++) {
    parse_obj = parse_object[i].split(SepTypes);

    src  = parse_obj[0];
    type = parse_obj[1];

    obj_name = src + "_" + i;

    if(type=="image") {
      result[i] = "<img src='" + src + "' name='" + obj_name + "' width='" + width + "' height='" + height + "'>";
    }
    else if(type=="flash") {
      result[i] = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' width='" + width + "' height='" + height + "'>" +
                  "<param name='movie' value='" + src + "'>" +
                  "<param name='quality' value='high'>" +
                  "<embed src='" + src + "' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='" + width + "' height='" + height + "'></embed>" +
                  "</object>";
    }
  }

  return selectObject(result);
}