(function($){

/**
 * Menu itemek
 */
window.MenuItem=function(element,options) {
	var This=this;
	this.options=$.extend({
		collector: false,
		clickFunction: function(){return ''}
	}, options || {});

	this.element=$(element);
	this.ID=this.element.attr("data-MenuItem-ID");
	this.element.attr('data-MenuItem',this.ID);

	$(this.element).hover(function(){This.elementHoverOn()},function(){This.elementHoverOut()});

	$(".menu-item-dropdown-btn",this.element).hover(function(){This.dropdownBtnHoverOn();},function(){This.dropdownBtnHoverOut();})
	.click (
		function() {
			if($(This.element).toggleClass("menu-item-dropdown-clicked"));
			if($(This.element).hasClass("menu-item-dropdown-clicked")) {
				This.dropdownBtnClickedOn();
			} else {
				This.dropdownBtnClickedOut();
			}
		}
	);
}

var MenuItem=window.MenuItem;

MenuItem.prototype={};
//egyszerűség kedvéért a jQuery extend fgv-ét használjuk a statikus és példány szintű elemeknél is
MenuItem.extend = MenuItem.prototype.extend = $.extend;

MenuItem.extend({
	
});

MenuItem.prototype.extend({
	elementHoverOn: function(){
		$(this.element).addClass("menu-item-hover");
	},
	elementHoverOut: function(){
		$(this.element).removeClass("menu-item-hover");
	},
	dropdownBtnHoverOn : function(){
		$(this.element).addClass("menu-item-dropdown-hover");
	},
	dropdownBtnHoverOut : function(){
		$(this.element).removeClass("menu-item-dropdown-hover");
	},
	dropdownBtnClickedOn: function(){
		$(document).trigger("myvip-menu-hide");
		var This=this;
		if(This.options.collector){
			$.each(This.options.collector.menuItems,function(id,inst){
				if(typeof(inst)!="undefined"){
					if (inst.ID!=This.ID) {
						$(inst.element).removeClass("menu-item-dropdown-clicked")
					}
				}
			});
		}

		window.ajaxLoader.removeSlotLoader('.menu-dropdown-content-inner');

		if(This.options.collector.currentRequest){
			This.options.collector.currentRequest.abort();
		}

		$(".menu-dropdown-wrapper .menu-dropdown-content-inner").html("");
		$(".menu-dropdown-wrapper .menu-dropdown-content").stop(false,false).hide();
		$(".menu-dropdown-wrapper").stop(false,false).show();
		if(!isModernBrowser()){
			$(".site-body").css("marginTop",250);
		}
		window.BannerHandler.hideAll();
		$(".menu-dropdown-wrapper .menu-dropdown-content").stop(false,false)
		.slideDown(100, function(){
			$(document).trigger("myvip-menu-show");
//			window.ajaxLoader.addSlotLoader('.menu-dropdown-content-inner');
		});


		This.options.collector.currentRequest=This.options.clickFunction();
		
		This.options.collector.currentRequest.complete(
			function(response){
				$(".menu-dropdown-wrapper .menu-dropdown-content-inner").html(response.responseText);
//				window.ajaxLoader.removeSlotLoader('.menu-dropdown-content-inner');
				This.currentRequest=null;
			}
		);
	},
	dropdownBtnClickedOut: function(){
		$(".menu-dropdown-wrapper .menu-dropdown-content").stop(false,false).slideUp(
			100,function(){
				$(".menu-dropdown-wrapper").stop(false,false).hide();
				$(document).trigger("myvip-menu-hide");
				window.BannerHandler.showAll();
				if($.browser.msie && parseInt($.browser.version)<8){
					$(".site-body").css("marginTop",0);
				}
			}
		);
	}
});

/**
 * Menu
 */
window.Menu=function(element,options){
	this.options=$.extend({
		'menuitemSelector': '.menu-item'
	},options || {});
	var This=this;
	this.element=$(element);
	this.menuItems=[];
	$(This.options.menuitemSelector,$(element)).each(
		function() {
			This.menuItems[$(this).attr("data-MenuItem-ID")]=
				new MenuItem(this,
					{
						collector:This,
						clickFunction: This.options.clickFunctions['click_'+$(this).attr("data-MenuItem-ID")]
					});
		}
	);
	this.currentRequest=null;
};
var Menu=window.Menu;
Menu.extend=Menu.prototype.extend=$.extend;

Menu.prototype.extend({
	getMenuItem: function(id) {
		return This.menuItems[id];
	}
});

})(jQuery)



