
$.fn.customSelect = function()
  {
  return this.filter('select').each(
    function()
      {
      var instance = this;

      obj = $(this);

      var select   = $(document.createElement("DIV")).addClass(this.className);
      var relative = $(document.createElement("DIV")).attr('style', 'position: relative;');
      var selected = $(document.createElement("DIV")).addClass('selected').html(this.title);
      var options  = $(document.createElement("DIV")).addClass('options');

      var index = -1;

      obj.find('option').each(
        function(i)
          {
          var option = $(document.createElement("DIV")).attr('index', ++index).attr('value', $(this).attr('value')).addClass('option').html($(this).html())

          option.mouseover(
            function()
              {
              $(this).addClass('optionhover');
              }
            );

          option.mouseout(
            function()
              {
              $(this).removeClass('optionhover');
              }
            );

          option.click(
            function()
              {
              var onchange = instance.onchange && instance.selectedIndex != $(this).attr('index');
              instance.selectedIndex = $(this).attr('index');
              if (onchange)
                instance.onchange();
              selected.html($(this).html());
              $(options).hide();
              return false;
              }
            );

          $(options).append(option);
          }
        );

      select.append(relative.append(options)).append(selected);

      obj.hide().before(select);

      if (options.children().size())
        options.children().eq(instance.selectedIndex).click();

      var blur = function(e)
        {
        if(jQuery.inArray(e.target, $(select).find('*').andSelf()) < 0)
          $(options).hide();
        }

      $(select).click(
        function()
          {
          $('.options').not(options).hide();
          if (!$(options).is(':visible'))
            {
            options.show();
            $(document).bind('click', blur);
            }
          else
            {
            options.hide();
            $(document).unbind('click', blur);
            }
          }
        );
      }
    );
  }
