var TzHoverMenu = (typeof(Class) == "object") ? Class.create() : "";
TzHoverMenu.prototype = {
  initialize: function(menuid, tzboxid) {
	this.menuItemClass = "cnnMenuItem";
	this.selectedClass = "cnnSelected";
	this.noTzClass = "noTz";
	this.titleID = "cnnFilterTitle";
	this.titleBoxID = "cnnMoreInfo";
	
    this.menuid = menuid;
	this.tzboxid = tzboxid;
	this.selected = 0;
	this.selectedHover = 0;
	this.items = $(this.menuid).getElementsBySelector("." + this.menuItemClass);
	this.titles = [];
	
	for(i=0; i<this.items.length; i++)
	{
		itm = this.items[i];
		id = i + 1;
		this.titles.push(itm.readAttribute('title'));
		
		itm.removeClassName(this.menuItemClass);
		itm.addClassName(this.menuItemClass + id);
		
		itm.observe('click', this.switchFocus.bind(this, id));
		
		if(itm.hasClassName(this.selectedClass))
		{
			this.selected = id;
			$(this.menuid).addClassName(this.menuid + this.selected);
			if(null !== $(this.titleBoxID)) $(this.titleBoxID).addClassName(this.titleBoxID + this.selected);
			if(null !== $(this.titleID)) $(this.titleID).update(this.titles[i]);
		}
		
		if(itm.hasClassName(this.noTzClass))
		{
			itm.removeClassName(this.noTzClass);
			continue;
		}
		
		itm.observe('mouseover', this.tzOn.bind(this, id));
		itm.observe('mouseout', this.tzOff.bind(this));
	}
	
	$(this.tzboxid).hide();
  },
  switchFocus: function(id) {
  	menu = $(this.menuid);
	titleBox = $(this.titleBoxID);
	
	menu.removeClassName(this.menuid + this.selected);
	menu.addClassName(this.menuid + id);
	
	if(null !== titleBox) {
		titleBox.removeClassName(this.titleBoxID + this.selected);
		titleBox.addClassName(this.titleBoxID + id);
	}
	
	this.items[this.selected - 1].removeClassName(this.selectedClass);
	this.items[id - 1].addClassName(this.selectedClass);
	if(null !== $(this.titleID)) $(this.titleID).update(this.titles[id - 1]);
	
	this.selected = id;
  },
  tzOn: function(id) {
  	tzbox = $(this.tzboxid);
	tzbox.removeClassName(this.tzboxid + this.selectedHover);
	tzbox.addClassName(this.tzboxid + id);
	this.selectedHover = id;
	
	$(this.tzboxid).show();
  },
  tzOff: function() { $(this.tzboxid).hide(); }
};