var viBilagare = {
	init: function() {
		this.tabs.init();
		this.focus.init();
		this.editUser.init();
		this.catchFormSubmit.init();
		this.validateForm.init();
		this.removeFromDOM.init();
	},
	tabs: {
		init: function() {
			var tabbed = $(".tabbed").each(
				function() {
					var tabs = $($(this).elmsByClass("tabs")[0]).elmsByTag("a");
					if(tabs !== null) {
						for (var i = 0; i < tabs.length; i++) {
							var tabContent = viBilagare.getAnchoredElement(tabs[i]);
							if(i === 0) {
								$(tabs[0].parentNode).addClass("current");
								tabContent.style.display = "block";
							} else {
								tabContent.style.display = "none";
							}
							$(tabs[i]).addEvent("click",
								function(e) {
									DOMAssistant.preventDefault(e);
									var anchor = e.eventTarget;
									while (anchor.tagName != "A") {
										anchor = anchor.parentNode;
									}
									var parent = $(anchor.parentNode);
									if(!parent.hasClass("current")) {
										var active = $(parent.parentNode).elmsByClass("current")[0];
										if(active !== null) {
											active.removeClass("current");
											viBilagare.getAnchoredElement($(active).elmsByTag("a")[0]).style.display = "none";
										}
										parent.addClass("current");
										viBilagare.getAnchoredElement(anchor).style.display = "block";
									}
								}
							);
						}
					}
				}
			);
		}
	},
	focus: {
		init: function() {
			var focus = $(".focus");
			if (focus.length > 0) {
				viBilagare.scrollTo(focus[0]);
			}
		}
	},
	getAnchoredElement: function(anchor) {
		return $$(anchor.href.replace(/.*\#(.*)/, "$1"));
	},
	getClassNameValue: function(el, prefix) {
		var ret = new RegExp(".*" + prefix + "-(.*?)(?:\\s|$).*").exec(el.className);
		if (ret) {
			return ret[1];
		}
		return null;
	},
	getPosition: function(el) {
        var pos = {x: 0, y: 0};
        while (el.offsetParent) {
            pos.x += el.offsetLeft;
            pos.y += el.offsetTop;
            el = el.offsetParent;
        }
        return pos;
    },
	scrollTo: function(el) {
		var position = viBilagare.getPosition(el);
		window.scrollTo(position.x, Math.max(position.y-20, 0));
	},
	trim: function(str) {
		return str.replace(/^\s+|\s+$/g, "");
	},
	numericStrip: function(str) {
		return str.replace(/ |-|\/|\.|\+/gi, "");
	},
	editUser: {
		init: function() {
			var anchors = $(".editProfileToggle");
			if(anchors) {
				for(var i = 0; i < anchors.length; i++) {
					$(anchors[i]).addEvent("click", function(e) {
						DOMAssistant.preventDefault(e);
						var view = $("#userformView")[0];
						var edit = $("#userformEdit")[0];
						if(view.style.display === "none") {
							view.style.display = "block";
							edit.style.display = "none";
						}
						else {
							view.style.display = "none";
							edit.style.display = "block";
						}	
					});
				}
			}			
		}
	},
	catchFormSubmit: {
		init: function() {
			$("input").addEvent("keydown", function(e) {
				var key = e.which || event.keyCode;
				if(key == 13) {
					var submitButtonId = viBilagare.getClassNameValue(this, "dosubmit");
					if(submitButtonId != null) {
						$$(submitButtonId).click();
					}
					return false;
				}
			});
		}
	},
	validateForm: {
		init: function() {
			$(".dovalidate").addEvent("click", function() {
				if(!this.isValid) {
					var formContainer = $$(viBilagare.getClassNameValue(this, "dovalidate"));
					viBilagare.form.validate(formContainer, this);
					return false;
				}
			});
		}
	},
	removeFromDOM: {
		init: function() {
			$(".close").addEvent("click", function(e) {
				DOMAssistant.preventDefault(e);
				var itemsToRemove = $("." + viBilagare.getClassNameValue(this, "close"));
				itemsToRemove.each(function() {
					$(this).remove();
				});
				return false;
			});
		}
	}
};


/**
 * Form wrapper
 * @param {Object} form
 */
viBilagare.form = function() {
	var validateField = function(elm, form) {
		elm = $(elm);
		if (elm.hasClass("required") && (viBilagare.trim(elm.value) == "")) {
			form.missing.push(elm);
			form.hasErrors = true;
		} else if (elm.hasClass("accept-conditions") && !elm.checked) {
			form.unaccepted.push(elm);
			form.hasErrors = true;
		} else if (elm.hasClass("e-mail") && viBilagare.trim(elm.value) != "") {
			if (elm.value.search(/(\w|\.|\-)+\@(\w|\.|\-)+\.[a-z]{2,6}$/)) {
				form.erronous.push(elm);
				form.hasErrors = true;
			}
		} else if(elm.hasClass("numeric") && (/\D/).test(viBilagare.numericStrip(elm.value))) {
			form.erronous.push(elm);
			form.hasErrors = true;
		} else {
			elm.removeClass("error");
		}
	};
	var alertUser = function(form) {
		if (form.elmsByClass("alert-box")[0]) {
			form.alertBox = form.elmsByClass("alert-box")[0];
		} else {
			form.alertBox = $(form).create("div", { className: "alert-box" }, false);
		}
		
		var content = "<span class=\"alert-box-heading\">Vi kunde tyvärr inte skicka in formuläret</span><ul>";
		
		for (var i = 0, l = form.erronous.length; i<l; i++) {
			$(form.erronous[i]).addClass("error");
			content += "<li>Kontrollera att " + form.erronous[i].title + " är korrekt" + "</li>";
		}
	
		for (var i = 0, l = form.missing.length; i<l; i++) {
			$(form.missing[i]).addClass("error");
			content += "<li>Du verkar ha glömt " + form.missing[i].title + "</li>";
		}
	
		for (var i = 0, l = form.unaccepted.length; i<l; i++) {
			content += "<li>Du måste godkänna " + form.unaccepted[i].title + "</li>";
		}
		
		content += "</ul>";

		form.alertBox.innerHTML = content;
		form.insertBefore(form.alertBox, form.firstChild);
		viBilagare.scrollTo(form);
	}
	return {
		validate: function(elm, button) {
			var form = $(elm);
			form.erronous = new Array();
			form.missing = new Array();
			form.unaccepted = new Array();
			form.hasErrors = false;
			
			form.elmsByTag("input").each(function() {
				validateField(this, form);
			});
			
			if(form.hasErrors) {
				alertUser(form);
			} else {
				button.isValid = true;
				button.click();
			}
		}
	}
}();




/* zinoEdit function */
function execArgument(arg, sysID){
	if (sysID > 0)
	{ 
		switch ( arg ) {
			case "text": window['zinoWin'] = open("zino/default.aspx?pageID=11&articleID="+sysID  , "zinoWin", "width=1014,height=708,left=0,top=0,status=0,resizeable=0,scrollbars=no"); break;
			case "area": window['zinoWin'] = open("zino/default.aspx?pageID=34&areaID="+sysID  , "zinoWin", "width=1014,height=708,left=0,top=0,status=0,resizeable=0,scrollbars=no"); break;
			case "banner": window['zinoWin'] = open("zino/default.aspx?pageID=72&bannerID="+sysID  , "zinoWin", "width=1014,height=708,left=0,top=0,status=0,resizeable=0,scrollbars=no"); break;
			case "scorecard": window['zinoWin'] = open("zino/default.aspx?pageID=144&modellID="+sysID , "zinoWin", "width=1014,height=708,left=0,top=0,status=0,resizeable=0,scrollbars=no"); break;
		}
		if (window['zinoWin']){
			window['zinoWin'].focus();
		}
	}
}
DOMAssistant.DOMReady(function() { viBilagare.init.call(viBilagare) });