var ContactForm = {
	locale: "fi_FI",
	email: "",
	destination: "",
	referrer: "",
	
	overlay: {
		active: true,
		maxOpacity: .7
	},

	iframe: {
		urlPattern: "/stc/html/yhteydenotto.jsp?email=%%EMAIL%%&destination=%%DESTINATION%%&referrer=%%REFERRER%%",
		size: {
			width: 370,
			height: 290
		},
		position: {
			type: "relative",
			left: -300,
			top: -120
		}
	},
	
	// Display form
	open: function(clickSrc){
		// Create URL using pattern
		var iframeUrl = ContactForm.iframe.urlPattern.replace(/%%LOCALE%%/g, ContactForm.locale).replace(/%%EMAIL%%/g, escape(ContactForm.email)).replace(/%%DESTINATION%%/g, ContactForm.destination).replace(/%%REFERRER%%/g, escape(ContactForm.referrer));
		
		// Create overlay
		if(ContactForm.overlay.active){
			$("body").eq(0).append("<div id=\"contactFormOverlay\" class=\"genericOverlay\"></div>");
			
			// Attach click handler
			$("#contactFormOverlay").click(function(event){
				ContactForm.close();
			});
			
			// Fade to view
			$("#contactFormOverlay").css("opacity", "0");
			$("#contactFormOverlay").css("display", "block");
			$("#contactFormOverlay").fadeTo("slow", ContactForm.overlay.maxOpacity);
		}
		
		// Create iframe
		$("body").eq(0).append("<iframe id=\"contactFormIframe\" src=\"" + iframeUrl + "\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\"></iframe>");
		$("#contactFormIframe").css("width", ContactForm.iframe.size.width + "px");
		$("#contactFormIframe").css("height", ContactForm.iframe.size.height + "px");
		
		var iframePos = {left: ContactForm.iframe.position.left, top: ContactForm.iframe.position.top};
		
		// Position iframe
		if(ContactForm.iframe.position.type == "relative"){
			var srcPos = $(clickSrc).offset();
			iframePos = {
				left: srcPos.left + ContactForm.iframe.position.left,
				top: srcPos.top + ContactForm.iframe.position.top
			};
		}
		
		$("#contactFormIframe").css({left: iframePos.left + "px", top: iframePos.top + "px"});
		
		// Stop click event propagation
		$("#contactFormIframe").click(function(event){
			event.stopPropagation();
		});
		
		// Attach scroll and resize event handlers
		ContactForm.adjustPositionAndSize($("#contactFormOverlay"));
		$(window).resize(function(){
			ContactForm.adjustPositionAndSize($("#contactFormOverlay"));
		});
		
		$(window).scroll(function(){
			ContactForm.adjustPositionAndSize($("#contactFormOverlay"));
		});
	},
	
	
	getPropertiesFromDOM: function(iid){
		ContactForm.email = $("#cInfoWrapper_" + iid + " .email a").html();
		
	},
	
	// Function to handle window scroll and resize events
	adjustPositionAndSize: function(overlay){
		var pageSelector = document;
		$(overlay).width($(pageSelector).width());
		$(overlay).height($(pageSelector).height());
		$(overlay).css("top", "0");
		$(overlay).css("left", "0");
	},
	
	// Close and remove
	close: function(){
		$("#contactFormIframe").remove();
		$(".genericOverlay").fadeOut(function(){
			$(".genericOverlay").remove();
		});
	}
}



var ContactHandler = {
	branches: null,
	
	// Simple cookie datastore
	datastore: {
		cookiePrefix: "mvcontacts-",
		cookieDefaultLifetime: (1*24*60*60*1000),
		
		write: function(name,value,lifetime){
			if(!lifetime || typeof(lifetime) == 'undefined')
				lifetime = ContactHandler.datastore.cookieDefaultLifetime;

			var date = new Date();
			date.setTime(date.getTime()+(lifetime*60*60*1000));
			var expires = "; expires="+date.toGMTString();
			
			document.cookie = ContactHandler.datastore.cookiePrefix + name + "=" + value + expires + "; path=/";
		},
		
		read: function(name){
			var nameEQ = ContactHandler.datastore.cookiePrefix + name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		},
		
		erase: function(name){
			ContactHandler.datastore.write(name, "", -1);
		}
	},
	
	addBranch: function(branchId, branchName){
		if(ContactHandler.branches == null)
			ContactHandler.branches = new Array();
		ContactHandler.branches.push({id: branchId, name: branchName});
	},
	
	switchBranch: function(idx){
		if(idx >= 0 && idx < ContactHandler.branches.length){
			ContactHandler.datastore.write("branch", ContactHandler.branches[idx].id);
			$("#cInfoWrapper_" + ContactHandler.branches[idx].id).siblings(".contactInfo").hide();
			$("#cInfoWrapper_" + ContactHandler.branches[idx].id).show();
			
			ContactForm.getPropertiesFromDOM(ContactHandler.branches[idx].id);
		}
	},
	
	buildSelect: function(){
		for(var i in ContactHandler.branches)
			$("#branchList").append("<option value=\"" + ContactHandler.branches[i].id + "\">" + ContactHandler.branches[i].name + "</option>");
	},
	
	init: function(){
		ContactHandler.buildSelect();

		if(window.location.href.indexOf("clearCookie") > -1)
			ContactHandler.datastore.erase("branch");
	
		var dsValue = ContactHandler.datastore.read("branch");
		var selectedItem = $("#branchList option:first");
		
		if(dsValue != null){
			selectedItem = $("#branchList option[value='" + dsValue + "']");
			$(selectedItem).siblings().removeAttr("selected");
			$(selectedItem).attr("selected", "selected");
		}
		
		if($(selectedItem).attr("value") != "")
			ContactHandler.switchBranch(document.getElementById("branchList").selectedIndex - 1);
	}
}
