	
	//gets the requested object from the page
	function getMObject(sObjID) {
		//code can be extended to handle browesers that do not recognize getElementByID
		var mObj = document.getElementById(sObjID);
		
		//if (is_gecko) {		
		//} else if (is_ie5up) {
		//} else {
		//}
		return mObj;
	}
		
	//gets the requested object from the page when it is known to be an object Array
	function getMArrayItem(sObjID, iPos) {
		//code can be extended to handle browesers that do not recognize getElementByID		
			
		if (is_gecko) {		
			var mObj = document.getElementsByName(sObjID)[iPos];
			//var mObj = document(sObjID)[iPos];
		} else { // if (is_ie5up) {
			var mObj = document.all(sObjID)[iPos];
		//} else {
		
		}
		return mObj;
	}
	
	
	
	//gets form values
	function getFormVal(sObjID) {
		var mObj = getMObject(sObjID);				
		if (mObj == null) {
			return '';
		} else {
			return mObj.value;		
		}
	}
	
	//sets form values
	function setFormVal(sObjID, sValue) {
		var mObj = getMObject(sObjID);
		if (mObj != null) {
			mObj.value = sValue;
		}
	}	

	//sets form focus
	function setFormFocus(sObjID) {
		var mObj = getMObject(sObjID);		
		if (mObj != null) {
			mObj.focus();
		}
	}

	//confirm prior to cancelling a wizard
	function confirmCancel() {
		if (confirm('Are you sure you want to cancel this transaction? All fields will be cleared.')) {
			return true;
		} else {
			return false;
		}
	}
	
	
	//formatting for the postal code
	function formatPostal_Code(fieldPCode) {		
		var sTemp = fieldPCode.value;
		if ((sTemp.indexOf('-') == -1) && (sTemp.length == 9) && (validateNumeric(sTemp))) {			
			//This is a valid Code without formatting so format it
			sTemp = sTemp.substring(0,5) + "-" + sTemp.substring(5,9);
			fieldPCode.value = sTemp;
		}
	}
	
	//formating for the tax ID	
	function formatFEIN(fieldFEIN) {
		var sTemp = fieldFEIN.value;
		if ((sTemp.indexOf('-') == -1) && (sTemp.length == 9) && (validateNumeric(sTemp))) {
			//This is a valid FEIN without formatting so format it
			sTemp = sTemp.substring(0,2) + "-" + sTemp.substring(2,9);
			fieldFEIN.value = sTemp;
		}	
	}
	
	//formating for SSN
	function formatSSN(fieldSSN) {
		var sTemp = fieldSSN.value;
		if ((sTemp.indexOf('-') == -1) && (sTemp.length == 9) && (validateNumeric(sTemp))) {
			//This is a valid SSN without formatting so format it
			sTemp = sTemp.substring(0,3) + "-" + sTemp.substring(3,5) + "-" + sTemp.substring(5,9);
			fieldSSN.value = sTemp;
		}		
	}
		
	//formating for phone numbers
	function formatPhone(fieldPhone) {
		var sTemp = fieldPhone.value;
		var mPhone = '';
		sTemp = stripNumeric(sTemp);			
		switch (sTemp.length) {
			case 7:
				mPhone = sTemp.substring(0,3) + '-' + sTemp.substring(3,7)
			break;
			case 8:
				mPhone = sTemp.substring(0,1) + '-' + sTemp.substring(1,4) + '-' + sTemp.substring(4,8)
			break;
			case 9:
				mPhone = sTemp.substring(0,2) + '-' + sTemp.substring(2,5) + '-' + sTemp.substring(5,9)
			break;
			case 10:
				mPhone = sTemp.substring(0,3) + '-' + sTemp.substring(3,6) + '-' + sTemp.substring(6,10)
			break;
			case 11:
				mPhone = sTemp.substring(0,1) + '-' + sTemp.substring(1,4) + '-' + sTemp.substring(4,7) + '-' + sTemp.substring(7,11)
			break;
			case 12:
				mPhone = sTemp.substring(0,2) + '-' + sTemp.substring(2,5) + '-' + sTemp.substring(5,8) + '-' + sTemp.substring(8,12)
			break;
			default:
				mPhone = sTemp
			break;
		}		
		fieldPhone.value = mPhone;		
	}
	
	//formating for currency	
	function formatCurrency(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num)){num = "0";}
		
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
			num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
		}
		return (((sign)?'':'-') + num + '.' + cents);
	}
	
	
	
	//numeric validation for all characters in a string
	function validateNumeric(sfieldval) {
		var IsValid = true;
		var hasAlpha = false;
		
		for (var i=0; i<sfieldval.length; i++) {
		    if ((sfieldval.charAt(i) != ".") && (sfieldval.charAt(i) != "0") && (!parseFloat(sfieldval.charAt(i)))) {
		        var hasAlpha = true;
		        break;
		    }
		}
		if (hasAlpha == true) {			
			IsValid = false;			
		}	
		
		return IsValid;
	}
	
	//returns all numeric characters in a string
	function stripNumeric(sValue) {		
		var sNumbers = '';
		
		for (var i=0; i<sValue.length; i++) {
			var sTemp = parseFloat(sValue.charAt(i))
		  if ((sTemp) || (sValue.charAt(i) == 0)) {					
				sNumbers = sNumbers + sValue.charAt(i);
			}
		}
		return sNumbers;					
	}
		
		
	function validateDate(sDate) {
	  var bReturn = false;
	  var POS_MONTH = 0; var POS_DAY = 1; var POS_YEAR = 2;
	  var arrDate = new Array();

	  //if there are no date formatting characters (/, ,-) and the strings length is equal to eight
	  if (!/[\/\-\. ]/g.test(sDate) && sDate.length == 8) {
	    //then we have to split this up manually
	    arrDate[0] = sDate.slice(0, 2);
	    arrDate[1] = sDate.slice(2, 4);
	    arrDate[2] = sDate.slice(4);
	  }
	  else {
	    arrDate = sDate.split(/[\-\/\. ]/);
	  }

	  if(/[^\d]/g.test(sDate.replace(/[\/\-\. ]/g, ""))) {bReturn = false;} // bad characters
	  else if (arrDate.length != 3)	{bReturn = false;} // missing date parts
	  else if (arrDate[POS_MONTH] < 1 || arrDate[POS_MONTH] > 12) {bReturn = false;} // bad month
	  else if (arrDate[POS_DAY] < 1 || arrDate[POS_DAY] > 31) {bReturn = false;} // bad day
	  else if (arrDate[POS_YEAR].length < 2 || arrDate[POS_YEAR].length > 4) {bReturn = false;} // bad year
	  else {
	    // build date from parts
	    var dtDate = new Date(arrDate[0] + '/' + arrDate[1] + '/' + arrDate[2]);
	    bReturn = !isNaN(dtDate);
	    if (bReturn) {bReturn = arrDate[0] == (dtDate.getMonth() + 1);}
	      if (dtDate.getFullYear()>2078 || dtDate.getFullYear() < 1900) {bReturn = false;}
	    }
	  return bReturn;
	}