$(document).ready(function() {


	// layer (glossary selector)

	var layerController = LayerController.getInstance();

	if ($("a#glossary-selector-handle").length) {
		var glossarySelector = new GlossarySelector;
		layerController.register(glossarySelector);
		glossarySelector.toggleWith("a#glossary-selector-handle");

	}

	if ($("div#glossary-selector-handle").length) {
		var glossarySelector = new GlossarySelector;
		layerController.register(glossarySelector);
		
		//alert("hier &#246;ffnen ...");
		//glossarySelector.toggleWith("div#glossary-selector-handle");
		glossarySelector.toggle("div#glossary-selector-handle");
				
	}


	
});

$.extend(Layer.prototype, {
	close: function () {}
});

/********************************************************************/

var GlossarySelector = function() {

	this.construct();
	
	this.selectors = {
		selectList: 'div#glossary-selector',
		mask: 'div#glossary-list-wrapper',
		slider: 'div.slider'
	};
	
	this.initKeyScrolling(this.selectors);
	
};


$.extend(GlossarySelector.prototype, Layer.prototype);

$.extend(GlossarySelector.prototype, KeyScrollable.prototype);

$.extend(GlossarySelector.prototype, {
	
	afterHide: function() {
		$("div#glossary-selector-handle").parent().css("z-index", "10");

		this.onClose();
	},

	beforeShow: function() {
		$("div#glossary-selector-handle").parent().css("z-index", "11");

		this.onOpen();
	},

	init: function() {
	
		var numberOfglossarys = $("div#glossary-selector li").length;
		
		var visibleglossarys = 20;
		if (numberOfglossarys < visibleglossarys) {
			$("div#glossary-selector div.slider").hide();
		} else {
			var sliderHeight = 300;
			var visibleHeight = 300;
			var handleHeight = Math.round(sliderHeight * visibleglossarys / numberOfglossarys);
			$("div#glossary-selector div.handle").css("height", handleHeight + "px");
			var glossaryListHeight = $("div#glossary-selector ul").height();
			
			var syncLayer = function(e, ui) {
				var newglossaryListOffset = parseInt(- ui.value);
				$("div#glossary-selector ul").css("top", newglossaryListOffset);
			}
			
			var $slider = $("div#glossary-selector div.slider").slider( {
				minValue: 0,
				maxValue: (glossaryListHeight - visibleHeight),
				slide: syncLayer,
				change : syncLayer
			});
			
			$(this.selectors.selectList).mousewheel(function(event, delta) {
				if (delta > 0) {
					$slider.slider("moveTo", $slider.slider("value")-(delta+10));
				} else if (delta < 0) {
					$slider.slider("moveTo", $slider.slider("value")-delta+10);
				}
				event.preventDefault();
				event.stopPropagation();
			});
			
		}
	}
});


