(function($) {
  $.fn.rail = function(options)
  {
    var opts = $.extend({}, $.fn.rail.defaults, options);

    return this.each(function()
    {
      var $rail = $(this);
      var $container = $('div.container');

      $container.after('<div class="rr-shutter"><span class="toggle"></span></div>');

      var $close = $('.rr-shutter span.toggle');

      if($.browser.msie && ($.browser.version < 7))
      {
        $('.rr-shutter').addClass('rr-shutter-ie6');
      }
      else
      {
        $('.rr-shutter').addClass('rr-shutter-all');
      }

      $close.click(function()
      {
          if($rail.css("right")== "0px" && $rail.width() == 114)
          {
            $rail.hide();
            $rail.add('div.rr-shutter').stop().animate({right: -114},opts.toggleTiming,opts.toggleEasing,function()
            {
              $close.css({backgroundPosition:'-10px center'});
            });
          }
          else if($rail.css("right")== "0px" && $rail.width() == 230)
          {
            $rail.hide();
            $rail.add('div.rr-shutter').stop().animate({right: -223},opts.toggleTiming,opts.toggleEasing,function()
            {
              $('div.rr-shutter').css({width:'128px',right:'-103px'});
              $rail.css({width:'114px',right:'-103px'});
              $rail.removeClass('rr-expanded');
              $close.css({backgroundPosition:'-10px center'});
            });
          }
          else {
            $rail.add('div.rr-shutter').stop().animate({right:0},opts.toggleTiming,opts.toggleEasing,function()
            {
              $rail.show();
              $close.css({backgroundPosition:'1px center'});
            });
          }
      });

      $close.hover(
        function()
        {
          $(this).css({backgroundColor:'#f9f9f9'});
        },
        function()
        {
          $(this).css({backgroundColor:''});
        }
      );

      $rail.bind('rail:mouseapproach',function(event,pageX,pageY)
      {
        if(pageX > ($(window).width()-40))
        {
          if($rail.css("width") == opts.closeWidth+"px")
          {
            $rail.stop().animate({width:opts.closeWidth+20},opts.toggleTiming,opts.toggleEasing);
          }
        }
        else
        {
          if($rail.css("width") == (opts.closeWidth+20)+"px")
          {
            $rail.stop().animate({width:opts.closeWidth},opts.toggleTiming,opts.toggleEasing);
          }
        }
      });
    });
  };

  $.fn.rail.defaults =
  {
    openWidth: 120,
    closeWidth: 11,
    toggleTiming: 500,
    toggleEasing: "easeOutQuint"
  };
})(jQuery);

