if (typeof SvD == 'undefined') {
	throw('SvD.article.js kräver SvD.js');
}

if (typeof jQuery != 'undefined') {

	/*** Artikelspecifika funktioner ***/
	SvD.article = function ($) {

		return  {

			init : function () {
				this.toolbar();
				this.checkForPreferedTextSize();
				this.userReview();
				this.toggleLinkBlock();
				this.articleParts();
				this.webTvNav();
			},

			toolbar : function () {
				var container = $("#articlecontent");
				if (container.length === 0) { return; }
				var toolbars = container.find(".toolbar");
				if (toolbars.length === 0) { return; }
				var toolbarBottom = toolbars.filter(".articlebottom");
				this.offset = toolbarBottom.offset().top;
				var links = toolbars.find("a");
				var printButton = $("#articlepartnavigation").find(".print a");
				var factColumnSb = container.find(".factcolumn .sb");

				links.filter(".print").add(printButton).click(function() {
					window.print();

					/* Print logging */
					if (typeof s_gi == "function") {
						var s = s_gi('svdsvdseprod,svdglobal');
						s.linkTrackVars='eVar16,events';
						s.linkTrackEvents='event11';
						s.events='event11';
						s.tl(this,'c','Print');
					}
					return false;
				});

				links.filter("[class^=textsize]").click(function() {
					var classname = $(this).attr("class");
					classname = classname.substr(9,classname.length);
					$(this).parent().children("a").removeClass("selected");
					$(this).addClass("selected");
					SvD.article.setTextSize(classname);
					$.cookie('SvD_textsize', classname, {path: '/'});
					return false;
				});

				links.filter(".skip").click(function() {
					SvD.utils.smoothScroll($("div.articlebody"), 50, 500);
					return false;
				});

				links.filter(".email, .reporterror, .sb").add(factColumnSb).click(function() {
					if (!SvD.enableLayering || !SvD.enableAjax) { return; }
					SvD.article.loadToolbarForm($(this));
					return false;
				});
			},

			loadToolbarForm : function (a) {
				var path = a.attr("href");
				path = path.split("#")[0] + "&service=ajax";
				var className = a.attr("class");
				this.objStr = "div.toolbarform." + className;
				this.objClassName = className;

				var obj = $(this.objStr);
				var done = obj.find("div.done");

				if ((obj.length === 0) || (done.length > 0)) {
					$("div.toolbarformcontainer").html('<p class="loading">Laddar...</p>').load(path, function() {
						SvD.article.positionToolbarForm();
						SvD.article.validateToolbarForm();
					});
				} else {
					$("div.toolbarform").show();
				}
				return false;
			},

			positionToolbarForm : function () {
				var obj = $(this.objStr);
				offset = SvD.article.offset;
				offset -= (obj.height() +10);
				obj.css({ position: "absolute", top: offset, left: '70px' });
				SvD.utils.smoothScroll(obj, 30, 300);

				$("div.toolbarformcontainer a.closelink").click(function() {
					obj.hide();
					return false;
				});
			},

			validateToolbarForm : function () {
				var rules = [];
				var messages = [];

				var obj = $(this.objStr);
				var form = obj.find("form");
				var className = this.objClassName;

				if (form.length === 0) { return; }

				rules.email = {
					receivername: "required",
					receiveremail: {
						required: true,
						email: true
					},
					sendername: "required",
					senderemail: {
						required: true,
						email: true
					}
				};
				messages.email = {
					receivername: "Fyll i mottagarens namn",
					receiveremail: "Fyll i en giltig e-postadress",
					sendername: "Fyll i ditt namn",
					senderemail: "Fyll i en giltig e-postadress"
				};
				rules.reporterror = {
					sendername: "required",
					senderemail: {
						required: true,
						email: true
					}
				};
				messages.reporterror = {
					sendername: "Fyll i ditt namn",
					senderemail: "Fyll i en giltig e-postadress"
				};

				$(form).validate({
					rules: rules[className],
					messages: messages[className],

					submitHandler: function(form) {
						var debug = false;
						var options = {
							type: 'POST',
							target: $("div.toolbarformcontainer"),
							beforeSubmit: function(formData) {
								formData.push({name: 'service', value: 'ajax'});
								$(form).find("button, input, textarea").attr("disabled", "disabled");
								$(form).find("p.closebutton").after('<p class="loading">Skickar...</p>');
							},
		   					success: function() {
			   					SvD.article.positionToolbarForm();
							},
							error: function() {
								if (debug) {
									if (window.console && window.console.error) {
										console.error(arguments);
									}
								} else {
									alert("Ett fel har uppstått. Vänligen ladda om sidan och prova igen");
								}
							}
						};
						$(form).ajaxSubmit(options);
						return false;
					}
				});
			},

			checkForPreferedTextSize : function () {
				var classname = $.cookie('SvD_textsize');
				if (classname !== null) {
					this.setTextSize(classname);
					$("#articlecontent").find(".toolbar").find("a[class^=textsize]").removeClass("selected").filter("[class$=" + classname  + "]").addClass("selected");
				}
			},

			setTextSize : function (classname) {
				$("div.articlebody").removeClass().addClass("articlebody " + classname);
			},

			userReview : function () {
				var container = $("div.review .usergrade");
				if (container.length) {
					var className;
					if ($.browser.msie && $.browser.version == 6) {
						container.find("button").hover(
					      function () {
					      	className = "hover " + $(this).attr("class") + "hover";
					        $(this).addClass(className);
					      },
					      function () {
					        $(this).removeClass(className);
					      }
					    );
					}
				}
			},

			webTvNav : function () {
				if (!SvD.enableAjax) { return; }
				var container = $("#morewebtvcontainer");
				var nav = container.find("ul");
				var clips = container.find("div.clips");
				if ((nav.length > 0) && (clips.length > 0)) {
					nav.find("a").live("click", function(){
						var className = "active";
						if ($(this).parents(".tabs").length > 0) {
							if ($(this).parent().hasClass(className)) { return false; }
							nav.find("li").removeClass(className);
							$(this).parents("li").addClass(className);
						} else {
							if (! $(this).parent().hasClass(className)) { return false; }
						}
						var url = $(this).attr("href");
						url = url.split("#")[0] + "&service=ajax&component=moreWebTv";
						clips.html('<p class="loading">Laddar...</p>').load(url);
						return false;
					});
				}
			},

			toggleLinkBlock : function () {
				var container = $(".factcolumn .linkbox");
				var links = container.find(".js-hidden");
				if (links.length === 0) { return; }
				var parent = links.parents("ul");
				var showVal = "Visa fler";
				var hideVal = "Dölj";
				parent.append($("<li><span class=\"toggle linktext\">" + showVal + "</span></li>"));
				parent.find(".toggle").addClass("expand").click(function() {
					$(this).toggleClass("expand").toggleClass("hide");
					$(this).text(($(this).text() == showVal) ? hideVal : showVal);
					links.toggleClass("js-hidden");
					return false;
				});
			},

			articleParts : function () {
				var navLinks = $("#articlepartnavigation").find("a");
				var links = $("#articlecontent").find(".articlepart .nav a");
				if (links.length === 0) { return; }
				links.add(navLinks).click(function() {
					if ($(this).hasClass("print")) { return; }
					var anchor = $(this).attr("href");
					SvD.utils.smoothScroll($(anchor), 30, 300);
					return false;
				});
			}
		};
	}(jQuery);
}

if (typeof jQuery != 'undefined') {
	jQuery(document).ready(function() {
		SvD.article.init();
	});
}