var ProcessHandler = Class.create();
ProcessHandler.prototype = {
	initialize : function(contentClassName)
	{
		this.left_tab = $('left_menu_left_tab');
		this.right_tab = $('left_menu_right_tab');
		this.left_menu_containers = $$("div.left_menu_content");
		this.bindTabEvents();
		this.bindTopMenuEvents();
		this.bindLeftMenuEvents();
		if (contentClassName){
			this.bindContentEvents(contentClassName);
		}
	},
	
	bindTabEvents:function()
	{
		this.left_tab.onclick = this.switchTab.bindAsEventListener(this, true, this.left_tab);
		this.right_tab.onclick = this.switchTab.bindAsEventListener(this, false, this.right_tab);
	},
	
	switchTab:function(e, is_left, container)
	{
		var el = container.parentNode.parentNode;
		if(el.className.indexOf("selected_menu")!=-1){
			return;
		}
		this.removeName(this.left_tab.parentNode.parentNode, "selected_menu");
		this.removeName(this.right_tab.parentNode.parentNode, "selected_menu");
		Element.addClassName(el, "selected_menu");
		var types=["block", "none"];                              
		this.left_menu_containers[0].style.display = types[is_left ? 0:1];
		this.left_menu_containers[1].style.display = types[!is_left ? 0:1]; 
		
	},
	
	bindContentEvents : function(contentClassName){
		var list = $$('div.'+contentClassName);
		list.each(function(menu){
			menu.onmouseover = this.addName.bind(this, menu,  "over_new");
			menu.onmouseout = this.removeName.bind(this, menu,  "over_new");
		}.bind(this));
	},
	
	bindTopMenuEvents : function(){
		var menuTabs = $$("div.menu_tab");
		menuTabs.each(function(menu){
			menu.onclick = this.redirectTo.bind(this, menu.readAttribute("value"))
			var className = menu.hasClassName("first") ? "first_tab_selected" :  "tab_selected";
			menu.onmouseover = this.addName.bind(this, menu, className);
			menu.onmouseout = this.removeName.bind(this, menu, className);
		}.bind(this));
		var menu_holder = $$('div.drop_holder');
		menu_holder.each(function(menu){
			menu.onmouseover = this.addName.bind(this, menu.up(0).up(0),  "tab_selected");
			menu.onmouseout = this.removeName.bind(this, menu.up(0).up(0),  "tab_selected");
		}.bind(this));
	},
	
	redirectTo: function(value){
		if (value) {
			window.location.href = value
		}
	},
	
	addName : function(object, newClassName){
		Element.addClassName(object, newClassName);
	},
	
	removeName : function(object, ClassName){
		Element.removeClassName(object, ClassName);
	},
	
	bindLeftMenuEvents : function(){
		var menu_1 = $$('div.left_menu_subject');
		menu_1.each(function(menu){
			menu.onclick = this.ExpandMenu.bind(this, menu.up(0));
			menu.onmouseover = this.addName.bind(this, menu,  "over");
			menu.onmouseout = this.removeName.bind(this, menu,  "over");
		}.bind(this));
		//this.bindMenu_2(this);
		this.bindMenu_3(this);
	},
	/*
	bindMenu_2 : function(me){
		var menu_2 = $$('a.menu_2');
		menu_2.each(function(menu){
			var parent = menu.up(0);
			menu.onclick = me.expand_and_save_condition.bind(me, menu,"extended", me.bindMenu_2);
			menu.onmouseover = me.addName.bind(me, parent,  " ");
			menu.onmouseout = me.removeName.bind(me, parent,  " ");
		}.bind(me));
	},
	*/
	bindMenu_3 : function(me){
		var menu_3 = $$('a.submenu_list');
		menu_3.each(function(menu){
			var parent = menu.up(0);
			//menu.onclick = me.expand_and_save_condition.bind(me, menu, "submenu_content_expanded", me.bindMenu_3);
			parent.onmouseover = me.addName.bind(me, parent,  "submenu_content_expanded");
			parent.onmouseout = me.removeName.bind(me, parent,  "submenu_content_expanded");
		}.bind(me));
	},
	
	expand_and_save_condition : function(object, className, reAssignEventsFunc){
		var li = object.up(0);
		this.closeAllSiblings(li.up(0), className, object.up(0));
		reAssignEventsFunc(this);
		this.addName(li,  className);
		object.onmouseover = null;
		object.onmouseout = null;
		this.ExpandMenu(li, className);
		if(this.selected_menu_2)
			Element.removeClassName(this.selected_menu_2, "selected_title");
			this.selected_menu_2 = li;
			Element.addClassName(this.selected_menu_2, "selected_title");
	},
	
	closeAllSiblings : function(parentElement, className, object){
		var siblings = parentElement.childElements();
		if (siblings.size()){
			siblings.each(function(menu){
				if (menu != object){
					var container = menu.down("div");
					if (container) {
						Effect.BlindUp(container, {
							duration: 0.4
						});
						setTimeout(this.setElementAttributeValue.bind(this, container, "true"), 700);
					}
					else {
						this.hideSubMenu(menu)
					}
					this.removeName(menu, className);
				}
			}.bind(this));
		}
	},
	
	hideSubMenu : function(menu){
		menu_2 = menu.down("UL");
		if (menu_2 != undefined){
				menu.style.zIndex = "10";
				menu_2.style.display = "none";
		}
	},
	
	ExpandMenu : function(menu_1, className){
		var menu_2 = menu_1.down("ul");
		if (menu_2){
			var container = menu_2.parentNode;
			if (container.getAttribute("is_hidden") == "true"){
				this.setElementAttributeValue(container, "");
				menu_1.style.zIndex = "100";
				menu_2.style.visibility = "visible";
				Effect.BlindDown(container, { duration: 0.4 });
				setTimeout(this.setElementAttributeValue.bind(this, container, "false"), 700);
				menu_2.style.display = "block";
			}
			else if(container.getAttribute("is_hidden") == "false") {
				this.setElementAttributeValue(container, "");
				menu_1.style.zIndex = "10";
				Effect.BlindUp(container, { duration: 0.4 });
				setTimeout(this.setElementAttributeValue.bind(this, container, "true"), 700);
				Element.removeClassName(menu_1, className);
				//menu_2.style.visibility = "hidden";
				//menu_2.parentNode.style.display = "none";
			}
			else
				return;
		}
	},
	
	setElementAttributeValue:function(el, value)
	{
		el.setAttribute("is_hidden",value);
	}
}