//alert("version 0.71");

function Reduction(ship){
	var me=this,sh=ship,vid=_i(getVID()),isFalkPlan=false,isStentec=con([4092,4235,16443]),isSticker=false,isTalens=con([3823,7179]),isDVD=false,isSabni=con([9908]),isTopa=con([7586]);
	var lang=getLanguageIndex(),bag=getBag(),interval=5,amount=0,last=0,c2=0,a2=0,l2=0,counter=0;

	me.enabled=(isFalkPlan||isStentec||isSticker||isTalens||isDVD||isSabni||isTopa);
	me.validate=false;
	me.label="";
	me.price=0.0;
	me.count=0;
	me.setAmount=function(v){
		amount=parseFloat(v);
		if(isTalens||isSabni)bag.set("c.order.amount",amount);
	};
	me.getLabel=function(){
		var s="";
		if(me.enabled){
			var se="every 5th sticker for free&nbsp;(-)&nbsp;",m=[se,se,"Jeder fünfte Aufkleber kostenlos&nbsp;",se,se,se];
			if(isTalens)s="insurance fee";
			else if(isDVD)s="actiekorting";
			else if(isSticker)s=m[lang];
			else if(isSabni)s="hergebruikpremie bilgekaart(en)&nbsp;(-)&nbsp;";
		}return s
	};
	me.calculate=function(d){
		if(!isSabni)me.price=0.0;
		if(me.enabled){
			me.count=0;
			amount=(isSticker)?2.45:0;interval=5;last=0;c2=0;a2=0;l2=0;counter=0;
			var it=getIterator();
			while(it.next())doAdd(it.get("id"),it.get("quantity"),it.get("description"),it.get("pricevalue"));
			if(isTalens){
				me.price=-parseFloat(bag.get("c.order.amount"));
				if(isNaN(me.price))me.price=0;
				if(d!=null&&d)bag.set("c.order.amount",0)
			}else if(isDVD){
				if(counter>1||c2>1){
					if(counter%2>0){
						counter--;
						amount-=last;
					}
					if(c2%2>0){
						c2--;
						a2-=l2;
					}
					me.price=(amount-counter*4.5)+(a2-c2*12);
				}
			}else if(isSticker)me.price=parseInt(counter/interval)*amount;
		}return me.price;
	};

	function validSticker(){
		var a="Sie haben das Recht zu einem kostenlosen Aufkleber. Gehen Sie zurück zum E-shop und wählen Sie Ein.",b="You are entitled to receive one sticker for free. Return to the shop and select one.";
		var m=[b,b,a,b,b,b];
		var ok=true,c=getCount();
		ok=(c-(_i(c/5)*5))!=4;
		if(!ok)alert(m[lang]);
		return ok;
	}

	function validStentec(){
		var ok=false,sw=true,a="You have ordered solely download products. Please select the option 'Downloads*' in the shipping costs menu.",b="The option 'Downloads*' in the shipping costs menu is for orders with solely download products. Please select shipping costs that apply to you.";
		if(vid==16443){
			a="Sie haben ausschließlich Downloadprodukte bestellt. Selektieren Sie bei Versandmethode die Option 'Downloads*'.";
			b="Die Option 'Downloads*' in der Versandmethodenauswahl können Sie nur selektieren wenn Sie ausschließlich Downloadprodukte bestellt haben. Selektieren Sie bitte eine andere Option bei Versandmethode.";
		}
		var m1=["U heeft uitsluitend downloadproducten besteld. Selecteer bij Verzendkosten de optie 'downloads*'.",a,a,a,a];
		var m2=["De keuze 'downloads*' van het verzendkostenmenu is alleen van toepassing als u uitsluitend downloadproducten heeft besteld. Selecteer een andere optie bij de verzendkosten.",b,b,b,b];

		var it=getIterator(),nr,p=sh.price;
		while(it.next()){
			nr=_i(it.get("id"));
			if(isNaN(nr)||nr<7000||nr>7999){
				sw=false;
				break;
			}
		}
		if(sw&&p>0)alert(m1[lang]);
		else if(!sw&&p==0)alert(m2[lang]);
		else ok=true;
		return ok
	}

	function validFalkPlan(){
		var it=getIterator(),c=getCount(),ok=(c>=12),a="A minimum of 12 articles is required for every order. It is possible to order less articles if the price of every single article is € 27.20 or more.",m;
		var m=["U moet minimaal 12 producten bestellen. Indien u minder producten wilt bestellen, dan dient u een minimum bedrag van € 27,20 per product aan te houden.",a,a,a,a];
		if(!ok){
			while(it.next()){
				ok=(it.get("pricevalue")>=27.20);
				if(!ok)break;
			}
		}
		if(!ok)alert(m[lang]);
		return ok
	}

	function validTopa(){
		var ok=false,a="Beste klant, het minimum orderbedrag is € 36. Onder dit bedrag kunnen wij helaas geen bestellingen uitleveren.",m;
		var m=[a,a,a,a,a];
		ok=(getTotal()>=36);
		if(!ok)alert(m[lang]);
		return ok
	}

	function validTalens(){
		var m=["You exceeded the maximum number of articles of 5","You have more than 1 article in your shopping basket, please select the appropriate shipping costs.","You have only 1 article in your shopping basket, please select the appropriate shipping costs."];
		var ok=false,c=getCount(),total=getTotal(),sel=getShipSelection();
		me.setAmount(0);
		if(c>0){
			if(c>5)alert(m[0]);
			else{
				ok=(sel==1);
				if(!ok){
					if(sel%2==0){
						ok=(c==1);
						if(ok)me.setAmount(total*0.05);
						else alert(m[1]);
					}
					else{
						ok=(c>1);
						if(ok)me.setAmount(total*0.05);
						else alert(m[2]);
					}
				}
			}
		}return ok
	}

	me.valid=function(){return true};
	if(isSticker)me.valid=validSticker;
	else if(isStentec)me.valid=validStentec;
	else if(isFalkPlan)me.valid=validFalkPlan;
	else if(vid==3823)me.valid=validTalens;
	else if(isTopa)me.valid=validTopa;

	if(isSabni){
	  var v=bag.get("c.order.amount");
	  me.price=(v==null||v=='')?0:parseFloat(v);
	}

	function setShipID(v){bag.set("s.order.shipping.id",v)}
	function getShipSelection(){
		var c=getCtl("shipping");
		return(c!=null&&c.options!=null)?c.selectedIndex:0
	}
	function con(a){
		var b=false,i=0;
		for(;!b&&i<a.length;i++)b=(a[i]==vid);
		return b
	}
	function getCount(){
		var c=0,it=getIterator();
		while(it.next())c+=_i(it.get("quantity"));
		return c
	}
	function getTotal(it){
		var t=0,it=getIterator();
		while(it.next())t+=it.getNumber("linetotal");
		return t
	}
	me.getTotal=getTotal;
	me.getTotalVat=function(){
		var t=0,it=getIterator();
		while(it.next())t+=it.getNumber("vat")*0.01*it.getNumber("linetotal");
		return t
	}
	function getIterator(){return bag.iterator("s.order","article.id")}
	function doAdd(id,nr,des,price){
		if(isDVD){
			if(des.indexOf("2voor9actie")!=-1){
				counter+=parseInt(nr,10);
				amount+=price*nr;
				last=price;
			}else if(des.indexOf("2voor24actie")!=-1){
				c2+=parseInt(nr,10);
				a2+=price*nr;
				l2=price;
			}
		}else{
			var s=id.toLowerCase(),comp="",c="",i=0;
			for(;i<s.length;i++){
				c=s.charAt(i);
				if(c!=" ")comp+=c;
			}
			nr=_i(nr);
			if("s0,s1,s2,s3,s4,s5,s6,s7,s8,s9".indexOf(comp)==-1)counter+=nr;
		}
	}
}


