/**
 * TSP functions library
 */
	var tspLayer = Class.create();

	tspLayer.prototype = {
		initialize: function(params){
		
			this.layerID = params.layerID;
			this.layerHandleID = params.layerHandleID;
			this.layerHandleOpenText = params.layerHandleOpenText;
			this.layerHandleCloseText = params.layerHandleCloseText;
			this.layerHandleOpenClass = params.layerHandleOpenClass;
			this.layerHandleCloseClass = params.layerHandleCloseClass;
			
			Event.observe($(params.layerHandleID), 'click', this.toggleLayer.bindAsEventListener(this));
			$(params.layerHandleID).writeAttribute('href', 'Javascript: void(0);');
			
			Event.observe(document, 'dom:loaded', this.initLayer.bindAsEventListener(this));

		},
		
		toggleLayer: function(ev) {
			if ($(this.layerID).visible()) {
				$(this.layerID).blindUp({
					duration: 0.6,
					transition: Effect.Transitions.linear
				});
				$(this.layerHandleID).update(this.layerHandleOpenText);
				$(this.layerHandleID).blur();
				$(this.layerHandleID).removeClassName(this.layerHandleCloseClass);
				$(this.layerHandleID).addClassName(this.layerHandleOpenClass);
			} else {
				$(this.layerID).blindDown({
					duration: 0.6,
					transition: Effect.Transitions.linear
				});
				$(this.layerHandleID).update(this.layerHandleCloseText)
				$(this.layerHandleID).blur();
				$(this.layerHandleID).removeClassName(this.layerHandleOpenClass);
				$(this.layerHandleID).addClassName(this.layerHandleCloseClass);
			}
		},
		
		initLayer: function() {
		
			if ($(this.layerID).visible()) {
				$(this.layerID).hide();
				$(this.layerHandleID).addClassName(this.layerHandleOpenClass);
			}
		}
	}


// Rest: outdated
	var menuClass = Class.create();

	menuClass.prototype = {
		initialize: function(params) {
			this.menuID = params.menuID;
			this.menuContentID = params.menuContentID;
			this.menuHandleID = params.menuHandleID;

			this.submenuID = params.submenuID;
			this.submenuContentIDs = params.submenuContentIDs
			this.submenuContentContainerID = params.submenuContentContainerID;
			this.submenuHandleID = params.submenuHandleID;

			this.initMenu = params.initMenu;
			this.initSubmenu = params.initSubmenu;

			// Internal vars
			this.menuSelectionTitles = new Array();
			this.submenuSelectionTitles = new Array();

			// Hide Menu
			this.hideMenu(this.menuContentID);
			this.hideMenu(this.submenuContentContainerID);

			// Hide submenus
			this.hideAllSubmenus();

			// Prepare Handle
			Event.observe($(this.menuHandleID), 'click', this.toggleMenu.bindAsEventListener(this));

			// Prepare mainmenu
			menuElements = $(this.menuID).select('a');
			for (i = 0; i < menuElements.length; i++) {
				el = $(menuElements[i]);
				el.href="Javascript:void(0)";
				titles = el.title.split(',');
				this.menuSelectionTitles[i] = titles[0];
				this.submenuSelectionTitles[i] = titles[1];

				Event.observe(el, 'click', this.changeSubmenu.bindAsEventListener(this));
			}

			// prepare submenu
			Event.observe($(this.submenuHandleID), 'click', this.toggleMenu.bindAsEventListener(this));

			// Init menus
			this.selectMenu(this.initMenu)
			this.selectSubmenu(this.initMenu, this.initSubmenu)
		},

		/*
		 * Open Menu
		 */
		toggleMenu: function(ev) {
			if (typeof(ev) == 'object') {
				el = Event.element(ev);
				this.toggleHandle(el.id);

				menuID = el.id.replace(/Handle$/, '');
				menuIDPart = menuID;
				menuID += 'Content';
			} else if (typeof(ev) == 'string') {
				menuID = ev;
				this.toggleHandle(ev.replace(/Content/, 'Handle'));
			}

			Effect.toggle($(menuID), 'blind', {duration: 0.3});

			// close submenu when open
			if ($(this.menuContentID).getStyle('display') != 'block' && $(this.submenuContentContainerID).getStyle('display') == 'block') {
				this.hideMenu(this.submenuContentContainerID);
				this.toggleHandle(this.submenuHandleID);
			}

			
		},

		toggleHandle: function(elID) {
			el = $(elID);
			if (el.hasClassName('menuHandleClose')) {
				el.removeClassName('menuHandleClose')
			} else {
				el.addClassName('menuHandleClose')
			}
		},

		/*
		 * Open Menu
		 */
		selectMenu: function(menuNr) {
			this.showMenuTitle(menuNr);
		},

		/*
		 * Open Menu
		 */
		selectSubmenu: function(menuNr, submenuNr) {
			this.showSubmenu(menuNr);
			this.showSubmenuTitle(menuNr,submenuNr);
		},

		/*
		 * Open Menu
		 */
		hideMenu: function(menuID) {
			$(menuID).hide();
		},

		/*
		 * Open Menu
		 */
		show: function(params) {

		},

		showMenuTitle: function(menuNr) {
			refMenuHeadline = $(this.menuID).select('h6');
			refMenuHeadline[0].update(this.menuSelectionTitles[menuNr]);

			refSubmenuHeadline = $(this.submenuID).select('h6');
			refSubmenuHeadline[0].update(this.submenuSelectionTitles[menuNr]);
		},

		showSubmenuTitle: function(menuNr,submenuNr) {
			
			refSubmenuHeadline = $(this.submenuID).select('h6');
			refSubmenuTitles = $(this.submenuContentIDs[menuNr]).select('#var_'+submenuNr);
			refSubmenuHeadline[0].update(refSubmenuTitles[0].innerHTML);

		},

		/*
		 * Change Submenu
		 */
		changeSubmenu: function(ev) {
			this.hideAllSubmenus();
			el = Event.element(ev);

			modeNr = el.id.match(/([0-9]*)$/);
			menuNr = parseInt(modeNr);
			if (menuNr >= 0) {
				this.showSubmenu(menuNr);
				this.showMenuTitle(menuNr);
				this.toggleMenu(this.menuContentID);
			}
		},

		showSubmenu: function(submenuNr) {
			if (submenuNr >= 0) {
				$(this.submenuContentIDs[submenuNr]).show();
			}
		},

		/*
		 * Hide all submenues
		 */
		hideAllSubmenus: function() {
			for (i = 0; i < this.submenuContentIDs.length; i++) {
				el = this.submenuContentIDs[i];
				$(el).hide();
			}
		},

		/*
		 * Helper: check params
		 */
		checkObject: function(params) {
			if (typeof(params) == 'undefined') {
				return new Object;
			} else {
				return params;
			}
		}
	}



