ValangValidator.Rule.prototype.ValidDateFunction = function(day, month, year) {
	try {
		var d = new Date();
		// months are 0-based, days are 1-based
		var dd = parseInt(day);
		var mm = parseInt(month) - 1;
		var yyyy = parseInt(year);
		d.setFullYear(yyyy, mm, dd);
		if (d.getFullYear() != yyyy)
			return false;
		if (d.getMonth() != mm)
			return false;
		if (d.getDate() != dd)
			return false;
	} catch (ex) {
		return false;
	}
	return true;
};

ValangValidator.Rule.prototype.ValidZipCodeFunction = function(zipCode) {
	if(zipCode.match(/^\d{5}$/)!=null)
		return true;
	else
		return false;
};

ValangValidator.Rule.prototype.BooleanRadioTrueValueFunction = function(radioValue) {	
	if(radioValue=='true')
		return true;
	else
		return false;
};


ValangValidator.prototype._findForm = function(form) {
	//var element = $(form);
	var element = document.getElementById(form);
	if (!element || element.tagName.toLowerCase() != 'form') {
		element = document.getElementById(name + 'ValangValidator');
		if (!element || element.tagName.toLowerCase() != 'script') {
			throw 'unable to find form with ID \'' + form
					+ '\' or script element with ID \'' + form
					+ 'ValangValidator\'';
		}
	}
	var foundElement = element;
	while (element && element.tagName.toLowerCase() != 'form') {
		element = element.parentNode;
	}
	if (!element) {
		throw 'unable to find FORM element enclosing element with ID \'' + foundElement.id + '\'';
	}
	return new ValangValidator.Form(element);
};

ValangValidator.OldField = ValangValidator.Field; 
ValangValidator.Field = function(fieldElement) {
	this.id = fieldElement.id;
	this.name = fieldElement.name;
	this.type = fieldElement.type.toLowerCase();
	this.tagName = fieldElement.tagName.toLowerCase();
	this.fieldElement = fieldElement;
	if (ValangValidator.Field.ValueGetters[this.tagName]) {
		this.getValue = ValangValidator.Field.ValueGetters[this.tagName];
	} else if (this.tagName == 'input') {
		switch (this.type) {
		case 'submit':
		case 'button': // Patch by ACB
		case 'reset':  // Patch by ACB
		case 'hidden':
		case 'password':
		case 'text':
			this.getValue = ValangValidator.Field.ValueGetters['textarea'];
			break;
		case 'checkbox':
		case 'radio':
			this.getValue = ValangValidator.Field.ValueGetters['inputSelector'];
			break;
		default:
			throw 'unexpected input field type \'' + this.type + '\'';
		}
	} else if(this.tagName == 'button') { // Patch by ACB
		this.getValue = ValangValidator.Field.ValueGetters['textarea']; // Patch by ACB
	} else {
		throw 'unexpected form field tag name \'' + this.tagName + '\'';
	}
} ;
ValangValidator.Field.prototype = ValangValidator.OldField.prototype;
ValangValidator.Field.ValueGetters = ValangValidator.OldField.ValueGetters;
ValangValidator.OldField = null;
