var TweenWait = 300,
	URLHistoryHash = new Hash();

window.addEvent("domready", function() {

});

window.addEvent("resize", function() {
	rePositionPopin();
});



function rePositionPopin() {
	if ($("overlay"))
		$("overlay").setStyle("height", window.getScrollSize().y.toInt());
	if ($("popin"))
		$("popin").setStyle("left", window.getSize().x/2 - $("popin").getStyle("width").toInt()/2);
}

function createPopin(leftcontent, rightcontent, popincontent) {
	if ($("popin") !== null)
		return;
	
	$(document.body).adopt($$(
		new Element("div", {
			id:"overlay",
			styles: {
				"background-color": "#303639",
				"opacity": 0.75,
				"height": window.getScrollSize().y.toInt(),
				"z-index": 9
			}
		}),
		popin = new Element("div", {id:"popin"}).adopt($$(
			new Element("div", {id:"popheader"}).adopt($$(
				new Element("a", {
					id:"navback",
					href:"javascript:;",
					html:"Tillbaka",
					events: {
						"click": function(e) {
							e.preventDefault();
							goToHistory();
						}
					}
				}),
				new Element("a", {
					id:"closepop",
					href:"javascript:;",
					html:"St&auml;ng f&ouml;nster",
					events: {
						"click": function() {
							disposePopin();
							window.location.reload();
							//window.document.forms[0].submit();						
						}
					}
				}),
				new Element("h1", {html:"H&aring;ll Koll - Menyv&auml;ljare"})
			)),
			new Element("div", {id:"popincontent"}).adopt($$(
				new Element("div", {id:"leftpane"}),
				new Element("div", {id:"rightpane"})
			)),
			new Element("div", {id:"popfooter"}).adopt(
				new Element("ul").adopt($$(
					new Element("li").adopt(
						new Element("a", {
							"class":"basket",
							href:"javascript:;",
							html:"Ink&ouml;pslista",
							events:{
								"click": function(e) {
									e.preventDefault();
									openWindow("/util/ElementInterface.aspx?getElement=shoppinglist");
								}
							}
						})
					),
					new Element("li").adopt(
						new Element("a", {
							"class":"weekrecipes",
							href:"javascript:;",
							html:"Veckans recept",
							events:{
								"click": function(e) {
									e.preventDefault();
									openWindow("/util/ElementInterface.aspx?getElement=weekrecipeview");
								}
							}
						})
					),
					new Element("li").adopt(
						new Element("a", {
							"class":"weekmenu",
							href:"/util/ElementInterface.aspx?getElement=weekview",
							html:"Vecko&ouml;versikt",
							rel:"popincontent",
							events: {
								"click": function(e) {
									e.preventDefault();
									addToHistory(this.href, this.rel);
									doAjaxJSON(this.href, "", doPopin, this.rel);
								}
							}
						})
					),
					new Element("li").adopt(
						new Element("a", {
							"class":"recipies",
							href:"/util/ElementInterface.aspx?getElement=owndish",
							html:"Mina recept",
							rel:"rightpane",
							events: {
								"click": function(e) {
									e.preventDefault();
									addToHistory(this.href, this.rel);
									doAjaxJSON(this.href, "", doPopin, this.rel);
								}
							}
						})
					)
				))
			)
		))
	));

	if(popincontent !== undefined){
		doAjaxJSON(popincontent.url, "", doPopin, popincontent.target);
		var url = popincontent.url;
		var target = popincontent.target;
	} else {
		if($("leftpane"))
			$("leftpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:95px;margin-top:155px;margin-bottom:125px;' />");
		if($("rightpane"))
			$("rightpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:265px;margin-top:125px;margin-bottom:125px;' />");

		doAjaxJSON(leftcontent.url, "", doPopin, leftcontent.target);
		if (rightcontent.url)
			doAjaxJSON(rightcontent.url, "", doPopin, rightcontent.target);
		
		var url = rightcontent.url||leftcontent.url;
		var target = rightcontent.target||leftcontent.target;
	}
	URLHistoryHash.set(url, target);
	
	popin.setStyle("left", window.getSize().x/2 - popin.getStyle("width").toInt()/2);
	new Fx.Tween($("popin"), {duration: TweenWait}).start("opacity", 0, 1);
}

function openWindow(url) {
	var popup = window.open(url, "", "width=550,height=600,top=20,left=100,resizable=1,address=0,status=0,toolbar=1,scrollbars=1");
	if (popup)
		popup.focus();
}

function doPopin(content, target) {
	if ($("popin") === null || content === null)
		return;
	
	if ($("rightpane") === null && $("leftpane") === null && (target == "leftpane" || target == "rightpane")) {
		$("popincontent").empty();
		$("popincontent").adopt($$(
			new Element("div", {id:"leftpane"}),
			new Element("div", {id:"rightpane"})
		));
		switch(target) {
			case "leftpane":
				doAjaxJSON("/util/ElementInterface.aspx?getElement=start", "", doPopin, "rightpane");
			break;
			case "rightpane":
				doAjaxJSON("/util/ElementInterface.aspx?getElement=leftpane", "", doPopin, "leftpane");
			break;
		}
	}
	
	if ($(target) !== null) {
		$(target).set("html", content.html);
		manipulateHREFs(target);
		rePositionPopin();
	}
	
	if (content.perform) {
		$each(content.perform, function(fn, obj) {
			eval(fn);
		});
	}

	var forms = content.formid||new Array;
	forms.each(function(obj) {
		if ($(obj)) {
			$(obj).addEvent("submit", function(e) {
				if (e)
					e.stop();
				this.set("send", {onComplete: function(resp) {
					doPopin(JSON.decode(resp), "rightpane");
				}});
				this.send();
			});
		}
	});
}

function disposePopin() {
	if ($("popin") === null || $("overlay") === null)
		return;
	
	new Fx.Tween($("popin"), {duration: TweenWait, onComplete: function() {
		$("popin").dispose();
		$("overlay").dispose();
	}}).start("opacity", 0);
}

function manipulateHREFs(base) {
	$(base).getElements("a[rel]").addEvent("click", function(e) {
		e.preventDefault();
		addToHistory(this.href, this.rel);
		
		if($("rightpane"))
			$("rightpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:265px;margin-top:125px;margin-bottom:125px;' />");
		doAjaxJSON(this.href, "", doPopin, this.rel);
	});
	$(base).getElements("a.printpage").addEvent("click", function(e) {
		e.preventDefault();
		var popwin = window.open(this.href, "", "width=550,height=600,top=20,left=100,resizable=1,address=0,status=0,toolbar=1,scrollbars=1");
	});
}

function addToHistory(url, target) {
	if (typeof url !== "string" && typeof target !== "string")
		return;

	URLHistoryHash.set(url, target);
}

function goToHistory() {
	var url = lurl = target = ltarget = null;
	URLHistoryHash.each(function(key, value) {
		if (url) {
			lurl = url;
			ltarget = target;
		}
		url = value;
		target = key;
	});
	if (lurl !== null) {
		URLHistoryHash.erase(url);
		doAjaxJSON(lurl, "", doPopin, ltarget);
	}
}

function getRecipieGB(form, UrlResource, Callback) {
	
	//Added by Martin
	var noPortions = form.getElement("input#nofppl").value;
	
	
	var queryString = new Array();
	form.getElements("div.ingredientseparator").each(function (obj) {
		if (obj.getElement("input.provisions_id").value && obj.getElement("input.small").value)
			queryString.push(obj.getElement("input.provisions_id").value + ":" + obj.getElement("input.small").value.replace(",","."));
	});
	
	if (!queryString.length)
		return;
	
	new Request({
		"url": UrlResource + "?data=" + noPortions + "|" + queryString.join("^"),
		"data": "",
		"headers": {"X-Request": "JSON"},
		"onSuccess": function(req) {
			var r = JSON.decode(req);
			if (r.status > 0) {
				if (Callback)
					Callback(r);
			} else {
				switch(r.status) {
					case -1:
						alert(r.statusmessage);
					break;
					case -2:
					default:
						alert("Internal error");
					break;
				}
			}
		}
	}).send();
}

function updateRecipieGB(json) {
	var gbValue = json.gbvalue,
		gradientWidth = json.gbwidth;
	$("addrecipieform").getElement("div.addrecipie div.bgvalue p span").set("html", gbValue);
		(function() {
			new Fx.Tween($("addrecipieform").getElement("div.addrecipie div.scale div.gradient"), {duration: TweenWait}).start("width", gradientWidth);
		}).delay(TweenWait);
}

function updateAfterSaveMeasurements(response, args)
{
	updatePanels(args[0], args[1]);
}

function updatePanels(leftcontent, rightcontent)
{
	if($("leftpane"))
		$("leftpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:95px;margin-top:155px;margin-bottom:125px;' />");

	if($("rightpane"))
		$("rightpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:265px;margin-top:125px;margin-bottom:125px;' />");

	if(!$("leftpane") && !$("rightpane") && $("popincontent"))
		$("popincontent").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:500px;margin-top:75px;margin-bottom:125px;' />");

	doAjaxJSON(rightcontent.url, "", doPopin, "rightpane");
	doAjaxJSON(leftcontent.url, "", doPopin, "leftpane");
}

function printPopinContent()
{
	$("page-container").set("class", "NoPrint");
	$("leftpane").set("class", "NoPrint");
	$("popheader").set("class", "NoPrint");
	$("popfooter").set("class", "NoPrint");
	
	window.print();	
}

/**function saveRecipe(form)
{
	var URL = "/util/FormInterface.aspx?form=addrecipe";
	
	var phaseDay = -1, mealType = 0, mealID = -1;
	
	if($('jsID-phaseDay').value != null && $('jsID-phaseDay').value != "")
		phaseDay = $('jsID-phaseDay').value;
	if($('jsID-mealType').value != null && $('jsID-mealType').value != "")
		mealType = $('jsID-mealType').value;
	if($('jsID-mealID').value != null && $('jsID-mealID').value != "")
		mealID = $('jsID-mealID').value;
		
	
	doAjaxJSON(
		URL,
		"phaseDay="		+ phaseDay
		+ "&mealType="	+ mealType
		+ "&mealID="	+ mealID,
		DisposeActivityPopin, 
		form);
		
		
							+ "<input type='hidden' id='jsID-phaseDay' value='" + phaseDay + "' />"
							+ "<input type='hidden' id='jsID-mealType' value='" + mealType + "' />"
							+ "<input type='hidden' id='jsID-mealID' value='" + mealID + "' />"
}*/

function saveMealPortions(phaseDay, mealType, mealID, noPortions)
{/*
	if($("leftpane"))
		$("leftpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:95px;margin-top:155px;margin-bottom:125px;' />");
	if($("rightpane"))
		$("rightpane").set("html", "<img src='/gi/mealplanner/img/ajax-loader.gif' style='height:31px;width:31px;margin-left:265px;margin-top:125px;margin-bottom:125px;' />");
*/

	doAjaxJSON(
		"/util/FormInterface.aspx?form=saveMealPortions", 
		"phaseDay=" + phaseDay + "&mealID=" + mealID + "&amount=" + noPortions, 
		updateAfterSaveMeasurements, 
		[{"url":"/util/ElementInterface.aspx?getElement=leftpane&phaseDay=" + phaseDay + "&mealType=" + mealType},
		{"url":"/util/ElementInterface.aspx?getElement=mealeditor&phaseDay=" + phaseDay + "&mealType=" + mealType + "&mealID=" + mealID + "&mealPortionIsUpdated=true"}]
	)
		
}
