/**
 * Initializes the form.
 */
function initForm() {
	$$('.anz').each(function(e,i){
		
		if(!$chk(e.value)) e.value = 0; // all empty .anz fields get set 0
		$$('.total')[i].value = money(e.value * cn($$('.preis')[i].value)); // all .total fields get calculated 
		e.addEvent('change', function(event){ // all .anz fields get an onChange event (calculate .total and sum up)
			if(!isNumber(e.value)) {
				alert('"' + e.value + '" ist keine Zahl!');
				e.value = 0;
			}
			$$('.total')[i].value = money(e.value * cn($$('.preis')[i].value));
			sumUp();
		});
		e.addEvent('dblclick', function(event){
			event.stop();
			e.value = Number(e.value) + 1;
			$$('.total')[i].value = money(e.value * cn($$('.preis')[i].value));
			sumUp();
		});
	});
	
	sumUp();
	
}

/**
 * Sums up the form
 */
function sumUp() {
	var brutto = 0;
	$$('.anz').each(function(e,i){
		brutto = brutto + Number(e.value) * cn($$('.preis')[i].value);
	});
	var netto = brutto / 1.19;
	var mwst = brutto - netto;
	$('brutto').value = money(brutto);
	$('mwst').value = money(mwst);
	$('netto').value= money(netto);
}

/**
 * Set .anz and .total back to 0 (0,00 €)
 */
function resetform() {
	$$('.anz').each(function(e,i){e.value = 0;});
	$$('.total').each(function(e,i){e.value = money(0);});
	sumUp();
}

/**
 * Convert to number
 */
function cn(m) {
	n = m.replace(/,/, ".");
	return Number(n);
}

/**
 * Format as monetary EURO value
 * Wrapper for formatNumber()
 */
function money(m) {
	return formatNumber(m, 2, '.', ',', '', ' €', '-', '');
}

/**
 * Format a number
 */
function formatNumber(num,dec,thou,pnt,curr1,curr2,n1,n2) {
	var x = Math.round(num * Math.pow(10,dec));
	if (x >= 0) n1=n2='';
	var y = (''+Math.abs(x)).split('');
	var z = y.length - dec;
	if (z<0) z--;
	for(var i = z; i < 0; i++) y.unshift('0');
	if (z<0) z = 1; y.splice(z, 0, pnt);
	if(y[0] == pnt) y.unshift('0');
	while (z > 3) {
		z-=3;
		y.splice(z,0,thou);
	}
	var r = curr1+n1+y.join('')+n2+curr2;
	return r;
}

/**
 * Check if str is a number
 */
function isNumber(str) {
  for(var position=0; position<str.length; position++){
	var chr = str.charAt(position)
        if  ( (chr < "0") || (chr > "9") ) 
              return false;
  };      
  return true;
};

window.addEvent('domready', function() {
	initForm();
});