function killNonNums(e) {
	if (window.event) 
		var key = window.event.keyCode;
	else if (e) 
		var key = e.which;
	else
		return true;

	var keychar = String.fromCharCode(key);
	return ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) || (("0123456789").indexOf(keychar) > -1));
}


var errors=new Object();

function trim (str) {
  return str.replace(/^\s+|\s+$/, '');
}

var fields=new Array(
	// Daten, Bezeichnun, "Seite", CheckFunc, Preis, Versand, MwSt
	new Array('Name', 'Cognome', 0, 'NotEmpty'),
	new Array('Vorname', 'Nome', 0, 'NotEmpty'),
	new Array('Strasse', 'Via', 0, 'NotEmpty'),
	new Array('Nr', 'No.', 0, ''),
	new Array('PLZ', 'NAP', 0, 'IsNumNonEmpty'),
	new Array('Ort', 'Località', 0, 'NotEmpty'),

	new Array('Tel', 'Telefono', 0, 'NotEmpty'),

	new Array('Mail', 'Email', 0, 'Mail'),
	new Array('GebDat', 'Data di nascita', 0, 'Date'),

	
	new Array('Lehrmittel1', '', 0, '', 58, 0, 0.024), 
	new Array('Lehrmittel2', '', 0, '', 59), 
	new Array('Lehrmittel3', '', 0, '', 55), 
	new Array('Lehrmittel4', '', 0, '', 55), 
	new Array('Lehrmittel5', '', 0, '', 25),
	new Array('Lehrmittel6', '', 0, '', 37, 0, 0.024)
);


function addListeners() {		
	var i=0;
	for(field in fields) {
		i++;
		if(!document.getElementById('ausb'+fields[field][0])) alert(fields[field][0]);
		document.getElementById('ausb'+fields[field][0]).onchange=new Function("checkErrors(this);");
		document.getElementById('ausb'+fields[field][0]).onblur=new Function("checkErrors(this);");
		
		/*if(fields[field][3]=='IsNumOrEmpty' || fields[field][3]=='IsNumNonEmpty') {
			document.getElementById('ausb'+fields[field][0]).setAttribute("onkeypress", "return killNonNums(event);");
			if(navigator.appVersion.indexOf("MSIE 7.")!=-1 || navigator.appVersion.indexOf("MSIE 6.")!=-1 ||navigator.appVersion.indexOf("MSIE 5.")!=-1)
				document.getElementById('ausb'+fields[field][0]).onkeypress=new Function("return killNonNums();");
		} */
	}
}

function checkErrors(input) {
	if(input) input.wasChecked=false;

	for(field in fields) {
		var f=fields[field];
		var e=document.getElementById('ausb'+f[0]);
		if(e.wasChecked || f[3]=='') continue;
		eval("check"+f[3]+"(e, '"+f[1]+"', "+f[2]+")");
		e.wasChecked=true;
	}
	
	window.setTimeout("printErrors();", 100);
}

function addError(en, field) {
	var hasErr=(field.className.indexOf('error')>=0);
	if(en && hasErr) return;
	if(en) field.className+=' error';
	if(!en && hasErr) field.className=field.parentNode.className.substr(0, field.parentNode.className.length-6);
}

function checkMail(field, name, cont) {
  var reg = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
	//alert(reg.test(field.value));
	if(!reg.test(field.value)) {
		addError(true, field.parentNode);
		errors[cont+field.id]='Mail';
	} else {
		addError(false, field.parentNode);
		errors[cont+field.id]='';
	}
}

function checkIsNumOrEmpty(field, name, cont) {
	//field.value=trim(field.value);
	if(isNaN(trim(field.value)) && trim(field.value)!='') {
		addError(true, field.parentNode);
		errors[cont+field.id]=''+name+'';
	} else {
		addError(false, field.parentNode);
		errors[cont+field.id]='';
	}
}

function checkIsNumNonEmpty(field, name, cont) {
	//field.value=trim(field.value);
	if(isNaN(trim(field.value)) || trim(field.value)=='') {
		addError(true, field.parentNode);
		errors[cont+field.id]=''+name+'';
	} else {
		addError(false, field.parentNode);
		errors[cont+field.id]='';
	}
}

function checkDate(field, name, cont) {
	var reg = /^\d{2}\.\d{2}\.\d{4}$/;
	if (!reg.test(field.value)) {
		addError(true, field.parentNode);
		errors[cont+field.id]='Date de naissance (01.01.1970)';
	} else {
		addError(false, field.parentNode);
		errors[cont+field.id]='';
	}
}

function checkNotEmpty(field, name, cont) {
	if(trim(field.value)=='') {
		addError(true, field.parentNode);
		errors[cont+field.id]=''+name+'';
	} else {
		addError(false, field.parentNode);
		errors[cont+field.id]='';
	}
}

function addAnnu() {
	if((document.getElementById('ausbAnnulierungstatus').checked == true) && document.getElementById('ausbAnnulierungstatusagb').checked == true) {
		if (navigator.appName == 'Microsoft Internet Explorer') {
			document.getElementById('annu').style.display = 'block';
		} else {
			document.getElementById('annu').style.display = 'table-row';
		}
	} else {
		document.getElementById('annu').style.display = 'none';
	}
}

function printErrors() {
	var price=0;
	var mwst=0;

	var list='';
	for(f in fields) {
		
		
		if(fields[f][4]==0 && fields[f][5]==0) {
			continue;
		}

		if(!document.getElementById('ausb'+fields[f][0]).checked) continue;
		
		price+=fields[f][4];
				
		if(!fields[f][6]) fields[f][6]=0.076;
		mwst+=fields[f][4]*fields[f][6];
		//list+=val+'x '+fields[f][1]+'<br/>';
	}
	

	annuPreis = kursPreis*0.04;
	if (annuPreis < 8) {
		annuPreis = 8;
	}
	mwst=(Math.ceil(mwst * 100) / 100);
	html='<table style="float:left">';
	if(kursPreis) html+='<tr><td>Corso : </td><td> Fr. </td><td style="text-align:right"> '+kursPreis.toFixed(2)+'</td></tr>';
	else html+='<tr><td>Corso : </td><td> Siehe oben</td></tr>';
	html+='<tr><td>Prezzo : </td><td> Fr. </td><td style="text-align:right"> '+price.toFixed(2)+'</td></tr>';
	html+='<tr style="display:none;" id="annu"><td>AKV: </td><td> Fr. </td><td style="text-align:right"> '+annuPreis.toFixed(2)+'</td></tr>';
	html+='<tr><td>IVA : </td><td> Fr. </td><td style="text-align:right"> '+mwst.toFixed(2)+'</td></tr>';
	html+='<tr><td>Totale : </td><td> Fr. </td><td style="text-align:right"> '+(price+kursPreis+mwst).toFixed(2)+'</td></tr>';
	html+='</table>';
	
	var q=document.getElementById("placePriceDt");
	var p=document.getElementById("placePriceDd");
	if(p == null) alert(p);
	if(isNaN(price)) {
		p.innerHTML="Bitte korrigieren Sie zuerst die oben genannten Fehler";
		p.style.height="22px";
		q.style.height="22px";
	} else {		
		p.innerHTML=html;
		p.style.height="72px";
		q.style.height="72px";
	}
	
	var d=document.getElementById('placeErrors');
	d.parentNode.style.height='auto';
	var html='';
	for(err in errors) {
		if(errors[err]=='') continue;
		html+='<li>'+errors[err]+'</li>';
	}
	
	var x=document.getElementById("placeErrorsDt");
	var y=document.getElementById("placeErrorsDd");
	var z=document.getElementById("submit");
	
	
	if(html!='') {		
		d.innerHTML='<ul>'+html+'</ul>';
		//x.style.height=y.offsetHeight+"px";
		setTimeout("document.getElementById('placeErrorsDt').style.height=(document.getElementById('placeErrors').offsetHeight+13)+'px'", 100);
		x.style.display='block';
		y.style.display='block';
		z.disabled="disabled";
	} else {
		x.style.display='none';
		y.style.display='none';
		z.disabled="";
	}
}