$(document).ready(function() { 

    var gallery = $('#gallery');

    /*------------------------------------------------------------------*\
    \*------------------------------------------------------------------*/
    if (gallery.length > 0) {

        var poster = $('#poster');
        var poster_img = $('.poster-img', poster);

        var btn_next = $('<span class="gallery-next carousel-ctrl"></span>').appendTo(poster);
        var btn_prev = $('<span class="gallery-prev carousel-ctrl"></span>').appendTo(poster);

        // http://caroufredsel.frebsite.nl/
        $('.carousel', gallery).carouFredSel({
            'auto': false,
            'items': {
                'visible': 5,
                'height': 55
            },
            'direction': 'left',
            'align': false,
            'height': '55',
            'width': '680',
            'scroll': {
                'items': 1,
                'easing': 'linear'
            },
            'next': {
                'button': btn_next
            },
            'prev': {
                'button': btn_prev
            }
        });

        var current_class = 'gallery-current';

        var thumbs = $('img', gallery);

        $(thumbs).each(function(i, thumb) {

            var url = $(thumb).attr('data-poster');

            // first image is selected
            if (i == 0) {
                $(thumb).toggleClass(current_class, true);
            }

            // preload images
            $('<img />')[0].src = url;

            // click event
            $(thumb).bind('click', function() {

                if ($(thumb).hasClass(current_class)) {
                    return;
                }

                $(thumbs).each(function(i, t) {
                    $(t).toggleClass(current_class, ($(t).attr('data-poster') == url));
                });

                poster_img.animate({'opacity': 0}, {
                    'queue': true,
                    'duration': 250,
                    'complete': function() {
                        poster_img.attr('src', url);
                        poster_img.animate({'opacity': 1}, 250);
                    }
                });
            });
        });

    }

    /*------------------------------------------------------------------*\
    \*------------------------------------------------------------------*/

    var buchung = $('.form-buchung form');
    if (buchung.length > 0) {

        $.datepicker.setDefaults($.datepicker.regional['de']);

        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/
        var n = $('input[name="hidden-nr-persons"]', buchung).val();
        if (n && n > 0) {
            $('select[name="nr-persons"]', buchung).val(n);
        }


        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/
        var get_query = function(param) {
            var result = null;
            var s = location.search;
            if (s.length > 0) {
                var q = s.split('?')[1].split('&');
                var ql = q.length;
                for(var i = 0; i < ql; i++) {
                    var d = q[i].split('=');
                    if (d[0] == param) {
                        result = d.length > 1 ? d[1] : true;
                    }
                }
            }
            return result;
        }

        var set_date = function(field_parent, date, initial) {
            var day = $('input.day', field_parent)
                .attr('value', $.datepicker.formatDate('dd', date))
                .toggleClass('initial-date', initial);
            var date = $('input.date', field_parent)
                .attr('value', $.datepicker.formatDate('MM yy', date))
                .toggleClass('initial-date', initial);
        };
        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/

        var DAY = (24 * 3600 * 1000);

        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/

        var arrival = $('.arrival', buchung);
        var leave = $('.leave', buchung);

        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/

        var arrival_date = new Date(Date.parse(get_query('arrival')) || (Date.now() + 7 * DAY));
        if (!$('input[name="arrival-day"]', arrival).val()) {
            set_date(arrival, arrival_date, true);
        } else {
            var date_str = $('input[name="arrival-day"]', arrival).val() + ' ' +
                        $('input[name="arrival-date"]', arrival).val();
            var date = $.datepicker.parseDate('dd MM yy', date_str, null);
            if (date.getTime() >= Date.now()) {
                arrival_date = date;
            }
        }

        var leave_date = new Date(Date.parse(get_query('leave')) || (arrival_date.getTime() + 2 * DAY));
        var initial_leave = true;

        if ($('input[name="leave-day"]', leave).val()) {
            var date_str = $('input[name="leave-day"]', leave).val() + ' ' + $('input[name="leave-date"]', leave).val();
            leave_date = $.datepicker.parseDate('dd MM yy', date_str, null);
            initial_leave = false;
        }

        if (arrival_date.getTime() > (leave_date.getTime() - 1 * DAY)) {
            leave_date = new Date(arrival_date.getTime() + 1 * DAY);
        }

        set_date(leave, leave_date, initial_leave);


        /*--------------------------------------------------------*\
        \*--------------------------------------------------------*/
        var arrival_picker = $('.day', arrival).add('.date', arrival)
            .datepicker({
                'minDate': new Date(Date.now()),
                'beforeShow': function(input, inst) {
                    $(this).datepicker('setDate', arrival_date);
                    $(this).datepicker('widget').css({ 'margin-top': '-22px', 'margin-left': '-1px' });
                },
                'onSelect': function(date, inst) {
                    arrival_date.setYear(inst.selectedYear);
                    arrival_date.setMonth(inst.selectedMonth);
                    arrival_date.setDate(inst.selectedDay);
                },
                'onClose': function() {
                    if (arrival_date.getTime() > (leave_date.getTime() - 1 * DAY)) {
                        leave_date = new Date(arrival_date.getTime() + 1 * DAY);
                        set_date(leave, leave_date, false);
                    }

                    set_date(arrival, arrival_date, false);
                }
            });

        var leave_picker = $('.day', leave).add('.date', leave)
            .datepicker({
                'defaultDate': leave_date,
                'beforeShow': function(input, inst) {
                    $(this).datepicker('option', 'minDate', arrival_date);
                    $(this).datepicker('setDate', leave_date);
                    $(this).datepicker('widget').css({ 'margin-top': '-22px', 'margin-left': '-1px' });
                },
                'onSelect': function(date, inst) {
                    leave_date.setYear(inst.selectedYear);
                    leave_date.setMonth(inst.selectedMonth);
                    leave_date.setDate(inst.selectedDay);
                },
                'onClose': function() {
                    set_date(leave, leave_date, false);
                }
            });

    }

});


