//new auto-populate checkbox when field has input function
function doCheckInput(theForm) {
	//alert("inside check input function");
		
	with (document.frm2) {
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].type == 'text' && elements[i].value.length > 0){
				//alert("element name : " + elements[i].name);
				if(elements[i].name == 'contractNaicstxt') {
					elements[i - 2].checked = true;
				}else {
					elements[i - 1].checked = true;
				}
			}
			if (elements[i].type == "select-multiple") {
				for(var j = 0; j < elements[i].options.length; j++) {
					if (elements[i].options[j].selected)
						elements[i - 1].checked = true;
				}
			}
		}
		}

	return validateForm(theForm);
}


//#####################################################
function DeleteMyError(tblID,row_name,formField) {
	var result = true;
	var oRow, oCell;
	oRow = tblID.rows;

	for(var i=0;i<oRow.length;i++) {
		if (oRow[i].name == row_name) {
			tblID.deleteRow(parseInt(oRow[i].index));
			result = true;
			return result;
		}
		else {
			result = false;
		}
	}

	return result;
}

//#####################################################
function PrintMyError(tblID,row_num,msgID,custom_format)
{
	var result = true;
	var oRow, oCell;

	if (!row_num) {
		row_num = 0;
	}

	oRow = tblID.insertRow(row_num);
	oRow.name = "Error - ";	// + msgID;
	oRow.index = parseInt(row_num);
	oCell = oRow.insertCell(0);
	oCell.colSpan = "2";
	oCell.style.backgroundImage = 'url(/images/spacer.gif)';

	if (custom_format == "")
	{
		oCell.innerHTML = "<font class='error'>\t\t\t\tERROR! No <u>" + msgID + "</u> was entered.</font>";
	}
	else
	{
		oCell.innerHTML = "<font class='error'>\t\t\t\tERROR! Value entered for <u>" + msgID + "</u> was not entered in the proper format. Format as follows: <b>" + custom_format + "</b> .</font>";
	}

	tblID.focus();

	return result;
}

//#####################################################
function doClear(theText)
{
	theText.value = "";
}

//#####################################################
function validRequired(formField)
{
	var result = true;
	var deletion;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var type = new String(formField.type);
	//alert("formField name: " + fieldLabel + "value of type : " + type + "\n");
	var msg;

	if (type.search("text") != -1) {
		//alert("formField name: " + fieldLabel + " value : " + formField.value);
		if (formField.value == "")
		{
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
				if (formField.name == 'userNameReg')
				{
					msg = "User Name is a mandatory field.\n";
				}
				if (formField.name == 'userAnswer')
				{
					msg = "Secret Answer is a mandatory field.\n";
				}
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
				if (formField.name == 'userNameReg')
				{
					msg = "User Name is a mandatory field.\n";
				}
				if (formField.name == 'userAnswer')
				{
					msg = "Secret Answer is a mandatory field.\n";
				}
			}
			formField.focus();
			result = msg;
		}
	}
	else if (type.search("password") != -1) {
		//alert("this field is a password");
		if (formField.value == "")
		{
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,"");
				//msg = "ERROR! No " + fieldLabel + " was entered.\n";
				msg = "Password is a mandatory field.\n";
				if (formField.name == 'checkPass')
				{
					msg = "Re-Type Password is a mandatory field.\n";
				}
				if (formField.name == 'userPassReg')
				{
					msg = "Password is a mandatory field.\n";
				}
			}
			else {
				//msg = "ERROR! No " + fieldLabel + " was entered.\n";
				msg = "Password is a mandatory field.\n";
				if (formField.name == 'checkPass')
				{
					msg = "Re-Type Password is a mandatory field.\n";
				}
				if (formField.name == 'userPassReg')
				{
					msg = "Password is a mandatory field.\n";
				}
			}
			formField.focus();
			result = msg;
		}
	}
	else if (type.search("select") != -1) {
		if ((parseInt(formField.selectedIndex) == -1) || (parseInt(formField.selectedIndex) == 0)) {
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			formField.focus();
			result = msg;
		}
	}
	else if ((type.search("checkbox") != -1) || (type.search("radio") != -1)) {
		for(var i=0;i<formField.length;i++) {
			if (eval(formField[i].checked)) {
				result = true;
			}
			else {
				if (!isIE3Mac && (is.ie5up || is.nav6up)) {
					//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
					//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
					msg = "ERROR! No " + fieldLabel + " was entered.\n";
				}
				else {
					msg = "ERROR! No " + fieldLabel + " was entered.\n";
				}
				result = msg;
			}
		}
		if (!result) {
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			formField.focus();
			return msg;
		}
		else {
			return result;
		}
	}
	else {
		return result;
	}
	return result;
}

//#####################################################

function validRequiredCloseDate(formField)
{
	var result = true;
	var deletion;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var type = new String(formField.type);
	var msg;

	if (type.search("text") != -1) {
		if (formField.value == "")
		{
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
				msg = msg + "Any job submitted without a closure date will be removed immediately.\n";
				msg = msg + "If you'd like a job to remain for a longer period then please adjust \n";
				msg = msg + "your job closure date to one year from today.\n";
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			formField.focus();
			result = msg;
		}
	}

	if (!result) {
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		else {
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		formField.focus();
		return msg;
	}
	else {
		return result;
	}
	
	return result;
}

//#####################################################



//#####################################################

function validRequiredDate(formField)
{
	//for purchase postings
	var result = true;
	var deletion;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var type = new String(formField.type);
	var msg;

	if (type.search("text") != -1) {
		if (formField.value == "")
		{
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
				msg = msg + "Any purchase opportunity submitted without a required date will be removed immediately.\n";
				msg = msg + "If you'd like a purchase to remain for a longer period then please adjust \n";
				msg = msg + "your purchase required date to one year from today.\n";
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			formField.focus();
			result = msg;
		}
	}

	if (!result) {
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		else {
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		formField.focus();
		return msg;
	}
	else {
		return result;
	}
	
	return result;
}

//#####################################################



//#####################################################
//contract request date field 
function validContractRequestDate(formField)
{
	//for purchase postings
	var result = true;
	var deletion;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var type = new String(formField.type);
	var msg;

	if (type.search("text") != -1) {
		if (formField.value == "")
		{
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,"");
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
				msg = msg + "Any contract opportunity submitted without a request date will be removed immediately.\n";
				msg = msg + "If you'd like a contract to remain for a longer period then please adjust \n";
				msg = msg + "your contract request date to one year from today.\n";
			}
			else {
				msg = "ERROR! No " + fieldLabel + " was entered.\n";
			}
			formField.focus();
			result = msg;
		}
	}

	if (!result) {
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"");
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		else {
			msg = "ERROR! No " + fieldLabel + " was entered.\n";
		}
		formField.focus();
		return msg;
	}
	else {
		return result;
	}
	
	return result;
}

//#####################################################


function validPasswordCmp(formField_A,formField_B,required)
{
	var result = true;
	var fieldLabel = formField_B.id;
	var msg;

	if (required && !validRequired(formField_B)){
		result = false;
	}
	if (result)
	{
		if (formField_A.value != formField_B.value)
		{
			//alert("form fields for passwords do not match");
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				////PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),"");
				msg = "ERROR! The Passwords do not match, please retype.\n";
			}
			else {
				msg = "ERROR! The Passwords do not match, please retype.\n";
			}
			formField_B.focus();
			result = msg;
		}else {
	//alert("form fields for passwords match");
	}
	}
	//result = "the values did not match but passed anyways \n";
	return result;
}

// ######################################################
function validDomain(formField,required) {
	var regexp1 = /^[Ww][Ww][Ww]\./;
	var regexp2 = /^[a-zA-Z0-9]+$/;
	var regexp3 = /\-/;
	var maxLen = 128;
	var minLen = 5;
	var domainAry = new Array();
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	domainAry = formField.value.split(".");

	if (regexp1.test(formField.value)) {
		formField.value = formField.value.replace(regexp1,'');
	}

	if (formField.value.indexOf( "." ) == -1) {
		custom_error = "'yourdomain.com'";
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,custom_error);
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
		}
		else {
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
		}
		formField.focus();
		return msg;
	}

	if (!(parseInt(formField.value.length) >= minLen) && !(parseInt(formField.value) <= maxLen)) {
		custom_error = "'Must be 5-128 characters long'";
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,custom_error);
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
		}
		else {
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
		}
		formField.focus();
		return msg;
	}

	for (var i=0; i< domainAry.length;i++) {
		if (!regexp2.test(domainAry[i])) {
			if (!regexp3.test(domainAry[i])) {
				custom_error = "'Field may only contain letters, numbers and dashes'";
				if (!isIE3Mac && (is.ie5up || is.nav6up)) {
					//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
					//PrintMyError(document.getElementById("formTbl"),formField.index,fieldLabel,custom_error);
					//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
					msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
				}
				else {
					//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
					msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)";
				}
				formField.focus();
				return msg;
			}
		}
	}
	return result;
}

//#####################################################
function validDUNSNum(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var num = formField.value;
		if (isNaN(num))
		{
			custom_error = "'0123456789'";
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"0123456789");
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			else {
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			formField.focus();
			result = msg;
		}
	}
  
	return result;
}
//#####################################################
function validNum(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var num = parseInt(formField.value);

		
		if (isNaN(num))
		{
			custom_error = "'0123456789'";
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"0123456789");
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			else {
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			formField.focus();
			result = msg;
		}
	}
  
	return result;
}

function validNum2(formField)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	if (formField.value == "")
	{
		return result;
	}
	else {

		var num = parseInt(formField.value);
		if (isNaN(num))
		{
			custom_error = "'0123456789'";
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"0123456789");
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			else {
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat is numeric as follows: " + custom_error + ".\n";
			}
			formField.focus();
			result = msg;
		}
		return result;
	}
}

//#####################################################
function validPhoneNum(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var num = parseInt(formField.value);
		if (isNaN(num))
		{
			custom_error = "'(555) 5555555'";
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"(555) 5555555");
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			}
			else {
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			}
			formField.focus();
			result = msg;
		}
	}
  
	return result;
}

//#####################################################
function validDate(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var custom_error = "";
	var msg;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var elems = formField.value.split("/");
     
		result = (elems.length == 3); // should be three components
     
		if (result)
		{
			var month = parseInt(elems[0],10);
			var day = parseInt(elems[1]);
			var year = parseInt(elems[2],10);
			result = !isNaN(month) && (month > 0) && (month < 13) &&
			!isNaN(day) && (day > 0) && (day < 32) &&
			!isNaN(year) && (elems[2].length == 4);
		}

		if (!result)
		{
			custom_error = "'MM/DD/YYYY'";
			if (!isIE3Mac && (is.ie5up || is.nav6up)) {
				//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
				//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"MM/DD/YYYY");
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			}
			else {
				msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			}
			formField.focus();
			result = msg;
		}

	}
  
	return result;
}

//#####################################################
function validEmail(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var custom_error = "";
	var msg;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		custom_error = "'username@emailcompany.com'";
		if (!isIE3Mac && (is.ie5up || is.nav6up)) {
			//deletion = DeleteMyError(document.getElementById("formTbl"),error_row_name,formField);
			//PrintMyError(document.getElementById("formTbl"),parseInt(formField.index),fieldLabel,"username@emailcompany.com");
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)\n";
		}else {
			//msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
			msg = "E-mail Address is a mandatory field and must be entered in format of user@domainname.domain (for example joe@ait.com)\n";
		}
		formField.focus();
		result = msg;
	}

	return result;
}

//#####################################################
function validKeywords(formField,required)
{
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var keywords = new String(formField.value);
	var custom_error = "'word, word2, word3, ... , word100'";
	var reg_alpha = /\w+/g;
	var reg_nonalpha = /\W+/g;
	var reg_key_word = /\b(,)\s\w+/g;
	var reg_key = /\b(,)\s/g;
	var reg_spaces = /\w+\s/g;
	var reg_word = /\b/g;
	var reg_nonword = /\B/g;
	var msg = "ERROR! Value entered for '" + fieldLabel + "' was not entered in the proper format.\nFormat as follows: " + custom_error + ".\n";
	var msg2 = "Click OK to Confirm that you do not want to enter any keywords at this time.";
	var type = new String(formField.type);

	if (type.search("hidden") != -1) {
		return result;
	}

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		if (keywords.search(reg_key_word) != -1) {
			keywords = keywords.split(reg_key);
			for(var j=0;j<keywords.length;j++) {
				if (keywords[j].search(reg_alpha) != -1) {
					keywords_spaces = keywords[j].split(reg_spaces);
					for(var k=0;k<keywords_spaces.length;k++) {
						if (keywords_spaces[k].search(reg_nonalpha) != -1) {
							formField.focus();
							result = msg;
							break;
						}
						else {
							result = true;
						}
					}
				}
				else if (keywords[j].search(reg_nonalpha) != -1) {
					formField.focus();
					result = msg;
					break;
				}
				else {
					formField.focus();
					result = msg;
					break;
				}
			}
		}
		else if (keywords.search(reg_nonalpha) != -1) {
			formField.focus();
			result = msg;
		}
		else if (keywords == "") {
			result = confirm(msg2);
			if (!result) {
				formField.focus();
				result = msg;
			}
			else {
				result = true;
			}
		}
	}
	else {
		result = confirm(msg2);
		if (!result) {
			formField.focus();
			result = msg;
		}
		else {
			result = true;
		}
	}

	return result;
}

//###########################
function validUserName(formField)
{
	var result = true;
	var fieldLabel = formField.name;
	var msg = "ERROR! Value entered for '" + fieldLabel + "' contained invalid characters.\nThe following are valid: (A-Z,0-9,`,~,-,_) \n";
	userinput = formField.value;
	//var array = new Array("\\",",","'","~","`","!","@","#","$","%","^","&","*","(",")","_","+","=","{","}","|","]","[",";",":","<",">","?");
	var array = new Array("\\",",","'","!","@","#","$","%","^","&","*","(",")","+","=","{","}","|","]","[",";",":","<",">","?");
	for(var i=0; i < array.length; i++)
	{
		if(userinput.indexOf(array[i]) != -1)
		{
			formField.focus();
			return msg;
		}
	}
	return result;
}
//#################################

//######################################################
function validNAICS(formField)
{
	var result = true;
	var fieldLabel = formField.name;
	var msg = "ERROR! Value entered for '" + fieldLabel + "' contained invalid characters.\nYou must enter valid 6-digit NAICS codes separated by commas.";
	var naics = formField.value;
	var naicsArray;

	if (naics.length > 0)
	{
		naicsArray = naics.replace(/\n/g,",");
		naicsArray = naics.replace(/\r/g,",");
		naicsArray = naics.split(",");
		for (i=0; i < naicsArray.length; i++)
		{
			var tmp = naicsArray[i];
			tmp = tmp.replace(/^\s+/g,"");
			tmp = tmp.replace(/\s+$/g,"");
			if (tmp.length != 6) {
				formField.focus();
				return msg;
			}
			for (j=0; j < tmp.length; j++)
			{
				var nums = "0123456789";
				if (nums.indexOf( tmp.charAt(j) ) == -1)
				{
					formField.focus();
					return msg;
				}
			}
		}
	}
	return result;
}

//#####################################################
function isEmailAddr(email)
{
	var result = false;
	var theStr = new String(email);
	var index = theStr.indexOf("@");

	if (index > 0)
	{
		var pindex = theStr.indexOf(".",index);
		if ((pindex > index+1) && (theStr.length > pindex+1))
			result = true;
	}

	return result;
}

// ######################################################
function confirmed(formField) {
	var result = true;
	var fieldLabel = formField.name;
	var error_row_name = "Error - ";	// + fieldLabel;
	var type = new String(formField.type);

	if (type.search("text") != -1) {
		if (formField.value == "")
		{
			result = confirm('Is there anything that you would like to enter for the "' + fieldLabel +'" field?\nYes = OK and No = CANCEL');
			formField.focus();
			return !result;
		}
	}
	else if (type.search("select-one") != -1) {
		if ((parseInt(formField.selectedIndex) == -1) || (parseInt(formField.selectedIndex) == 0)) {
			result = confirm('Is there anything that you would like to enter for the "' + fieldLabel +'" field?\nYes = OK and No = CANCEL');
			formField.focus();
			return !result;
		}
	}
	else if ((type.search("checkbox") != -1) || (type.search("radio") != -1)) {
		for(var i=0;i<formField.length;i++) {
			if (eval(formField[i].checked)) {
				result = true;
			}
			else {
				result = false;
			}
		}
		if (!result) {
			result = confirm('Is there anything that you would like to enter for the "' + fieldLabel +'" field?\nYes = OK and No = CANCEL');
			formField.focus();
			return !result;
		}
		else {
			return result;
		}
	}
	else {
		return result;
	}
	return result;
}



// ######################################################
function PrintAlertAll(msg) {
	var message = "";
	for(var i=0;i<msg.length;i++) {
		if (msg[i]) {
			message += msg[i];
		}
	}
	alert("The following field(s) were incomplete or incorrect:\n\n" + message + "\n\nPlease complete or correct the form and submit again.");
	return true;
}

//#####################################################
function validateForm(theForm)
{

	//diable button after submission
	if (theForm.subbtn) {
		theForm.subbtn.disabled = true;
	}
	/*
  var fieldType = new Array();
  fieldType[0] = "text";
  fieldType[1] = "textarea";
  fieldType[2] = "select-one";
  fieldType[3] = "checkbox";
  fieldType[4] = "radio";
  fieldType[5] = "hidden";
  fieldType[6] = "reset";
  fieldType[7] = "submit";


else {
  no_update = true;
}

*/

	var error_on = "";
	var temp = "";
	var update = true;
	var error_row_name = "Error - ";	// + fieldLabel;
	var removed_msg = "";
	var msg = new Array();
	var i = 0;
	var maxchars = 0;

	// Customize these calls for your form

	// Start ------->

	//check business description length and keywords length and make sure they are within limit

	if (theForm.businessDescription) {
		maxchars = 600;
		if (theForm.businessDescription.value.length > maxchars)
		{
			msg[i] = 'please limit your business description to 600 characters\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.businessKeywords) {
		maxchars = 600;
		if (theForm.businessKeywords.value.length > maxchars)
		{
			msg[i] = 'please limit your business keywords to 600 characters\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm["businesscountychk"] && theForm["businesscountychk"].checked == true) {
		if (theForm["businessCounty[]"]) {
			if ((parseInt(theForm["businessCounty[]"].selectedIndex) == -1) || (parseInt(theForm["businessCounty[]"].selectedIndex) == 0)) {
				msg[i] = "ERROR! No county was selected.\n";
				update = false;
			}
			else {
				removed_msg = msg.splice(i,i);
			}
		}
		i++;
	}

	if (theForm["businessCounty"]) {
		msg[i] = validRequired(theForm["businessCounty"]);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;


	//***************************************

	if (theForm.businessNaics) {
		theForm.businessNaics.value = theForm.businessNaics.value.replace(/\r/g,",").replace(/\n/g,",").replace(/:/g,",").replace(/;/g,",").replace(/,+/g,",");
		msg[i] = validNAICS(theForm.businessNaics);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.businessDunsNumber && (theForm.businessDunsNumber.value.length > 0)) {
	theForm.businessDunsNumber.value=theForm.businessDunsNumber.value.split(' ').join('');
	msg[i] = validDUNSNum(theForm.businessDunsNumber, false);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//field for posting purchases//////////
	if (theForm.purchaseRequiredDate) {
		msg[i] = validRequiredDate(theForm.purchaseRequiredDate);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//***************************************

	//field for posting purchases//////////
	if (theForm.purchaseRequiredDate) {
		msg[i] = validRequiredDate(theForm.purchaseRequiredDate);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	//***********************************//

	//field for posting contracts//////////
	if (theForm.contractRequestDate) {
		msg[i] = validContractRequestDate(theForm.contractRequestDate);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//***********************************//

	if (theForm.business_type) {
		msg[i] = validRequired(theForm.business_type);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.jobPositions) {
		msg[i] = validNum(theForm.jobPositions,true);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
    
	if (theForm.userEmail) {
		msg[i] = validEmail(theForm.userEmail,(validRequired(theForm.userEmail)));
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm["individualcountychk"] && theForm["individualcountychk"].checked == true) {
		msg[i] = validRequired(theForm["individualCounty[]"]);
		if (theForm["individualCounty[]"]) {
			if (msg[i] != true)
			{
				update = false;
			}
			else {
				removed_msg = msg.splice(i,i);
			}
		}
		i++;
	}

	if (theForm.individualCounty) {
		msg[i] = validRequired(theForm.individualCounty);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;


	//Login fields******************************

	if (theForm.userName) {
		msg[i] = validRequired(theForm.userName);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.userPass) {

		msg[i] = validRequired(theForm.userPass);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//*******************************************


	//Registration fields for username and password


	if (theForm.userNameReg) {
		msg[i] = validRequired(theForm.userNameReg);
		//  msg[i] = validUserName(theForm.userNameReg);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
			msg[i] = validUserName(theForm.userNameReg);

			if (msg[i] != true)
			{
				update = false;
			}
			else {
				removed_msg = msg.splice(i,i);
			}
		//removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.userPassReg) {

		msg[i] = validPasswordCmp(theForm.userPassReg,theForm.checkPass,(validRequired(theForm.userPassReg)));
		//msg[i] = validRequired(theForm.userPass);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	//msg[i] = msg[i] + "| im inside userpass check function \n";
	}
	i++;

	if (theForm.checkPass) {
		//msg[i] = validPasswordCmp(theForm.userPass,theForm.checkPass,(validRequired(theForm.checkPass)));
		msg[i] = validRequired(theForm.checkPass);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	//msg[i] = msg[i] + "| im inside checkpass check function \n";
	}
	i++;
	//************************************************

	if (theForm.userAnswer) {
		msg[i] = validRequired(theForm.userAnswer);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.agree) {
		msg[i] = validRequired(theForm.agree);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.jobCloseDate) {
		msg[i] = validRequiredCloseDate(theForm.jobCloseDate);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.business_type) {
		msg[i] = validRequired(theForm.business_type);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//The following fields are for the feedback form
	//*********************************************
	if (theForm.feedEmail) {
		msg[i] = validEmail(theForm.feedEmail,(validRequired(theForm.feedEmail)));
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.feedPhone) {
		msg[i] = validPhoneNum(theForm.feedPhone,(validRequired(theForm.feedPhone)));
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	if (theForm.feedMessage) {
		msg[i] = validRequired(theForm.feedMessage);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	//Fields for advanced searching on opportunity Id

	if (theForm.contractopportunityId) {
		msg[i] = validNum2(theForm.contractopportunityId);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	//*********************************************

	//Fields for advanced searching on opportunity Id

	if (theForm.jobopportunityId) {
		msg[i] = validNum2(theForm.jobopportunityId);
		if (msg[i] != true)
		{
			update = false;
		}
		else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	//*********************************************
	//*********************************************
	//*********************************************

	if (!update) {
		PrintAlertAll(msg);
		return false;
	}

	// <--------- End

	return true;
}

//credit card


var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

/*************************************************************************\
CheckCardNumber(form)
function called when users click the "check" button.
\*************************************************************************/


































function validateAds(theForm)
{

	//diable button after submission
	if (theForm.subbtn) {
		theForm.subbtn.disabled = true;
	}
	


	var error_on = "";
	var temp = "";
	var update = true;
	var error_row_name = "Error - ";	// + fieldLabel;
	var removed_msg = "";
	var msg = new Array();
	var i = 0;
	var maxchars = 0;



	if (theForm.StartDate) {
		maxchars = 600;
		if (theForm.StartDate.value == "")
		{
			msg[i] = 'Start Date Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm.EndDate) {
		maxchars = 600;
		if (theForm.EndDate.value == "")
		{
			msg[i] = 'End Date Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm.ads_title) {
		maxchars = 600;
		if (theForm.ads_description.value == "")
		{
			msg[i] = 'Title Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm.ads_description) {
		maxchars = 600;
		if (theForm.ads_description.value == "")
		{
			msg[i] = 'Description Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm.ads_URL) {
		maxchars = 600;
		if (theForm.ads_description.value == "")
		{
			msg[i] = 'URL Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;
	
	if (theForm.adskeywords) {
		maxchars = 600;
		if (theForm.ads_description.value == "")
		{
			msg[i] = 'Keywords Field Can not be Empty\n';
			update = false;
		}else {
			removed_msg = msg.splice(i,i);
		}
	}
	i++;

	account_type="none"
	if(theForm.adstype.value=="signup")
	{	
    if(theForm.account_type[0].checked==true)
    {		
    account_type=theForm.account_type[0].value;
    } else
    {
    account_type=theForm.account_type[1].value;	
    }
	}
	

    	
	if (account_type=="purchase" || theForm.adstype.value=="updatepayment" )
	{
			
	if (theForm.x_card_amount) {
		maxchars = 600;
			msg[i] = validNum(theForm.x_card_amount, true);
		if (msg[i] != true)
		{
			update = false;
		}
		else 
		{
			removed_msg = msg.splice(i,i);
		}
	
	}
	
	
	i++;
		
if (theForm.exp_month) {
	
	
		
		var tmpyear;
		var tmpmonth;
		var expiry;
		tmpyear=theForm.exp_year.value;
		tmpmonth=theForm.exp_month.value;
		if (theForm.exp_year.value.length == 0 || theForm.exp_year.value=="none" ||theForm.exp_month.value.length == 0 || theForm.exp_month.value=="none") {
			msg[i] = 'Please Enter Valid Expiration Date\n';
			update = false;
			
		}else {
			expiry=1;
			removed_msg = msg.splice(i,i);
			
		}
		
	}	
  i++;
	
	
	if (theForm.x_card_num) {
		
		var tmpyear;
		if (theForm.x_card_num.value.length == 0) {
			msg[i] = 'Please Enter Card Number\n';
			update = false;
		}else {
			
			card = theForm.card_type.value;
			cardnum=theForm.x_card_num.value;
			var newStr = cardnum.substring(0, 12);
			
			
			if(expiry==1)
			{
				
			if(theForm.subbtn.value=="Update and Process Payment" && newStr=="XXXXXXXXXXXX")
			{	
			 retval=true;		
			} else
			{
			var retval = eval(card + ".checkCardNumber(\"" + theForm.x_card_num.value +
			"\", " + tmpyear + ", " + tmpmonth + ");");
			cardname = "";
			}
			} else
				{
				
				retval=false;
				}
				
			if (retval)
		    {
			removed_msg = msg.splice(i,i);
		    } else
		   {
		    	
		    	msg[i] = 'Please Enter valid Card Number\n';
				update = false;
		    	
		    	}
		    }
		
	}	
i++;		

	}
	

if (theForm.x_first_name) {
	maxchars = 600;
	if (theForm.x_first_name.value == "")
	{
		msg[i] = 'First Name Field Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;



if (theForm.x_last_name) {
	maxchars = 600;
	if (theForm.x_last_name.value == "")
	{
		msg[i] = 'Last Name Field Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;

if (theForm.x_city) {
	maxchars = 600;
	if (theForm.x_city.value == "")
	{
		msg[i] = 'City Field Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;

if (theForm.x_address) {
	maxchars = 600;
	if (theForm.x_address.value == "")
	{
		msg[i] = 'Address Field Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;

if (theForm.x_state) {
	maxchars = 600;
	if (theForm.x_state.value == "")
	{
		msg[i] = 'State Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;


if (theForm.x_zip) {
	maxchars = 600;
	if (theForm.x_zip.value == "")
	{
		msg[i] = 'zip Can not be Empty\n';
		update = false;
	}else {
		removed_msg = msg.splice(i,i);
	}
}
i++;
	
		



	
	if (!update) {

		PrintAlertAll(msg);
		theForm.subbtn.disabled = false;
		return false;
	}



	return true;
	
}








	/*************************************************************************\
	Object CardType([String cardtype, String rules, String len, int year, 
	                                        int month])
	cardtype    : type of card, eg: MasterCard, Visa, etc.
	rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
	len         : valid length of cardnumber, eg: "16,19", "13,16".
	year        : year of expiry date.
	month       : month of expiry date.
	eg:
	var VisaCard = new CardType("Visa", "4", "16");
	var AmExCard = new CardType("AmEx", "34,37", "15");
	\*************************************************************************/
	function CardType() {
	var n;
	var argv = CardType.arguments;
	var argc = CardType.arguments.length;

	this.objname = "object CardType";

	var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
	var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
	var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

	this.setCardNumber = setCardNumber;  // set CardNumber method.
	this.setCardType = setCardType;  // setCardType method.
	this.setLen = setLen;  // setLen method.
	this.setRules = setRules;  // setRules method.
	this.setExpiryDate = setExpiryDate;  // setExpiryDate method.

	this.setCardType(tmpcardtype);
	this.setLen(tmplen);
	this.setRules(tmprules);
	if (argc > 4)
	this.setExpiryDate(argv[3], argv[4]);

	this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
	this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
	this.getCardType = getCardType;  // getCardType method.
	this.isCardNumber = isCardNumber;  // isCardNumber method.
	this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
	this.luhnCheck = luhnCheck;// luhnCheck method.
	return this;
	}

	/*************************************************************************\
	boolean checkCardNumber([String cardnumber, int year, int month])
	return true if cardnumber pass the luhncheck and the expiry date is
	valid, else return false.
	\*************************************************************************/
	function checkCardNumber() {
	var argv = checkCardNumber.arguments;
	var argc = checkCardNumber.arguments.length;
	var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
	var year = (argc > 1) ? argv[1] : this.year;
	var month = (argc > 2) ? argv[2] : this.month;

	this.setCardNumber(cardnumber);
	

	if (!this.isCardNumber())
	return false;
	

	return true;
	}
	/*************************************************************************\
	String getCardType()
	return the cardtype.
	\*************************************************************************/
	function getCardType() {
	return this.cardtype;
	}
	/*************************************************************************\
	String getExpiryDate()
	return the expiry date.
	\*************************************************************************/
	function getExpiryDate() {
	return this.month + "/" + this.year;
	}
	/*************************************************************************\
	boolean isCardNumber([String cardnumber])
	return true if cardnumber pass the luhncheck and the rules, else return
	false.
	\*************************************************************************/
	function isCardNumber() {
	var argv = isCardNumber.arguments;
	var argc = isCardNumber.arguments.length;
	var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
	if (!this.luhnCheck())
	return false;

	for (var n = 0; n < this.len.size; n++)
	if (cardnumber.toString().length == this.len[n]) {
	for (var m = 0; m < this.rules.size; m++) {
	var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
	if (headdigit == this.rules[m])
	return true;
	}
	return false;
	}
	return false;
	}

	/*************************************************************************\
	boolean isExpiryDate([int year, int month])
	return true if the date is a valid expiry date,
	else return false.
	\*************************************************************************/
	function isExpiryDate() {
	var argv = isExpiryDate.arguments;
	var argc = isExpiryDate.arguments.length;

	year = argc > 0 ? argv[0] : this.year;
	month = argc > 1 ? argv[1] : this.month;

	if (!isNum(year+""))
	return false;
	if (!isNum(month+""))
	return false;
	today = new Date();
	expiry = new Date(year, month);
	if (today.getTime() > expiry.getTime())
	return false;
	else
	return true;
	}

	/*************************************************************************\
	boolean isNum(String argvalue)
	return true if argvalue contains only numeric characters,
	else return false.
	\*************************************************************************/
	function isNum(argvalue) {
	argvalue = argvalue.toString();

	if (argvalue.length == 0)
	return false;

	for (var n = 0; n < argvalue.length; n++)
	if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
	return false;

	return true;
	}

	/*************************************************************************\
	boolean luhnCheck([String CardNumber])
	return true if CardNumber pass the luhn check else return false.
	Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
	\*************************************************************************/
	function luhnCheck() {
	var argv = luhnCheck.arguments;
	var argc = luhnCheck.arguments.length;

	var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

	if (! isNum(CardNumber)) {
	return false;
	  }

	var no_digit = CardNumber.length;
	var oddoeven = no_digit & 1;
	var sum = 0;

	for (var count = 0; count < no_digit; count++) {
	var digit = parseInt(CardNumber.charAt(count));
	if (!((count & 1) ^ oddoeven)) {
	digit *= 2;
	if (digit > 9)
	digit -= 9;
	}
	sum += digit;
	}
	if (sum % 10 == 0)
	return true;
	else
	return false;
	}

	/*************************************************************************\
	ArrayObject makeArray(int size)
	return the array object in the size specified.
	\*************************************************************************/
	function makeArray(size) {
	this.size = size;
	return this;
	}

	/*************************************************************************\
	CardType setCardNumber(cardnumber)
	return the CardType object.
	\*************************************************************************/
	function setCardNumber(cardnumber) {
	this.cardnumber = cardnumber;
	return this;
	}

	/*************************************************************************\
	CardType setCardType(cardtype)
	return the CardType object.
	\*************************************************************************/
	function setCardType(cardtype) {
	this.cardtype = cardtype;
	return this;
	}

	/*************************************************************************\
	CardType setExpiryDate(year, month)
	return the CardType object.
	\*************************************************************************/
	function setExpiryDate(year, month) {
	this.year = year;
	this.month = month;
	return this;
	}

	/*************************************************************************\
	CardType setLen(len)
	return the CardType object.
	\*************************************************************************/
	function setLen(len) {
	// Create the len array.
	if (len.length == 0 || len == null)
	len = "13,14,15,16,19";

	var tmplen = len;
	n = 1;
	while (tmplen.indexOf(",") != -1) {
	tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
	n++;
	}
	this.len = new makeArray(n);
	n = 0;
	while (len.indexOf(",") != -1) {
	var tmpstr = len.substring(0, len.indexOf(","));
	this.len[n] = tmpstr;
	len = len.substring(len.indexOf(",") + 1, len.length);
	n++;
	}
	this.len[n] = len;
	return this;
	}

	/*************************************************************************\
	CardType setRules()
	return the CardType object.
	\*************************************************************************/
	function setRules(rules) {
	// Create the rules array.
	if (rules.length == 0 || rules == null)
	rules = "0,1,2,3,4,5,6,7,8,9";
	  
	var tmprules = rules;
	n = 1;
	while (tmprules.indexOf(",") != -1) {
	tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
	n++;
	}
	this.rules = new makeArray(n);
	n = 0;
	while (rules.indexOf(",") != -1) {
	var tmpstr = rules.substring(0, rules.indexOf(","));
	this.rules[n] = tmpstr;
	rules = rules.substring(rules.indexOf(",") + 1, rules.length);
	n++;
	}
	this.rules[n] = rules;
	return this;
	}



































