// check mandatory fields
var mandatoryChecker = (function() {
	// private variables
	// reg exp for checking valid email address
	var emailCheck 		= /^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/,
		validationOK	= true,
		$targetTitle	= $targetField = $targetField = $focusField = null;

	function checkSpecialInput(checkType) {
		//console.info(checkType);
		switch (checkType) {
			case "email":
				(!$targetField.val().match(emailCheck)) ? markMandatoryField() : "";
				break;
			default:
				alert(checkType+": this is an undefined check type");
		}
	}

	// mark empty mandatory fields
	function markMandatoryField() {
		$targetTitle.addClass("missing");
		($targetField.length === 1) ? (function() {
			$targetField.addClass("missing");
			(validationOK === true) ? $focusField = $targetField : "";
		})() : (function() {
			$targetField.each(function() {
				(validationOK === true) ? $focusField = $targetField[0] : "";
				$(this).addClass("missing");
			});
		})();

		(validationOK === true) ? (function() {			
			validationOK = false;
			$focusField.focus();
		})() : "";
	}

	return {
		// check mandatory fields
		checkMandatoryFields: function() {
			var tagName = "";
			// remove .missing class			
			$("form.feedback label, form.feedback input, form.feedback textarea, form.feedback p").removeClass("missing");
			// get mandatory fields
			$(".mandatory").each(function(){
				tagName 		= $(this).get(0).tagName.toLowerCase(),
				classes 		= $(this).attr("class").split(" "),
				$targetTitle	= $(this);				
				switch (classes.length) {
					case 1:
						(tagName === "label") ? (function(){
							// form field to be checked
							$targetField = $("#" + $targetTitle.attr("for"));
							($targetField.val() === "") ? markMandatoryField() : "";
						})() : (function(){

						});
						break;
					default:
						$targetField = ($("[id='" + classes[1] + "']").length !== 0) ? $("[id='" + classes[1] + "']") : $("[name='" + classes[1] + "']");
						// check mandatory fields
						switch ($targetField.attr("type")) {
							case "text":
								checkSpecialInput(classes[1]);
								break;
							case "radio":
								($targetField.filter(":checked").length < 1) ? markMandatoryField(): "";
								break;
							case "checkbox":
								($targetField.filter(":checked").length < 1) ? markMandatoryField(): "";
								break;
						}
				}
			});

			// return validation status
			return validationOK;
		},
		
		// reset focus field and validation status
		unFocus: function() {
			$focusField = null;
			validationOK = true;
		}
	}
})();

// dom ready
$(function(){
	// check mandatory fields for customer feedback form
	$("form.feedback").submit(function(e){
		mandatoryChecker.unFocus();
		(mandatoryChecker.checkMandatoryFields() === false) ? e.preventDefault() : "";
	})

	//add class last to last list item
	$("li:last-child").addClass("last");

	// add class even to attachments list
	$(".attachments li:even").addClass("even");
	$(".attachments li:odd").addClass("odd");
		
	//submit content search en
	$("#col3-search.en").submit(function () {
		$("#content-query").val($("#search-altia").val() +' -AuthoringTemplate::"EN Default Sitearea Content"' +' -AuthoringTemplate::"EN Manual pick"');
	});

	//submit content search fi
	$("#col3-search-ac.fi").submit(function () {
		$("#content-query").val($("#search-altia").val() +' -AuthoringTemplate::"FI Default Sitearea Content"' +' -AuthoringTemplate::"FI Manual pick"');
	});

		
//Corporation

//Companies
	//show finland
	$("ul#countries li a").click(function (e) {
		$target = $(e.target);

		//remove selected classes
		$('ul#countries li').removeClass('selected');
		$('div#companies div').removeClass('selected');	

		//add selected classes to selected country
		$("li#" + $target.parent().attr("id")).addClass("selected");
		$("div" + $target.attr("href")).addClass("selected");
	});
	
	//reduce textsize
	$("ul#textsize a#smaller").click(function(){
		changeFontSize(-10);
	});
	
	//enlarge textsize
	$("ul#textsize a#bigger").click(function(){
		changeFontSize(10);
	});	

	// get font size from sessvars, else font size is set to default
	(sessvars.fontSize !== undefined) ? changeFontSize(0) : sessvars.fontSize = 100;
	
	// change body font size
	function changeFontSize(size) {
		// set maximum and minimum limits for font size
		sessvars.fontSize = ((sessvars.fontSize < 60 & size < 0) || (sessvars.fontSize > 150 & size > 0)) ? 
			// minimum or maximum reached
			(function() {
				// add disabled class if minimum or maximum reached
				(size < 0) ? $("a#smaller").addClass("disabled") : $("a#bigger").addClass("disabled");
				return sessvars.fontSize;
			})()
			// change session font size
			: (function() {
				// remove disabled class
				(size < 0) ? $("a#bigger").removeClass("disabled") : $("a#smaller").removeClass("disabled");				
				return sessvars.fontSize+size;
			})();
		// change html font size
		$("html").css("font-size", sessvars.fontSize+"%");
	}

});
	