var last_ajax_parent_element = null;

(function ($) {

    jQuery(document).ready(function() {

        //FIXME quick'n'dirty trick dla przejmijSesje i iexplore 6

        var docwidth=10;
        var docheight=10;

        if (document.documentElement.clientWidth || document.documentElement.clientHeight)
        { 
            docwidth = document.documentElement.clientWidth; 
            docheight = document.documentElement.clientHeight; 
        }
        if (document.getElementById('przejmowanie_tlo'))
        {
            document.getElementById('przejmowanie_tlo').style.width=docwidth < 1001?1000:docwidth;
            document.getElementById('przejmowanie_tlo').style.height=docheight < 501?500:docheight;
        }
        //END OF FIXME
        
        //ustawianie domyślnych wartości
        var currentLevel = 0;
        var katalogi_elem = jQuery('#menu a[href=#katalogi]');
        var ajax_status = true;

        
        if(katalogi_elem.parent('li').find('ul').length >0)
            rozwiniete_katalogi = true;
        else
            rozwiniete_katalogi = false;
        // włączanie domyslnego menu
        jQuery('#menu > li > ul').show(1, function() {
            myThis = jQuery(this);
            alterLinks(myThis.parent('li'));
        });


        jQuery('#menu > li > a').click(function() {
            myThis = jQuery(this);
            if(!myThis.parent('li').hasClass('expand')) {
                return true;
            }

            if(myThis.parent("li").find('ul').length > 0) {
              //Jesli blok jest juz zaladowany
                if(myThis.hasClass('arrow-down'))
                    //Jesli strzalka jest w dol
                    mainShowMenu(myThis);
                else
                    //jesli strzalka jest w gore
                    mainHideMenu(myThis);
                return false;
            } else {
              //Jesli musimy dopiero zaladowac ajaxem blok
                if(isAjaxRunning() == true) return false; //jesli wlasnie cos ladujemy, koniec
                //mainHideMenu(myThis); //Ukrywamy klikniety element - by ukryc pozostale, co bylo skutkiem ubocznym oryginalnej funkcji
                load_attr = myThis.attr('href').substr(1);
                parent_element = myThis.parent("li");
                //Ajaxujemy brakujace dane
                $.get('/ajax/tree/'+load_attr, function(data){
                    if(parent_element != last_ajax_parent_element) //zabezpieczenie przed podwojna odpowiedzia
                    {
                        //var data1 = data.replace('<?xml version="1.0"?>','');
                        parent_element.append(data); 
                        mainShowMenu(parent_element.children('a'));//używamy generalnej metody pokazujacej menu
                        //if(load_attr == 'katalogi' && rozwiniete_katalogi==true); //a to to nie wiem po co bylo
                        alterLinks(parent_element);
                        last_ajax_parent_element = parent_element; //druga czesc zabezpieczenia
                    }
                });
                return false;
            }
        });
        
        // ajax events
        jQuery("#navi_left").ajaxStart(function(){
            jQuery(this).addClass('loading');
            jQuery('#ajax_notify').show("normal");
        });
        
        jQuery("#navi_left").ajaxStop(function(){
            jQuery(this).removeClass('loading');
            jQuery('#ajax_notify').hide("normal");
        });

    })

    function isAjaxRunning() {
        if( jQuery("#navi_left").hasClass('loading') )
            return true;
        else
            return false;
    }

    function alterLinks(parent_element) {
        var ajax_status; 
        parent_element.find('ul > li > a').click(function()
        {
            //Here the magic begins
            myThis = jQuery(this);
            url = jQuery(this).attr('href');
            url = url.replace(/http\:\/\/.+?[\/]/, '');
            url = url.replace(/^\/+/, '');
            url_array = url.split("/");
            if (url_array[1]){
              jQuery('#kategoria').attr('value', url_array[1].split(',')[0]);           
            } 
            if(url_array[0] == 'roczniki' || (url_array[0] == 'dodatki' && url_array[2])) {
                sub_url_array = url_array[2].split(",");
                url_param = url_array[1];
                action_param = sub_url_array[0];
            } else {
                if (url_array[1]) sub_url_array = url_array[1].split(",");
                url_param = url_array[0];
                if (url_array[1]) action_param = sub_url_array[0];
            }
            //Here the magic ends.
            
            // Sprawdzanie czy jest warstwa odpowiedzialna za wyświetlanie liczników
            var sa_bloczki = document.getElementById('katalogi_bloczki');
            
            //Czemu musimy to robic tutaj?
            if(sa_bloczki == null && typeof(url_param) !='undefined' && url_param == 'katalogi'){
                return true; //jesli sa bloczki, to pozwalamy stronie sie przeladowac.
            }

            //jesli dany element jest rozwijalny. Czemu dopiero teraz?! ale niech bedzie.
            if(myThis.parent('li').hasClass('expand'))
            {
                if(myThis.hasClass('arrow-up'))
                {
                    hideMenuelement(myThis);
                    return false;
                }
                else
                {
                    //wywołanie funkcji ajax aktualizującej okruszki - MAGICK
                    if(url_param == 'orzeczenia' && (action_param == 'SIP' || action_param =='STR' || action_param =='SUR'))
                        url_param = 'interpretacje_urzedowe';
                    
                    //if(typeof(action_param) !='undefined')
                      load_attr = url_param + ',' + action_param;
                    //else
                      //load_attr = url_param;
                    
                
                    //Czy blok jest zaladowany. No dobra, a jesli zwijamy a nie rozwijamy?!
                    if(myThis.parent("li").find('ul').length > 0)
                    {
                        if(myThis.hasClass('arrow-down'))
                            showMenuElement(myThis);
                        else
                            hideMenuElement(myThis);
                        if(url_param == 'katalogi' && currentLevel != action_param)
                        {
                            loadKatalogiContent(action_param);
                            currentLevel = action_param;
                        }
                        return false;
                    }
                    else
                    {
                        if(isAjaxRunning() == true) return false;
                        
                        hideAllMenuElements(myThis);
                        parent_element = myThis.parent("li");
    
                        $.get('/ajax/tree/'+load_attr, function(data)
                        {
                            if(parent_element != last_ajax_parent_element) //zabezpieczenie przed podwojna odpowiedzia
                            {
                                parent_element.append(data);
                                showMenuElement(myThis);

                                alterLinks(parent_element);
                                if(url_array[1] == 'katalogi')
                                {
                                    loadKatalogiContent(action_param);
                                    currentLevel = action_param;
                                }
                                last_ajax_parent_element = parent_element; //druga czesc zabezpieczenia
                            }
                        });
                        if (url_param == 'katalogi')
                        {
                         loadKatalogiContent(action_param);
                         currentLevel = action_param;
                        }
                        return false;
                    }
                }
            }
            else if(url_param == 'katalogi')
            {
                jQuery('#menu a').removeClass('selected');
                jQuery(this).addClass('selected');
                loadKatalogiContent(action_param);
                currentLevel = action_param;

                return false;
            }
        });
    }
  
    function mainHideMenu(element) {
        element.removeClass('arrow-up');
        element.addClass('arrow-down');
        element.parent('li').children('ul').slideUp(300);
        element.removeClass('active');
    }
    
    function mainShowMenu(element) {
        mainHideAllMenu(element);//Hide all elements, so we can show this one :)
        element.removeClass('arrow-down');
        element.addClass('arrow-up');
        element.parent('li').addClass('active');
        element.parent('li').children('ul').slideDown(300);
    }

    function mainHideAllMenu(element) {
        element.parent('li').parent('ul').children('li.expand').children('a').removeClass('arrow-up');
        element.parent('li').parent('ul').children('li.expand').children('a').addClass('arrow-down');
        element.parent('li').parent('ul').children('li').children('ul').slideUp(300);
        element.parent('li').parent('ul').children('li').removeClass('active');
    }

    function hideMenuelement(element) {
        element.parent('li').children('a').removeClass('arrow-up');
        element.parent('li').children('a').removeClass('selected');
        element.parent('li').children('a').addClass('arrow-down');
        element.parent('li').children('ul').slideUp(300);
    }

    function hideAllMenuElements(element) {
        element.parent('li').parent('ul').find('li > ul > li > ul').slideUp(300);
        element.parent('li').parent('ul').children('li.expand').children('ul').slideUp(300);
        element.parent('li').parent('ul').children('li.expand').children('a').removeClass('arrow-up');
        element.parent('li').parent('ul').children('li.expand').children('a').removeClass('selected');
        element.parent('li').parent('ul').children('li.expand').children('a').addClass('arrow-down');
    }
    
    function showMenuElement(element) {
        hideAllMenuElements(element);
        element.parent('li').children('a').addClass('arrow-up');
        element.parent('li').children('a').addClass('selected');
        element.parent('li').children('a').removeClass('arrow-down');
        element.parent('li').children('ul').slideDown(300);
    }
    
    function showMenuElements(element) {
        //alert('Boop: showMenuElements(element)');
    }
})(jQuery);

function resize_error() {
    //IE Mozilla 
    if (document.documentElement.clientWidth || document.documentElement.clientHeight)
    { 
        docwidth = document.documentElement.clientWidth; 
        docheight = document.documentElement.clientHeight; 
    }
    if (document.getElementById('przejmowanie_tlo'))
    {
        document.getElementById('przejmowanie_tlo').style.width=docwidth < 1001?1000:docwidth;
        document.getElementById('przejmowanie_tlo').style.height=docheight < 501?500:docheight;
    }
  }

