
/* ------------ Do this when DOM is ready ------------- */

jQuery(document).ready(function($){

	Date.format = 'yyyy-mm-dd';


	// ##################   Gift Vouchers    ##################


	$('#tab_for_her').click( function (e) {

			$(this).removeClass("tab_for_her_off");
			$(this).addClass("tab_for_her_on");

			$('#vouchers_for_her').removeClass("hidden");
			$('#vouchers_for_her').addClass("visible");

			$('#tab_for_him').removeClass("tab_for_him_on");
			$('#tab_for_him').addClass("tab_for_him_off");

			$('#vouchers_for_him').removeClass("visible");
			$('#vouchers_for_him').addClass("hidden");


		});

	$('#tab_for_him').click( function (e) {

			$(this).removeClass("tab_for_him_off");
			$(this).addClass("tab_for_him_on");

			$('#vouchers_for_him').removeClass("hidden");
			$('#vouchers_for_him').addClass("visible");

			$('#tab_for_her').removeClass("tab_for_her_on");
			$('#tab_for_her').addClass("tab_for_her_off");

			$('#vouchers_for_her').removeClass("visible");
			$('#vouchers_for_her').addClass("hidden");


		});


	// ########################    Basket   #######################


	// Buy for myself/as voucher radios

	$('#basket .switchBoughtFor input.voucher').click( function (e) {
			// Show voucher fields
			$(this).parent().parent().next().removeClass("hidden");
			// Restore and reveal travel cost checkbox
			this.travelCostRecipientFields.empty().append(this.travelCostRecipientFieldsSavedHTML);
			this.travelCostRecipientFields.removeClass('hidden');
	});

	$('#basket .switchBoughtFor input.myself').click( function (e) {
			// Hide voucher fields
			$(this).parent().parent().next().addClass("hidden");
			// Remove (so they are not submitted) and hide travel cost checkbox
			this.travelCostRecipientFields.empty();
			this.travelCostRecipientFields.addClass('hidden');
	});

	// Save the contenct of 'travel cost paid by myself/friend' checkbox area
	// so we can remove/restore it it in 'click' callbacks
	$('#basket .switchBoughtFor input').each( function (i) {
		this.travelCostRecipientFields = $(this).parent().parent().next().next().children('.travelCost').children('.travelCostRecipientFields');
		this.travelCostRecipientFieldsSavedHTML = this.travelCostRecipientFields.html();
		// Checkbox hidden by default
		this.travelCostRecipientFields.addClass('hidden');
	});

	$('#basket .switchBoughtFor input').each( function (i) {
		if (this.checked) $(this).trigger('click');
	});


	// Voucher delivery to me / voucher recipient radios

	$('#basket .VoucherDeliverTo input.myself').click( function (e) {
			$(this).parent().siblings('.FullVoucherFields').addClass("hidden");
	});

	$('#basket .VoucherDeliverTo input.recipient').click( function (e) {
			$(this).parent().siblings('.FullVoucherFields').removeClass("hidden");
	});

	$('#basket .VoucherDeliverTo input').each( function (i) {
		if (this.checked) $(this).trigger('click');
	});

	// PosFix. To fix the way products are numbered on basket page.
	// When you delete something there are 'holes' in numbering
	// It should be in DataObjectSet but as a quick hack, it should work
	$('#basket #InformationTable .PosFix').each( function (i) { $(this).html(i+1); } );

	// Continue shopping and go to checkout buttons

	$('#BasketForm .Actions input').click(function (e) {
		$('#BasketForm .Actions #do_after_update').val($(e.target).attr('name'));
		$('#BasketForm').submit();
	});


	// Delete item from basket button

	$('#BasketForm .delete_item_submit').click(function (e) {
		e.preventDefault();
		var orderItemTmpID = $(e.target).parent().attr('id').replace('delete_item_', '');
		$('#BasketForm #delete_item').val(orderItemTmpID);
		// this tells ernie to reload the basket page on submission
		$('#BasketForm .Actions #do_after_update').val('');
		$('#BasketForm').submit();
	});


	// ######################   Order form   #########################

	// Maestro card warning
	function maestroToggleWarning () {
		if ($("#OrderForm_OrderForm_CardType").val() == "Maestro") {
			$('#Maestro3DWarning').show();
		} else {
			$('#Maestro3DWarning').hide();
		}
	}
	maestroToggleWarning ();
	$("#OrderForm_OrderForm_CardType").change( function (e) { maestroToggleWarning(); } );

	// Offer code input field

	$('#basket #SubmitOfferCode').click(function (e) {
		e.preventDefault();
		var action = baseHref.replace(/^http\:/,'https:') + 'checkout/saveOfferCode';
		var newOfferCode = $('#NewOfferCode').get(0).value;

		// Submit from checkout page
		if ($('#OrderForm_OrderForm').length > 0) {
			$('#OrderForm_OrderForm_OfferCode').get(0).value = newOfferCode;
			$('#OrderForm_OrderForm').attr('action', action);
			$('#OrderForm_OrderForm').submit();

		// Submitted from basket page
		} else if ($('#BasketForm').length > 0) {
			$('#BasketForm').attr('action', action + '?NewOfferCode=' + newOfferCode);
			$('#BasketForm').submit();

		// Just in case
		} else {
			alert('Voucher code functionality is not active on this page.');
			return false;
		}
	});

	// Terms and Conditions link

	$('#OrderForm_OrderForm #tac_link').click(function (e) {
		e.preventDefault();
		var redirect = $(e.target).attr('href');
		var newFormAction = 'checkout/saveOrderFormAndRedirect?redirect=' + redirect;
		$('#OrderForm_OrderForm').attr('action', newFormAction);
		$('#OrderForm_OrderForm').submit();
	});


	// Shipping option radios

	$('#OrderForm_OrderForm #ShippingOptionID input').click(function (e) {
		var newFormAction = 'checkout/changeShippingOption';
		$('#OrderForm_OrderForm').attr('action', newFormAction);
		$('#OrderForm_OrderForm').submit();
	});


	// Shipping address toggle link

	$('#OrderForm_OrderForm #ToggleShippingAddressLink a').click(function (e) {
		e.preventDefault();
		var newFormAction = $(e.target).attr('href');
		$('#OrderForm_OrderForm').attr('action', newFormAction);
		$('#OrderForm_OrderForm').submit();
	});


    // Forms, required fields asterisk decoration

	if ($('fieldset div.labelRight').length > 0) {
        if ($('fieldset div.labelRight').parents('#customer_form').length == 0 ) {
            var labels = $('fieldset div.labelRight label:not(.right)');

            labels.each(function (i) {
                // Add an asterisk or empty <em> for non-required fields
                if ($(this).parent().hasClass('requiredField')) {
                    var labelMarker = '<em>*</em>';
                } else {
                    var labelMarker = '<em>&nbsp;&nbsp;</em>';
                }
                $(this).after(labelMarker);
                // Add colon for all field labels
                $(this).text($(this).text() + ':');
            });
        }
    }



	// ####################   Calendar widget   #####################


	if ($('.ErnieCalendarContainer').length > 0) {
		currentDateArray = $('#ErnieCalendarCurrentDayField').val().split(/-/);
		$('.ErnieCalendarContainer').datePicker({
			year : Number(currentDateArray[0]),
			month : Number(currentDateArray[1])-1,
			inline: true,
			startDate: '2007-01-01',
			renderCallback: function($td, thisDate, month, year){
				if (ErnieCalendarActiveDays.length > 0) {
					// Highlite dates TDs with news
					$.each(ErnieCalendarActiveDays, function(i, newsDate){
						if (thisDate.asString() == newsDate)
							$td.addClass('has-news');
					});
					// Highlight current selected day
					if ($('#ErnieCalendarCurrentDayField').val() == thisDate.asString()) {
						$('.ErnieCalendarContainer .jCalendar td').removeClass('news-selected');
						$td.addClass('news-selected');
					}
				}
				else {
					// console.log('Error: ErnieCalendarActiveDays is empty while trying to populate the calendar');
				}
			}
		}).bind('dateSelected', function(e, selectedDate, $td){

			$.each(ErnieCalendarActiveDays, function(i, newsDate){
				if ((selectedDate.asString() == newsDate)) {
					// Hiliting clicked day
					$('.ErnieCalendarContainer .jCalendar td').removeClass('news-selected');
					$td.addClass('news-selected');
					$('#ErnieCalendarCurrentDayField').val(selectedDate.asString());
					$('#ErnieCalendarCurrentDayForm').submit();
				}
			});
		// console.log('You selected ' + selectedDate);
		});

		$('#ErnieCalendarShowAllItemsLink').click( function (e) {
			e.preventDefault();
			$('#ErnieCalendarCurrentDayField').val('');
			$('#ErnieCalendarCurrentDayForm').submit();
			return false;
		});

	}

	// ##################    MISC    ###########################


	// Bottom quotes rotator

	if ($('#bottom_quote_rotator').length > 0) {
		$('#bottom_quote_rotator').innerfade({ animationtype: 'fade', speed: 750, timeout: 5000, type: 'sequence', containerheight: 'auto' });
	}

	if ($('#PageCommentInterface_Form_PageCommentsPostCommentForm_action_postcomment').length > 0) {
		$('#PageCommentInterface_Form_PageCommentsPostCommentForm_action_postcomment').attr('value', '');
	}


	// Service booking page - switch people

	if ($('#Form_BookingSelectionForm').length > 0) {
		$('select#Form_BookingSelectionForm_PeopleNum').change(function (e) {
			$('#Form_BookingSelectionForm_OnlyChangePeopleNum').attr('value', 1);
			$('#Form_BookingSelectionForm').submit();
		});
	}

	// Service booking page - show/hide venue info

	if ($('#Form_BookingSelectionForm').length > 0) {
		var bookingDateDropdown = $('select#Form_BookingSelectionForm_DateID');
		$(bookingDateDropdown).change(function (e) {
			$('#BookingDatesVenues').children('.BookingDateVenue').addClass('hidden');
			$('#BookingDatesVenues').children('#BookingDate_' + bookingDateDropdown.val() + '_Venue').removeClass('hidden');
		});
		$(bookingDateDropdown).trigger('change');
	}

	// Date fields hidden field hack
	if ($('.dmy_no_calendar').length > 0) {
		$('.dmy_no_calendar input.numeric').blur( function (e) {
				var day, month, year;

				day = $(e.target).hasClass('dmy_day') ? $(e.target).attr('value') : $(e.target).siblings('.dmy_day').attr('value');
				month = $(e.target).hasClass('dmy_month') ? $(e.target).attr('value')  : $(e.target).siblings('.dmy_month').attr('value');
				year = $(e.target).hasClass('dmy_year') ? $(e.target).attr('value') : $(e.target).siblings('.dmy_year').attr('value');

				$(e.target).siblings('.hidden').attr('value', year + '-' + month + '-' + day);
				return true;
		});
	}

	$('#MemberLoginForm_LoginForm_action_dologin').attr('value', '');
	$('#MemberLoginForm_LoginForm_action_forgotPassword').attr('value', '');
	$('#MemberLoginForm_LostPasswordForm_action_forgotPassword').attr('value', '');
});


function resetField(field){
	if (field.value=="Search..." || field.value=="DD" || field.value=="HH" || field.value=="MM" || field.value=="YYYY"){
		field.value="";
		return false;
	}
}
