(function( window, undefined ) {
	var watski = {},
	document = window.document,
	domain = location.host.substring(location.host.lastIndexOf('.')+1),
	lid,
	mlang,
	_box = {},
	_tt = {};/*,
	userAgent = navigator.userAgent,
	
	//nice to have functions
	toString = Object.prototype.toString,
	hasOwnProperty = Object.prototype.hasOwnProperty,
	push = Array.prototype.push,
	slice = Array.prototype.slice,
	indexOf = Array.prototype.indexOf;*/

	//setup lid
	if(		domain == "se") lid = 1;
	else if(domain == "no") lid = 3;
	else if(domain == "dk") lid = 2;
	else if(domain == "de") lid = 4;
	else lid = 1; //swedish is defalut
	
	watski.domain = domain;
	watski.lid = lid;

	//language
	watski.l = function(id) {
		return mlang[lid][id];
	}
	mlang = {
		'1': { //se
			close: "Stäng",
			sym_text: "Symbolförklaring",
			sym_title: "Visa Symbolförlaringen",
			latlngzoom: { lat:63.115181,lng:17.55117,zoom:4},
			motd: "We are experiencing issues with the language handeling. Some users may have problems using the site. The problem is being addressed with high priority. ",
			forgotQyt: "Du måste fylla i ett <b>Antal</b> innan du trycker på <b>Lägg i varukorg</b>",
			s2sinfo: "Här kan du beställa varor för upphämtning i <b>Din Butik</b>. Du hämtar och betalar produkten i <b>Din Butik</b> utan kostnad för frakt.",
			yourstoreinfo: "Här kan du välja <b>Din Butik</b> bland Watski\'s återförsäljare.<br /><br />Flertalet av dessa är anslutna till <b>Ship To Store</b> "+
						   "där du kan hämta varor som du beställt här på hemsidan. <b>Ship To Store</b>-butiker är markerade med en <b>orange symbol</b>.",
			mapSearch: "Sök efter butik, stad eller region",
			ajaxLoading: "<img src=\"/Templates/Public/Images/misc/ajax-loader.gif\" width=\"16\" height=\"16\" alt=\"\" /> Laddar...",
			chout_cart: "Här kan du se alla <b>Dina produkter</b>! Om du ändrar antalet glöm inte att trycka på <b>Uppdatera</b>.",
			chout_person: "Här fyller du i <b>Dina personuppgifter</b>! Alla fält markerade med en <b>(*)</b> är obligatoriska.",
			chout_store: "Här väljer du <b>Din butik</b>!<br />Varorna kommer att leverars till <b>Din butik</b> fraktfritt på den angivna dagen. Notera att datum och tid kan variera ifrån butik till butik.",
            chout_confirm: "Här kollar du igenom så att alla uppgifter stämmer och trycker sedan på <b>Godkänn</b>. Du måste <b>godkänna watski\'s avtal</b> genom att kryssa i rutan. Efter att du godkänt kommer vi skicka en <b>orderbekräftelse</b> till din angiva mailadress."
		},
		'2': { //dk
			close: "Lukket",
			sym_text: "Symbolforklaring",
			sym_title: "Vis Symbolforlaringen",
			latlngzoom: { lat:55.686075,lng:10.949624,zoom:6},
			motd: "We are experiencing issues with the language handeling. Some users may have problems using the site. The problem is being addressed with high priority. ",
			forgotQyt: "Du mangler at udfylde <b>Antal</b> inden du klikker på <b>Læg i indkøbskurven</b>",
			s2sinfo: "Her kan du bestille varer til afhentning i <b>Din Butik</b>. Du henter og betaler varen i <b>Din Butik</b> fragtfrit.",
			yourstoreinfo: "Her kan du vælge<b>Din Butik</b> blandt Watski\'s forhandlere<br<br /><br />DDe fleste er tilmeldt <b>Ship To Store</b> "+
								"her kan du hente vare som du har bestilt her på hjemmesiden. <b>Ship To Store</b>-Butikken er markeret med et <b>orange symbol</b>.",
			mapSearch: "Søg efter Butik, By, eller Region.",
			ajaxLoading: "<img src=\"/Templates/Public/Images/misc/ajax-loader.gif\" width=\"16\" height=\"16\" alt=\"\" /> Henter data...",
			chout_cart: "Her kan du se alle <b>Dine Vare</b>! Hvis du ændre i antal, husk at trykke på <b>Opdatere</b>.",
			chout_person: "Her udfylder du dine <b>Personlige Oplysninger</b>! Alle felter markeret med en <b>(*)</b> er obligatoriske.",
			chout_store: "Her vælger du <b>Din Butik</b>!<br />Varen vil blive leveret til <b>Din Butik</b> fragtfrit, på den angivende dag. Notere at dato og tidspunkt kan variere fra butik til butik.",
			chout_confirm: "Her tjekker du, at alle oplysninger stemmer og klikker derefter på <b>Godkend</b>. Du må godkende Watski´s aftale, ved at sætte kryds i feltet.Efter at du har godkendt, sender vi en <b>ordrebekræftelse</b> til din angivet mailadresse."
		},
		'3': { //no
			close: "Steng",
			sym_text: "Symbolforklaring",
			sym_title: "Vis Symbolforlaringen",
			latlngzoom: { lat:64.855337,lng:15.519937,zoom:4},
			motd: "We are experiencing issues with the language handeling. Some users may have problems using the site. The problem is being addressed with high priority. ",
			forgotQyt: "Du må fylle i et <b>Antall</b> før du trykker på <b>Legg i handlekurven</b>",
			s2sinfo: "Her kan du bestille varer og hente de i <b>Din Butikk</b>. Du henter og betaler produktene i <b>Din Butikk</b> uten fraktkostnader.",
			yourstoreinfo: "Her kan du velge <b>Din Butikk</b> blandt Watski\'s forhandlere.<br /><br />De fleste av disse er tilknyttet  <b>Ship To Store</b> "+
								"der du kan hente varer som du har bestilt her på hjemmesiden. <b>Ship To Store</b>-butiker er markert med et <b>orange symbol</b>.",
			mapSearch: "Søk etter butikk, by eller fylke",
			ajaxLoading: "<img src=\"/Templates/Public/Images/misc/ajax-loader.gif\" width=\"16\" height=\"16\" alt=\"\" /> Laddar...",
			chout_cart: "Her kan du se alle <b>Dine produkter</b>! Om du endrer antallet så gløm ikke å trykke på <b>Oppdater</b>.",
			chout_person: "Her fyller du i <b>Dine personlige opplysninger</b>! Alle felt  som er markert med en <b>(*)</b> er obligatoriske.",
			chout_store: "Her velger du <b>Din butikk</b>!<br />Varene kommer til å bli levert til <b>Din butikk</b> fraktfritt på den angitte dagen. Legg merke til at dato og tid kan variere fra butikk til butikk.",
			chout_confirm: "Her sjekker du slik at alle opplysninger stemmer og trykker så på  <b>Godkjenn</b>. Du må <b>godkjenne watski\'s avtale</b> ved å sette kryss i ruten. Når du har godkjent vil vi sende en  <b>ordrebekreftelse</b> til din oppgitte mailadresse."
		},
		'4': { //de
			close: "Schliessen",
			sym_text: "Zeichenerklärung",
			sym_title: "Anzeige Zeichenerklärung",
			latlngzoom: { lat:51.0964,lng:9.9607,zoom:5},
			motd: "We are experiencing issues with the language handeling. Some users may have problems using the site. The problem is being addressed with high priority. ",
			forgotQyt: "Die <b>Stückzahl</b> muss eingegeben werden, bevor Sie auf die Schaltfläche  <b>Warenkorb</b> drücken.",
			s2sinfo: "Hier können Sie die Waren auswählen, die Sie bei Ihrem gewünschten <b>Fachhändler</b> abholen können. Abholung und Bezahlung erfolgt direkt im <b>Laden</b>, Frachtkosten fallen für Sie nicht an.",
			yourstoreinfo: "Wählen Sie <b>Ihren Fachhändler</b> aus der Liste der Watski-Händler aus.<br /><br />Viele von Ihnen nehmen bereits am <b>Ship To Store</b>-Konzept teil. Hier im Internet aussuchen und bei Ihrem Händler abholen und bezahlen. <b>Ship To Store</b>-Händler sind <b>Orange markiert</b>.",
			mapSearch: "Suche nach Laden – Stadt - Region",
			ajaxLoading: "<img src=\"/Templates/Public/Images/misc/ajax-loader.gif\" width=\"16\" height=\"16\" alt=\"\" /> Laden...",
			chout_cart: "Anzeige aller <b>ausgewählten Produkte</b>!  Bei Änderung der Stückzahl muss auf <b>update</b> gedrückt werden.",
			chout_person: "Geben Sie <b>Ihre persönlichen Daten</b> ein. Die mit einem <b>(*)</b> markierten Positionen sind Muss-Felder.",
			chout_store: "Wählen Sie hier <b>Ihren Fachhändler</b>!<br /> Die Produkte werden für Sie frachtfrei geliefert. Beachten Sie die Ladenöffnungszeiten.",
            chout_confirm: "Hier können Sie Ihre Eingaben auf Richtigkeit kontrollieren, bevor Sie den Vorgang durch Drücken der Schaltfläche <b>Bestätigen</b> abschliessen. Du måste <b>godkänna watski\'s avtal</b> genom att kryssa i rutan. Efter att du godkänt kommer vi skicka en <b>orderbekräftelse</b> till din angiva mailadress."
		}
	};

	function now() {
		return (new Date).getTime();
	}
	watski.now=now;
	
	/*
	* Snatched from jquery.cookie, author Klaus Hartl (klaus.hartl@stilbuero.de)
	*/
	watski.cookie = function (key, value, options) {	
		// key and value given, set cookie...
		if (arguments.length > 1 && (value === null || typeof value !== "object")) {
			if(!options) options = {};
			
			if (value === null) {
				options.expires = -1;
			}

			if (typeof options.expires === 'number') {
				var days = options.expires, t = options.expires = new Date();
				t.setDate(t.getDate() + days);
			}

			return (document.cookie = [
				encodeURIComponent(key), '=',
				options.raw ? String(value) : encodeURIComponent(String(value)),
				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
				options.path ? '; path=' + options.path : '',
				options.domain ? '; domain=' + options.domain : '',
				options.secure ? '; secure' : ''
			].join(''));
		}

		// key and possibly options given, get cookie...
		options = value || {};
		var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
		return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
	};
	
	watski.chooseStore = function(id) {
		watski.cookie("yourStore",id,{path:"/",expires:3650});
	};
	watski.unchooseStore = function() {
		watski.cookie("yourStore",null,{path:"/",expires:3650});
	};
	
	/**
	* box(obj options) - display a popup box
	*  options
	*    mod: <bool> - if a modular popup box
	*    width: <int> - sets the width, max is 477;
	*    head: <string> - sets the header of the box
	*    msg: <string> - the content of the box
	*    close: <bool> - true will close the box
	*/
	watski.box = function(o) {
		!o&&(o={});
		if(o.close){if(!_box.box)return;_box.box.style.display="none";_box.mod&&(_box.mod.style.display="none");return}
		if(!o.width) o.width = 477;
		if(!_box.box) {var b=_box.box=document.createElement("div");b.id="popBox";b.style.width = o.width+"px";var t=_box.head=document.createElement("div");t.id="popBoxHeader";b.appendChild(t);t=_box.countent=document.createElement("div");t.id="popBoxContent";if(navigator.appVersion.indexOf("MSIE 7.")!=-1)t.style.paddingTop = "37px";b.appendChild(t);t=document.createElement("div");t.id="popBoxBottom";t.innerHTML = "<div></div>";b.appendChild(t);document.body.appendChild(b);}
		else {_box.box.style.width = o.width+"px";_box.box.style.display="block";}
		var ht = "";
		if(o.head) ht = o.head;
		_box.head.innerHTML = ht+"<a href=\"\" onclick=\"$w.box({close:true});return false;\"></a>";
		if(o.msg) _box.countent.innerHTML = o.msg;
		if(o.mod){if(!_box.mod){var m=_box.mod=document.createElement("div");m.id="popMod";document.body.appendChild(m);}else{_box.mod.style.display="block";}}else{_box.mod&&(_box.mod.style.display="none")}
	};
	
	/**
	* tooltip(obj options)
	*  options
	*    e: <element> - the element to hover from
	*    text: <string> - The text in the tooltip
	*    right: <bool> - if true the tooltip "poniter" will be to the right
	*/
	watski.tooltip = function(o) {
		if(o===null)  {_tt.m&&(_tt.m.style.display="none");return} //close
		
		var e = o.e;
		if(e===null) return;
		
		if(!_tt.m) {
			var m=_tt.m=document.createElement("div");
			m.id="ToolTipViewer";
			var t=document.createElement("div");
			t.id="ToolTipViewerTop";
			m.appendChild(t);
			t=_tt.c=document.createElement("div");
			t.id="ToolTipViewerMiddle";
			m.appendChild(t)
			t=_tt.b=document.createElement("div");
			t.id="ToolTipViewerBottom";
			m.appendChild(t)
			
			bind(m,"mouseover",function(){$w.tooltip(null)});
			bind(document.body,"click",function(){$w.tooltip(null)});
			
			document.body.appendChild(m);
		}
		
		var b = _tt.b;
		if(o.right) {
			b.className = "flipHorizontal";
			b.style.backgroundPosition = "2px 0";
		}
		else {
			b.className = "";
			b.style.backgroundPosition = "0 0";
		}
		
		_tt.c.innerHTML = o.text;
		var s = _tt.m.style;
		var of = getAbsoluteOffset(e);
		if(o.right)
			s.left= (of.offLeft - 170) + "px";
		else
			s.left= (of.offLeft - 15) + "px";
		s.display="block";
		s.top = (of.offTop - _tt.m.offsetHeight) + "px";
		bind(e,"mouseout",function(){$w.tooltip(null)});
	}
	
	function getAbsoluteOffset(e)
	{
		for(var b=0,c=0;e;)
		{
			b+=e.offsetTop;
			c+=e.offsetLeft;
			e=e.offsetParent;
		}
		return { offTop:b, offLeft:c };
	}

	function bind(element,event,callback)
	{
		var onevent="on"+event;
		if(element.addEventListener)
			element.addEventListener(event,callback,false);
		else if(element.attachEvent)
			element.attachEvent(onevent,callback);
		else
		{
			var e=element[onevent];
			element[onevent]=function()
			{
				var h=e.apply(this,arguments),cbk=callback.apply(this,arguments);
				return h==undefined?cbk:(cbk==undefined?h:cbk&&h);
			}
		}
	}
	watski.bind = bind;
	
	function preventDef(e){if(window.event){e.returnValue = false} else {e.preventDefault()}}
	watski.preventDef = preventDef;
	
	function getXhr() {var o = null;try {o=new XMLHttpRequest()}catch(e){try{o=new ActiveXObject("Msxml2.XMLHTTP")}catch(E){o=false}}return o}
	watski.getXhr = getXhr;

// Expose!
window.$w = window.watski = watski;
})(window);

