/* start static */
/*
 var preloadpath = "/_ApoLayouts/img/icons/";
 jQuery.preloadImages = function() { for(var i = 0; i<arguments.length; i++) {jQuery("<img>").attr("src",preloadpath+arguments[i]);}}
 $.preloadImages("animation_update.gif","search_blue_anim.gif");
 
 var tb_pathToImage = "/_ApoLayouts/img/blank.gif"; // Thickbox preload image.
 */
var $load_img = $("<img class='loading_anim' src='/_ApoLayouts/img/icons/search_blue_anim.gif' alt='' />");
/* end static */
// add static functions 

// identify IE6
var isMsIe6 = $.browser.msie && $.browser.version == 6;

// stopp IE flickering.
if (isMsIe6) {
	try { document.execCommand("BackgroundImageCache", false, true); }
	catch (e) {}
}

$(function() {
	$('div#body div.theme-xmas h2.category_title').wrapInner(document.createElement("span"));

	var isAdmin = ($('div.adminContent').size() > 0);
	
	if ($.browser.msie) {
		$('option:selected').attr('_selected', 'selected'); //IE does not include selected-attribute in outerHTML, so print-function fails to select correct option
	}
	
	if ($('div.adminmenu').size() > 0) {
		$('div.adminmenu').click(function(e,load) {
			var target = e.target;
			if (target.tagName.toLowerCase() == 'a') {
				return true;
			}
			else if(target.tagName.toLowerCase() == 'ul' && $('div.adminmenu ul:eq(0)').get(0) != target) {
				$(target).toggleClass('open');
				if(isMsIe6) {
					$(target).children('li').toggle();
				}
			}
			return false;
		});
		$('div.adminmenu li.active a:eq(0)').parents('ul').each(function(i,el) {
			if($(el).parents('div.adminmenu').size() > 0 && $('div.adminmenu ul:eq(0)').get(0) != el) {
				$(this).addClass('open');
				if(isMsIe6) {
					$(this).children('li').show();
				}
			}
		});
	}
	if (!isAdmin && isMsIe6) {
		$('div.pratlada').each(function() {
			var width = $(this).width();
			if (width % 2 != 0) {
				$(this).width(width - 1);
			}
			var height = $(this).height();
			if (height % 2 != 0) {
				$(this).height(height + 1);
			}
		});
	}
	
	$('div.error_summary:not(div.show_error)').hide();
	
	/* Useless? moved to javascript.css
	 $("div.delivery_options, div.payment_options, div.initHidden").addClass("options_js_init");
	 */
		
	/*$('div.outlinks a, div.puff065 div.colholder p.buttons a.thickbox, div.generic_template p.btnlinks a').click(function() {
		$('#TB_window').css({
			background: 'transparent',
			border: '0'
		});
		return false;
	});*/
	
	/* Print page */
	$("ul.toolbox a.print").click(function() {
		$('#TB_window').css({
			background: 'none',
			border: 'none'
		});
		$('#TB_overlay').hide();
	});
	
    $('#searchInput_1').keydown(function(e) {
        if(e.keyCode == 13) {
	        return false;
        }
        }).keyup(function(e) {
        if(e.keyCode == 13) {
	        $('a.search-delivery-button-plus').trigger('click',[true]);
	        return false;
        }
    });	
	
	// Useless moved to javascript.css
	//$('.hidden').hide();
	
	/* Redundant code block
	 $('div.puff088 input.submit').hide();
	 $('div.puff088 select').change(function()
	 {
	 var myWord = $(this)[0];
	 var selectValue = myWord.options[myWord.selectedIndex].value;
	 var ajaxUrl = $(this).attr('class');
	 
	 if(selectValue == 'clear')
	 {
	 $.get(ajaxUrl + '?id=clear');
	 $(this).parents('.puff088').find('div.mid').attr('class', 'mid_bot');
	 
	 return false;
	 }
	 
	 $.get(ajaxUrl + '?id=' + selectValue);
	 
	 $(this).parents('.puff088').find('div.mid_bot').attr('class', 'mid');
	 });
	 */
	/* Useless?
	 $('.puff084 .expander').click(function() {
	 $(this).parents('.mid').find('.form_area').slideDown('slow');
	 $(this).parents('.mid').find('.contracter').css('display', 'block');
	 $(this).hide();
	 
	 return false;
	 });
	 $('.puff084 .contracter').click(function() {
	 $(this).parents('.mid').find('.form_area').slideUp('slow');
	 $(this).parents('.mid').find('.expander').css('display', 'block');
	 $(this).hide();
	 
	 return false;
	 });
	 $('.puff084 div.form_area').hide();
	 $('.puff084 p.hidden').show();
	 */
	/* Self test */
	/* Ej implementerad hos Know IT än
	$('div.selftest ul li a').livequery('click', function() {
		var idSelector = $(this).parents('div.selftest').attr('id');
		$.get($(this).parents('div.selftest:eq(0)').find('ul:eq(0)').metadata().ajaxUrl + '?idSelector=' + idSelector + '&choice=' + $(this).attr('rel'));
		
		return false;
	});
	*/
	
	/* Useless?
	$('div.puff076 div.dynamic_content').show();
	$('div.puff076 a.no_js_link').hide();
	
	$("div.puff089 div.tab_section a").each(function() {
		$(this).attr('href', $(this).attr('href') + '&jsEnabled=true');
	});
	
	$('div.puff089 div.tab_section a').click(function() {
		$.get($(this).attr('href'));
		$('div.puff089 div.tab_section a').removeClass('active');
		$(this).addClass('active');
		return false;
	});
	*/
	// Köpknapp med ett input fält
	$("div.puff032 div.amountholder select.countMe").change(function() {
		var metadata = $(this.options[this.selectedIndex]).metadata();
		var right = $(this).parents('div.right');
		var priceholder = right.find('p.itemprice');
		var html = $.trim(priceholder.html()).toLowerCase();
		if(html.match(/<br ?\/?>/)) {
			html = html.substr(0,html.lastIndexOf('<br')) + "<br />(totalt " + metadata.price  + ")";
		}
		else {
			html += "<br />(totalt " + metadata.price  + ")";
		}
		priceholder.html(html);
		
		var a = right.find('a.buy');
		if(a.size() < 1) {
			a = right.find('a.btnbuyreplace');
		}
		if(a.size() < 1) {
			return;
		}
		var href = a.attr('href');
		if (href.indexOf('generika.aspx') >= 0) {
			var key = 'quantity';
			var value = $(this).val();
			var index = href.indexOf('?');
			if (index >= 0) {
				new RegExp('\\?.*(' + key + '=?([0-9]+)?)').exec(href);
				if (RegExp.$1) { //"key" redan i href, ersätt i så fall
					href = href.replace(RegExp.$1, key + '=' + value);
				}
				else { //annars lägg till
					href += '&' + key + '=' + value;
				}
			}
			else { //finns ingen query-string, lägg till
				href += '?' + key + '=' + value;
			}
			a.get(0).href = href;
		}
	});
	// Sökfältet
	$("#search").keydown(function(e) {
		if (e.keyCode == 13) {
			$("#topsearch-submit").click();
			return false;
		}
	});
	// Sökknapp
	/* Useless?
	$("#searchbubu").click(function() {
		$(document).trigger("search.submit");
		return false;
	});
	
	$(this).bind("search.submit", function() {
		$("#topsearch-submit").click();
	});
	*/
	$("#topsearch-submit").click(function() {
		$($.getReg('constants.formFieldsetId')).submit();
	});
	/*
	var ajaxprintSettings = {
		activation: 'toggle',
		attribute: 'href',
		cluetipClass: 'printlayer',
		width: 256,
		cursor: 'normal'
	};
	$("a.ajax-print").livequery(function() {
		$(this).cluetip(ajaxprintSettings);
	});
	*/
	$("a.ajax-tooltip").livequery(function() {
		// specify allowed classes
		var allowed = ['knowledge', 'interaction', 'information'];
		// set default fallback class
		var className = allowed[0];
		// save the scope
		//var $elem = $(this);
		// loop all allowed class names.
		for(var i=0,n=allowed.length;i<n;i++) {
			if($(this).hasClass(allowed[i])) {
				className = allwed[i];
			}
		}
		$(this).cluetip({
			attribute: 'rel',
			positionBy: 'fixed',
			onShow: function(elem) {
				elem.addClass(className);
			}
		});
	});
	$("a.ajax-tooltip").livequery('click', function() {
		return false;
	});

	$("a.ajax-tooltip-click").livequery(function() {
		var self = $(this);
		// specify allowed classes
		var allowed = ['default-click', 'inverted'];
		// set default fallback class
		var className = allowed[0];

		for(var i=0,n=allowed.length;i<n;i++) {
			if(self.hasClass(allowed[i])) {
				className = allowed[i];
			}
		}

		if (className == 'knowledge-inverted') {
			var positionBy = 'bottomTop';
		} else {
			var positionBy = 'fixed';
		}

		self.cluetip({
			activation: 'click',
			attribute: 'rel',
			positionBy: positionBy,
			closePosition: 'top',
			closeText: 'Stäng',
			sticky: true,
			topOffset: 0,
			onShow: function(elem) {
				elem.addClass(className);
				if (className == "knowledge-inverted") {
					// force the tooltip to be above - check if this cant be avoided somehow
					var layerOffset = elem.offset();
					var linkOffset = self.offset();
					if (layerOffset.top >= linkOffset.top) {
						var newTopOffset = parseInt(layerOffset.top) - (elem.height()+10); 
						elem.css({ top: newTopOffset });
					}
				}
			}
		});
	});
	$("a.ajax-tooltip-click").live('click', function() {
		return false;
	});

	/** "new" left menu */
	$("#leftmenu div.menu ul li span a.main:not(div.adminmenu a)").live('click', function() {
		var self = $(this);
		if (self.parents("li:first").hasClass('active')) {
			$("#left div.menu ul li").removeClass('active');
		} else {
			$("#left div.menu ul li").removeClass('active');
			self.parents("li:first").addClass('active');
		}
		return false;
	});

	/*
	$(this).bind("cluetip.close", function() {
		var $cluetipOuter = $("#cluetip-outer");
		$cluetipOuter.parent().hide().removeClass().end().children().empty();
	});
	$("div.cluetip-printlayer div.toolmid div.printlayer-contents a.closelayer").livequery(function() {
		$(this).click(function() {
			$(document).trigger("cluetip.close");
			return false;
		});
	});
	$("ul.printlayer_choice li a").livequery(function() {
		var o = $(this);
		var div = o.attr("rel").split(" ");
		$(this).hover(function() {
			var printstring = "";
			var counter = 0;
			$.each(div, function(key, value) {
				if (counter == 0) {
					printstring = printstring + value;
				}
				else {
					printstring = printstring + "_" + value;
				}
				counter++;
			});
			$("div.printpreview img:visible:first").hide();
			$("div.printpreview img." + printstring).show();
		}, function() {
			$("div.printpreview img:visible:first").hide();
			$("div.printpreview img.fallback").show();
			/* Hilight the select layer, the real div
			 var div = value.split("_");
			 $("div." + div[1]).css("border", "none");
			 
		});
	});
	$("ul.printlayer_choice li a, a[rel=print]").livequery("click", function() {*/
	
	$("a[rel=print]").livequery("click", function() {
		var url = $(this).attr("href");
		if (!url) {
			return false;
		}
		
		if ($(this).hasClass('options')) {
			var parent = $(this).parent();
			if (parent.css('position') == 'static') {
				parent.css('position', 'relative');
			}
			var div = $(this).next('div.print-options').show();
			div.find('a.close2').click(function() {
				$(this).parents('div.print-options').hide();
				return false;
			});
			return false;
		}
		
		if ($.browser.msie) {
			$('option:selected').attr('_selected', 'selected'); //IE does not include selected-attribute in outerHTML, so print-function fails to select correct option
		}
		
		var printTarget;
		var data = $(this).metadata();
		if (data.printTarget) {
			printTarget = $(data.printTarget);
		}
		else {
			var targets = ['div.printTarget', 'div#product-layer', 'div[class*=puff]', 'div.col1, div.col2', 'div.colwrap', 'div#body'];
			var i = 0;
			var once = true;
			do {
				if (!once) {
					printTarget = $(this).parents(targets[i] + ':not(div.puff005, div.puff040)').get(0);
				}
				else {
					printTarget = $(this).siblings(targets[i] + ':not(div.puff005, div.puff040)').get(0);
					once = false;
					i--;
				}
				i++;
			}
			while (!printTarget && i < targets.length);
		}
		
		if (!printTarget) {
			return false;
		}
		if($(printTarget).attr('id') == 'product-layer' && !$(printTarget).hasClass('printTarget')) { //Finns ibland TVÅ(!) #product-layer, så print-sidan vet inte vilken som är rätt. sätt printTarget-klassen explicit och som filtreras i print-sidan
			$(printTarget).addClass('printTarget');
		}
		var includes = {
			pre: [],
			post: []
		};
		$('.printPreInclude').each(function() {
			includes.pre.push($(this).uniqueId().attr('id'));
		});
		$('.printPostInclude').each(function() {
			includes.post.push($(this).uniqueId().attr('id'));
		});
		url += '?id=' + encodeURIComponent($(printTarget).uniqueId().attr('id')); //Generera unikt ID, finns ett så används det
		if(includes.pre.length > 0) {
			url += '&preincludes=' + encodeURIComponent(includes.pre.join(','));
		}
		if(includes.post.length > 0) {
			url += '&postincludes=' + encodeURIComponent(includes.post.join(','));
		}
		url += '&src=' + encodeURIComponent(location.href);
		url += '&lastmod=' + encodeURIComponent(document.lastModified);
		window.open(url, 'printwindow', 'toolbar=no,location=no,directories=no,width=900,height=500,scrollbars=yes,menubar=no,resizable=yes', true).focus();
		//window.open(url, 'printwindow', 'toolbar=yes,location=yes,directories=yes,width=900,height=500,scrollbars=yes,menubar=yes,resizable=yes', true).focus();
		return false;
	});
	
	/* Useless?
	 $("div.tabs").find("li:last").livequery(function() {
	 var o = $("div.tabs").find("li:last");
	 o.each(function() {
	 //o.addClass("no-name");
	 });
	 });
	 */
	//$("#leftmenu li.active").prev().addClass("prev"); // Useless?
	// Hover support for IE
	if (isMsIe6) {
		$('#leftmenu li').not($('#leftmenu div.adminmenu li, li.active')).hover(function() {
			$(this).addClass('hover');
		}, function() {
			$(this).removeClass('hover');
		});
		
		/* Useless?
		$("#nav-top li").hover(function() {
			$(this).not(".active").not(".search").attr("class", "hover");
		}, function() {
			$(this).removeClass("hover");
		});
		*/
	}
	
	// Fix menu css when shoppingcart exists
	if ($("#receiptslip").size() > 0) {
		if ($("#leftmenu div.lmsb div.lmtop").size() > 0) {
			$("#leftmenu div.lmtop").css("height", 104);
		} else {
			$("#leftmenu div.lmtop").css("height", 15);
		}
		$('div.adminmenu').redraw();
	}
	
	// To clear inputs add the fnclearfield class to the input field
	$("input.fnclearfield").focus(function() {
		if (this.value == this.defaultValue) {
			this.value = "";
		}
	}).blur(function() {
		if (!this.value.length) {
			this.value = this.defaultValue;
		}
	});
	
	/* Useless?
	$(".puff003 div[id^=faq-] a").toggle(function() {
		$(this).addClass("minus").parent().find("p").show();
	}, function() {
		$(this).removeClass("minus").parent().find("p").hide();
	});
	
	$(".main .main_left .header ul li a:not(.active) img").hover(function() {
		var set_to = $(this).attr("src");
		set_to = set_to.substr(0, set_to.length - 4) + "_h.gif";
		$(this).attr("src", set_to);
	}, function() {
		var set_to = $(this).attr("src");
		set_to = set_to.substr(0, set_to.length - 6) + ".gif";
		$(this).attr("src", set_to);
	});
	
	$("form div.submit-search").livequery('click', function() {
		$(this).parents("form").submit();
	});
	
	$("form#searchForm").submit(function() {
		$("#search-submit div.load_icon img").show();
		$("div#searchResult").html("<ul>&nbsp;</ul>");
		searchApotek($("input#searchField").attr("value"));
		return false;
	})
	*/
	$('select.ajax-select').livequery('change', function() {
		var d = $(this).find(':selected').metadata();
		if (d && d.href) {
			$.get(d.href);
		}
		return false;
	});
	
	// Hide cart contents
	$('div.shop div.cart_contents').hide();
	buyBtn();
	
	/* Useless? Duplicate of function eventToggleVarukorg? In which case its useless, as eventToggleVarukorg is run around line 987
	var shop_error = $("div.shop_error div.error p.error a.expand");
	if (shop_error.size() > 0) {
		$("div.shop_error div.error p.error a.expand").show();
	}
	
	// Optimize
	/* Useless? Duplicate of function eventToggleVarukorg? In which case its useless, as eventToggleVarukorg is run around line 987
	$("div.shop:not(.shop_error) a[class^=expand-]").click(function() {
		if ($(this).hasClass('collapse')) {
			$(this).find("a.collapse").each(function() { // <--- this will NEVER be true. this points to a[class^=expand-]...and that tag can never own another <a> - Useless? /Michael
				$(this).removeClass("collapse");
				var currenttitle = $(this).html();
				var fliptitle = $(this).siblings("a.fliptitle").html();
				$(this).siblings("a.fliptitle").html(currenttitle);
				$(this).html(fliptitle);
			});
			$(this).parents().find("div.row").removeClass("cart_open");
			$(this).parents().find("div.cart_contents").hide();
		}
		else {
			$(this).find("a.expand").each(function() {
				$(this).addClass("collapse");
				var currenttitle = $(this).html();
				var fliptitle = $(this).siblings("a.fliptitle").html();
				$(this).siblings("a.fliptitle").html(currenttitle);
				$(this).html(fliptitle);
			});
			$(this).parents().find("div.row").addClass("cart_open");
			$(this).parents().find("div.cart_contents").show();
		}
	});
	// Optimize
	$("div.shop_error a[class^=expand-]").click(function() {
		if ($(this).hasClass("collapse")) {
			$(this).find("a.collapse").each(function() {
				$(this).removeClass("collapse");
				var currenttitle = $(this).html();
				var fliptitle = $(this).siblings("a.fliptitle").html();
				$(this).siblings("a.fliptitle").html(currenttitle);
				$(this).html(fliptitle);
			});
			$(this).parents().find("div.row").removeClass("cart_open");
			$(this).parents().find("div.shop_error").removeClass("shop_error_expanded");
			$(this).parents().find("div.shop_error div.bot div.error").show();
			$(this).parents().find("div.cart_contents").hide();
		}
		else {
		
			$(this).find("a.expand").each(function() {
				$(this).addClass("collapse");
				var currenttitle = $(this).html();
				var fliptitle = $(this).siblings("a.fliptitle").html();
				$(this).siblings("a.fliptitle").html(currenttitle);
				$(this).html(fliptitle);
			});
			$(this).parents().find("div.row").addClass("cart_open");
			$(this).parents().find("div.shop_error").addClass("shop_error_expanded");
			$(this).parents().find("div.shop_error div.bot div.error").hide();
			$(this).parents().find("div.cart_contents").show();
		}
	});
	*/
	
	/* Commented since it doesn't work in IE6, references in HTML have been removed /Nima
	$("input.showinputrow").change(function() {
		$parent = $(this).parent().parent().parent().parent().find("." + $(this).metadata().inputrow);
		if ($parent.hasClass("show")) {
			$parent.removeClass("show");
			$parent.slideUp("fast");
		}
		else {
			$parent.addClass("show");
			$parent.slideDown("fast");
		}
	});
	*/
	//?$("div.puff026 li div.answer, div.puff054 li div.answer, div.puff071 li div.answer").hide();
	
	/* Useless? Kan ersättas av .expandable
	$("div.puff026 li a, div.puff054 li a, div.puff071 li a, div.puff011 div.tab-om-e-leg ul.faq-list li a").livequery('click', function() {
		var o = $(this);
		if (o.hasClass("collapse")) {
			o.removeClass("collapse");
			o.parents("li").find("div.answer").hide();
		}
		else {
			o.addClass("collapse");
			o.parents("li").find("div.answer").show();
		}
		return false;
	});
	*/
	
	// Ehandel
	//Gain performance with a css solution?
	/* Useless? Ersatt av .expandable
	$("div.qa li a").click(function() {
		var el = $(this);
		if (el.is("a.collapse")) {
			el.removeClass("collapse");
			el.parents("li").find("div.answer").hide();
		}
		else {
			el.addClass("collapse");
			el.parents("li").find("div.answer").show();
		}
		return false;
	});
	
	$("div.eshop div.qa li div.answer").hide();
	*/
	
	// Ehandel
	//?$("a.shopupdate").css("display", "none"); //hides update link for JS enabled user agents.
	
	// Ehandel, Minasidor
	/* Useless? - Duplicerad funktionlitet, inkluderad i selectorn under
	$("a.search-delivery-button-plus").livequery('click', function() {
		$("div.searchbuttonwrapper").html($load_img);
		searchDeliveryApotek($(this).attr("href"), $("#searchInput_1").attr("value"));
		$("#searchInput_1").get(0).focus();
		return false;
	});
	*/
	$("a.search-delivery-button, a.search-delivery-button-plus").live('click', function(event) {
		var self = $(this);
		var input = $("#searchInput_1").get(0);
		var data = $.data(input, 'deliverySearch');
		// this href is backwards-compatible. .search-delivery-button should pass target href via metadata parameter "url"
		var href = ((!self.attr("href") || self.attr("href") == '') ? self.metadata().url : self.attr("href"));

		if (input.value != '' && (!data || data.str != input.value)) {
			$("div.searchbuttonwrapper").html($load_img);
			searchDeliveryApotek((href || ''), $("#searchInput_1").val());
		}
		$.data(input, 'deliverySearch', {
			empty: (input.value == ''),
			str: input.value
		});
		
		return false;
	});
	
	// Ehandel, tjänster
	$("div#body div.eshop #searchInput_1").focus(function() {
		$("#delivery_suboption_2").attr("checked", "checked");
	}).keydown(function(e) {
		if(e.keyCode == 13) {
			$('a.search-delivery-button, a.search-delivery-button-plus').trigger('click',[true]);
			$(":submit").attr('disabled','disabled');	
		}
	}).keyup(function(e) {
		//
		if(e.keyCode == 13) $(":submit").attr('disabled','');
	});
	
	/* Removed, needs to be tested for apoteket.se
	var deliveryButton = $('#searchInput_1:eq(0)').siblings('a[class*=search-delivery]');
	if($('#searchInput_1').val() != '' && deliveryButton.size() > 0) {
		$("#search-apotek").show();
		var search_apotek_linenr = window.location.search.match(/line=([0-9]+)/);
		var query = window.location.search;
		if(search_apotek_linenr != null && search_apotek_linenr.length && search_apotek_linenr.length > 0) {
			search_apotek_linenr = search_apotek_linenr[1];
		}
		else {
			search_apotek_linenr = 1;
		}
		var href = ((!deliveryButton.attr("href") || deliveryButton.attr("href") == '') ? deliveryButton.metadata().url : deliveryButton.attr("href"));
		href = href.substr(0,href.indexOf('?')) + query;
		$.get(href, function() {
			$('#searchResult table:visible input[name=delivery_adress]:eq('+ (search_apotek_linenr-1) +')').livequery(function() {
				$(this).click();
			}); //Livequery needs to be used, to time correctly with livequery-assignment for the click-handler..
		});
	}
	*/
	
	// Ehandel
	$('input[name=delivery_adress]').livequery('click', function() {
		//$.validator.validateFieldset.call($(this).parents('fieldset:eq(0)').get(0), true);
	});
	/* Ej implementerad hos Know IT än
	$("select#user_saved_1").change(function() {
		$(this).parents("div.row_contents").find("#delivery_suboption_1").attr("checked", "checked");
	});
	*/
	
	/* Useless? moved to javascript
	$("div.search_result_init").addClass("options_js_init");
	
	// Ehandel, minasidor
	$("div.search_result_init").addClass("options_js_init");
	*/
	// init events
	eventPopups();
	eventToggleVarukorg();
	eventCartUpdateNum();
	//eventCartRemoveButton();
	eventHideCartNotes();
	eventShowHideSlipContents();
	eventToggleImportantInformation();
	eventSearchDeliveryApoteket();
	//eventAddToCartAlert();
	eventAddToCart();
	eventMinaSidor();
	eventMinaSidorDynamic();
	
	// Grab selectbox metadata and fill form.
	var stored_addresses = $("select.stored_addresses");
	if (stored_addresses.size() > 0) {
		var selectStoredAdresses = stored_addresses.change(function() {
			// get and cache map.
			if (!this._fieldMap) 
				this._fieldMap = $(this).metadata().fieldMap;
			// extract data based on metadata.
			var data = $(this).find('option:selected').metadata();
			if (data) {
				for (var i in data) {
					// fill form elements
					var key = i, val = data[key], elem = $('#' + this._fieldMap[key]);
					elem.val(val);
				}
			}
		}).bind('clear', function(e) {
			// get map from meta data and cache
			if (!this._fieldMap) 
				this._fieldMap = $(this).metadata().fieldMap;
			var map = this._fieldMap;
			// loop all fields in the field map.
			for (var i in map) {
				var key = i, elem = $('#' + map[key]);
				elem.val('');
			}
		// trigger change to get the first stored adress.
		}).bind('remove', function(e) {
			if ($(this).find('option').size() > 1) {
				$(this).trigger('clear').find('option:selected').remove();
			}
			return false;
		}).trigger('change');
		
		// TODO: send get to server?
		$('div.addressrow a.close').click(function() {
			selectStoredAdresses.trigger('remove');
			return false;
		});
		
		// Ehandel, minasidor
		$("input.useraddress").keyup(function() {
			var $adress_save = $("input.stored_address_save");
			if ($adress_save.exists()) {
				if (!$adress_save[0]._checked) {
					$adress_save.attr("checked", "checked");
					$adress_save[0]._checked = true;
				}
				$("div.address div.stored_address_save").css("display", "inline");
			}
		});
		
		// Ehandel, minasidor
		$("div.new_address").livequery('click', function() {
			$("div.address div.stored_address_save").show()
			$("div.address div.addressrow label.note_1").html($("div.address p.text1").html());
			$("input.stored_address_save").attr("checked", "checked");
			
			var new_address = $("input.new_address").val();
			var new_address_value = $("input.new_address_value").val();
			if (!selectStoredAdresses._appended) {
				selectStoredAdresses.append('<option selected="selected" value="' + new_address_value + '">' + new_address + '</option>');
				selectStoredAdresses._appended = true;
			}
			else {
				selectStoredAdresses.find('option[value=' + new_address_value + ']').attr('selected', 'selected');
			}
			selectStoredAdresses.trigger('clear');
			
			return false;
		});
	}
	
	// Ehandel rådgivnings checkboxar.
	$("#advice-options fieldset input[name=advicetype]").click(function() {
		var className = 'active_row';
		$(this).parents('fieldset:eq(0)').find('div.addressrow').removeClass(className);
		$(this).parents('div.addressrow').addClass(className);
	}).filter(':checked').click();
	
	/* Commented by Michael due to new validation
	$("div.puff011 div.login div.submit_button").livequery('click', function() {
		$(this).parents("div.tab-my tab").find("div.login").hide();
		$(this).parents("div.tab-my tab").find("div.login_step2").show();
		return false;
	});
	*/
	// Ehandel
	//?$("div.address div.stored_address_save").hide();
	
	/* Ej implementerad hos Know IT än
	$("div.address div.addressrow label.note_1").html($("div.address p.text2").html());
	*/
	
	//?$("div.address select option.new_address").hide();
	
	/* Useless?	
	$("form").submit(function() {
		if ($(this).hasClass("disableSubmit")) {
			return false;
		}
	});
	
	//Patch for managing form submits, divButton function doesn't bind form submits
	//and should be revised /Nima
	//Re-revised by Michael to affect site-wide, 20080904
	$("div.submit_button").livequery('click', function() {
		$(this).prev(':submit').click();
		return false;
	});*/
	
	/* start e-handel puffen */
	/* Ersatt av .ppah
	$("div.puff028 div.imgnext a, div.puff058 div.imgnext a, div.puff028 div.imgprev a, div.puff058 div.imgprev a").livequery("click", function() {
		var group = $(this).parents("div.mid").find("option:selected").attr("value");
		$.get($(this).attr("href") + "&group=" + group, "", function(data) {});
		return false;
	});
	$("div.puff028 select, div.puff058 select").livequery("change", function() {
		var group = $(this).attr("value");
		var url = $(this).parent().find("input.grouppath").attr("value") + group;
		$.get(url, "", function(data) {});
		return false;
	});
	*/
	/* end e-handel puffen */
	
	// Minasidor, Tjänster
	/* Ej implementerad hos Know IT än
	$("a.changetoinput").click(function() {
		$(this).parent().parent().find(".changeinput").show().css("display", "inline");
		$(this).parent().remove();
		return false;
	});
	
	$("select.change").change(function() {
		var target = $(this).find("option:selected").attr("class");
		var parent = $(this).parent();
		if (target == "email") {
			parent.find("div.sms").hide();
			parent.find("div.email").css('display', 'inline');
		}
		else if (target == "sms") {
			parent.find("div.email").hide();
			parent.find("div.sms").css('display', 'inline');
		}
	});
	*/
	
	/* Useless?
	$("div.dynamic-content-001 ").click(function() {
		return false;
	});
	*/
	/* Useless?
	if ($("div.thickboxload a.thickbox").exists()) {
		var path = $("div.thickboxload a.thickbox").attr("href");
		var t, g = "";
		tb_show(t, path, g)
	}
	*/
	
	/* Ny validering 20080904 /Michael */
	$('form').validator();
	
	/* Ej implementerad hos Know IT än
	 * Används endast i Prenumerera-puffen då detta kommenterades, för RSS- och E-post-adress-tabbarna
	if ($('div.tabs:tabbed').exists()) {
		$('div.tabs:tabbed').each(function() {
			var tabbedFn = function(tabs) {
				$(tabs).show().siblings('div.tabbed-area').hide().eq($(tabs).find('li a').index($(tabs).find('li.active a').get(0))).show();
				if (isMsIe6) {
					//$(tabs).parents('.puff:eq(0)').css('zoom', 0).css('zoom', 1); //IE6 needs to toggle redraw on switch
					$(tabs).parents('.puff:eq(0)').redraw();
				}
			};
			$(this).find('a').click(function() {
				$(this).parents('li:eq(0)').siblings('li').removeClass('active').end().addClass('active');
				tabbedFn($(this).parents('div.tabs').get(0));
				return false;
			});
			tabbedFn(this);
			$(this).show();
		})
	}
	*/
	
	/* Lokala presskontakter 20080911 /Michael */
	/* Ej implementerad hos Know IT än
	if ($('div.lokala_presskontakter select').exists()) {
		$('div.lokala_presskontakter select:eq(0)').show().change(function() {
			$('div.lokal_presskontakt').hide().eq(this.selectedIndex).show();
		});
		$('div.lokal_presskontakt').hide().eq($('div.lokala_presskontakter select').get(0).selectedIndex).show();
		$('div.lokala_presskontakter').addClass('select-enabled');
		if (isMsIe6) { // IE6 needs this. Unable to produce same result solely through css /Michael
			$('div.lokala_presskontakter').css('zoom', 1);
		}
	}
	*/
	
	/* .expandable - togglar synlighet på .expandable 20080915 /Michael */
	if (!isAdmin) {
		$('div.expandable').livequery(function() {
			var toggle = function() {
				$(this).parent('p').next('.expandable').toggle().trigger('toggled'); //Toggled is custom event
				if ($(this).hasClass('expand')) {
					$(this).attr('class', 'collapse').text(msgOut);
				}
				else {
					$(this).attr('class', 'expand').text(msgIn);
				}
				/*if ($.browser.msie && $(this).parents('div.puff:eq(0)').size() > 0) {
					$(this).parents('div.puff:eq(0)').css('zoom', 0).css('zoom', 1); //IE6 needs to toggle redraw on switch
				}*/
				$(this).parents('div.puff:eq(0)').redraw();
			};
			var p = $(this).prev('p.expander');
			if($(this).parent('.expandableContent').size() > 0) { //Kommer från MOSS HTMLEditor i Admin
				$(this).parent().find('a.expand').click(toggle);
			}
			else {
				if (p.size() < 1) {
					var data = $(this).metadata();
					var msgIn = ((!data || !data.expandMessage || data.expandMessage == '') ? 'Fäll ut' : data.expandMessage);
					var msgOut = ((!data || !data.collapseMessage || data.collapseMessage == '') ? 'Fäll in' : data.collapseMessage);
					var a = $('<a>' + msgIn + '</a>').addClass('expand').css('cursor', 'pointer').click(toggle).insertBefore($(this).hide()).wrap('<p></p>');
					if (data && data.expand) {
						a.click();
					}
				}
				else {
					p.children('a').click(toggle);
					$(this).hide();
				}
			}
			/*if ($.browser.msie && $(this).parents('div.puff:eq(0)').size() > 0) {
				$(this).parents('div.puff:eq(0)').css('zoom', 0).css('zoom', 1); //IE6 needs to toggle redraw on switch
			}*/
			$(this).parents('div.puff:eq(0)').redraw();
		});
	}
	
	/* Slideshow puffar.html 20080917 /Michaael */
	/* Slideshow puffar.html  */
	/* Slideshow for puff, and press */
	$('div.slideshow-preview a, ul.image-listing a.arrow, a.showSlideShow').livequery('click', function() {
		var elem = this;
		/* TODO: Break out href */
		var href = $(this).metadata().href || false;
		if (!href) 
			return true;
		$.get(href, function() {
			var $containerElem = $('div.slideshow-container');
			var offset = $(elem).offset();
			var containerOffset = $('div.wrapper').offset();
			var cssRules = {
				left: '50%',
				top: (offset.top - 400),
				marginLeft: -($containerElem.width() / 2),
				scrollTop: ($(elem).offset().top - $(document).scrollTop() < 150) ? $(document).scrollTop() : $(elem).offset().top - 145
			};
			
			if (cssRules.scrollTop > 0) 
				cssRules.top = cssRules.scrollTop;
			
			$containerElem.css(cssRules).fadeIn();
			$containerElem.find('a.close').click(function() {
				$containerElem.fadeOut();
				return false;
			});
		});
		return false;
	});
	$('div.slideshow-container div.slideshow').livequery(function() {
		// close button
		var $container = $(this);
		// next and prev link
		$container.find('li.next a, li.prev a').click(function() {
			var href = $(this).metadata().href || false;
			if (!href) 
				return true;
			$.get(href);
			return false;
		});
	});
	
	
	/* Ta bort hide-klassen inuti div.puff 20080918 /Michael */
	$('div.puff .hide').removeClass('hide');
	
	/* Passa på att handla 20080918 /Michael */
	if ($('div.puff div.product').exists()) {
		$.ppah();
		$('div.ppah span.next, div.ppah span.prev').livequery('click', function() {
			var ul = $(this).parents('div.puff').find('ul.browse');
			var type = this.className.match(/next|prev/);
			if(type) {
				type = type[0];
			}
			if (ul.size() == 0 || !type) {
				return false;
			}
			var li = ul.find('li.active')[type]('li');
			if (li.size() == 0) {
				li = ul.find('li:'+((type=='next')?'first':'last'));
			}
			li.click();
		});
	}
	
	/* Bläddra-produkt-puffar t.ex. Passa på att handla 20080918 /Michael */
	$('select.swapper').livequery('change', function(event) {
		var url = $(this).metadata().href;
		if (!url) {
			return false;
		}
		var swapable;
		if ($(this).find('.swapable').exists()) {
			swapable = $(this).find('.swapable:eq(0)');
		}
		else if ($(this).parents('.swapable').exists()) {
			swapable = $(this).parents('.swapable:eq(0)');
		}
		if (!swapable) {
			return false;
		}
		var params = $(this.options[this.selectedIndex]).metadata().params;
		var args = [];
		if (params) {
			for (var p in params) {
				args.push(p + '=' + encodeURIComponent(params[p]));
			}
		}
		if ($(this).serialize() != '') {
			args.push($(this).serialize());
		}
		args.push('s=' + encodeURIComponent(swapable.uniqueId().attr('id')));
		$.get(url + args.join('&'));
	});
	$('ul.swapper li').livequery('click', function(event) {
		var ul = this;
		if (!$(this).hasClass('swapper')) {
			ul = $(this).parents('.swapper:eq(0)');
			if (ul.size() == 0) {
				return false;
			}
		}
		var url = $(ul).metadata().href;
		if (!url) {
			return false;
		}
		var swapable;
		var type;
		if ($(ul).find('.swapable').exists()) {
			swapable = $(ul).find('.swapable:eq(0)');
			type = 'parent';
		}
		else if ($(ul).parents('.swapable').exists()) {
			swapable = $(ul).parents('.swapable:eq(0)');
			type = 'child';
		}
		if (!swapable) {
			return false;
		}
		
		ul.find('li.active').removeClass('active');
		$(event.target).addClass('active');
		
		var index = ul.find('li').index(event.target) + 1;
		var params = $(event.target).metadata().params;
		var args = [];
		if (params) {
			for (var p in params) {
				args.push(p + '=' + encodeURIComponent(params[p]));
			}
		}
		args.push('s=' + encodeURIComponent(swapable.uniqueId().attr('id')));
		if (type == 'parent' && $(ul).find('select.swapper').exists()) {
			args.push($(ul).find('select.swapper').serialize());
		}
		else if (type == 'child' && $(ul).parents('.swapable:eq(0)').find('select.swapper').exists()) {
			args.push($(ul).parents('.swapable').find('select.swapper').serialize());
		}
		swapable.addClass('preload');
        $.get(url + args.join('&'), function(data){
            // callback
        });

	});

	/* Hover på 3x3 griden i "Jobba på apoteket" */
	/* Ej implementerad hos Know IT än
	if ($('div.employees ul').exists()) {
		$('div.employees ul li').hover(function() {
			var index = $(this).parent('ul').index($(this).get(0));
			if (index < 3) {
				$(this).addClass('line-1-hover');
			}
			else if (index < 6) {
				$(this).addClass('line-2-hover');
			}
			else {
				$(this).addClass('line-3-hover');
			}
		}, function() {
			$(this).removeClass('line-1-hover').removeClass('line-2-hover').removeClass('line-3-hover');
		});
	}
	*/
	
	/* Emulera puff-left och puff-right för puffadmin i MOSS /Michael */
	$('div.puff-pair').each(function() {
		$(this).children('div').eq(0).addClass('puff-left').end().eq(1).addClass('puff-right');
	});
	
	/* This needs to be the last called */
	/* Nya runda-hörn implementation 20080919 /Michael */
	/*if (isMsIe6) { //Really slow in IE6...comment out and wait for someone to notice on the site :) /Michael
		setTimeout(function() {
			//$('div.puff').css('zoom', 'normal').css('zoom', 1);
			$('div.puff').redraw();
		}, 500);
	}*/
	$(document).bind('corners.render', function() {
		$('div[class*=corner]').corners();
	}).trigger('corners.render');
	
	/* Tip a friend */
	if($("a.tip").size() > 0 || $('div.product').size() > 0) {
		$('div.tip_a_friend a.close').livequery('click', function() {
			$('div#TB_overlay').click();
			return false;
		});
		$('div.tip_a_friend div.submit_button').livequery('click', function() {
			var fieldsetid = $(this).parents('div.tip_a_friend').find('fieldset:eq(0)').metadata().id;
			this.className += ' {rule:"validateFieldsets",ids:["'+fieldsetid+'"]}';
			var valid = $.validator.validateElement.call(this, {});
			if (valid) {
				var parent = $(this).parents('div.tip_a_friend:eq(0)')
				parent.find('div.content fieldset').hide();
				parent.find('img.loading').css('display', 'block');
				$('#TB_window, #TB_ajaxContent').height('auto');
				TB_HEIGHT = $('#TB_window').height();
				tb_position();
				var inputs = parent.find(':input').serialize();
				var url = parent.find('input.ajaxUrl:eq(0)').val().split('?');
				var query = (url[1] + '&doSend=1&' + inputs).split('&'); //Form overrides defaults from url
				url = url[0];
				var data = {};
				for (var i = 0, n = query.length; i < n; i++) {
					var pair = query[i].split('=');
					data[pair[0]] = pair[1];
				}
				setTimeout(function() { //Så att användaren hinner se att det sker något, och så att allt inte bara "flashar förbi"
					$.post(url, data, function(json) {
						$('#TB_window div.tip_a_friend img.loading').hide();
						$('#TB_window div.tip_a_friend fieldset').show();
						$('#TB_window, #TB_ajaxContent').height('auto');
						$('#TB_window div.tip_a_friend div.content p.msg').remove();
						if (json.success) {
							$('#TB_window div.puff074 div.content').html('<p>' + json.msg + '</p>');
						}
						else if (json.msg != '') {
							$('#TB_window div.puff074 div.navigation').before('<p class="msg">' + json.msg + '</p>')
						}
						TB_HEIGHT = $('#TB_window').height();
						tb_position();
					}, 'json');
				}, 1500);
			}
			else {
				$('div.tip_a_friend input:eq(0)').trigger('afterError');
			}
			return false;
		});
		/* Repeterad funktionalitet för att slippa en closure i livequery */
		$('div.tip_a_friend :input').livequery('afterError', function(e) { //Custom event från validatorn - triggas efter att validering genomgåtts och misslyckats och fel-diven lagts till
			$('#TB_window, #TB_ajaxContent').height('auto');
			TB_HEIGHT = $('#TB_window').height();
			tb_position();
		});
		$('div.tip_a_friend :input').livequery('afterValid', function(e) { //Custom event från validatorn - triggas efter att validering genomgåtts och lyckats och fel-diven tagits bort
			$('#TB_window, #TB_ajaxContent').height('auto');
			TB_HEIGHT = $('#TB_window').height();
			tb_position();
		});
		$('div.tip_a_friend fieldset.validate img').livequery('load', function(e) {
			$('div.tip_a_friend input:eq(0)').trigger('afterValid');
		});
		$('div.tip_a_friend :input').livequery('keydown', function(e) {
			if (e.keyCode == 13) {
				$('div.tip_a_friend div.submit_button').click();
				return false;
			}
		});
		$('div.tip_a_friend fieldset.validate').livequery(function() {
			$.validator._hookValidation.apply(this);
			$(this).find('div.navigation input[type=submit]').css({
				position: 'absolute',
				left: -5000,
				visibility: 'visible',
				display: 'block'
			});
		});
		$("a.tip").unbind('click').expire('click').livequery('click', function() {
			clearTimeout($.tipTimeout); //If clicked again within 1000ms dont remove class "tip" from body
			$('body').addClass('tip');
			$('div#TB_overlay').one('click', function() {
				$.tipTimeout = setTimeout(function() { //Graphical glitch fix if removed directly
					$('body').removeClass('tip');
				}, 1000);
			});
			var t = this.title || this.name || null; var a = this.href || this.alt; var g = this.rel || false; tb_show(t, a, g); this.blur(); return false; 
		});
		$('#TB_ajaxContent').livequery(function() {
			$(this).height('auto');
		});
	}
	
	// product-layer triggers.
	$('div[id='+$.getReg('constants.rp.productLayerId').replace('#','')+']').livequery(function() {
		$(this).bind('close',function() {
			$(this).hide();
		}).find('div.top').click(function() { 
			$($.getReg('constants.rp.productLayerId')).trigger('close');
			return false;
		});
	});
/*
	$('div.flarp span').livequery(function() {
		var width = $(this).width();
		var mod = (width%20);
		if(mod != 0) {
			$(this).width(width + (20 - mod));
		}
	});
*/	
	$('div.flarp h4').livequery(function() {
		var fingerSize = 20;
		var self = $(this);
		var width = self.width();
		var mod = (width%fingerSize);
		var parentWidth = self.parent().width();
		var parentMod = (parentWidth%fingerSize);
		var maxWidth = (parentWidth - parentMod); 
		if (isMsIe6) {
			maxWidth = maxWidth - fingerSize;
		}
		var newWidth = width + (fingerSize - mod);
		if (newWidth > maxWidth) {
			newWidth = maxWidth;
		}
		self.width(newWidth).append('<span class="bottom"></span>');
	});

	// product-listing
	$("div.product .open-product-layer, div.landingtype12 div.deal a.open-product-layer").livequery('click',function(event) {
		// store this.
		var elem = $(this);
		// get parent layer
		var $parent;
		if($(elem).parents('div.deal').size() > 0) {
			$parent = $(elem).parents('div.arrows:eq(0)');
		}
		else {
			$parent = $(elem).parents('div.product:eq(0)');
		}
		// get genereated uniqe id from jQuery internals.
		//var uniqeId = $.data($parent[0]); 
		// get stored id from the global namespace (constants.js)
		var storedId = $.getReg('productlist.openProductLayerId');
		// get link href
		/**
		 * Updated, using href from metadata() for people who support javascript /Johannes
		 */
		//var href = elem.href;
		var href = (elem.metadata().href && elem.metadata().href != undefined) ? elem.metadata().href : elem.attr('href');
		// replace content via taconite

        // preloader
        if ($parent.hasClass('product')) {
            $parent.prepend('<div class="preloader"><img alt="Laddar..." src="/_ApoLayouts/img/icons/ajax-loader.gif"/></div>');
        }

		if(href) $.get(href,function() {
			// get container and store it.
			var $container = $($.getReg('constants.rp.productLayerId'));
			
			// only manip if this is not the opened layer.
			// get offset for pointer
			var arrowTopPos = ($parent) ? $parent.offset().top : 0;
			var containerPosTop = defaultTopPos = $.emToPixel($.getReg('constants.rp.productLayerTopPos'));
			var containerHeight = $container.height();
			var barHeight = $container.find('div.top').height();
			var $pointer = $container.find('div.pointer:not("div.pointer-left")');
			var $pointerLeft = $container.find('div.pointer-left');
			var scrollTop = $(document).scrollTop();
			var diffY = 0;
			var bodyOffsetTop = $('#body').offset().top;
			var containerOffsetTop = bodyOffsetTop;
			var bodyOffsetLeft = $('#body').offset().left;
			var parentOffsetLeft = $parent.offset().left;
			var diff = parentOffsetLeft-bodyOffsetLeft;
			// if the container is visible trigger the close event.
			if($container.is(':visible')) $container.trigger('close');
			// user has scrolled the page
			if(scrollTop > 0 && (scrollTop) >  (containerPosTop + bodyOffsetTop)) {
				containerPosTop = (scrollTop - containerOffsetTop);
			}
			// calc arrow position from containerPosTop
			arrowTopPos = (arrowTopPos - (containerPosTop + bodyOffsetTop));
			// arrow is "over the top"
			if(arrowTopPos < barHeight) {
				containerPosTop -= (-arrowTopPos + barHeight);
				arrowTopPos = barHeight;
			}
			// arrow is outside the contianer height range, move conatiner.
			if(arrowTopPos >= $container.height()) {
				diffY = ((arrowTopPos+parseInt($pointer.css('height'))) - containerHeight);
				containerPosTop = diffY; // + containerPosTop;
				arrowTopPos = (arrowTopPos - diffY);
			}
			$pointer.hide();
			$pointerLeft.hide();
			$container.removeClass("product-layer-revert");
			if (diff<=365) {
				$container.addClass("product-layer-revert");
				$pointerLeft.show();
			} else {
				$pointer.show();
			}
			
			// show the container layer
			$container.show();
			// set top position
			$container.css('top',(containerPosTop));
			var flarp = $parent.find('div.flarp');
			if(flarp.size() > 0) {
				arrowTopPos += flarp.height();
			}
			$pointer.css('top', (arrowTopPos));
			$pointerLeft.css('top', (arrowTopPos));
			$parent.find("div.preloader").remove();
		});
		// cancel the event
		return false;
	});

    $("#body input.select-on-focus, #body textarea.select-on-focus").live("click", function() {
        if (this.value == this.defaultValue) {
            this.select();
        }
    });

	if(isMsIe6) {
		var els = $('div.ppah, div[class*=corner]');
		for(var i=0,n=els.length;i<n;i++) {
			$.IE6PuffFix(els[i], false);			
		}
	}
	// document ready end
});

// bind blockui events.
$(document).bind('blockUI', function() {
	$.blockUI({ overlayCSS: { backgroundColor: 'transparent' }, message: null });
	var $this = $(this); 
	setTimeout(function() {
		$this.trigger('unblockUI');
	},10000);
}).bind('unblockUI', function() {
	$.unblockUI();
});

// Extend the jQuery object to include the custom selector "tabbed" for the ":" expression.
/* Ej implementerad hos Know IT än
 * Aktivera denna i samband med Prenumerera-puffen funktionen högre upp
jQuery.extend(jQuery.expr[":"], {
	tabbed: function(a) {
		return (jQuery(a).siblings('div.tabbed-area').size() > 0)
	}
});
*/

$.IE6PuffFix = function(el, forceresize, doredraw) {/* Fixar halvpixel-fel i IE6. */
	if (isMsIe6) {
		var mid = $(el).find('div.mid:eq(0)');
		if (mid.size() == 0) {
			return;
		}
		if(forceresize) {
			mid.height('auto');
		}
		var midHeight = mid.height();
		var midWidth = mid.width();
		var puffBottom = $(el).find('div.puff-bottom:eq(0)');
		if (midHeight % 2 != 0) {
			if (puffBottom.size() == 0) {
				mid.height(parseInt(midHeight + 1, 10));
			}
			else {
				puffBottom.height(parseInt(puffBottom.height() + 1, 10));
			}
		}
		if (midWidth % 2 != 0) {
			mid.width(parseInt(midWidth - 1, 10));
		}
		
		if(doredraw) {
			$(el).redraw();
		}
	}
}
$.lmsbReloadSifr = function(el) {/* Reloads sifr for lmsb */
	sIFR.replace(ApopratRegular, {
		selector: '.sifr_white',
		wmode: 'transparent',
		css: ['.sIFR-root {color: #FFFFFF;}']
	});
}


// search apoteket
function searchApotek(searchString) {
	var searchString = searchString;
	//alert(searchString);
	$.get("/_ApoLayouts/ajax/hittaapotek.php", {
		searchTerm: searchString
	}, function(data) {
		var result = $("<ul>").html(data);
		$("#searchResult").html(result);
		$("#search-submit div.load_icon img").css("display", "none");
	});
}

var disableSubmit = function() {
	$("form").addClass("disableSubmit");
};
var enableSubmit = function() {
	$("form").removeClass("disableSubmit");
};

// event functions
var eventMinaSidor = function() {
	// Döljer och sätter rätt klass på foullmakter puffarna. 
	$("div.puff029 div.midexpand:not(.new)").hide();
	$("div.puff029 div.botexpand:not(.expand_blue)").attr("class", "bot");
	$("div.puff029 div.expand_blue").attr("class", "bot2");
	
	if ($('div.puff038 select.stored_addresses:eq(0)').val() == 'SE') {
		$("div.puff038 div.foreign_addon").hide();
	}
	
	$("div.puff011 div.extended_information").addClass("init_hidden");
	
	// plus döljer vid pageload. 
	$("div.pluspage div.linktypes_contents div.linktype_item:not(.active)").addClass("init_hidden");
	
	// Döljer alla "Skickade" mediciner. 
	$("tr[id^=orderexp-]").hide();
	
	// Döljer "Bli påmind innan dina recept går ut". 
	$("div.puff030 div.hold").hide();
	
	//Döljer knappen vid dropdowns om man har JS. 
	$("input.init_show").hide();
	buyBtn();
	
};

var eventMinaSidorDynamic = function() {
	dynamic_content_001();
	dynamic_content_002();
	dynamic_content_003();
	dynamic_content_004();
	dynamic_content_005();
	
	dynamic_content_008();
	dynamic_content_009();
};

var eventPopups = function() {
	$("a[rel^=popup]").livequery("click", function() {
		window.open($(this).attr("href"), "data", "toolbar=no,location=no,directories=no,width=640,height=500,scrollbars=yes,menubar=no,resizable=yes").focus();
		return false;
	});
	$("a[rel^=newwindow]").livequery("click", function() {
		window.open($(this).attr("href"), "newwindow").focus();
		return false;
	});
};

var eventToggleVarukorg = function() {

	var shop_error = $("div.shop_error div.error p.error a.expand").show();
	
	$("div.shop:not(.shop_error) a[class^=expand-]").click(function() {
		var el = $(this);
		var parents = el.parents();
		if (el.hasClass('collapse')) {
			el.parent().find("a.collapse").each(function() {
				var a = $(this).removeClass("collapse");
				var currenttitle = a.html();
				var fliptitle = a.siblings("a.fliptitle").html();
				a.siblings("a.fliptitle").html(currenttitle);
				a.html(fliptitle);
			});
			parents.find("div.row").removeClass("cart_open");
			parents.find("div.cart_contents").hide();
		}
		else {
			//parents.find("a.expand").each(function() {
			el.parent().find("a.expand").each(function() {
				var a = $(this).addClass("collapse");
				var currenttitle = a.html();
				var fliptitle = a.siblings("a.fliptitle").html();
				a.siblings("a.fliptitle").html(currenttitle);
				a.html(fliptitle);
			});
			parents.find("div.row").addClass("cart_open");
			parents.find("div.cart_contents").show();
		}
		return false;
	});
	$("div.shop_error a[class^=expand-]").click(function() {
		var el = $(this);
		var parents = el.parents();
		if (el.hasClass('collapse')) {
			parents.find("a.collapse").each(function() {
				var a = $(this).removeClass("collapse");
				var currenttitle = a.html();
				var fliptitle = a.siblings("a.fliptitle").html();
				a.siblings("a.fliptitle").html(currenttitle);
				a.html(fliptitle);
			});
			parents.find("div.row").removeClass("cart_open");
			parents.find("div.shop_error").removeClass("shop_error_expanded");
			parents.find("div.shop_error div.bot div.error").show();
			parents.find("div.cart_contents").hide();
		}
		else {
			parents.find("a.expand").each(function() {
				var a = $(this).addClass("collapse");
				var currenttitle = a.html();
				var fliptitle = a.siblings("a.fliptitle").html();
				a.siblings("a.fliptitle").html(currenttitle);
				a.html(fliptitle);
			});
			parents.find("div.row").addClass("cart_open");
			parents.find("div.shop_error").addClass("shop_error_expanded");
			parents.find("div.shop_error div.bot div.error").hide();
			parents.find("div.cart_contents").show();
		}
		return false;
	});
};

var eventAnimateSlip = function() {
	$("div.slip li.animate").pulsate(function() {
		$("#sliptotsum").pulsate();
	});
};

var showaddedtip = function(oBtn) {
	$(oBtn).parent().find("div.addedtip").css("display", "inline").animate({
		opacity: 1.0
	}, 50).fadeIn('fast', function() {
		$(this).animate({
			opacity: 1.0
		}, 2000).fadeOut('slow', function() {
		
		});
	});
};

var eventShowHideSlipContents = function() {
	$("#receiptslip a.showfive").livequery(function() {
		$(this).hide();
	});
	$("#receiptslip a.showall").livequery(function() {
		$(this).show();
	});
	
	$("#receiptslip ul").livequery(function() {
		$(this).find("li").not(":lt(5)").hide();
	});
	
	$("#receiptslip a.showall").livequery(function() {
		$(this).click(function() {
			$("#receiptslip ul li").each(function() {
				$(this).show();
			});
			$(this).css("display", "none");
			$("#receiptslip a.showfive").show();
			return false;
		});
	});
	
	$("#receiptslip a.showfive").livequery(function() {
		$(this).click(function() {
			$("#receiptslip ul").find("li").not(":lt(5)").hide();
			$(this).hide();
			$("#receiptslip a.showall").show();
			return false;
		});
	});
};

var eventHideCartNotes = function() {
	$("div.shop div.cart_note").livequery(function() {
		$(this).hide();
	});
};

var eventCartRemoveButton = function() {
	/*
	$("tr[id^=cartprodid-] a.remove").livequery("click", function() {
		var preloadpath = "/_ApoLayouts/img/icons/";
		var btn = $(this);
		var target_holder = $(this).parents("tr[id^=cartprodid-]:eq(0)");
		var target_img = 'animation_update';
		if (target_holder.hasClass('error_row')) {
			target_img += "_error";
		}
		btn.hide().parent().parent().find("p").prepend('<img src="' + preloadpath + target_img + '.gif" alt="" />');
		$.get(btn.attr("href"), function(data) {
			btn.removeClass("btnbuy_anim");
			eventAnimateSlip();
			eventToggleVarukorg();
			/* Useless? this has been moved to javascript.css
			 $("div.delivery_options").addClass("options_js_init");
		});
		return false;
	});
	*/
};

var eventCartUpdateNum = function(){
	var callback = function(e) {
		var url;
		var params = {};
		if(this.tagName.toLowerCase() == 'a') {
			$(this).hide();
			url = $(this).attr('href');
		}
		else {
			// if the "new" value is the same as the old, return.
			var val = $.trim($(this).val());
			if(val.length > 0 && (val == $.data(this, 'value'))) {
				$(this).focus();  
				return false;
			}
			params = {
				quantity: $(this).val()
			};
			url = $(this).prev().val();
		}
		$(this).parents('td:eq(0)').find('img.animation').show();
		
		$().trigger('blockUI');
		
		$.get(url, params, function(data) {
			eventAnimateSlip();
			eventToggleVarukorg();
			$().trigger('unblockUI');
		});
		
		return !(this.tagName.toLowerCase() == 'a');
	};
	$("#shopcart td.amount").livequery(function(){
		// remove button
		$(this).find("a.remove").unbind('click').click(callback);
		
		// input box
		$(this).find("input.input_text").each(function(){
			
			$.data(this, 'value', this.value);
			
			var lastKeyDown = 0;
			
			function isDigit(s) {
				return /^\d+$/.test(s);
			}
			
			var checkKeyUp = function(e) {
				var $this = $(this);
				var val = $.trim(this.value);
				// if the input has no value don't fire timer
				if(val.length > 0 && isDigit(val)) {
					var timer = setTimeout(function(){
						$this.blur();
					}, 5000);
					$.data(this,'timer',timer);
				} else {
					if(val.length > 0) val = this.value = $.data(this, 'value');
				}
			}; 
			
			var checkInputKeys = function(e) {
				// setup keys and timers.
				var keyMods = (e.ctrlKey || e.shiftKey || e.metaKey || e.altKey);
				var allowedKeyCodes = [8,127,37,38,39,40,46,96,97,98,99,100,101,102,103,104,105];/* 96 - 105 = numpad */
				var keyCode = e.which || lastKeyDown;
				var keyString = String.fromCharCode(keyCode);
				var timer = $.data(this,'timer') || 0;
				var val = $.trim(this.value);
				// clear keyup timer
				clearTimeout($.data(this,'timer'));
				// if enter or tab
				if ((keyCode == 13 || keyCode == 9) && val.length > 0) { 
					$(this).blur();
				}
				// save keyDown if keyPress returns keyCode 0.
				if(keyCode !== 0) {
					lastKeyDown = keyCode;
				}
				// if key string is a number return true
				if(/^\d+$/.test(keyString) || keyMods || ($.inArray(keyCode,allowedKeyCodes) >= 0)) {
					if (val.length != 0) {
						$.data(this, 'value', val);
					}
					return true;
				}	
				// always return false
				return false;
			};
			$(this).unbind('keydown').unbind('keypress').unbind('blur');
			$(this).keydown(checkInputKeys).keypress(checkInputKeys).keyup(checkKeyUp).blur(callback);
		});
		// select box
		$(this).find('select').unbind('change').change(callback);
	});
};

var eventToggleImportantInformation = function() {
	$("div.shop a.important_information").livequery("click", function() {
		var $this = $(this);
		if ($this.is("a.collapse")) {
			$this.removeClass("collapse");
			$this.parents("td.details").find("div.cart_note").hide();
		}
		else {
			$this.addClass("collapse");
			$this.parents("td.details").find("div.cart_note").show();
		}
		return false;
	});
};

var eventSearchDeliveryApoteket = function() {
	$("div.bhv_searchField tr.header a.sort").livequery("click", function() {
		$("div.searchbuttonwrapper").html($load_img);
		var searchAction = "sort";
		var searchItem = $(this).parent().attr("class");
		var searchOrder = $(this).hasClass("sort_asc") ? 'desc' : 'asc';
		var searchSource = $(this).attr("href");
		sortSearch(searchSource, searchAction, searchItem, searchOrder);
		return false;
	});
	$("div.bhv_searchField tr.footer a.navigate").live("click", function() {
		$("div.searchbuttonwrapper").html($load_img);
		var searchAction = "navigate";
		var searchSource = $(this).attr("href");
		navigateSearch(searchSource, searchAction);
		return false;
	});
	$("div.bhv_searchField table:not(.active):not(.preselected_active) input[type=radio]").live("click", function() {
		$("div.bhv_searchField table").each(function() {
			if ($(this).is("table.active")) {
				$(this).hide();
			}
			else {
				$(this).show();
			}
		});
		$(this).parents("div.row_contents").find("#delivery_suboption_2").attr("checked", "checked");
		var target_selector = $(this).attr("class");
		$("table.active_" + target_selector).show();
		$("table.active_" + target_selector + " input").attr('checked','checked');
		$("table." + target_selector).hide();
	});
};
function sortSearch(searchSource) {
	var searchSource = searchSource;
	$("div.searchbuttonwrapper").show();
	$.get(searchSource, "", function() {
		$("div.searchbuttonwrapper").html("");
	});
}

function navigateSearch(searchSource) {
	var searchSource = searchSource;
	$("div.searchbuttonwrapper").show();
	$.get(searchSource, "", function() {
		$("div.searchbuttonwrapper").html("");
	});
}

function searchDeliveryApotek(searchSource, searchString) {
	var searchSource = searchSource + ((searchSource.indexOf("?") >= 0) ? '&' : '?') + "search=" + encodeURIComponent(searchString); // markar 2008-02-05 Måste göra encodeURIComponent() för att man ska kunna söka på åäö
	$("div.searchbuttonwrapper").show();
	$.get(searchSource, "", function() {
		$("div.searchbuttonwrapper").html("");
	});
}

function buyBtn() {
	$("input[class^=btnbuy-]").each(function() {
		var button_classes = $(this).attr("class");
		if (button_classes.length > 0) {
			button_classes = " " + button_classes;
		}
		$(this).after('<a class="btnbuy' + button_classes + '" href="' + $(this).val() + '"></a>').remove();
	});
}

var eventAddToCartAlert = function() {
	/*
	$(".btnbuy_validator").livequery("click", function() {
		var inputSrc = '.' + $(this).metadata().inputSrc;
		var maxVal = $(this).metadata().maxVal;
		var alertUrl = $(this).metadata().alertUrl;
		if ($(inputSrc).val() > maxVal) {
			var t, g = "";
			tb_show(t, alertUrl, g);
		}
		return false;
	});
	*/
};

var eventAddToCart = function() {
	$("a.btnbuy").livequery("click", function() {
		var btn = $(this);
		// the following if-case should/could be considered a developermode-function and it might need to be removed further on /JL 080123
		if (btn.attr("href") == "#" || btn.attr("href") == "" || btn.attr("href") == null) {
			return false;
		}
		// end developermode-function 
		disableSubmit();
		
		$(btn).addClass("btnbuy_anim");
		$.get($(this).attr("href"), "", function(data) {
			$(btn).parent().find("div.addedtip span").text(($("#receiptslip div.slip ul li:first span").text()));
			$(btn).parent().find("div.addedtip").css("display", "inline").animate({
				opacity: 1.0
			}, 50).fadeIn('fast', function() {
				$(this).animate({
					opacity: 1.0
				}, 2000).fadeOut('slow', function() {
					$(btn).removeClass("btnbuy_anim");
					// end with animating the slip
					eventAnimateSlip();
					enableSubmit();
				});
			});
		});
		return false;
	});
};

// "Dessa har läst" tabellens sortering. 
var dynamic_content_001 = function() {
	$("div.dynamic_content_001 a.sort").livequery("click", function() {
		var url = $(this).attr("href");
		$.get(url, "", function() {
			runTooltip();
		});
		return false;
	});
};
// "Fullständig förteckning" tabellens sortering. 
var dynamic_content_002 = function() {
	$("div.dynamic_content_002 a.sort").livequery("click", function() {
		var url = $(this).attr("href");
		$.get(url, "", function() {
			runTooltip();
		});
		return false;
	});
	$("div.datatable div.amount_choice select").livequery("change", function() {
		var $this = $(this);
		var $type = $this.val();
		var $data = $this.metadata();
		var $replacearea = $("div." + $data.medscontainer);
		var $url = $(this).parent().parent().find("input.ajaxurl").val() + "?type=" + $type + "&replacearea=" + $replacearea.attr("class");
		if ($data) {
			$.get($url, function() {
				$replacearea.html("");
				eventMinaSidor();
				runTooltip();
			});
		}
	});
};
var dynamic_content_003 = function() {
	/* Ej implementerad hos Know IT än */
	/*
	$("div.puff032 div.priceholderinactive a").livequery("click", function() {
		var textHtml = $(this).parent().parent().find("div.removetext").html();
		var obj = $(this).parents("div.puff032");
		var mid = obj.find("div.mid");
		
		$.get($(this).attr("href"), "", function(data) {
		
			obj.find("div.left").remove();
			obj.find("div.right").remove();
			obj.find("div.mid").html($load_img);
			obj.find("div.mid").append(textHtml);
			
			obj.animate({
				opacity: 1.0
			}, 2000).fadeOut('slow'), function() {
				obj.remove();
			}
		});
		return false;
	});
	*/
	/* Ej implementerad hos Know IT än */
	/*
	$("div.puff032 a.inactivate").livequery("click", function() {
		var textHtml = $(this).parents("div.puff032").find("div.removetext").html();
		var $obj = $(this).parents("div.puff032");
		$.get($(this).attr("href"), function(data) {
			$obj.find("div.left").remove();
			$obj.find("div.right").remove();
			$obj.find("div.midexpand").remove();
			$obj.find("div.mid").html($load_img);
			$obj.find("div.mid").append(textHtml);
			$obj.animate({
				opacity: 1.0
			}, 2000).fadeOut('slow'), function() {
				$obj.remove();
			}
		});
		return false;
	});
	*/
	
	/* Visa dölj per produkt.
	 * Flyttad till generisk $('#medicinertabs').click() i minasidor.js /Michael
	$("div.puff032 div.mid h3 a").livequery("click", function() {
		if ($(this).parents('div.generika').size() < 1) {
			var data = $(this).metadata();
			if (data.expandMessage && data.collapseMessage) {
				var mid = $(this).parents('div.mid:eq(0)');
				mid.toggleClass('expanded');
				var msg = data.expandMessage;
				if(mid.hasClass('expanded')) {
					msg = data.collapseMessage;
				}
				mid.find('h3 span.text').text(msg);
				$.IE6PuffFix($(this).parents('div.puff:eq(0)').get(0), true);
			}
		}
		return false;
	});
	
	$("div.puff032 div.tabs ul").livequery("click", function(e) {
		var li = e.target;
		if (li.tagName.toLowerCase() == 'a') {
			li = li.parentNode;
		}
		var tabs = $(li).siblings().removeClass('active').end().addClass('active').parents('div.tabs:eq(0)');
		tabs.nextAll('div.tab').hide().eq($(this).children().index(li)).show();
		$.IE6PuffFix($(this).parents('div.puff:eq(0)').get(0), true);
		return false;
	});
	*/
	
	$("div.puff033 div.links select").livequery("change", function() {
		var type = $(this).val();
		var data = $(this).metadata();
		var replacearea = $(data.medscontainer).attr("class");
		var url = $(this).parent().find("input.ajaxurl").val() + type + "&replacearea=" + replacearea;
		if (data) {
			$.get(url, "", function() {
				$(replacearea).html("");
				eventMinaSidor();
				runTooltip();
			});
		}
	});
	// product list general functions
	if ($.browser.msie && $.browser.version < 7) { //Bara IE6 behöver detta
		$("div.productlist div.product").livequery(function() {
			$(this).hover(function() {
				var extra = this.className.match(/rabatt|bris|blixt/);
				if(extra && extra.length > 0) {
					extra = ' '+extra[0]+'hover';
				}
				else {
					extra = '';
				}
				$(this).addClass('hover'+extra);
			}, function() {
				$(this).removeClass('hover rabatthover brishover blixthover');
			});
		});
	}
	// activate all tabs.
	$("ul.ajax-tabs").livequery(function() {
		$(this).ajaxTabs()
	});
	// listen for tab trigger on productlist, hide product-layer.
	$("div.productlist ul.pl_tabs, ul.sort_options").livequery(function() {
		$(this).bind('ajaxTabs.click',function() {
			$($.getReg('constants.rp.productLayerId') + ':visible').trigger('close');
		});
	});
	/* start filtrera .productlist */
	$("div.productlist div.productlist_filter select").livequery('change', function() {
		var input = $(this).siblings('input:eq(0)');
		var url = input.val();
		var data = {};
		data[input.attr('name')] = this.value;
		if (this.value != undefined) {
			$.get(url, data);
		}
	});

	/** New product lists. */
	$("div.productlist div.sorting select").livequery('change', function() {
		if (this.value == undefined) {
			return false;
		}
		var data = {};
		$(this).parent().find('input[type="hidden"], select').each(function(){
			var self = $(this);
			if (self.val() != '') {
				data[self.attr('name')] = self.val();
			}
		});
		var urlInput = $(this).parents("div.productlist").find('input[name="url"]');
		var url = urlInput.val();
		qs = buildQueryString(data);
		$.address.value(qs);
		return false;
	});
	$.address.change(function(event) {
		var params = $.address.parameterNames();
		if (params.length > 0) {
			var data = {};
			for (var i = 0; i < params.length; i++) {
				var key = params[i];
				data[key] = $.address.parameter(key);
			}
			var urlInput = $('div.productlist input[name="url"]');
			var url = urlInput.val();
			$.get(url, data);
		}
	});

};

var dynamic_content_004 = function() {

	$('div.medblock-002 div.puff032 div.mid').livequery("click", function(e) {
	
		var banned = ['h3', 'div.amountholder', 'select', 'a.bluearrow', 'input'];
		var $el = $(e.target);
		for (var i = 0; i < banned.length; i++) {
			var sel = banned[i];
			if ($el.is(sel) || $el.parent().is(sel)) 
				return true;
		}
		var field = $(this).find("input.ajaxurl");
		
		if (field.size() > 0) {
			var data = field.metadata();
			var replacearea = $(data.medscontainer).attr("class");
			var url = field.val() + replacearea;
			if (data) {
				$.get(url, "", function() {
					//$("." + replacearea).html("");
					eventMinaSidor();
					runTooltip();
				});
			}
			return false;
		}
	});
};
var dynamic_content_005 = function() {
	$("div.puff031 select").livequery("change", function() {
        var self = $(this);
		var type = self.val();
		var data = self.metadata();
		var replacearea = $(data.medscontainer).attr("class");
		var url = self.parent().find("input.ajaxurl").val() + type + "&replacearea=" + replacearea;
        self.parent().find("span.preloader").show();
		if (data) {
			$.get(url, "", function() {
				$(replacearea).html("");
				eventMinaSidor();
                self.parent().find("span.preloader").hide();
			});
		}
	});
};
var dynamic_content_008 = function() {
	$("div.dynamic_content_008 th a").livequery("click", function() {
		var url = $(this).attr("href");
		$.get(url, "", function() {
			runTooltip();
		});
		return false;
	});
}

var dynamic_content_009 = function() {
	$("div.search_navigation a").livequery("click", function() {
		var url = $(this).attr("href");
		$.get(url, "", function() {
			runTooltip();
		});
		return false;
	});
}

var openSearchTab = function(obj, url) {
	$("#search_tabs li").removeClass("active");
	$(obj).addClass("active");
	$('.colwrap').html('<div class="puff"><p>Laddar... <img src="/_ApoLayouts/img/icons/loading_small_grey.gif" alt="Laddar..." /></p></div>')
	$.get(url);
}

var runTooltip = function() {
	//$("a.ajax-tooltip").livequery(function() { $(this).cluetip(); });
};
$.ppah = function() {
	$('div.ppah').each(function() {
		if($(this).find('span.next, span.prev').size() < 1 && $(this).find('div.dropbox ul li').size() > 1) {
			$(this).append('<span class="next"></span><span class="prev"></span>');
		}
		var img = $(this).find('div.product img');
		var spans = $(this).find('span.next, span.prev');
		if (img.size() > 0 && spans.size() > 0) {
			spans.css('margin-top', 0); //Ta bort default så offset uträkning blir korrekt. Går inte att kedja pga exekveringsordning
			spans.css('margin-top', -(Math.abs(Math.round(($(this).height() / 2) - ((img.offset().top - $(this).offset().top) + (img.height() / 2)))) + 10)); //Centrerar pilarna emot bildens mittpunkt. Konstanten 10 = halva storleken av pil-bilden
		}
	});
};
$.fn.jumpToAjaxError = function() {
	
	$("div.addedtip").css("display", "none");
	$("a.buy").removeClass("btnbuy_anim");
	
	location.href="#ajax-errormessage";
	
	/* $("#ajax-errormessage p a").livequery("click", function() {
	
	}); */
};

$.fn.redraw = function() {
	return this.each(function() {
		if ($.browser.msie) {
			this.className = this.className;
			if (this.style) this.style.zoom = 1;
		}
	});
};


$.fn.corners = function() {
	return this.each(function() {
		var self = $(this);
		if(self.data('corners.attached')) return;
		
		if (self.is('.gray_faded, .yellow_faded')) {
        self.removeClass('corners');
    } else {
			var allCorners = ['tl', 'tr', 'bl', 'br'];
			if (self.find('.corner-bl-br').size() > 0) {
				var allCorners = ['tl', 'tr'];
			}
			var corners = this.className.match(/corners?[^ ]*/);
			if (corners && $.trim(corners[0]) == 'corners') {
				corners = allCorners;
  		}	else if (corners && corners[0]) {
				corners = corners[0].split('-');
				corners.shift();
  		}
			if(self.children(':last').css('float') != 'none') { //Fix for http://www.brunildo.org/test/IE_raf3.html
				self.append('<div></div>');
			}
		
		  for (var i = 0, n = allCorners.length; i < n; i++) {
				if ($.inArray(allCorners[i], corners) > -1 && self.find('.' + allCorners[i]).size() < 1) {
					self.append('<span class="corner ' + allCorners[i] + '"></span>');
				}
		  }

			/* ie6 odd pixel dilemma
			 * Take the child and add a single pixel to  padding-bottom
			 * to avoid having an odd height on the box
			 * Slow! Removed.
			 */
			/* 
			if (isMsIe6 && ($(this).height() % 2)) {
				$(this).children().each(function () {
					var child = $(this); 
					if (parseInt(child.height()) > 0) {
						child.css('padding-bottom', (parseInt(child.css('padding-bottom')) + 1));
					}
				});
			}
			*/
		}
		self.data('corners.attached', true);
	});
}

$.ajaxSetup({
	error: function(XMLHttpRequest, statusText) { 
	//console.log(arguments); 
	if(XMLHttpRequest.status == 404) {
    	// 404 error
		//Skriv ut i DIV
		var errorDIV = $("#ajax-errormessage");
		
		errorDIV.html('<p class="ajax-error-userheader">Det har uppstått ett fel!</p><p><span class="ajax-error-usermessage">Sidan som försökte anropas finns inte.<span class="ajax-error-usercontact">Försök igen senare eller kontakta Kundservice på telefonnummer 0771-450450.</p>');
		errorDIV.show();
		location.href="#ajax-errormessage";
  	}
  	else if(XMLHttpRequest.status != 200) {
    	// 403, 501 osv error
		var errorDIV = $("#ajax-errormessage");
		
		errorDIV.html('<p class="ajax-error-userheader">Det har uppstått ett fel!</p><p><span class="ajax-error-usermessage">Sidan som försökte anropas genererar ett fel.<span class="ajax-error-usercontact">Försök igen senare eller kontakta Kundservice på telefonnummer 0771-450450.</p>');		errorDIV.show();
		location.href="#ajax-errormessage";
  	}
  	else if (XMLHttpRequest.status == 200 && statusText == "parsererror"){
    	// default error
		var errorDIV = $("#ajax-errormessage");
		
		errorDIV.html('<p class="ajax-error-userheader">Det har uppstått ett fel!</p><p><span class="ajax-error-usermessage">Sidan som försökte anropas innehåller något som webbläsaren inte kan tolka.<span class="ajax-error-usercontact">Försök igen senare eller kontakta Kundservice på telefonnummer 0771-450450.</p>');
		errorDIV.show();
		location.href="#ajax-errormessage";
		
  	}else{
		//Set DIV	
	}	
	
	//Handle animations
	$load_img.remove();	
	$("div.addedtip").css("display", "none");
	$("a.buy").removeClass("btnbuy_anim");
}});

/**
 * Function to add current host name to a url
 */
function addDomainToUrl(url, secure) {
	var url = url;
	var thisDomain = location.host;
	var protocol = (!secure || secure == false) ? 'http://' : 'https://';
    return (protocol + thisDomain + url);
}

function buildQueryString(obj) {
	var qs = '?';
	for (var key in obj) {
		qs = qs + key + "=" + obj[key] + "&";
	}
	qs = qs.slice(0, -1)
	return qs;
}

