var valid1 = "The ";
var valid2 = " field contains invalid characters or values.";
var mandatory =" field is a mandatory field";

function isFieldValid(fieldStr,fieldName,fieldMinLength,fieldMaxLength,fieldType,customReg) {
	var result = "";
	
	var error = 0;

	if (isEmpty(fieldMaxLength))
	{
		if (fieldType =="text")
		{
			fieldMaxLength = 50;
		} else if (fieldType == "num")
		{
			fieldMaxLength = 12;
		} else if (fieldType == "email"){
			fieldMaxLength = 80;
		} else {
			fieldMaxLength = 500;
		}
	}


    
   if (fieldStr.length > 0) {
		//remove trailing space for $str value
		var replaceReg = /[ ]*$/;
		fieldStr = fieldStr.replace(replaceReg,"");		
		// Check whether string match the regular expression
		
		if (fieldType == "text")
		{
			var regPattern = /(^[a-zA-Z]([a-zA-Z\s.-]*[\']?[a-zA-Z\s\.-]*[a-zA-Z.])?$)/;

		} else if (fieldType == "num")
		{
			//var regPattern =/([\d\s]+)/;
			var regPattern = /(^[\d$-]([\d\s-,\.]*)$)/;
		} else if (fieldType =="email")	{
			var regPattern = /(\w{1}[\w-_\.]*)\@(\w{1})([\w-_\.]+\.\w+)/;

		} else if (fieldType == "alphaNum") {
		    var replaceReg = /(<.*?>(.*?)<\/.*?>|<.*?>)/g;
			fieldStr = fieldStr.replace(replaceReg,""); //strip out <script tags or html type tags

			replaceReg = /[\"]/g; //strip out double quotes and replace with single quotes
			fieldStr = fieldStr.replace(replaceReg,"'");
			replaceReg = /[\x80-\xff]/g; //strip out certain ascii characters
			fieldStr = fieldStr.replace(replaceReg,"");
			replaceReg = /[\"\<\>\|\`\&\=\{\}\~\^\*\+\|\[\]\;\\]/g;
			fieldStr = fieldStr.replace(replaceReg,"");

			var regPattern = /(^([\w\s-\.\!\@\:\/\?\$\#\_\'\,\(\)\%]*[\w\s.!?]*)$)/;
 		    valid2 =  " field contains invalid characters or values. Only the following characters are allowed a to z, A-Z, 0 to 9";
			
		} else if (fieldType =="numOnly") {
			
			var regPattern = /([^0-9])/;
		} else if (fieldType =="alphaOnly") {	
			
			var regPattern = /([^a-zA-Z])/;
		} else if (fieldType =="alphaNumOnly") {
			
				var regPattern = /([^a-zA-Z0-9])/;
				
		}else {
			
			if (isEmpty(customReg))
			{
				var regPattern = /(^[a-zA-Z]([a-zA-Z\s.-]*[\']?[a-zA-Z\s\.-]*[a-zA-Z.])?$)/;
			} else {
				
			var regPattern = new RegExp(customReg);
			 
			}
			
		} 
		
		if ((fieldType == "numOnly") || (fieldType == "alphaOnly") || (fieldType == "alphaNumOnly")){
			if (regPattern.test(fieldStr) == true) {
				
				result = result + valid1 + "<b>" + fieldName + "</b>" + valid2 + "<br><br>";
				
				error = 1;
			}


		} else {
		  
			if (regPattern.test(fieldStr) == false)
			{
				if (fieldType =="email")
				{
					result = "Please type in valid email address in <b>" + fieldName + " </b>field.<br><br>";
				} else if (fieldType == "optionsList")
				{
					result = "Please select one of the provided options in <b>" + fieldName + "</b> field.<br><br>";
				} else {
					result = result + valid1 + "<b>" + fieldName + "</b>" + valid2 + "<br><br>";
				}
				error = 1;
				
			}

		}
		if ((fieldStr.length > fieldMaxLength) || (fieldStr.length < fieldMinLength)){
			if (fieldMaxLength == fieldMinLength)
			{
			result = result + valid1 + "<b>" + fieldName + "</b>" + " must be in " + fieldMinLength + " characters in length." + "<br><br>";

			} else {
			result = result + valid1 + "<b>" + fieldName + "</b>"  + " must be between " + fieldMinLength + " and " + fieldMaxLength + " characters in length."+ "<br><br>";
			}
			error = 1;
		}

	
	
   } else {

	   //if the field is mandatory, display error message
	   if (fieldMinLength != 0) {

		   if (fieldType == "optionsList")
		   {
			   result = valid1 + "<b>" + fieldName + "</b>" + mandatory + ". Please select one of the provided options in <b>" + fieldName + "</b> field.<br><br>";
		   } else {
			   if (fieldMaxLength == fieldMinLength)
				{
				   result = valid1 + "<b>" + fieldName + "</b>" + mandatory +  " or must be in " + fieldMinLength + " characters in length." + "<br><br>";
				
				} else {
	  
		   		result = valid1 + "<b>" + fieldName + "</b>" + mandatory + " or must be between " + fieldMinLength + " and " + fieldMaxLength + " characters in length.<br><br>";
				}
		   }
			error = 1;
			
	   } 

   }
    
	return result;

 }


function ReplaceClick() {
  var regex = /[\&quot;\#\(\)\@\'\<\>\!\$\%\/\\\,\&\=]/;
  var re = new RegExp(regex, "g");
  document.fieldStr.value = 
    document.fieldStr.replace(re, 
      ".");
}



function getSelectedOptionValue(selectField) {
	var selectedValue = "";
	selectedValue = selectField.options[selectField.selectedIndex].value;
	return selectedValue;

}


function getRadioButtonValue (radio)

{   	var cValue = "";

		for (var i = 0; i < radio.length; i++)

    {   if (radio[i].checked) { cValue = radio[i].value; break }

    }

	return cValue

}



function getCheckBoxValue (box)

{   	var cBoxValue = "";

		for (var i = 0; i < box.length; i++)

    {   if (box[i].checked) { cBoxValue = box[i].value; break }

    }

	return cBoxValue

}

   

// Check whether string s is empty.

function isEmpty(s) {

	return ((s == null) || (s.length == 0))

}

// Returns true if string s is empty or whitespace characters only.

function isWhitespace (s) {

	var i;

	// Is s empty?

	if (isEmpty(s)) return true;

   // Search through string's characters one by one until we find a

	// non-whitespace character. When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++) {

		// Check that current character isn't whitespace.

		var c = s.charAt(i);

      if (whitespace.indexOf(c) == -1) return false;

	 }

    // All characters are whitespace.

    return true;

}
