var new_fieldname = "";
var submit_executed = false;

/**
* Global javascript form validation function
* @return string
**/
function check(form, x, formSubmit, additional_message)
{
	if(!form){ return true; }
	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(message);
		}catch(e){
			alert(message);
		}
	}else{
		if(formSubmit != false){
			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;
	}
}

/**
* 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 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)
	}
	return(msg_addition)
}

function rd_basename(filename){
	filename = filename.toString();
	var parts = filename.split('\\');
	return parts[parts.length-1].toString();
}

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');

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(filename.indexOf(image_blacklist[i]) >= 0){
					msg_addition+= RS_FILENAME_CANNOT_CONTAIN_BLACKLISTED_WORD+' "'+image_blacklist[i]+'".';
					break;
				}
			}
		}
	}
	msg_addition+= r_check(form, x, fieldname, i);
	return msg_addition;
}

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_SURE_YOUR_PASSWORD_AND_CONFIRMATION_PASSWORD_ARE_THE_SAME;
		msg_addition+= "\n"
	}
	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 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;
}


// Form Field Validation Functions:
//
// isValidExpDate(formField,fieldLabel,required)
//   -- checks for date in the format MM/YY or MM/YYYY against the current date
// isValidCreditCardNumber(formField,ccType,fieldLabel,required)
//   -- checks for valid credit card format using the Luhn check and known digits about various cards
//

function _validRequired(formField,fieldLabel){
	var result = true;
	if (formField.value == ""){
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	return result;
}

function allDigits(str){
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset){
	var result = true;
	for (var i=0;i<str.length;i++)
	if (charset.indexOf(str.substr(i,1))<0){
		result = false;
		break;
	}
	return result;
}

function isValidExpDate(formField,fieldLabel,required){
	var result = true;
	var formValue = formField.value;
	if (required && !validRequired(formField,fieldLabel))
	result = false;
	if (result && (formField.value.length>0)){
		var elems = formValue.split("/");
		result = (elems.length == 2); // should be two components
		var expired = false;
		if (result){
			var month = parseInt(elems[0],10);
			var year = parseInt(elems[1],10);
			if (elems[1].length == 2) year += 2000;
			var now = new Date();
			var nowMonth = now.getMonth() + 1;
			var nowYear = now.getFullYear();
			expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month));
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
			allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4));
		}
		if (!result){
			alert('Please enter a date in the format MM/YY for the "' + fieldLabel +'" field.');
			formField.focus();
		}else if (expired){
			result = false;
			alert('The date for "' + fieldLabel +'" has expired.');
		}
	}
	return result;
}

function isValidCreditCardNumber(formField,ccType,fieldLabel,required){
	var result = true;
	var ccNum = formField.value;
	if (required && !validRequired(formField,fieldLabel))
	result = false;
	if (result && (formField.value.length>0)){
		if (!allDigits(ccNum)){
			alert('Please enter only numbers (no dashes or spaces) for the "' + fieldLabel +'" field.');
			formField.focus();
			result = false;
		}
		if (result && !LuhnCheck(ccNum)){
			alert('Please enter a valid card number for the "' + fieldLabel +'" field.');
			formField.focus();
			result = false;
		}
	}
	return result;
}

function LuhnCheck(str)
{
	var result = true;
	var sum = 0;
	var mul = 1;
	var strLen = str.length;
	for (var i = 0; i < strLen; i++){
		var digit = str.substring(strLen-i-1,strLen-i);
		var tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10){
			sum += (tproduct % 10) + 1;
		}else{
			sum += tproduct;
		}
		if (mul == 1){
			mul++;
		}else{
			mul--;
		}
	}
	if ((sum % 10) != 0){
		result = false;
	}
	return result;
}

function GetRadioValue(rArray){
	for (var i=0;i<rArray.length;i++){
		if (rArray[i].checked) return rArray[i].value;
	}
	return null;
}

function validateCCNum(cardType,cardNum){
	var result = false;
	cardType = cardType.toUpperCase();
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first4digs = cardNum.substring(0,4);
	switch (cardType)
	{
		case "VISA":
		result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
		break;
		
		case "AMEX":
		var validNums = "47";
		result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
		break;
		
		case "MASTERCARD":
		var validNums = "12345";
		result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
		break;
		
		case "DISCOVER":
		result = (cardLen == 16) && (first4digs == "6011");
		break;
		
		case "DINERS":
		var validNums = "068";
		result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
		break;
	}
	return result;
}

function validCCForm(ccTypeField,ccNumField,ccExpField){
	return isValidCreditCardNumber(ccNumField,ccTypeField.value,"Credit Card Number",true) && isValidExpDate(ccExpField,"Expiration Date",true);
}

function rd_sendFormConfirm(form, message){
	document.varActionForm = form;
	rd_raiseConfirm(message, function(result){
		if(result){
			check(document.varActionForm);
		}
	});
}
