var menu_top_flag = 0;

InretsMenuTop = Class.create({
	initialize: function(options) {
	  this.options = {
	     menu_container:				''
	  };
	  
	  Object.extend(this.options, options || { });
	  
	  var el_tree = $(this.options.tree_container);
	  
	  var elements = $$("#" + this.options.menu_container + " .hmenu-link");
	  elements.each(function(a) {
		this.hideMenu(a);
		
	  	a.observe("mouseover", function(ev) {
	       this.mouseover(ev);
	    }.bind(this));
	    
	    a.observe("mouseout", function(ev) {
	       this.mouseout(ev);
	    }.bind(this));
	
	  }.bind(this));
	  
	  
	  var elements = $$("#" + this.options.menu_container + " .hmenu-menu");
	  elements.each(function(div) {

	    var div_childs = div.childElements();
	    div_childs.each(function(child) {
			child.observe("mouseover", function(ev) {
		       mouseoverChildHmenu(ev);
		    }.bind(this));
		});
	    
	    div_childs.each(function(child) {
			child.observe("mouseout", function(ev) {
		       mouseoutChildHmenu(ev);
		    }.bind(this));
		});
	
	  }.bind(this));

	},
	
	
	mouseover: function(ev) {
	  var a = ev.element();
	  this.showMenu(a);
	},
	
	mouseout: function(ev) {
	  var a = ev.element();
	  menu_top_flag = 0;
	  this.hideMenu.delay(0.01, a);
	},
	
	showMenu: function(a) {
		el_childs = a.up().childElements();
		el_childs.each(function(child) {
			if (child.className == 'hmenu-menu')
				child.show();
		});
	},
	
	hideMenu: function(a) {
		if (menu_top_flag.toString() != a.id.substr(11,1)) { //hmenu_link_
			el_childs = a.up().childElements();
			el_childs.each(function(child) {
				if (child.className == 'hmenu-menu')
					child.hide();
			});
			menu_top_flag = 0;
		}
	}

});

function mouseoverChildHmenu(ev) {
	var a = ev.element();
	menu_top_flag = a.up().id.substr(11,1); //hmenu_menu_
	a.up().show();
}

function mouseoutChildHmenu(ev) {
	var a = ev.element();
	if (menu_top_flag.toString() == a.up().id.substr(11,1)) {; //hmenu_menu_
		a.up().hide();
	}
}

InretsTree = Class.create({
	initialize: function(options) {
	  this.options = {
	     tree_container:				'',
	     item_lvl1_class:               '',
	     item_lvl2_class:               '',
	     item_lvl3_class:               '',
	     closed_class:                  '',
	     opened_class:                  '',
	     item_lvl1_container_class:     '',
	     item_lvl2_container_class:     '',
	     item_lvl3_container_class:     '',
	     item_lvl1_active_class:		'',
	     item_lvl2_active_class:		''
	  };
	  Object.extend(this.options, options || { });

	  var el_tree = $(this.options.tree_container);
	  var elements = $$("#" + el_tree.id + " a");

	  var elements_childs_lvl1;
	  
	  var parent_lvl1 = '';
	  var parent_lvl2 = '';
	  
	  elements.each(function(a) {
		this.hideChilds(a);
		
	  	a.observe("click", function(ev) {
	       this.click(ev);
	    }.bind(this));
	
	  }.bind(this));

	},

	hideChilds: function(a) {
		var el_childs;
		
	  	if (a.hasClassName(this.options.item_lvl1_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.hideLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl1_active_class);
		  	}
	  	}
	  	
	  	if (a.hasClassName(this.options.item_lvl2_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.hideLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl2_active_class);
		  	}
	  	}
	  	
	},

	deactivateElement: function(a, class_name) {
		if (class_name != "")
			a.removeClassName(class_name);
	},
	
	activateElement: function(a, class_name) {
		if (class_name != "") {
			a.removeClassName(class_name);
			a.addClassName(class_name);
		}
	},
	
	hideLvlOneChilds: function(el_childs) {
  		el_childs.each(function(child, index) {
			if(child.hasClassName('navlas-item-lvl2-cont') || child.hasClassName('navlas-item-lvl2-sep')) {
  				child.hide();
  			}
  		});
	},
	
	hideLvlTwoChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navlas-item-lvl3-cont')) {
  				child.hide();
  			}
  		});
	},

	click: function(ev) {
	  var a = ev.element();
	  this.switchChilds(a);
	},

	switchChilds: function(a) {
		var el_childs;
		
	  	if (a.hasClassName(this.options.item_lvl1_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.showLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.opened_class);
		  		this.activateElement(a, this.options.item_lvl1_active_class);
		  		
		  	} else if (a.hasClassName(this.options.opened_class)) {
		  		this.hideLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl1_active_class);

		  	}
	  	}
	  	
	  	if (a.hasClassName(this.options.item_lvl2_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.showLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.opened_class);
		  		this.activateElement(a, this.options.item_lvl2_active_class);
		  		
		  	} else if (a.hasClassName(this.options.opened_class)) {
		  		this.hideLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl2_active_class);
		  		
		  	}
	  	}
	  	
	},

	showLvlOneChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navlas-item-lvl2-cont') || child.hasClassName('navlas-item-lvl2-sep')) {
  				child.show();
  			}
  		});
	},

	showLvlTwoChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navlas-item-lvl3-cont')) {
  				child.show();
  			}
  		});
	}

});

InretsTreePink = Class.create({
	initialize: function(options) {
	  this.options = {
	     tree_container:				'',
	     item_lvl1_class:               '',
	     item_lvl2_class:               '',
	     item_lvl3_class:               '',
	     closed_class:                  '',
	     opened_class:                  '',
	     item_lvl1_container_class:     '',
	     item_lvl2_container_class:     '',
	     item_lvl3_container_class:     '',
	     item_lvl1_active_class:		'',
	     item_lvl2_active_class:		''
	  };
	  Object.extend(this.options, options || { });

	  var el_tree = $(this.options.tree_container);
	  var elements = $$("#" + el_tree.id + " a");

	  var elements_childs_lvl1;
	  
	  var parent_lvl1 = '';
	  var parent_lvl2 = '';
	  
	  elements.each(function(a) {
		this.hideChilds(a);

	  	a.observe("click", function(ev) {
	       this.click(ev);
	    }.bind(this));
	
	  }.bind(this));

	},

	hideChilds: function(a) {
		var el_childs;
		
	  	if (a.hasClassName(this.options.item_lvl1_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.hideLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl1_active_class);
		  	}
	  	}
	  	
	  	if (a.hasClassName(this.options.item_lvl2_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.hideLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl2_active_class);
		  	}
	  	}
	  	
	},

	deactivateElement: function(a, class_name) {
		if (class_name != "")
			a.removeClassName(class_name);
	},
	
	activateElement: function(a, class_name) {
		if (class_name != "") {
			a.removeClassName(class_name);
			a.addClassName(class_name);
		}
	},
	
	hideLvlOneChilds: function(el_childs) {
  		el_childs.each(function(child, index) {
			if(child.hasClassName('navdiapo-item-lvl2-cont') || child.hasClassName('navdiapo-item-lvl2-sep')) {
  				child.hide();
  			}

  			if((typeof(inrets_tree_pink_cont_lvl2) != "undefined" && child.hasClassName(inrets_tree_pink_cont_lvl2)) || (typeof(inrets_tree_pink_sep_lvl2) != "undefined" && child.hasClassName(inrets_tree_pink_sep_lvl2))) {
  				child.hide();
  			}
  		});
	},
	
	hideLvlTwoChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navdiapo-item-lvl3-cont')) {
  				child.hide();
  			}
  			if(typeof(inrets_tree_pink_cont_lvl3) != "undefined" && child.hasClassName(inrets_tree_pink_cont_lvl3)) {
  				child.hide();
  			}
  		});
	},

	click: function(ev) {
	  var a = ev.element();
	  this.switchChilds(a);
	},

	switchChilds: function(a) {
		var el_childs;
		
	  	if (a.hasClassName(this.options.item_lvl1_class)) {
	  		el_childs = a.up().childElements();
	  	
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.showLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.opened_class);
		  		this.activateElement(a, this.options.item_lvl1_active_class);
		  		
		  	} else if (a.hasClassName(this.options.opened_class)) {
		  		this.hideLvlOneChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl1_active_class);

		  	}
	  	}
	  	
	  	if (a.hasClassName(this.options.item_lvl2_class)) {
	  		el_childs = a.up().childElements();
	  		
	  		if(a.hasClassName(this.options.closed_class)) {
		  		this.showLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.opened_class);
		  		this.activateElement(a, this.options.item_lvl2_active_class);
		  		
		  	} else if (a.hasClassName(this.options.opened_class)) {
		  		this.hideLvlTwoChilds(el_childs);
		  		a.removeClassName(this.options.opened_class);
		  		a.removeClassName(this.options.closed_class);
		  		a.addClassName(this.options.closed_class);
		  		this.deactivateElement(a, this.options.item_lvl2_active_class);
		  		
		  	}
	  	}
	  	
	},

	showLvlOneChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navdiapo-item-lvl2-cont') || child.hasClassName('navdiapo-item-lvl2-sep')) {
  				child.show();
  			}
  			if((typeof(inrets_tree_pink_cont_lvl2) != "undefined" && child.hasClassName(inrets_tree_pink_cont_lvl2)) || (typeof(inrets_tree_pink_sep_lvl2) != "undefined" && child.hasClassName(inrets_tree_pink_sep_lvl2))) {
  				child.show();
  			}
  		});
	},

	showLvlTwoChilds: function(el_childs) {
  		el_childs.each(function(child) {
			if(child.hasClassName('navdiapo-item-lvl3-cont')) {
  				child.show();
  			}
  			if(typeof(inrets_tree_pink_cont_lvl3) != "undefined" && child.hasClassName(inrets_tree_pink_cont_lvl3)) {
  				child.show();
  			}
  		});
	}

});