var new_fieldname = "";
var submit_executed = false;

function formCheckMessage(msg)
{

}

function check(form,x,formSubmit)
{
	var message = "";
	var more_message = "";
	var showmsg = "no";
	var linebreak = "\n";
	x = form.elements.length;
	x = x - 1;
	for (var i = 0; i <= x; i++)
	{
		var messenger = form.elements[i].name;
		messenger = messenger.substring(0, 2);
		var fieldname = form.elements[i].name;
		fieldname = fieldname.substring(2);
		if (messenger == "r_"){
			more_message = r_check(form,x,fieldname,i);
			if(more_message > ""){
				//document.getElementById(fieldname).style.border = '2px solid #FF0000';
			}
		}
		else if (messenger == "i_"){
			more_message = i_check(form,x,fieldname,i)
		}
		else if (messenger == "d_"){
			more_message = d_check(form,x,fieldname,i)
		}
		else if (messenger == "e_"){
			more_message = e_check(form,x,fieldname,i)
		}
		else if (messenger == "p_"){
			more_message = p_check(form,x,fieldname,i)
		}
		else if (messenger == "z_"){
			more_message = z_check(form,x,fieldname,i)
		}
		else if (messenger == "b_"){
			more_message = b_check(form,x,fieldname,i)
		}
		if (more_message != ""){
			if (message == ""){
				message = more_message
				more_message=""
			}else{
				message = message + linebreak + more_message
				more_message=""
			}
		}
		if (message > ""){
			showmsg = "yes"
		}
	}

	//This code will prevent a submit if data is incoorect
	if (showmsg == "yes")
	{
		var msg = "The following form field(s) were incomplete or incorrect:"+linebreak+linebreak+message+linebreak+linebreak+" "+"Please complete or correct the form and submit again.";
		alert(msg);
		return false;
	}
	else
	{
		if(formSubmit != false)
		{
			/**
			* Submissions of forms should only happen once.
			**/
			if(submit_executed == false)
			{
				form.submit();
				submit_executed = true;
			}
		}
		else
		{
			return true;
		}
	}
}

function r_check(form,x,fieldname,i)
{
	var msg_addition = ""
	new_fieldname = fieldname
	for (var y = 0; y <= x; y++)
	{

		if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true)
		{
			msg_addition = ""
			break
		}
		else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false)
		{
			msg_addition = form.elements[i].value
		}

		else if (form.elements[y].type == "select-one")
		{
			var l = form.elements[y].selectedIndex
			if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "")
			{
				msg_addition = ""
				break
			}
			else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "")
			{

				msg_addition = form.elements[i].value

			}
		}
		else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
		{

			msg_addition = form.elements[i].value
			break
		}
		else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
		{
			msg_addition = ""

		}
	}
	return(msg_addition)

}


function i_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++)
	{
		if (form.elements[y].name == fieldname)
		break
	}

	var msg_addition = ""
	var decimal = ""
	inputStr = form.elements[y].value.toString()

	if (inputStr == "")
	{
		msg_addition = form.elements[i].value
	}
	else
	{
		for (var c = 0; c < inputStr.length; c++)
		{
			var oneChar = inputStr.charAt(c)
			if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")
			{
				if (oneChar == ".")
				{
					decimal = "yes"
				}
				continue

			}
			if (oneChar < "0" || oneChar > "9")
			{
				msg_addition = form.elements[i].value
			}
		}
	}
	return(msg_addition)
}

function z_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++)
	{
		if (form.elements[y].name == fieldname)
		break
	}

	var msg_addition = ""
	var decimal = ""
	inputStr = form.elements[y].value.toString()

	if (inputStr == "")
	{
		//msg_addition = form.elements[i].value
	}
	else
	{
		for (var c = 0; c < inputStr.length; c++)
		{
			var oneChar = inputStr.charAt(c)
			if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")
			{
				if (oneChar == ".")
				{
					decimal = "yes"
				}
				continue

			}
			if (oneChar < "0" || oneChar > "9")
			{
				msg_addition = form.elements[i].value
			}
		}
	}
	return(msg_addition)
}


function p_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++)
	{
		if (form.elements[y].name == fieldname)
		break
	}

	var msg_addition = ""
	var decimal = ""
	inputStr = form.elements[y].value.toString()
	if (inputStr == "" || inputStr == 0)
	{
		msg_addition = form.elements[i].value
	}
	else
	{
		for (var c = 0; c < inputStr.length; c++)
		{
			var oneChar = inputStr.charAt(c)
			if (oneChar != " "){
				if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")
				{
					if (oneChar == ".")
					{
						decimal = "yes"
					}
					continue

				}
				if (oneChar < "0" || oneChar > "9")
				{
					msg_addition = form.elements[i].value
				}
			}
		}
	}
	return(msg_addition)
}

//Email validation added 6/20/98
function e_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++)
	{
		if (form.elements[y].name == fieldname)
		break
	}

	var msg_addition = ""
	period = ".";


	if (form.elements[y].value == "" || form.elements[y].value.indexOf ('@', 0) < 2)
	error = 1;

	else
	{
		test = form.elements[y].value.indexOf('.', form.elements[y].value.indexOf ('@', 0))
		if (test != -1)
		{
			error = 0;
		}
		else
		{
			error=1;
		}
	}
	if (error == 1)
	{
		msg_addition = form.elements[i].value
	}
	else
	{
		new_length = form.elements[y].value.length - test
		if (new_length == 4 || new_length == 3 || (new_length >= 5 && form.elements[y].value.indexOf ('.', (test+1)) != -1))
		{
			msg_addition = ""
		}
		else
		msg_addition = form.elements[i].value;
	}
	return(msg_addition)
}

//date must be in MM/DD/YY format OR M/D/YY or a MIX of the two
function d_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++){
		if (form.elements[y].name == fieldname){
			break;
		}
	}
	var msg_addition = "";
	var sDate = form.elements[y].value;
	var int_or_not = isInteger(form.elements[y].value);

	//to allow NO validation unless r_ specified
	if (form.elements[y].value != "")
	{
		if (int_or_not == "true")
		{
			if ((!(form.elements[y].value.length >= 6)) || (!(form.elements[y].value.length <= 8)))
			{
				msg_addition = form.elements[i].value
			}
			else
			{
				var SlashlPos = form.elements[y].value.indexOf("/",0)
				if (SlashlPos > 0 && SlashlPos <= 2)
				{
					if (SlashlPos == 1)
					{
						if (form.elements[y].value.charAt(0) < 1 || form.elements[y].value.charAt(0) > 9)
						{
							msg_addition = form.elements[i].value
						}
						else
						{
							if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/")))
							{
								msg_addition = form.elements[i].value
							}
							else if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && ((form.elements[y].value.charAt(2) >= 3 && form.elements[y].value.charAt(3) > 1) || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/"))))
							{
								msg_addition = form.elements[i].value + "hi"
							}
							else if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && (((form.elements[y].value.charAt(2) > 3 && form.elements[y].value.charAt(3) != "/") || (((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/")) && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
							{
								msg_addition = form.elements[i].value
							}
							else
							{
								if ((form.elements[y].value.charAt(0) == 2 && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/") || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/")))))
								{
									msg_addition = form.elements[i].value
								}
								else if (form.elements[y].value.charAt(0) == 2 && ((form.elements[y].value.charAt(2) > 2 && form.elements[y].value.charAt(3) != "/") || (((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/") && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
								{
									msg_addition = form.elements[i].value
								}
								else
								{
									if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/")))
									{
										msg_addition = form.elements[i].value
									}
									else if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && ((form.elements[y].value.charAt(2) >= 3 && form.elements[y].value.charAt(3) > 0) || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/"))))
									{
										msg_addition = form.elements[i].value
									}
									else if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && (((form.elements[y].value.charAt(2) > 3 && form.elements[y].value.charAt(3) != "/") || ((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/") && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
									{
										msg_addition = form.elements[i].value
									}
								}
							}
						}
					}else{
						if (form.elements[y].value.charAt(0) > 1 || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) > 2) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 0))
						{
							msg_addition = form.elements[i].value
						}
						else
						{
							if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/"))))
							{
								msg_addition = form.elements[i].value
							}
							else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) >= 3 && form.elements[y].value.charAt(4) > 1) || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0) || form.elements[y].value.length < 7))
							{
								msg_addition = form.elements[i].value
							}
							else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) > 3 && form.elements[y].value.charAt(4) != "/")	|| ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
							{
								msg_addition = form.elements[i].value
							}
							else
							{
								if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 2) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0)) || form.elements[y].value.length < 7) || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/")))
								{
									msg_addition = form.elements[i].value
								}
								else if ((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 2) && ((form.elements[y].value.charAt(3) > 2 && form.elements[y].value.charAt(4) != "/") || ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
								{
									msg_addition = form.elements[i].value
								}
								else
								{
									if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/"))))
									{
										msg_addition = form.elements[i].value;
									}
									else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) >= 3 && form.elements[y].value.charAt(4) > 0) || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0) || form.elements[y].value.length < 7))
									{
										msg_addition = form.elements[i].value;
									}
									else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) > 3 && form.elements[y].value.charAt(4) != "/") || ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
									{
										msg_addition = form.elements[i].value;
									}
								}
							}
						}
					}
				}else{
					msg_addition = form.elements[i].value;
				}
			}
		}	else{
			msg_addition = form.elements[i].value;
		}
		return(msg_addition)
	}
	//to allow NO validation unless r_ specified CLOSING
	return(msg_addition)
}

function isInteger(sDate)
{
	var new_msg = "true";
	inputStr = sDate.toString();
	for (var i = 0; i < inputStr.length; i++)	{
		var oneChar = inputStr.charAt(i);
		if ((oneChar < "0" || oneChar > "9") && oneChar != "/")
		{
			new_msg = "false";
		}
	}
	return (new_msg);
}

function doall(script_name, copyright, email)
{
	var code = 0;
	var test = script_name + copyright + email;
	for (var a = 0; a < test.length; a++)
	{
		var each_char = test.charAt(a);
		var x = asc(each_char);
		code += x;
	}
	return (code)
}

function asc(each_char)
{
	var n = 0;
	var char_str = charSetStr();
	for (i = 0; i < char_str.length; i++)
	{
		if (each_char == char_str.substring(i, i+1)){
			break;
		}
	}
	return i + 32;
}

function charSetStr()
{
	var str
	str = ' !"#$%&' + "'" + '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
	return str
}

//Age

function b_check(form,x,fieldname,i)
{
	for (var y = 0; y <= x; y++)
	{
		if (form.elements[y].name == fieldname)
		break
	}
	var msg_addition = ""
	period = ".";
	var valuefield = MM_findObj(fieldname);
	var year = MM_findObj(fieldname+'_y');
	var month = MM_findObj(fieldname+'_m');
	var day = MM_findObj(fieldname+'_d');
	var birthdate = day.value+'/'+month.value+'/'+year.value;
  var agelimit = MM_findObj(fieldname+'_agelimit').value;
	valuefield.value = birthdate;

	dt1= getDateObject(birthdate,"/");
	dt2= getDateObject(agelimit,"/");

	if(dt1>dt2)
  	msg_addition = 'You must be eighteen to register.';

  return msg_addition;
}

function getDateObject(dateString,dateSeperator)
{
	//This function return a date object after accepting
	//a date string ans dateseparator as arguments
	var curValue=dateString;
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;

	//extract day portion
	curPos=dateString.indexOf(sepChar);
	cDate=dateString.substring(0,curPos);

	//extract month portion
	endPos=dateString.indexOf(sepChar,curPos+1); cMonth=dateString.substring(curPos+1,endPos);

	//extract year portion
	curPos=endPos;
	endPos=curPos+5;
	cYear=curValue.substring(curPos+1,endPos);

	//Create Date Object
	dtObject=new Date(cYear,cMonth,cDate);
	return dtObject;
}


// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
	}
	else if (d1 > d2) {
		return 1;
	}
	return 0;
}

function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
	}
	return true;
}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
	}
	return null;
}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";

	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
		}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
			}
		}
		else if (token=="MMM"||token=="NNN"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (token=="MMM"||(token=="NNN"&&i>11)) {
						month=i+1;
						if (month>12) { month -= 12; }
						i_val += month_name.length;
						break;
					}
				}
			}
			if ((month < 1)||(month>12)){return 0;}
		}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
				}
			}
		}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
			else if (token=="dd"||token=="d") {
				date=_getInt(val,i_val,token.length,2);
				if(date==null||(date<1)||(date>31)){return 0;}
				i_val+=date.length;}
				else if (token=="hh"||token=="h") {
					hh=_getInt(val,i_val,token.length,2);
					if(hh==null||(hh<1)||(hh>12)){return 0;}
					i_val+=hh.length;}
					else if (token=="HH"||token=="H") {
						hh=_getInt(val,i_val,token.length,2);
						if(hh==null||(hh<0)||(hh>23)){return 0;}
						i_val+=hh.length;}
						else if (token=="KK"||token=="K") {
							hh=_getInt(val,i_val,token.length,2);
							if(hh==null||(hh<0)||(hh>11)){return 0;}
							i_val+=hh.length;}
							else if (token=="kk"||token=="k") {
								hh=_getInt(val,i_val,token.length,2);
								if(hh==null||(hh<1)||(hh>24)){return 0;}
								i_val+=hh.length;hh--;}
								else if (token=="mm"||token=="m") {
									mm=_getInt(val,i_val,token.length,2);
									if(mm==null||(mm<0)||(mm>59)){return 0;}
									i_val+=mm.length;}
									else if (token=="ss"||token=="s") {
										ss=_getInt(val,i_val,token.length,2);
										if(ss==null||(ss<0)||(ss>59)){return 0;}
										i_val+=ss.length;}
										else if (token=="a") {
											if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
											else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
											else {return 0;}
											i_val+=2;}
											else {
												if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
												else {i_val+=token.length;}
											}
	}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
		if (date > 29){ return 0; }
		}
		else { if (date > 28) { return 0; } }
	}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return 0; }
	}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
}

function inArray(needle, haystack)
{
	var in_array = false;
	for(var i in haystack){
		if(haystack[i] == needle){
			in_array = true;
			break;
		}
	}
	return in_array;
}

function validateUniqueArray(fields, message)
{
	var result = true;
	var uniquevalues = new Array();
	var elem = null;
	for(var i in fields){
		if(!inArray(fields[i].value, uniquevalues)){
			uniquevalues.push(fields[i].value);
		}
	}
	if(fields.length > uniquevalues.length){
		alert(message);
		result = false;
	}
	return result;
}

function validateElements(fields, message)
{
	var result = true;
	var uniquevalues = new Array();
	for(var i=0; i<fields.length; i++){
		if(fields[i].value == ''){
			alert(fields[i].getAttribute('label') + ' may not be empty. ');
			return false;
		}
		if(!inArray(fields[i].value, uniquevalues)){
			uniquevalues.push(fields[i].value);
		}
	}
	if(fields.length > uniquevalues.length){
		alert(message);
		result = false;
	}
	return result;
}
