var cookieNameKokebokSynced = "kokebokSync";
var timer = null;


String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str);}

String.prototype.endsWith = function(str)
{return (this.match(str+"$")==str);}

if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(elt /*, from*/)
	{ var len = this.length; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; 
}

String.prototype.ucfirst = function(str)
{ return (this.substring(0, 1).toUpperCase() + this.substring(1)); }

Array.prototype.removeIndex = function(i) 
{ this.splice(i, 1); }

Array.prototype.remove = function(e) 
{ if(this.indexOf(e) > -1) { this.splice(this.indexOf(e), 1); } }

var my_tine_expanded = false;
var currentUserToken = null;
var userGlobal = null;
var loadedmytine = false;


jQuery(function($) {
		
	$(document).ready(function() {
		
		if($("#herobanner img").length > 0 && $("#herobanner img").attr("src").indexOf("384294_966_306.png") != -1) {
			var today = new Date();
			var dayOfMonth = today.getDate();
			if ((today.getMonth() == 11) && (dayOfMonth < 25)){
				$("#herobanner img").attr("src", "http://webfiles.tine.no/TINE.no_v2/images/kalender/" + dayOfMonth +".jpg");
			}
		}

		userGlobal = getLoggedInUser();

		if(userGlobal != false)
		{
			$("#currentuserbar").show();
			$("#currentuserbar").html("<span>Logget inn som " + userGlobal.firstname + " " + userGlobal.lastname + " (<a href='#' id='currentuserbarlogout'>Logg ut</a>)</span> ");	

			$("#currentuserbarlogout").live('click', function(e) {
				e.preventDefault();
				logout();
			});
		}

		else
		{
			$("#currentuserbar").hide();
		}
		
		$("#othersitesDropdown, #othersitesDropdownText").bind("click", function() {
			$("#othersites").toggle();
			timer = setTimeout(function () { $("#othersites").fadeOut('fast'); }, 3500);
		});
		
		$("#othersites").bind("mouseenter",function(){
			clearTimeout(timer);
		}).bind("mouseleave",function(){
			timer = setTimeout(function () { $("#othersites").fadeOut('fast'); }, 1000);
		});
		
		/*
			Youtube play buttons
		*/
		$('.youtubeplaybutton').mouseover(function() {
  
				$(this).attr('src', 'http://webfiles.tine.no/tine.no_v2/images/youtube_play_mo.png'); 
		});

		$('.youtubeplaybutton').mouseout(function() {
  
				$(this).attr('src', 'http://webfiles.tine.no/tine.no_v2/images/youtube_play.png'); 
		});

		/*
			Mitt TINE
		*/
		$('#my-tine').click(function(e) {
			clickMyTINE();

			return false;
		});
		
		if(window.location.hash == "#mypage")
		{
			clickMyTINE();
		}

		/*
			Related content hide - Links
		*/
		$('.showhiddenlinks').click(function() {
			$('.showhiddenlinks').hide();
			$('.hiddenlink').show();
		});

		/*
			Related content hide - Tags
		*/
		$('.showhiddentags').click(function() {
			$('.showhiddentags').hide();
			$('.hiddentag').show();
		});

		/*
			Related content hide - SectionList (links)
		*/
		$('.showhiddensectionlist').click(function() {
			$('.showhiddensectionlist').hide();
			$('.hiddensectionlist').show();
		});

		/*
			Related content hide - Related Tags
		*/
		$('.showhiddenrelatedtags').click(function() {
			$('.showhiddenrelatedtags').hide();
			$('.hiddenrelatedtag').show();
		});

		/*
			http://timeago.yarp.com/
		*/
		jQuery("abbr.timeago").timeago();

		/*
			Comments hide
		*/
		$('.showhiddencomments').click(function() {
			$('.showhiddencomments').hide();
			$('.hiddencomment').show();
		});

		/*
			Dilemma quotes
		*/
		$('.morequotes').click(function() {
			$('.morequotes').hide();
			$('.hidden').show();

			return false;
		});
			
		/*
			Reload Captcha
		*/
		$(".newcaptcha").click( function() {
		
			resetCaptcha();
			
			return false;
		});

		/*
			Reset comment form
		*/
		$(".formreset").click( function() {
		
			resetForm();
			
			return false;
		});

		/*
			Show/Hide comment-form
		*/
		$('.showhidecommentform').click(function() {
			
			showHideCommentForm();
		
			return false;
		});

		/*
			Load comments if there are any
		*/
		
		if($('.comments').length > 0)
		{
				$('.comments').show();
				updateComments(null);
		}

		/* Add class for hovering over recipes */
		
		
		$(".mosaic_recipe").live('mouseover', function() {
			$(this).children("a").addClass("hovering");
			if($(".infobox", this).length > 0) {
				checkForRecipeDetails(this);
			}
		});


		$(".mosaic_recipe").live('mouseout', function() {
			$(this).children("a").removeClass("hovering");
		});
		
		$(".mosaic-product").mouseenter(function() {
			$(this).find(".prodimage").addClass("hovering");
		});

		$(".mosaic-product").mouseleave(function() {
			$(this).find(".prodimage").removeClass("hovering");
		});
		
		// $(".mosaic-product").mouseenter(function() {
			// $(this).find("a.linkbullet").attr('style','height: auto;');
			// $(this).find(".extrainfo").attr('style','display: block;');
		// });
		
		// $(".mosaic-product").mouseleave(function() {
			// $(this).find("a.linkbullet").attr('style','height: 32px;');
			// $(this).find(".extrainfo").attr('style','display: none;');
		// }); 
		
	
		$(".carousel_mosaic_product").mouseenter(function() {
			$(this).find(".prodimage").addClass("hovering");
		});

		$(".carousel_mosaic_product").mouseleave(function() {
			$(this).find(".prodimage").removeClass("hovering");
		});
		
		timedisplays = $(".timedisplay");
		for(i = 0; i < timedisplays.length; i++) {
			v = $(timedisplays[i]).html();

			t = parseInt(v);
			ts = "";
			if(t > 60) {
				ts = Math.round(t / 60) + " t";
				t -= (Math.round(t / 60) * 60);
			}
			if(t > 0) {
				ts += " " + t + " min";
			}
			if(ts.endsWith("t")) {
				ts += "imer";
			}

			$(timedisplays[i]).text(ts);
		}

		$(".recipelist .ddSort").change(function() {
			if($(this).val() != "") {
				window.location.search = jQuery.query.set("sort", "title");
			} else {
				window.location.search = jQuery.query.remove("sort");
			}
		});
	});
});

function clickMyTINE()
{
	var start = new Date();

	if(my_tine_expanded)
	{
		$('#my-tine-box').slideUp('fast',  function() {
			$('#my-tine-button').removeClass('my-tine-button-background');
			$('#my-tine').removeClass('my-tine-padding');
			$('#my-tine').addClass('linkbullet');
			$('#my-tine').addClass('borderedlink');
		});

		my_tine_expanded = false;
	}

	else
	{
		updateMyTINE();

		
		my_tine_expanded = true;
	}

	_gaq.push(['_trackEvent', 'Min side', 'Åpnet ved klikk']);

	var stop = new Date();

	return false;
}

function checkForRecipeDetails(e) {
	var b = $(e).data("ratingUpdated");
	if(b == null) {
		var id = $(e).attr("id").substring(7);
		$(e).data("ratingUpdated", true);
		$.get("/comments/combined/7/" + id + "/", {}, function(xml) {
			$(".commentcount", e).text( $("comments", xml).text() );
			ra = $("rating", xml);
			if(ra.attr("count") > 0) {
				r = Math.round(parseInt(ra.text()) / parseInt(ra.attr("count")));
				$(".stars", e).attr("src", "http://webfiles.tine.no/Tine.no_v2/images/stars_" + r + ".gif");
			} else {
				$(".stars", e).attr("src", "http://webfiles.tine.no/Tine.no_v2/images/stars_0.gif");
			}
		});
	}
}

// Init global click handlers

$(".vacancySendButton").live('mousedown', function(e) {
	var regex = /.*application\/([0-9]+)\/.*/g;
	var hits = regex.exec(this.href);

	trackSendApplication(hits[1]);
});

$('.usercreatebutton').live('click', function(e) {
	showLogin();
	return false;
});

$('.facebookbutton').live('click', function(e) {
	showLogin();
	return false;
});

$('.showloginbutton').live('click', function(e) {
	showLogin();
	return false;
});

$('.logoutbutton').live('click', function(e) {
	$('.logoutbutton').hide();
	$('.my-tine-loader').show();
	logout();
	return false;
});

$('#account-mysubscriptions').live('click', function(e) {
	$('.account-button-active').removeClass("account-button-active");
	$('#account-mysubscriptions').addClass("account-button-active");
	showMySubscriptions();
	_gaq.push(['_trackEvent', 'Min side', 'Klikket Mine abonnement']);
	return false;
});

$('#account-mysubscriptions-apsis').live('click', function(e) {
	e.preventDefault();
	$('.account-button-active').removeClass("account-button-active");
	$('#account-mysubscriptions').addClass("account-button-active");
	showMyApsisSubscriptions();
//	_gaq.push(['_trackEvent', 'Min side', 'Klikket Mine abonnement']);
});

$('#account-cookbook').live('click', function(e) {
	$('.account-button-active').removeClass("account-button-active");
	$('#account-cookbook').addClass("account-button-active");
	showMyKokebok();
	_gaq.push(['_trackEvent', 'Min side', 'Klikket Min kokebok']);
	return false;
});

$('#account-shoppinglist').live('click', function(e) {
	$('.account-button-active').removeClass("account-button-active");
	$('#account-shoppinglist').addClass("account-button-active");
	showMyShoppingLists();
	_gaq.push(['_trackEvent', 'Min side', 'Klikket Min handleliste']);
	e.preventDefault();
});


$("#account-visited-pages").live('click', function(e) {
	clickShowHistory();
	e.preventDefault();
});

$('.updateaccount').live('click', function(e) {
	showUpdateUser();
	_gaq.push(['_trackEvent', 'Min side', 'Klikket oppdater konto Navn']);
	e.preventDefault();
});

$('#editaccount').live('click', function(e) {
	showUpdateUser();
	_gaq.push(['_trackEvent', 'Min side', 'Klikket oppdater konto Knapp']);
	e.preventDefault();
});


$(".large_mosaic_recipe").live('click', function(e) {
	e.preventDefault();
	window.location = $("a", this).attr("href");
});



function trackSendApplication(id) {
	//GA Tracking
	_gaq.push(['_trackPageview', '/send-jobbsoknad/' + id]);

	return true;
}
		
function updateMyTINE()
{
	if(loadedmytine == false)
	{
		var date = new Date();

		var url = '/system-pages/my-tine?t=' + date.getTime();

		$('#my-tine-box').load(url, function(){
			userGlobal = getLoggedInUser();

			if(userGlobal != false) {
				$('.loginname').html('Du er logget inn som <br/><a class="updateaccount" href ="#">' + userGlobal.firstname + ' ' + userGlobal.lastname + '</a>');
				$('.loginname').show();
				$('.showloginbutton').hide();
				$('.logoutbutton').show();
				$('#editaccount').show();
				$('.userservice-notice').hide();
			} else {
				$('.loginname').hide();
				$('.showloginbutton').show();
				$('.logoutbutton').hide();
			}

			//Default is to show last visisted pages
			clickShowHistory();
			Cufon.replace('#my-tine-box h1, #my-tine-box h2');
			$('#my-tine-button').addClass('my-tine-button-background');
			$('#my-tine').removeClass('linkbullet');
			$('#my-tine').addClass('my-tine-padding');
			$('#my-tine').removeClass('borderedlink');
			$('#my-tine-box').slideDown('fast');

			loadedmytine = true;
		});
	}

	else
	{
		$('#my-tine-button').addClass('my-tine-button-background');
		$('#my-tine').removeClass('linkbullet');
		$('#my-tine').addClass('my-tine-padding');
		$('#my-tine').removeClass('borderedlink');
		$('#my-tine-box').slideDown('fast');
	}
}

function clickShowHistory()
{
	$('.account-button-active').removeClass("account-button-active");
	$("#account-visited-pages").addClass("account-button-active");
	showHistory();
}

function sendTipToEmailAboutThisPage(mailto, fromname, fromemail, comment, successCallback, errorCallback) {

	// Tracking
	_gaq.push(['_trackPageview', '/share/email']);
	_gaq.push(['_trackEvent', 'Share', 'Email', location.href]);

	$.getJSON(
		"/sendtipbyemail", 
		{
			'url': location.href,
			'mailto': mailto,
			'fromemail': fromemail,
			'fromname': fromname,
			'comment': comment
		}, 
		function(result) {
			if(result == "OK") {
				successCallback();
			} else if(result.startsWith("ERROR")) {
				result = result.substring(6);
				_d("Error while sending tip: " + result);
				errorCallback(result);
			}
		}
	);
}

function showMyKokebok() {

	/* Adds loading image */
	$('.account-content').html("<img src='http://webfiles.tine.no/Tine.no/images/oppskriftsvelger/ajax-loader.gif' class='myKokebokLoading'/>");
	
	/* If logged in show all, else just recipes in cookie */
	if (getLoggedInUser() != null && getLoggedInUser() != false) {
		
		/* How many to show */
		var maxInList = 10;
		
		/* Get everything */
		var recipeIds = wsListTineItems(getLoggedInUser().email);
		var recipesMine = wsListMyItems(getLoggedInUser().email);
		var queryCorrect = createQueryFromIds(recipeIds);
		var url = oppskrifterXmlUrl + "?query=" + queryCorrect;
		
		
		/* Get all tine stuff */
		var returnData;
		var token = getUserToken();
		var dataInput = {
				"token" : token
		};
		$.ajax({
			type: "GET",
			url: url + "&r=" + Math.random(),
			dataType: "xml",
			async: true,
			success: function(data) {
			
				/* Creat new array for later use */
				var allRecipes = new Array();
				
				/* Add it to a better arra y */
				var ajaxRecipes = $(data).find("recipes");
				$(ajaxRecipes).find("recipe").each(function(index) {
					var key = $(this).attr("key");
					var title = $(this).find("title").text();
					var image = $(this).find("image").text();
					var url = $(this).find("url").text();
					var added = getAddedForKey(key, recipeIds);
					var recipe = {
						'image' : image,
						'url' : url,
						'title' : title,
						'added' : added
					};
					allRecipes.push(recipe);
				});
				
				/* Add my own stuff to the same array as before  */
				for(i = 0; i < recipesMine.length; i++) {
					var recipe = recipesMine[i];
					var image = "http://www.tine.no/imageresize/recipe/" + recipe.image + "/63_45.jpg";
					var url = privateRecipeUrl + "?hash=" + recipe.hash;
					var title = recipe.title;
					var added = recipe.created;
					var recipe = {
						'image' : image,
						'url' : url,
						'title' : title,
						'added' : added
					};
					allRecipes.push(recipe);
				}
				
				addRecipesToDesign(allRecipes, maxInList);
				
				Cufon.replace('.account-content h2');	
			}
		});
		
		
	} else {
		var maxInList = 6;
		var recipeIds = cookieListTineItems();
		var queryCorrect 	= createQueryFromIds(recipeIds);
		var url = oppskrifterCookieXmlUrl + "?query=" + queryCorrect;

		$.ajax({
			type: "GET",
			url: url + "&r=" + Math.random(),
			dataType: "xml",
			async: true,
			success: function(data) {
			
				/* Creat new array for later use */
				var allRecipes = new Array();
				
				/* Add it to a better arra y */
				var ajaxRecipes = $(data).find("recipes");
				$(ajaxRecipes).find("recipe").each(function(index) {
					var key = $(this).attr("key");
					var title = $(this).find("title").text();
					var image = $(this).find("image").text();
					var url = $(this).find("url").text();
					var added = getAddedForKey(key, recipeIds);
					var recipe = {
						'image' : image,
						'url' : url,
						'title' : title,
						'added' : added
					};
					allRecipes.push(recipe);
				});
				
				addRecipesToDesign(allRecipes, maxInList);
				Cufon.replace('.account-content h2');
			}
		});
	}

}

function addRecipesToDesign(recipies, maxInList) {

	var theList = $("<ul id='personalKokebok'>");

	/* Sort it all */
	recipies.sort(myKokebokSort);
				
	/* Add it all ti list */
	for(i = 0; i < recipies.length; i++) {
		var recipe = recipies[i];
		
		var style = '';
		if (i >= maxInList) {
			style = "style='display : none;'";
		}
		
		if ($.trim(recipe.added) != "") {
			$(theList).append(
				"<li " + style + ">" +
					"<img src='" + recipe.image + "' />" +
					"<div>" +
						"<a href='" + recipe.url + "'>" + recipe.title + "</a><br />" +
						"Lagt til " + recipe.added.substr(0,10) +
					"</div>" +
				"</li>");
		} else {
			$(theList).append(
				"<li " + style + ">" +
					"<img src='" + recipe.image + "' />" +
					"<div>" +
						"<a href='" + recipe.url + "'>" + recipe.title + "</a><br />" +
					"</div>" +
				"</li>");
		}
	}
	

	var navigation = 
		"<div style='clear: both; margin-bottom: 20px; margin-top: 10px; float: right;' class='myKokebokPagingLinks'>" +
			"<a id='myKokebokPrevPage' style='display: none; ' class='btnPrevious'>Forrige</a>" +
			"<span id='myKokebokPrevPageDisabled' class='lblPrevious'>Forrige</span>" +
			" | " +
			"<a id='myKokebokNextPage' class='btnNext'>Neste</a>" +
			"<span id='myKokebokNextPageDisabled' style='display: none; ' class='lblNext'>Neste</span>" +
		"</div>";

	//$('.account-content img.loading').remove();
	$(".myKokebokLoading").remove();
	/* Add the new list to page  */
	$('.account-content').html(theList);
	
	
	if (recipies.length <= 0) {
		if($(".account-content .noIngridientsInList").size() <= 0) {
			if (!getLoggedInUser()) {
				$(".account-content").append(noOppskrifterInListLoggedOut);
			} else {
				$(".account-content").append(noOppskrifterInListLoggedIn);
			}
		}
	} else {
		$(".noIngridientsInList").remove();
	}
	
	if (recipies.length > maxInList) {
		$('.account-content').append(navigation);
	}
	
	
	$("#personalKokebok").pagingNew({
		'items'				: "li", 
		'prev'				: $("#myKokebokPrevPage"), 
		'next'				: $("#myKokebokNextPage"), 
		'prevDisabled'	: $("#myKokebokPrevPageDisabled"), 
		'nextDisabled'	: $("#myKokebokNextPageDisabled"),
		'countPerPage'	: maxInList
	});
	
	/* Fix heading stuff */
	$('.account-content').prepend("<h2>Min kokebok</h2>");
	$('.account-content').append("<a href='" + kokebokUrl + "' id='kokebokButton' class='roundedbutton colorblue' style='display: inline; '>Til kokeboken</a>");
}

function myKokebokSort(a, b) {
	var date1 = a.added;
	var date2 = b.added;
	
	var year1		= parseInt(date1.substr(6,4));
	var month1	= parseInt(date1.substr(3,2));
	var day1		= parseInt(date1.substr(0,2));
	var hour1		= parseInt(date1.substr(11,2));
	var minute1	= parseInt(date1.substr(14,2));
	var second1	= parseInt(date1.substr(17,2));	
	
	var year2		= parseInt(date2.substr(6,4));
	var month2	= parseInt(date2.substr(3,2));
	var day2		= parseInt(date2.substr(0,2));
	var hour2		= parseInt(date2.substr(11,2));
	var minute2	= parseInt(date2.substr(14,2));
	var second2	= parseInt(date2.substr(17,2));
	
	if (year1 < year2) {
		return 1;
	} else if (year1 > year2) {
		return -1;
	}
	
	if (month1 < month2) {
		return 1;
	} else if (month1 > month2) {
		return -1;
	}
	
	if (day1 < day2) {
		return 1;
	} else if (day1 > day2) {
		return -1;
	}
	
	if (hour1 < hour2) {
		return 1;
	} else if (hour1 > hour2) {
		return -1;
	}

	if (minute1 < minute2) {
		return 1;
	} else if (minute1 > minute2) {
		return -1;
	}

	if (second1 < second2) {
		return 1;
	} else if (second1 > second2) {
		return -1;
	}	
	
	return 0;
}

function getAddedForKey(id, list) {
	for(i = 0; i < list.length; i++) {
		var thisOne = list[i];
		if (id == list[i].recipeid) {
			return list[i].created;
		}
	}
	return "0";
	
};

function showMyShoppingLists() {
	if (getLoggedInUser() != null && getLoggedInUser() != false) {
		
		var maxInList = 12;
		
		var shoppingLists = wsGetShoppingListCollectionByEmail(getLoggedInUser().email);
		
		if (shoppingLists.length == 0) {
			$('.account-content').html("<span>Ingen lagrede handlelister</span>");
		} else {
			var theList = $("<ul id='personalShoppingLists'>");
			
			for ( var i = 0; i < shoppingLists.length ; i++) {
				var shoppingList = shoppingLists[i];
				var active = "";
				
				var style = '';
				if (i >= maxInList) {
					style = "style='display : none;'";
				}
		
				$(theList).append(
						"<li class='linkbullet' " + style + ">" +
						"<span class='id'>" + shoppingList.id + "</span>" +
						"<span><span class='name'>" + shoppingList.name + "</span><br />" +
						"<span style='color: #1B1B1B'>Siste oppdatering: " + (shoppingList.updated != '' ? shoppingList.updated : shoppingList.created) + "</span></span>" +
				"</li>");
			}
			
			$('.account-content').html(theList);
			
			var navigation = 
				"<div style='clear: both; margin-bottom: 20px; margin-top: 10px; float: right;' class='myKokebokPagingLinks'>" +
					"<a id='myShoppinglistPrevPage' style='display: none; ' class='btnPrevious'>Forrige</a>" +
					"<span id='myShoppinglistPrevPageDisabled' class='lblPrevious'>Forrige</span>" +
					" | " +
					"<a id='myShoppinglistNextPage' class='btnNext'>Neste</a>" +
					"<span id='myShoppinglistNextPageDisabled' style='display: none; ' class='lblNext'>Neste</span>" +
				"</div>";
	
			if (shoppingLists.length > maxInList) {
				$('.account-content').append(navigation);
			}
		
			$("#personalShoppingLists").pagingNew({
				'items'				: "li", 
				'prev'				: $("#myShoppinglistPrevPage"), 
				'next'				: $("#myShoppinglistNextPage"), 
				'prevDisabled'	: $("#myShoppinglistPrevPageDisabled"), 
				'nextDisabled'	: $("#myShoppinglistNextPageDisabled"),
				'countPerPage'	: maxInList
			});		
		}

		$('.account-content').prepend("<h2>Mine handlelister</h2>");
		
		$('.account-content').append("<a href='" + shoppingListUrl + "' id='handlelisteButton' class='roundedbutton colorblue' style='display: inline; '>Til handleliste</a>");
		
		

	}

	else {
		$('.account-content').html("<h2>Mine handlelister</h2><p>Du må være <a href='#' class='openloginbutton'>innlogget</a> for å kunne hente frem dine lagrede handlelister. Gå til <a href='/oppskrifter/handleliste'>handlelisten</a> for å sette sammen din egen handleliste, som lagres midlertidig på din datamaskin.</p>");

		$('.account-content').append("<a href='" + shoppingListUrl + "' id='handlelisteButton' class='roundedbutton colorblue' style='display: inline; '>Til handleliste</a>");

		$('.openloginbutton').click(function(e) {
			showLogin();

			return false;
		});
	}

	Cufon.replace('.account-content h2');
}

		$("#personalShoppingLists li").live('click', function(e) {
			$("#personalShoppingLists").hide();
			
			var id = $.trim($(this).find("span.id").text());
			var name = $.trim($(this).find("span.name").text());
			
			clearCookie();
			var shoppinglistObj = wsGetShoppingListByID(getLoggedInUser().email, id);
			var shoppingListString = JSON.parse(shoppinglistObj.data);
			var shoppingList = new ShoppingList(shoppingListString);
			saveShoppingList(shoppingList);
			setCurrentShoppingList(name);
			
			var url = "http://www.tine.no/oppskrifter/handleliste?key=";
			url += shoppingList.getQuery();
			window.location.href = url;
			window.event.returnValue=false;
			return false;
		});

function showMySubscriptions()
{
	if(getLoggedInUser() != null && getLoggedInUser() != false)
	{
		var usersGroups = getUsersGroups();
		var groups = getGroups();

		var contentHTML = "";

		contentHTML += "<div class='account-active-subscriptions'>";
			contentHTML += "<h2>Mine abonnement</h2>";
			contentHTML += "<p>Ønsker du å få et fristende middagstips sendt rett til deg? Du kan velge å få det tilsendt på e-post</p>";
			contentHTML += "<ul>";
			
			for(i = 0; i < usersGroups.length; i++)
			{
				var group = usersGroups[i];
				
				var donotfilter = false;

				for(e = 0; e < groups.length; e++)
				{
					var validgroup = groups[e];

					if(validgroup.key == group.key)
					{
						donotfilter = true;
					}
				}

				if(donotfilter)
				{
					contentHTML += '<li>' + group.name + ' - <span class="leavebutton" id="group_' + group.key + '">Fjern</span></li>';
				}
			}

			if( usersGroups.length == 0)
			{
				contentHTML += '<li class="nomoresubs">Du har ingen aktive abonnement</li>';
			}

			contentHTML += "</ul>";
		contentHTML += "</div>";
		
		contentHTML += "<div class='account-availiable-subscriptions'>";
			contentHTML += "<h2>Tilgjenglige abonnement</h2>";

			contentHTML += "<ul>";
			
			var validsubcount = 0;

			for(i = 0; i < groups.length; i++)
			{
				var group = groups[i];
				
				var filter = false;

				for(e = 0; e < usersGroups.length; e++)
				{
					var validgroup = usersGroups[e];

					if(validgroup.key == group.key)
					{
						filter = true;
					}
				}

				//Dont show groups the user already is a member of
				if(filter == false)
				{
					validsubcount ++;

					contentHTML += "<li>" + group.name + ' - <span class="joinbutton" id="group_' + group.key + '">Abonner p&aring;</span></li>';
				}
			}

			if(validsubcount == 0)
			{
				contentHTML += "<li class='nomoresubs'>Ingen flere abonnement</li>";
			}

			contentHTML += "</ul>";
		contentHTML += "</div>";

		$('.account-content').html(contentHTML);
	}	

	else
	{
		$('.account-content').html("<p>Du må være innlogget for å kunne endre på dine abonnement</p>");
	}

	$('.joinbutton').click(function () {
		var groupkey = this.id.substring(6);
		joinGroup(groupkey, $(this));
	});

	$('.leavebutton').click(function () {
		var groupkey = this.id.substring(6);
		leaveGroup(groupkey, $(this));
	});

	Cufon.replace('.account-content h2');
}

$('.apsisleavebutton').live('click', function () {
	var groupkey = this.id.substring(6);		
	leaveApsisGroup(groupkey, $(this));
});

$('.apsisjoinbutton').live('click', function () {
	var groupkey = this.id.substring(6);
	joinApsisGroup(groupkey, $(this));
});

function showMyApsisSubscriptions()
{
	if(getLoggedInUser() != null && getLoggedInUser() != false)
	{
		var usersGroups = getUsersApsisGroups();
		var groups = getApsisGroups();

		var contentHTML = "";

		contentHTML += "<div class='account-active-subscriptions'>";
			contentHTML += "<h2>Mine abonnement (Apsis)</h2>";
			contentHTML += "<p>Ønsker du å få et fristende middagstips sendt rett til deg? Du kan velge å få det tilsendt på e-post</p>";
			contentHTML += "<ul>";
			
			for(i = 0; i < usersGroups.length; i++)
			{
				var group = usersGroups[i];
				
				var donotfilter = false;

				for(e = 0; e < groups.length; e++)
				{
					var validgroup = groups[e];

					if(validgroup.key == group.key)
					{
						donotfilter = true;
					}
				}

				if(donotfilter)
				{
					contentHTML += '<li>' + group.name + ' - <span class="apsisleavebutton" id="group_' + group.key + '">Fjern</span></li>';
				}
			}

			if( usersGroups.length == 0)
			{
				contentHTML += '<li class="nomoresubs">Du har ingen aktive abonnement</li>';
			}

			contentHTML += "</ul>";
		contentHTML += "</div>";
		
		contentHTML += "<div class='account-availiable-subscriptions'>";
			contentHTML += "<h2>Tilgjenglige abonnement</h2>";

			contentHTML += "<ul>";
			
			var validsubcount = 0;

			for(i = 0; i < groups.length; i++)
			{
				var group = groups[i];
				
				var filter = false;

				for(e = 0; e < usersGroups.length; e++)
				{
					var validgroup = usersGroups[e];

					if(validgroup.key == group.key)
					{
						filter = true;
					}
				}

				//Dont show groups the user already is a member of
				if(filter == false)
				{
					validsubcount ++;

					contentHTML += "<li>" + group.name + ' - <span class="apsisjoinbutton" id="group_' + group.key + '">Abonner p&aring;</span></li>';
				}
			}

			if(validsubcount == 0)
			{
				contentHTML += "<li class='nomoresubs'>Ingen flere abonnement</li>";
			}

			contentHTML += "</ul>";
		contentHTML += "</div>";

		$('.account-content').html(contentHTML);
	}	

	else
	{
		$('.account-content').html("<p>Du må være innlogget for å kunne endre på dine abonnement</p>");
	}
/*
	$('.joinbutton').click(function () {
		var groupkey = this.id.substring(6);
		joinGroup(groupkey, $(this));
	});

	$('.leavebutton').click(function () {
		var groupkey = this.id.substring(6);		
		leaveGroup(groupkey, $(this));
	});
*/
	Cufon.replace('.account-content h2');
}

function hideLogin()
{
	$('#mask').hide();
	$('#loginbox').hide();
}

function showLogin(email, refresh)
{
	//Get the screen height and width
	var maskHeight = $(document).height();
	var maskWidth = $(window).width();

	//Set heigth and width to mask to fill up the whole screen
	$('#mask').css({'width':maskWidth,'height':maskHeight});

	//Get the window height and width
	var winH = $(window).height();
	var winW = $(window).width();
	  
	//Set the popup window to center
	$('#loginbox').css('top',  winH/2-$('#loginbox').height()/2);
	$('#loginbox').css('left', winW/2-$('#loginbox').width()/2);
		
	$('#mask').show();

	_d("Show mask showLogin()");

	$('#loginbox').show();
	$('.errormsg_login').hide();

	var timestamp = new Date();

	var url = '/system-pages/login?t=' + timestamp.getTime();
	
	$('#loginbox').load(url, function(){

		FB.XFBML.parse(document.getElementById('facebookLoginBox'));

		if(email != null)
		{
			$('input[name="uid"]').val(email);
			$('input[name="password"]').focus();
		}

		$('.loginbutton').click(function () {
			clickLogin();	

			return false;
		});

		$('input[name="uid"]').focus(function () {
			$('.errormsg_login').html("");
		});

		$('input[name="password"]').focus(function () {
			$('.errormsg_login').html("");
		});
		
		$('input[name="password"], input[name="uid"]').keypress(function(event) {
			  if (event.which == '13') {

    			 event.preventDefault();
				 clickLogin();
			   }
		});

		$('#loginbox .closeLogin').click(function () {
			$('#mask').hide();
			$('#loginbox').hide();
		});

		$(".forgotpasswordbutton").click(function () {
			$('#loginbox').hide();
			showForgottenPassword();

			return false;
		});

		$('.registerbutton').click(function () {
			clickRegister();

			return false;
		});

		$('input[name="firstname"], input[name="lastname"], input[name="email"], input[name="email2"] ').keypress(function(event) {
			
			  if (event.which == '13') {
				  event.preventDefault();		
				 clickRegister();
			   }
		});

		//if mask is clicked
		$('#mask').click(function () {
			$(this).hide();
			$('#loginbox').hide();
		});

		$('#email').focus(function() {
			$('#emaillabel').removeClass('formerror');
			$('#email').removeClass('formerrorinput');
		});

		$('#email2').focus(function() {
			$('#email2label').removeClass('formerror');
			$('#email2').removeClass('formerrorinput');
		});

		$('#firstname').focus(function() {
			$('#firstnamelabel').removeClass('formerror');
			$('#firstname').removeClass('formerrorinput');
		});

		$('#lastname').focus(function() {
			$('#lastnamelabel').removeClass('formerror');
			$('#lastname').removeClass('formerrorinput');
		});

		Cufon.replace('#loginbox h1, #loginbox h2');
	});

	$('#logout').click(function () {
		
		logout();

		/*
		if(logout())
		{
			if(refresh != null && refresh == true)
			{
				window.location.reload();
			}

			else
			{
				$('#loginstatus').hide();	
				$('#mask').hide();
				showLogin();		
			}
		}*/

		return false;
	});
}

function clickRegister()
{
	var email = $('input[name="email"]').val();
	var email2 = $('input[name="email2"]').val();
	var firstname = $('input[name="firstname"]').val();
	var lastname = $('input[name="lastname"]').val();

	var returnValue = register(email, email2, firstname, lastname);

	if(returnValue == 'created')
	{
		resetRegisterForm();

		showConfirmation('Hei ' + firstname + ', velkommen som bruker p&aring; www.tine.no. En e-post med ditt passord er sendt til <b>' + email + '</b>', email);
	}

	else
	{
		errorRegisterPost(returnValue);
	}

	return false;
}

function clickLogin()
{
	var uid = $('input[name="uid"]').val();
	var password = $('input[name="password"]').val();

	if(login(uid, password))
	{
		updateMyTINE();
		hideLogin();
	}

	else
	{
		$('.errormsg_login').html("Feil e-post eller passord").show();
	}

	return false;
}

function showForgottenPassword()
{
	//Get the screen height and width
	var maskHeight = $(document).height();
	var maskWidth = $(window).width();

	//Set heigth and width to mask to fill up the whole screen
	$('#mask').css({'width':maskWidth,'height':maskHeight});

	//Get the window height and width
	var winH = $(window).height();
	var winW = $(window).width();
	  
	$('body').append("<div id='forgottenpasswordbox'></div>"); 

	var timestamp = new Date();

	var url = '/system-pages/account-forgotten-password?t=' + timestamp.getTime();

	$('#forgottenpasswordbox').load(url, function(){
		//Set the popup window to center
		$('#forgottenpasswordbox').css('top',  winH/2-$('#forgottenpasswordbox').height()/2);
		$('#forgottenpasswordbox').css('left', winW/2-$('#forgottenpasswordbox').width()/2);
			
		$('#mask').show();
	
		$('#forgottenpasswordbox').show();
		
		$('#forgottenpasswordbox .closeForgotPasswordUser').click(function () {
			hideForgottenPassword();
			showLogin();
		});

		//if mask is clicked
		$('#mask').click(function () {
			hideForgottenPassword();
			showLogin();
		});
		
		Cufon.replace('#forgottenpasswordbox h1, #forgottenpasswordbox h2');
	});
}

//Clicking the forgotten password button
$('.forgotpasswordbutton').live('click', function (event) {
	event.preventDefault();
	doForgottenPasswordClick()
});

$('input[name="forgotpasswordemail"]').live('keypress', function(event) {
	if (event.which == '13') {
		event.preventDefault();
		doForgottenPasswordClick();
	}
});

$('#forgotpasswordemail').live('focus', function () {
	$('#forgotpasswordemaillabel').removeClass('formerror');
	$('.errormsg_email').html("");
});

function doForgottenPasswordClick()
{
	$('.passwordupdated').html(""); //Reset status-text
			
	var email = $('#forgotpasswordemail').val();
	
	var okresetpw =  resetPw(email);
	
	if(okresetpw)
	{				
		$('.passwordupdated').html("E-post er sendt");
	}

	else
	{
		$('#forgotpasswordemaillabel').addClass('formerror');
		$('.errormsg_email').html("E-post er ikke registrert").show();
	}
}

function hideForgottenPassword()
{
	$('#mask').hide();
	$('#forgottenpasswordbox').hide();
}

function showUpdateUser()
{
	//Get the screen height and width
	var maskHeight = $(document).height();
	var maskWidth = $(window).width();

	//Set heigth and width to mask to fill up the whole screen
	$('#mask').css({'width':maskWidth,'height':maskHeight});

	//Get the window height and width
	var winH = $(window).height();
	var winW = $(window).width();
	  
	$('body').append("<div id='updateuserbox'></div>"); 

	var timestamp = new Date();

	var url = '/system-pages/account-update?t=' + timestamp.getTime();

	$('#updateuserbox').load(url, function(){
		//Set the popup window to center
		$('#updateuserbox').css('top',  winH/2-$('#updateuserbox').height()/2);
		$('#updateuserbox').css('left', winW/2-$('#updateuserbox').width()/2);
			
		$('#mask').show();
	
		$('#updateuserbox').show();
		
		$('#updateuserbox .closeUpdateUser').click(function () {
			hideUpdateUser();
		});

		//if mask is clicked
		$('#mask').click(function () {
			hideUpdateUser();
		});
		
		//Clicking the update button
		$('.userupdatebutton').click(function () {
			clickUpdateUser();

			return false;
		});
		
		$('input[name="updatefirstname"]').val(getLoggedInUser().firstname);
		$('input[name="updatefirstname"]').focus(function () {
			$('#updatefirstnamelabel').removeClass('formerror');
			$('.errormsg_firstname').html("");
			$('.accountupdated').hide();
			$('.errormsg').hide();
		});
		
		$('input[name="updatelastname"]').val(getLoggedInUser().lastname);
		$('input[name="updatelastname"]').focus(function () {
			$('#updatelastnamelabel').removeClass('formerror');
			$('.errormsg_lastname').html("");
			$('.accountupdated').hide();
			$('.errormsg').hide();
		});

		$('input[name="updatepassword"]').focus(function () {
			$('#updatepasswordlabel').removeClass('formerror');
			$('.errormsg_password').html("");
			$('.accountupdated').hide();
			$('.errormsg').hide();
		});
		
		$('input[name="updatepassword2"]').focus(function () {
			$('#updatepassword2label').removeClass('formerror');
			$('.errormsg_password2').html("");
			$('.accountupdated').hide();
			$('.errormsg').hide();
		});

		$('input[name="updatefirstname"], input[name="updatelastname"], input[name="updatepassword"], input[name="updatepassword2"]').keypress(function(event) {
			  if (event.which == '13') {
				  event.preventDefault();	

					clickUpdateUser();
			   }
		});
		
		$('input[name="updateemail"]').val(getLoggedInUser().email);

		Cufon.replace('#updateuserbox h1, #updateuserbox h2');
	});
}

function clickUpdateUser()
{
	$('.accountupdated').html(""); //Reset status-text
			
	var firstname = $('input[name="updatefirstname"]').val();
	var lastname = $('input[name="updatelastname"]').val();
	var password = $('input[name="updatepassword"]').val();
	var password2 = $('input[name="updatepassword2"]').val();

	var didupdate = updateUser(firstname, lastname, password, password2);
	
	if(didupdate)
	{				
		_gaq.push(['_trackEvent', 'Konto', 'Oppdatert konto']);

		$('.accountupdated').show();
		$('.accountupdated').html("Informasjon oppdatert");

		//Name is not updated...user must refresh page to see changes
	}
	
	return false;
}

function trim(str) {         
	return str.replace(/^\s+|\s+$/g,""); 
} 

function updateUser(firstname, lastname, password, password2)
{
	var returnvalue = false;

	if(password == null)
	{
		password = '';
	}

	if(password2 == null)
	{
		password2 = null;
	}

	jQuery.ajax({
		url:  '/userservice', 
		type: 'POST',
		data: ({'op': 'update', 'firstname': firstname, 'lastname': lastname, 'password' : password, 'password2': password2, 't': Math.random()}),
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result == 'ok')
			{		
				returnvalue = true;
				userGlobal = null;
			}	

			else
			{
				//Hacked in some error-validation from backend to prevet XSS
				if(result == 'firstname-error')
				{
					$('#updatefirstnamelabel').addClass('formerror');
					$('.errormsg_firstname').html("Ugyldig tegn.");
					$('.errormsg').show();
				}

				if(result == 'lastname-error')
				{
					$('#updatelastnamelabel').addClass('formerror');
					$('.errormsg_lastname').html("Ugyldig tegn.");
					$('.errormsg').show();
				}

				firstname = trim(firstname);
				lastname = trim(lastname);
				password = trim(password);
				password2 = trim(password2);
		
				if(firstname == '' || firstname.length > 25)
				{
					$('#updatefirstnamelabel').addClass('formerror');
					$('.errormsg_firstname').html("Ikke blank eller mer enn 25 tegn");
					$('.errormsg').show();
				}

				if(lastname == '' || lastname.length > 25)
				{
					$('#updatelastnamelabel').addClass('formerror');
					$('.errormsg_lastname').html("Ikke blank eller mer enn 25 tegn");
					$('.errormsg').show();
				}

				if(password == null || password.length == 0)
    			{
					//Do nothing, we don't need to update password
    			}
    			
				
				else if(password != null && (password.length < 6 || password.length > 25))
				{
					$('#updatepasswordlabel').addClass('formerror');
					$('.errormsg_password').html("M&aring; v&aelig;re mellom 6 og 25 tegn");
					$('.errormsg').show();
				}
				
				else if(password != null && password2 != null && password != password2)
				{
					$('#updatepasswordlabel').addClass('formerror');
					$('.errormsg_password').html("Passordene m&aring; v&aelig;re like");
					$('.errormsg').show();

					$('#updatepassword2label').addClass('formerror');
					//$('.errormsg_password2').html("Passordene m&aring; v&aelig;re like");
				}
			}
		}, 
		async:   false     
	});      

	return returnvalue;
}

function hideUpdateUser()
{
	$('#mask').hide();
	$('#updateuserbox').hide();
	updateMyTINE();
}

function showConfirmation(text, email)
{
	//Get the screen height and width
	var maskHeight = $(document).height();
	var maskWidth = $(window).width();

	//Set heigth and width to mask to fill up the whole screen
	$('#mask').css({'width':maskWidth,'height':maskHeight});

	//Get the window height and width
	var winH = $(window).height();
	var winW = $(window).width();
	 
	$('body').append("<div id='confirmbox'></div>"); 

	var timestamp = new Date();

	var url = '/system-pages/register-confirm?t=' + timestamp.getTime();

	$('#confirmbox').load(url, function(){
		//Set the popup window to center
		$('#confirmbox').css('top',  winH/2-$('#confirmbox').height()/2);
		$('#confirmbox').css('left', winW/2-$('#confirmbox').width()/2);
			
		$('.confirm-message').append(text);

		$('#mask').show();
		$('#loginbox').hide();
		$('#confirmbox').show();
		$('.confirmclosebutton').show();
		
		$('#confirmbox .closeConfirm').click(function () {
			$('#confirmbox').hide();
			showLogin(email);
		});

		$('#confirmbox .confirmclosebutton').click(function () {
			$('#confirmbox').hide();
			showLogin(email);

			return false;
		});

		//if mask is clicked
		$('#mask').click(function () {
			$(this).hide();
			$('#confirmbox').hide();
			showLogin(email);
		});
	});
}

function showSurvey()
{
	//Get the screen height and width
	var maskHeight = $(document).height();
	var maskWidth = $(window).width();

	//Set heigth and width to mask to fill up the whole screen
	$('#mask').css({'width':maskWidth,'height':maskHeight});

	//Get the window height and width
	var winH = $(window).height();
	var winW = $(window).width();
	 
	$('body').append("<div id='surveybox'><img src='http://webfiles.tine.no/tine.no_v2/images/logokarusell_close.png' alt='Lukk' class='closeSurvey'><p>Vi i TINE jobber med å videreutvikle oppskriftsidene på tine.no slik at opplevelsen blir bedre for deg som bruker av nettstedet. I dette arbeidet ønsker vi å bli litt bedre kjent med våre besøkende, og skaffe oss innsikt i hvordan du bruker våre oppskriftstjenester, hva du eventuelt savner og hvordan vi best mulig kan hjelpe deg.</p><br/><p>Undersøkelsen tar ca. 7-8 minutter å besvare og vi vil sette stor pris på dine tilbakemeldinger. Alle som deltar er med i trekningen av matnyttige premier.</p><br/><p>Har du lyst å delta på vår <a href='http://survey.euro.confirmit.com/wix/p797469321.aspx'>undersøkelse</a>?</p></div>"); 

	//Set the popup window to center
	$('#surveybox').css('top',  winH/2-$('#surveybox').height()/2);
	$('#surveybox').css('left', winW/2-$('#surveybox').width()/2);
		
	$('#mask').show();
	$('#surveybox').show();
	$('.confirmclosebutton').show();
	
	$('#surveybox .closeSurvey').click(function () {
		$('#surveybox').hide();
		$('#mask').hide();
		
	});

	//if mask is clicked
	$('#mask').click(function () {
		$(this).hide();
		$('#surveybox').hide();
	});

	//GA Tracking
	_gaq.push(['_trackEvent', 'Survey', 'Norstat']);

}



function isLoggedIn()
{
	var returnvalue = false;

	jQuery.ajax({
		url:  '/system-pages/userservice', 
		success: function(xml) {		
	
			var email  = $("email", xml).text();
		
			if(email != '')
			{		
				returnvalue = true;
			}	
		}, 
		async:   false     
	});          

	return returnvalue;
}

function login(uid, password)
{
	var returnvalue = false;
	
	jQuery.ajax({
		url:  '/userservice', 
		type: 'POST', 
		data: ({'uid': uid, 'password': password, 'op': 'login', 't': Math.random()}),
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result != '' && result != 'error')
			{		
				returnvalue = true;

				_gaq.push(['_trackEvent', 'Logget inn', 'Ok', 'Form']);

				window.location.hash = "#mypage";

				window.location.reload();
			}	

			else
			{
				_gaq.push(['_trackEvent',  'Logget inn', 'Feil']);
			}
		}, 
		async:   false     
	});     
		
	return returnvalue; 
}

function logout()
{
	var returnvalue = false;
	
	jQuery.ajax({
		url:  '/userservice', 
		data: ({'op': 'logout', 't': Math.random()}),
		success: function(xml) {		
	
			var result  = $("result", xml).text();
			
			if(result != '')
			{		
				returnvalue = true;
			}	
		}, 
		async:   false     
	});      

	userGlobal = false;

	//FB.logout();
	FB.api({
		method: 'Auth.revokeAuthorization'
	}, function(response){
		
		if (returnvalue) {
			if (supportsSessionStorage()) {
				sessionStorage.setItem(cookieNameKokebokSynced, null);
			} else {
				$.cookie(cookieNameKokebokSynced, null);
			}
			syncCookieAndDb(false);
		}
		
		_gaq.push(['_trackEvent', 'Konto', 'Logget ut']);

		window.location.hash = "#mypage";

		window.location.reload();
		
	});

//	return returnvalue; 
	

}

function getLoggedInUser()
{
	var returnvalue = userGlobal;

	if(returnvalue == null)
	{
		jQuery.ajax({
			url:  '/system-pages/userservice', 
			data: ({'t': Math.random()}),
			success: function(xml) {		
				
				var email  = $("email", xml).text();
				var firstname  = $("firstname", xml).text();
				var lastname  = $("surname", xml).text();

				if(firstname == "") {
					firstname  = $("first-name", xml).text();
				}

				if(lastname == "") {
					lastname  = $("last-name", xml).text();
				}

				if(email != null && email != '')
				{
					returnvalue = {
						'email': email, 
						'firstname': firstname,
						'lastname' : lastname
					};

					userGlobal = returnvalue;
				}

				else
				{
					userGlobal = false;
				}

			}, 
			async:   false     
		});          
	}

	return userGlobal;
}

function addRecipeVisit(recipeid)
{
	jQuery.ajax({
		url:  '/recipe/visit/add/' + recipeid  + '/', 
		data: ({'t': Math.random()}),
		success: function(xml) {		
		}, 
		async:  true     
	});          
}

function getUserToken()
{
	var returnvalue = currentUserToken;

	if(currentUserToken == null)
	{
		jQuery.ajax({
			url:  '/userservice', 
			data: ({'op': 'token', 't': Math.random()}),
			success: function(xml) {		
		
				var result  = $("result", xml).text();
			
				if(result != '' && result != 'error')
				{		
					returnvalue = result;
					currentUserToken = returnvalue;
				}	

				else
				{
					currentUserToken = false;
				}
			}, 
			async:   false     
		}); 
	}

	return returnvalue;
}

function resetPw(email)
{
	var returnvalue = false;

	jQuery.ajax({
		url:  '/userservice', 
		data: ({'op': 'resetpw', 'email': email, 't': Math.random()}),
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result == 'ok')
			{		
				returnvalue = true;

				_gaq.push(['_trackEvent', 'Konto', 'Reset Passord']);
			}	
		}, 
		async:   false     
	});      

	return returnvalue;
}

function register(email, email2, firstname, lastname)
{
	var returnvalue = new Array();

	jQuery.ajax({
		url:  '/userservice', 
		type: 'POST',
		data: ({'op': 'register', 'email': email, 'email2': email2, 'firstname': firstname, 'lastname': lastname, 't': Math.random()}),
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result == 'invalid')
			{		
				var errors  = $("errors > error", xml);

				for(i = 0; i < errors.length; i++) 
				{
					var name = $("name", errors[i]).text();	
					var value = $("value",errors[i]).text();	

					var error = {'name': name, 'value': value};

					returnvalue.push(error);
				}
			}	

			else
			{
				_gaq.push(['_trackEvent', 'Konto', 'Registrert']);

				returnvalue = result;
			}
		}, 
		async:   false     
	});      

	return returnvalue;
}

function getMenuPlansByEmail(email)
{
	var menuplans = new Array();

	currentUserToken = getUserToken();

	jQuery.ajax({
		url:  '/menuplan/' + email, 
		data: ({'token': currentUserToken, 't': Math.random() }),
		success: function(xml) {		
	
			var returnxml  = $("menuplan", xml);
		
			for(i = 0; i < returnxml.length; i++) {
				var name = $("name", returnxml[i]).text();
				var id = $("id", returnxml[i]).text();
				var data = $("data", returnxml[i]).text();
				var created = $("created", returnxml[i]).text();
				var menuplan = {'name': name, 'data': data, 'id': id, 'created': created};

				menuplans.push(menuplan);
			}
		}, 
		async:   false     
	});  

	return menuplans;
}

function addMenuPlanOnServer(email, name, data)
{
	var returnvalue;

	if(currentUserToken == "") {
		currentUserToken = getUserToken();
	}

	jQuery.ajax({
		url:  '/menuplan/' + email, 
		data: ({'token': currentUserToken, 'name': name, 'data': data}),
		type: 'POST', 
		success: function(xml) {	
			if($("errors", xml).length == 0) {
				var result  = $("status", xml);
				returnvalue = {
					'success': true,
					'id': result.attr("id"),
					'message': result.text()
				};
			} else {
				var error = $("error", xml);
				returnvalue = {
					'success': false,
					'source': $("name", error).text(),
					'error': $("value", error).text()
				};
			}
		}, 
		async: false     
	});  

	return returnvalue;
}

function updateMenuPlanOnServer(email, id, name, data)
{
	var returnvalue;

	if(currentUserToken == "") {
		currentUserToken = getUserToken();
	}

	jQuery.ajax({
		url:  '/menuplan/' + email, 
		data: ({'token': currentUserToken, 'name': name, 'data': data, 'menuplanid': id}),
		type: 'POST', 
		success: function(xml) {		
			if($("errors", xml).length == 0) {
				var result  = $("status", xml);
				returnvalue = {
					'success': true,
					'id': result.attr("id"),
					'message': result.text()
				};
			} else {
				var error = $("error", xml);
				returnvalue = {
					'success': false,
					'source': $("name", error).text(),
					'error': $("value", error).text()
				};
			}
		}, 
		async:   false     
	});  

	return returnvalue;
}

function removeMenuPlan(email, id)
{
	var returnvalue;

	if(currentUserToken == "") {
		currentUserToken = getUserToken();
	}

	jQuery.ajax({
		url:  '/menuplan/remove/' + email + '/' + id, 
		data: ({'token': currentUserToken, 'email': name, 'id': id}),
		type: 'POST', 
		success: function(xml) {		
	
			var returnxml  = $("status", xml);
		}, 
		async:   false     
	});  

	return returnvalue;
}

function resetRegisterForm()
{
	 $("#registerform").find(':input').each(function() {  

		switch(this.type) {  

            case 'password':  
            case 'select-multiple':  
            case 'select-one':  
            case 'text':  
            case 'textarea':  

                $(this).val('');  

                 break;  
            case 'checkbox':  
            case 'radio':  
				this.checked = false;  
			}  
		});  

		resetRegisterErrors();
}

function resetRegisterErrors()
{
	$('#firstnamelabel').removeClass('formerror');
	$('#lastnamelabel').removeClass('formerror');
	$('#emaillabel').removeClass('formerror');
	$('#email2label').removeClass('formerror');

	$('#firstname').removeClass('formerrorinput');
	$('#lastname').removeClass('formerrorinput');
	$('#email').removeClass('formerrorinput');
	$('#email2').removeClass('formerrorinput');

	$('#registeduplicate').hide();
}


function errorRegisterPost(errors)
{	
	for(i = 0; i < errors.length; i++)
	{
		var name = errors[i].name;
		var value = errors[i].value;

		if(name == "email" && value == "length")
		{
			$('#emaillabel').addClass('formerror');
			$('#email').addClass('formerrorinput');
		}

		if(name == "email" && value == "invalid")
		{
			$('#emaillabel').addClass('formerror');
			$('#email').addClass('formerrorinput');
		}

		if(name == "email" && value == "nomatch")
		{
			$('#emaillabel').addClass('formerror');
			$('#email2label').addClass('formerror');
			$('#email').addClass('formerrorinput');
			$('#email2').addClass('formerrorinput');
		}

		if(name == 'firstname' && value == 'length')
		{
			$('#firstnamelabel').addClass('formerror');
			$('#firstname').addClass('formerrorinput');
		}

		if(name == 'firstname' && value == 'invalid')
		{
			$('#firstnamelabel').addClass('formerror');
			$('#firstname').addClass('formerrorinput');
		}

		if(name == 'lastname' && value == 'length')
		{
			$('#lastnamelabel').addClass('formerror');
			$('#lastname').addClass('formerrorinput');
		}

		if(name == 'lastname' && value == 'invalid')
		{
			$('#lastnamelabel').addClass('formerror');
			$('#lastname').addClass('formerrorinput');
		}

		if(errors == 'duplicate')
		{
			$('#email').addClass('formerrorinput');
			$('#email2').addClass('formerrorinput');

			$('#registeduplicate').html("E-post allerede registrert");
			$('#registeduplicate').show();

		}

		if(errors == 'error-invalid-emai-tine.no')
		{
			$('#email').addClass('formerrorinput');
			$('#email2').addClass('formerrorinput');

			$('#registeduplicate').html("@tine.no er ikke gyldig som e-post");
			$('#registeduplicate').show();
		}
	}
}
 
function initializeGoogleMap(defaultPlant, elementID, linksInMap){

	var infoWindow = new google.maps.InfoWindow();

	var lat = 65.330178;
	var lng = 17.094727;
	var zoom = 5; //Used for large overview map
	var defaultZoomForPlants = 10;

	var plants = getPlantList();

	//alert("plants: " + plants.length);

	//Find plant we want to zoom in on
	if(defaultPlant != null)
	{
		var plant = null;

		for(i = 0; i < plants.length; i++)
		{
			var p = plants[i];
			
			if(p.key == defaultPlant)
			{
				plant = p;
			}
		}
	
		if(plant != null)
		{
			lat = Number(plant.lat);
			lng = Number(plant.lng);
			
			if(plant.zoom != null && plant.zoom != 0)
			{
				zoom = Number(plant.zoom);
			}

			else
			{
				zoom = defaultZoomForPlants;
			}
		}
	}

	//alert("Lat: " + lat + " Lng: " + lng + " Zoom: " + zoom);

	var myLatlng = new google.maps.LatLng(lat, lng);
    var myOptions = {
      zoom: zoom,
      center: myLatlng,
	  maxZoom: 18, 
      mapTypeId: google.maps.MapTypeId.HYBRID
    };
    
	var map = new google.maps.Map(document.getElementById(elementID), myOptions);

	var markers = []; 
	for(i = 0; i < plants.length; i++)
	{
		var plant = plants[i];
		
		if(plant.lat != null && plant.lng != null)
		{
			var marker = setMarkersOnGoogleMap(map, plant, infoWindow, linksInMap);
			markers.push(marker);
		}
	}
	
	/* Clustering markers */
	var mcOptions = {gridSize: 25, maxZoom: 18};
	var markerCluster = new MarkerClusterer(map, markers, mcOptions);

	google.maps.event.addListener(map, 'click',  function(){
			infoWindow.close();
		}
	);

}

function setMarkersOnGoogleMap(map, plant, infoWindow, linksInMap){
	  // Add markers to the map

	  // Marker sizes are expressed as a Size of X,Y
	  // where the origin of the image (0,0) is located
	  // in the top left of the image.

	  // Origins, anchor positions and coordinates of the marker
	  // increase in the X direction to the right and in
	  // the Y direction down.
	  
	  var imageUrl = "";

	if (plant.type == 'r') {
		imageUrl = "http://webfiles.tine.no/tine.no_v2/images/googleIconRed.png";
	} else if (plant.type == 'm') {
		imageUrl = "http://webfiles.tine.no/tine.no_v2/images/googleIconGreenM.png";
	} else if (plant.type == 't') {
		imageUrl = "http://webfiles.tine.no/tine.no_v2/images/googleIconGreenT.png";
	} else {
		imageUrl = "http://webfiles.tine.no/tine.no_v2/images/googleIconGreenS.png";
	}
	  
	  
	var image = new google.maps.MarkerImage(imageUrl,
		// This marker is 20 pixels wide by 32 pixels tall.
		new google.maps.Size(25, 28),
		// The origin for this image is 0,0.
		new google.maps.Point(0,0),
		// The anchor for this image is the base of the flagpole at 0,32.
		new google.maps.Point(0, 14)
	);
	  
  var shadow = new google.maps.MarkerImage('http://webfiles.tine.no/tine.no_v2/images/googleIconShadow.png',
	// The shadow image is larger in the horizontal dimension
	// while the position and offset are the same as for the main image.
      new google.maps.Size(27, 12),
      new google.maps.Point(0,0),
      new google.maps.Point(-12,-2)
	);
      // Shapes define the clickable region of the icon.
      // The type defines an HTML &lt;area&gt; element 'poly' which
      // traces out a polygon as a series of X,Y points. The final
      // coordinate closes the poly by connecting to the first
      // coordinate.
  var shape = {
      coord: [1, 1, 1, 50, 50, 22, 22 , 1],
      type: 'poly'
  };
 
	var myLatLng = new google.maps.LatLng(plant.lat, plant.lng);
   
	
	var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
		icon: image,
		shadow: shadow,
        title: plant.name

    });

	var imageTag = "";

	if (!linksInMap) {
		if(plant.imagekey != null) {
			imageTag = "<a href='" + plant.url + "'><img src='http://www.tine.no/imageresize/" + plant.imagekey + "_220_90.jpg' alt='" + plant.name + "'/></a>";
		}
		var address = plant.address.replace('\n', '<br />');
		var html = 	"<div>" + imageTag +
						"<div class='mapTable'>" +
							"<div class='row'>" +
							
								"<div class='cell first'>Telefon:</div>" +
								"<div class='cell'>" + plant.phone + "</div>" +
							"</div>" +
							"<div class='row'>" +
								"<div class='cell first'>Adresse:</div>" +
								"<div class='cell'>" + address + "</div>" +
							"</div>" +
						"</div>" + 
						"<a href='" + plant.url + "'>G&aring; til " + plant.name + "</a>" +
					"</div>";
		//var contentString = '<div>' + imageTag + '<br/>Telefon: <b>' + plant.phone + '</b><br/>Adresse: ' + address + '<br/><a href="' + plant.url + '">G&aring; til meieriet</a></div>';
		var contentString = html;
	} else {
		google.maps.event.addListener(marker, 'click', function() {
			window.location.href = plant.url;
		});
	}
	
	
	google.maps.event.addListener(marker, 'click', function() {
	  
	  //alert("LATLNG: " + myLatLng);
	  infoWindow.setContent(contentString);
	  infoWindow.open(map,marker);
    });
	
	return marker;
}

function getPlantList()
{
	var plants = new Array();

	jQuery.ajax({
		url:  '/system-pages/plant-xml/',
		data: ({'t': Math.random()}),
		success: function(xml) {		
	
			var returnxml  = $("plant", xml);
		
			for(i = 0; i < returnxml.length; i++) {
				var imagekey 	= $("imagekey", returnxml[i]).text();
				var name 		= $("name", returnxml[i]).text();
				var lat 				= $("lat", returnxml[i]).text();
				var lng 			= $("lng", returnxml[i]).text();
				var url 				= $("url", returnxml[i]).text();
				var phone 		= $("phone", returnxml[i]).text();
				var address 		= $("adr address", returnxml[i]).text();
				var zip 			= $("adr zipcode", returnxml[i]).text();
				var place 			= $("adr place", returnxml[i]).text();
				var key 			= $("key", returnxml[i]).text();
				var zoom 		= $("zoom", returnxml[i]).text();
				var regionoffice = $("regionoffice", returnxml[i]).text();
				var type 			= $("type", returnxml[i]).text();
				
				address = address + "<br />" + zip + " " + place;
				
				var plant = {'name': name, 'imagekey': imagekey, 'lat': lat, 'lng': lng, 'url': url, 'key': key, 'zoom': zoom, 'regionoffice': regionoffice, 'phone': phone, 'address': address, 'type': type};

				plants.push(plant);
			}
		}, 
		async:   false     
	});  

	return plants;	
}

function getUsersGroups()
{
	var groups = new Array();
	
	jQuery.ajax({
		url:  '/userservice', 
		data: ({'op': 'usercontext', 't': Math.random()}),
		success: function(xml) {		
	
			var returnxml  = $("group", xml);
		
			for(i = 0; i < returnxml.length; i++) {
				var name = $(returnxml[i]).attr("name");
				var key = $(returnxml[i]).attr("key");

				var group = {'name': name, 'key': key};

				groups.push(group);
			}
		}, 
		async:   false     
	});      

	return groups;
}

function getUsersApsisGroups()
{
	var groups = new Array();
	
	jQuery.ajax({
		url:  '/apsis', 
		cache: false,
		data: ({'op': 'listsubscriptionsforuser', 't': Math.random()}),
		success: function(xml) {		
			var lists  = $("subscription", xml);
		
			for(i = 0; i < lists.length; i++) {
				var name = $(lists[i]).attr("name");
				var key = $(lists[i]).attr("id");

				var group = {'name': name, 'key': key};

				groups.push(group);
			}
		}, 
		async:   false     
	});      

	return groups;
}

/* 
	Possible groups a user can join. This is checked serverside against a whiteliste so the user can't really change it
*/
function getGroups()
{
	var groups = new Array();

	var group_1 = {'name': 'Dagens oppskrift', 'key': '35B896E768D0E5092B1492FA5F3DE2C7DA9A2AA2'};

	groups.push(group_1);

	return groups;
}

function getApsisGroups()
{
	var groups = new Array();

	jQuery.ajax({
		'url': "/apsis",
		'data': ({ "op": "listsubscription" }),
		'cache': false,
		'success': function(xml) {
			var lists = $("subscription", xml);
			for(var i = 0; i < lists.length; i++) {
				groups.push({
					'name': $(lists[i]).attr('name'),
					'key': $(lists[i]).attr('id')
				});
			}
		},
		'async': false
	});

	return groups;
}

function joinGroup(groupkey, element)
{
	var returnvalue = false;
	
	jQuery.ajax({
		url:  '/userservice', 
		data: ({'op': 'joingroup', 'groupkey': groupkey}),
		cache: false,
		async : true,
		beforeSend : function() {
			$(element).after("<img src='http://webfiles.tine.no/tine.no_v2/images/image_loading.gif' alt='Laster'/>");
			$(element).hide();
		}, 
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result == 'ok')
			{		
				_gaq.push(['_trackEvent', 'Abonnement', '' + groupkey, 'Join']);

				returnvalue = true;
			}	
			showMySubscriptions();
		}
	});      
	return returnvalue;
}

function joinApsisGroup(groupkey, element)
{
	jQuery.ajax({
		url:  '/apsis', 
		data: ({'op': 'addsubscription', 'listid': groupkey}),
		cache: false,
		async : true,
		beforeSend : function() {
			$(element).after("<img src='http://webfiles.tine.no/tine.no_v2/images/image_loading.gif' alt='Laster'/>");
			$(element).hide();
		}, 
		success: function(xml) {		
	
			var result  = $("result", xml).text();
		
			if(result == 'ok')
			{		
				//_gaq.push(['_trackEvent', 'Abonnement', '' + groupkey, 'Join']);
				returnvalue = true;
			}	
			showMyApsisSubscriptions();
		}
	});
}

function leaveGroup(groupkey, element)
{
	var returnvalue = false;

	jQuery.ajax({
		url:  '/userservice', 
		data: ({'op': 'leavegroup', 'groupkey': groupkey, 't': Math.random()}),
		cache: false,
		async : true,
		beforeSend: function(){
			$(element).after("<img src='http://webfiles.tine.no/tine.no_v2/images/image_loading.gif' alt='Laster'/>");
			$(element).hide();
		},
		
		success: function(xml) {		
	
			var result  = $("result", xml).text();
			
			if(result == 'ok')
			{		
				_gaq.push(['_trackEvent', 'Abonnement', '' + groupkey, 'Leave']);

				returnvalue = true;
			}	
			showMySubscriptions();
		}  
	});      
	
	return returnvalue;
}

function leaveApsisGroup(groupkey, element)
{
	jQuery.ajax({
		url:  '/apsis', 
		data: ({ 'op': 'removesubscription', 'listid': groupkey }),
		cache: false,
		async : true,
		beforeSend: function(){
			$(element).after("<img src='http://webfiles.tine.no/tine.no_v2/images/image_loading.gif' alt='Laster'/>");
			$(element).hide();
		},
		success: function(xml) {		
			var result  = $("result", xml).text();
			
			if(result == 'ok')
			{		
//				_gaq.push(['_trackEvent', 'Abonnement', '' + groupkey, 'Leave']);
				returnvalue = true;
			}	
			showMyApsisSubscriptions();
		} 
	});
}

/*
Cufon.replace('.typeface-js', { hover: true });
Cufon.replace('h1,h2');
*/
Cufon.replace('.article h1, .recipetitle h1, .productfamily h1, .youtube h1, .theme h1, h1.subSiteHeader, .dilemma-list-item h1');
