var ajaxLink = '';
var language = '';
var loadingImage = '<div class="loading"><img src="fileadmin/framework/img/loading.gif" alt="" /></div>';
var displayMode = 'events';
var displaySport = null;
var currentPage = 1;
var label_prev = 'back';
var label_next = 'next';
var label_searchform = 'keyword';


// define observers
Event.observe(window, 'load', initList, false);

function initList() {
    updateList(1);
    setCalendarLanguageCode(language);
}

function init(link, sport, lang) {
    ajaxLink = link;
    displaySport = sport;
    language = lang;
    setCalendarLanguageCode(language);
}

function setLabels(back, next, search) {
    label_prev = back;
    label_next = next;
    label_searchform = search;
}

function resetFilterForm() {
    $('filter').reset();
    updateList(1);
}

function resetSearchForm() {
    $('sword').value = label_searchform;
    updateList(1);
}

function switchMode(mode) {
    var mode = mode;
    if (mode == 'events') {
        $('eventtab').addClassName('active');
        $('resulttab').removeClassName('active');
        displayMode = 'events';
        updateList(1);
    }
    if (mode == 'results') {
        $('eventtab').removeClassName('active');
        $('resulttab').addClassName('active');
        displayMode = 'results';
        updateList(1);
    }
}

function updateList(page) {
    
    $('resultlist').update(loadingImage);
    
    // build the request
    new Ajax.Request( ajaxLink + '&do=updateresult', {
        parameters: {
            'displayMode': displayMode,
            'pageRequest': page,
            'displaySport': displaySport,
            'category': $('category').value,
            'discipline': $('discipline').value,
            'switzerlandOnly': $('limitevents').checked,
            'dateFrom': $('dateFrom').value,
            'dateTo': $('dateTo').value,
            'sword': $('sword').value
        },
        method: 'get',
        onSuccess: function(transport) {
            currentPage = page;
            var temp = eval('(' + transport.responseText + ')');
            updatePaging(currentPage, temp['numOfEvents'], temp['rowsPerPage'], temp['pagesLimit']);
            $('resultlist').update(temp['content']);
        }
    });
}

function updatePaging(currentPage, numOfEvents, rowsPerPage, pagesLimit) {
    var content = '<ul class="pager">';
    var numOfPages = Math.ceil(numOfEvents / rowsPerPage);
    var pagesLimit = pagesLimit;
    
    if (numOfPages > 1) {
        if (currentPage > 1) {
            content += '<li><a href="javascript:void(0);" onclick="javascript:updateList(' + (currentPage - 1) + ')">' + label_prev + '</a></li>';
        }
        
        var start = 1;
        
        if (currentPage > parseInt(pagesLimit / 2)) {
            start = currentPage - parseInt(pagesLimit / 2);
            // dots before
            var jumpBackwards = parseInt(currentPage) - parseInt(pagesLimit)
            if (jumpBackwards < 1) {
                jumpBackwards = 1;
            }
            if (start > 1) {
                content += '<li><a href="javascript:void(0);" onclick="javascript:updateList(' + jumpBackwards + ')">...</a></li>';
            }
        }
        
        var end = parseInt(start) + parseInt(pagesLimit);
        if (end > numOfPages) {
            end = numOfPages;
        }
        
        for (var i = start; i <= end; i++) {
            var aclass = '';
            if (currentPage == i) {
                aclass = 'class="active"';
            }
            content += '<li ' + aclass + '><a href="javascript:void(0);" onclick="javascript:updateList(' + i + ')">' + i + '</a></li>';
        } 
        
        if (end < numOfPages) {
            // dots after
            var jumpForward = parseInt(currentPage) + parseInt(pagesLimit);
            if (jumpForward > end) {
                jumpForward = end;
            }
            
            content += '<li><a href="javascript:void(0);" onclick="javascript:updateList(' + jumpForward + ')">...</a></li>';
        }
        
        if (currentPage < numOfPages) {
             content += '<li><a href="javascript:void(0);" onclick="javascript:updateList(' + (currentPage + 1) + ')">' + label_next + '</a></li>';
        }
    }
    content += '</ul';
    
    $('pager').update(content);
    
    var resultFrom = (currentPage - 1) * rowsPerPage + 1;
    var resultTo = currentPage * rowsPerPage;
    if (resultTo > numOfEvents) {
        resultTo = numOfEvents;
    }
    if (resultTo == 0) {
        resultFrom = 0;
    }
    
    $('resultFrom').update( resultFrom );
    
    $('resultTo').update( resultTo );
    $('resultTotal').update(numOfEvents);
}
