var dtCh = "-";
var minYear = 1900;
var maxYear = 2100;

function submit_onclick(obj, post, dontShowMessage, dontReturnEmptyFields) {

	var msg = '';
	var form = document.getElementById(obj);

	if (!form) return;

	var el = form.getElementsByTagName('label');
	var emptyObligedFields = new Array();

	for (i = 0; i < form.elements.length; i++) {
		if (form.elements[i].id != '') {

			if (form.elements[i].accessKey != undefined && form.elements[i].accessKey != '') { //if form element contains owner attribute
				if (document.getElementById(form.elements[i].accessKey).style.display != 'none') { //then only check if shown
					msg = msg + chckField(form.elements[i], form.elements[i].title);
				}
			} else {
				var tmpErrMsg = chckField(form.elements[i], form.elements[i].title);
				msg = msg + tmpErrMsg;
			}

			var tmpArr = [2];
			tmpArr[0] = form.elements[i].id;
			tmpArr[1] = (tmpErrMsg == '') ? false : true;

			if (form.elements[i].type == 'text') emptyObligedFields.push(tmpArr);

		}
	}

	for (var e = 0; e < el.length; e++) { //check for radio/checkboxes
		var objLabel = el[e];

		if (!objLabel.getAttribute('id') || objLabel.getAttribute('id') == '') continue;
		var domLabel = document.getElementById(objLabel.getAttribute('id'));
		var domLabelText = document.getElementById(objLabel.getAttribute('id')).innerHTML;
		var id_1 = domLabel.id.replace('lbl', '');

		if (!document.getElementById(id_1 + '_group')) continue;

		var spanObj = document.getElementById(id_1 + '_group');
		var radio_checked1 = false;
		var radio_result = '';
		var allInputTags = spanObj.getElementsByTagName('INPUT');

		for (var c = 0; c < allInputTags.length; c++) {
			//alert(allInputTags[c].checked)
			if (allInputTags[c].checked) {
				radio_checked1 = true;
				radio_result = allInputTags[c].value;
				break;
			}
		}
		if (!radio_checked1)
			msg = msg + '- ' + allInputTags[0].title + '\n';

		var tmpArr = [2];
		tmpArr[0] = spanObj.id;
		tmpArr[1] = !radio_checked1;
		emptyObligedFields.push(tmpArr);
	}

	if (obj == 'frmContact') {
		if (document.getElementById('callmeback'))
			if (document.getElementById('callmeback').checked)
				chckField(document.getElementById('tel'), "Telefoonnummer");
	}

	if (obj == 'frmProfile') {
		if (document.getElementById('username').value != '') {
			if (!UserOK) {
				msg = msg + '- Uw loginnaam is reeds in gebruik\n';
				errorLayout(document.getElementById('username'), false);
			} else {
				errorLayout(document.getElementById('username'), true);
			}
		}
	}

	if (obj == 'frmGuestbook') {
		var qty = document.getElementById('charQty').value
		if (document.getElementById('message').value.length > qty) {
			msg = msg + '- Maximaal ' + qty + ' tekens toegestaan.\n';
			errorLayout(document.getElementById('message'), false);
		} else {
			errorLayout(document.getElementById('message'), true);
		}
	}

	if (obj == 'frmUploadImage') {
		var img = document.getElementById('image').value
		var ext = img.substr((img.length - 3), img.length).toLowerCase()
		if (ext != 'jpg' && ext != 'gif') {
			alert('Alleen afbeelding met extensie .jpg of .gif zijn toegestaan.')
			return false;
		}
	}

	if (obj == 'frmProfile' || obj == 'frmChangePassword') {
		if (document.getElementById('password').value != document.getElementById('passwordBis').value) {
			msg = msg + '- Wachtwoorden zijn niet aan elkaar gelijk\n';
			errorLayout(document.getElementById('password'), false);
			errorLayout(document.getElementById('passwordBis'), false);
		} else {
			if (document.getElementById('password').value == '') {
				msg = msg + '- Wachtwoord\n';
				errorLayout(document.getElementById('password'), false);
				errorLayout(document.getElementById('passwordBis'), false);
			} else {
				errorLayout(document.getElementById('password'), true);
				errorLayout(document.getElementById('passwordBis'), true);
			}
		}
	}

	if (msg != '') {

		if (!dontShowMessage) alert("De volgende velden zijn verplicht:\n" + msg);

		if (!dontReturnEmptyFields) return false;
		else return emptyObligedFields;


	}

	else {
		if (post) form.submit();
	}
}

function showErrorMessage(errorElement, emptyFields) {
	if (errorElement != '') {
		if (document.getElementById(errorElement)) {

			var obj = document.getElementById(errorElement);
			var currClass = obj.className;

			if (emptyFields.length > 0) obj.className = currClass.replace("inactive", "active");
			else obj.className = currClass.replace("active", "inactive");
		}
	}
	if (!emptyFields || emptyFields == undefined) return;
	if (emptyFields.length > 0) {
		for (var arr in emptyFields) {
			var obj = emptyFields[arr];
			var lblObj = "lbl_" + obj[0];
			if (!document.getElementById(lblObj)) {
				lblObj = obj[0];
				if (!document.getElementById(lblObj)) continue;
			}
			var field = document.getElementById(lblObj);

			if (obj[1]) {
				$('#' + lblObj).removeClass('correct');
				$('#' + lblObj).removeClass('wrong');
				$('#' + lblObj).addClass('wrong');
			}
			else {
				$('#' + lblObj).removeClass('wrong');
				$('#' + lblObj).removeClass('correct');
				$('#' + lblObj).addClass('correct');
			}

		}
	}
	return false;
}


//place your checks here please
function chckField(obj, title) {
	var err = ''
	if (obj.id.indexOf('email') > -1 && obj.value != '') {
		if (!isEmail(obj.value)) {
			err = err + "- Het emailadres is niet correct\n"
			errorLayout(obj, false);
		} else {
			errorLayout(obj, true);
		}
	}
	else if (obj.id.indexOf('_tel') > -1 && obj.value != '') {
		if (obj.value.length < 10) {
			err = err + "- Een telefoonnummer dient 10 tekens lang te zijn\n"
			errorLayout(obj, false);
		} else {
			errorLayout(obj, true);
		}
	}
	else if (obj.id.indexOf('DD') > -1 && obj.value != '') {
		var thisDate = obj.value + '-' + document.getElementById(obj.id.replace('DD', 'MM')).value + '-' + document.getElementById(obj.id.replace('DD', 'YY')).value
		if (!isDate(thisDate)) {
			err = err + "- " + obj.title + " incorrect\n"
			errorLayout(obj, false);
			errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), false);
			errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), false);
		} else {
			errorLayout(obj, true);
			errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), true);
			errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), true);
		}
		if (obj.id.indexOf('pastDD') > -1 && obj.value != '') {
			if (!FV_IsDateInPast(thisDate)) {
				err = err + "- " + obj.title + " kan niet in de toekomst liggen\n"
				errorLayout(obj, false);
				errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), false);
				errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), false);
			} else {
				errorLayout(obj, true);
				errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), true);
				errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), true);
			}
		}
		if (obj.id.indexOf('birthDD') > -1 && obj.value != '') {
			if (!FV_IsDateIsBirthDate(thisDate)) {
				err = err + "- De minimale leeftijd is 18 jaar\n"
				errorLayout(obj, false);
				errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), false);
				errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), false);
			} else {
				errorLayout(obj, true);
				errorLayout(document.getElementById(obj.id.replace('DD', 'MM')), true);
				errorLayout(document.getElementById(obj.id.replace('DD', 'YY')), true);
			}
		}
	} else {	
		if ((obj.value == '' || obj.value == title) && obj.title != '') {
			err = "- " + title + "\n";
			errorLayout(obj, false);
		}
		else {
			errorLayout(obj, true);
		}
	}
	return err;
}

String.prototype.upperFirst = function() {    
    return this[0].toUpperCase() + this.substring(1, this.length);
};

function errorLayout(obj, ok) { //set colors submit_onclick form if error
	var objLabel = document.getElementById("lbl" + obj.id);
	if (!objLabel)
		return;
		
	if (ok) {
		objLabel.style.color = "#000000";
	} else {
		objLabel.style.color = "#ff0000";
	}
}

function isEmail(string) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(string))
		return true;
	else
		return false;
}

function isNumberKey(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	return ((k > 47 && k < 58) || k == 46 || k == 8 || k == 9 || k == 0);
}

function isEnterKey(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	if (k == 13) {
		getLocs()
	}
}

function isTelefoon(obj, e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	if (obj.value.length < 10) {
		return ((k > 47 && k < 58 || k == 46 || k == 8 || k == 9 || k == 0 || (k > 95 && k < 106)));
	} else {
		alert('Een telefoonnummer kan max. 10 cijfers lang te zijn.')
	}
}

function daysInFebruary(year) {
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
		if (i == 2) { this[i] = 29 }
	}
	return this
}

function isDate(dtStr) {
	var daysInMonth = DaysArray(12)
	var arrDate = dtStr.split(dtCh)
	strDay = arrDate[0]
	strMonth = arrDate[1]
	strYear = arrDate[2]
	if (isNaN(strDay) || isNaN(strMonth) || isNaN(strYear)) return false
	if (strDay.length > 0 && strMonth.length > 0 && strYear.length > 0) {
		month = parseInt(strMonth)
		day = parseFloat(strDay)
		year = parseInt(strYear)
		if (day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || (day > daysInMonth[month] || daysInMonth[month] == undefined) || (strYear.length < 4)) {
			return false
		}
		return true
	} else {
		return false
	}
}

function FV_IsDateIsBirthDate(val) {

	var now = new Date();
	var thisYear = now.getFullYear() - 18  //minimum 18 years old
	now.setFullYear(thisYear)
	now = now.getTime(); //NN3

	var valueDate = val.split('-');

	var dateToCheck = new Date();
	if (valueDate[2] < 1900) {
		return false;
	}
	dateToCheck.setYear(valueDate[2]);
	dateToCheck.setMonth(valueDate[1] - 1);
	dateToCheck.setDate(valueDate[0]);
	var checkDate = dateToCheck.getTime();

	var pastDate = (now > checkDate);

	return pastDate;
}

function FV_IsDateInPast(val) {

	var now = new Date();
	now = now.getTime(); //NN3

	var valueDate = val.split('-');

	var dateToCheck = new Date();
	dateToCheck.setYear(valueDate[2]);
	dateToCheck.setMonth(valueDate[1] - 1);
	dateToCheck.setDate(valueDate[0] - 1);
	var checkDate = dateToCheck.getTime();

	var pastDate = (now > checkDate);

	return pastDate;
}

function doElfCheck(bankNummer) {
	var totaal = 0
	var bankgiro = bankNummer.value
	var oneToTen = new Array()
	if (bankgiro.length == 9) {
		oneToTen[0] = 10 * bankgiro.substring(0, 0)
		oneToTen[1] = 9 * bankgiro.substring(0, 1)
		oneToTen[2] = 8 * bankgiro.substring(1, 2)
		oneToTen[3] = 7 * bankgiro.substring(2, 3)
		oneToTen[4] = 6 * bankgiro.substring(3, 4)
		oneToTen[5] = 5 * bankgiro.substring(4, 5)
		oneToTen[6] = 4 * bankgiro.substring(5, 6)
		oneToTen[7] = 3 * bankgiro.substring(6, 7)
		oneToTen[8] = 2 * bankgiro.substring(7, 8)
		oneToTen[9] = 1 * bankgiro.substring(8, 9)
		for (i = 0; i < 10; i++) {
			totaal = totaal + oneToTen[i]
		}
		totaal = totaal / 11
		if (totaal != Math.round(totaal)) {
			return "- Ongeldig bank/girorekening" + "\n";
		} else {
			return ""
		}
	} else if (bankgiro.length == 10) {
		oneToTen[0] = 10 * bankgiro.substring(0, 1)
		oneToTen[1] = 9 * bankgiro.substring(1, 2)
		oneToTen[2] = 8 * bankgiro.substring(2, 3)
		oneToTen[3] = 7 * bankgiro.substring(3, 4)
		oneToTen[4] = 6 * bankgiro.substring(4, 5)
		oneToTen[5] = 5 * bankgiro.substring(5, 6)
		oneToTen[6] = 4 * bankgiro.substring(6, 7)
		oneToTen[7] = 3 * bankgiro.substring(7, 8)
		oneToTen[8] = 2 * bankgiro.substring(8, 9)
		oneToTen[9] = 1 * bankgiro.substring(9, 10)
		for (i = 0; i < 10; i++) {
			totaal = totaal + oneToTen[i]
		}
		totaal = totaal / 11
		if (totaal != Math.round(totaal)) {
			return "- Ongeldig bank/girorekening" + "\n";
		} else {
			return ""
		}
	}
	return ""
}

function delPMs(frm) {
	var span = document.getElementById('checkboxes').getElementsByTagName('INPUT')
	var itemSelected = false
	for (i = 0; i < span.length; i++) {
		if (span[i].type == 'checkbox') {
			if (!itemSelected) itemSelected = span[i].checked
		}
	}
	if (!itemSelected) {
		alert('Er zijn geen berichten geselecteerd.')
		return false
	}
	document.getElementById(frm).submit()
}
