/*
function WriteAddToTrolleyButton(id) {
	var qty=1;
	var label='Lägg i varukorgen';
	document.write('<input'+(!Trolley.CanAdd(id,qty) ? ' disabled="disabled"' : '')+' onclick="Trolley.Add(\''+id+'\','+qty+'); this.disabled=!Trolley.CanAdd(\''+id+'\','+qty+');" type="button" value="'+label+'" title="" style="cursor:default" />');
}
*/

var Trolley=new function() {





	var loc=(location.pathname.indexOf('/')>=0 ? location.pathname.split('/')[1] : '');




	var ProductViewRelativeURL='/msx/proddb.nsf/msx.products';
	var DiscountAgentRelativeURL='/tmt/shop.nsf/msx.discount.get';
//	var CashierWindowAbsoluteURL='http://www.msxff.se/tmt/shop.nsf/dibs.shop/'; //must be a public URL on port 80 or 20080 (for DIBS callback request)
	var CashierWindowAbsoluteURL='http://www.msxff.se/tmt/shop.nsf/msx.shop/'; //must be a public URL on port 80 or 20080 (for DIBS callback request)

//Removed 2010-11-22 by Martin Johansson/CIKADO
//	var CashierPageRelativeURL='8CA9A4BE73FB9ACEC125764B0050C7B9'; //'597BFBED921D01CCC125764B005125E2';
//	var currency='SEK';
//	var lang='se';

	var freight=0;
	var shopid='90007131';

	var winWidth=560;
	var winHeight=648; //700;

	var country=''; //Added 2011-08-24 by Martin Johansson/CIKADO
	vat=0.25; //Added 2011-08-24 by Martin Johansson/CIKADO


	var version=2;  //Added 2011-08-25 by Martin Johansson/CIKADO	



//Added 2010-11-22 by Martin Johansson/CIKADO
	var LM={
		map:{},
		Get:function(key) {
			var text=this.map[key];
			return (text ? text : '['+key+']');
		}
	};
	var CashierPageRelativeURL=null;
	var currency=null;
	var lang=(document.documentElement ? document.documentElement.getAttribute('lang') : null);



		


	switch (lang) {
		case 'sv': 
			CashierPageRelativeURL='8CA9A4BE73FB9ACEC125764B0050C7B9';
			currency='SEK'; 
			country='SE'; //Added 2011-08-24 by Martin Johansson/CIKADO
			LM.map={

				BASKET:'Varukorg',
				ARTICLES:'Artiklar',
				GOTOBASKET:'Till varukorgen',

				NOAMOUNTTOPAY:'Inget belopp att betala',
				CASHIER:'Kassa',

				ART_TITLE:'Benämning',
				ART_NO:'Art nr',
				ART_PRICE:'Pris',
				ART_COUNT:'Antal',
				ART_SUM:'Summa',
				ART_REMOVE:'Ta bort',

				TROLLEYISEMPTY:'Kundvagnen är tom',

				DISCOUNT:'Rabatt',
				FREIGHT:'Frakt',
				VAT:'Moms',
				TOTAL:version>=2 ? 'Totalt' : 'Totalt, inkl moms',

				'':''
			}
			break;
		case 'da': 
			CashierPageRelativeURL='77BFD9FD4DF5E04FC12577C2003430E8';
			currency='DKK'; 
			country='DK'; //Added 2011-08-24 by Martin Johansson/CIKADO
			LM.map={

				BASKET:'Varekurv',
				ARTICLES:'Artikler',
				GOTOBASKET:'Til varekurven',

				NOAMOUNTTOPAY:'Intet beløb at betale',
				CASHIER:'Kasse',

				ART_TITLE:'Titel',
				ART_NO:'Art nr',
				ART_PRICE:'Pris',
				ART_COUNT:'Antal',
				ART_SUM:'Sum',
				ART_REMOVE:'Fjern',

				TROLLEYISEMPTY:'Varekurven er tom',

				DISCOUNT:'Rabat',
				FREIGHT:'Fragt',
				VAT:'Moms',
				TOTAL:version>=2 ? 'Totalt' : 'Totalt, inkl moms',

				'':''
			}
			break;
		default: 
			lang='en';
			CashierPageRelativeURL='DEA5D888830DF5A7C12577E30045A1F8';
			currency='EUR'; 
		
			//Added 2011-08-24 by Martin Johansson/CIKADO
			var countryCookie='tmt.shop.country'+(loc ? '.'+loc : ''); 
			country=GetCookie(countryCookie);

			LM.map={

				BASKET:'Shopping cart',
				ARTICLES:'Articles',
				GOTOBASKET:'Go to shopping cart',

				NOAMOUNTTOPAY:'No amount to pay',
				CASHIER:'Cashier',

				ART_TITLE:'Title',
				ART_NO:'Art no',
				ART_PRICE:'Price',
				ART_COUNT:'Qty',
				ART_SUM:'Sum',
				ART_REMOVE:'Remove',

				TROLLEYISEMPTY:'Shopping cart is empty',

				DISCOUNT:'Discount',
				FREIGHT:'Freight',
				VAT:'VAT',
				TOTAL:version>=2 ? 'Total' : 'Total, incl VAT',

				'':''
			}
			break;
	}





	if (CashierPageRelativeURL) { //Added 2010-11-22 by Martin Johansson/CIKADO

		var elts=document.getElementsByTagName('base');
		if (elts.length>0) CashierPageRelativeURL=elts[0].href+'../../tmt.view/'+CashierPageRelativeURL;

	}




//	var trolleyname=(location.pathname.indexOf('/')>=0 ? location.pathname.split('/')[1] : '');
//	var cookie='tmt.trolley'+(trolleyname ? '.' : '')+trolleyname;
//	var loc=(location.pathname.indexOf('/')>=0 ? location.pathname.split('/')[1] : '');
	var cookie='tmt.shop.trolley'+(loc ? '.'+loc : '');
	var discountCookie='tmt.shop.discount'+(loc ? '.'+loc : '');
	var currencyCookie='tmt.shop.currency'+(loc ? '.'+loc : ''); //Added 2010-11-30 by Martin Johansson/CIKADO

	var me=this;

	var articles=new function() {
		var c=GetCookie(cookie);
		if (c) {
			var a=c.split(';');
			for (x in a) {
				var id=unescape(a[x].split(':')[0]);
				var price=new Number(a[x].split(':')[1].split('x')[0]).valueOf();
				var qty=new Number(a[x].split('x')[1]).valueOf();
				var art=new Article(id,price);
				this[id]=art;
				art.qty=qty;
			}
		}
	}

	function CheckCurrency() { //Added 2010-11-30 by Martin Johansson/CIKADO

		if (currency!=GetCookie(currencyCookie)) {

			var updateTrolley=false;
			for (x in articles) if (articles[x]) {
				var dbart=ArticleDatabase.Get(articles[x].id);
				if (dbart && articles[x].Update(dbart)) updateTrolley=true; //update with fresh price from the server
			}
			if (updateTrolley) UpdateCookie();
			SetCookie(currencyCookie,currency);
		}
	}

	this.GetXML=function() {
		var a=new Array();
		for (x in articles) if (articles[x]) a.push(articles[x].GetXML());
//Modified 2011-08-25 by Martin Johansson/CIKADO		
//		return '<trolley sum="'+GetSum()+'" discount="'+GetDiscount()+'%" freight="'+GetFreight()+'" currency="'+this.GetCurrency()+'">'+a.join('')+'</trolley>';
		var tax=(typeof(vatcountries)=='undefined' || !country || vatcountries[country] ? 'true' : 'false');
		return '<trolley sum="'+GetSum()+'" discount="'+GetDiscount()+'%" freight="'+GetFreight()+'" currency="'+this.GetCurrency()+'" tax="'+tax+'" vat="'+vat+'" version="'+version+'">'+a.join('')+'</trolley>';
	}

	function GetCount() {
		var i=0;
		for (x in articles) if (articles[x]) i++;
		return i;
	}

	function GetQty() {
		var i=0;
		for (x in articles) if (articles[x]) i+=articles[x].qty;
		return i;
	}

	function GetSum(includeVAT) {
		var total=0;
		for (x in articles) if (articles[x]) total+=articles[x].GetSum();
//Modified 2011-08-25 by Martin Johansson/CIKADO		
//		return total;
		return total*(1+(version>=2 && includeVAT ? vat : 0));
	}

	function GetFreight() {
		var count=GetCount();
		return (count==0 ? 0 : freight);
	}

	this.GetCurrency=function() {
		return currency;
	}

//Removed 2011-08-26 by Martin Johansson/CIKADO
/*
	this.GetTotal=function() {
		//return GetSum()+GetFreight();
		var total=GetSum();
		total-=total*GetDiscount()/100;
		return total+GetFreight();
	}
*/

	function Article(id,price) {

		this.id=id;
		this.price=price;
		this.qty=0;

		this.Update=function(dbart) {
			var updated=false;
			if (this.price!=dbart.price) {
				this.price=dbart.price;
				updated=true;
			}
			if (this.qty>dbart.stock) {
				this.qty=dbart.stock;
				updated=true;
			}
			return updated;
		}
		this.GetSum=function() {
			return this.price*this.qty;
		}
		this.GetXML=function() {
			var dbart=ArticleDatabase.Get(this.id);
			return (!dbart ? null : '<article id="'+this.id+'" title="'+dbart.title+'" no="'+dbart.no+'" price="'+this.price+'" qty="'+this.qty+'"/>');
		}
		this.SetQty=function(qty) {
			var dbart=ArticleDatabase.Get(this.id);
			if (dbart) {
				if (qty>dbart.stock) this.qty=dbart.stock; else this.qty=qty;
			}
			else this.qty=0;
			//return (this.qty<dbart.stock);
		}
		this.CanSetQty=function(qty) {
			var dbart=ArticleDatabase.Get(this.id);
			return (qty<=(dbart ? dbart.stock : 0));
		}
	}

	function GetArticle(id) {

		var art=articles[id];
		if (!art) {
			var dbart=ArticleDatabase.Get(id);
			if (dbart) {
				art=new Article(id,dbart.price); 
				articles[id]=art;
			}
		}
		return art;
	}

	this.CanAdd=function(id,qty) {
		var art=GetArticle(id);
		if (art && !isNaN(qty) && qty>=1) return art.CanSetQty(art.qty+qty); else return false;
	}

	this.Add=function(id,qty) {

		var art=GetArticle(id);
		if (art && !isNaN(qty) && qty>=1) art.SetQty(art.qty+qty); //art.qty+=qty;		
		Update(true);
/*
		if (art && !isNaN(qty) && qty>=1) {
			var hasmore=art.SetQty(art.qty+qty);
			Update(true);
			return hasmore;			
		}
		return false;
*/
	}

	this.CanSet=function(id,qty) {
		var art=GetArticle(id);
		if (art && !isNaN(qty) && qty>=0) return art.CanSetQty(qty); else return false;
	}

	this.Set=function(id,qty) {

		var art=GetArticle(id)
		if (art && !isNaN(qty) && qty>=0) art.SetQty(qty); //art.qty=qty;
		Update(true);
/*
		if (art && !isNaN(qty) && qty>=1) {
			var hasmore=art.SetQty(qty);
			Update(true);
			return hasmore;			
		}
		return false;
*/
	}

	var onlyWholeQty=true;
	this.TrySet=function(id,input) {
		var qty=Locale.ToNumber(input.value);
		if (isNaN(qty) || new Number(qty).valueOf()<0) {
			var art=articles[id];
			input.value=(art ? art.qty : 0);
			return false;
		}
		if (onlyWholeQty) qty=Math.round(qty);
		this.Set(id,qty.valueOf());
		return true;
	}

	this.Remove=function(id) {

		if (articles[id]) articles[id]=null;
		Update(true);
	}

	this.Empty=function() {

		articles=new function() {};
		Update(true);
	}


//	var discount=GetDiscount();
	function GetDiscount() {

		var c=GetCookie(discountCookie);
		if (c) {
			var d=parseInt(c.substring(c.indexOf('=')+1),10);
			if (!isNaN(d)) return d;
		}
		return 0;
	}

	this.GetDiscountCode=function() {
		var c=GetCookie(discountCookie);
		return (c ? c.split('=')[0] : '');
	}

	this.SetDiscountCode=function(code) {

		if (!code) {
			//discount=0;
			RemoveCookie(discountCookie);
			Update(true);
			return;
		}

		var a=new Array();
		a.push('code='+escape(code));

		var http=tmt.CreateXMLHttp();

//Modified 2010-11-22 by Martin Johansson/CIKADO
//		http.open('POST',DiscountAgentRelativeURL+'?open&nocache='+new Date().valueOf(),false);
		http.open('POST',DiscountAgentRelativeURL+'?open&lang='+lang+'&nocache='+new Date().valueOf(),false);

		http.send(a.join('&'));
		if (http.status>=400) return alert('HTTP Error: '+http.statusText+'\n\n'+http.responseText.substring(0,1000));

		var rv=parseInt(http.responseText,10);
		if (!isNaN(rv)) {
			//discount=rv; 
			SetCookie(discountCookie,code+'='+rv);
			Update(true);
		}
		else {
//			alert('Koden "'+code+'" är ej en giltig rabattkod.');
			alert(http.responseText);
		}	
	}

	function Update(complete) {

//Modified 2010-11-30 by Martin Johansson/CIKADO
//		var a=new Array();
//		for (x in articles) if (articles[x]) a.push(escape(articles[x].id)+':'+articles[x].price+'x'+articles[x].qty);
//		if (a.length==0) RemoveCookie(cookie,'/'); else SetCookie(cookie,a.join(';'),null,'/');
		UpdateCookie();

		try {
			var o=document.getElementById('trolley');
			if (o) {
				o.innerHTML=me.GetInnerHTML();
				o.style.visibility=(GetCount()==0 ? 'hidden' : 'visible');
			}

			if (complete) {
				var o=document.getElementById('trolley-table');
				if (o) o.innerHTML=me.GetTableInnerHTML();
			}

			return true;
		}
		catch (e) {
			if (complete) location.reload(false);
			return false;
		}
	}

	function UpdateCookie() { //Added 2010-11-30 by Martin Johansson/CIKADO
		var a=new Array();
		for (x in articles) if (articles[x]) a.push(escape(articles[x].id)+':'+articles[x].price+'x'+articles[x].qty);
		if (a.length==0) RemoveCookie(cookie,'/'); else SetCookie(cookie,a.join(';'),null,'/');
	}

	this.GetInnerHTML=function() {
//Modified 2010-11-22 by Martin Johansson/CIKADO
//		return 'Varukorg: '+Locale.FormatNumber(GetQty())+' artiklar, '+FormatPrice(GetSum(),0)+' <button onclick="location.href=\''+CashierPageRelativeURL+'\'">Till varukorgen</button>';
		return LM.Get('BASKET')+': '+Locale.FormatNumber(GetQty())+' '+LM.Get('ARTICLES').toLowerCase()+', '+FormatPrice(GetSum(true),0)+' <button onclick="location.href=\''+CashierPageRelativeURL+'\'"'+(CashierPageRelativeURL ? '' : ' disabled="disabled"')+'>'+LM.Get('GOTOBASKET')+'</button>';
	}

	this.GetHTML=function() {
		return '<span id="trolley"'+(GetCount()==0 ? ' style="visibility:hidden;"':'')+'>'+this.GetInnerHTML()+'</span>';
	}

	var ArticleDatabase=new function() {

		var articles=new function() {};

		this.Get=function(id) {			
			var art=articles[id];
			if (!art) {
				art=DownloadArticle(id);
				if (art) articles[id]=art;
			}
			return art;
		}
		function DownloadArticle(id) {

			try {

//Modified 2010-11-29 by Martin Johansson/CIKADO
//				var url=ProductViewRelativeURL+'?readviewentries&count=1&startkey='+escape(id)+'&nocache='+new Date().valueOf();
				var url=ProductViewRelativeURL+'.'+currency.toLowerCase()+'?readviewentries&count=1&startkey='+escape(id)+'&nocache='+new Date().valueOf();

				var http=tmt.CreateXMLHttp();
				http.open('GET',url,false);
				http.send('');
				if (http.status>=400) return alert('HTTP Error: '+http.statusText+'\n\n'+http.responseText.substring(0,1000));

				var viewentries=http.responseXML.documentElement.getElementsByTagName('viewentry');
				if (viewentries.length==0) return null;

				var art=ParseArticle(viewentries.item(0));
				//alert(art.id+', '+art.no+', '+art.title+', '+art.price+', '+art.stock);
				return (art.id!=id ? null : art);
			}
			catch (e) {
				alert(e.message);
				return null;
			}
		}

		function ParseArticle(elt) {

			var nodes=elt.getElementsByTagName('entrydata');
			var art=new function() {};
			art.id=ParseText(nodes[0]);
			art.no=ParseText(nodes[1]);
			art.title=ParseText(nodes[2]);

//Modified 2011-08-25 by Martin Johansson/CIKADO
//			art.price=ParseNumber(nodes[3]);
			art.price=ParseNumber(nodes[3])/(1+(version>=2 ? vat : 0));

			art.stock=ParseNumber(nodes[4]);
			return art;	
		}

		function ParseText(elt) {
			return elt.getElementsByTagName('text').item(0).firstChild.nodeValue;
		}

		function ParseNumber(elt) {
			return new Number(elt.getElementsByTagName('number').item(0).firstChild.nodeValue).valueOf();
		}
	}

	this.GetTableInnerHTML=function() {

		var updateTrolley=false;

		var count=GetCount();
		var freight=GetFreight();
		var discount=GetDiscount();
		var total=0;//freight;

		var s='<table cellspacing="0">';
		s+='<thead>';
		s+='<tr>';

//Modified 2010-11-22 by Martin Johansson/CIKADO
//		s+='<td style="width:auto;">Benämning</td>';
//		s+='<td style="width:80px;">Art nr</td>';
//		s+='<td align="right" style="width:80px;">Pris</td>';
//		s+='<td align="right" style="width:40px;">Antal</td>';
//		s+='<td align="left" style="width:12px;"></td>';
//		s+='<td align="right" style="width:100px;">Summa</td>';
		s+='<td style="width:auto;">'+LM.Get('ART_TITLE')+'</td>';
		s+='<td style="width:80px;">'+LM.Get('ART_NO')+'</td>';
		s+='<td align="right" style="width:80px;">'+LM.Get('ART_PRICE')+'</td>';
		s+='<td align="right" style="width:40px;">'+LM.Get('ART_COUNT')+'</td>';
		s+='<td align="left" style="width:12px;"></td>';
		s+='<td align="right" style="width:100px;">'+LM.Get('ART_SUM')+'</td>';

		s+='</tr>';
		s+='</thead>';
		s+='<tbody>';

//Modified 2010-11-30 by Martin Johansson/CIKADO
//		if (count==0) s+='<tr><td colspan="6">Kundvagnen är tom</td></tr>';
		if (count==0) s+='<tr><td colspan="6">'+LM.Get('TROLLEYISEMPTY')+'</td></tr>';
		else {
			for (x in articles) if (articles[x]) {

				var dbart=ArticleDatabase.Get(articles[x].id);
				if (dbart) {

					if (articles[x].Update(dbart)) updateTrolley=true; //update with fresh price from the server

					var sum=articles[x].GetSum();

					s+='<tr>';
					s+='<td>'+dbart.title+'</td>';
					s+='<td>'+dbart.no+'</td>';
					s+='<td align="right">'+FormatPrice(articles[x].price,2)+'</td>';
					s+='<td align="right"><input value="'+Locale.FormatNumber(articles[x].qty)+'" onfocus="this.select();"'+
					' onchange="return Trolley.TrySet(\''+articles[x].id+'\',this);"'+
					' /></td>';
//Modified 2010-11-22 by Martin Johansson/CIKADO
//					s+='<td align="left"><a href="#remove" onclick="Trolley.Remove(\''+articles[x].id+'\'); return false" class="remove" title="Ta bort">x</a></td>';
					s+='<td align="left"><a href="#remove" onclick="Trolley.Remove(\''+articles[x].id+'\'); return false" class="remove" title="'+LM.Get('ART_REMOVE')+'">x</a></td>';
					s+='<td align="right">'+FormatPrice(sum,2)+'</td>';
					s+='</tr>';

					total+=sum;
				}
				else {
					articles[x]=null; //it has been deleted in the db
					updateTrolley=true;
				}
			}
		}
		s+='</tbody>';
		s+='<tfoot>';

//Removed 2011-08-24 by Martin Johansson/CIKADO
/*
		if (discount!=0) {

			var d=total*discount/100;
			total-=d;

			s+='<tr>';

//Modified 2010-11-22 by Martin Johansson/CIKADO
//			s+='<td colspan="4" align="right">Rabatt ('+discount+'%)</td>';
			s+='<td colspan="4" align="right">'+LM.Get('DISCOUNT')+' ('+discount+'%)</td>';

			s+='<td colspan="2" align="right">'+FormatPrice(-d,2)+'</td>';
			s+='</tr>';			
		}

		s+='<tr>';

//Modified 2010-11-22 by Martin Johansson/CIKADO
//		s+='<td colspan="4" align="right">Frakt</td>';
		s+='<td colspan="4" align="right">'+LM.Get('FREIGHT')+'</td>';

		s+='<td colspan="2" align="right">'+FormatPrice(freight,2)+'</td>';
		s+='</tr>';
*/



//Added 2011-08-24 by Martin Johansson/CIKADO		
		if (version>=2) {

			var v=0;
			if (typeof(vatcountries)=='undefined' || !country || vatcountries[country]) {
				v=total*vat;
				total+=v;
			}

			s+='<tr>';
			s+='<td colspan="4" align="right">'+LM.Get('VAT')+'</td>';
			s+='<td colspan="2" align="right">'+FormatPrice(v,2)+'</td>';
			s+='</tr>';
		}
		if (discount!=0) {

			var d=total*discount/100;
			total-=d;

			s+='<tr>';
			s+='<td colspan="4" align="right">'+LM.Get('DISCOUNT')+' ('+discount+'%)</td>';
			s+='<td colspan="2" align="right">'+FormatPrice(-d,2)+'</td>';
			s+='</tr>';			
		}


//Added 2011-08-26 by Martin Johansson/CIKADO
		s+='<tr>';
		s+='<td colspan="4" align="right">'+LM.Get('FREIGHT')+'</td>';
		s+='<td colspan="2" align="right">'+FormatPrice(freight,2)+'</td>';
		s+='</tr>';


		s+='<tr>';

//Modified 2010-11-22 by Martin Johansson/CIKADO
//		s+='<td colspan="4" align="right">Totalt, inkl moms</td>';
		s+='<td colspan="4" align="right">'+LM.Get('TOTAL')+'</td>';

		s+='<td colspan="2" align="right">'+FormatPrice(total+freight,2)+'</td>';
		s+='</tr>';

		s+='</tfoot>';
		s+='</table>';

//Modified 2010-11-30 by Martin Johansson/CIKADO
//		if (updateTrolley) Update(false);
		if (updateTrolley) UpdateCookie();
		var o=document.getElementById('trolley');
		if (o) o.style.visibility='hidden';

		return s;
	}

	this.GetTableHTML=function() {
		return '<div id="trolley-table">'+this.GetTableInnerHTML()+'</div>';
	}

	function FormatPrice(price,fixed) {
		return new Array(Locale.FormatNumber(price,fixed),me.GetCurrency()).join(' ');
	}

	var Locale=new function() {

		this.DecimalSep=new Number(1.1).toLocaleString().substr(1,1);
		this.ThousandSep=new Number(1111).toLocaleString().substr(1,1);
		if (!isNaN(parseInt(this.ThousandSep))) this.ThousandSep=''; //Chrome

		this.FormatNumber=function(number,fixed) {
			var n=new Number(number);
			if (typeof(fixed)=='undefined') fixed=NumberOfDecimals(n);
			var s=n.toFixed(fixed);
			return IntegerToString(s,this.ThousandSep)+(fixed<=0 ? '' : this.DecimalSep+s.substr(s.length-fixed));
		}

		this.ToNumber=function(s) {

			if (this.DecimalSep==String.fromCharCode(160)) s=s.split(String.fromCharCode(32)).join(String.fromCharCode(160)); //space key generates 32...

			var a=new Array();
			for (var i=0; i<s.length; i++) {
				var c=s.charCodeAt(i);
				if (c>=48 && c<=57) a.push(String.fromCharCode(c)); else if (String.fromCharCode(c)==this.DecimalSep) a.push('.'); 
			}
			return new Number(a.join(''));
		}

		function NumberOfDecimals(n) {
			var s=n.toString();
			return (s.lastIndexOf('.')<0 ? 0 : s.length-s.lastIndexOf('.')-1);
		}

		function IntegerToString(n,thousandSep) {
			var s=parseInt(n).toString();
			var groups=new Array();
			for (var i=s.length; i>=1; i-=3) groups.unshift(i-3<0 ? s.substring(0,i) : s.substring(i-3,i));
			return groups.join(thousandSep);
		}
	}

	this.OpenCashier=function() {

		//Modified 2011-08-26 by Martin Johansson/CIKADO
//		if (this.GetTotal()<=0) {
		if (GetSum()<=0) {


//Modified 2010-11-22 by Martin Johansson/CIKADO
//			alert('Inget belopp att betala.'); //DIBS will not accept zero or negative amount...
			alert(LM.Get('NOAMOUNTTOPAY')+'.'); //DIBS will not accept zero or negative amount...

			return false;
		}

		var inputs=new Array();
		inputs.push(CreateHiddenElement('tmt.auth.session',GetCookie('tmt.auth.session')));
		inputs.push(CreateHiddenElement('tmt.lang',lang));
		inputs.push(CreateHiddenElement('tmt.country',country)); //Added 2011-08-25 by Martin Johansson/CIKADO
		inputs.push(CreateHiddenElement('tmt.shop.id',shopid));
		inputs.push(CreateHiddenElement('tmt.shop.trolley',this.GetXML()));
//		inputs.push(CreateHiddenElement('tmt.shop.trolley.total',this.GetTotal()));
//		inputs.push(CreateHiddenElement('tmt.shop.trolley.currency',this.GetCurrency()));
		inputs.push(CreateHiddenElement('tmt.shop.discountcode',this.GetDiscountCode()));

		var winName='cashierUniqueName';

//Modified 2010-11-22 by Martin Johansson/CIKADO
//		winName=OpenNewNamedWindow(winName,winWidth,winHeight,'#1F497D','Kassa');
		winName=OpenNewNamedWindow(winName,winWidth,winHeight,'#1F497D',LM.Get('CASHIER'));

		if (winName) {
			var form=document.createElement('FORM');
			form.method='POST';
			form.action=CashierWindowAbsoluteURL;
			form.target=winName;
			form.style.display='none';
			for (x in inputs) form.appendChild(inputs[x]);
			form=document.body.appendChild(form)
			form.submit();
			form=document.body.removeChild(form);
			return true;
		}
		return false;
	}

	function CreateHiddenElement(name,value) {
		var input=document.createElement('INPUT');
		input.name=name;
		input.value=value;
		input.type='hidden';
		return input;
	}

	CheckCurrency(); //Added 2010-11-30 by Martin Johansson/CIKADO
}

function OpenNewNamedWindow(requestedName,width,height,bgcolor,title) {

	if (width>screen.availWidth*0.9) width=screen.availWidth*0.9;
	if (height>screen.availHeight*0.9) height=screen.availHeight*0.9;

	var args='resizable,scrollbars,status,width='+width+',height='+height+',left='+(screen.availWidth-width)/2+',top='+(screen.availHeight-height)/2;

	var win=null;
	try {
		win=window.open('',requestedName,args);
	} 
	catch(ex) {  //we have a named window but are not allowed to tuch it... (seen on MSIE8)
		var i=0;
		if (requestedName.lastIndexOf('_')>=0) {
			i=parseInt(requestedName.substring(requestedName.lastIndexOf('_')+1),10);
			if (isNaN(i)) i=0; else requestedName=requestedName.substring(0,requestedName.lastIndexOf('_'));
		}
		return OpenNewNamedWindow(requestedName+'_'+(i+1),width,height,bgcolor,title);
	};

	if (win==null) return null; //pop-up blocker...
	win.focus(); //focus may not work for some Safari, Chrome and Opera...

	try {
/* this did not work becuse Safari also shows the alert, sometimes...
		if (!win.alert) { //focus does not work for Chrome...
			alert('This window is already open.');
			return null;
		}
*/
		var href=win.location.href;
		if (href=='about:blank' || (window.opera && href==win.opener.location.href)) { //if true, we have a new unused window

			try {
				win.document.body.style.backgroundColor=bgcolor;
				win.document.body.style.overflow='auto';
				win.document.body.style.cursor='wait';
				win.document.title=title;
			}
			catch(ex) {}
			return requestedName; 		
		}
	} 
	catch(ex) {};

	return null;
}


function GetCookie(name) {
	var key=escape(name)+'=';
	var cookies=document.cookie.split('; ').join(';').split(';');
	for (x in cookies) if (cookies[x]==escape(name)) return ''; else if (cookies[x].indexOf(key)==0) return unescape(cookies[x].substring(cookies[x].indexOf(key)+key.length));
	return null;
}
function SetCookie(name,value,expires,path,domain,secure) { //string,string,date,string,string,boolean
	document.cookie=escape(name)+'='+escape(value)+
	(expires ? ';expires='+expires.toGMTString() : '')+
	(path ? ';path='+escape(path) : '')+
	(domain ? ';domain='+escape(domain) : '')+
	(secure ? ';secure' : '')+
	'';
}
function RemoveCookie(name,path,domain) {
	SetCookie(name,'',new Date(0),path,domain);
}

