var new_fieldname = "";
var submit_executed = false;
/**
* Global javascript form validation function
* @return string
**/
function check(form, x, formSubmit, additional_message)
{
	if(additional_message == null)
		additional_message = '';
	var result = false;
	var message = "";
	var more_message = '';
	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);
		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 == "v_")
			more_message = image_check(form, x, fieldname, i)
		else if (messenger == "c_")
			more_message = confirm_edit_check(form, x, fieldname, i)
		if (more_message != "")
		{
			if (message == "")
			{
				message = more_message
				more_message = ""
			}
			else
			{
				message = message + linebreak + more_message
				more_message = ""
			}
		}
	}
	message = message+additional_message;
	//This code will prevent a submit if data is incoorect
	if (message > "")
	{
		try
		{
			message = RS_THE_FOLLOWING_FORM_FIELDS_WERE_INCOMPLETE_OR_INCORRECT+linebreak+linebreak+message+linebreak+linebreak+" "+RS_PLEASE_COMPLETE_OR_CORRECT_THE_FORM_AND_SUBMIT_AGAIN;
		}
		catch(e)
		{
			message = "The following form field(s) were incomplete or incorrect:"+linebreak+linebreak+message+linebreak+linebreak+" "+"Please complete or correct the form and submit again.";
		}
		try
		{
			rd_raiseMessage("<div align=left>"+message+"</div>");
		}
		catch(e)
		{
			alert(message);
		}
	}
	else
	{
		if(formSubmit != false)
		{
			/**
			* Submissions of forms should only happen once.
			**/
			if(submit_executed == false)
			{
				rd_performEntityFormPreSubmitActions(form);
				rd_singleSubmit(form);
				submit_executed = true;
			}
		}
		else
		{
			result = true;
		}
	}
	return result;
}

function rd_performEntityFormPreSubmitActions(form)
{
	entity_type_input = rd_getElement('entity_type')
	if(entity_type_input != null)
	{
		entity_type_identifier = entity_type_input.value;
	}
}

function rd_performPageFormPreSubmitActions(form)
{
	if(rd_raiseConfirm(RS_WOULD_YOU_LIKE_TO_ADD_NAVIGATION_LINKING_TO_THIS_PAGE))
		form.action = CMS_FILENAME_INDEX+'?module=page&action=insertpagenewnavigation';
}

/**
* Check required field
* @return string message
**/
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)
}

/**
* Check integer field
* @return string
**/
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)
}

/**
* Check float field
* @return string
**/
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)
}

/**
* @return string
**/
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)
}

/**
* @return string
* 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 field validation
* date must be in MM/DD/YY format OR M/D/YY or a MIX of the two
* @return string
**/
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)
}

var image_blacklist = new Array();
image_blacklist.push('banner');
image_blacklist.push('ban.');
image_blacklist.push('advert');
image_blacklist.push('ad.');
image_blacklist.push('.ad');
/**
* Does string comparison, as well as cross checks the filename and a blacklist
* @return string
**/
function image_check(form, x, fieldname, i)
{
	var msg_addition = '';
	if(form[fieldname] != null)
	{
		var value = form[fieldname].value;
		if(value != '')
		{
			var filename = rd_basename(value);
			for(var i=0; i<image_blacklist.length; i++)
			{
				if(checkForCharacters(filename, image_blacklist[i], 0) >= 0)
				{
					msg_addition+= RS_FILENAME_CANNOT_CONTAIN_BLACKLISTED_WORD+' "'+image_blacklist[i]+'".';
					break;
				}
			}
		}
	}
	msg_addition+= r_check(form, x, fieldname, i);
	return msg_addition;
}

/**
* Does string comparison, as well as cross checks the original input
* @return string
**/
function confirm_edit_check(form, x, fieldname, i)
{
	var msg_addition = '';
	var confirm_input = rd_getElement('confirm_'+fieldname);
	var edit_input = rd_getElement(fieldname);
	msg_addition+= r_check(form, x, fieldname, i);
	if(confirm_input.value != edit_input.value)
	{
		msg_addition+= RS_PLEASE_MAKE+' "'+confirm_input.value.toLowerCase()+'" ';
		msg_addition+= RS_IDENTICAL_TO+' "'+edit_input.value.toLowerCase()+'" ';
		msg_addition+= "\n"
	}
	return msg_addition;
}

/**
* Checks if value is a number
* @return 'true' or 'false'
**/
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 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();
	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;
}