
// some general purpose validation functions

function returnSelection(radioButton) 
	{ 
	var selection=null; 	
	for(var i=0; i < radioButton.length; i++) 
		{ 
		if(radioButton[i].checked) 
			{ 
			thechosenone=radioButton[i].value; 
			return thechosenone; 
			} 
		} 
	return selection; 
	} 



function returnSelectedListItem(ListBox1) 
	{ 
	var selection=null; 	
	for(var i=0; i < ListBox1.length; i++) 
		{ 
		if(ListBox1[i].selected) 
			{ 
			thechosenone=ListBox1[i].value; 
			return thechosenone; 
			} 
		} 
	return selection; 
	} 





function trim(strText) { 
    // this will get rid of leading spaces 
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

//   alert('A' + strText + 'B');

   return strText;
}   



function Trim2(inString) {
  var retVal = "";
  var start = 0;
  while ((start < inString.length) && (inString.charAt(start) == ' ')) {
    ++start;
  }
  var end = inString.length;
  while ((end > 0) && (inString.charAt(end - 1) == ' ')) {
    --end;
  }
  retVal = inString.substring(start, end);
  return retVal;
}



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 validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (trim(formField.value) == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}


function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && (((formField.value.length < 3) || !isEmailAddr(formField.value))) && (formField.value.length > 0))
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

        
function validStringNoQuotesNumAllowed(formField,fieldLabel,required,minlen,maxlen)
{
	var result = true;
	var result2 = true;
	if (minlen < 0) minlen = 0;
	if (maxlen < 0) maxlen = 0;
	if (maxlen < minlen) maxlen = minlen;

	if (required && !validRequired(formField,fieldLabel))
		{
		result = false;
		}

 	if (result)
 	{
       var theStr = new String(formField.value);
       var index = theStr.indexOf('\"');
       if (index > -1)
 		{
 			alert('Please enter no double quotes in the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
 	if (result)
 	{
       var index = theStr.indexOf("'");
       if (index > -1)
 		{
 			alert('Please enter no single quotes in the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
 	if (result)
 	{
 		theStr = trim(theStr);
 		var theStrLen = theStr.length;
       if (theStrLen < minlen && theStrLen > 0)
 		{
 			alert('Minimum length is ' + trim(minlen.toString()) + ' characters for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
 	if (result)
 	{
       if (theStr.length > maxlen)
 		{
 			alert('Maximum length is ' + trim(maxlen.toString()) + ' characters for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	
	return result;
}




function validStringQuotesNumAllowed(formField,fieldLabel,required,minlen,maxlen)
{
	var result = true;
	var result2 = true;
	if (minlen < 0) minlen = 0;
	if (maxlen < 0) maxlen = 0;
	if (maxlen < minlen) maxlen = minlen;

	if (required && !validRequired(formField,fieldLabel))
		{
		result = false;
		}

	
 	if (result)
 	{
       var theStr = new String(formField.value);
 		theStr = trim(theStr);
 		var theStrLen = theStr.length;
       if (theStrLen < minlen && theStrLen > 0)
 		{
 			alert('Minimum length is ' + trim(minlen.toString()) + ' characters for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
 	if (result)
 	{
       if (theStr.length > maxlen)
 		{
 			alert('Maximum length is ' + trim(maxlen.toString()) + ' characters for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	
	return result;
}





function PasswordsSame(formField1,formField2)
{
	var result = true;

//	if (!(trim(formField1.value) == ""  &&   trim(formField2.value) == ""  &&   trim(formField2.value) == "")) 
//	{


	if (!(trim(formField1.value) == ""    ||   trim(formField2.value) == ""))
	{
 	if (!(formField1.value == formField2.value))
	{
		alert('New password fields are not the same. Please re-enter.');
		formField1.focus();
		result = false;
	}
	}
	

	if (!(trim(formField1.value) == "")    &&   trim(formField2.value) == "")
	{

		alert('Second new password field is empty. Please fill in.');
		formField1.focus();
		result = false;
	}


	if (trim(formField1.value) == ""    &&   !(trim(formField2.value) == ""))
	{

		alert('First new password field is empty. Please fill in.');
		formField2.focus();
		result = false;
	}

//	}

	return result;
}







function validNum(formField,fieldLabel,required,minval,maxval,maxprecision)
// parameters: minvalue, maxvalue, max precision
// convert to float first, see whether valid float,
// then check precision
{
	var result = true;
	if (maxprecision < 0) maxprecision = 0;

	// ==================
	// required
	// ==================
	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	// ==================
	// not more than 1
	// decimal point
	// ==================
 	if (result)
		{
		var theStr = new String(trim(formField.value));
       var index = theStr.indexOf(".");
       if (index > -1)
 			{
 			var mNoOfDecPoints = 0;
	       for (i = 0;  i < theStr.length;  i++) 
	       	{
	       	if (theStr.charAt(i) == ".") mNoOfDecPoints++ ;
	       	}
	       if (mNoOfDecPoints > 1) 
		 		{
				alert('There is more than 1 decimal point in the "' + fieldLabel +'" field.');
				formField.focus();		
				result = false;
				}
			}
		}
			
	// ==================
	// check whether 
	// valid float
	// ==================
	if (result)
		{
	   	//theStr = strip(' \n\r\t',theStr);
	   	//remove leading zeros, if any
	   	while(theStr.length > 1 && theStr.substring(0,1) == '0')
   	 		{
	      	theStr = theStr.substring(1,theStr.length);
	     	}
	   	var val = parseFloat(theStr);
	   	if (isNaN(val) && theStr.length > 0)
			{
			alert('Please enter a valid number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
			}
		}



	// ==================
	// check for max 
	// precision
	// ==================
		//01234.534   9 long
		//012345678   index is in 5
 	if (result)
	 	{
       if (index > -1)             
       	{
	       index = theStr.indexOf(".");
	       var TheDecimals = theStr.substring(index + 1,theStr.length) ;
	       var PrecisionLen = TheDecimals.length;
	       if (PrecisionLen > maxprecision)
	       	{
					alert('Not more than ' + trim(maxprecision.toString()) + ' decimals allowed for the "' + fieldLabel +'" field.');
					formField.focus();		
					result = false;
	       	}
       	}
	 	}


	
	// ==================
	// check for min and
	// max val
	// ==================
 	if (result)
 		{
 		if (val < minval | val > maxval)
 			if (maxval == 999991)
 			{
			alert('"(any)" is not accepted for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
 			}
		else
 			{
			alert('Value should be between ' + trim(minval.toString()) + '  and ' + trim(maxval.toString()) + '  for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
 			}
 		}

	// don't forget to send the result back
	return result;
 	
}






function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel)) {
		result = false;
	}

 	if (result)
 	{

	    if (trim(formField.value) != '') {
	    
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
			var day = parseInt(elems[0],10);
 			var month = parseInt(elems[1],10);
 			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)
  		
	 		var elems2 = formField.value.split("-");
	 		
	 		result = (elems2.length == 3); // should be three components
	 		
	 		if (result)
	 		{
				var day2 = parseInt(elems2[0],10);
	 			var month2 = parseInt(elems2[1],10);
	 			var year2 = parseInt(elems2[2],10);
				result = !isNaN(month2) && (month2 > 0) && (month2 < 13) &&
							!isNaN(day2) && (day2 > 0) && (day2 < 32) &&
							!isNaN(year2) && (elems2[2].length == 4);
	 		}  		
  		
	  		if (!result)  		
  		
		 		{
		 			alert('Please enter a date in the format DD/MM/YYYY or DD-MM-YYYY for the "' + fieldLabel +'" field.');
					formField.focus();		
				}

		}
	} 


	return result;
}
 


function checkKey2()

{
window.event.returnValue=false;
// no input is possible
}








function checkKey()
// add onkeypress="checkKey()" to the input field tag  

{ 

// ===========================================================
// test whether input consists of numerics, decimal point,
// or the Enter key used to get out of the field by activating 
// the submit button
// ===========================================================

mOk = true;
if ( window.event.keyCode > 57 | window.event.keyCode < 48 ) 
	if ( window.event.keyCode != 46 ) 
		if ( window.event.keyCode != 13 ) 
			{ 
		   // alert("Please enter only digits in this fields"); 
			mOk = false;
			} 

// ===============================================================
// test whether the value entered as a whole satisfies the 
// requirements of the parameters, such as number of decimals etc.
// (do realise this logic is repeated for every keystroke)
// Problem: how to check the complete field if this character does
// not form part of it yet
// ===============================================================
		
if (mOk)
	{
	}
	
	
	
if (!mOk) window.event.returnValue=false;
	
}





