function initSlider (sliderId, sliderServiceUrl) {

    jQuery('.slider_listbox ul li a').each(function() {
        jQuery(this).bind('click', jQuery(this).find('span').text(), function(event) {
            level2Changed(event)
        });
    });


    jQuery('div.slider div.slider_tab_fragment').each(function() {
        jQuery(this).find('div.slider_listbox ul li a span:first').addClass('selected');
        //jQuery(this).find('div.slider_listbox ul li a span:odd').css('border-bottom','1px #efefef dashed');
    });

    // inittab navigation
    jQuery('.slider_tab_navigation').tabs({show: function(event, ui) {
        refreshSliderGallery();
    }});

    // hide all images
    jQuery('div.slider_tab_fragment div.slider_gallery_item > img').hide();

    // save model id in slider div
    jQuery.data(jQuery('.slider')[0], 'modelId', sliderId);
    jQuery.data(jQuery('.slider')[0], 'sliderServiceUrl', sliderServiceUrl);


    // init page numbers
    jQuery('.slider_tab_fragment').each(function() {
        jQuery.data(jQuery(this)[0], 'pageNr', 1);
    });

    jQuery('.slider').ajaxStart(function() {
        jQuery('.slider_tab_fragment:visible .slider_gallery_content').hide();
        //jQuery('div.slider_tab_fragment:visible .pagercontent').hide();
    });
    jQuery('.slider').ajaxStop(function() {
        jQuery('.slider_tab_fragment:visible .slider_gallery_content').show();
        //jQuery('div.slider_tab_fragment:visible .pagercontent').show();
    });


    jQuery('div.pagercontent span a:has(img)').hover(
        function() {
            var url = jQuery(this).find('img').attr('src').replace('.gif', '_hover.gif');
            jQuery(this).find('img').attr('src', url);
        },
        function() {
            var url = jQuery(this).find('img').attr('src').replace('_hover.gif', '.gif');
            jQuery(this).find('img').attr('src', url);
        }
    );
    getJSONData();
}

function level2Changed (event) {
    jQuery(event.target).parent().parent().parent().find('span').removeClass('selected');
    jQuery(event.target).addClass('selected');
    refreshSliderGallery();
}


function refreshSliderGallery () {
    jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr', 1);
    jQuery('div.slider .slider_tab_navigation > ul > li').removeClass('ui-tabs-right-separator');
    tmp1 = jQuery('div.slider .slider_tab_navigation > ul > li').not('.ui-state-active');
    tmp2 = jQuery('div.slider .slider_tab_navigation > ul > li + li.ui-state-active').prev();
    tmp1.not(tmp2).addClass('ui-tabs-right-separator');

    getJSONData();
}

function getJSONData () {
    var sliderServiceUrl = jQuery.data(jQuery('.slider')[0], 'sliderServiceUrl');
    var sliderId = jQuery.data(jQuery('.slider')[0], 'modelId');
    var pageNr = jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr');
    var level1 = jQuery('.slider_tab_navigation li.ui-state-active span').text();
    var level2 = jQuery('div.slider div.slider_tab_fragment:visible div.slider_listbox ul li a span.selected').text()
    if (!level2) {
        level2 = jQuery('div.slider div.slider_tab_fragment:visible div.slider_listbox ul li a span:first').text();
    }
    if (sliderId) {
        jQuery.getJSON(sliderServiceUrl,
        {sliderId:sliderId, level1:level1, level2:level2, pageNr:pageNr},
            function(data) {
                refreshGallery(data);
            });
    }
}


function nextPage () {
    var pageNr = jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr');
    jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr', pageNr + 1);
    getJSONData();
}

function previousPage () {
    var pageNr = jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr');
    jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr', pageNr - 1);
    getJSONData();
}

function jumpToPage (pageNr) {
    jQuery.data(jQuery('.slider_tab_fragment:visible')[0], 'pageNr', pageNr);
    getJSONData();
}

function refreshGallery (data) {
    var level1 = jQuery('.slider_tab_navigation li.ui-state-active span').text();
    var level2 = jQuery('div.slider div.slider_tab_fragment:visible div.slider_listbox ul li a span.selected').text()

    jQuery('div.slider_tab_fragment:visible .scrollY').jScrollPane( {
        showArrows: true,
        verticalDragMinHeight: 49,
        verticalDragMaxHeight: 49,
        verticalGutter: 0
    });

    if (data != null) {
        jQuery('div.slider_tab_fragment:visible div.slider_gallery_item > img').hide();
        jQuery("div.slider_tab_fragment:visible div.slider_gallery_item").unbind('mouseenter mouseleave');
        buildPager(data);
        jQuery.each(data.entries, function(i, item) {
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item > img').get(i)).attr('src', item.imageUrl).show();
            jQuery(jQuery("div.slider_tab_fragment:visible div.slider_gallery_item").get(i)).hover(
                function() {
                    jQuery(this).find('div.detailHelper').show(); //fadeIn(500);
                },
                function() {
                    jQuery(this).find('div.detailHelper').hide(); //fadeOut(100);
                }
                );
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(1)').get(i)).attr('href', item.link1Url);
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(1)').get(i)).attr('rel', 'shadowbox[' + level1 + '_' + level2 + ']');
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(2)').get(i)).attr('href', item.link2Url);

            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(1)').get(i)).unbind('mouseenter mouseleave');
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(1)').get(i)).hover(
                function() {
                    var url = jQuery(this).find('img').attr('src').replace('.gif', '_hover.gif');
                    jQuery(this).find('img').attr('src', url);
                },
                function() {
                    var url = jQuery(this).find('img').attr('src').replace('_hover.gif', '.gif');
                    jQuery(this).find('img').attr('src', url);
                });
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(2)').get(i)).unbind('mouseenter mouseleave');
            jQuery(jQuery('div.slider_tab_fragment:visible div.slider_gallery_item div a:nth-child(2)').get(i)).hover(
                function() {
                    var url = jQuery(this).find('img').attr('src').replace('.gif', '_hover.gif');
                    jQuery(this).find('img').attr('src', url);
                },
                function() {
                    var url = jQuery(this).find('img').attr('src').replace('_hover.gif', '.gif');
                    jQuery(this).find('img').attr('src', url);
                });
        });

        // set hover icons
        Shadowbox.setup(jQuery('div.slider_tab_fragment:visible a.shadowbox_link'), {displayNav:true});
    }
}

function buildPager (data) {
    if (data.currentPage == 1) {
        jQuery('div.slider_tab_fragment:visible .pagerleft').hide();
    }
    else {
        jQuery('div.slider_tab_fragment:visible .pagerleft').show();
        jQuery('div.slider_tab_fragment:visible .pagerleft a').attr('href', 'javascript:jumpToPage(' + (data.currentPage - 1) + ')');
    }

    if (data.currentPage == data.maxPage) {
        jQuery('div.slider_tab_fragment:visible .pagerright').hide();
    }
    else {
        jQuery('div.slider_tab_fragment:visible .pagerright').show();
        jQuery('div.slider_tab_fragment:visible .pagerright a').attr('href', 'javascript:jumpToPage(' + (data.currentPage + 1) + ')');
    }

    if (data.maxPage > 1) {
        jQuery('div.slider_tab_fragment:visible .pagelinks').html('')
            .append(data.currentPage - 4 > 0 ? '<span><a href="javascript:jumpToPage(1)">1</a></span><span>..</span>' : '')
            .append(data.currentPage - 3 > 0 ? '<span><a href="javascript:jumpToPage(' + (data.currentPage - 3) + ')">' + (data.currentPage - 3) + '</a></span>' : '')
            .append(data.currentPage - 2 > 0 ? '<span><a href="javascript:jumpToPage(' + (data.currentPage - 2) + ')">' + (data.currentPage - 2) + '</a></span>' : '')
            .append(data.currentPage - 1 > 0 ? '<span><a href="javascript:jumpToPage(' + (data.currentPage - 1) + ')">' + (data.currentPage - 1) + '</a></span>' : '')
            .append('<span class="activepage">' + data.currentPage + '</span>')
            .append(data.currentPage + 1 <= data.maxPage ? '<span><a href="javascript:jumpToPage(' + (data.currentPage + 1) + ')">' + (data.currentPage + 1) + '</a></span>' : '')
            .append(data.currentPage + 2 <= data.maxPage ? '<span><a href="javascript:jumpToPage(' + (data.currentPage + 2) + ')">' + (data.currentPage + 2) + '</a></span>' : '')
            .append(data.currentPage + 3 <= data.maxPage ? '<span><a href="javascript:jumpToPage(' + (data.currentPage + 3) + ')">' + (data.currentPage + 3) + '</a></span>' : '')
            .append(data.currentPage + 4 <= data.maxPage ? '<span>..</span><span><a href="javascript:jumpToPage(' + (data.maxPage) + ')">' + (data.maxPage) + '</a></span>' : '');
    }
    else {
        jQuery('div.slider_tab_fragment:visible .pagelinks').html('');
    }
}
