/*
 * zakładki
 */
tabs = function() {
    if ($$('a.tabActive')[0] && $$('a.tabActive')[0].get('rel')) {
        if (document.URL.lastIndexOf('#') > 0 && $(document.URL.substr(document.URL.lastIndexOf('#') + 1, 12).replace('x', ''))) {
            var urlTab = document.URL.substr(document.URL.lastIndexOf('#') + 1, 12).replace('x', '');
            $$('.tabActive').each(function(el){
                if (!el.getParent('div.tab')) {
                    el.removeClass('tabActive');
                }
                else 
                    if (el.hasClass('tabActive') && el.get('rel')) {
                        $(el.get('rel')).addClass('tabActive');
                    }
            });
            document.getElement('a[rel="' + urlTab + '"]').toggleClass('tabActive');
            $(urlTab).toggleClass('tabActive');
            fitToWindow();
        }
        else 
            var urlTab = null;
        $$('.tabs a').each(function(e){
            if (e.hasClass('tabActive') && urlTab == null) {
                $(e.get('rel')).addClass('tabActive');
            }
            if (e.getParent('div.tab')) {
                e.addEvent('click', function(d){
                    var d = new Event(d);
                    d.preventDefault();
                    e.getParent('div.tab').getElement('div.tabActive').removeClass('tabActive');
                    e.getParent('div.tab').getElement('a.tabActive').removeClass('tabActive');
                    $(e.get('rel')).addClass('tabActive');
                    e.addClass('tabActive');
                });
            }
            else {
                e.addEvent('click', function(d){
                    if (document.getElement('div.tabActive')) {
                        if (document.getElement('div.tabActive').hasClass('modified')) {
                        /*
                         * dorobic czesc funkcji zapisujaca zmiany w formularzu, zintegrowac z konfirmem
                         */
                        }
                        else {
                            document.getElements('div.tabActive').each(function(el){
                                if (!el.getParent('div.tab')) 
                                    el.removeClass('tabActive');
                            });
                            if (e.getParent().getParent().getElement('a.tabActive')) 
                                e.getParent().getParent().getElement('a.tabActive').removeClass('tabActive');
                            e.addClass('tabActive');
                            $(e.get('rel')).addClass('tabActive');
                            if ($(e.get('rel')).getElement('a.tabActive')) 
                                $($(e.get('rel')).getElement('a.tabActive').get('rel')).addClass('tabActive');
                        }
                        fitToWindow();
                    }
                });
            }
        });
    }
};
/*
 * getPath do admina
 */
getPath = function() {
    if(document.URL.lastIndexOf('admin')>-1)
    var url = document.URL.substr(0,document.URL.lastIndexOf('admin')) + 'admin/';
    /* else if (document.URL.lastIndexOf('.com')>-1)
    var url = document.URL.substr(0,document.URL.lastIndexOf('.com')+4) + '/';
    else if (document.URL.lastIndexOf('.co.uk')>-1)
    var url = document.URL.substr(0,document.URL.lastIndexOf('o.uk')+4) + '/';/*/
    return url;
};
/* zapisywanie i odczytywanie defaultowych wartosci */
var valueStorage = function(element,action) {
    if(action=='store') {
        var value = element.get('value');
        element.store('default',value);
        if (element.get('tag')=='input' && (element.get('type')=='radio' || element.get('type')=='checkbox')) {
            element.store('checkedState', element.get('checked'));
        }
    }
    else {
        element.set('value', element.retrieve('default'));
        if(element.get('tag')=='input' && (element.get('type')=='radio' || element.get('type')=='checkbox')) {
            element.set('checked', element.retrieve('checkedState'));
        }
    }
};
/* statusBar */
var statusBar = function(action, text, id, response) {
    /* addReq 
     * sprawdz czy jest juz lista zapytan i policz ile jest tych zapytan
     * jesli wiecej niz zero to dodaj element do listy i animuj go (progress bar)
     * jesli mniej to stworz liste i animuj pierwszy element
     */
    if(!$('reqStatus').getElement('i')) {
         var counter = new Element('i');
         counter.inject($('reqStatus')).fade('hide');
    }
    else {
        var counter = $('reqStatus').getElement('i');
    }
    $('reqStatus').addEvent('mouseenter', function(){
        this.setStyle('overflow','visible');
    });
    $('reqStatus').addEvent('mouseleave', function(){
        this.setStyle('overflow','hidden');
    });
    if(action=='addReq') {
        $('statusBar').inject(document.body,'bottom');
        if(!$('reqStatus').getElement('ul')) {
             var reqList = new Element('ul');
             reqList.inject($('reqStatus'));
        }
        $('statusBar').setStyle('visibility','visible').fade(1);
        var reqLi = new Element('li', {
            'id': 'req' + id
        });
        reqLi.set('html','<em>' + text + '</em><span class="bar"><strong></strong><b></b></span>');
        reqLi.inject($('reqStatus').getElement('ul'));
        var fx = new Fx.Tween(reqLi.getElement('strong'),{wait:false,duration: 10000});
        fx.start('width','80px');
        counter.set('text',$('reqStatus').getElements('li').length);
        if ($('reqStatus').getElements('li').length > 1) {
            counter.fade(1);
        }
    }
    else if(action=='finishReq') {
        $('statusBar').inject(document.body,'bottom');
        $('req'+id).getElement('em').set('text',text);
        var strongWidth = $('req'+id).getElement('strong').getElement('width');
        $('req'+id).getElement('b').setStyle('width',strongWidth);
        $('req'+id).getElement('strong').setStyle('display','none');
        var fx = new Fx.Tween($('req'+id).getElement('b'),{wait:false,duration: 100});
        fx.start('width','90px');
        (function(){$('req'+id).fade(0);}).delay(3000);
        (function(){
            $('req'+id).destroy();
            counter.set('text',$('reqStatus').getElements('li').length);
            if($('reqStatus').getElements('li').length<2) counter.fade('hide');
            if($('reqStatus').getElements('li').length<1) $('statusBar').fade(0);
        }).delay(3500);
    }
    else if(action=='failReq') {
        $('statusBar').inject(document.body,'bottom');
        $('req'+id).getElement('em').set('text',text);
        var strongWidth = $('req'+id).getElement('strong').getElement('width');
        $('req'+id).getElement('b').setStyle('width',strongWidth);
        $('req'+id).getElement('strong').setStyle('display','none');
        $('req'+id).addEvent('click',function(){
            mpConfirm('alert;' + text + ';' + response + ';ok');
        });
        var fxFail = new Fx.Morph($('req'+id).getElement('b'),{wait:false,duration: 500});
        fxFail.start({
            'width':'90px',
            'background-color':'#f1091e'
        });
        (function(){
            counter.set('text',$('reqStatus').getElements('li').length);
            if($('reqStatus').getElements('li').length<2) counter.fade('hide');
            if($('reqStatus').getElements('li').length<1) $('statusBar').fade(0);
        }).delay(1500);
    }
    else if(action=='echo') {
        $('statusBar').inject(document.body,'bottom');
        $('statusBar').setStyle('visibility','visible').fade(1);
        $('help').set('html',text).addClass('activated');
    }
    else if(action=='clear') {
        $('help').removeClass('activated');
        (function(){
            if (!$('reqStatus').getElement('i').get('text') && !$('help').hasClass('activated')) {
                $('statusBar').fade(0);
            }
        }).delay(1500);
        (function(){
            if (!$('reqStatus').getElement('i').get('text') && !$('help').hasClass('activated')) {
                $('help').set('html','');
            }
        }).delay(2000);
    }
}
/*
 * podpowiedzi w status barze
 */
var contextHelp = function() {
    $$('[title]').each(function(element){
        if(!element.hasClass('contextHelp')) {
            element.addClass('contextHelp');
            element.addEvent('mouseenter',function(){
                statusBar('echo',element.get('title'));
            });
            element.addEvent('mouseleave',function(){
                statusBar('clear');
            });
        }
    });
};
/* praca z ajaxem czystym relaksem */
var mpRequest = function(element,result) {
    if(element.get('tag')=='form') {
        var params = JSON.decode('{"request":"Sending request","cancel":"Request canceled","success":"Success","failure":"Failure"}');
        if(element.getElement('div.formParams')) var params = JSON.decode(element.getElement('div.formParams').get('text')); 
        var time = new Date();
        var timestamp = time.getTime();
        element.set('send', {
            onRequest: function() {
                statusBar('addReq',params['request'],timestamp);
            },
            onFailure: function(response) {
                var min = time.getMinutes();
                if (min<10) min = "0" + min;
                statusBar('failReq',params['failure'],timestamp, '<strong>' + time.getHours() + ':' + min + '</strong> ' + response);
                if(result) result(response);
            },
            onCancel: function(response) {
                statusBar('finishReq',params['cancel'],timestamp);
            },
            onSuccess: function(response) {
                if(result) result(response);
                if (response.indexOf('"error') > -1 && response.indexOf('"error') < 50) {
                    var min = time.getMinutes();
                    if (min < 10) 
                        min = "0" + min;
                    statusBar('failReq', params['failure'], timestamp, '<strong>' + time.getHours() + ':' + min + '</strong> ' + 'Formularz zwrócił błędy.');
                }
                else 
                    statusBar('finishReq', params['success'], timestamp);
            }
        });
        element.send();
    }
    else if (element.get('tag')=='a') {
        var params = JSON.decode('{"request": "&nbsp;","cancel":"Request canceled","success":"Success","failure":"Failure"}');
        if(element.get('rel')&&element.get('rel').indexOf('request')>-1) var params = JSON.decode(element.get('rel')); 
        var time = new Date();
        var timestamp = time.getTime();
        var url = element.get('href');
        var req = new Request({
            url: url,
            onRequest: function() {
                statusBar('addReq',params['request'],timestamp);
            },
            onFailure: function(response) {
                var min = time.getMinutes();
                if (min<10) min = "0" + min;
                statusBar('failReq',params['failure'],timestamp, '<strong>' + time.getHours() + ':' + min + '</strong> ' + response);
                if(result) result(response);
            },
            onCancel: function(response) {
                statusBar('finishReq',params['cancel'],timestamp);
            },
            onSuccess: function(response) {
                statusBar('finishReq',params['success'],timestamp);
                if(result) result(response);
            }
        });
        req.send();
    }
}
/* klik i pojawia sie czarne tlo na calej stronie, przed elem */
var back = function(action, el, closeable) {
    if(!$('blackBackground')) {
        var blackBackground = new Element('div', {'id': 'blackBackground'});
        if ($('statusBar')) blackBackground.inject($('statusBar'),'before');
        else blackBackground.inject(document.body);
        blackBackground.setStyles({
            'display':'none',
            'height':window.getSize().y+'px',
            'width': window.getSize().x+'px',
            'z-index':999999
        }).fade(0);
        window.addEvent('resize',function(){
            blackBackground.setStyles({
                'height':window.getSize().y+'px',
                'width': window.getSize().x+'px'
            });
        });
    }
    if(action=='start') {
        $('blackBackground').inject(el,'before').setStyle('display','block').fade(0.5);
        if(closeable) $('blackBackground').addEvent('click', function(){
            back('stop',el);
        });
        el.setStyle('z-index',999999);
    }
    else if((action=='stop')){
        el.setStyle('display','none');
        $('blackBackground').setStyle('display','none');
    }
};
var buildWindow = function(content, winTitle, winIco, size, injectElement) {
    /*
     * zrob nowe okno, wypelnij fakkin contentem, znajdz gdzies titel i zrob zamkniecie
     * olej zapisywanie i odczytywanie defualtowych danych z formularzy - to jest zrobione w sectionManage
     */
    var mpWindow = new Element('div', {'class':'window'});
    if($('statusBar')) mpWindow.inject($('statusBar'),'before');
    else mpWindow.inject(document.body);
    mpWindow.set('html','<div class="winWrapper1"><div class="winWrapper2"><div class="winWrapper3"><div class="winWrapper4"><div class="winWrapper5"><div class="winWrapper6"><div class="winWrapper7"><h2 class="windowTitle ' + winIco + '"><em>' + winTitle+ '</em> <a href="#close" class="button closeWindow"><em>Close</em></a></h2><div class="winContent">' + content + '</div><div class="bottom"></div></div></div></div></div></div></div></div>').setStyle('display','block');
    if (size) {
        if (size.width) {
            mpWindow.setStyles({
                'width': size.width,
                'left': (window.getSize().x - parseInt(size.width)) / 2 + 'px'
            });
        }
        if (size.height) 
            mpWindow.setStyle('height', size.height);
    }
    /*
     * tu nie robimy nowego contentu tylko przenosimy do okna jakis element strony
     * jesli ten element byl w formularzu to musi powrocic do formularza
     */
    if (injectElement) {
		if(!Browser.Engine.trident || injectElement != $('browseNewsTable')) { //obejscie jakiegos glupiego bledu pod IE, wystepuje przy newsletterach (dodawanie newsa do newslettera)
			if (injectElement.getParent('form')) {
	            if(!injectElement.getParent('form').get('id')) injectElement.getParent('form').set('id','defaultFormId');
	            injectElement.store('return',injectElement.getParent('form').get('id'));
	        }
		}
        
        injectElement.inject(mpWindow.getElement('div.winContent')).setStyles({
            'display':'block',
            'visibility':'visible'
        }).fade(1);
    }
    back('start', mpWindow);
    mpWindow.getElement('a.closeWindow').addEvent('click',function(e){
        var e = new Event(e);
        e.preventDefault()
        back('stop', mpWindow);
        if (injectElement) {
            var returnPlace = $('statusBar');
            var where = 'before';
            if (injectElement.retrieve('return')) {
                returnPlace = $(injectElement.retrieve('return'));
                where = 'bottom';
            }
            injectElement.inject(returnPlace,where).setStyles({
                'display':'none',
                'visibility':'hidden'
            }).fade('hide');
        }
        mpWindow.destroy();
    });
    if (mpWindow.getElement('div.submitters')) var height = mpWindow.getElement('h2').getSize().y + mpWindow.getElement('div.submitters').getSize().y;
    else var height = mpWindow.getElement('h2').getSize().y;
    var myDragInstance = new Drag(mpWindow, {handle:mpWindow.getElement('h2')});
    if(!size || (size && size.noResize!=1)) {
        new Element('div',{'class':'resize'}).inject(mpWindow.getElement('div.winWrapper7'));
        var myResize = mpWindow.makeResizable({
            handle: mpWindow.getElement('div.resize'),
            onDrag: function(){
                if (mpWindow.getElement('div.submitters')) var height = mpWindow.getElement('h2').getSize().y + mpWindow.getElement('div.submitters').getSize().y;
                else var height = mpWindow.getElement('h2').getSize().y;
                mpWindow.getElement('div.winContent').setStyle('height',mpWindow.getSize().y - height - 6 + 'px');
            }
        });
    }
}
/* klik na input i zmienia defaultowy tekst na pusty */
var editable = function() {
    $$('input.editable').each(function(el){
        if(!el.get('value')) el.set('value', el.get('rel')).addClass('defaultvalue');
        el.addEvent('focus',function(){
            if(el.hasClass('defaultvalue')) el.removeClass('defaultvalue').set('value','');
        });
        el.addEvent('blur',function(){
            if(!el.hasClass('defaultvalue') && el.get('value')=='') el.addClass('defaultvalue').set('value',el.get('rel'));
        });
        el.getParent('form').getElements('input[type="submit"]').addEvent('click',function(e){
            if (el.hasClass('defaultvalue')) {
                el.set('value', '');
            }
        });
    });
};
tabModify = function(mode) {
    if(mode == 'observe') {
        $$('.tabModifable').each(function(tab){
            var fields = tab.getElements('input', 'select', 'textarea');
            fields.addEvent('change', function() {
                tab.addClass('modified');
            });
        });
    }
    else if (mode == 'save') {
        /*
         * dorobic czesc funkcji zapisujaca zmiany w formularzu, zintegrowac z konfirmem
         */
    }
}

/* dropdown anything */
drop = function(element,mode) {
    var dropList;
    if (element.get('for')) dropList = $(element.get('for'));
    else dropList = $(element.get('rel'));
    element.removeEvents('click');
    element.addEvent('click', function(e){
        var e = new Event(e);
        e.preventDefault();
        if(!dropList.hasClass('dropActive')&&!dropList.hasClass('justremoved')) {
            $$('.dropActive').toggleClass('dropActive');
            dropList.addClass('dropActive'); ///toggle nie  do konca dziala
        }
        if(dropList.hasClass('justremoved')) {
            dropList.removeClass('justremoved');
        }
    });
    element.addEvent('mousedown', function(e){
        var e = new Event(e);
        e.preventDefault();
        if(dropList.hasClass('dropActive')) {
            dropList.removeClass('dropActive');
            dropList.addClass('justremoved');
        }
    });
    dropList.getElements('li label').each(function(el){
        el.removeEvents('click');
        var elP = el.getParent();
        el.addEvent('click',function(e){
            if (el.getPrevious('input').get('type')=='radio') {
                dropList.getElements('.filterActive').each(function(d){
                    d.removeClass('filterActive');
                    d.getElement('input').set('checked',false)
                });
                elP.addClass('filterActive');
                if(Browser.Engine.trident) el.getPrevious('input').set('checked',true);
                if (dropList.get('rel') == 'postLabel') dropList.getParent().getElement('a.dropVal').set('html', el.get('html'));
                dropList.toggleClass('dropActive');
            }
            else if(el.getPrevious('input').get('type')=='checkbox') {
                if(!elP.hasClass('filterActive')) {
                    if(elP.get('rel') && elP.get('rel')=='clearAll') {
                        dropList.getElements('.filterActive').each(function(d){
                            d.removeClass('filterActive');
                            d.getElement('input').set('checked',false);
                        });
                    }
                    else {
                        dropList.getElement('li[rel="clearAll"]').removeClass('filterActive');
                        dropList.getElement('li[rel="clearAll"]').getElement('input').set('checked',false);
                    }
                    elP.addClass('filterActive');
                    if(Browser.Engine.trident) el.getPrevious('input').set('checked',true);
                }
                else {
                    elP.removeClass('filterActive');
                    if(Browser.Engine.trident) el.getPrevious('input').set('checked',false);
                }
            }
            if(mode && mode=='replace') {
                element.getElement('em').setStyle('background-image', el.getElement('em').getStyle('background-image')).set('text',el.get('text'));
            }
        });
    });
    /* document.getElement('body').addEvent('mouseup',function(e){
        dropList.removeClass('dropActive');
    }); */
}

/* zapytanie, alert wywalamy w ogole */
mpConfirm = function(string) {
    if(!$('prompt')) {
        var prompt = new Element('div', {'id':'prompt', 'class': 'window'});
        prompt.inject(document.getElement('body'));
    }
    else {
        var prompt = $('prompt');
    }
    prompt.setStyles({
        'top': window.getSize().y / 2 - 120 + 'px',
        'left': window.getSize().x / 2 - 168 + 'px'
    }).fade(0);
    var action = function(element) {
        prompt.inject($('statusBar'),'before').setStyles({
            'top': window.getSize().y / 2 - 120 + 'px',
            'left': window.getSize().x / 2 - 168 + 'px',
            'display':'block'
        }).fade(1);
        var conf = new Array;
        if(element) conf = element.get('rel').split(';');
        else if(string) conf = string.split(';');
            if(conf[1]) var title = conf[1]; else var title = '';
            if(conf[2]) var text = conf[2]; else var text = '';
            if(conf[3]) var buttonYes = '<input type="submit" id="promptOK" value="' + conf[3] + '"/>'; else var buttonYes = '';
            if(conf[4]) var buttonCancel = '<input type="submit" id="promptCancel" value="' + conf[4] + '"/>'; else var buttonCancel = '';
            if(conf[5]) var buttonAdd = conf[5]; else var buttonAdd = '';
            var dragWin = new Drag('prompt', {
                snap: 10,
                handle: prompt.getElement('h3')
            });
            prompt.set('html', '<div class="sh1"></div><div class="sh2"></div><div class="sh3"></div><div class="sh4"></div><div class="windowContent"><h3>' + title + '</h3><div><p>' + text + '</p></div><div class="last">' + buttonYes + buttonCancel + buttonAdd + '</div></div>');
            prompt.getElements('input').each(function(input,i){
                input.addEvent('mouseover', function(){
                    input.addClass('hover');
                });
                input.addEvent('mouseleave', function(){
                    input.removeClass('hover');
                });
                input.addEvent('focus', function(){
                    input.addClass('focus');
                });
                input.addEvent('blur', function(){
                    input.removeClass('focus');
                });
                input.addEvent('click', function(){
                    prompt.fade(0);
                    (function(){
                        prompt.setStyle('display','none');
                     }).delay(500);
                     if(i==0 && element) {
                        if(element.get('tag')=='input'&&!element.hasClass('ajaxform')) {
                            var temp = new Element('input', {
                                'type': 'hidden',
                                'name': element.get('name'),
                                'value': element.get('value')
                                });
                            element.set('name','temp');
                            temp.inject(element,'after');
                            element.getParent('form').submit();
                        }
                        /*else if(element.hasClass('ajaxform')) {
                            var form = element.getParent('form');
                            var parent = form.getParent();
                            parent.setStyle('height', parent.getSize().y);
                            parent.addClass('loading');
                            form.set('send', {
                                onRequest: function() {
                                    parent.getElement('form').setOpacity('0.01');
                                    $$('.focused').each(function(el){el.removeClass('focused');});
                                    $$('.bof').each(function(el){el.dispose();});
                                },
                                onComplete: function(response) { 
                                    parent.set('html', response);
                                    parent.setStyle('height', 'auto');
                                    parent.removeClass('loading');
                                    if(parent.getElement('form'))
                                    sendSubForm(parent.getElement('form'));
                                    else {
                                        if(parent.getElement('div#content')) {
                                            parent.set('html','<ul class="info"><li>' + parent.getElement('div#content').getElement('div').get('html') + '</li></ul>');
                                        }
                                    }
                                    focusInput();
                                }
                            }).send();
                        }*/
                        else if (element.get('tag')=='a') {
                            goTo(element.get('href'));
                        }
                    }
                });
            });
    };
    if(string) {
        action();
    }
    else {
    var elements = $$('a[rel^="alert"]','input[rel^="alert"]');
    elements.each(function(element) {
        element.addEvent('click', function(e){
            var e = new Event(e);
            e.preventDefault();
            action(element);
        });
    });
    /* */
    }
};
var goTo = function(url) {
    if(Browser.Engine.trident) window.navigate(url);
    else window.location=url;
};
/* koloruje rzedy, w listach i w tabelach*/
colorRows = function(e) {
    if (e.get('tag') == 'table') {
        e.getElements('.row-1').removeClass('row-1');
        e.getElements('tr:even').addClass('row-1');
    }
    else {
        e.getElements('.row-1').removeClass('row-1');
        e.getElements(':even').addClass('row-1');
    }
};
/* koloruje kolummy w tabelach po najechaniu na element
 * mode = 0 - po najechaniu na th
 * mode = 1 - po najechaniu na th i na td
 * mode = 2 - jednorazowo i pernamentnie, nie zrobione
 */
colorCols = function(e,mode) {
    //if(!Browser.Engine.trident) {
        e.getElements('tr').each(function(el){
            if(!el.getParent('tfoot')) {
                el.getChildren().each(function(ele,index){
                    ele.set('rel', 'col-'+index);
                    if(ele.get('tag')=='th' || mode == 1) ele.addClass('colMarker');
                });
            }
        });
        $$('.colMarker').each(function(el){
            var col = el.getParent().getParent().getParent().getElements('[rel="' + el.get('rel') + '"]');
            if(!el.getParent('tbody') && !mode) {
                el.addEvent('mouseover', function(){
                    col.addClass('colHover');
                });
                el.addEvent('mouseleave', function(){
                    col.removeClass('colHover');
                });
            }
        });
    //}
    /*    el.getChildren('th').each(function(ele,index){
                var col = document.getElements('td[rel="' + ele.get('rel') + '"]');
                //if (mode == 1) {
                    ele.addEvent('mouseover', function(){
                        col.addClass('colHover');
                        alert(col.length);
                    });
                    ele.addEvent('mouseleave', function(){
                        col.removeClass('colHover');
                    });
                //}
            }); */
        /* if(!mode) {
            el.getChildren('th').each(function(el){
                
            });
            var col = getElements('[rel="' + e.get('rel') + '"]');
            e.getElements('th').addEvent('mouseover',function(){
                col.addClass('colHover');
            });
            e.getElements('th').addEvent('mouseleave',function(){
                col.removeClass('colHover');
            });
        } */
    //});
};
/* 
 * koloruje posortowane kolumny 
 * wymaga wczesniejszego wywolania colorCols()
 */
colorSorted = function(e) {
    e.getElements('thead th').each(function(el){
        if(el.hasClass('sorted')) e.getElements('tbody td[rel="' + el.get('rel') + '"]').addClass('sorted');
    });
}
sort = function(elements,sortable,filterMode,options) {
    var getResult = function(response) {
        $$('.loading').removeClass('loading');
        temp();
        $('temp').set('html','<div>' + response + '</div>');
        var colspan = sortable.getElement('thead').getElements('th').length;
        if (sortable.getElement('tfoot') && $('temp').getElement('tfoot')) {
            if($('temp').getElement('tfoot').getElement('td')) {
                sortable.getElement('tfoot').set('html', $('temp').getElement('tfoot').get('html'));
                sortable.getElement('tfoot').getElement('td').set('colspan',colspan);
            }
            else {
                sortable.getElement('tfoot').set('html', '<tr><td colspan="' + colspan + '">' + $('temp').getElement('tfoot').get('html') + '</td></tr>');
            }
        }
        if($('temp').getElement('tbody')) sortable.getElement('tbody').set('html',$('temp').getElement('tbody').get('html'));
        temp('destroy');
        colorRows(sortable);
        colorCols(sortable);
        colorSorted(sortable);
        if(options && options.func) {
            if(options.param && options.param2) options.func(options.param, options.param2);
            else if (options.param) options.func(options.param);
            else options.func();
        }
        if (options && options.mode && options.sortable) {
            if ($(options.mode + 'browseFiles').getElement('form#uploadForm')) { //copypasta z filemanago
                insertImage(options.mode);
            }
            else {
                addToList(options.sortable, options.mode);
            }
        }
    };
    elements.each(function(el){
       if (!this.retrieve('defaultHref')) {
           var url = el.get('href');
           if(url.indexOf('/order/ASC')>-1) url = url.replace('/order/ASC','');
           else if(url.indexOf('/order/DESC')>-1) url = url.replace('/order/DESC','');
           el.set('href',url);
           el.store('defaultHref', url);
       }
    });
    elements.addEvent('click',function(e){
        var e = new Event(e);
        e.preventDefault();
        this.getParent().getParent().getElements('th a[rel^="order"').set('rel',this.get('rel'));
        this.getParent().getParent().getElements('th a[rel^="order"').getParent().removeClass('sorted').removeClass('DESC').removeClass('ASC')
        if (this.get('rel') == 'order/ASC') {
            this.set('rel', 'order/DESC');
            this.getParent().addClass('sorted').addClass('ASC');
        }
        else {
            this.set('rel', 'order/ASC');
            this.getParent().addClass('sorted').addClass('DESC');
        }
        $$('.loading').removeClass('loading');
        this.addClass('loading');
        if (filterMode) {
            if(filterMode==1) this.set('href', this.retrieve('defaultHref') + '/' + this.get('rel') + filter(1,1));
            else this.set('href', this.retrieve('defaultHref') + '/' + this.get('rel') + filter(filterMode,1));
        }
        else 
            this.set('href', this.retrieve('defaultHref') + '/' + this.get('rel'));
        mpRequest(this,getResult);
        /*
         * poprzestawiajmy jeszcze parametry odpowiednie, reszta w ajaxpagination
         */
        if(sortable.getPrevious('div') && sortable.getPrevious('div').hasClass('jsonparams')) {
            var params = JSON.decode(sortable.getPrevious('div').get('text'));
            var link = this.get('href');
            var sort = link.substr(link.indexOf('sort/') + 5,link.length);
            sort = sort.substr(0,sort.indexOf('/'));
            params.sort = sort;
            if(this.get('rel')) params.order = this.get('rel').substr(this.get('rel').indexOf('/') + 1,this.get('rel').length);
            params = JSON.encode(params);
            sortable.getPrevious('div').set('text',params);
        }
    });
};
/*
 * temp - do przechowywania tymczasowych resultatow w formie html, przydatne przy ajaxie, alternatywa mile widziana
 * fileManage.js
 */
temp = function(action) {
    if(action=='destroy') $('temp').destroy();
    else {
        new Element('div',{'id':'temp'}).inject(document.getElement('body')).setStyles({
            'position':'absolute',
            'visibilty':'hidden',
            'display':'none'
        });
    }
}
/*
 * otaczanie elementow ramka i cieniem 
 */
var borders = function() {
    $$('.messages ul').addClass('border');
    $$('.border').each(function(el){
        if(!(el).getParent().hasClass('borderWrapper8')) {
            var wrapperEight = new Element('div', {'class':'borderWrapper8', 'id':el.uid + 'wrapper8'});
            var wrapperSeven = new Element('div', {'class':'borderWrapper7', 'id':el.uid + 'wrapper7'});
            var wrapperSix = new Element('div', {'class':'borderWrapper6', 'id':el.uid + 'wrapper6'});
            var wrapperFive = new Element('div', {'class':'borderWrapper5', 'id':el.uid + 'wrapper5'});
            var wrapperFour = new Element('div', {'class':'borderWrapper4', 'id':el.uid + 'wrapper4'});
            var wrapperThree = new Element('div', {'class':'borderWrapper3', 'id':el.uid + 'wrapper3'});
            var wrapperTwo = new Element('div', {'class':'borderWrapper2', 'id':el.uid + 'wrapper2'});
            var wrapperOne = new Element('div', {'class':'borderWrapper1', 'id':el.uid + 'wrapper1'});
            wrapperEight.wraps(el);
            wrapperSeven.wraps(wrapperEight);
            wrapperSix.wraps(wrapperSeven);
            wrapperFive.wraps(wrapperSix);
            wrapperFour.wraps(wrapperFive);
            wrapperThree.wraps(wrapperFour);
            wrapperTwo.wraps(wrapperThree);
            wrapperOne.wraps(wrapperTwo);
        };
    });
};
/*
 * dopasuj rozmiary kontentu do rozmiarow okna
 */
var fitToWindow = function() {
    var fit = function(main, mainarea, panel) {
        if(panel) {
            main.setStyle('width',mainarea.getSize().x - panel.getSize().x - 1 + 'px');
            if(main.getElement('table')) main.getElement('table').setStyle('width',mainarea.getSize().x - panel.getSize().x - 1 + 'px');
            if(main.getElement('form') && !main.getElement('form').getParent('table')) main.getElement('form').setStyle('width',mainarea.getSize().x - panel.getSize().x - 1 + 'px');
            if($('sections')) {
                main.setStyle('width',mainarea.getSize().x - panel.getSize().x - 4 + 'px');
            }
            if(main.getSize().x + panel.getSize().x > mainarea.getSize().x) {
                main.setStyle('width',mainarea.getSize().x - 1 + 'px');
                if(main.getElement('table')) main.getElement('table').setStyle('width',mainarea.getSize().x - 1 + 'px');
                if(main.getElement('form') && !main.getElement('form').getParent('table')) main.getElement('form').setStyle('width',mainarea.getSize().x - 1 + 'px');
            }
        }
        else if(main){
            main.setStyle('width',mainarea.getSize().x + 'px');
            if(main.getElement('table')) main.getElement('table').setStyle('width',mainarea.getSize().x - 1 + 'px');
            if(main.getElement('form')) main.getElement('form').setStyle('width',mainarea.getSize().x - 1 + 'px');
        }
    }
    if($('panel')) fit($('main'),$('mainarea'),$('panel'));
    else if($('main')) fit($('main'),$('mainarea'));
    else if(document.getElement('div.mainarea')) {
        if(document.getElements('div.mainarea').getParent('div.tab')) {//bullshit do IE
            $$('div.mainarea').each(function(el){
                if(document.getElement('div.mainarea').getParent('div.tab').hasClass('tabActive')) {
                    fit(el.getElement('div.main'),el,el.getElement('div.panel'));
                }
            });
        }
        else {
            $$('div.mainarea').each(function(el){
                fit(el.getElement('div.main'),el,el.getElement('div.panel'));
            });
        }
    }
    /* news edit, etc. */
    if($('editor')&&$('extras')&&$('editarea')) {
        $('editor').setStyle('width','50%');
        $$('#editor table', '#editor textarea').setStyle('width',$('editor').getSize().x - 50 + 4 + 'px');
        var extra = window.getSize().x - $('editor').getSize().x - 50;
        if(extra > 300) $('extras').setStyle('width',extra + 'px');
        else {
            $('extras').setStyle('width',window.getSize().x + 'px');
            $('editor').setStyle('width','900px');
            $$('#editor table', '#editor textarea').setStyle('width',$('editor').getSize().x - 50 + 4 + 'px');
        }
    }
};
/*
 * Ukrywanie dodatkowych pól w subskrybentach
 */
var newsletterExtFields = function() {
	if ( $('newsletter-ext-fields') !== null ) {
		
		if ( $('function0').checked ) {
			$('newsletter-ext-fields').setStyle('display', 'none');
		}
		
		$$('input[id^=function]').addEvent('change', function(){
			var d = ( $('function0').checked ) ? 'none' : '';
			$('newsletter-ext-fields').setStyle('display', d);
		});
	}
}

if(Browser.Engine.trident4) {
    window.addEvent('domready',function(){
        $('content').addClass('ready');
        if($('browsers')) $('browsers').setStyle('display','block');
        $('statusBar').setStyle('display','none');
        $$('div.label').setStyle('text-align','left')
    });
}
else {
    window.addEvent('domready',function(){
        mpConfirm();
        $$('input.cancel').addEvent('click',function(e){
            var e = new Event(e);
            e.stop();
            goTo(this.get('rel'));
            if(this.get('rel').indexOf('#')>-1) {
                var urlTab = this.get('rel').replace('#','').replace('x','');
                $$('.tabActive').each(function(el){
                    if (!el.getParent('div.tab')) {
                        el.removeClass('tabActive');
                    }
                    else 
                        if (el.hasClass('tabActive') && el.get('rel')) {
                            $(el.get('rel')).addClass('tabActive');
                        }
                });
                document.getElement('a[rel="' + urlTab + '"]').toggleClass('tabActive');
                $(urlTab).toggleClass('tabActive');
            }
        });
        tabs();
        borders();
        $('statusBar').fade('hide');
        contextHelp();
        var loadDelay = 100;
        if(Browser.Engine.trident) loadDelay = 500;
        (function(){
            $('content').addClass('ready');
			if(Browser.Engine.trident) $('menu').setStyle('zoom',1);
            fitToWindow();
         }).delay(loadDelay);
         if (Browser.Engine.gecko) {
             document.body.addClass('firefox');
             //if (Browser.Engine.version < 19) document.body.addClass('firefox2');
         }
         newsletterExtFields();
    });
    window.addEvent('load',function(){
        fitToWindow();
    });
    /*
     * mouseup gdziekolwiek chowa rozwiniete listy
     */
    document.addEvent('mouseup', function(){
        $$('.dropActive').removeClass('dropActive');
    });
    window.addEvent('resize',function(){
        fitToWindow();
});
}