//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006 Valerio Proietti, <http://mad4milk.net>, MIT Style License.



/*
Script: Fx.Utils.js
	Contains Fx.Height, Fx.Width, Fx.Opacity. Only useful if you really, really need to toggle those values, and toggling only works in STRICT DOCTYPE.
	See <Fx.Style> for a better alternative.

License:
	MIT-style license.
*/

/*
Class: Fx.Height
	Alters the height of an element. Extends <Fx.Style> (and consequentially <Fx.Base>), and inherits all its methods.

Arguments:
	el - the $(element) to apply the style transition to
	options - the Fx.Base options (see: <Fx.Base>)

Example:
	>var myEffect = new Fx.Height('myElementId', {duration: 500});
	>myEffect.toggle(); //will close the element if open, and vice-versa.
*/

Fx.Height = Fx.Style.extend({

	initialize: function(el, options){
		$(el).setStyle('overflow', 'hidden');
		this.parent(el, 'height', options);
	},

	/*
	Property: toggle
		Toggles the height of an element from zero to it's scrollHeight, and vice-versa.
	*/

	toggle: function(){
		var style = this.element.getStyle('height').toInt();
		if (style > 0) return this.start(style, 0);
		else return this.start(0, this.element.scrollHeight);
	},

	/*
	Property: show
		Size the element to its full scrollHeight immediatly, without applying a transition.
	*/

	show: function(){
		return this.set(this.element.scrollHeight);
	}

});

/*
Class: Fx.Width
	Same as Fx.Height, but uses Width. It always toggles from its initial width to zero, and vice versa.
*/

Fx.Width = Fx.Style.extend({

	initialize: function(el, options){
		this.element = $(el);
		this.element.setStyle('overflow', 'hidden');
		this.iniWidth = this.element.getStyle('width').toInt();
		this.parent(this.element, 'width', options);
	},

	toggle: function(){
		var style = this.element.getStyle('width').toInt();
		if (style > 0) return this.start(style, 0);
		else return this.start(0, this.iniWidth);
	},

	show: function(){
		return this.set(this.iniWidth);
	}

});

/*
Class: Fx.Opacity
	Same as Fx.Height, but uses Opacity. It always toggles from opaque to transparent, and vice versa.
*/

Fx.Opacity = Fx.Style.extend({

	initialize: function(el, options){
		this.now = 1;
		this.parent(el, 'opacity', options);
	},

	toggle: function(){
		if (this.now > 0) return this.start(1, 0);
		else return this.start(0, 1);
	},

	show: function(){
		return this.set(1);
	}

});


// template scripts

// funkcja inicjalizująca skrypty

function initialize_template_scripts(){
	
	if(window.opera){
		$('cp_wrap-2').setStyle('margin-top','30px')
	}
	
	tmp_wdth = tmp_wdth.toInt();
	
	// dodanie zdarzenia do buttona tools
	if($('icon-tools')){
		$('icon-tools').addEvent('click',function(event){
			var event = new Event(event);
			event.preventDefault();
			/* pokazanie / ukrycie bloku control panel */
			control_panel_transparent();
		});
	}
	
	// dodanie zdarzeń do buttonów left i right
	$('area-slider-left').addEvent('click',function(event){
			var event = new Event(event);
			event.preventDefault();
			/* pokazanie / ukrycie bloku control panel */
			gk_slide_area('left');
	});
	
	$('area-slider-right').addEvent('click',function(event){
			var event = new Event(event);
			event.preventDefault();
			/* pokazanie / ukrycie bloku control panel */
			gk_slide_area('right');
	});
	
	$('area-slider-load').addEvent('click',function(event){
			var event = new Event(event);
			event.preventDefault();
	});
	
	if(area_position == 'right'){
		$('area-slider-right').setStyle('display','none');
	}
	else{
		$('area-slider-left').setStyle('display','none');
	}
	
	// stworzenie efektu opacity dla control panel
	efekt_cp = new Fx.Opacity('cp_wrap-2');
	
	// ukrycie control panel
	$('cp_wrap-2').setStyle('display','block');
	// ukrycie efektu
	efekt_cp.hide();
	// dodanie zdarzeń do linków zmiany stylu
	$A($$('.style_switcher')).each(function(element,index){
		element.addEvent('click',function(event){
			var event = new Event(event);
			event.preventDefault();
			change_style(index+1);
		});
	});
	
	// stworzenie slidera
	slider_steps = 0;
	// pobranie długości wrappera
	
	// jeśli szerokość okna jest większa od defaultowej szerokości templatki
	if(window.getWidth() >= tmp_wdth){
		// jeśli max widht ustawiony na 100%
		if(gk_max_length_2 == 0){
			slider_steps = window.getWidth()-tmp_wdth;
		}
		else{ // inaczej
			slider_steps = gk_max_length_2 - tmp_wdth;
		}
	}
	else{ // gdy szerokość templatki większa od szerokosci okna
		slider_steps = gk_max_length_1 - tmp_wdth;
	}
	
	// pobranie danych z cookies
	
	if(!Cookie.get('gk_temp_width')){
		gk_temp_width = tmp_wdth;
	}
	else{
		gk_temp_width = Cookie.get('gk_temp_width');
	}

	set_step = 0;
	
	set_step = gk_temp_width.toInt()-tmp_wdth;
	
	// stworzenie slidera
	var Sliderek = new Slider($('slider_area'), $('slider_knob'), {
		steps: slider_steps,
		onChange: function(pos){
			// pokazywanie aktualnej szerokosci templatki
			//$('upd').setHTML( "Actual width: " + (pos*(1)+tmp_wdth*(1)) + "px");
			// zmienianie szerokości templatki
			$('wrapper').setStyle("width",(pos*(1)+tmp_wdth*(1))+"px");
		},
		onComplete: function(){
			Cookie.set('gk_temp_width',$('wrapper').getSize().size.x,{duration: 200,path: "/"});
		}
	}).set(set_step); // ustawienie przesuwajka slidera w odpowiedniej odległości
}

// funkcja do ukrywania panelu kontrolnego
function control_panel_transparent(){
	$('icon-tools').removeEvents('click');
	
	/* ukrycie bloków control panel*/
	efekt_cp.toggle();
	
	/* Zabezpieczenie przed klikaniem podczas wykonywania efektu */
	$('icon-tools').addEvent('click',function(event){
		var event = new Event(event);
		event.preventDefault();
		
		/* pokazanie / ukrycie bloku control panel */
		control_panel_transparent();
	});
}

function change_style(style){
	new Asset.css(css_path+'style'+style+'.css');
	
	new Cookie.set('gk_temp_style',style,{duration: 200,path: "/"});
}

function gk_slide_area(direct){
	
	if(!window.ie){
		ef1 = new Fx.Width('blockright',{duration: 1000});
	}
	else{
		ef1 = new Fx.Width('blockright',{unit: "%",duration: 1000});
	}
	
	ef2 = new Fx.Opacity('blockright',{duration: 1000});
	
	if(direct == 'left' && area_position !== 'left'){
			area_position = 'left';
			$('area-slider-left').setStyle('display','none');
			$('area-slider-load').setStyle('display','block');
			ef2.toggle().chain(function(){
				$('rightarea').setStyle('display','none');
				ef1.toggle().chain(function(){	
					$('blockright').injectBefore('blockleft');
					$('space').injectBefore('blockleft');
						ef1.toggle().chain(function(){
							$('rightarea').setStyle('display','block');
							ef2.toggle();
							$('area-slider-load').setStyle('display','none');
							$('area-slider-right').setStyle('display','block');
					});
				});
			});
			Cookie.set('gk_sidebar_pos','left',{duration: 200,path: "/"});
	}
	else{
		if(area_position !== 'right'){
			area_position = 'right';
			$('area-slider-right').setStyle('display','none');
			$('area-slider-load').setStyle('display','block');
			ef2.toggle().chain(function(){
				$('rightarea').setStyle('display','none');
				ef1.toggle().chain(function(){	
					$('blockright').injectAfter('blockleft');
					$('space').injectAfter('blockleft');
					ef1.toggle().chain(function(){
						$('rightarea').setStyle('display','block');
						ef2.toggle();
						$('area-slider-load').setStyle('display','none');
						$('area-slider-left').setStyle('display','block');
					});
				});
			});
			Cookie.set('gk_sidebar_pos','right',{duration: 200,path: "/"});
		}
	}
}

// wygenerowanie zdarzenia onload
window.addEvent("load",function(){
	initialize_template_scripts();
});
