﻿function CheckForEmptyDropdown(source, arguments) {
	var dropDown = document.getElementById(source.getAttribute('dropdown'));
	if(dropDown == null) {
		arguments.IsValid = false;
		return;
	}
	var notEmpty = (dropDown.options[dropDown.selectedIndex].value != '');
	arguments.IsValid = notEmpty;
	if(!arguments.IsValid) {
		dropDown.className += ' error-field';
		dropDown.focus();
	} else {
		dropDown.className = dropDown.className.replace(/\berror-field\b/, '');
	}
}

function CheckDOBField(source, arguments) {
	if(arguments.Value == 'dd/mm/yyyy' || arguments.Value == '') {
		arguments.IsValid = false;
		UpdateValidationError(source, dobRequired);
		return;
	}
	
	var format = /([0-3][0-9])\/(01|02|03|04|05|06|07|08|09|10|11|12)\/(\d{4})/;
	if(!format.test(arguments.Value)) {
		arguments.IsValid = false;
		UpdateValidationError(source, dobRequired);
		return;		
	}
	
	var dateParts = format.exec(arguments.Value);
	var day = dateParts[1];
	if(day > 31) {
		arguments.IsValid = false;
		UpdateValidationError(source, dobRequired);
		return;		
	}
	var year = dateParts[3];
	if(year < 1890) {
		arguments.IsValid = false;
		UpdateValidationError(source, dob1890);
		return;
	}
	
	var dt = new Date(dateParts[3], dateParts[2]-1, dateParts[1], 0, 0, 0, 0);
	var today = new Date();
	var yearInMilliseconds = 3.1556926 * (Math.pow(10,10));
	if(((today - dt) / yearInMilliseconds) < 16) {
		arguments.IsValid = false;
		UpdateValidationError(source, dobUnder16);
		return;
	}
	arguments.IsValid = true;
	return;
}

function UpdateValidationError(validator, newMessage) {
	validator.errormessage = newMessage;
	if(validator.ValidatorCalloutBehavior == null) { return; }

	validator.ValidatorCalloutBehavior._ensureCallout();
	if(validator.ValidatorCalloutBehavior._errorMessageCell == null) { return; }

	var msgCell = validator.ValidatorCalloutBehavior._errorMessageCell;
	msgCell.innerHTML = newMessage;
}

function DateFormat(ev) {
	var input = ev.target;
	var currValue = input.value;
	var code = ev.charCode ? ev.charCode : ev.keyCode;
	var newKey = String.fromCharCode(code);
	
	if(code == 8) return true;
	
	if(/\d/.test(newKey)) {
		if(/^\d(\d\/\d)?$/.test(currValue)) {
			input.value = currValue + newKey + '/';
		} else {
			input.value = currValue + newKey;
		}
	}
	return false;
}
