(function($)     {
$f.fn.extend(     {
jqf1: function() {

  //Textos dos inputs
  //Inputs texts
  var jqf1InpFileText   = 'Procurar arquivo...';
  var jqf1InpFileText2  = 'Use o bot&atilde;o para procurar';
  var jqf1InpSearchText = 'Digite aqui para filtrar';

  //Detectar navegador
  //Browser detection
  var jqf1Browser = navigator.userAgent.toLowerCase();

  var j1f1Tag = $f(this)[0].tagName;
  if ( (j1f1Tag != "SELECT") && (j1f1Tag != "INPUT") && (j1f1Tag != "TEXTAREA") && (j1f1Tag != "BUTTON") ) {
  //Transforms all form elements inside the selected element.
  //Transforma tudo dentro do elemento escolhido.

    // Update select values to original selects.
    // Funcao que repassa valores dos select criados aos originais.
    $f.jqf1SelectValue = function(tamanho,idJqf1,idSelect,jqf1SelOptVal,jqf1SelOptHtml){
      var jqf1SelTempVal = $f('#'+idSelect).val();
      if (jqf1SelTempVal == null ) { var jqf1SelTempVal = Array (tamanho); }
      if ($f('#'+idSelect).attr('multiple') == true) {
        var jqf1Index = jQuery.inArray(jqf1SelOptVal, jqf1SelTempVal);
        if(jqf1Index== -1) jqf1SelTempVal.push(jqf1SelOptVal); else jqf1SelTempVal.splice(jqf1Index,1);
        $f('#'+idSelect).val(jqf1SelTempVal);
        /*Funciona no select especial*/ $f('#'+idJqf1).text($f('#'+idSelect+' option[selected]').size()+' item(s)');
        $f('#'+idSelect).trigger('change');
      } else {
        $f('#'+idJqf1).text(jqf1SelOptHtml);
        if (jqf1SelOptVal != jqf1SelTempVal) {
          $f('#'+idSelect).val(jqf1SelOptVal);
          $f('#'+idSelect).trigger('change');
        }
      }
    }

    // Manipulation string function for select with search field. (By Raimundo Neto)
    // Funcao de manipulacao de string para Select com Search (Por Raimundo Neto)
    $f.jqf1Strstr = function(haystack, needle, bool) {
      var pos = 0;
      haystack += '';
      pos = haystack.indexOf(needle);
      if (pos == -1) {
        return false;
      } else {
        if (bool) {
          return haystack.substr(0, pos);
        } else {
          return haystack.slice(pos);
        }
      }
    }

    $f(this).addClass('jqf1');
    // Global vars
    // Declarando variaveis globais

    var jqf1InpArray = $f('.jqf1 input');
    var jqf1TxtArray = $f('.jqf1 textarea');
    var jqf1SelArray = $f('.jqf1 select');
    var jqf1BtnArray = $f('.jqf1 input[type="button"], .jqf1 input[type="submit"], .jqf1 button');
    var jqf1TxtInner;

	//Textarea build
    function jqf1EscreveTextarea(tipo,name,contador,conteudo){
      jqf1TxtInner = "<div class='jqf1"+tipo+" jqf1"+tipo+name+" jqf1"+tipo+contador+" jqf1Normal'><div class='div'><div><b class='jqf1_a'></b><b class='jqf1_b'></b><b class='jqf1_c'></b><b class='jqf1_d'></b></div>"+conteudo+"</div></div>";
    }
    function jqf1TransformaTextarea(tipo,contador,wid,hei) {
      $f('.jqf1'+tipo+contador).attr('style','width:'+(wid+2)+'px;height:'+(hei)+'px;');
      $f('.jqf1'+tipo+contador+' .div').attr('style','width:'+(wid)+'px;');
      $f('.jqf1'+tipo+contador+' .jqf1_b').attr('style','margin-left:'+(wid-2)+'px;');
      $f('.jqf1'+tipo+contador+' .jqf1_c').attr('style','margin-top:'+(hei-3)+'px;');
      $f('.jqf1'+tipo+contador+' .jqf1_d').attr('style','margin:'+(hei-3)+'px 0px 0px '+(wid-2)+'px;');
    }
    // Inputs build
    jQuery.each(jqf1InpArray, function(i) {
    var jqf1InpWid = $f(this).width();
    if ( ($f(this).attr("jqf1") == null) && (jqf1InpWid != 0) ) {

      if ($f(this).attr("type") != "button" && $f(this).attr("type") != "submit"){
        $f(this).attr("jqf1","ok");
      }
      var jqf1InpName = $f(this).attr("name");
      var jqf1InpId = $f(this).attr("id");
      var jqf1InpWid = $f(this).width();

    }
    });

    // Selects
    jQuery.each(jqf1SelArray, function(i) {
    var jqf1SelWid        = $f(this).width();
    if ( ($f(this).attr("jqf1") == null) && (jqf1SelWid != 0) ) {
      $f(this).attr("jqf1","ok");

      var jqf1Multiple      = $f(this).attr('multiple');
      var jqf1Special       = $f(this).attr('size');
      var jqf1Search        = $f(this).attr('search');

      var jqf1SelHei        = $f(this).height();
      var jqf1SelName       = $f(this).attr("name");
      var jqf1SelId         = $f(this).attr("id");
      var jqf1SelClick      = $f(this).attr("onclick");
      var jqf1SelOpenHeight = $f(this).attr('openheight');

      var jqf1SelFocus      = 0;
      $f(this).removeAttr("onclick");

      // Select Labels [for=id] toggling created elements
      // Select Labels [for=id] executando toggle para os elementos criados
      var jqf1SelLabel = $f("label[for='"+jqf1SelId+"']");
      if (jqf1SelLabel != null) {
        $f(jqf1SelLabel).attr("for","");
        $f(jqf1SelLabel).click( function(){
          if ($f('.jqf1Sel'+i+' .jqf1SelList ul').css('display') == 'none') {
            $f('.jqf1Sel .jqf1SelList ul').hide();
          }
          $f('.jqf1Sel'+i+' .jqf1SelList ul').slideToggle();
        });
      }
      // Selects
        // Select Normal
        if (jqf1Browser.indexOf('safari/') != -1){ jqf1SelWid = jqf1SelWid+27 }
        $f(this).before("<div class='jqf1Sel jqf1Sel"+jqf1SelName+" jqf1Sel"+i+"'><div class='jqf1SelList'><ul></ul></div><div class='jqf1SelAtivo'><a href='javascript:void(0);' id='jqf1SelA"+i+"'></a><span></span></div></div>");

      // Select Options
      var jqf1SelOptArray = $f(this).children("option");
      var jqf1SelOptCount = 0;
      jQuery.each(jqf1SelOptArray, function(z) {
        var jqf1SelOptHtml = $f(this).html();
        var jqf1SelOptVal = $f(this).val();

          // Normal
          $f('.jqf1Sel'+i+' .jqf1SelList ul').append('<li class="jqf1Opt" onclick="$f.jqf1SelectValue(\''+jqf1SelOptArray.size()+'\',\'jqf1SelA'+i+'\',\''+jqf1SelId+'\',\''+jqf1SelOptVal+'\',\''+jqf1SelOptHtml+'\');"><a href="javascript:void(0)"><span>'+jqf1SelOptHtml+'</span></a></li>');
          if ($f(this).attr('selected') == true) { $f('#jqf1SelA'+i).text(jqf1SelOptHtml); }
      });
      // Select Styles
      $f(this).css('margin-left','-'+jqf1SelWid+'px').hide();
      $f('.jqf1Sel'+i).attr('style','width:'+jqf1SelWid+'px;');
      $f('.jqf1Sel'+i+' .jqf1SelList').attr('style','width:'+jqf1SelWid+'px;');
      jqf1SelWid = jqf1SelWid-9;
      $f('.jqf1Sel'+i+' ul').css('width',jqf1SelWid+'px');
      $f('.jqf1Sel'+i+' ul').hide();
      jqf1SelWid = jqf1SelWid-16;
      $f('#jqf1SelA'+i).attr('style','width:'+(jqf1SelWid)+'px;').click(jqf1SelClick);
      $f('.jqf1Sel'+i+' .jqf1SelAtivo span').attr('style','width:'+(jqf1SelWid)+'px;');
      // Variaveis temporaria Multi e Timer
      var jqf1Time=new Array();
      var jqf1TempClass = '';
      if ( (jqf1Multiple == true) && (jqf1Special != '1') ) {
        jqf1TempClass = 'Multi';
      }
      // Select Binds
      function jqf1ToggleSelect(item) {
        if ($f('.jqf1Sel'+item+' .jqf1SelList ul').css('display') == 'none') {
          $f('.jqf1Sel .jqf1SelList ul').hide();
          $f('.jqf1Sel'+item+' input').hide();
        }
        $f('.jqf1Sel'+i+' .jqf1SelList ul').slideToggle();
        $f('.jqf1Sel'+i+' input').toggle();
      }
        $f('.jqf1Sel'+i+' .jqf1SelAtivo').click( function(){ jqf1ToggleSelect(i) });
        $f('.jqf1Sel'+i+' .jqf1SelAtivo a').focus( function(){
        $f('.jqf1Sel'+i+' .jqf1SelAtivo').trigger('click');
      });
      $f('.jqf1Sel'+jqf1TempClass+i+'').mouseover(function(){
        clearTimeout(jqf1Time[i]);
        $f('#jqf1Search'+i+'').unbind('blur');
      });      if ( (jqf1Multiple == true) && (jqf1Special != '1') ) {
        $f('.jqf1Sel'+jqf1TempClass+i+'').mouseout(function(){
          jqf1Time[i] = setTimeout("$f('#jqf1Search"+i+"').attr('value','').keyup();",10000);
        });
      } else {
        $f('.jqf1Sel'+i+'').mouseout(function(){
          jqf1Time[i] = setTimeout("$f('#jqf1Search"+i+"').attr('value','').keyup().hide();$f('.jqf1Sel"+i+" .jqf1SelList ul').slideUp();",2000);
          $f('#jqf1Search'+i+'').unbind('blur');
        });
      }

      if (jqf1Multiple == false) {
        $f('.jqf1Sel'+i+' li').click( function() {
          $f('.jqf1Sel'+i+' .jqf1SelList ul').fadeOut('normal');
        });
      } else {
        $f('.jqf1Sel'+i+' li').click( function() {
          $f(this).toggleClass('jqf1SelChecked');
        });
        $f('.jqf1SelMulti'+i+' li').click( function() {
          $f(this).toggleClass('jqf1SelChecked');
        });
      }

      $f('#jqf1Search'+i).bind('keyup', function(){
        jqf1SearchText = $f.trim($f(this).val());
        $f(".jqf1Sel"+jqf1TempClass+i+" .jqf1Opt").each(function(i,e){
          vRowText = $f(e).find('a span').html();
          vResult = $f.jqf1Strstr(vRowText.toLowerCase(), jqf1SearchText.toLowerCase());
          if (vResult == false && jqf1SearchText != '') {
            $f(e).hide();
          } else {
            $f(e).show();
          }
        });
      });
    }
    });

  }// FIM DO IF

  //Faz updade se executado para um elemento select.
  if ($f(this)[0].tagName == "SELECT") {

    var j1f1UpSelName = $f(this).attr('name');
    var jqf1Multiple = $f(this).attr('multiple');
    var jqf1Special = $f(this).attr('size');
    $f(this).show();
    $f(this).removeAttr("jqf1");
    if (jqf1Multiple == true) {
      if (jqf1Special != '1') {
        $f('.jqf1SelMulti'+j1f1UpSelName).remove(); 
      }
    } else {
      $f('.jqf1Sel'+j1f1UpSelName).remove(); 
    }
    var parentSel = $f(this).parent();
    parentSel.jqf1();
    if (parentSel[0].tagName != 'FORM') {
      parentSel.removeClass('jqf1');
    }

  }

}
});
})(jQuery);

