/*
 * jQuery select replacement
 * http://crgdesign.com.br/blog/
 *
 * Copyright (c) 2009 Carlos Roberto Gomes Júnior
 * 
 * Revision: 1
 */
(function() {

jQuery.fn.selreplace = function(options) {

  settings = jQuery.extend({
     width: 200,
     selectbg: 'none',
     zindex:'',
     float:'none'
      }, options);
    
    
  return this.each(function(){  
     
     var select_element = $(this);
     //alert($(this).children("option[selected]").length);
     if($(this).children("option[selected]").length >0){
      var selected_text = $(this).children("option[selected]").text();
     } else {
      var selected_text = $(this).children("option:first").text();
     }
     
     var select_body = '<div class="selbox"><div class="selected">'+selected_text+'</div><ul></ul></div>';
          
     select_element.after(select_body).hide();
     
     var select = select_element.next(".selbox");
     var sel_option = select.children(".selected");
     var ul = select.children("ul");
     
     //select.css({border:"1px solid red"});
     //sel_option.css({border:"1px solid blue"});
     sel_option.css({background:'url('+settings.selectbg+') no-repeat right'})
     .click(function(){
        ul.show();
        return false;
     });     
     
     if($.browser.msie && $.browser.version <= 7){
      sel_option.css({display:'inline-block'});
     }
     
     var list = '';
     
     $(this).children().each(function(){
      if(this.nodeName == "OPTION"){
         list += '<li>'+$(this).text()+'</li>';
      }
     });
     
     select.css({width:settings.width, float:settings.float});
     
     if(settings.zIndex != ''){
       select.css({zIndex:settings.zIndex});
     }
     
     $("*").not(".selbox, .selected").click(function(){
       ul.hide();
     });
     
     ul.css({width:settings.width})
     .hide()     
     .html(list);
     
     ul.children("li").click(function(){
        var index = ul.children().index(this);
        select_element.attr("selectedIndex", index);
        sel_option.text($(this).text());
        ul.hide();
        select_element.trigger("change");
     })
     .css({position:'relative'})
     .hover(function(){
       $(this).addClass("m_over").removeClass("m_out");
     }, function(){
       $(this).addClass("m_out").removeClass("m_over");
     });
  });
  
};

})(jQuery);