var formValidation = (function(){
	var predefined = {
		required: {re: /[^.*]/, msg: "This field is required."},
		alpha: {re: /^[a-z ._-]+$/i, msg: "This field accepts alphabetic characters only."},
		alphanum: {re: /^[a-z0-9 ._-]+$/i, msg: "This field accepts alphanumeric characters only."},
		integer: {re: /^[-+]?\d+$/, msg: "Please enter a valid integer."},
		real: {re: /^[-+]?\d*\.?\d+$/, msg: "Please enter a valid number."},
		date: {re: /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$/, msg: "Please enter a valid date (mm/dd/yyyy)."},
		email: {re: /^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i, msg: "Please enter a valid email."},
		phone: {re: /^[\d\s ().-]+$/, msg: "Please enter a valid phone."},
		url: {re: /^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*$/i, msg: "Please enter a valid url."},
		confirm: {msg: "Confirm Password does not match original Password."}
	};
	var forms_to_validate = [];
	return {
		init: function () {
			var forms = document.getElementsByTagName('form');
			for (forms_i=0,forms_len=forms.length; forms_i<forms_len; forms_i++) {
				if (forms[forms_i].className == 'validate') {
					forms_to_validate[forms[forms_i].name] = [[],forms[forms_i]];
					forms[forms_i].groups = [];
					var inputs = forms[forms_i].getElementsByTagName('input');
					var selects = forms[forms_i].getElementsByTagName('select');
					for (inputs_i=0,inputs_len=inputs.length; inputs_i<inputs_len; inputs_i++) {
						if (inputs[inputs_i].alt) {
							eval('var inputObject = ' + inputs[inputs_i].alt);
							if (inputObject.group) {
								if (forms[forms_i].groups && forms[forms_i].groups[inputObject.group]) {
									forms[forms_i].groups[inputObject.group][0]++;
								} else {
									forms[forms_i].groups[inputObject.group] = [1,0];
								}
							}
							forms_to_validate[forms[forms_i].name][0][forms_to_validate[forms[forms_i].name][0].length] = [inputs[inputs_i],inputObject];
						}
					}
					for (selects_i=0,selects_len=selects.length; selects_i<selects_len; selects_i++) {
						if (selects[selects_i].title) {
							eval('var inputObject = ' + selects[selects_i].title);
							if (inputObject.group) {
								if (forms[forms_i].groups[inputObject.group]) {
									forms[forms_i].groups[inputObject.group][0]++;
								} else {
									forms[forms_i].groups[inputObject.group] = [1,0];
								}
							}
							forms_to_validate[forms[forms_i].name][0][forms_to_validate[forms[forms_i].name][0].length] = [selects[selects_i],inputObject];
						}
					}
					forms[forms_i].onsubmit = function () {return formValidation.validate(this.name)}
				}
			}
		},
		validate: function (formName) {
			// CUSTOM EFFECTS START
			var f = forms_to_validate[formName][0];
			var fObj = forms_to_validate[formName][1];
			var groups = fObj.groups;
			var fail = false;
			
			for (var group in groups) groups[group][1] = false;
			
			for (fields_i=0,fields_len=f.length; fields_i<fields_len; fields_i++) {
				var field = f[fields_i][0];
				var effectElement = field.parentNode;
				var value = field.value;
				var options = f[fields_i][1];
				
				if (field.type == 'radio') {
					var radiofail = true;
					var radios = forms_to_validate[formName][1][field.name];
					for (radios_i=0,radios_len=radios.length; radios_i<radios_len; radios_i++) {
						if (radios[radios_i].checked) {
							radiofail = false;
						}
					}
					if (radiofail) {
						var field = forms_to_validate[formName][1][field.name][0];
						var effectElement = field.parentNode;
						fail = true;
						if (options.classes.length==2) {
							effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
							effectElement.className = effectElement.className.length==false?options.classes[1]:effectElement.className+' '+options.classes[1];
						}
					} else {
						if (options.classes.length==2) {
							effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
							effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
						}
					}
				} else if ((!options.optional) || ((options.optional) && value.length > 0)) {
					if (typeof options.re == 'string') {
						if (!predefined[options.re].re.test(value)) {
							fail = true;
							if (options.classes.length==2) {
								if (options.group) {
									if (fObj.groups[options.group][0] != fObj.groups[options.group][1]) {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[1]:effectElement.className+' '+options.classes[1];
									}
								} else {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[1]:effectElement.className+' '+options.classes[1];
								}
								field.className = field.className.replace(' ' + options.classes[1] + '_field','').replace(options.classes[1] + '_field','').replace(' ' + options.classes[0] + '_field','').replace(options.classes[0] + '_field','');
								field.className = field.className.length==false?options.classes[1] + '_field':field.className+' '+options.classes[1] + '_field';
							}
						} else {
							if (options.classes.length==2) {
								if (options.group) {
									fObj.groups[options.group][1]++;
									if (fObj.groups[options.group][0] == fObj.groups[options.group][1]) {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
									}
								} else {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
								}
								field.className = field.className.replace(' ' + options.classes[1] + '_field','').replace(options.classes[1] + '_field','').replace(' ' + options.classes[0] + '_field','').replace(options.classes[0] + '_field','');
								field.className = field.className.length==false?options.classes[0] + '_field':field.className+' '+options.classes[0] + '_field';
							}
						}
					} else if (typeof options.re == 'object' || typeof options.re == 'function') {
						if (!options.re.test(value)) {
							fail = true;
							if (options.classes.length==2) {
								if (options.group) {
									if (fObj.groups[options.group][0] != fObj.groups[options.group][1]) {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[1]:effectElement.className+' '+options.classes[1];
									}
								} else {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[1]:effectElement.className+' '+options.classes[1];
								}
								field.className = field.className.replace(' ' + options.classes[1] + '_field','').replace(options.classes[1] + '_field','').replace(' ' + options.classes[0] + '_field','').replace(options.classes[0] + '_field','');
								field.className = field.className.length==false?options.classes[1] + '_field':field.className+' '+options.classes[1] + '_field';
							}
						} else {
							if (options.classes.length==2) {
								if (options.group) {
									fObj.groups[options.group][1]++;
									if (fObj.groups[options.group][0] == fObj.groups[options.group][1]) {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
									}
								} else {
									effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
									effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
								}
								field.className = field.className.replace(' ' + options.classes[1] + '_field','').replace(options.classes[1] + '_field','').replace(' ' + options.classes[0] + '_field','').replace(options.classes[0] + '_field','');
								field.className = field.className.length==false?options.classes[0] + '_field':field.className+' '+options.classes[0] + '_field';
							}
						}
					}
				} else if ((options.optional) && value.length == 0) {
					if (options.group) {
						fObj.groups[options.group][1]++;
						if (fObj.groups[options.group][0] == fObj.groups[options.group][1]) {
						effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
						effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
						}
					} else {
						effectElement.className = effectElement.className.replace(' ' + options.classes[1],'').replace(options.classes[1],'').replace(' ' + options.classes[0],'').replace(options.classes[0],'');
						effectElement.className = effectElement.className.length==false?options.classes[0]:effectElement.className+' '+options.classes[0];
					}
					field.className = field.className.replace(' ' + options.classes[1] + '_field','').replace(options.classes[1] + '_field','').replace(' ' + options.classes[0] + '_field','').replace(options.classes[0] + '_field','');
					field.className = field.className.length==false?options.classes[0] + '_field':field.className+' '+options.classes[0] + '_field';
				}
			}

			//*** OLD CODE//
		 var age = howOld(document.forms['registration'].dob_day.value, document.forms['registration'].dob_month.value, document.forms['registration'].dob_year.value);
		 if(age >= 13 && ReadCookie ('register') != "no") {
			dob = document.forms['registration'].dob_year.value + "-" + document.forms['registration'].dob_month.value + "-" + document.forms['registration'].dob_day.value;
		 } else if (age != "") {
			 WriteCookie('register','no');
			 window.location='noteligible.php';
		 }
		 //OLD CODE ****//

			if (fail === true && typeof document.getElementById('formtop') == 'object') {
				window.location = '#formtop';
			}
			return fail==false?true:false;
			// CUSTOM EFFECTS END
			
		}
	}
})();
var oldonload = window.onload;
if (typeof window.onload != 'function') {
	window.onload = formValidation.init;
} else {
	window.onload = function() {
		oldonload();
		formValidation.init();
	}
}
//*** OLD CODE//
function ReadCookie (CookieName)
{
	var CookieString = document.cookie;
	var CookieSet = CookieString.split (';');
	var SetSize = CookieSet.length;
	var CookiePieces
	var ReturnValue = "";
	var x = 0;

	for (x = 0; ((x < SetSize) && (ReturnValue == "")); x++)
	{
		CookiePieces = CookieSet[x].split ('=');
		if (CookiePieces[0].substring (0,1) == ' ')
		{
			CookiePieces[0] = CookiePieces[0].substring (1, CookiePieces[0].length);
		}
		if (CookiePieces[0] == CookieName)
		{
			ReturnValue = CookiePieces[1];
		}
	}
	return ReturnValue;
}



function WriteCookie (cookieName, cookieValue, expiry)
{
	var expDate = new Date();
	if(expiry)
	{
		expDate.setTime (expDate.getTime() + expiry);
		document.cookie = cookieName + "=" + escape (cookieValue) + "; expires=" + expDate.toGMTString();
	}
	else
	{
		document.cookie = cookieName + "=" + escape (cookieValue);
	}
}

function fixDate(date) {
  var base = new Date(0);
  var skew = base.getTime();
  if (skew > 0) { date.setTime(date.getTime() - skew); }
}
// determine age
function howOld(day,month,year) {

    var c = new Date(); // a new instance

    fixDate(c);
    //var thisDay = c.getDate();
    //var thisMonth = c.getMonth() + 1;
    //var thisYear = c.getFullYear();
    var thisDay = 10;
    var thisMonth = 9;
    var thisYear = 2008;
    var yearsold = thisYear - year;
    var monthsold = 0;
    var daysold = 0;
    var age = '';

    if (thisMonth >= month) {
    	monthsold = thisMonth - month;
    }
    else {
    	yearsold--;
    	monthsold = thisMonth + 12 - month;
    }
    if (thisDay >= day) {
     daysold = thisDay - day;
    }
    else {
        if (monthsold > 0) {
        	monthsold--;
        }
        else {
        	yearsold--;
        	monthsold += 11;
        }
        daysold = thisDay + 31 - day;
    }
    if (yearsold < 0) return '';
    if ((yearsold == 0) && (monthsold == 0) && (daysold == 0)) return '';
    if (yearsold > 0) {
        age = yearsold;
        if (yearsold > 1) age;
        age += ' ';
    }
    return age;
}
//OLD CODE ****//
