var lastTarget;

function addListeners(){
	lastTarget = null;
	var field = document.getElementsByTagName('input');
	for(var i = 0 ; i < field.length ; i++){
		if(field[i].type == 'text' 
			&& (field[i].parentNode.id == 'email' || field[i].parentNode.id == 'nip'))
			field[i].onblur = waitAndValidate;
	}
}

function waitAndValidate(e){
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3)
		targ = targ.parentNode;
	lastTarget = targ;
	var t = setTimeout("validateEl()", 10);
}

function setLabel(t, text){
	document.getElementById(t.name + '-alert').innerHTML = text;
	lastTarget = null;
}

function validateAll(){
	var field = document.getElementsByTagName('input');
	for(var i = 0 ; i < field.length ; i++){
		if(field[i].type == 'text'
			&& (field[i].parentNode.id == 'email' || field[i].parentNode.id == 'nip')){
			lastTarget = field[i];
			if (!validateEl()) return false;
		}
	}
	return true;
}

function validateEl(){
	var t = lastTarget;
	if(!t) return false;
	
	else if(t.name == 'email'){
		var re = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
		if (re.test(t.value)) {
			setLabel(t, 'E-mail wpisany OK');
			return true;
		}
		else {
			setLabel(t, 'Popraw adres e-mail.');
			return false;
		}
	}
	else if(t.name == 'nip'){
		if (checkNIP(t.value)) {
			setLabel(t, 'NIP wpisany OK');
			return true;
		}
		else{
			setLabel(t, 'Popraw numer NIP.');
			return false;
		}
	}
}

function checkNIP(num){
	if(num.length != 10) return false;
	var arrSteps = new Array(6, 5, 7, 2, 3, 4, 5, 6, 7);
	var intSum = 0;
	for (var i = 0; i < 9; i++){
		intSum += arrSteps[i] * num.charAt(i);
	}
	var init = intSum % 11;
 
	intControlNr = (init == 10) ? 0 : init;
	if(intControlNr == num.charAt(9)) return true;
	return false;
}