var error_list = null;
var header = null;
var intro = null;

function addDynamics() {
	if (!document.getElementById || !document.createElement)
		return false;

	for (i = 0; (input = document.getElementsByTagName('input')[i]); i++) {
		if (input.type == 'text') {
			input.onfocus = focusInput;
			input.onblur = blurInput;
		}
	}

	if (document.getElementById('dep_date')) {
		var date = new Date();
		setDate(document.getElementById('dep_date'), date.getDate());
		setDate(document.getElementById('dep_month'), date.getMonth()+1);
		setDate(document.getElementById('arr_date'), date.getDate());
		setDate(document.getElementById('arr_month'), date.getMonth()+1);
	}

	/*if (document.getElementById('personal_info'))
		document.getElementById('personal_info').onsubmit = submitForm;*/
}

function focusInput() {
	addClass(this.parentNode, 'active');
	addClass(this, 'active');
}

function blurInput() {
	removeClass(this.parentNode, 'active');
	removeClass(this, 'active');
}

function setDate(element, value) {
	for (var i = 0; (option = element.getElementsByTagName('option')[i]); i++) {
		if (option.value == value) {
			option.selected = true;
			return;
		}
	}
}

function submitForm() {
	var errors, err, name, cartype, regnr, phone, email;
	clearPrevError();

	name = document.getElementById('navn');
	cartype = document.getElementById('biltype');
	regnr = document.getElementById('regnr');
	phone = document.getElementById('telefon');
	email = document.getElementById('email');
	flightnr = document.getElementById('flightnr');
	park_inside = document.getElementById('park_inside');
	park_outside = document.getElementById('park_outside');
	term	= document.getElementById('term');

	errors = false;

	err = checkErr(name, 'name_label', 'Vennligst fyll inn navnet ditt', name.value <= 0);
	errors = errors || err;
	err = checkErr(email, 'email_label', 'Vennligst fyll inn e-postadressen din', email.value <= 0);

	if (!err) {
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		err = checkErr(email, 'email_label', 'Vennligst sjekk at e-postadressen er korrekt', !filter.test(email.value));
	}

	if (!err) {
		removeClass(email, 'error');
		removeClass(document.getElementById('email_label'), 'error');
	}

	errors = errors || err;

	err = checkErr(phone, 'phone_label', 'Vennligst fyll inn mobilnummer', !(phone.value.length >= 8 && phone.value.length <= 11));
	errors = errors || err;
	err = checkErr(cartype, 'cartype_label', 'Vennligst fyll inn biltype', cartype.value.length <= 0);
	errors = errors || err;
	err = checkErr(regnr, 'regnr_label', 'Vennligst fyll inn registreringsnummeret', regnr.value.length <= 0);
	errors = errors || err;
	err = checkErr(flightnr, 'flightnr_label', 'Vennligst fyll inn flightnummer for hjemreise', flightnr.value <= 0);
	errors = errors || err;
	if(park_inside)	err = checkErr(null, 'park_label', 'Vennligst velg parkering inne/ute', !(park_inside.checked || park_outside.checked));
	if (!err) removeClass(document.getElementById('park_label'), 'error');
	err = checkErr(term, 'term_label', 'Vennligst godkjenn vilkårene', !term.checked);
	errors = errors || err;
	
	errors = errors || err;

	return !errors;
}

function checkErr(element, labelName, error, test) {
	var err = false;
	if (test) {
		err = true;
		processError(element, document.getElementById(labelName), error);
	} else {
		if (element != null) {
			removeClass(element, 'error');
			removeClass(document.getElementById(labelName), 'error');
		}
	}

	return err;
}

function processError(element, label, error) {
	var err = document.createElement('li');
	var text = document.createTextNode(error);
	err.appendChild(text);
	addClass(err, 'error');

	if (error_list == null)
		initializeErrors();

	error_list.appendChild(err);
	addClass(label, 'error');

	if (element != null)
		addClass(element, 'error');
}

function initializeErrors() {
	header = document.createElement('h2');
	addClass(header, 'error');
	header.appendChild(document.createTextNode('Beklager! Vi oppdaget en feil'));

	intro = document.createElement('p');
	addClass(intro, 'error');
	intro.appendChild(document.createTextNode('Vennligst se over følgende felter og rett opp.'));

	error_list = document.createElement('ul');
	var container = document.getElementById('personal_info').getElementsByTagName('div')[0];

	container.insertBefore(error_list, container.childNodes[0]);
	container.insertBefore(intro, container.childNodes[0]);
	container.insertBefore(header, container.childNodes[0]);
}

function clearPrevError() {
	element = document.getElementById('personal_info').getElementsByTagName('div')[0];

	if (header != null) {
		element.removeChild(header);
		header = null;
	}

	if (intro != null) {
		element.removeChild(intro);
		intro = null;
	}

	if (error_list != null) {
		element.removeChild(error_list);
		error_list = null;
	}
}