 

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();
});