/*|---------------------------------->>  <<----------------------------------|

Include para ser usado na estrutura padrão dos sites. deve chamado
no arquivo head.inc.php.

Sr. Programador, todas as funções em javascript que serão utilizadas no site
deverão serem declaradas apenas neste arquivo.

|---------------------------------->>  <<----------------------------------|*/

// Nova valida_dinamico
campos_obrigatorios         = new Array();
campos_inteiros             = new Array();
campos_float                = new Array();
campos_html                 = new Array();
nomes_campos                = new Array();
minimo_caracteres_campos    = new Array();
abas_campos                 = new Array();
campos_upload               = new Array();

var er_int          = /[^0-9,.]/;
var er_float        = /[^0-9,.]/;


function obrigatorio(campo,label)
{
    nomes_campos[campo] = label;
    return campos_obrigatorios.push(campo);
}

// Método inArray para javascript
function inArray(vetor,value)
{
    var i;
    for (i in vetor) {
        if (vetor[i] === value) {
            return true;
        }
    }
    return false;
}

function valida_dinamico2(form)
{
    erro = "";
    elemento_foco = "";
    direcionar_aba = null;

    if(campos_html.length > 0)
        tinyMCE.triggerSave();

    for(n = 0;n < form.elements.length; n++)
    {
        elemento = form.elements[n];

        // Isso é pra o elemento não ficar sem id
        if(!elemento.id)
            form.elements[n].id = "_form_elemento_"+n;

        // Campos obrigatórios
        if(inArray(campos_obrigatorios,elemento.name) && (elemento.value == "" && !(inArray(campos_upload, elemento.name) && (form["valor[" + elemento.name.replace(/^campo_/, "") + "]"].value != "" || elemento.value != "") ))) // Verifica também os casos especiais de campos de upload
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            erro += "- "+nome_campo+": campo obrigatório.";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Campos inteiros
        if(elemento.value != "" && inArray(campos_inteiros,elemento.name) && er_int.test(elemento.value) == true)
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            erro += "- "+nome_campo+": valor inválido digitado. O valor do campo deve ser um número inteiro.";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Campos float
        if(elemento.value != "" && inArray(campos_float,elemento.name) && er_float.test(elemento.value) == true)
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            erro += "- "+nome_campo+": valor inválido digitado. O valor do campo deve ser numérico.";

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Mínimo de caracteres
        if(minimo_caracteres_campos[elemento.name] && elemento.value.length < minimo_caracteres_campos[elemento.name])
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            erro += "- "+nome_campo+": o campo deve conter no mínimo "+minimo_caracteres_campos[elemento.name]+" caracteres.";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }
    }

    if(erro == "")
    {
        return true;
    }
    else
    {
        alert(erro);
        try
        {
            if(tabPane1 && direcionar_aba != null)
                tabPane1.setSelectedIndex(direcionar_aba);
            elemento_foco.focus();
            elemento_foco.select();
        }
        catch(err)
        {

        }
        return false;
    }
}

///////////

function meio_largura(largura)
{ // Parâmetro: númerico, largura da janela pop-up
    var meia_janela = largura/2;
    tamanho_largura = screen.width/2;
    dist_lateral = (tamanho_largura) - meia_janela;
    return dist_lateral;
}

function meio_altura(altura)
{ // Parâmetro: númerico, Altura da janela pop-up
    var meia_janela = altura/2;
    tamanho_altura = screen.height/2;
    dist_topo = (tamanho_altura) - meia_janela;
    return dist_topo;
}

function pop_info()
{
    // Função para produtos passados por id no index (link no email)
    var largura 	= 450;
    var altura 		= 400;

    var esquerda	= meio_largura(largura);
    var topo 		= meio_altura(altura);

    window.open('http://www.maisempresas.com/pop_info.htm','pop_info','width='+largura+', height='+altura+', top='+topo+', left='+esquerda);
}

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];}
}

function soNums(e,args)
    {
    // Função que permite apenas teclas numéricas e
    // todos os caracteres que estiverem na lista
    // de argumentos.
    // Deve ser chamada no evento onKeyPress desta forma
    //  onKeyPress ="return (soNums(event,'(/){,}.'));"
    // caso queira apenas permitir caracters

        if (document.all){var evt=event.keyCode;} // caso seja IE
        else{var evt = e.charCode;}	// do contrário deve ser Mozilla
        var chr= String.fromCharCode(evt);	// pegando a tecla digitada
        // Se o código for menor que 20 é porque deve ser caracteres de controle
        // ex.: <ENTER>, <TAB>, <BACKSPACE> portanto devemos permitir
        // as teclas numéricas vão de 48 a 57
        if (evt <20 || (evt >47 && evt<58) || (args.indexOf(chr)>-1 ) ){return true;}
        return false;
    }

function evita_letra(tecla)
{
     if (tecla.keyCode < 45 || tecla.keyCode > 57 || tecla.keyCode == 47 || tecla.keyCode == 45 || tecla.keyCode == 46)
          tecla.returnValue = false;
}
function FormataData(campo,formname,teclapres)
{ // Máscara para os campos de data
    var tecla = teclapres.keyCode;
    vr = document[formname][campo].value;
    vr = vr.replace( ".", "" );
    vr = vr.replace( "/", "" );
    vr = vr.replace( "/", "" );
    tam = vr.length + 1;

    if ( tecla != 9 && tecla != 8 )
    {
        if ( tam > 2 && tam < 5 )
            document[formname][campo].value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
        if ( tam >= 5 && tam <= 10 )
            document[formname][campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 );
    }
}

function testa_data(dta, formname, campo)
{ // função complementar para testar a validade da data
    if(!isdate(dta))
    {
        alert('Digite uma data válida');
        document[formname][campo].value = '';
        document[formname][campo].focus();
        return false;
    }
}

//Verifica se uma data com mês e ano é válida
function isdate2(obj){
var mes, ano;
var retval = false;
ano=obj.substring(3,7);
//alert(obj);
if (obj != ""){
   if (obj.length != 7 || obj.substring(2,3)!="/") {
           retval = false;
   }
   else {
      mes = obj.substring(0,2);
      if (nochars(mes) && parseInt(mes,10) > 0 && parseInt(mes,10) <= 12){
         mes = parseInt(mes,10);
         if (nochars(ano) && parseInt(ano,10) >= 0000) {
            if ((parseInt(ano,10) % 4) == 0) {
               bissexto = 1;
            }
            else {
               bissexto = 0;
            }
            retval = true;
         } else {
             retval = false;
         }
      } else {
              retval = false;
      }
   }
}
else {
     retval = true;
}
//alert(retval);
return retval;
}

function testa_hora(hora, formname, campo)
{ // função complementar para testar a validade da data
    if(!is_hora(hora))
    {
        alert('Digite uma hora válida');
        document[formname][campo].value = '';
        document[formname][campo].focus();
        return false;
    }
}

function is_hora(horas, formname, campo)
{
    var hora, minuto;
    var retval = false;
    hora = horas.substring(0,2);
    minuto = horas.substring(3,5)
    if(hora < 24 && minuto < 60)
        retval = true;

    return retval;
}

//Verifica se é uma data válida
function isdate(obj){
var mes, dia, ano;
var retval = false;
ano=obj.substring(6,10);
//alert(obj);
if (obj != ""){
   if (obj.length != 10 || obj.substring(2,3)!="/" || obj.substring(5,6)!="/") {
   }
   else {
      mes = obj.substring(3,5);
      if (nochars(mes) && parseInt(mes,10) > 0 && parseInt(mes,10) <= 12){
         mes = parseInt(mes,10);
         if (nochars(ano) && parseInt(ano,10) >= 0000) {
            if ((parseInt(ano,10) % 4) == 0) {
               bissexto = 1;
            }
            else {
               bissexto = 0;
            }
            dia = obj.substring(0,2);
            if (nochars(dia)){
               dia = parseInt(dia,10);
               if (((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) && (dia >= 1 && dia <= 31)) ||
                  ((mes==4 || mes==6 || mes==9 || mes==11) && (dia >= 1 && dia <= 30)) ||
                  (mes==2 && dia >= 1 && dia <= (28 + bissexto))) {
                  retval=true;
               }
               if(ano < 1900 || ano > 3000)
                   retval=false;
            }
         }
      }
   }
}
else {
     retval = true;
}
//alert(retval);
return retval;
}

// Verifica se existem letras na variavel
function nochars(strval){
  var retval = true;
  for (var i = 0; i < strval.length; i++){
     if (strval.substring(i,i+1) < "0" || strval.substring(i,i+1) > "9"){
        retval=false;
        break;
     }
  }
  return retval;
}

function FormataHora(campo,formname,teclapres){
    var tecla = teclapres.keyCode;
    vr = document[formname][campo].value;
    vr = vr.replace( ":", "" );
    tam = vr.length + 1;

    if ( tecla != 9 && tecla != 8 ){
        if ( tam > 2 && tam < 5 ){
            document[formname][campo].value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
        }
    }
}

function FormataLista(tecla)
{
    if (tecla.keyCode < 44 || tecla.keyCode > 57 || tecla.keyCode == 47 || tecla.keyCode == 45 || tecla.keyCode == 46)
         tecla.returnValue = false;
}

function FormataValor(campo, formname) {
    var form = document[formname];
    form[campo].value = FiltraCampo(campo, formname);
    vr = form[campo].value;
    tam = vr.length;

    if ( tam <= 2 )
         form[campo].value = vr ;
     if ( (tam > 2) && (tam <= 5) )
         form[campo].value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ;
     if ( (tam >= 6) && (tam <= 8) )
         form[campo].value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
     if ( (tam >= 9) && (tam <= 11) )
         form[campo].value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
     if ( (tam >= 12) && (tam <= 14) )
         form[campo].value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
     if ( (tam >= 15) && (tam <= 17) )
         form[campo].value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;

}

function SaltaCampo(campo, formname, prox, tammax, event){
    var form = document[formname];
    var tecla = event.which;
    vr = form[campo].value;
    tam = vr.length;

     if (tecla != 0 && tecla != 9 && tecla != 16 ){
        if (tam == tammax && prox && tammax){
            if (form[prox])
                form[prox].focus();
        }
    }

}

// Mensagem rápida de um usuário pra outro
function msg_rapida_ajax(usr_id_to, cont_nome_usr_id_to)
{
    msg = prompt("Mensagem rápida para " + cont_nome_usr_id_to + ":", "");
    if(msg)
        xajax_agenda_msg_ajax(usr_id_to, msg);
}


