var DecimalSeparator = ',';
if (!Number.prototype.toFixed)
{
	Number.prototype.toFixed = function(d) { var factor = Math.pow(10,d); return Math.round(factor*this.valueOf)/factor; }
}
Number.prototype.toLocal = function(d) { return this.toFixed(d).replace(/\./, DecimalSeparator); }

function artikel(id, name, price, btw, gekoppeld, status,factuurgroep, forcecheck, hidden)
{
	// remove unnececary items
	if (gekoppeld!=null)
	{
		if(gekoppeld[(gekoppeld.length-1)]==-1)
		{
			gekoppeld.pop();
		}
	}

	this.id       = id;
	this.naam     = name;
	this.prijs    = ((price==null)?0.0:price);
	this.btw      = ((btw==null)?0:btw);
	this.koppel   = gekoppeld;
	this.checked  = (status>2); // 1=nee 2=Optioneel, 3=Ja, 4=Verplicht
	this.optional = (status<4);
	this.e = null;
	this.hidden=hidden;
	this.factuurgroep=factuurgroep;
	this.forcecheck=forcecheck;
}

var prijspakket = {
	checkboxes : true,
	artikelen : new Array(),
	assurantiebelperc: 0,
	check: function(e)
	{
		if (!e) { e = document.event; }
		var total = 0, anntotal = 0, prijs, cb;
		for (var i=0; i<this.artikelen.length; ++i)
		{
			this.uncheckHidden();
			cb = this.artikelen[i];
			if (cb.id < 1) { continue; }
			if (!cb.e) {
				cb.e = (e && cb.id == e.name) ? e : document.getElementById(cb.id);
				this.artikelen[i].e = cb.e;
			}
			if (cb.e) 
			{
				prijs = 0;
				if (cb.e.checked&&!cb.hidden) 
				{
					
					if (cb.koppel) 
					{
						
						for (var k=0; k<cb.koppel.length; ++k) 
						{ 
							var koppelaar=cb.koppel[k];
							
							cid=this.artikelen[koppelaar].id;
							if(document.getElementById(cid).checked&&!this.artikelen[koppelaar].hidden)
							{
								prijs += this.artikelen[koppelaar].prijs; 
								if (this.artikelen[koppelaar].factuurgroep>0)
								{
									prijs=prijs+this.getFactuurgroepBedrag(this.artikelen[koppelaar].factuurgroep);
								}
							}
						}
						prijs = (cb.btw*prijs/100.0);
					}
					else 
					{
						prijs = cb.prijs;
						if (cb.factuurgroep>0)
						{
							prijs=prijs+this.getFactuurgroepBedrag(cb.factuurgroep);
						}
					}
					total += prijs;
				}
				else
				{
					
				}
				if (document.getElementById(cb.id).checked)
				{
					document.getElementById('prijs_'+cb.id).innerHTML = Number(prijs).toLocal(2);
				}
				else
				{
					document.getElementById('prijs_'+cb.id).innerHTML = "";
				}
			}
		}
		document.getElementById('prijs_totaal').innerHTML = Number(total+anntotal).toLocal(2);
		document.getElementById('totaalbedrag2').value = Number(total+anntotal).toLocal(2);
	},
	
	uncheckHidden: function()
	{
		prijs=0;
		
		for (var i=0; i<this.artikelen.length; ++i)
		{
			cb = this.artikelen[i];
			
			if (cb.hidden)
			{
				cid=this.artikelen[i].id;

				chkbox=document.getElementById(cid);
				
				if (chkbox!=null)
				{
					chkbox.checked=true;
				}
			}
		}
		return prijs;
	},
	
	getFactuurgroepBedrag: function(factuurgroep)
	{
		prijs=0;
		
		for (var i=0; i<this.artikelen.length; ++i)
		{
			cb = this.artikelen[i];
			
			if (cb.hidden&&cb.factuurgroep==factuurgroep)
			{
				prijs=prijs+cb.prijs;
				
				cid=this.artikelen[i].id;
				
				chkbox=document.getElementById(cid);
				
				if (chkbox!=null)
				{
					chkbox.checked=true;
				}
			}
		}
		return prijs;
	},
	
	calculateLinked: function()
	{
		var total = 0, anntotal = 0, prijs, cb;
		for (var i=0; i<this.artikelen.length; ++i)
		{
			cb = this.artikelen[i];
			if (cb.id < 1) { continue; }

			prijs = 0;
			if (!cb.hidden)
			{
				if (cb.koppel) 
				{
					for (var k=0; k<cb.koppel.length; ++k) 
					{ 
						cid=this.artikelen[cb.koppel[k]].id;
						if(!this.artikelen[cb.koppel[k]].hidden)
						{
							prijs += this.artikelen[cb.koppel[k]].prijs; 
							if (this.artikelen[cb.koppel[k]].factuurgroep>0)
							{
								prijs=prijs+this.getFactuurgroepBedrag(this.artikelen[cb.koppel[k]].factuurgroep);
							}
						}
					}
					prijs = (cb.btw*prijs/100.0);
					total += prijs;
					document.getElementById('prijs_'+cb.id).innerHTML = Number(prijs).toLocal(2);
				}
				else 
				{
					prijs = cb.prijs;
					if (cb.factuurgroep>0)
					{
						prijs=prijs+this.getFactuurgroepBedrag(cb.factuurgroep);
					}
					total += prijs;
					document.getElementById('prijs_'+cb.id).innerHTML = Number(prijs).toLocal(2);
				}
			}
			else
			{
				
			}
		}
		document.getElementById('prijs_totaal').innerHTML = Number(total+anntotal).toLocal(2);
		
	},
	
	init: function(artikels)
	{
		document.write('<tbody id="prijzen_table_plain">');
		this.artikelen = artikels;

		if (this.artikelen.length!=0)
		{
			for (var i=0; i<this.artikelen.length; ++i)
			{
				var options = '';
				var hidden='';
				var checkboxstring='';
	
				if (this.artikelen[i].checked||this.artikelen[i].forcecheck=='1') 
				{ 
					if(this.artikelen[i].forcecheck!='0')
					{
						options += ' checked="checked"'; 
					}
				}
				if (!this.artikelen[i].optional) 
				{ 
					hidden='<input type="hidden" name="artikel['+this.artikelen[i].id+']" value="1">';
					options += ' disabled="disabled"'; 
				}
				if (this.checkboxes)
				{
					checkboxstring='<input type="checkbox" id="'+this.artikelen[i].id+'" name="artikel['+this.artikelen[i].id+']" value="1" onclick="prijspakket.check(this)"'+options+'>';
				}
				
				if (!this.artikelen[i].hidden)
				{
					if (this.artikelen[i].checked||this.artikelen[i].forcecheck=='1')
					{
						document.write('<tr><td>'+hidden+'&nbsp;'+checkboxstring+'</td><td>'+this.artikelen[i].naam+'</td><td align=right><span id="prijs_'+this.artikelen[i].id+'" style="resformpricefield">'+Number(this.artikelen[i].prijs).toLocal(2)+'</span></td></tr>');
					}
					else 
					{
						document.write('<tr><td>'+hidden+'&nbsp;'+checkboxstring+'</td><td>'+this.artikelen[i].naam+'</td><td align=right><span id="prijs_'+this.artikelen[i].id+'" style="resformpricefield"></span></td></tr>');
					}
				}
				else
				{
					document.write('<tr style="display:none;"><td>'+hidden+'&nbsp;'+checkboxstring+'</td><td>'+this.artikelen[i].naam+'</td><td align=right><span id="prijs_'+this.artikelen[i].id+'" style="resformpricefield">'+Number(this.artikelen[i].prijs).toLocal(2)+'</span></td></tr>');
				}
			}
			document.write('<tr><td colspan=3><hr></td></tr>');
			document.write('<tr><td>&nbsp;</td><td align="right"><input type="hidden" id="totaalbedrag2" name="totaalbedrag" value=""><b>' + resource_totaal + ': EUR</b></td><td align="right"><span id="prijs_totaal" style="resformtotalfield">0,00</span></td></tr>');
			this.check();
			
			if (!this.checkboxes)
			{
				this.calculateLinked();
			}
		}
		document.write('</tbody>');
	}
}
