var $j = jQuery.noConflict();

jQuery(document).ready(function () { //Start code ******************************************
	// First / last for CSS
	$j("#siteInformation li:first-child").addClass("first");
	$j("#primaryNavigation li:last-child, #memberNavigation li:last-child, #secondaryNavigation li:last-child, #breadcrumb li:last-child, #dealInformation li:last-child, .teeoffTimesVenueList li:last-child").addClass("last");

	// TOT - Date picker
	$j("input.datepicker:not(.dateOfBirthContainer input.datepicker)").datepicker({
		dateFormat: 'dd/mm/yy',
		minDate: 0,
		showOn: 'button',
		buttonImage: '/Themes/TeeOffTimes/Images/ExtranetIcons/calendar-dropdown.gif',
		buttonImageOnly: true
	});

	$j(".dateOfBirthContainer input.datepicker").datepicker({
		buttonImage: '/Themes/TeeOffTimes/Images/ExtranetIcons/calendar-dropdown.gif',
		buttonImageOnly: true,
		changeYear: true,
		dateFormat: 'dd/mm/yy',
		maxDate: 0,
		showOn: 'button',
		yearRange: '-100:+0',
		onClose: function () { $j(".dateOfBirthContainer input.datepicker").focus(); }
	});

	$j(".ui-datepicker-trigger")
        .attr("alt", "Calendar")
        .attr("title", "Open calendar");

	// Tee sheets - Generate a tee sheet when a "View Tee Sheet" link is clicked / triggered
	$j(".viewTeeSheet").toggle(function (event) {
		event.preventDefault();
		var $eventTrigger = $j(this);
		var $theTeesheet = $j($eventTrigger).closest(".panelContent").find(".teesheet");
		var $delayTime = 0;
		$delayTime = $j.getQueryString({ ID: "delayTime", URL: $eventTrigger.attr("href") });

		$j($eventTrigger).find("span[class!=cosmetic]").text("Close Tee Times");

		if ($j($theTeesheet).length > 0) {
			$j($theTeesheet).slideToggle("medium");
		} else {
			$j.generateTeesheet($eventTrigger, $j($eventTrigger).parent(), $delayTime);
		}
	}, function (event) {
		event.preventDefault();
		var $eventTrigger = $j(this);
		var $theTeesheet = $j($eventTrigger).closest(".panelContent").find(".teesheet");

		$j($eventTrigger).find("span[class!=cosmetic]").text("View Tee Times");
		$j($theTeesheet).slideToggle("medium");
	});

	// Tee sheets - Handle navigation within a tee sheet
	$j(".viewTeeSheet2").live("click", function (event) {
		event.preventDefault();

		var $eventTrigger = $j(this);
		var $teesheetAppearsAfter = $j($eventTrigger).closest(".panelContent").find(".ctaLinkContainer");

		$j($eventTrigger).closest(".panelContent").find(".teesheet").remove();

		if ($j($eventTrigger).closest(".panelContent").find(".scorecard").length > 0) {
			$teesheetAppearsAfter = $j($eventTrigger).closest(".panelContent").find(".scorecard");
		}

		$j.generateTeesheet($eventTrigger, $teesheetAppearsAfter, 0);
	});

	// Datepicker for teesheet navigation
	// Can't have calendar icon because it will only show on focus
	// One for the future
	$j("#[id*=tsCalendarNav]").live("click", function () {
		$j(this).datepicker({
			showOn: "focus",
			dateFormat: 'dd/mm/yy',
			minDate: 0,
			onSelect: function () { $j(this).next('a').trigger('click'); }
		}).focus();
	});

	// Really need to function out the live click events - this is yet another dupe of code above with a little tweak.
	// Come back to this as soon as there is time
	$j("#[id*=calendarSubmitLink]").live("click", function (event) {
		event.preventDefault();
		var $eventTrigger = $j(this);

		var $originalHref = $j($eventTrigger).attr("href");

		//var $newDateArr = $j("#tsCalendarNav").val().split("/");
		var $newDateArr = $eventTrigger.closest(".panelContent").find("#[id*=tsCalendarNav]").val().split("/");
		var $newDate = $newDateArr[2] + "-" + $newDateArr[1] + "-" + $newDateArr[0];

		$j($eventTrigger).attr("href", $originalHref + $newDate + "T00:00:01");

		var $teesheetAppearsAfter = $j($eventTrigger).closest(".panelContent").find(".ctaLinkContainer");

		$j($eventTrigger).closest(".panelContent").find(".teesheet").remove();

		if ($j($eventTrigger).closest(".panelContent").find(".scorecard").length > 0) {
			$teesheetAppearsAfter = $j($eventTrigger).closest(".panelContent").find(".scorecard");
		}

		$j.generateTeesheet($eventTrigger, $teesheetAppearsAfter, 0);
	});

	// Add items to the basket.
	// Needs to be a live event since the links are added to the DOM dynamically
	$j(".basketLink").live("click", function (event) {
		event.preventDefault();

		$firingLink = $j(this);

		// From the link itself
		var $fullQuerystring = $firingLink.attr("href");
		var $courseId = $j.getQueryString({ ID: "courseId", URL: $fullQuerystring });
		var $venueName = $j.getQueryString({ ID: "venueName", URL: $fullQuerystring });
		var $courseName = $j.getQueryString({ ID: "courseName", URL: $fullQuerystring });
		var $selectedDate = $j.getQueryString({ ID: "teeDate", URL: $fullQuerystring });
		var $price = $j.getQueryString({ ID: "price", URL: $fullQuerystring });
		var $players = $j.getQueryString({ ID: "players", URL: $fullQuerystring })

		var $targetId = $firingLink.attr('id').toString();
		var $idLength = $targetId.length - 1;
		$targetId = $targetId.substring(0, $idLength);

		switch ($players) {
			case '1':
				$j('#' + $targetId + '2').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '3').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '4').attr('class', 'disabledTeeTime');
			case '2':
				$j('#' + $targetId + '1').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '3').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '4').attr('class', 'disabledTeeTime');
			case '3':
				$j('#' + $targetId + '1').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '2').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '4').attr('class', 'disabledTeeTime');
			case '4':
				$j('#' + $targetId + '1').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '2').attr('class', 'disabledTeeTime');
				$j('#' + $targetId + '3').attr('class', 'disabledTeeTime');
		}

		$targetId = $targetId + 'x';
		$j('#' + $targetId).attr('class', 'teeTimeDisplayTime selectedPlayers');

		// Add to basket using web service
		$j.ajax({
			type: "POST",
			url: "/WebServices/lookup.asmx/AddToBasket",
			dataType: "xml",
			data: "golfcourseid=" + $courseId + "&teetime=" + $selectedDate + "&players=" + $players,
			success: function () {
				$j.addBasketItem($selectedDate, $courseId, $venueName, $courseName, $firingLink, $price, $players);
			}
		});
	});

	$j(".deleteLink").live("click", function (event) {
		event.preventDefault();

		$firingLink = $j(this);

		var $fullQuerystring = $j(this).attr("href");
		var $courseId = $j.getQueryString({ ID: "courseId", URL: $fullQuerystring });
		var $selectedDate = $j.getQueryString({ ID: "teeDate", URL: $fullQuerystring });
		var $players = $j.getQueryString({ ID: "players", URL: $fullQuerystring });

		// Remove from basket using web service
		$j.ajax({
			type: "POST",
			url: "/WebServices/lookup.asmx/RemoveFromBasket",
			dataType: "xml",
			data: "golfcourseid=" + $courseId + "&teetime=" + $selectedDate + "&players=" + $players,
			success: function () {
				$j.removeBasketItem($firingLink, $courseId, $selectedDate, $players);
			}
		});
	});

	// Don't let the user add the same teetime twice
	$j(".addedTeeTime, .disabledTeeTime").live("click", function (event) {
		event.preventDefault();
	});

	// View the scorecard
	$j(".viewScorecard").toggle(function (event) {
		event.preventDefault();
		var $firingItem = $j(this);
		var $theScorecard = $j($firingItem).closest(".panelContent").find(".scorecard");

		$j($firingItem).find("span[class!=cosmetic]").text("Close Scorecard");

		if ($j($theScorecard).length > 0) {
			$j($theScorecard).slideToggle("medium");
		} else {		
			var $fullQuerystring = $j(this).attr("href");
			var $courseId = $j.getQueryString({ ID: "courseId", URL: $fullQuerystring });

			// Log the event
			_gaq.push(['_trackEvent', 'View Scorecard', 'Click', 'CourseId=' + $courseId]);

			// Get the scorecard
			$j.ajax({
				type: "POST",
				url: "/WebServices/lookup.asmx/GetGolfcourseScoreCard",
				dataType: "xml",
				data: "courseId=" + $courseId,
				success: function (data) {
					var $scorecardContainer = document.createElement("div");
					$j($scorecardContainer)
                            .attr("class", "scorecard")
                            .html($j(data).find("string").text());
					$j($firingItem).find("span[class!=cosmetic]").text("Close Scorecard").closest("div").after($scorecardContainer);
				}
			});
		}

	}, function (event) {
		event.preventDefault();
		var $firingItem = $j(this);
		var $theScorecard = $j($firingItem).closest(".panelContent").find(".scorecard");

		$j($firingItem).find("span[class!=cosmetic]").text("View Scorecard");
		$j($theScorecard).slideToggle("medium");

	});

	$j.removeBasketItem = function ($firingLink, $courseId, $teetime, $players) {
		var $linkId = "a" + $j($firingLink).attr("href").replace(/[^\d]*/gi, "");

		var $idLength = $linkId.length - 1;
		var $targetId = $linkId.substring(0, $idLength);

		$j('#' + $targetId + '1').attr('class', 'basketLink');
		$j('#' + $targetId + '2').attr('class', 'basketLink');
		$j('#' + $targetId + '3').attr('class', 'basketLink');
		$j('#' + $targetId + '4').attr('class', 'basketLink');

		$targetId = $targetId + 'x';

		$j("#" + $targetId).attr("class", "teeTimeDisplayTime");


		var $panel = $j($firingLink).closest(".panelContent");
		// If this is the last link in the basket then get rid of teh ul and teh checkout link, and add an empty message
		if ($j($firingLink).closest("ul").children().length === 1) {
			var $emptyInfo = document.createElement("p");
			$j($emptyInfo)
                    .text("Your basket is currently empty.")
                    .addClass("emptyInfo");
			$j($panel).find("ul").remove();
			$j($panel).find("a").remove();
			$j($panel).append($emptyInfo);

			// Remove the checkout button from the teesheet as well
			$j(".teesheet .ctaLink").remove();
		}
		$j($firingLink).parent("li").remove();
	};

	// Disable order by option for Recommended sorting
	$j("#[id*=sortDropDownBox]").blur(function (event) {
		var $thisSelect = $j(this);
		var $optionVal = $j($thisSelect).val();

		if ($optionVal.toLowerCase() == "recommended") {
			$j("#[id*=orderByDropDownBox]").attr("disabled", "disabled");
			$j("#[id*=orderByDropDownBox] option[value=Ascending]").attr("selected", "selected");
		} else {
			$j("#[id*=orderByDropDownBox]").removeAttr("disabled");
		}
	});
});

// Map things that should run on window load
$j(window).load(function() {
    /*	Watermarked inputs */
    $j('input.hasDefaultText, textarea.hasDefaultText').watermark();

});
