
// ------------------------------------
// bonbons selecteren, deselecteren etc
// ------------------------------------

var Bonbons = new Class({
	
	boxSize: 0,
	order: 0,
	bonbonNamen: { 1:'Anton', 2:'Kees', 3:'Harrie', 4:'Tom', 5:'Anna', 6:'Bianca', 7:'Famke', 8:'Pien', 9:'Hazel' },
	aantallen: { 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0 },
	removed: [],
	
	initialize: function(size)
	{
		this.boxSize = size;
		this.setBox(this.boxSize);
		this.fillBox();
		
		$('size_box_'+this.boxSize+'').checked = true;
	},
	
	checkRadio: function()
	{
		if ($('size_box_10').checked) this.setBox(10);
		if ($('size_box_16').checked) this.setBox(16);
	},
	
	setBox: function(size)
	{
		this.boxSize = size;

		// indien nu meer dan inhoud, inhoud afkappen. bewaren in aparte variabele voor later
		while($('bonbondoosje').getChildren().length>this.boxSize)
		{
			// opslaan en aantal verwerken indien het geen 0 is
			if ($('bonbondoosje').getLast().getProperty('bonbontype')==0)
			{
				// gewoon weggooien
				$('bonbondoosje').getLast().destroy();
			} else {
				// opslaan
				this.removed[this.removed.length] = $('bonbondoosje').getLast().dispose();
				// verwijderd nummer aftrekken van aantal
				this.aantallen[this.removed[this.removed.length-1].getProperty('bonbontype')]--;
			}
		}
		
		// is het doosje groter geworden, en hebben we nog iets op voorraad, dan toevoegen. eerste lege items verwijderen aan het eind
		if ($('bonbondoosje').getChildren().length && $('bonbondoosje').getChildren().length<this.boxSize && this.removed.length)
		{
			while($('bonbondoosje').getLast().getProperty('bonbontype')==0) $('bonbondoosje').getLast().destroy();
			while($('bonbondoosje').getChildren().length<this.boxSize && this.removed.length)
			{
				x = this.removed.pop()
				x.injectInside($('bonbondoosje'));
				this.aantallen[x.getProperty('bonbontype')]++;				
			}
		}
		
		// aanvullen tot juiste aantal
		this.fillBox();
				
		// checken wat de status nu is
		this.updateStatus();
	},
	
	fillBox: function()
	{
		// zolang doosje niet vol is, bijvullen met nieuwe (lege) elementen
		while($('bonbondoosje').getChildren().length<this.boxSize)
		{
			var li = this.createBonbon(false);
			li.injectInside($('bonbondoosje'));
		}
	},
	
	add: function(soort)
	{
		// is het doosje vol (laatste bonbon heeft bonbontype!=0)? laat dan een popup zien.
		var t = $('bonbondoosje').getLast().getProperty('bonbontype');
		if (t!=0)
		{
			showPopup('boxfull-'+this.boxSize+'');
		}
		else
		{
			// pak het eerste item waarvan bonbontype==0
			var e = false;
			var l = $('bonbondoosje').getChildren();
			for (var i in l) if (!e && $type(l[i])=='element' && l[i].getProperty('bonbontype')==0) e = l[i];
			// gevonden. verwisselen
			if (e)
			{
				// aantal verhogen
				this.aantallen[soort]++;
				var li = this.createBonbon(soort);
				li.replaces(e);
			}
		}
		this.updateStatus();
	},
	
	remove: function(id)
	{
		// element vinden op basis van bonbonid
		var e = false;
		var l = $('bonbondoosje').getChildren();
		for (var i in l) if (!e && $type(l[i])=='element' && l[i].getProperty('bonbonid')==id) e = l[i];
		// gevonden. verwisselen
		if (e)
		{
			// aantal verminderen
			this.aantallen[e.getProperty('bonbontype')]--;
			e.destroy();
			this.fillBox();
		}		
		this.updateStatus();
	},
	
	updateStatus: function()
	{
		// werk tekstuele weergave van bonbons bij.
		// hiervoor lopen we de lijst langs van de bonbons.
		// tel het aantal items in de bonbonlijst met deze class
		var tekst = '';
		for (var i in this.bonbonNamen)
		{
			if (this.aantallen[i])
			{
				if (tekst) tekst=tekst + ', ';
				tekst = tekst + this.aantallen[i] + 'x&nbsp;' + this.bonbonNamen[i];
			}
		}

		$('bonbonselectie').set('html',tekst);
		
		// check of bestelknop aan of uit moet.
		var t = $('bonbondoosje').getLast().getProperty('bonbontype');
		var allow = (t==0) ? false : true;
		var current = $('bestelknop').hasClass('box_full');
		
		// moet hij aan?
		if (!current && allow)
		{
			var a = new Element('a',{'href':'javascript:bonbons.sendOrder();', 'title':'Bestelling plaatsen'});
			var e = $$('#bestelknop img');
			a.wraps(e[0]);
			$('bestelknop').removeClass('box_not_full').addClass('box_full');
		}
		else if (current && !allow)
		{
			var e = $$('#bestelknop img');
			e[0].replaces(e[0].getParent());
			$('bestelknop').removeClass('box_full').addClass('box_not_full');
		}
		
	},
	
	createBonbon: function(nummer)
	{
		this.order++;
		var bonbonclass = (nummer==false) ? 0 : nummer;
		var li = new Element('li',{'bonbontype':bonbonclass, 'bonbonid':this.order});
		if (nummer==false)
		{
			var img = new Element('img',{'src':'/img/bonbons/bonbon_unknown.jpg', 'alt':'Nog geen bonbon geselecteerd', 'border':0});
			img.injectInside(li);
		}
		else
		{
			// voeg class toe aan li
			li.addClass(this.bonbonNamen[bonbonclass].toLowerCase());
			var a = new Element('a',{'title':'Verwijder deze bonbon', 'href':'javascript:bonbons.remove('+this.order+');'});
			var img = new Element('img',{'src':'/img/bonbons/bonbon_remove.gif', 'border':0});
			img.injectInside(a);
			a.injectInside(li);
		}
		return li;
	},
	
	sendOrder: function()
	{
		// de bestelling doorgeven aan het verdere formulier
		// actuele aantallen opslaan in 'order' form element
		document.box.order.value = JSON.encode(this.aantallen);
		document.box.submit();
	}
	
});

