function doReminder() {
	if (!Subscribe.Reminder.checked==true) {
		Subscribe.Taal[0].checked=false
		Subscribe.Taal[1].checked=false
	}
	else {
		Subscribe.Taal[0].checked=true
		Subscribe.Taal[0].focus()
	}
}

var blacklist = new Array();
blacklist[0] = "hotmail.com";
blacklist[1] = "yahoo.com";
blacklist[2] = "freemail.nl";


function checkText(oField, sName) {
	if (oField.value == "") {
		return(sName + "\n")
	}
	return("");
}

function checkMaxLength ( oField, iMax, sName ) {
	if (oField.value == "") {
		//return(sName + "\n")
	}
	if (oField.value.length > iMax) {
		return(sName + " mag maximaal " + iMax + " karakters bevatten\n");
	}
	return("");
}

function checkMinLength ( oField, iMin, sName ) {
	if (oField.value == "") {
		return(sName + "\n")
	}
	if (oField.value.length < iMin) {
		return(sName + " moet minimaal " + iMin + " karakters bevatten\n");
	}
	return("");
}

function checkAreaLength(oField, iMax) {
	if (oField.value.length > iMax) 
	// if too long...trim it!
		oField.value = oField.value.substring(0, iMax);
	}

function checkNumeric(oField, sName) {
	if ((oField.value == "") || isNaN(oField.value)) {
		return(sName + "\n")
	}
	return("");
}

function checkMoneyNullOK(oField, sName) {
	if (oField.value != "") {
		return(checkMoney(oField, sName));
	} else {
		return("");
	}
}

function checkMoney(oField, sName) {
// format: 12,25 | 12.25 | 12,- | 12,-- | 12.- | 12.-- | 12
	if (oField.value == "") {
		return(sName + " is ongeldig.\n")
	}
	var sSplit;
	if (oField.value.indexOf(",") >= 0) {
		sSplit = ","
	}
	else if (oField.value.indexOf(".") >= 0) {
		sSplit = "."
	}
	else if (isNaN(oField.value)) {
		return(sName + " is ongeldig.\n")
	} else {
		return("");
	}
	var aMoney = oField.value.split(sSplit)
	if (isNaN(aMoney[0])) {
		return(sName + " is ongeldig.\n")
	}
	if (isNaN(aMoney[1]) && aMoney[1] != "-" && aMoney[1] != "--") {
		return(sName + " is ongeldig.\n")
	}
	if (aMoney[1].length != 2 && aMoney[1] != "-") {
		return(sName + " is ongeldig.\n")
	}
	return("");
}

function checkScoreNullOK(oField, sName) {
	if (oField.value != "") {
		return(checkScore(oField, sName));
	} else {
		return("");
	}
}
function checkScore(oField, sName) {
// format: 8 | 8.5 | 8,5 | >= 0.0 | <= 10.0
	if (oField.value == "") {
		return(sName + " is ongeldig.\n")
	}
	var sSplit;
	if (oField.value.indexOf(",") >= 0) {
		sSplit = ","
	}
	else if (oField.value.indexOf(".") >= 0) {
		sSplit = "."
	}
	else if (isNaN(oField.value) || oField.value < 0 || oField.value > 10) {
		return(sName + " is ongeldig.\n")
	} else {
		return("");
	}
	var aScore = oField.value.split(sSplit)
	if (isNaN(aScore[0]) || aScore[0] < 0 || aScore[0] > 10) {
		return(sName + " is ongeldig.\n")
	}
	if (isNaN(aScore[1]) || aScore[0] < 0 || aScore[0] > 9) {
		return(sName + " is ongeldig.\n")
	}
	if (aScore[1].length != 1) {
		return(sName + " is ongeldig.\n")
	}
	return("");
}

function checkNumericNullOK(oField, sName) {
	if ((oField.value != "") && isNaN(oField.value)) {
		return(sName + " moet een getal zijn\n")
	}
	return("");
}

function checkRange(oField, iMin, iMax, sName) {
	if ((oField.value == "") || isNaN(oField.value)) {
		return(sName + "\n");
	}
	if ((oField.value < iMin) || (oField.value > iMax)) {
		return("Waarde van " + sName + " moet tussen " + iMin + " en " + iMax + " liggen\n");
	}
	return("");
}

function checkCheckbox(oField, sName) {
	if (!oField.checked) {
		return("U heeft " + sName + " niet aangevinkt\n");
	}
	return("");
}

function checkCheckbox2(oField, oField2, sName) {
	if ((!oField.checked) && (!oField2.checked)){
		return("U heeft " + sName + " niet aangevinkt\n");
	}
	return("");
}

function checkCheckbox3(oField, sName) {
	if (!oField.checked) {
		return(sName + "\n");
	}
	return("");
}


function checkOption(oField, sName) {
	var bIsChecked = false;
	var i;
	for (i=0; i < oField.length; i++) {
		bIsChecked = bIsChecked || oField[i].checked;
	}
	if (!bIsChecked) {
//		return("Maak een keuze uit " + sName + "\n");
		return(sName + "\n");
	}
	return("");
}

function checkDropdown(oField, sName) {
	if (oField.selectedIndex < 0 || oField.options[oField.selectedIndex].value == "") {
//		return("Maak een keuze uit " + sName + "\n");
		return(sName + "\n");
	}
	return("");
}


function checkEmail(oField, sName) {
	var iAt = oField.value.indexOf("@");
	var iDot = oField.value.lastIndexOf(".");
	// Rules for correct email addres: xxx@yyy.zz
	if ((oField.value == "") || (iAt <= 0) || (iDot == -1) || (iDot < iAt) || ((iDot - iAt) <= 1) || (iDot > (oField.value.length - 3)))
	{
		return(sName + " is niet correct\n");
	}
	return("");
}


function checkEqual(oField1, oField2, sName) {
	if (oField1.value != oField2.value) {
		return("U moet tweemaal hetzelfde " + sName + " invoeren\n")
	}
	return("");
}

function checknotEqual(oField1, oField2, sName) {
	if (oField1.value.toLowerCase() == oField2.value.toLowerCase()){
		return(sName + "\n")
	}
	return("");
}

function checknotEqualNullOK(oField1, oField2, sName) {
	if (oField1.value == "" && oField2.value == ""){
		return("");
	}
	if (oField1.value.toLowerCase() == oField2.value.toLowerCase()){
		return(sName + "\n")
	}
	return("");
}

function checkPostcode(oField, sName) {
	var i;
	var c;
	var sPostcode = oField.value.replace(/\ /gi, "");
	// Rules for postcode: 1234AB
	if (sPostcode.length != 6) {
		return(sName + " is niet correct\n");
	}
	for (i=0; i<4; i++) {
		if (isNaN(sPostcode.charAt(i))) {
			return(sName + " is niet correct\n")
		}
	}
	for (i=4; i<6; i++) {
		c = sPostcode.charAt(i)
		if (!(((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))) {
			return(sName + " is niet correct\n")
		}
	}
	return("");
}


function checkPhoneNumber(oField, sName) {
	var sPhoneNumber = oField.value.replace(/\ /gi, "");
	sPhoneNumber = sPhoneNumber.replace(/\-/gi, "");
	sPhoneNumber = sPhoneNumber.replace(/\+/gi, "");
	sPhoneNumber = sPhoneNumber.replace(/\(/gi, "");
	sPhoneNumber = sPhoneNumber.replace(/\)/gi, "");
	// Rules for phonenumber: 012 3456789
	if ((sPhoneNumber.length != 10) || (isNaN(sPhoneNumber)) || (sPhoneNumber.charAt(0) != 0)) {
		return(sName + " is niet correct\n");
	}
//	if (sPhoneNumber.charAt(1) == 6) {
//		return(sName + " moet een privenummer zijn\n");
//	}
	oField.value = sPhoneNumber;
	return("");	
}

function checkTime(oTime, sName) {
	var aTime = oTime.value.split(":");
	if (!(checkHour(aTime[0]) && checkMinutes(aTime[1]))) {
		return(sName + " is niet correct\n")
	}
	return("");
}

function checkHour(hour) {
	if (isNaN(hour)) {
		return false;
	}
	if (hour < 0 || hour > 24) {
		return false;
	}
	return true;
}

function checkMinutes(minutes) {
	if (isNaN(minutes)) {
		return false;
	}
	if (minutes < 0 || minutes > 59) {
		return false;
	}
	return true;
}


function checkDateFields(oDays, oMonths, oYear, sName) {
	if (!(checkYear(oYear.value) && checkMonth(oMonths.options[oMonths.selectedIndex].value) && checkDay(oDays.options[oDays.selectedIndex].value, oMonths.options[oMonths.selectedIndex].value, oYear.value))) {
		return("correcte " + sName + "\n")
	}
	return("");
}

function checkDate(oField, sName) {
	var aCleanDate = oField.value.split(" ");
	var aDate = aCleanDate[0].split("-");
	if (!(checkYear(aDate[2]) && checkMonth(aDate[1]) && checkDay(aDate[0], aDate[1], aDate[2]))) {
		return(sName + " is niet correct\n")
	}
	return("");
}

function checkYear(year) {
	if (isNaN(year)) {
		return false;
	}
	return true;
}

function checkMonth(month) {
	if (isNaN(month)) {
		return false;
	}
	if (month < 1 || month > 12) {
		return false;
	}
	return true;
}


function checkDay(day, month, year) {
	if (isNaN(day)) {
		return false;
	}
	day = parseInt(day);
	month = parseInt(month);
	year = parseInt(year);
	if (day < 1) {
		return false;
	}
	switch (month){
	   case 1:
	   case 3:
	   case 5:
	   case 7:
	   case 8:
	   case 10:
	   case 12:
	      if (day > 31) {
	      	return false;
	      }
	      break;
	   case 4:
	   case 6:
	   case 9:
	   case 11:
	      if (day > 30) {
	      	return false;
	      }
	      break;
	   case 2 :
	      if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
			if (day > 29) {
				return false;
			}
		  }
		  else { // not a leap year
			if (day > 28) {
				return false;
			}
	      }
	      break;
	    default:
		  return false;
	}
	return true;
}
function checkDay2(oDay, oMonth, oYear, sName) {
var day = oDay.value;
var month = oMonth.value;
var year = oYear.value;

//alert("day: " + day + " month; " + month + " year: " + year);
	if (isNaN(day)) {
		return("Dit is geen geldige dag\n");
	}
	day = parseInt(day);
	month = parseInt(month);
	year = parseInt(year);
	if (day < 1) {
		return("Dit is geen geldige dagggg\n");
	}
	switch (month){
	   case 1:
	   case 3:
	   case 5:
	   case 7:
	   case 8:
	   case 10:
	   case 12:
	      if (day > 31) {
	      	return("Dit is geen geldige dag\\maand combinatie\n");
	      }
	      break;
	   case 4:
	   case 6:
	   case 9:
	   case 11:
	      if (day > 30) {
	      	return("Dit is geen geldige dag\\maand combinatie\n");
	      }
	      break;
	   case 2 :
	      if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
			if (day > 29) {
				return("Dit is geen geldige dag\\maand combinatie\n");
			}
		  }
		  else { // not a leap year
			if (day > 28) {
				return("Dit is geen geldige dag\\maand combinatie\n");
			}
	      }
	      break;
	    default:
			return("Dit is geen geldige dag\\maand combinatie\n");
	}
	return "";
}

function checkRekeningnr(oField, sName){
	// check lengte
	var iLength = oField.value.length;
	if (iLength < 1 || iLength > 9)	{
		return(sName + " is geen geldig rekeningnummer\n");
	}
	// check cijfers
	if (checkNumeric(oField, sName) != "") {
		return(sName + " is geen geldig rekeningnummer\n");
	}
	// banknummer
	if (iLength == 9) {
		if (!elevenproof(oField.value)) {
			return(sName + " is geen geldig rekeningnummer\n");
		}
	}
	// gironummer
	if (iLength == 8) {
		return(sName + " is geen geldig rekeningnummer\n");
	}
	return("");
}

function elevenproof(reknr) {
	var i,j;
	var iSum = 0;
	for (i = 0, j = 9; i < 9; i++, j--) {
		iSum += Number(reknr.charAt(i)) * j;
	}
	return ((iSum % 11) == 0)
}

