(function($){
	$.fn.ajaxMenu = function( options ) {
		
			var ajaxMenu = function( element , options){
				this.$menu = $(element);
				var _default = {
					item: 'a.mainmenu_link',
					parent: 'li',
					hidden: 'sport-nav-hidden',
					active: 'sport-nav-active',
					loading: 'sport-nav-loading',
					complete: 'sport-nav-complete',
					highlight: 'sport-nav-highlight',
					last_item: 'mainmenu_link_last',
					url: 'getdata.php?sec=menu&subsec=getAjaxNode'
				};
				this.options = $.extend(_default, options);
			};
			
			ajaxMenu.prototype = $.extend(ajaxMenu.prototype, {
				init: function(){
					
					this.bindEvents();
					
				},
				bindEvents: function( ) {
					var self = this;
					this.$menu.delegate(this.options.item, 'click', function(event){
						event.preventDefault();
						if( (' ' + this.className+' ').indexOf(' ' + self.options.last_item + ' ') > -1 ) { return; }
						self.$item = $(this).parents( self.options.parent + ':first' );
						self.showLoading();
						self.$menu.find('li.'+self.options.highlight).removeClass(self.options.highlight);
						if( !self.$item.hasClass( self.options.complete ) ) {
							self.getSubMenu();
						} else {
							self.showSubMenu();
						}
					});
					
				},
				getSubMenu: function(  ){
					$.ajax({
						url: this.options.url,
						data: { node_id: this.$item.attr('id'), node_type: this.$item.attr('node_type') },
						success: $.proxy(function( data ) {
							this.$item
								.addClass(this.options.complete)
								.children('a')
//								.removeClass(options.loading)
								.next()
								.removeClass(this.options.hidden)
								.html(data)
								.find('li[node_type=""]')
								.addClass( this.options.complete )
//								.find(options.item)
//								.bind('click', getSubMenu);
							this.showSubMenu();
//							this.bindEvents( this.$item );
							
						}, this)
					});
				},
				showSubMenu: function() {
					if ( !this.$item ) { return; }
					
					if( this.$item.hasClass(this.options.active) ) {
						this.$item.parent().children().removeClass(this.options.hidden);
						this.$item.removeClass(this.options.active);
						this.hideSubMenu();
					} else {
						this.$item.parent().children().addClass(this.options.hidden);
						this.$item
							.removeClass(this.options.hidden)
							.addClass(this.options.active)
							.addClass(this.options.highlight)
							.find('ul:first')
							.children(this.options.parent)
							.removeClass(this.options.hidden);
					}
				},
				
				hideSubMenu: function(){
					if ( !this.$item ) { return; }
					
					this.$item
						.find(this.options.parent)
						.addClass(this.options.hidden)
						.removeClass(this.options.active)
//						.children('a')
//						.next()
//						.addClass(this.options.hidden)
					
				},
				showLoading: function(){},
				hideLoading: function(){}
			});
		
		return this.each(function(){
			new ajaxMenu(this, options).init();
		});
		
	};
})(jQuery);

