
/*
 * Concept-Layer
 */
var Page = Class.create();
Page.prototype = {
	initialize: function(params){
		Event.observe(document, 'dom:loaded', this.initPage.bindAsEventListener(this));
	},
	
	initPage: function() {
	
		// Start Hyphenator
		if (typeof Hyphenator != 'undefined') {
			Hyphenator.config({
				displaytogglebox: false,
				minwordlength: 4,
				remoteloading: false,
				intermediatestate: 'visible'
			});
			Hyphenator.run();
		}
		
		this.locationMarkerZIndex = {};
		this.locationMarkerCurrentLabelID = null;
		this.museumListElementCurrentID = null;
		
		// existiert der Leitbildcontainer?
		this.conceptContainer = $('headerConceptContainer');

		this.prepareLocationMarkers();
		//this.prepareMuseumList();
	},
	
	
	/**
	 * function prepareLocationMarkers()
	 * Erweitert die Ortsmarkierungen ind er Karte um Hoverfunktionalitäten
	 * 
	 * @param void
	 * @return void
	 * 
	 */
	prepareLocationMarkers: function() {
		if (!$('searchCityContainer')) return false;
		
		var locationMarkers = $('searchCityContainer').select('.locationMarker');
		locationMarkers.each( 
			function(el, index) {
				el.observe('mouseover', this.hoverLocationMarker.bindAsEventListener(this));
				el.observe('mouseout', this.unhoverLocationMarker.bindAsEventListener(this));
			}, this
		)
	},

	/**
	 * function hoverLocationMarkers()
	 * Funktion wird aufgerufen, wenn eine Markierung mit dem Mauszeiger berührt wird
	 * 
	 * @param Object Objekt des Events 
	 * @return void
	 * 
	 */	
	hoverLocationMarker: function(ev) {
		var locationMarker = Event.element(ev);
		var locationMarkerID = this.getID(locationMarker.id);
	
		this.locationMarkerZIndex[locationMarkerID] = locationMarker.getStyle('zIndex');
		
		if ($('locationMarkerLabel_'+locationMarkerID)) {
			$('locationMarkerLabel_'+locationMarkerID).appear({duration: 0.2});
			
			// Altes Label sofort ausblenden, falls Mouseout nicht geklappt hat
			if (this.locationMarkerCurrentLabelID && this.locationMarkerCurrentLabelID != locationMarkerID) {
				$('locationMarkerLabel_'+this.locationMarkerCurrentLabelID).hide();
			}
		}
		locationMarker.setStyle({zIndex: '9999'});

		this.locationMarkerCurrentLabelID = locationMarkerID;
	},

	/**
	 * function unhoverLocationMarkers()
	 * Funktion wird aufgerufen, wenn eine Markierung mit dem Mauszeiger verlassen wird
	 * 
	 * @param Object Objekt des Events 
	 * @return void
	 * 
	 */		
	unhoverLocationMarker: function(ev) {
		var locationMarker = Event.element(ev);
		var locationMarkerID = this.getID(locationMarker.id);
		
		locationMarker.setStyle({zIndex: this.locationMarkerZIndex[locationMarkerID]});
		
		if ($('locationMarkerLabel_'+locationMarkerID)) {
			$('locationMarkerLabel_'+locationMarkerID).fade({duration: 0.4});
		}
	},



		
	/**
	 * function getID()
	 * Extrahiert aus einem String der Form "name_12" den Zahlenwert (12)
	 * 
	 * @param {String} ID String,d er utnersucht werden soll
	 * @return {String} die ermittelte ID
	 */
	getID: function(ID) {
		var IDParts = ID.split('_');
		return IDParts[1];
	},
	
	prepareMuseumList: function(){
		if (!$('museumList')) return false;
		var listElements = $('museumList').select('.museumListElement');

		listElements.each( 
			function(el, index) {
				el.observe('mouseover', this.hoverMuseumListElement.bindAsEventListener(this));
				el.observe('mouseout', this.unhoverMuseumListElement.bindAsEventListener(this));
			}, this
		)
	},

	/**
	 * function hoverMuseumListElement()
	 * Funktion wird aufgerufen, wenn eine Markierung mit dem Mauszeiger verlassen wird
	 * 
	 * @param Object Objekt des Events 
	 * @return void
	 * 
	 */		
	hoverMuseumListElement: function(ev) {
		var listElement = Event.element(ev);
		//var listElementID = this.getID(listElement.id);

//		listElement.addClassName('museumListElementHover');
		//this.museumListElementCurrentID = listElementID;
	},

	/**
	 * function unhoverMuseumListElement()
	 * Funktion wird aufgerufen, wenn eine Markierung mit dem Mauszeiger verlassen wird
	 * 
	 * @param Object Objekt des Events 
	 * @return void
	 * 
	 */		
	unhoverMuseumListElement: function(ev) {
		var listElement = Event.element(ev);

//		listElement.removeClassName('museumListElementHover');		

	}
}

var mfgPage = new Page(); 
