function submitOnEnter(form) {
	if (typeof document.layers != 'undefined' && document.layers != null) {
		document.captureEvents(Event.KEYDOWN);
	}
	document.onkeydown =
	function (theEvent) {
		var keyCode=theEvent ? (theEvent.which ? theEvent.which : theEvent.keyCode) : event.keyCode;
		if (keyCode == 13) {
			validateForm(form);
		}
	}
}

function test(form){

alert(form);
return false;
}

function isEmpty(value) {
	var empty=true;
	if (value != null && value != "") {
		if (value.charAt(0) == ' ') {
			var length=value.length;
			for (var i=0; empty && i < length; i ++) {
				empty=value.charAt(i) == ' ';
			}
		}
		else {
			empty=false;
		}
	}

	return empty;
}

function validateField(field, required, validationType, validationField, validationImage, imagePath, requiredToolTip, invalidToolTip) {
	var inputValidImage=imagePath + "valid.gif"
	var inputInvalidImage=imagePath + "invalid.gif"
	var inputRequiredImage=imagePath + "required.gif"
	if (isEmpty(field.value)) {
		if (required) {
			if (validationImage.src != inputRequiredImage) {
				validationImage.src=inputRequiredImage;
				validationImage.alt=requiredToolTip;
			}
		} else {
			if (validationImage.src != inputValidImage) {
				validationImage.src=inputValidImage;
				validationImage.alt='';
			}
		}
	} else {
		var valid=true;
		if (validationType != null) {
			validationType=validationType.toLowerCase();
			if (validationType == "alphanumeric") {
				valid=isValidAlphaNumericValue(field);
			}
			else if (validationType == "date") {
				valid=isValidDateValue(field);
			}
			else if (validationType == "time") {
				valid=isValidTimeValue(field);
			}
			else if (validationType == "datetime") {
				valid=isValidDateTimeValue(field);
			}
			else if (validationType == "number") {
				valid=isValidNumberValue(field);
			}
			else if (validationType == "email") {
				valid=isValidEMailValue(field);
			}
			else if (validationType == "passwordmatch") {
				valid=isValidMatch(field, validationField);
			}
			else if (validationType == "creditcardnumber") {
				valid=isValidCreditCardNumber(field, validationField);
			}
			else if (validationType == "username") {
				valid=isValidUserName(field, validationField);
			}
		}

		if (valid) {
			if (validationImage.src != inputValidImage) {
				validationImage.src=inputValidImage;
				validationImage.alt='';
			}
		}
		else {
			if (validationImage.src != inputInvalidImage) {
				validationImage.src=inputInvalidImage;
				validationImage.alt=invalidToolTip;
			}
		}
	}
}

function checkForm(form) {
	var inputValidImageName="inputValid.gif";
	var inputInvalidImageName="inputInvalid.gif";
	var inputRequiredImageName="inputRequired.gif";

	if (form != null) {
 		var elementCount=form.elements.length;
   	for (var i=0; i < elementCount; i++) {
			if (form.elements[i].disabled == false) {
     		if (form.elements[i].type == "text" || form.elements[i].type == "textarea" || form.elements[i].type == "password" || form.elements[i].type == "file") {
	     		// MS: This used to call .focus(), but that would cause the
	     		// form to jump all over the place.  Instead this calls the
	     		// onfocus event handler directly.
	     		if (typeof form.elements[i].onfocus != 'undefined' && form.elements[i].onfocus != null) {
	       		form.elements[i].onfocus(null);
	       	}
   	   	}
			}
 		}
	}
}

function validateAndSubmitForm(form) {
  var checkNull = true;
  try {
	  checkNull = checkNullValue(form);
  } catch(exception) {
  }

  if (checkNull == true){
	  var valid = validateForm(form);
	  if (valid) {
		 form.submit();
	  }
  }
}

function validateForm(form) {
	var inputValidImageName="valid.gif";
	var inputInvalidImageName="invalid.gif";
	var inputRequiredImageName="required.gif";
	var valid=true;

 	checkForm(form);

 	var elementCount=form.elements.length;
  for (var i=0; i < elementCount; i++) {
  	if (form.elements[i].type == "text" || form.elements[i].type == "textarea" || form.elements[i].type == "password" || form.elements[i].type == "file" || form.elements[i].type == "select-one") {
	  	var imageName=form.elements[i].name + "Image";
  		if (typeof document.images[imageName] != 'undefined') {
	      var image=document.images[imageName];
		    if (image != null) {
		      var imageSrc=image.src;
    	    if (imageSrc.indexOf(inputInvalidImageName) >= 0) {
						alert (image.alt);
						form.elements[i].select();
						valid=false;
						break;
					} else if (imageSrc.indexOf(inputRequiredImageName) >= 0 && isEmpty(form.elements[i].value)) {
						alert(image.alt);
						form.elements[i].select();
						valid=false;
						break;
					}
				}
			}
		}
	}

	if (valid == true){
		return true;
	} else {
		return false;
	}
}

function isValidAlphaNumericValue(field) {
	var fieldValue=field.value;
	if (fieldValue.match(/[a-zA-Z0-9]/)) {
		return true;
	} else {
		return false;
	}
}

function isValidDateValue(field) {
	var fieldValue=field.value;
	if (fieldValue.match(/^(([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))(\/|.|-)(([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))(\/|.|-)((\d{2})|(\d{4}))$/)) {
		return true;
	} else {
		return false;
	}
}

function isValidTimeValue(field) {
	var fieldValue=field.value;
	if (fieldValue.match(/^([0-1]?[0-9]|[2][0-3]):|.([0-5][0-9]).*$/)) {
		return true;
	} else {
		return false;
	}
}

function isValidDateTimeValue(field) {
    var fieldValue=field.value;
    if (fieldValue.match(/^(([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))(\/|.|-)(([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))(\/|.|-)((\d{2})|(\d{4})) ([0-1]?[0-9]|[2][0-3]):|.([0-5][0-9]).*$/)) {
    	return true;
    } else {
    	return false;
    }
}

function isValidNumberValue(field) {
	var fieldValue=field.value;
	if (fieldValue.match(/^(\d{1,3}((,|\.|\ |\xA0)?\d{3})*|(\d+))((,|\.|\ |\xA0)?\d*)?$/)) {
		return true;
	} else {
		return false;
	}
}

function isValidEMailValue(field) {
	var fieldValue=field.value;
	if (fieldValue.match(/^([a-zA-Z0-9_\-\.']+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)) {
		return true;
	} else {
		return false;
	}
}

function isValidUserName(field){
	var fieldValue=field.value;
	if ((fieldValue.indexOf("\\") != -1) || (fieldValue.indexOf("/") != -1)) {
		return false;
	} else {
		return true;
	}
}

function isValidMatch(field1, field2) {
	if (field1.value == field2.value) {
		return true;
	} else {
		return false;
	}
}

function isValidCreditCardNumber(creditCardNumberField, creditCardTypeField) {
	var fieldValue=creditCardNumberField.value;
	var cctype='notValid';

	fieldValue=stripChars(fieldValue);

	if (fieldValue.substring(0,4) == '1800') {
		if (fieldValue.length == 15) {
			cctype='JCB';
		}
	}
	else if (fieldValue.substring(0,4) == '2131') {
		if (fieldValue.length == 15) {
			cctype='JCB';
		}
	}
	else if (fieldValue.substring (0,1) == '3') {
		if (fieldValue.length == 16) {
			cctype='JCB';
		}
		else if ( (fieldValue.substring (0, 2) == '34') || (fieldValue.substring (0,2) == '37') ) {
			if (fieldValue.length == 15) {
 				cctype='Amex';
 			}
		}
		else if ( ((parseInt(fieldValue.substring(0,3)) >= 300) && (parseInt(fieldValue.substring(0,3)) <= 305)) || (fieldValue.substring (0,2) == '36') || (fieldValue.substring (0,2) == '38') ) {
			if (fieldValue.length == 14) {
				cctype='DinersClub';
			}
		}
	}
	else if (fieldValue.substring (0,1) == 4) {
		if (fieldValue.length == '16' || fieldValue.length == '13') {
 			cctype='Visa';
 		}
	}
	else if ( (parseInt(fieldValue.substring (0,2)) >= 51) && (parseInt(fieldValue.substring (0,2)) <= 55) ) {
		if (fieldValue.length == 16) {
			cctype='MasterCard';
		}
	}
	else if (fieldValue.substring (0,4) == '6011') {
		if (fieldValue.length == 16) {
			cctype='Discover';
		}
	}

	if (cctype == 'notValid' || (! isEmpty(creditCardTypeField.value) && creditCardTypeField.value != cctype)) {
		return false;
	}
	else {
		//creditCardTypeField.value=cctype;
		return true;
	}
}

function stripChars( ccfield ) {
	var newcc=ccfield.replace(/[^0-9]+/g, "");
	return newcc;
}

function textLimit(field, length) {
	// When text is submitted, new lines \n are converted to \n\r so we need to subtract the number of new lines
	// to determine the maximum length before the conversion. This is to address issue http://support.rwd.com/browse/LMS-3423.
	newLines = 0;
	try {
		newLines = ((field.value.match(/[^\n]*\n[^\n]*/gi).length));
	} catch(exception) {
		newLines=0;
	}
	if (field != null && field.value != null && field.value.length > length) {
		field.value=field.value.substring(0, length - newLines);
	}
}
