/**
 *  flash
 */
$(document).ready(function(){
    if ($('#flash').size()) {
        $('#flash').flash({
            src: 'design/image/frontend/flash.main.swf',
            menu: false,
            width: 617,
            height: 379,
            wmode: 'transparent'
        });
        $('.flash-replaced>.alt').remove();
    }
});

/**
 *  lightbox
 */
$(document).ready(function(){
    if (typeof $('.lightbox').lightbox == 'function') {
        $('.lightbox').lightbox();
    }
});

/**
 *  dropdown menu
 */
var ddt;

var initStatus = '';

$(document).ready(function(){
    if ($('#sidebar').size()) {
        $('#sidebar').prepend('<div id="dropdown"></div>');
        $('#sidebar').css('padding', 0);
        initStatus = $('#content>h1').attr('id');
        $.getJSON('dropdown/', {rand: Math.random()}, createCategoryList);
    }
});

function createCategoryList(data) {
    $('#dropdown').append('<h2>Termék kereső<span></span></h2>');
    $('#dropdown').append('<div id="ddc_"></div>');
    $('#ddc_').append('<span id="ddc_name">' + 'Kategóriák' + '</span>');
    $('#ddc_').append('<ul id="ddc_entries"></ul>');
    $.each(data, function(i){
        $('#ddc_entries').append('<li id="entry-' + this.id + '">' + this.name + '</li>');
    });
    $('#ddc_entries').addClass('closed');
    $('#ddc_name').bind('click', dropdownCategories);
    $('#ddc_entries>li').bind('click', selectCategory);
    if (initStatus) {
        var matches = initStatus.match(/^dd-([0-9]+)(?:-([0-9]+))?(?:-([0-9]+))?$/);
        if (!matches[2]) {
            initStatus = '';
        }
        $('#ddc_entries>#entry-' + matches[1]).click();
    }
}

function changeCategoriesTitle(text) {
    $('#ddc_name').text(text);
}

function dropdownCategories() {
    if ($('#ddc_entries').hasClass('closed')) {
        dropupProducers();
        dropupProductLines();
        $('#ddc_entries').removeClass('closed');
        $('#ddc_entries').bind('mouseleave', dropupCategoriesTimer);
    }
    else {
        $('#ddc_entries').addClass('closed');
    }
}

function dropupCategoriesTimer() {
    if (ddt) {
        window.clearTimeout(ddt);
    }
    ddt = window.setTimeout(dropupCategories, 100);
}

function dropupCategories() {
    if (!$('#ddc_entries').hasClass('closed')) {
        $('#ddc_entries').addClass('closed');
    }
}

function selectCategory(event) {
    dropupCategories();
    while ($('#ddc_+div').size()) {
        $('#ddc_+div').remove();
    }
    changeCategoriesTitle($(this).text());
    var matches = $(this).attr('id').match(/entry-([0-9]+)/);
    var category = matches[1];
    $.getJSON('dropdown/?c=' + category, {rand: Math.random()}, createProducerList);
}

function createProducerList(data) {
    $('#dropdown').append('<div id="ddpr_"></div>');
    $('#ddpr_').append('<span id="ddpr_name">' + 'Gyártók' + '</span>');
    $('#ddpr_').append('<ul id="ddpr_entries"></ul>');
    $.each(data, function(i){
        $('#ddpr_entries').append('<li id="entry-' + this.category + '-' + this.id + '">' + this.name + '</li>');
    });
    $('#ddpr_entries').addClass('closed');
    $('#ddpr_name').bind('click', dropdownProducers);
    $('#ddpr_entries>li').bind('click', selectProducer);
    if (initStatus) {
        var matches = initStatus.match(/^dd-([0-9]+)-([0-9]+)(?:-([0-9]+))?$/);
        if (!matches[3]) {
            initStatus = '';
        }
        $('#ddpr_entries>#entry-' + matches[1] + '-' + matches[2]).click();
    }
}

function changeProducersTitle(text) {
    $('#ddpr_name').text(text);
}

function dropdownProducers() {
    if ($('#ddpr_entries').hasClass('closed')) {
        dropupCategories();
        dropupProductLines();
        $('#ddpr_entries').removeClass('closed');
        $('#ddpr_entries').bind('mouseleave', dropupProducersTimer);
    }
    else {
        $('#ddpr_entries').addClass('closed');
    }
}

function dropupProducersTimer() {
    if (ddt) {
        window.clearTimeout(ddt);
    }
    ddt = window.setTimeout(dropupProducers, 100);
}

function dropupProducers() {
    if (!$('#ddpr_entries').hasClass('closed')) {
        $('#ddpr_entries').addClass('closed');
    }
}

function selectProducer(event) {
    dropupProducers();
    while ($('#ddpr_+div').size()) {
        $('#ddpr_+div').remove();
    }
    changeProducersTitle($(this).text());
    var matches = $(this).attr('id').match(/entry-([0-9]+)-([0-9]+)/);
    var category = matches[1];
    var producer = matches[2];
    $.getJSON('dropdown/?c=' + category + '&pr=' + producer, {rand: Math.random()}, createProductLineList);
}

function createProductLineList(data) {
    $('#dropdown').append('<div id="ddpl_"></div>');
    $('#ddpl_').append('<span id="ddpl_name">' + 'Termékcsaládok' + '</span>');
    $('#ddpl_').append('<ul id="ddpl_entries"></ul>');
    $.each(data, function(i){
        $('#ddpl_entries').append('<li id="entry-' + this.category + '-' + this.producer + '-' + this.id + '"><a href="' + this.url + '">' + this.name + '</a></li>');
    });
    $('#ddpl_entries').addClass('closed');
    $('#ddpl_name').bind('click', dropdownProductLines);
    if (initStatus) {
        var matches = initStatus.match(/^dd-([0-9]+)-([0-9]+)-([0-9]+)$/);
        initStatus = '';
        changeProductLinesTitle($('#ddpl_entries>#entry-' + matches[1] + '-' + matches[2] + '-' + matches[3]).text());
    }
}

function changeProductLinesTitle(text) {
    $('#ddpl_name').text(text);
}

function dropdownProductLines() {
    if ($('ul#ddpl_entries').hasClass('closed')) {
        dropupCategories();
        dropupProducers();
        $('#ddpl_entries').removeClass('closed');
        $('#ddpl_entries').bind('mouseleave', dropupProductLinesTimer);
    }
    else {
        $('#ddpl_entries').addClass('closed');
    }
}

function dropupProductLinesTimer() {
    if (ddt) {
        window.clearTimeout(ddt);
    }
    ddt = window.setTimeout(dropupProductLines, 100);
}

function dropupProductLines() {
    if (!$('#ddpl_entries').hasClass('closed')) {
        $('#ddpl_entries').addClass('closed');
    }
}