var showingmsg = false;
function gMessage(type, headline, textmessage, postback) {
	if(showingmsg && !type=='error') { return; }
	showingmsg = true;
	var OpacityWait = 300,
		popupWait = 2000,
		largePopup = false,
		mainprops = window.getCoordinates(),
		PopupBox = new Element("div",{
			"styles":{
				"opacity": 0
			},
			"id":"popup",
			"class": type
		}).inject($(document.body)),
		leftPosition = parseInt(mainprops.width / 2 - PopupBox.getSize().x.toInt() / 2),
		FadeInPopup = new Fx.Tween(PopupBox, {duration: OpacityWait}),
		FadeOutPopup = new Fx.Tween(PopupBox, {duration: OpacityWait, onComplete: function() {
			showingmsg = false;
			PopupBox.dispose();
		}});
	
	switch(type) {
		case "infostop":
		case "info":
		case "error":
		case "stop":
			if (headline)
				var oHeader = new Element("h1", {
					"html": headline
				}).inject(PopupBox);
			if (textmessage)
				var oParagraph = new Element("p", {
					"html": textmessage
				}).inject(PopupBox);
			if (type != "stop" && type != "infostop")
				(function(){FadeOutPopup.start("opacity", 0);}).delay(popupWait);
			else
				var oClose = new Element("a", {
						"text": "X",
						"class": "close"
					}).inject(PopupBox, "top");
		break;
		case "confirm":
			if (headline)
				var oHeader = new Element("h1", {
					"html": headline
				}).inject(PopupBox);
			if (textmessage)
				var oParagraph = new Element("p", {
					"html": textmessage
				}).inject(PopupBox);
			var oForm = new Element("form", {
					"action": "",
					"id": "confirmForm"
				}).inject(PopupBox),
				oFieldset = new Element("fieldset").inject(oForm),
				oLegend = new Element("legend", {"html": "Bekr&auml;fta ditt val"}).inject(oFieldset),
				oInputYes = new Element("input", {
					"value": "Ok",
					"type": "button",
					"class": "button",
					"id": "confirmYes"
				}).inject(oFieldset),
				oInputNo = new Element("input", {
					"value": "Avbryt",
					"type": "button",
					"class": "button",
					"id": "confirmNo"
				}).inject(oFieldset);
				
			oInputYes.addEvent("click", function() {
				FadeOutPopup.start("opacity", 0);
				if (postback){
					postback();
				}
				
			});
			oInputNo.addEvent("click", function() {
				FadeOutPopup.start("opacity", 0);
			});
		break;
		case "register":
			largePopup = true;
			var oClose = new Element("a", {
					"text": "X",
					"class": "close"
				}).inject(PopupBox),
				oHeader = new Element("h1", {
					"html": "Logga in"
				}).inject(PopupBox);
			if (textmessage)
				var oParagraph = new Element("p", {
					"html": textmessage
				}).inject(PopupBox);
			var oForm = new Element("form", {
					"action": "",
					"id": "loginForm"
				}).inject(PopupBox),
				oFieldset = new Element("fieldset", {
					"class": type
				}).inject(oForm),
				oLegend = new Element("legend", {
					"html": "Logga in med dina uppgifter"
				}).inject(oFieldset);
			
			createNewInputRow(oFieldset, "", "Anv&auml;ndarnamn:", "loginusername");
			createNewInputRow(oFieldset, "password", "L&ouml;senord:", "loginpassword");
			var oInputLogin = new Element("input", {
					"value": "Logga in",
					"type": "button",
					"class": type + " button",
					"events": {
						"click": function() {
							new Request({
								"url": baseurl+"medlem/login",
								onSuccess: function(req) {
									var s = JSON.decode(req);	
									if (s.sc === 1)
										window.location.reload();
									else {
										FadeOutPopup.start("opacity", 0);
										gMessage("error", "Kunde inte logga in!", "Du kan ha angivit ett felaktigt anv&auml;ndarnamn eller l&ouml;senord!");
									}
								},
								"data": "username=" + encodeURIComponent($("poploginusername").value) + "&passwd=" + encodeURIComponent($("poploginpassword").value) + "&remembercheck=0"
							}).send();
						}
					},
					"id": "popLoginButton"
				}).inject(oFieldset);
				
			var oCreateHeading = new Element("h1", {
					"class": "create",
					"html": "Skapa konto!"
				}).inject(oFieldset, "after"),
				oCreateParagraph = new Element("p", {
					"html": "Skapa ett konto direkt. Fyll i f&auml;lten nedan och utnytja Kapitel1 till max<br/>- du kan komplettera med fler uppgifter senare."
				}).inject(oCreateHeading, "after"),
				oCreateForm = new Element("form", {
					"action": "",
					"events": {
						"submit": function(e) {
							e.preventDefault();
							this.set("send", {
								"url": baseurl + "medlem/valregister",
								"method": "post", 
								"onSuccess": function(req) {
									var r = JSON.decode(req);
									if (!r.email.status)
										gMessage("error", r.email.msg);
									else if (!r.username.status)
										gMessage("error", r.username.msg);
									else if (!r.password.status)
										gMessage("error", r.password.msg);
									else if (r.success)
										window.location = baseurl + "medlem/wait";
								}
							}).send();
						}
					},
					"id": "createForm"
				}).inject(PopupBox),
				oCreateFieldset = new Element("fieldset", {
					"class": type
				}).inject(oCreateForm);
			createNewInputRow(oCreateFieldset, "", "E-postadress:", "createemailadress", "email");
			createNewInputRow(oCreateFieldset, "", "Anv&auml;ndarnamn:", "createusername", "username");
			createNewInputRow(oCreateFieldset, "password", "L&ouml;senord:", "createpassword", "password");
			var oCreateSubmit = new Element("input", {
					"value": "Skapa konto",
					"type": "submit",
					"class": type + " button",
					"id": "popCreateButton"
				}).inject(oCreateFieldset),
				oAcceptance = new Element("input", {
					"value": "accept",
					"name": "acceptance",
					"type": "hidden"
				}).inject(oCreateFieldset),
				oToken = new Element("input", {
					"value": "1",
					"name": xpfn,
					"type": "hidden"
				}).inject(oCreateFieldset);
		break;
		case "forgotpassword":
			var oClose = new Element("a", {
					"text": "X",
					"class": "close"
				}).inject(PopupBox);
			if (headline)
				oHeader = new Element("h1", {
					"html": headline
				}).inject(PopupBox);
			if (textmessage)
				var oParagraph = new Element("p", {
					"html": textmessage
				}).inject(PopupBox);
			var oForm = new Element("form", {
					"action": "",
					"id": "forgotForm"
				}).inject(PopupBox),
				oFieldset = new Element("fieldset", {
					"class": type
				}).inject(oForm),
				oLegend = new Element("legend", {
					"html": "Fyll i uppgifterna f&ouml;r att &aring;terskapa l&ouml;senord"
				}).inject(oFieldset);
			createNewInputRow(oFieldset, "", "Anv&auml;ndarnamn:", "forgotusername");
			createNewInputRow(oFieldset, "", "E-postadress:", "email");
			var oInputLogin = new Element("input", {
					"value": "Skicka",
					"type": "button",
					"class": type + " button",
					"events": {
						"click": function() {
							new Request({
								"url": baseurl+"medlem/forgotpassword",
								onSuccess: function(req) {
									var s = JSON.decode(req);
									if (s.sc === 1){
										FadeOutPopup.start("opacity", 0);
										gMessage("info", "Nytt l&ouml;senord har skickats!", "Ett nytt l&ouml;senord har skickats till din epostadress.");
									}
									else {
										FadeOutPopup.start("opacity", 0);
										gMessage("error", "Hittade inte anv&auml;ndare!", "Du kan ha angivit ett felaktigt anv&auml;ndarnamn eller e-postadress!");
									}
								},
								"data": "username=" + encodeURIComponent($("popforgotusername").value) + "&email=" + encodeURIComponent($("popemail").value)
							}).send();
						}
					},
					"id": "popForgotButton"
				}).inject(oFieldset);
		break;
		case "tellafriend":
			largePopup = true;
			var oClose = new Element("a", {
					"text": "X",
					"class": "close"
				}).inject(PopupBox);
			if (headline)
				oHeader = new Element("h1", {
					"html": headline
				}).inject(PopupBox);
			if (textmessage)
				var oParagraph = new Element("p", {
					"html": textmessage
				}).inject(PopupBox);
			var oForm = new Element("form", {
					"action": "",
					"id": "tellafriendForm"
				}).inject(PopupBox),
				oFieldset = new Element("fieldset", {
					"class": type
				}).inject(oForm),
				oLegend = new Element("legend", {
					"html": "Fyll i uppgifterna f&ouml;r att skicka ett tips till din v&auml;n"
				}).inject(oFieldset);
			if(bmList == null) createNewInputRow(oFieldset, "", "Ditt namn:", "realname");
			createNewInputRow(oFieldset, "", "Din v&auml;ns e-post:", "friendemail");
			var oDiv = new Element("div", {}).inject(oFieldset),
				oLabel = new Element("label", {
					"for": "popmessagefield",
					"html": "Kommentar:"
				}).inject(oDiv),
				oTextarea = new Element("textarea", {
					"cols": 30,
					"rows": 10,
					"id": "popmessagefield"
				}).inject(oDiv),
				oSubmit = new Element("input", {
					"value": "Tipsa",
					"type": "button",
					"class": type + " button",
					"events": {
						"click": function() {
							new Request({
								"url": baseurl+"medlem/tellafriend",
								onSuccess: function(req) {
									var s = JSON.decode(req);
									if (s.sc === 1){
										FadeOutPopup.start("opacity", 0);
										gMessage("info", "Tipset är skickat!");
									}
									else {
										FadeOutPopup.start("opacity", 0);
										gMessage("error", "Det gick inte att skicka tipset", "Var v&auml;nlig f&ouml;rs&ouml;k senare!");
									}
								},
								"data": "mail=" + encodeURIComponent($("popfriendemail").value) + "&popmessagefield=" + encodeURIComponent($("popmessagefield").value) + "&bid=" + bookid + (bmList == null ? "&realname=" + $("poprealname").value : "")
							}).send();
						}
					},
					"id": "popForgotButton"
				}).inject(oFieldset);
		break;
	}
	
	if (oClose != null)
		oClose.addEvent("click", function() {
			FadeOutPopup.start("opacity", 0).complete(function(){showingmsg = false; });
		});
	
	var offsetHeight = (largePopup)?10:150;
	PopupBox.setStyle("top", window.getScroll().y + offsetHeight);
	PopupBox.setStyle("left", leftPosition);
	FadeInPopup.start("opacity", 1);
}

function createNewInputRow(parent, type, text, id, name) {
	var sType = (type)?type:"text",
		oInputRow = new Element("div").inject(parent),
		oLabel = new Element("label", {
			"for": "pop" + id,
			"html": text
		}).inject(oInputRow),
		oInput  = new Element("input", {
			"id": "pop" + id,
			"name": (name)?name:id,
			"type": sType
		}).inject(oInputRow);
}

function moveChapterFormatTools() {
	var formatTools = $("formatchapter");
	
	if (formatTools == null || !Browser.Engine.trident4)
		return;
	
	formatTools.setStyle("display", "block");
	
	var windowScroll = window.getScroll().y,
		windowSize = window.getSize(),
		formatToolsHeight = formatTools.getSize().y,
		formatToolsTop = windowSize.y + windowScroll - formatToolsHeight;

	formatTools.setStyle("top", formatToolsTop);
	formatTools.setStyle("width", windowSize.x);
}

function moveRelativeObject(obj, parent, x, y, z) {
	if (obj == null || parent == null)
		return;

	var parentTop = parent.getPosition().y,
		parentLeft = parent.getPosition().x;
	
	obj.setStyle("top", parentTop + y);
	obj.setStyle("left", parentLeft + x);
	if (!isNaN(z) && parseInt(z) > 0)
		obj.setStyle("z-index", z);
	obj.setStyle("display", "block");
}

var tweenpagelength=10;

function tweenForm(formid, outputdiv, url,tweenpagelength2){
	var pageinput;
	if(tweenpagelength2==undefined) { tweenpagelength2 = tweenpagelength; }
	formid.store("tweenpage",1);
	formid.store("tweenpagelength2",tweenpagelength2);
	
	pageinput = new Element('input',{'type': 'hidden', 'name': 'page', 'value': formid.retrieve('tweenpage')}).inject(formid);
	pageinput2 = new Element('input',{'type': 'hidden', 'name': 'alimit', 'value': formid.retrieve('tweenpagelength2')}).inject(formid);
	formid.addEvent("submit",function(e){
		if(e) e.preventDefault();
		
		if(this.retrieve('pagenav')) {
			this.store('pagenav',false);
			pageinput.value = this.retrieve('tweenpage');
		}
		else {
			this.store('tweenpage',1);
			pageinput.value = 1;
		}
		
		formid.set("send", {
			"url": url,
			"method": "post", 
			onSuccess: function(req){
				
				outputdiv.setStyle("display", "block");
				
				var response = JSON.decode(req);
				
				outputdiv.set("html", response.html);
				
				var ulobj = new Element('ul',{'class': 'listpages'}).inject(new Element('div',{'class': 'comments'}).inject(outputdiv));
				tweenNavigate(ulobj, response.count, formid);
                                if(outputdiv.id == 'searchbooksformlibraryoutput'){
                                    doLibraryBooklist();
                                } else {
                                    doBooklist();
				}
				var ContentHeight = outputdiv.getElement("table").getSize().y + outputdiv.getStyle("padding-bottom").toInt() + ulobj.getSize().y + 20,
					PositionSearchResults = new Fx.Tween(outputdiv, {duration: OpacityWait}).start("margin-top", 0),
					ExpandSearchResults = new Fx.Tween(outputdiv, {duration: OpacityWait}).start("height", ContentHeight);
			}
		});
		formid.send();
	});
}

function tweenNavigate(obj, tweentotal, formobj){
	var tweenpagelength2 = formobj.retrieve('tweenpagelength2');
	
	tweentotalpages = Math.ceil(tweentotal / tweenpagelength2);
	var tweenpage = formobj.retrieve('tweenpage');
	obj.getElements('li').dispose();
	if(tweentotalpages==0){
		return;
	}
	new Element('li', {'class': 'nolink'}).inject(obj).set('text', 'Sida: ');

	if(tweenpage != 1){
		new Element('a', {
			'href': 'javascript:;', 
			"events": {
					"click": function(e) {
						formobj.store('tweenpage',tweenpage-1);
						formobj.store('pagenav',true);
						formobj.fireEvent('submit',e);
					}
			}
		}).inject(
			new Element('li',{'class': 'previous'}).inject(obj)
		).set('text', 'Förra');
	}

	for(var a = (tweenpage - 4); a < (tweenpage + 4); a++) {
		if(a < 1 || a > tweentotalpages) continue;
	
		var liob = new Element('li').inject(obj);
		var aob = new Element('a',{
			'href': 'javascript:;',
			'class': (a == tweenpage?'active':''),
			'events': {
				'click': function(e){
					formobj.store('tweenpage',this.retrieve('page'));
					formobj.store('pagenav',true);
					formobj.fireEvent('submit',e);
				}
			}
		}).inject(liob);
		aob.store('page',a);
		aob.set('text',a);
	}
	if(tweenpage < tweentotalpages){
		new Element("a", {
			"href": 'javascript:;', 
			"events": {
				"click": function(e){
					formobj.store('tweenpage',tweenpage+1);
					formobj.store('pagenav',true);
					formobj.fireEvent('submit',e);
				}
			}
		}).inject(
			new Element('li', {'class': 'next'}).inject(obj)
		).set('text', 'Nästa');
	}
}



window.addEvent("load", function() {
	moveRelativeObject($("findbooks"), $("header").getElement("ul.navigation li.lasbok"), 37, 32);
});

window.addEvent("domready", function() {
	moveRelativeObject($("findbooks"), $("header").getElement("ul.navigation li.lasbok"), 37, 32);
	moveChapterFormatTools();
		
	if (Browser.Engine.trident4)
		$("leftpane").setStyle("height", $("rightpane").getSize().y);
	else
		$("leftpane").setStyle("min-height", $("rightpane").getSize().y);
	
	$$("a[rel='external']").addEvent("click", function(e) {
		e.preventDefault();
		window.open(this.href);
	});
	
	$$("a.forgotpassword").addEvent("click", function() {
		gMessage("forgotpassword", "&Aring;terskapa l&ouml;senord", "Ange ditt anv&auml;ndarnamn och e-postadress f&ouml;r att &aring;terskapa ditt l&ouml;senord");
	});
	
	$$("a.tellafriend").addEvent("click", function() {
		gMessage("tellafriend", "Tipsa en v&auml;n", "");
	});

	$$("a.print").addEvent("click", function() {
		if(bmList == null){
			gMessage('register','','Du m&aring;ste vara medlem f&ouml;r att kunna skriva ut hela kapitel!');
		}
		else window.print();
	});
	
	$$("div#rightpane div.login input[type='text']", "div#rightpane div.login input[type='password']").addEvent("keydown", function(e) {
		if (e.event.keyCode == 13 && $("inputusername").value && $("inputpassword").value) {
			var rememberme = ($("rememberme").checked)?1:0;
			new Request({
				"url": baseurl+"medlem/login",
				onSuccess: function(req) {
					var s = JSON.decode(req);
					if (s && s.sc === 1)
						window.location.reload();
					else
						gMessage("error", "Kunde inte logga in!", "Du kan ha angivit ett felaktigt anv&auml;ndarnamn eller l&ouml;senord!");
				},
				"data": "username=" + encodeURIComponent($("inputusername").value) + "&passwd=" + encodeURIComponent($("inputpassword").value) + "&remembercheck=" + rememberme
			}).send();
		}
	});

	var commentLinks = $$("a[rel='anchorjump']");
	commentLinks.each(function(anchorobj) {
		anchorobj.addEvent("click",function(e) {
			e.preventDefault();
			var destObj = $(anchorobj.hash.substring(1)),
				myFx = new Fx.Scroll(window, {
					offset: {
						"x": 0,
						"y": destObj.getCoordinates().top.toInt() - 50
					}
				}).toTop();
		});
	});
	
	var myImages = new Asset.images([
			baseurl + "templates/kapitel1/images/nav_lasbok_active.gif",
			baseurl + "templates/kapitel1/images/nav_forfattare_active.gif",
			baseurl + "templates/kapitel1/images/nav_forum_active.gif", 
			baseurl + "templates/kapitel1/images/nav_medlemskap_active.gif", 
			baseurl + "templates/kapitel1/images/nav_kapitelbloggen_active.gif"
		]);
});
window.addEvent("onDomReady", function(){
	window.addEvent("resize", function() {
		moveRelativeObject($("findbooks"), $("header").getElement("ul.navigation li.lasbok"), 37, 32);
	});
	
	window.addEvent("scroll", function() {
		moveChapterFormatTools();
	});
});


