// JavaScript Document
var dtCh = "-";
var minYear=1900
var maxYear = 2100;

var errorCaption = '';
var errorCaptionColor = '';
var errorInputBackground = '';
var errorInputBackgroundGrey = '#ababab';
var errorInputBackgroundGreen = '#4daa1a';
var errorInputColor = '';
var errorClassName = 'error';
var normalInputBackground = '';
var normalInputColor = '';

function submit_onclick(obj, post) {
	var msg = '';
	var form = document.getElementById(obj);
	var el = form.getElementsByTagName('label');
	var checkgroups = $("SPAN[id$='_group'][class='required']");

	for (i = 0; i < form.elements.length; i++) {
		if (form.elements[i].id != '' && form.elements[i].title != '') {
			if ($(form.elements[i]).attr("accesskey") != undefined && $(form.elements[i]).attr("accesskey") != '') { //if form element contains owner attribute
				if ($("#" + $(form.elements[i]).attr("accesskey")).css("display") != 'none') { //then only check if shown
					msg = msg + chckField(form.elements[i], form.elements[i].title);
				}
			} else {
				msg = msg + chckField(form.elements[i], form.elements[i].title);
			}
		}
	}

	$(checkgroups).each(function() {
		var ok = ($(this).find("INPUT[type='checkbox']:checked").length > 0);
		if (ok) {
			// OK
			$(this).find("INPUT[type='checkbox']").each(function() {
				if ($(this).hasClass("jqTransformHidden")) {
					$(this).prev().removeClass("error");
				} else {
					$(this).removeClass("error");
				}
			});
		} else {
			// Error
			$(this).find("INPUT[type='checkbox']").each(function() {
				if ($(this).hasClass("jqTransformHidden")) {
					$(this).prev().addClass("error");
				} else {
					$(this).addClass("error");
				}
				msg = msg + "1";
			});
		}
	});

	for (var e = 0; e < el.length; e++) { //check for radio/checkboxes
		var objLabel = el[e];
		if (objLabel.getAttribute('id')) {
			var domLabel = document.getElementById(objLabel.getAttribute('id'));
			var domLabelText = document.getElementById(objLabel.getAttribute('id')).innerHTML;
			var id_1 = domLabel.id.replace('lbl', '')
			msg = msg + chckFieldRadio(id_1);
		}
	}

	if (msg != '') {
		//alert("De volgende velden zijn verplicht:\n" + msg);
		return false;
	} else {
		if (post)
			form.submit();
		return true;
	}
}

function chckFieldRadio(title) { // Voor checkboxes & radio buttons.
	var spanObj = document.getElementById(title + '_group');
	if (!spanObj)
		return '';

	var radio_checked1 = false;
	var radio_result = '';
	var allInputTags = spanObj.getElementsByTagName('INPUT');

	for (var c = 0; c < allInputTags.length; c++) {
		if (allInputTags[c].checked) {
			radio_checked1 = true;
			radio_result = allInputTags[c].value;
			break;
		}
	}

	for (var c = 0; c < allInputTags.length; c++) {
		errorLayout($(allInputTags[c]).parent(), radio_checked1, errorCaption);
	}

	if (!radio_checked1) {
		errorLayout(allInputTags[0], false, 'Verplicht');
		return title;
	} else {
		return '';
	}
}


var REGEX_Phone_US = /(\+?1[- ]?)?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{4})/;
var REGEX_Phone_NL = /(\+|00)?[\s-]?(31|6)[\s-]?(\d\d)[\s-]?(.*)$/;
var REGEX_Phone_NL2 = /(\d\d)(\d\d)(\d{3})/;
var REGEX_Phone_Filter = /[\s-\+\(\)\-]/;
function chckField(obj, title) {
	if ($(obj).parents().hasClass("hidden")) return '';
	var err = '';
	if (obj.id.indexOf('email') > -1 && obj.value != '') {
		if (!isEmail(obj.value)) {
			err = 1;
			errorLayout(obj, false, 'Het emailadres is niet correct');
		} else {
			// email validation
			if($(obj).hasClass('validate') && $('#' + obj.id + '-validate').val()!='1'){
				err = 1;
				errorLayout(obj, false, 'Het emailadres is niet correct');
			} else {
				errorLayout(obj, true, '');
			}			
		}
		if (obj.id.indexOf('_check') > -1) {
			if (obj.value == title || $('#' + document.getElementById(obj.id + '_for').value).val() != obj.value) {
				err = 1;
				errorLayout(obj, false, 'De e-mailadressen komen niet overeen.');
			} else {
				errorLayout(obj, true, '');
			}
		}
	} else if (obj.id.toLowerCase().indexOf('password') > -1) {
		if (obj.title == '') return "";
		if (obj.id.indexOf('oldPassword') > -1) {
			if (hex_md5(obj.value) != $("#oldPasswordE").val() || obj.value == '') {
				err = 1;
				errorLayout(obj, false, 'Verplicht');
			} else {
				errorLayout(obj, true, '');
			}
		} else if (obj.id.indexOf('_check') > -1) {
			if (obj.value == '' || obj.value == title || document.getElementById(document.getElementById(obj.id + '_for').value).value != obj.value) {
				err = 1;
				errorLayout(obj, false, 'De wachtwoorden komen niet overeen.');
			} else {
				errorLayout(obj, true, '');
			}
		} else {
			if (obj.value == '' || obj.value == obj.title) {
				err = 1;
				errorLayout(obj, false, 'Verplicht');
			} else {
				errorLayout(obj, true, '');
			}
		}
	} else {
		if ((obj.id.indexOf('street') > -1 || obj.id.indexOf('houseNumber') > -1) && !(obj.id.indexOf('extra') > -1)) {
			if (document.getElementById('street') && document.getElementById('houseNumber')) {
				if (obj.id == 'street' || obj.id == 'houseNumber') {
					if ((document.getElementById('street').value != '') && (document.getElementById('houseNumber').value != '')) {
						$('#marker_streethousenr').addClass('correct').removeClass('error');
					} else {
						$('#marker_streethousenr').addClass('error').removeClass('correct');
					}
				}
			}

			if (document.getElementById('deliverystreet') && document.getElementById('deliveryhouseNumber')) {
				if (obj.id == 'deliverystreet' || obj.id == 'deliveryhouseNumber') {
					if ((document.getElementById('deliverystreet').value != '') && (document.getElementById('deliveryhouseNumber').value != '')) {
						$('#marker_deliverystreethousenumber').addClass('correct').removeClass('error');
					} else {
						$('#marker_deliverystreethousenumber').addClass('error').removeClass('correct');
					}
				}
			}

			if (obj.value == '') {
				errorLayout(obj, false, 'Verplicht');
			} else {
				errorLayout(obj, true, '');
			}
		} else {
			if (obj.id.indexOf('zipcode') > -1 || obj.id.indexOf('city') > -1) {
				if (document.getElementById('zipcode') && document.getElementById('city')) {
					if (obj.id == 'zipcode' || obj.id == 'city') {
						if ((document.getElementById('zipcode').value != '') && (document.getElementById('city').value != '')) {
							$('#marker_zipcodecity').addClass('correct').removeClass('error');
						} else {
							$('#marker_zipcodecity').addClass('error').removeClass('correct');
						}
					}
				}
				if (document.getElementById('deliveryzipcode') && document.getElementById('deliverycity')) {
					if (obj.id == 'deliveryzipcode' || obj.id == 'deliverycity') {
						if ((document.getElementById('deliveryzipcode').value != '') && (document.getElementById('deliverycity').value != '')) {
							$('#marker_deliveryzipcodecity').addClass('correct').removeClass('error');
						} else {
							$('#marker_deliveryzipcodecity').addClass('error').removeClass('correct');
						}
					}
				}

				if (obj.value == '') {
					errorLayout(obj, false, 'Verplicht');
				} else {
					errorLayout(obj, true, '');
				}
			} else {
				if (obj.id.indexOf('phone') > -1 && obj.value != '') {
					if (obj.value.length < 10 || !/[\d\+\i\s]+/.test(obj.value)) {
						err = 1;
						errorLayout(obj, false, obj.title + ' incorrect');
					} else {
						errorLayout(obj, true, '');
					}
				} else {
				if (obj.id == 'dob_date') {
					if (obj.value != '') {
						var replaceDate = obj.value;
						for (var d = 0; d < 2; d++) {
							replaceDate = replaceDate.replace("/", "-");
						}
						if (!FV_IsDateIsBirthDate(replaceDate) || !(isDate(replaceDate))) {
							err = 1;
							errorLayout(obj, false, obj.title + ' incorrect');
						} else {
							errorLayout(obj, true, '');
						}
					} else {
						// Geboortedatum is leeg = OK
						errorLayout(obj, true, '');
					}

					} else {
						if (obj.type == 'checkbox' && obj.name != "retour-article") {
							if (obj.title != "" && !obj.checked) {
								err = 1;
								errorLayout(obj, false, errorCaption);
							} else {
								errorLayout(obj, true, '');
							}
						} else if (obj.type == "radio") {
							if ($("INPUT[name='" + obj.name + "']:checked").length > 0) {
								$("INPUT[name='" + obj.name + "']").each(function() {
									errorLayout(this, true, '');
								});
							} else {
								err = 1;
								$("INPUT[name='" + obj.name + "']").each(function() {
									errorLayout(this, false, 'Verplicht');
								});
							}
						} else {
							if ((obj.value == '' || obj.value == title) && obj.title != '') {
								err = 1;
								errorLayout(obj, false, 'Verplicht');
							} else {
								errorLayout(obj, true, '');
							}
						}
					}
				}
			}
		}
	}
	return err;
}


function errorLayout(obj, ok, error) { //set colors submit_onclick form if error		
	var id = $(obj).attr('id');
	if (ok) {
		if ($(obj).hasClass('checkbox')) {
			$(obj).closest('.checkboxes').removeClass('error');
		}
		if ($(obj).hasClass('textarea')) {
			$(obj).closest('.jqTransformTextarea').removeClass('error');
		} else if ($(obj).prev().hasClass('jqTransformRadio')) {
			$(obj).prev().removeClass('error');
		} else {
			$(obj).closest('.jqTransformInputWrapper,.jqTransformSelectWrapper,.jqTransformRadio').removeClass('error').find('.jqTransformSelectOpen').removeClass('error');
			$(obj).addClass('correct');
		}
		$('#marker_' + id).addClass('correct').removeClass('error').attr('alt', '').attr('title', '');
	} else {
		if ($(obj).hasClass('checkbox')) {
			$(obj).closest('.checkboxes').addClass('error');
			$(obj).prev().addClass("error");
		}
		if ($(obj).hasClass('textarea')) {
			$(obj).closest('.jqTransformTextarea').addClass('error');
		} else if ($(obj).prev().hasClass('jqTransformRadio')) {
			$(obj).prev().addClass('error');
		} else {
			$(obj).addClass('error');
			$(obj).closest('.jqTransformInputWrapper,.jqTransformSelectWrapper').addClass('error').find('.jqTransformSelectOpen').addClass('error');
		}

		$(obj).removeClass('correct');
		$('#marker_' + id).addClass('error').removeClass('correct').attr('alt', error).attr('title', error);
	}
}


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, 10);
		day = parseInt(strDay, 10);
		year = parseInt(strYear, 10);
		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 "";
}
