windowLoad(startList2);

function windowLoad(callBack)
{
	window.onload = function() {		
		if (document.forms[0]) {
			document.forms[0].onsubmit = function() {
				var birth = document.getElementById('birth')
					|| document.forms[0]['birth'];
				if (!!birth) {
					if (birth.value == '') {
						alert('Please enter the birth date.');
						birth.select();
						birth.focus();
						return false;
					}
					else {
						return true;
					}
				}
				else {
					var todo = [];
					if (!!document.getElementById('driver1_birthdate')
						|| !!document.forms[0]['driver1_birthdate']) 
					{
						todo.push('driver1_birthdate');	
					}
					var birth2 = document.getElementById('driver2_birthdate')
						|| document.forms[0]['driver2_birthdate'];
					if (!!birth2 && birth2.value != '') {
						todo.push('driver2_birthdate');	
					}
					return todo.length > 0 
						? dateFormat(todo)
						: true;
				}
			}
		}
		
		if (!!callBack) {
			type_callBack = typeof(callBack);
			if (type_callBack == 'function') {
				callBack();	
			}
			else if ((type_callBack == 'array' || type_callBack == 'object') && !!callBack.length) {
				for (var i = 0, l = callBack.length; i < l; i++) {
					callBack[i]();
				}
			}
		}
	}
}

function dateFormat(o)
{
	var type = typeof(o); 
	// if array object, loop through all
	if ((type == 'array' || type == 'object') && !!o.length) {
		var ret = true;
		for (var i = 0, l = o.length; i < l; i++) {
			ret &= dateFormat(o[i]);
		}
		return !!ret;
	}
	else {
		var o = document.getElementById(o) 
			|| document.forms[0][o];
		
		// trim
		o.value = o.value.replace(/^(\s+)/, '').replace(/(\s+)$/, '');
					 
		/*
			[1] = 1976      YYYY
			[2] = 01        MM
			[3] = 30        DD
		*/
		var rx = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;

		// execute regex
		var res = rx.exec(o.value);
		
		// res[1] + '-' + res[2] + '-' + res[3];
		// check for valid ranges
		if (res === null
			|| res[2] < 1
			|| res[2] > 12
			|| res[3] < 1
			|| res[3] > 31) 
		{
			alert('Please enter a birth date in the correct format:\n\nYYYY-MM-DD'); 
			o.select();
			o.focus();
			return false; 
		}
		else {
			// is valid
			if (!!globalCallBack && typeof(globalCallBack) == 'function') {
				return true && globalCallBack();
			}
			else {
				return true
			}
		}
	}
}
