/**
 * Annons
 */

var Annons = function() {
	return {	
		init: function() {
			Talentum.tabbedBox.init();
			Talentum.slideshow.init();
			Talentum.print.init();
			Talentum.mediaplayer.init();
			Annons.recommend.init();
		}
	};
}();

Annons.recommend = function() {
	var triggerClass = "toggle-recommend";
	var recommendId = "recommend";

	var DOMReady = function() {
		var recommend = $$(recommendId);
		if (recommend != null) {
			document.body.appendChild(recommend);
			recommend.setStyle({
				position: "absolute",
				display: "none",
				"z-index": 10000
			});
			var form = $(recommend.cssSelect("form")[0]);
			var fieldset = recommend.cssSelect("fieldset");
			$$("recommend-from").value = Talentum.userSettings.getPreference("name");
			fieldset.create("a", {href: "", className: "close"}, true, "Avbryt");
			form = new Talentum.AJAXForm(form);
			form.setBeforeSubmissionHandler(function() {
				if (!Talentum.form.validate.call(form)) {
					return false;
				} else {
					this.cssSelect(".alert-box").remove();
				}
				Talentum.userSettings.setPreference("name", $$("recommend-from").value);
			});
			
			form.setResponseHandler(function(data) {
				if (data && data.length > 0) {
					var notice = form.create("span", {className: "notice"}, true);
					notice.setStyle("display", "none");
					fieldset.setStyle("display", "none");
					notice.setStyle(DOMEffects.getOpacityRule(0));
					notice.setStyle("display", "block");
					data = unescape(data).replace("toggle-recommend", "close");
					notice.innerHTML = data;
					notice.fadeIn();
				}
			});
		}
	};

	return {
		init: function() {
			Talentum.addOnDOMReady(DOMReady);

			Talentum.eventHandler.register("click", "." + triggerClass, function() {
				var recommend = $$("recommend");
				if (recommend) {
					Annons.cover.show();
					recommend.setStyle(DOMEffects.getOpacityRule(0));
					recommend.setStyle("display", "block");
					var width = Talentum.getActualWidth(recommend);
					var height = Talentum.getActualHeight(recommend);
					var pageWidth = Math.min(Talentum.getActualWidth($$("page"), window.innerWidth ? window.innerWidth : document.documentElement.clientWidth));
					var pageHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
					var pageTop = window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop;
					recommend.setStyle({
						left: (pageWidth / 2 - width / 2) + "px",
						top: (pageTop + pageHeight / (1 + Math.sqrt(5) / 2)) - height + "px"
					});
					recommend.fadeIn({duration: 250, callback: function() {
						$$("recommend-to").focus();
					}});
				}
			});
			
			Talentum.eventHandler.register("click", "#" + recommendId + " .close", function() {
				Annons.cover.hide();
				$$(recommendId).hide({duration: 250, callback: function() {
					this.cssSelect("fieldset").setStyle("display", "block");
					this.cssSelect(".alert-box, .notice").remove();
					this.cssSelect(".has-error").removeClass("has-error");
					$$("recommend-to").value = "";
				}});
			});
		}
	};
}();


Annons.cover = function() {
	return {
		resize: function() {
			$$("page-cover").setStyle({
				width: Math.max(Talentum.getActualWidth($$("page")), window.innerWidth ? window.innerWidth : document.documentElement.clientWidth) + "px",
				height: Math.max(Talentum.getActualHeight(document.body), window.innerHeight ? window.innerHeight : document.documentElement.clientHeight) + "px"
			});
		},
		show: function() {
			var cover = $$("page-cover");
			 $("html").setStyle("overflow", "hidden");
			if (!cover) {
				cover = $(document.body).create("div", {id: "page-cover"}, true);
				cover.setStyle({
					position: "absolute",
					left: "0",
					top: "0",
					"z-index": 9999
				});
			}
			Annons.cover.resize();
			cover.setStyle("display", "block");
			$(window).addEvent("resize", Annons.cover.resize);
		},
		hide: function() {
			$("html").setStyle("overflow", "auto");
			$$("page-cover").setStyle("display", "none");
			$(window).removeEvent("resize", Annons.cover.resize);
		}
	};
}();

Annons.init();