(function ($) {

	/* -----------------FORMS VALIDATION - BUY A TICKET --------------------- */

	var Form_BuyTicket_Validate = {

		form: $("#form_ecommerce_3033"),
		title: $("#q3033_q12"),
		firstname: $("#q3033_q1"),
		surname: $("#q3033_q2"),
		address: $("#q3033_q3"),
		town: $("#q3033_q5"),
		postcode: $("#q3033_q7"),
		email: $("#q3033_q16"),
		age: $("#q3033_q18"),
		hear_gg: $("#q3033_q28"),

		initialize: function () {
			var self = Form_BuyTicket_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.validate();
			self.firstname.rules("add", {
				required: true
			});
			self.title.rules("add", {
				required: true
			});
			self.surname.rules("add", {
				required: true
			});
			self.address.rules("add", {
				required: true
			});
			self.town.rules("add", {
				required: true
			});
			self.postcode.rules("add", {
				required: true
			});
			self.email.rules("add", {
				required: true,
				email: true
			});
			self.age.rules("add", {
				required: true
			});
			self.hear_gg.rules("add", {
				required: true
			});

		}
	};

	Form_BuyTicket_Validate.initialize();

	/* -----------------FORMS VALIDATION - PARTY DONATION --------------------- */

	var Form_PartyDonate_Validate = {

		form: $("#form_ecommerce_2912"),
		title: $("#q2912_q12"),
		firstname: $("#q2912_q1"),
		surname: $("#q2912_q2"),
		address: $("#q2912_q3"),
		town: $("#q2912_q5"),
		postcode: $("#q2912_q7"),
    email: $("#q2912_q16"),
		age: $("#q2912_q18"),
		donation: $("#q2912_q17"),
		hear_gg: $("#q2912_q32"),

		initialize: function () {
			var self = Form_PartyDonate_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.validate();
			self.firstname.rules("add", {
				required: true
			});
			self.title.rules("add", {
				required: true
			});
			self.surname.rules("add", {
				required: true
			});
			self.address.rules("add", {
				required: true
			});
			self.town.rules("add", {
				required: true
			});
			self.postcode.rules("add", {
				required: true
			});
      self.email.rules("add", {
        required: true,
        email: true
      });
			self.age.rules("add", {
				required: true
			});
			self.hear_gg.rules("add", {
				required: true
			});
			self.donation.rules("add", {
				required: true,
				number: true
			});

		}
	};

	Form_PartyDonate_Validate.initialize();

	/* -----------------FORMS VALIDATION - MAIN DONATION --------------------- */

	var Form_MainDonate_Validate = {

		form: $("#form_ecommerce_1954"),
		firstname: $("#q1954_q1"),
		surname: $("#q1954_q2"),
		title: $("#q1954_q12"),
		address: $("#q1954_q3"),
		town: $("#q1954_q5"),
		postcode: $("#q1954_q7"),
                  email: $("#q1954_q16"),
		age: $("#q1954_q18"),
		donation: $("#q1954_q17"),
		hear_gg: $("#q1954_q22"),

		initialize: function () {
			var self = Form_MainDonate_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.validate();
			self.firstname.rules("add", {
				required: true
			});
			self.title.rules("add", {
				required: true
			});
			self.surname.rules("add", {
				required: true
			});
			self.address.rules("add", {
				required: true
			});
			self.town.rules("add", {
				required: true
			});
			self.postcode.rules("add", {
				required: true
			});
                           self.email.rules("add", {
				required: true
			});

			self.age.rules("add", {
				required: true
			});
			self.hear_gg.rules("add", {
				required: true
			});
			self.donation.rules("add", {
				required: true,
				number: true
			});
		}
	};

	Form_MainDonate_Validate.initialize();

	/* ----------------- TICKET/TARGET VALIDATION - EDIT USER DETAILS --------------------- */

	var Target_Validate = {

		form: $("#main_form"),

		initialize: function () {
			var self = Target_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.validate({
				rules: {
					metadata_field_text_1424_value: {
						number: true
					},
					metadata_field_text_3727_value: {
						number: true
					},
					metadata_field_text_4134_value: {
						digits: true
					}
				},
				messages: {
					metadata_field_text_1424_value: "Please enter a valid number. <br />Please make sure the spaces are removed",
					metadata_field_text_3727_value: "Please enter a valid number. <br />Please make sure the spaces are removed",
					metadata_field_text_4134_value: "Please enter only digits. <br />Please make sure the spaces are removed"
				}
			});
		}
	};

	Target_Validate.initialize();

	/* -----------------FORMS VALIDATION - EDIT USER DETAILS --------------------- */

	var Form_Edit_Validate = {

		form: $("#main_form"),
		firstname: $("p.firstname input"),
		surname: $("p.surname input"),
		address: $("p.address input"),
		town: $("p.town input"),
		postcode: $("p.postcode input"),
		url: $("p.url input"),
		//ticket: $("#metadata_field_text_1424_value"),
		//donation: $("#metadata_field_text_3727_value"),
		//attendee: $("#metadata_field_text_4134_value"),
		initialize: function () {
			var self = Form_Edit_Validate;

			if (!self.form.length) {
				return false;
			}

			//self.form.removeAttr("onsubmit");
			self.form.validate();
			self.firstname.rules("add", {
				required: true
			});
			self.surname.rules("add", {
				required: true
			});
			self.address.rules("add", {
				required: true
			});
			self.town.rules("add", {
				required: true
			});
			self.postcode.rules("add", {
				required: true
			});
			self.url.rules("add", {
				required: true,
				"value-valid": true,
				"lower-case": true
			});
			//self.ticket.rules("add", { number:true });
			//self.donation.rules("add", { number:true });
			//self.attendee.rules("add", { digits:true });
		}
	};

	Form_Edit_Validate.initialize();

	/* -----------------FORMS VALIDATION - MESSAGE BOARD --------------------- */

	var Form_Message_Validate = {

		form: $("#page_asset_builder_1238"),
		mes: $("textarea#comment_0_comment"),

		initialize: function () {
			var self = Form_Message_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.removeAttr("onsubmit");
			self.form.validate();
			self.mes.rules("add", {
				required: true
			});

		}
	};

	Form_Message_Validate.initialize();

	/* -----------------FORMS VALIDATION - REGISTER PAGE --------------------- */

	var Form_Validate = {

		form: $("#page_account_manager_391"),
		firstname: $("#user_0_247"),
		title: $("#metadata_field_select_851"),
		hear_gg: $("#metadata_field_text_3895_value"),
		surname: $("#user_0_248"),
		address: $("#metadata_field_text_852_value"),
		town: $("#metadata_field_text_854_value"),
		postcode: $("#metadata_field_text_855_value"),
		username: $("#user_0_245"),
		password: $("#user_0_246_one"),
		confirm_password: $("#user_0_246_two"),
		dob: $(".dob select"),
		url: $("#metadata_field_text_858_value"),

		initialize: function () {

			var self = Form_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.removeAttr("onsubmit");
			self.form.validate();
			self.firstname.rules("add", {
				required: true
			});
			self.surname.rules("add", {
				required: true
			});
			self.address.rules("add", {
				required: true
			});
			self.town.rules("add", {
				required: true
			});
			self.postcode.rules("add", {
				required: true
			});
			self.username.rules("add", {
				required: true
			});
			self.password.rules("add", {
				required: true,
				minlength: 6
			});
			self.confirm_password.rules("add", {
				required: true,
				minlength: 6,
				equalTo: self.password
			});
			self.dob.rules("add", {
				required: true
			});
			self.url.rules("add", {
				required: true,
				"url-taken": true,
				"value-valid": true,
				"lower-case": true
			});
			self.title.rules("add", {
				required: true
			});
			self.hear_gg.rules("add", {
				required: true
			});

		}
	};

	if (!$("#page_account_manager_391 .thank-you").length) {
		Form_Validate.initialize();
	}

	/* ------------- GALLERY PAGE -------------------- */

	var Gallery = {

		thumbnail: $("#thumbnails a"),
		main_img: $("#gallery-box div.gal-img"),
		first_img: $("#gallery-box div.gal-img:eq(0)"),
		value: $("#page_no").val(),
		pos_display: $("#gallery-box div.gal-img:eq(" + ((($("#page_no").val()) - 1) * 7) + ")"),
		prev: $("p.prev"),
		next: $("p.next"),
		next_attr: $("p.next a").attr("href"),

		initialize: function () {

			var self = Gallery;

			if (self.main_img.length == 0) {
				return false;
			}
			self.main_img.hide();
			self.thumbnail.removeAttr("href");
			self.prev.hide();
			self.next.addClass("alone");

			if (self.value == "") {
				self.first_img.show();
			}
			else {
				self.pos_display.show();
			}

			if (self.value > 1) {
				self.prev.show();
				self.next.removeClass("alone");
			}

			if (self.next_attr == "#top") {
				self.next.hide();
				self.prev.after("<p class='empty'>&nbsp;</p>");
			}

			self.thumbnail.click(self.image_click);

		},

		image_click: function () {

			var self = Gallery;
			var tab = $(this);
			var id = "#gallery-box #" + tab.attr("class");

			self.main_img.hide();
			$(id).show();

			return false;

		}
	};

	Gallery.initialize();

	/* ------------TABS - EDIT USER AND PARTY DETAILS-------------- */

	var Tabs = {

		tabs_ul: $("#tabs"),
		tabs_li: $('#tabs li'),
		user_tab: $("#edit-user"),
		party_tab: $("#edit-party"),
		content: $("#register-content-edit div.edit-user, #register-content-edit div.edit-party"),
		user_details: $(".edit-user"),
		party_details: $(".edit-party"),
		header: $("h2.edit-level"),
		stars: $("#register-content-edit .stars"),
		param_list: document.location.href.toString().split("#")[1],

		initialize: function () {

			var self = Tabs;

			if (self.tabs_ul.length == 0) {
				return false;
			}

			self.header.hide();
			self.tabs_ul.show();
			self.content.hide();

			if (self.param_list == "party") {
				self.party_tab.addClass('active');
				self.party_details.show();
				self.party_details.removeAttr("id");
			}
			else {
				self.user_tab.addClass('active');
				self.user_details.show();
			}
			self.stars.hide();

			self.tabs_li.click(self.tab_click);
		},

		tab_click: function () {

			var self = Tabs;
			var li = $(this);
			var id = "." + li.attr("id");

			self.content.hide();
			$(id).show();
			self.tabs_li.addClass('active');
			self.tabs_li.not(this).removeClass('active');

			return false;

		}
	};

	Tabs.initialize();

	/* ------------ USER THUMBNAIL -------------- */

	var Add_Thumbnail = {

		box: $("#add-photo-box"),
		link: $("p.add-link"),

		initialize: function () {
			var self = Add_Thumbnail;

			if (!self.box.length) {
				return false;
			}

			self.box.hide();
			self.link.click(function () {
				if (self.box.is(":hidden")) {
					self.box.slideDown("slow");
					self.link.text("Close window");
				}
				else {
					self.box.slideUp("slow");
					self.link.text("Change your photo");
				}
			});
		}
	};

	Add_Thumbnail.initialize();

	var Donation_List = {

		cells: $("#donation-list .gift-aid"),
		tax: 28.2,

		initialize: function () {

			var self = Donation_List;

			if (!self.cells.length) {
				return false;
			}

			self.cells.each(function () {

				var td = $(this);
				var aid = td.text();

				if (aid.search("1") !== -1) {

					var prev = td.prev();
					var amount = parseFloat((parseFloat(prev.text().replace("£", "")) * self.tax) / 100);
					amount = amount.toFixed(2);

					td.text("£" + amount);

				}
				else {

					td.text("-");
				}
			});
		}
	};

	Donation_List.initialize();

	/* ------------ TEXTAREA CHARACTER LIMIT -------------- */

	function limitChars(textid, limit, infodiv) {
		var text = $('#' + textid).val();
		var textlength = text.length;

		if (textlength > limit) {
			$('#' + infodiv).html('You cannot write more then ' + limit + ' characters!');
			$('#' + textid).val(text.substr(0, limit));
			return false;
		}
		else {
			$('#' + infodiv).html('You have ' + (limit - textlength) + ' characters left.');
			return true;
		}
	}

	$(function () {
		$('#email-box-textarea').keyup(function () {
			limitChars('email-box-textarea', 240, 'email-box-error-msg');
		});
	});

	/* ------------ CHECKBOX REPLACEMENT FOR EDIT AND REGISTER PARTY -------------- */
	// for edit page, check the existing value of the email option
	var selectedOption_865 = $('#metadata_field_select_865 option[selected]').attr("value");

	//remove the select element
	$("#email-checkbox select").hide();

	//add the checkbox element
	$("#email-checkbox").prepend('<input type="checkbox" class="javascript-checkbox" ' + (selectedOption_865 === "true" ? "checked='checked'" : "") + ' \/>');

	$("#email-checkbox").addClass('js-checkbox-label');

	function calculateChecked_865() {

		var selectValue = this.checked;

		if (selectValue) {
			$('#metadata_field_select_865').val('true');
		}

		else {
			$('#metadata_field_select_865').val('false');
		}
	}

	// update checkbox value when it is checked or unchecked
	$('#email-checkbox .javascript-checkbox').click(calculateChecked_865);

	/* ------------ CHECKBOX REPLACEMENT FOR EDIT AND REGISTER PARTY email address -------------- */
	// for edit page, check the existing value of the email option
	var selectedOption_6553 = $('#metadata_field_select_6553 option[selected]').attr("value");

	//remove the select element
	$("#checkbox-email select").hide();

	  			//add the checkbox element
	$("#checkbox-email").prepend('<input type="checkbox" class="javascript-checkbox" ' + (selectedOption_6553 === "false" ? "checked='checked'" : "") + ' \/>');

	$("#checkbox-email").addClass('js-checkbox-label');

	function calculateChecked_6553() {

		var selectValue = this.checked;

		if (selectValue) {
			$('#metadata_field_select_6553').val('false');
		}

		else {
			$('#metadata_field_select_6553').val('true');
		}
	}

	// update checkbox value when it is checked or unchecked
	$('#checkbox-email .javascript-checkbox').click(calculateChecked_6553);

	/* ------------ CHECKBOX REPLACEMENT FOR DONATION PAGE - EMAIL AND TAX OPTIONS -------------- */

	var selectedOption_q25 = $('#q1954_q25 option[selected]').attr("value");
	var selectedOption_q27 = $('#q1954_q27 option[selected]').attr("value");
	var selectedOption_q33 = $('#q2912_q33 option[selected]').attr("value");
	var selectedOption_q37 = $('#q2912_q37 option[selected]').attr("value");

	$("#q1954_q25").hide();
	$("#q1954_q27").hide();
	$("#q2912_q33").hide();
	$("#q2912_q37").hide();

	$("label[for=q1954_q25_0]").before('<input type="checkbox" id="js-tax-checkbox" class="javascript-checkbox" ' + (selectedOption_q25 === "1" ? "checked='checked'" : "") + ' \/>');
	$("label[for=q1954_q27_0]").before('<input type="checkbox" id="js-email-checkbox" class="javascript-checkbox" ' + (selectedOption_q27 === "false" ? "checked='checked'" : "") + ' \/>');
	$("label[for=q2912_q33_0]").before('<input type="checkbox" id="js-tax-checkbox-not-logged" class="javascript-checkbox" ' + (selectedOption_q33 === "1" ? "checked='checked'" : "") + ' \/>');
	$("label[for=q2912_q37_0]").before('<input type="checkbox" id="js-email-checkbox-not-logged" class="javascript-checkbox" ' + (selectedOption_q37 === "1" ? "checked='checked'" : "") + ' \/>');

	function jsCalculateTaxChecked() {
		var selectValue = this.checked;
		if (selectValue) {
			$('#q1954_q25').val('1');
		}
		else {
			$('#q1954_q25').val('0');
		}
	}

	function jsCalculateEmailChecked() {
		var selectValue = this.checked;
		if (selectValue) {
			$('#q1954_q27').val('false');
		}
		else {
			$('#q1954_q27').val('true');
		}
	}

	function jsCalculateTaxCheckedNotLogged() {
		var selectValue = this.checked;
		if (selectValue) {
			$('#q2912_q33').val('1');
		}
		else {
			$('#q2912_q33').val('0');
		}
	}

	function jsCalculateEmailCheckedNotLogged() {
		var selectValue = this.checked;
		if (selectValue) {
			$('#q2912_q37').val('1');
		}
		else {
			$('#q2912_q37').val('0');
		}
	}

	$('#js-tax-checkbox').click(jsCalculateTaxChecked);
	$('#js-email-checkbox').click(jsCalculateEmailChecked);
	$('#js-tax-checkbox-not-logged').click(jsCalculateTaxCheckedNotLogged);
	$('#js-email-checkbox-not-logged').click(jsCalculateEmailCheckedNotLogged);

	$("#register").parent("form").validate({
		rules: {
			payment_gateway_sagepay_2790_card: {
				required: true,
				number: true
			}
		}
	});

	/* ----------------- FORMS VALIDATION - PAYMENT --------------------- */

	var Form_Payment_Validate = {

		form: $("#payment-form").parent($("#register-content-edit")).parent($("#register")).parent($('form')),
		holderName: $("input[name='payment_gateway_sagepay_2790_card[name]']"),
		CV2: $("input[name='payment_gateway_sagepay_2790_card[cv2]']"),
		cardExpiryMonth: $("select[name='payment_gateway_sagepay_2790_card[expiry_month]']"),
		cardExpiryYear: $("select[name='payment_gateway_sagepay_2790_card[expiry_year]']"),
		cardNumber: $("input[name='payment_gateway_sagepay_2790_card[number]']"),
		billingName: $("input[name='payment_gateway_sagepay_2790_card[billing_first_names]']"),
		billingSurname: $("input[name='payment_gateway_sagepay_2790_card[billing_surname]']"),
		billingAdr: $("input[name='payment_gateway_sagepay_2790_card[billing_address1]']"),
		billingTown: $("input[name='payment_gateway_sagepay_2790_card[billing_city]']"),
		billingPostcode: $("input[name='payment_gateway_sagepay_2790_card[billing_postcode]']"),
		billingCountry: $("select[name='payment_gateway_sagepay_2790_card[billing_country]']"),

		initialize: function () {
			var self = Form_Payment_Validate;

			if (!self.form.length) {
				return false;
			}

			self.form.validate();
			self.holderName.rules("add", {
				required: true
			});
			self.cardNumber.rules("add", {
				required: true,
				digits: true,
				minlength: 16
			});
			self.cardExpiryMonth.rules("add", {
				required: true
			});
			self.cardExpiryYear.rules("add", {
				required: true
			});
			self.CV2.rules("add", {
				required: true,
				digits: true,
				minlength: 3
			});

			self.billingName.rules("add", {
				required: true
			});
			self.billingSurname.rules("add", {
				required: true
			});
			self.billingAdr.rules("add", {
				required: true
			});
			self.billingTown.rules("add", {
				required: true
			});
			self.billingPostcode.rules("add", {
				required: true
			});
			self.billingCountry.rules("add", {
				required: true
			});
		}
	};

	Form_Payment_Validate.initialize();

})(jQuery);