$(function() {	
	// DISABLE ENTER PRESS FOR SEARCH
	$(document).keypress(function (evt) {
		if (evt.keyCode == 13) {
			return false;
		}
	});
	
	// SOME GENERAL SETUP RULES
	$("li:first-child").addClass("first");
	$("li:last-child").addClass("last");
	$(".paging .next").prev("a.page").addClass("last");
	$(".emptyonclick").emptyonclick();
	$(".datepicker").datePicker({clickInput:true});
	
	// ROUNDED CORNERS SETUP, ONLY FOR IE - ALL OTHERS USE CSS3
	if ($.support.opacity == false) {
		$(".outer-block").corner("10px");
		$(".inner-block").corner("8px");
	}
	
	$(".welcome .button").click(function() {
		var AreaID = $(".welcome #AreaID").val();
		
		$.post("/assets/p_postcode.php", { AreaID: AreaID }, function(AreaURL) {
			window.location = "/" + AreaURL + "/home/";
		});
		
		return false;
	});
	
	$(".welcome #AllofKent").click(function() {
		$("#AreaID").val(0);
	});
	
	$(".things-to-do .go-local").click(function() {
		var AreaID = $(".things-to-do #AreaID").val();
		var Postcode = $(".things-to-do #Postcode").val();
		
		if (Postcode == "Postcode") { Postcode = ""; }
		
		if (Postcode != "") {
			if (ValidatePostcode(Postcode)) {
				Postcode = ValidatePostcode(Postcode);
				$(".search #Postcode").val(Postcode);
			};
		}
		
		$.post("/assets/p_postcode.php", { AreaID: AreaID, Postcode: Postcode }, function(AreaURL) {
			window.location = "/" + AreaURL + "/search/";
		});
		
		return false;
	});
	
	$("#Search a.button").click(function() {
		$("#Search").submit();
		
		return false;
	});
	
	$(".event-details .dates h6 a").click(function() {
		$(".event-details .dates h6:not(:first)").toggleClass("hide");
		
		return false;
	});
	
	
	// HOMEPAGE VIDEO CAROUSEL
	$(".home .video-kent .carousel").scrollable({ size: 5, nextPage: ".next-page", prevPage: ".previous-page", clickable: false, vertical: true });
	
	$(".home .video-kent .carousel .programme").mouseover(function() { $(this).addClass("selected"); });
	$(".home .video-kent .carousel .programme").mouseout(function() { $(this).removeClass("selected"); });

	$(".home .video-kent .carousel .programme").click(function () {
		var VenueID = $("a", this).attr("rel");
		
		$(".home .video-kent .carousel .programme").removeClass("darkgreen");
		$(this).addClass("darkgreen");
		$(".home .video-kent .carousel .programme").addClass("green");
		
		$(".home .video-kent .playback").empty();
			
		$.post("/partials/programmes.php", { VenueID: VenueID, Template: "playback_videokent.tpl" }, function(PlayerHTML) {
			$(".home .video-kent .playback object").remove();
			$(".home .video-kent .playback").html(PlayerHTML);
			$(".home .video-kent .playback").show();
		});
		
		return false;
	});
	
	// EVENT DETAILS VIDEO CAROUSEL
	$(".event-details .related-films .carousel").scrollable({ size: 3, nextPage: ".next-page", prevPage: ".previous-page", clickable: false });
	
	$(".event-details .related-films .carousel .programme").click(function () {
		var ProgrammeID = $("a", this).attr("rel");
		var CurrentProgrammeID = $("body").data("ProgrammeID");
		
		if (ProgrammeID != CurrentProgrammeID) {
			// STORE PROGRAMME ID FOR FUTURE REFERENCE
			$("body").data("ProgrammeID", ProgrammeID);
			
			$(".event-details .playback").empty();
			
			$.post("/partials/programmes.php", { ProgrammeID: ProgrammeID, Template: "playback_eventdetails.tpl" }, function(PlayerHTML) {
				$(".event-details .playback object").remove();
				$(".event-details .playback").html(PlayerHTML);
				$(".event-details .playback").show();
			});
		}
		
		return false;
	});
	
	// VENUE DETAILS VIDEO CAROUSEL
	$(".venue-details .related-films .carousel").scrollable({ size: 3, nextPage: ".next-page", prevPage: ".previous-page", clickable: false });
	
	$(".venue-details .related-films .carousel .programme").click(function () {
		var ProgrammeID = $("a", this).attr("rel");
		var CurrentProgrammeID = $("body").data("ProgrammeID");
		
		if (ProgrammeID != CurrentProgrammeID) {
			// STORE PROGRAMME ID FOR FUTURE REFERENCE
			$("body").data("ProgrammeID", ProgrammeID);
			
			$(".venue-details .playback").empty();
			
			$.post("/partials/programmes.php", { ProgrammeID: ProgrammeID, Template: "playback_venuedetails.tpl" }, function(PlayerHTML) {
				$(".venue-details .playback object").remove();
				$(".venue-details .playback").html(PlayerHTML);
				$(".venue-details .playback").show();
			});
		}
		
		return false;
	});

	// VENUE DETAILS VIDEO CAROUSEL
	// FIND SELECTED ONE
	
	$(".venues .video-kent .carousel .programme").mouseover(function() { $(this).addClass("selected"); });
	$(".venues .video-kent .carousel .programme").mouseout(function() { $(this).removeClass("selected"); });
	
	var SelectedItem = $(".venues .video-kent .carousel .darkgreen").attr("rel") - 1;
	
	var CarouselAPI = $(".venues .video-kent .carousel").scrollable({ size: 5, nextPage: ".next-page", prevPage: ".previous-page", clickable: false, vertical: true, api: true });
	if ($(".venues .video-kent .carousel").length != 0) {
		CarouselAPI.seekTo(SelectedItem);
		CarouselAPI.reload();
	}
	
	// MAKE EVENTS LIST MATCH COLUMN TO THE LEFT
	var ColumnHeight = $(".canvas-reverse .column-left").height() - 70;
	$(".current-events .events").height(ColumnHeight + "px");
});


function MastheadSearchMap(AreaID) {
	$("#AreaID").val(AreaID);
	$("#AllofKent").attr("checked", false);
	
	$.post("/assets/p_postcode.php", { AreaID: AreaID }, function(AreaURL) {
		window.location = "/" + AreaURL + "/search/";
	});
}


function ValidatePostcode(Postcode) {
	// PERMITTED LETTERS DEPEND UPON THEIR POSITION IN THE POSTCODE.
	var alpha1 = "[abcdefghijklmnoprstuwyz]";
	var alpha2 = "[abcdefghklmnopqrstuvwxy]";
	var alpha3 = "[abcdefghjkpmnrstuvwxy]";
	var alpha4 = "[abehmnprvwxy]";
	var alpha5 = "[abdefghjlnpqrstuwxyz]";
	
	// ARRAY HOLDS THE REGULAR EXPRESSIONS FOR THE VALID POSTCODES
	var pcexp = new Array ();
	
	// EXPRESSION FOR POSTCODES: AN NAA, ANN NAA, AAN NAA, AND AANN NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	
	// EXPRESSION FOR POSTCODES: ANA NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	
	// EXPRESSION FOR POSTCODES: AANA  NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "{1}" + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	
	// EXCEPTION FOR THE SPECIAL POSTCODE GIR 0AA
	pcexp.push (/^(GIR)(\s*)(0AA)$/i);
	
	// STANDARD BFPO NUMBERS
	pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
	
	// C/O BFPO NUMBERS
	pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
	
	// OVERSEAS TERRITORIES
	pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);
	
	// ASSUME WE'RE NOT GOING TO FIND A VALID POSTCODE
	var valid = false;
	
	// CHECK THE STRING AGAINST THE TYPES OF POST CODES
	for (var i=0; i<pcexp.length; i++) {
		if (pcexp[i].test(Postcode)) {
		
			// THE POST CODE IS VALID - SPLIT THE POST CODE INTO COMPONENT PARTS
			pcexp[i].exec(Postcode);
			
			// COPY IT BACK INTO THE ORIGINAL STRING, CONVERTING IT TO UPPERCASE AND INSERTING A SPACE BETWEEN THE INWARD AND OUTWARD CODES
			Postcode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
			
			// IF IT IS A BFPO C/O TYPE POSTCODE, TIDY UP THE "C/O" PART
			Postcode = Postcode.replace (/C\/O\s*/,"c/o ");
			
			// LOAD NEW POSTCODE BACK INTO THE FORM ELEMENT
			valid = true;
			
			// REMEMBER THAT WE HAVE FOUND THAT THE CODE IS VALID AND BREAK FROM LOOP
			break;
		}
	}
	
	// RETURN WITH EITHER THE REFORMATTED VALID POSTCODE OR THE ORIGINAL INVALID POSTCODE
	if (valid) {
		return Postcode;
	
	} else {
		return false;
	}
}


function ValidateUpload() {
	var Filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

	var upload_email = document.getElementById("upload_email").value;
	var venue_name = document.getElementById("venue_name").value;
	var address1 = document.getElementById("address1").value;
	var postcode = document.getElementById("postcode").value;
	var event_title = document.getElementById("event_title").value;
	var event_synopsis = document.getElementById("event_synopsis").value;
	var event_telephone = document.getElementById("event_telephone").value;
	var date_from = document.getElementById("date_from").value;
	var date_to = document.getElementById("date_to").value;
	var event_time_info = document.getElementById("event_time_info").value;
	var event_price_info = document.getElementById("event_price_info").value;
	var event_additional_info = document.getElementById("event_additional_info").value;

	if (upload_email == ""){
		alert("Please enter an email address");
	} else if (Filter.test(upload_email) == false) {
		alert("Please enter a valid email address.");
	} else if (venue_name == ""){
		alert("Please enter a venue name");
	} else if (address1 == ""){
		alert("Please enter the first line of the address");
	} else if (postcode == ""){
		alert("Please enter a postcode");
	} else if (event_title == ""){
		alert("Please enter a title for the event");
	} else if (event_synopsis == ""){
		alert("Please enter a synopsis for the event");
	} else if (event_telephone == ""){
		alert("Please enter a telephone number");
	} else if (date_from == "" || date_from == "DD/MM/YY"){
		alert("Please enter a start date for the event");
	} else if (date_to == ""|| date_to == "DD/MM/YY"){
		alert("Please enter an end date for the event");
	} else if (event_time_info == ""){
		alert("Please enter time information for the event");
	} else if (event_price_info == ""){
		alert("Please enter price information for the event");
	} else {
		document.Add.submit();
	}
}
