window.addEvent('domready', function () {

    var page = 0;
    var onPage=20;
    var last = 0;
    var loadedOfferList = new Array();
    var offerList = new Array();

    $$('tr').addEvent('click', function (e) {
        e.preventDefault();
        document.location.href = 'oferta_'+this.get('id')+'.html';
       // console.debug('event='+this.get('id').replace('offer_','')+', object='+obj);
    });

    function prepareOfferList(obj) {
            offerList = obj;
            last = Math.ceil(offerList.length/onPage)-1;
    }
    function restoreOfferList() {
            offerList = loadedOfferList;
            last = Math.ceil(offerList.length/onPage)-1;
    }

    var offerListResource = new Request.JSON({
        'url':'resource.php?module=offerlist',
        'headers': {"Content-type": "application/json"},
        'onComplete':  function(obj) {
            prepareOfferList(obj);
            loadedOfferList = obj;
            reloadList();
        }
    });

    function reloadList() {
        var pagin = $('lst-pagin');
        var toInsert= new Array();
        var from = page*onPage;
        var to = (page+1)*onPage;
        var paginArr= new Array();
        pagin.empty();
        for (i=1;i<=last+1;i++) {
            a = new Element('a',{'html':i+' '});
            if (page==i-1) {a.setStyle('font-weight','bold')}
            a.addEvent('click',function (e) {e.preventDefault(); page=this.get('html').toInt()-1; reloadList();});
            paginArr.push(a);
        }
        pagin.adopt(paginArr);
        offerList.each( function(element,index) {
            if (index>=from && index<to) {
                var row = $('template').clone();
                row.cloneEvents($('template'));
                var anchors = row.getElements('a');
                anchors[0].set('html',element.offer_date);
                anchors[1].set('html',element.offer_expire);
                anchors[2].set('html',element.offer_name);
                anchors[3].set('html',element.profile_name);
                anchors[4].set('html',element.region_name);
                row.set('id',element.offer_id);
                toInsert.push(row);
            }
        });
        $('offerList').empty().adopt(toInsert);
    }

    $('lst-first').addEvent('click',function () {
        page=0;
        reloadList(offerList);
    });

    $('lst-last').addEvent('click',function () {
        page=last;
        reloadList();
    });

    $('lst-next').addEvent('click',function () {
        if (page<last) {
            page++;
            reloadList();
        }
    });

    $('lst-prev').addEvent('click',function () {
        if (page>=1) {
            page--;
            reloadList();
        }
    });

    $('applyFilter').addEvent('click',function () {

        if (this.retrieve('applied')) {
            this.store('applied',false);
            this.value = "Filtruj oferty";
            this.setStyle('margin-right','2px');
            $('filterByProfile').value = 0;
            $('filterByRegion').value = 0;
            restoreOfferList();
        } else {
            this.store('applied',true);
            this.value = "Usuń filtr";
            this.setStyle('margin-right','10px');
            if ($('filterByProfile').value>0) {
                newList = offerList.map(function (value) { if (value.profile_id == $('filterByProfile').value) return value; else return null;} );
                prepareOfferList(newList.clean());
            }
            if ($('filterByRegion').value>0) {
                newList = offerList.map(function (value) { if (value.region_id == $('filterByRegion').value) return value; else return null;} );
                prepareOfferList(newList.clean());
            }
        }
        page=0;
        reloadList();
    });

        offerListResource.send();


});


