// JavaScript Document

Object.extend(Event, {
	wheel:function (event){
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
			delta = event.wheelDelta/120; 
			if (window.opera) delta = -delta;
		} else if (event.detail) { delta = -event.detail/3;	}
		return Math.round(delta); //Safari Round
	}
});

// DROP DOWN LISTS
function activateDropDownLists(id)
{
	$(id).getElementsBySelector(".content").each(function(obj){obj.observe('click', rozwinListe);});
	$(id).getElementsBySelector(".content").each(function(obj){obj.observe('mouseout', zwinListe);});
	$(id).getElementsBySelector(".list").each(function(obj){obj.observe('mouseout', zwinListe);});
	$(id).getElementsBySelector(".list .option").each(function(obj){obj.observe('mouseout', zwinListe);});
	$(id).getElementsBySelector(".list .option").each(function(obj){obj.observe('click', zmienItem);});
	
	var control = $(id);
	var content = control.getElementsBySelector(".content")[0];
	var hidden = control.getElementsBySelector(".hidden")[0];
	var list = control.getElementsBySelector(".list")[0];
	var mouseX;
	var mouseY;
	var tween = null;
	var rozwiniete = false;
	
	list.absolutize(); 
	list.hide(); 
	
	function rozwinListe(e)
	{
		if (content!=undefined && list!=null && rozwiniete==false)
		{
			if (tween!=null)
			{
				tween.cancel();
			}
			Effect.BlindDown(list, { duration: 0.1});
		}
		rozwiniete = true;
	}
	
	function zmienItem(e)
	{
		content.innerHTML = e.findElement('a').innerHTML;
		hidden.value = e.findElement('a').getElementsBySelector('.value')[0].value;
		if (tween!=null)
		{
			tween.cancel();
		}
		tween = Effect.BlindUp(list, { duration: 0.1});
		rozwiniete = false;
	}
	
	
	
		
	function zwinListe(e){
		var target = (e.toElement?e.toElement:e.relatedTarget);
		if (!target.descendantOf(control) && target!=control && rozwiniete==true)
		{
			if (tween!=null)
			{
				tween.cancel();
			}
			tween = Effect.BlindUp(list, { duration: 0.1});
			rozwiniete = false;
		}
	}

}



//SCROLLER
				
				
				//var sc = new addScroller('floater');
	
	function addScroller(floater_id){
		var floater = $(floater_id);		//div floatujacy text
		var floaterClass = Array('floater', 'non-floater'); // cssClass dla floatera ze scrolem i bez scrola
		var screener = floater.up();		//screener
		var scrol = screener.select('.scroll')[0];		//scroll
		var scroller = scrol.select('.scroll-box')[0];	//scroller
		var scroll_line = scroller.up();			//scroller_line
		var arrow_up = scrol.select('.arrow-up')[0];		//strzalka w g�re
		var arrow_down = scrol.select('.arrow-down')[0];	//strzalka w d�l
		//alert(floater.getHeight()+" "+screener.getHeight());
		if (floater.getHeight()>screener.getHeight()){
			//floater.className = floaterClass[0];
			scrol.show();
			new Draggable(scroller, { constraint: 'vertical', handle: scroll_line, change: function(){przesuwaj_scroll();} });
			//scrol.observe('mouseover', showScroller);
			//scrol.observe('mouseout', hideScroller);
			arrow_up.observe('mousedown', scrollUp);
			arrow_up.observe('mouseup', stopScrollingUp);
			arrow_down.observe('mouseup', stopScrollingDown);
			arrow_down.observe('mousedown', scrollDown);
			scroller.setStyle({left: '0px'});
			Event.observe(floater, "mousewheel", wheel, false);
			Event.observe(floater, "DOMMouseScroll", wheel, false); // Firefox
			
			Event.observe(window, "keypress", keypressHandler, false);
			//hideScroller();
			ustaw_scroll();
		} else {
			scrol.hide();
			//floater.className = floaterClass[1];
		}
		
		var tween;
		var tween3;
		var wheel_pos = 0;
		
		function wheel(e) {
			wheel_pos += Event.wheel(e);
			if (Event.wheel(e) < 0)
			{
				scrollDownUnit(e);
			} else {
				scrollUpUnit(e);
			}
		}
		
		function keypressHandler (event)
		{
			 var key = event.which || event.keyCode;
			 switch (key) {
			   case Event.KEY_DOWN:
				 scrollDownUnit(event);
				 break;
			   case Event.KEY_UP:
				 scrollUpUnit(event);
				 break;
		 	}
		}
		
		function scrollDownUnit(e){
			text_offset = -10;
			if (text_offset < screener.getHeight() - floater.getHeight() - parseInt(floater.getStyle('top')))
			{
				text_offset = screener.getHeight() - floater.getHeight() - parseInt(floater.getStyle('top'));
			}
			dur = -text_offset/150;
			//alert(dur);
			tween = new Effect.Move(floater, { x: 0, y: text_offset, mode: 'relative', duration:dur, transition: Effect.Transitions.linear, fps:20, afterUpdate:function(){ustaw_scroll()} });
		}
		
		function scrollUpUnit(e){
			text_offset = 10;
			if (text_offset > -parseInt(floater.getStyle('top')))
			{
				text_offset = -parseInt(floater.getStyle('top'));
			}
			dur = text_offset/150;
			//alert(dur);
			tween = new Effect.Move(floater, { x: 0, y: text_offset, mode: 'relative', duration:dur, transition: Effect.Transitions.linear, fps:20, afterUpdate:function(){ustaw_scroll()} });
		}
		
		function scrollDown(e){
			text_offset = screener.getHeight() - floater.getHeight() - parseInt(floater.getStyle('top'));
			dur = -text_offset/150;
			//alert(dur);
			tween = new Effect.Move(floater, { x: 0, y: text_offset, mode: 'relative', duration:dur, transition: Effect.Transitions.linear, fps:20, afterUpdate:function(){ustaw_scroll()} });
		}
		
		function stopScrollingDown(e){
			tween.cancel();
		}
		
		function scrollUp(e){
			text_offset = - parseInt(floater.getStyle('top'));
			dur = text_offset/150;
			//alert(dur);
			tween = new Effect.Move(floater, { x: 0, y: text_offset, mode: 'relative', duration:dur, transition: Effect.Transitions.linear, fps:20, afterUpdate:function(){ustaw_scroll()} });
		}
		
		function stopScrollingUp(e){
			tween.cancel();
		}
		
		function hideScroller(){
			if (!(tween3==undefined || tween3==null)){
				tween3.cancel();	

			}
			tween3 = new Effect.Opacity(scroller, { from:1.0, to: 0.0, duration:0.5});
		}
		function showScroller(){
			if (!(tween3==undefined || tween3==null)){
				tween3.cancel();	
			}
			tween3 = new Effect.Opacity(scroller, { from:0.0, to: 1.0, duration:0.5});
		}
		
		function ustaw_scroll(){
			text_offset = screener.getHeight() - floater.getHeight();
			text_pos = parseInt(floater.getStyle('top'));
			scroll_lim = scroll_line.getHeight() - scroller.getHeight();
			scroll_pos = parseInt(text_pos/text_offset*scroll_lim);
			if (scroll_pos>scroll_lim) scroll_pos = scroll_lim;
			scroller.setStyle({top: scroll_pos+'px'});
		}
		
		function przesuwaj_scroll(){
			var scroll_pos = parseInt(scroller.getStyle('top'));
			text_offset = screener.getHeight() - floater.getHeight();
			if (text_offset>0){
				text_offset=0;
				$(scrol).hide();
			} else {
				$(scrol).show();
			}
			scroll_lim = scroll_line.getHeight() - scroller.getHeight();
			scroll_pos = parseInt(scroller.getStyle('top'));
			if (scroll_pos<=scroll_lim && scroll_pos>0){
				percent = scroll_pos/scroll_lim;
				position = percent*text_offset;
				floater.setStyle({top: position+'px'});	
			} else {
				if (scroll_pos>scroll_lim){
					scroller.setStyle({top:scroll_lim+'px'});
					position = 1*text_offset;
					floater.setStyle({top: position+'px'});
				} else {
					scroller.setStyle({top:'0px'});
					position = 0*text_offset;
					floater.setStyle({top: position+'px'});
				}
			}
		}
		
		this.gotoElement = function(id)
		{
			obj = floater.getElementsBySelector('#'+id)[0];
			offset = obj.positionedOffset();
			
				var text_offset =  floater.getHeight()-screener.getHeight();
				var offset = (text_offset<offset.top)? text_offset:offset.top;
				scroll_pos = parseInt(scroller.getStyle('top'));
				scroll_pos-=offset;
				dur = text_offset/300;
				tween = new Effect.Move(floater, { x: 0, y: (-1)*offset, mode: 'relative', duration:0, transition: Effect.Transitions.linear, fps:20, afterUpdate:function(){ustaw_scroll()} });
				
			
		}
	}


