var Affarsvarlden = function() {
	return {	
		init: function() {
			Talentum.twingly.init( { topListURL: "http://www.affarsvarlden.se", postLimit: 4, debug: false } );
			Talentum.mediaplayer.init();
			Talentum.tabbedBox.init();
			Talentum.carouselBox.init();
			Talentum.userSettings.init();
			Talentum.validateForms.init();
			Talentum.slideshow.init();
			Talentum.ajaxForms.init();
			Talentum.poll.init();
			Talentum.print.init();
			Talentum.zoom.init();
			Talentum.comment.init();
			Talentum.tooltip.init([
				{ element: ".media-teaser .media a", parent: "body", className: "media-tooltip" },
				{ element: "body.wordpress .facebook" },
				{ element: "body.wordpress .digg" },
				{ element: "body.wordpress .delicious" },
				{ element: "body.wordpress .print" },
				{ element: "body.wordpress .toggle-text-size" },
				{ element: ".facebook" },
				{ element: ".digg" },
				{ element: ".delicious" },
				{ element: ".twitter" },
				{ element: ".article .print" },
				{ element: ".article .toggle-text-size" },
				{ element: ".article .toggle-recommend" }
			]);
			Talentum.fontSize.init();
			Talentum.popup.init();
			Talentum.reportAbuse.init();
			Talentum.addAnchors.init([
				{ element: ".carousel-box-part", include: ["IMG"] },
				{ element: ".teaser", include: ["P", "IMG", ".media-image-cover"], exclude: [".teaser-group", ".poll"] },
				{ element: ".subteaser", include: ["P", "IMG"] },
				{ element: ".pullteaser", include: ["P", "IMG"] },
				{ element: ".small-teaser", include: ["P", "IMG", ".media-image-cover"] },
				{ element: ".opinion-teaser", include: ["IMG"] },
				{ element: ".magazine-archive LI", include: ["P", "IMG"] },
				{ element: ".magazine-teaser", include: ["P", "IMG"] },
				{ element: ".notice-teaser", include: ["IMG"] },
				{ element: ".media-teaser.tabbed-box", include: [".media-image-cover"] },
				{ element: ".stock-item", include: ["P"] },
				{ element: ".quiz-box", include: ["li p"] }
			]);
			Talentum.inlineFormLabels.init([
				{ element: ".newsletter-teaser" },
				{ element: "#top-teasers .form-box-login" }
			]);
			Talentum.toggle.init();
			Talentum.sectionFilter.init();
			Talentum.stickyAd.init({
				top: "header"
			});
			Talentum.media.init();
			Talentum.mediaImage.init();
 			Talentum.scrollingList.init([
				{ element: ".box-jobs ul" }
			]);
			Talentum.removeEmptyAdtechAds.init();
						
			Affarsvarlden.recommend.init();
			Affarsvarlden.search.init();
			Affarsvarlden.logIn.init();
			Talentum.quiz.init();
			Talentum.moreComments.init();
		}
	};
}();


Affarsvarlden.recommend = function() {
	var triggerClass = "toggle-recommend";
	var recommendId = "recommend";

	var DOMReady = function() {
		var recommend = $$(recommendId);
		if (recommend != null) {
			document.body.insertBefore(recommend, document.body.firstChild);
			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) {
					Affarsvarlden.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() {
				Affarsvarlden.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 = "";
				}});
			});
		}
	};
}();


Affarsvarlden.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
				});
			}
			Affarsvarlden.cover.resize();
			cover.setStyle("display", "block");
			$(window).addEvent("resize", Affarsvarlden.cover.resize);
		},
		hide: function() {
			$("html").setStyle("overflow", "auto");
			$$("page-cover").setStyle("display", "none");
			$(window).removeEvent("resize", Affarsvarlden.cover.resize);
		}
	};
}();


Affarsvarlden.search = function() {
	var formActive = false;
	var DOMReady = function() {
		var submit = $("#search-string");
		if (submit.length > 0) {
			var input = submit[0];
			input.value = input.title;
			Talentum.eventHandler.register("click", "#search-string", function() {
				if (!formActive) {
					var searchTypes = $(this.parentNode).next();
					searchTypes.setStyle(DOMEffects.getOpacityRule(0));
					searchTypes.setStyle("display", "block");
					searchTypes.fadeIn({ "duration": 100 });
					formActive = true;
				}
				if (Talentum.trim(this.value) == this.title) {
					this.value = "";
				}
				return false;
			});
			Talentum.eventHandler.register("click", "body", function(e) {
				if (formActive) {
					var field = $$("search-string");
					var insideForm = false;
					var target = e.eventTarget;
					while (target) {
						if (target == field.form) {
							insideForm = true;
							break;
						}
						target = target.parentNode;
					}
					if (!insideForm) {
						var searchTypes = $(field.parentNode).next();
						searchTypes.hide({"duration": 100});
						formActive = false;
						if (e.target != field) {
							if (Talentum.trim(field.value) == "") {
								field.value = field.title;
							}
						}
					}
				}
				return true;
			});
			$(input.form).addEvent("submit", function() {
				if (Talentum.trim(input.value) == input.title) {
					input.value = "";
				}
				return true;
			});
		}
	};
	return {
		init: function() {
			Talentum.addOnDOMReady(DOMReady);
		}
	};
}();


Affarsvarlden.logIn = function() {
	return {
		init: function() {
			Talentum.eventHandler.register("click", "#top-teasers .login A.action", function() {
				var self = $(this);
				if (self.hasClass("action-login")) {
					self.removeClass("action-login");
					self.addClass("action-cancel");
					self.previousHTML = self.innerHTML;
					self.innerHTML = "<span>Avbryt</span>";
					self.blur();
					var parent = $(self.parentNode);
					var next = $(parent.next());
					next.addClass("display-block");
					next.removeClass("display-none");
					next.fadeIn({ "duration": 200 });
					$(parent.parentNode).next().setStyle("display", "none");
				} else if (self.hasClass("action-cancel")) {
					self.addClass("action-login");
					self.removeClass("action-cancel");
					self.innerHTML = self.previousHTML;
					self.previousHTML = null;
					var parent = $(self.parentNode);
					self.blur();
					var parent = $(self.parentNode);
					var next = $(parent.next());
					next.removeClass("display-block");
					next.addClass("display-none");
					next = $(parent.parentNode).next();
					next.setStyle(DOMEffects.getOpacityRule(0));
					next.setStyle("display", "block");
					next.fadeIn({ "duration": 200 });
				}
			});
		}
	};
}();


Affarsvarlden.init();
