(function ($){
    $(function (){
        var xcart_data = $('body').data('xcart');
        var cal = Calendar.setup({
            cont          : $("#reservation_date")[0],
            weekNumbers   : false,
            min: xcart_data.reservation_start,
            max: xcart_data.reservation_end,
            selection: xcart_data.preselect_date || undefined,
            disabled: function (date){
                var unav_dates = $('body').data('xcart').holidays;
                return ((unav_dates.constructor == Array) && ($.inArray(Calendar.dateToInt(date).toString(), unav_dates) > -1));
            },
            onSelect      : function() {
                var date = this.selection.get();
                var xcart_data = $('body').data('xcart');
                date = Calendar.intToDate(date);
                date = Calendar.printDate(date, "%Y-%m-%d");
                var url = xcart_data.current_location + '/ajax_timeslots.php';
                $.getJSON(url, {
                    date:date,
                    productid: xcart_data.productid
                }, function (data, textStatus){
                    switch (textStatus) {
                        case 'timeout':
                        case 'error':
                        case 'parsererror':
                            $("#reservation_timeslots").empty().append('<p class="error">' + xcart_data.lng.ajax_error+ '</p>');
                            break;
                        case 'success':
                            if (data && data.constructor == Array && data.length > 0) {
                                var timeslots = '';
                                var amounts = {};
                                $.each(data,function (i,v){
                                    if (v !== undefined) { 
										if (xcart_data.reservation_discount_start_date == date && v.start_24Hour >= xcart_data.reservation_discount_start_time && v.end_24Hour <= xcart_data.reservation_discount_end_time) {
                                        	timeslots += '<label style="width:350px;color:red;"><input style="width:15px;margin: 1px 0 0 0px" type="radio" name="reservation_timeslot" value="' + v.id + '"" /> '+v.start + ' &ndash; '+v.end+' (extra ' + xcart_data.reservation_discount + '' + xcart_data.reservation_discount_type + ' off)</label><br />'
										} else if (v.discount != 0) {
											timeslots += '<label style="width:350px;color:red;"><input style="width:15px;margin: 1px 0 0 0px" type="radio" name="reservation_timeslot" value="' + v.id + '"" /> '+v.start + ' &ndash; '+v.end+' (extra ' + v.discount + '' + v.discount_type + ' off)</label><br />'
										} else {
											timeslots += '<label style="width:350px"><input style="width:15px;margin: 1px 0 0 0px" type="radio" name="reservation_timeslot" value="' + v.id + '"" /> '+v.start + ' &ndash; '+v.end+'</label><br />'
										}
                                        if (v.avail !== undefined) {
                                            amounts[v.id] = v.avail;
                                        }
                                    }
                                });

                                $("#reservation_timeslots")
                                    .empty()
                                    .data('amounts', amounts)
                                    .append(timeslots)
                                    .find('input[name=reservation_timeslot]')
                                        .bind('click change',function (){
                                            var $this = $(this);
                                            var $amount = $('[name=amount]');

                                            if ($amount.val() > $this.val()) $amount.val($this.val());
                                        });
                            }
                            else {
                                $("#reservation_timeslots").empty().append('<p class="error">' + xcart_data.lng.ajax_no_timeslots + '</p>');
                            }
                            break;
                        case 'notmodified':
                        default:
                            break;
                    }
                });
                $("input[name=reservation_date]").attr('value', date);
            }
        });
    });
})(jQuery)

