				function trim(s)
				{
					if (typeof(s)=='string'){
						var i,len=s.length;
						for (i=len-1;i>=0 && s.charAt(i)<=' ';--i){}
						len=i+1;
						for (i=0;i<len && s.charAt(i)<=' ';++i){}
						if (i<len) s=s.substring(i,len);
						else s="";
					}
					return s;
				}
				
				
				function isNumber(str,allowFP)
				{
					if (typeof(allowFP)=='undefined') allowFP=false;
				
					if (typeof(str)=='number'){
						if (allow_fp) return true;
						else return str==Math.floor(str);
					}
				
					if (typeof(str)!='string') return false;
				
					str=trim(str);
					if (str.length==0) return false;
				
					var result=true;
					if (window.RegExp){
						var regstr="^[+-]?[0-9]*";
						if (allowFP) regstr+="\\.?[0-9]*([eE][+-]?[0-9]+)?";
						regstr+="$";
						var reg = new RegExp(regstr);
						result=reg.test(str);
					}else{
						result=false;
					}
					return result;
				}
				
				function isDate(str)
				{
					var milliseconds=Date.parse(str);
					return !(isNaN(milliseconds));
				}
				
				function isZIPCode(str)
				{
					return isValidText(str,"^\\d{5}(-\\d{4})?$");
				}
				
				
				function isExpirationDate(str)
				{
					if (isValidText(str,"^\\d{1,2}/\\d{2}$"))
					{
						var month=parseInt(str.substring(0,2));
						var year=parseInt(str.substring(3));
						if (month>=1 && month<=12 && year>=0 && year<=99) return true;
						else return false;
					}else return false;
				}
				
				function isCreditCardNumber(str)
				{
					return isValidText(str,"^\\d{12}(\\d{4})?$");
				}
				
				
				function isEMailAddress(str)
				{
					return isValidText(str,"^([\\w\\._-]+)@([\\w_]+\\.)+([\\w_]+)$");
				}
				
				
				function isPhoneNumber(str)
				{
					return isValidText(str,"^\\(?\\d{3}\\)?[-\\. ]?\\d{3}[-\\. ]?\\d{4}$");
				}
				
				
				function isAlpha(str)
				{
					return isValidText(str.toUpperCase(),"^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]+$");
				}
				
				
				
				function isAlphaNumeric(str)
				{
					return isValidText(str.toUpperCase(),"^[ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890]+$");
				}
				
				
				function isValidText(str,regex)
				{
					if (window.RegExp){
						if (typeof(regex)=='string')
							regex=new RegExp(regex);
						return regex.test(str);
					}else{
						window.alert("RegExp not available!");
						return true;
					}
				}
				
				
				function isDefined(obj)
				{
					if (obj==null || (""+eval("obj"))=="undefined"){
						return false;
					}else{
						return true;
					}
				}
				
				function isPresent(obj)
				{
					if (trim(obj) == "") {
						return false;
						}
					else {
						return true;
						}
				}

				function validate() 
				{
					//Validate First Name
					if (!isPresent(document.contact.fname.value)) 
						{
							errorWindow("You have not entered a first name, please enter a first name.");
							document.contact.fname.focus();
							return false;
						}
					//Validate Last Name
					if (!isPresent(document.contact.lname.value)) 
						{
							errorWindow("You have not entered a last name, please enter a last name.");
							document.contact.lname.focus();
							return false;
						}
					//Validate Email
					if (!isEMailAddress(document.contact.email.value))
						{
							errorWindow("You have not entered a valid email address, please enter a valid email address name.");
							document.contact.email.value = "";
							document.contact.email.focus();
							return false;
						}
					return true;
				}
				
				function errorWindow(str) 
					{
						window.alert(str);
						void 0;
					}

