/*
 * jQuery UI Ringce Menu
 * version: 0.1b (2009-10-18)
 * @requires jQuery v1.3.1 or later
 * @requires jQuery UI v1.7 or later

 * Examples and documentation at: http://code.ringce.com
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */                                                                        
 
(function($) { 
$.widget("ui.ringceMenu",{

    _init: function(){     
        var widget = this;
        $(this.options.menuItemSelector).unbind('click').bind('click', function(e){
            widget.select(this);
        });               
        $(this.options.childSelector + ":not(:first)").hide();
        $(this.options.menuItemSelector + ":first").addClass(this.options.selectedItemClass);
        
        if(this.options.selectFirst){                                                             
            var selectionClass = this.options.menuItemSelector + ":first";
            this.select(selectionClass);
        }
    },                    
    select: function(menuItem){         
        if($(menuItem).hasClass(this.options.selectedItemClass)) return;
       var selectionClass = this.options.menuItemSelector + "." + this.options.selectedItemClass;
       var catts = {height:'toggle',  opacity:'toggle'};
       var natts = {height:'toggle', opacity:'toggle'};               
       var current = $(selectionClass);
       var next = $(menuItem);        
       var currentChild =  this._contentForMenuItem(current);
       var nextChild =  this._contentForMenuItem(next);  
       widget = this;             
       currentChild.stop().animate(catts, {queue:false, 
           easing:this.options.unselectAnimation, duration:this.options.unselectDuration,
              complete:function(){
                  $(this).hide();
                  $(selectionClass).removeClass(widget.options.selectedItemClass);
                  $(menuItem).addClass(widget.options.selectedItemClass);        
              }});  
       nextChild.stop().animate(natts, {queue:false, easing:this.options.selectAnimation, 
           duration:this.options.selectDuration,
              complete:function(){                                               
                  $(menuItem).addClass(widget.options.selectedItemClass);                        
                  $(this).show();  
                  var index = $(widget.options.childSelector).index(nextChild[0]);                                                                                 
                  $(widget.options.childSelector + ":not(:eq(" + index + "))").hide();
                  
              }});
    },
    _contentForMenuItem: function(menuItem){
       var index = $(this.options.menuItemSelector).index(menuItem[0]);
       return $(this.options.childSelector + ":eq(" + index + ")");
    }                                                                      
});      
    
$.extend($.ui.ringceMenu, {
   defaults: {
       selectedItemClass: 'selected',
       menuItemSelector: '.ringceMenuItem',
       childSelector: '.ringceMenuContent',
       unselectAnimation: 'easeInBack',  
       unselectDuration: 500,
       selectAnimation: 'easeInBack',    
       selectDuration: 600,
       selectFirst: true
   }
 });          
})(jQuery);