
function DateTime(d) {
	return Date(d)
}

ezFormValidation = {
	'types': {
		'not_empty': function(objects) {
			if ( objects.length > 1 ) {
				for ( var i=0; objects.length>i; i++ ) {
					if ( objects[i].checked ) {
						return true
					}
				}
			}
			else if ( objects.length == 1 ) {
				return '' != $.trim(objects[0].value)
			}
			return false
		},
		'not_required': function() {
			return true
		},
		'email': function(objects) {
			return /^[^@]{2,}@[^@]{5,}$/i.test(objects[0].value)
		},
		'date': function(objects) {
			return /^\d\d? ?\/ ?\d\d? ?\/ ?\d\d\d\d$/i.test(objects[0].value)
		},
		'phone': function(objects) {
			return /^\d{3}\-?\d{7}$/.test(objects[0].value)
		},
		'zipcodeformat': function(objects) {
			return /^[1-9][0-9]{3} ?[A-Z]{2}$/i.test(objects[0].value)
		},
		'zipcode': function(objects) {
			if ( !ezFormValidation.types.zipcodeformat(objects) ) {
				return false
			}
			var bValidPC = false
			$.ajax({
				type: "GET",
				async: false,
				url: "/schoonmaak/werk/ezcontent_addressReeksPhraseSearchByPostcode?postcode=" + objects[0].value,
				success: function(data) {
					if (data != "") {
						bValidPC = true
					}
				},
				error: function() {
					bValidPC = false
				}
			})
			if ( !bValidPC ) {
				alert("Postcode is niet gevonden")
			}
			return bValidPC
		}
	},
	'tmp_required': [],
	'setRequired': function(required) {
		ezFormValidation.tmp_required = required
	},
	'tmp_container': null,
	'setContainer': function(container) {
		ezFormValidation.tmp_container = $(container)
	},
	'tmp_objects': {},
	'validatePage': function(page) {
		var required = ezFormValidation.tmp_required[page-1]
		var msgs = []
		for ( f in required ) {
			var vo = required[f]
			var vf = !vo[1] || !ezFormValidation.types[vo[1]] ? ezFormValidation.types.not_empty : ezFormValidation.types[vo[1]]
			var objects = ezFormValidation.tmp_container.find('.efv_ebn_'+f)
			if ( !ezFormValidation.tmp_objects[f] ) {
				ezFormValidation.tmp_objects[f] = objects
			}
			if ( objects.length == 0 || !vf(objects) ) {
				msgs.push([f, vo[0] || f])
			}
		}
		return msgs
	},
	'doWithAllElements': function(handler) {
		for ( f in ezFormValidation.tmp_objects ) {
			handler(ezFormValidation.tmp_objects[f], f)
		}
	},
	'currentPage': 1,
	'postPageChangeCallback': function() {},
	'setPostPageChangeCallback': function(fn_callback) {
		ezFormValidation.postPageChangeCallback = fn_callback
	}
}

function checkFormPage(page) {
	var p = parseInt(page) || 0
	// reset colors to normal
	ezFormValidation.doWithAllElements(function(objects, f) {
		$('#fi_cont_'+f+', .id-fi_cont_'+f).css('color', '')
		objects.css('border-color', '')
	})
	$('div.errormessage').hide()
	// validate
	var msgs = ezFormValidation.validatePage(p)
	// set error colors
	$.each(msgs, function(k, msg) {
		var f = msg[0]
		$('#fi_cont_'+f+', .id-fi_cont_'+f).css('color', 'red')
		ezFormValidation.tmp_objects[f].css('border-color', 'red')
	})
	// alert error messages
	if ( 0 != msgs.length ) {
		$('div.errormessage').show()
		try {
			console.log($.map(msgs, function(msg){ return msg.join(': '); }).join("\n"))
		}
		catch (ex) {}
	}
	else {
		// show next page
		var np = $('#form_p'+(ezFormValidation.currentPage+1))
		if ( np.length == 1 ) {
			$('#form_p'+ezFormValidation.currentPage).hide()
			ezFormValidation.currentPage++
			np.show()
			ezFormValidation.postPageChangeCallback()
		}
		else {
			return true
		}
	}
	return false
}

function prevFormPage() {
	if ( ezFormValidation.currentPage > 1 ) {
		$('div.errormessage').hide()
		$('#form_p'+ezFormValidation.currentPage).hide()
		ezFormValidation.currentPage--
		$('#form_p'+ezFormValidation.currentPage).show()
		ezFormValidation.postPageChangeCallback()
	}
	return false
}

