
var vicert = {};

vicert.init = function(baseSiteUrl) {
	
	$(document).ready(function() {
		$(document).pngFix();
		
		// Facebook, Twitter, and Print functions:
		var u = location.href;
		var t = document.title;
		$("#facebookButton").click(function() {
			window.open("http://www.facebook.com/sharer.php?u=" + encodeURIComponent(u) + "&t=" + encodeURIComponent(t), "sharer", "toolbar=0,status=0,width=626,height=436");
		});
		$("#twitterButton").click(function() {
			window.open("http://twitter.com/share?url=" + encodeURIComponent(u) + "&text=" + encodeURIComponent(t), "sharer", "toolbar=0,status=0,width=550,height=450");
		});
		$("#printButton").click(function() {
			window.print();
		});
		
		$("#consultationDialog").dialog({
			autoOpen: false,
			modal: true,
			resizable: true,
			draggable: false,
			width: 350,
			buttons: {
				"SUBMIT": function() {
					clearErrors("consultationEmailForm");
					disableButtons("consultationDialog");
					$("#consultationEmailForm").ajaxSubmit({
						iframe: true,
						dataType: "json",
						url: baseSiteUrl + "/ajax/consultation-email",
						success: function(response) {
							$("#consultationDialog").dialog("open");

							if (response != undefined && response.fieldErrors != undefined && response.fieldErrors.length > 0) {
								showErrorMessage("consultationEmailForm", false);
								$.each(response.fieldErrors, function(index, fieldName) {
									$("#consultationEmailForm *[name=" + fieldName + "]").addClass("error");
								});
							} else if (response != undefined && response.success) {
								$("#consultationDialog").dialog("close");
								$("#messageDialog").dialog("open");
							} else {
								showErrorMessage("consultationEmailForm", true);
							}
							enableButtons("consultationDialog");
						},
						error: function(response) {
							$("#consultationDialog").dialog("open");
							showErrorMessage("consultationEmailForm", true);
							enableButtons("consultationDialog");
						}
					});
				}
			},
			open: function() {
				// Prevent auto-focus of the first input field.
				$("#consultationEmailForm input:first").blur();
				clearErrors("consultationEmailForm");
			},
			close: function() {
				clearErrors("consultationEmailForm");
			}
		});
		
		$("#emailDialog").dialog({
			autoOpen: false,
			modal: true,
			resizable: true,
			draggable: false,
			width: 350,
			buttons: {
				"SHARE": function() {
					clearErrors("shareEmailForm");
					disableButtons("emailDialog");
					$("#shareEmailForm").ajaxSubmit({
						iframe: false,
						dataType: "json",
						url: baseSiteUrl + "/ajax/share-email",
						success: function(response) {
							$("#emailDialog").dialog("open");
							if (response != undefined && response.fieldErrors != undefined && response.fieldErrors.length > 0) {
								showErrorMessage("shareEmailForm", false);
								$.each(response.fieldErrors, function(index, fieldName) {
									$("#shareEmailForm *[name=" + fieldName + "]").addClass("error");
								});
							} else if (response != undefined && response.success) {
								$("#emailDialog").dialog("close");
								$("#messageDialog").dialog("open");
							} else {
								showErrorMessage("shareEmailForm", true);
							}
							enableButtons("emailDialog");
						},
						error: function(response) {
							$("#emailDialog").dialog("open");
							showErrorMessage("shareEmailForm", true);
							enableButtons("emailDialog");
						}
					});
				}
			},
			open: function() {
				// Prevent auto-focus of the first input field.
				$("#shareEmailForm input:first").blur();
				clearErrors("shareEmailForm");
			},
			close: function() {
				clearErrors("shareEmailForm");
			}
		});
		
		$("#messageDialog").dialog({
			autoOpen: false,
			modal: true,
			resizable: false,
			draggable: false,
			buttons: {
				"OK": function() {
					$(this).dialog("close");
				}
			}
		});
		
		function disableButtons(dialogId) {
			$("div[aria-labelledby=ui-dialog-title-" + dialogId + "] button")
					.attr("disabled", "disabled")
					.addClass("ui-state-disabled");
		}
		
		function enableButtons(dialogId) {
			$("div[aria-labelledby=ui-dialog-title-" + dialogId + "] button")
				.attr("disabled", "")
				.removeClass("ui-state-disabled");
		}
		
		function showErrorMessage(formId, serverError) {
			if (serverError) {
				$("#" + formId + " .errorMessage").text("Server error, please try again later.");
			} else {
				$("#" + formId + " .errorMessage").text("Please make corrections in highlighted fields.");
			}
			$("#" + formId + " .errorMessageBox").show();
		}
		
		function clearErrors(formId) {
			$("#" + formId + " .errorMessageBox").hide();
			$("#" + formId + " *").removeClass("error");
		}
		
		$("#consultationButton").click(function() {
			$("#consultationDialog").dialog("open");
		});
		$("#emailButton").click(function() {
			$("#emailDialog").dialog("open");
		});
		
		$(".dialog label").inFieldLabels({ fadeDuration: 100, fadeOpacity: 0.5 });
		
		$("#shareButton").click(function(event) {
			$("#shareDropdown").show();
			event.stopPropagation();
		});
		$("html").click(function() {
			$("#shareDropdown").hide();
		});
	});
	
	$(window).load(function() {
		// Menu images preloading:
		
		var imagesUrl = baseSiteUrl + "/images/site/menu/";
		var cache = [];
		var images = ["menu_services_blue.png", "menu_services_grey.png",
		              "menu_work_blue.png", "menu_work_grey.png",
		              "menu_people_blue.png", "menu_people_grey.png",
		              "menu_why_vicert_blue.png", "menu_why_vicert_grey.png"];
		$.each(images, function(index, image) {
			var cacheImage = $("<img/>");
			cacheImage.attr("src", imagesUrl + image);
			cache.push(cacheImage);
		});
	});

};

