
/**
 * Filtr pro vyber kurzu
 */
function coursesFiltr () {
    var cont = $('filtr');
    if(cont === null)
        return;

    var selectEl = cont.getElements('select');
    var aKidsEl = cont.getElement('a.kids');
    var aAdultsEl = cont.getElement('a.adults');
    var bookmarks = cont.getElements('a.bookmark');
    var blockBokmarks = cont.getElements('.block_bookmark');
    var blockFormBookmark = cont.getElement('.block_form');
    var studentType = cont.getElement('.studentType').get('value');

    if(studentType == 'adults')
        aAdultsEl.addClass('active');
    else if(studentType == 'kids')
        aKidsEl.addClass('active');
    else
        aAdultsEl.addClass('active');
    
    hideAllBlockBookmarks(blockBokmarks);
    blockFormBookmark.setStyle('display', 'block');

    // Aktivace selctboxu
    selectEl.addEvent('change', function(event){
        event.stop();
        asyncCourses(cont, '');
    });

    // Aktivace zalozky deti
    aKidsEl.addEvent('click', function(event){
        event.stop();
        asyncCourses(cont, 'kids');
        //cont.getElement('.uidPage').set('value', 158);
    });

    // Aktivace zalozky dospeli
    aAdultsEl.addEvent('click', function(event){
        event.stop();
        asyncCourses(cont, 'adults');
        //cont.getElement('.uidPage').set('value', 56);
    });

    // Aktivace zalozek
    bookmarks.each(function(item, index){
        item.addEvent('click', function(event) {
            removeSelectClassBookmarks(bookmarks);
            hideAllBlockBookmarks(blockBokmarks);

            item.addClass('active');
            showBlock(cont, item);
        });
    });
}


/**
 * Nastavi vsem zalozkam tridu
 */
function removeSelectClassBookmarks (bookmarks) {
    bookmarks.each(function(item, index){
        item.removeClass('active');
    });
}


/**
 * Skryje vsechny bloky, ktere jsou pod zalozkama
 */
function hideAllBlockBookmarks (blockBokmarks) {
    blockBokmarks.each(function(item, index){
        item.setStyle('display', 'none');
    });
}


/**
 * Ukaze blok, na ktery se kliklo v zalozkach
 */
function showBlock (cont, item) {
    if(item.hasClass('adults') || item.hasClass('kids')) {
        cont.getElement('.block_form').setStyle('display', 'block');
    } else if(item.hasClass('firm')) {
        cont.getElement('.block_firm').setStyle('display', 'block');
    } else if(item.hasClass('individual')) {
        cont.getElement('.block_individual').setStyle('display', 'block');
    }
}


function getCourseTitle(data) {
    var reg = /\/(en|de|pl|ru|sk|fr|sp|es|hr|hu|ro|cz|cs)((\/.*)|($))/;
    if(location.pathname.search(reg) == 0)
        var langParam = location.pathname.substr(1, 2);    
    else 
        var langParam = null; 
        
    if(langParam == 'en') {
        if (data.numberCourses == 1)
            numCourseTitle = 'course';
        else
            numCourseTitle = 'courses';      
            
    } else if(langParam == 'de') {
        if (data.numberCourses == 1)
            numCourseTitle = 'Kurs';
        else
            numCourseTitle = 'Kurse';

    } else {
        if (data.numberCourses == 1)
            numCourseTitle = 'Kurz';
        else if (data.numberCourses >= 2 && data.numberCourses < 5)
            numCourseTitle = 'Kurzy';
        else
            numCourseTitle = 'Kurzů';    
    } 

    return numCourseTitle; 
}


/**
 * Ajax pozadavek
 */
function asyncCourses (cont, studentTypePar) {
    var url = 'http://' + document.location.host + '/typo3conf/ext/od_langfor/class.od_langfor_async.php';

    var reloadFilter = 0;

    if(studentTypePar != '') {
        cont.getElement('.studentType').set('value', studentTypePar);
        reloadFilter = 1;
    }

    var studentType = cont.getElement('.studentType').get('value');
    var uiLang = cont.getElement('.uiLang').get('value');
    var language = cont.getElement('.language select').get('value');
    var level = cont.getElement('.level select').get('value');
    var courseType = cont.getElement('.courseType select').get('value');
    var site = cont.getElement('.site select').get('value');

    data = 'language='+language+'&level='+level+'&courseType='+courseType+'&site='+site+'&uiLang='+uiLang+'&studentType='+studentType+'&reloadFilter='+reloadFilter;

    var request = new Request({

        url: url,
        data: data,

        onSuccess: function(result) {
            (function(){ 
                var data = JSON.decode(result, true)
                    
                numCourseTitle = getCourseTitle(data); 

                // Pokud se prepina mezi zalozkama (kids, adults), prerendruji se select boxy
                if(data.reloadFilter == 1) {
                    setFilterOptions(data.language, $('filtr_obal').getElement('.language select'));
                    setFilterOptions(data.level, $('filtr_obal').getElement('.level select'));
                    setFilterOptions(data.courseType, $('filtr_obal').getElement('.courseType select'));
                    setFilterOptions(data.site, $('filtr_obal').getElement('.site select'));
                }

                $('title_courses').set('text', numCourseTitle);
                $('num_courses').set('text', data.numberCourses);
                
                if(data.numberCourses == 0) {
                    $('search_courses').setStyles({'opacity':'0.5', 'cursor': 'default'});
                    $('search_courses').set('disabled', true);
                } else {
                    $('search_courses').setStyles({'opacity':'1', 'cursor': 'pointer'});
                    $('search_courses').set('disabled', false);
                }                
                
            }).delay(300);
        },
        
        onRequest: function() {
            var spinner  = new Element('div', {'id': 'spinner'});
            $('filtr').adopt(spinner);
          
            // Filtr je na podstranach
             //console.log(!(($$('.filtr_preklady') instanceof Object) && ($$('.filtr_preklady'))[0]));
            //if($$('.filtr_preklady') instanceof Array && $$('.filtr_preklady') == '') {
            if(!(($$('.filtr_preklady') instanceof Object) && ($$('.filtr_preklady'))[0])) {
                $('filtr').addClass('load_filtr_courses');
                
            // Filtr je na uvode
            } else {
                elTD = $$('.filtr_preklady td.filtr');
                elTD[0].addClass('load_filtr_courses');
            }
        },

        onComplete: function() {
            (function(){
                $('spinner').destroy();

                // Filtr je na podstranach
                //if($$('.filtr_preklady') instanceof Array && $$('.filtr_preklady') == '') {
                if(!(($$('.filtr_preklady') instanceof Object) && ($$('.filtr_preklady'))[0])) {
                    $('filtr').removeClass('load_filtr_courses');

                // Filtr je na uvode
                } else {
                    elTD = $$('.filtr_preklady td.filtr');
                    elTD[0].removeClass('load_filtr_courses');
                }
            }).delay(300);
        }

    });

    request.send();
}

function setFilterOptions(data, select) {
    var firstOptionHtml = select.getElement('option:nth-child(1)').get('html');
    var allOptions = select.getElements('option');

    allOptions.each(function(item){
        item.destroy();
    });

    var firstOption  = new Element('option', {'value': "", 'html': firstOptionHtml});

    select.adopt(firstOption);
    for (var i in data) {
        var option  = new Element('option', {'value': i, 'html': data[i]});
        select.adopt(option);
    }

}


window.addEvent('domready', function() {
    coursesFiltr();
});

