function radioValue(idForm, nome)
{
  var radio = Form.getInputs(idForm, 'radio', nome).find(function(radio){
    return radio.checked
  });
  if (radio == null)
    return "";
  return radio.value;
}

function createHidden(name, value)
{
  var hidden = document.createElement('input');
  hidden.type = 'hidden';
  hidden.name = name;
  hidden.value = value;

  return hidden;
}

function selecionarItemCombo(valor, componente, funcao)
{
  var dropDown = $(componente);

  if (! valor.blank() && dropDown != null)
  {
    dropDown.selectedIndex = 0;

    for (cont = 0; cont < dropDown.options.length; cont ++)
    {
      if(dropDown.options[cont].value == valor)
      {
        dropDown.selectedIndex = cont;
        if (funcao)
          funcao(dropDown);
        break;
      }
    }
  }
}

//
// Parâmetros:
//    Strings no formato dd/mm/yyyy
//
// Retorno:
//    um valor inteiro:
//    - -1 caso início antes  do fim
//    -  0 caso início igual  ao fim 
//    -  1 caso início depois do fim
//
function compareDate(inicio, fim)
{
   var diaI  = parseInt(inicio.substring(0,2),10);
   var mesI  = parseInt(inicio.substring(3,5),10);
   var anoI  = parseInt(inicio.substring(6,10),10);
   var diaF  = parseInt(fim.substring(0,2),10);
   var mesF  = parseInt(fim.substring(3,5),10);
   var anoF  = parseInt(fim.substring(6,10),10);

   var data1 = new Date().setFullYear(anoI, mesI-1, diaI);
   var data2 = new Date().setFullYear(anoF, mesF-1, diaF);

   var r = (data1 < data2) ? -1 : (data1 == data2) ? 0 : 1;

   return r;
}



// Operações sobre máscaras

function removerMascaraNumerica(v)
{
  v=v.replace(/[.]/g,'')
  v=v.replace(/,/g,'.')
  return eval(v)
}

var rmn = removerMascaraNumerica

function formatarNumero(v, decimais)
{
  v = new String(v);
  var index = v.indexOf('.', 0);

  v = v.replace(/\D/g,"");
  var tam = v.length;
  
  var n = (index == -1) ? decimais : decimais - (tam - index);

  // padding adicionando zeros ou truncando a entrada
  if (n >= 0)
    v += '000000'.substring(0, n);
  else
    v = v.substring(0, tam + n);

  return v_valor(v, decimais);
}

var fmt = formatarNumero

// Mascaras retiradas de http://www.tableless.com.br/mascaras-javascript-em-campos-de-formulario
//
// Obs: Não usar nome de campos com o mesmo nome da máscara
//      Usar o maxlength no html para evitar vazamentos

function mascara(o,f){
  v_obj=o
  v_fun=f
  setTimeout("execmascara()",1)
}

function execmascara(){
  v_obj.value=v_fun(v_obj.value)
}

function v_int(v){
  return v.replace(/\D/g,"")
}

function v_maiusculas(v){
  return v.toUpperCase()
}

function v_telefone(v){
  v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
  v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
  v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
  return v
}

function v_cep(v){
  v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
  v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
  return v
}

function v_cpf(v){
  v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
  v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
  v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
  //de novo (para o segundo bloco de números)
  v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
  return v
}

function v_cnpj(v){
  v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
  v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
  v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
  v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
  v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
  return v
}

function v_ie(v){
  v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito

  var tam = v.length;

  v=v.replace(/^(\d{2})(\d)/,"$1.$2")
  if (tam < 10)
  {
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3")
    v=v.replace(/^(\d{2}).(\d{3}).(\d{3})(\d)/,"$1.$2.$3-$4")
  }
  else
  {
    v=v.replace(/^(\d{2})\.(\d{4})(\d)/,"$1.$2.$3")
    v=v.replace(/^(\d{2}).(\d{4}).(\d{3})(\d)/,"$1.$2.$3-$4")
  }

  return v
}

function v_romanos(v){
  v=v.toUpperCase()             //Maiúsculas
  v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
  //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
  while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
    v=v.replace(/.$/,"")
  return v
}

function v_site(v){
  v=v.replace(/^http:\/\/?/,"")
  dominio=v
  caminho=""
  if(v.indexOf("/")>-1)
    dominio=v.split("/")[0]
  caminho=v.replace(/[^\/]*/,"")
  dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
  caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
  caminho=caminho.replace(/([\?&])=/,"$1")
  if(caminho!="")dominio=dominio.replace(/\.+$/,"")
  v="http://"+dominio+caminho
  return v
}

function v_valor2d(v){
  return v_valor(v,2)
}

function v_valor3d(v){
  return v_valor(v,3)
}

function v_valor4d(v){
  return v_valor(v,4)
}

function v_valor6d(v){
  return v_valor(v,6)
}

function v_valor(v, decimais){
  v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
  //v=v.replace(/(\d+)(\d{2})/,"$1,$2") //Insere a vírgula
  //v=v.replace(/(\d+)(\d{3},\d{2})$/g,"$1.$2"); //Coloca o primeiro ponto

  v=v.replace(new RegExp('(\\d+)(\\d{'+decimais+'})'),"$1,$2") //Insere a vírgula
  v=v.replace(new RegExp('(\\d+)(\\d{3},\\d{'+decimais+'})$', 'g'),"$1.$2"); //Coloca o primeiro ponto

  var qtdLoop = (v.length-3)/3;
  var count = 0;
  while (qtdLoop > count)
  {
    count++;
    v=v.replace(/(\d+)(\d{3}[.].*)/,"$1.$2"); //Coloca o resto dos pontos
  }

  v=v.replace(/^(0+[.]?)+(\d,)/g,"$2"); //remove "0" à esquerda
  return v
}

function v_data(v){
  v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
  
  if (v.length > 8)
    v = v.substring(0,8);
  
  v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca barra entre o segundo e o terceiro digito
  v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca barra entre o quinto e o sexto digito
  return v
}

function v_hora(v){
  v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
  v=v.replace(/(\d{2})(\d)/,"$1:$2") //Coloca dois-pontos entre o segundo e o terceiro digito
  return v
}

function v_uf(v){
  v=v.toUpperCase()
  if (v.length == 2 && ! v.match(/^(AC|AL|AM|AP|BA|CE|DF|ES|GO|MA|MG|MS|MT|PA|PB|PE|PI|PR|RJ|RN|RO|RR|RS|SC|SE|SP|TO)$/))
    v="";
  return v
}

function v_placaVeiculo(v)
{
  v=v.toUpperCase()
  v=v.replace(/^([A-Z]{0,2})[^A-Z]/,"$1")
  v=v.replace(/([A-Z]{3})(\D)/,"$1")
  v=v.replace(/([A-Z]{3})(\d{0,4}).*/,"$1$2")
  return v
}
