function FormValidator(RegistrationQForm)
{	
	if (isObject(RegistrationQForm.txtFirstName)) {
		if (trim(RegistrationQForm.txtFirstName.value) == "")
		{
			alert("Please enter your first name.");
			RegistrationQForm.txtFirstName.focus();
			return (false);
		} 
		else {
			if (RegistrationQForm.txtFirstName.value.length < 2)
			{
				alert("Please enter a valid first name.");
				RegistrationQForm.txtFirstName.focus();
				return (false);
			}			
		}
	}
 
	if (isObject(RegistrationQForm.txtLastName)) {
		if (trim(RegistrationQForm.txtLastName.value) == "")
		{
			alert("Please enter your last name.");
			RegistrationQForm.txtLastName.focus();
			return (false);
		} 
		else {
			if (RegistrationQForm.txtLastName.value.length < 2)
			{
				alert("Please enter a valid last name.");
				RegistrationQForm.txtLastName.focus();
				return (false);
			}			
		}
	}
  
	if (isObject(RegistrationQForm.txtCompany)) {
		if (trim(RegistrationQForm.txtCompany.value) == "")
		{
			alert("Please enter your company name.");
			RegistrationQForm.txtCompany.focus();
			return (false);
		}
		else {
			if (RegistrationQForm.txtCompany.value.length < 2)
			{
				alert("Please enter a valid company name.");
				RegistrationQForm.txtCompany.focus();
				return (false);
			}			
		}
	}
	
	if (isObject(RegistrationQForm.txtJobTitle)) {
		if (trim(RegistrationQForm.txtJobTitle.value) == "")
		{
			alert("Please enter your job title.");
			RegistrationQForm.txtJobTitle.focus();
			return (false);
		}
		else {
			if (RegistrationQForm.txtJobTitle.value.length < 2)
			{
				alert("Please enter a valid job title.");
				RegistrationQForm.txtJobTitle.focus();
				return (false);
			}			
		}
	}
	
	if (isObject(RegistrationQForm.txtAddress1)) {
		if (trim(RegistrationQForm.txtAddress1.value) == "")
			{
			alert("Please enter your address.");
			RegistrationQForm.txtAddress1.focus();
			return (false);
		}
		else {
			if (RegistrationQForm.txtAddress1.value.length < 2)
			{
				alert("Please enter a valid address.");
				RegistrationQForm.txtAddress1.focus();
				return (false);
			}			
		}
	}
	
	if (isObject(RegistrationQForm.txtCity)) {
		if (trim(RegistrationQForm.txtCity.value) == "")
		{
			alert("Please enter your city.");
			RegistrationQForm.txtCity.focus();
			return (false);
		}
		else {
			if (RegistrationQForm.txtCity.value.length < 2)
			{
				alert("Please enter a valid city.");
				RegistrationQForm.txtCity.focus();
				return (false);
			}			
		}
	}	
	
	if (isObject(RegistrationQForm.lstCountry)) {
		if (RegistrationQForm.lstCountry.selectedIndex == 0)
		{
			alert("Please select your country.");
			RegistrationQForm.lstCountry.focus();
			return (false);
		} else {
			if (isObject(RegistrationQForm.lstState)) {
				strSelectedCountry = RegistrationQForm.lstCountry.options[RegistrationQForm.lstCountry.selectedIndex].text;
				
				blnUSCanada = false;
				if (strSelectedCountry == 'United States' || strSelectedCountry == 'Canada')
					blnUSCanada = true;
				
				if (RegistrationQForm.lstState.selectedIndex == 0)
				{
					if (strSelectedCountry == 'United States') {
						alert("Please enter your U.S. State.");
						RegistrationQForm.lstState.focus();						
						return (false);
					}
					else if (strSelectedCountry == 'Canada') {
						alert("Please enter your Province.");
						RegistrationQForm.lstState.focus();
						return (false);
					}
				}
				
				if (isObject(RegistrationQForm.txtPostalCode) && blnUSCanada) {
					if (trim(RegistrationQForm.txtPostalCode.value) == "") {
						alert("Please enter your postal code.");
						RegistrationQForm.txtPostalCode.focus();
						return (false);
					} 
					else if (strSelectedCountry == 'United States' && !validate_uszip(trim(RegistrationQForm.txtPostalCode.value))){
						alert("Please enter a valid U.S. postal code.");
						RegistrationQForm.txtPostalCode.focus();
						return (false);
					}
				}
			}
		}
	}	
	
	if (isObject(RegistrationQForm.txtPhone)) {
		if (trim(RegistrationQForm.txtPhone.value) == "")
		{
			alert("Please enter your phone number.");
			RegistrationQForm.txtPhone.focus();
			return (false);
		}
		else if (!validate_phone(RegistrationQForm.txtPhone.value)) {
			alert("Please enter a valid phone number.");
			RegistrationQForm.txtPhone.focus();
			return (false);
		}
	}
	
	if (isObject(RegistrationQForm.txtEmail)) {
		if (trim(RegistrationQForm.txtEmail.value) == "")
		{
			alert("Please enter your email address.");
			RegistrationQForm.txtEmail.focus();
			return (false);
		} 
		else if (!validate_email(RegistrationQForm.txtEmail.value)) {
			alert("Please enter a valid email address.");
			RegistrationQForm.txtEmail.focus();
			return (false);
		}
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion7)) {
		if (RegistrationQForm.ProfileQuestion7.selectedIndex == 0)
		{
			alert("Please select your company's industry.");
			RegistrationQForm.ProfileQuestion7.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion28)) {
		if (RegistrationQForm.ProfileQuestion28.selectedIndex == 0)
		{
			alert("Please select your company's annual revenue.");
			RegistrationQForm.ProfileQuestion28.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion3)) {
		if (RegistrationQForm.ProfileQuestion3.selectedIndex == 0)
		{
			alert("Please select software type.");
			RegistrationQForm.ProfileQuestion3.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion11)) {
		if (RegistrationQForm.ProfileQuestion11.selectedIndex == 0)
		{
			alert("Please select software type.");
			RegistrationQForm.ProfileQuestion11.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion4)) {
		if (RegistrationQForm.ProfileQuestion4.selectedIndex == 0)
		{
			alert("Please select your company size.");
			RegistrationQForm.ProfileQuestion4.focus();
			return (false);
		}
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion5)) {
		if (RegistrationQForm.ProfileQuestion5.selectedIndex == 0)
		{
			alert("Please indicate when your company is looking to purchase a CRM solution.");
			RegistrationQForm.ProfileQuestion5.focus();
			return (false);
		}
	}
	
	if (isCheckboxArray(RegistrationQForm, "ProfileQuestion9")) {
		itemsChecked = checkArray(RegistrationQForm, "ProfileQuestion9");
		if(itemsChecked.length == 0) {
	      alert('Please select at least one contact method for Microsoft.');
	      return (false);
	    }  
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion17)) {
		if (RegistrationQForm.ProfileQuestion17.selectedIndex == 0)
		{
	      alert('Please select your accounting software budget.');
	      RegistrationQForm.ProfileQuestion17.focus();
	      return (false);
	    }  
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion18)) {
		if (RegistrationQForm.ProfileQuestion18.selectedIndex == 0)
		{
	      alert('Please select your company\'s annual revenue.');
	      RegistrationQForm.ProfileQuestion18.focus();
	      return (false);
	    } 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion19)) {
		if (RegistrationQForm.ProfileQuestion19.selectedIndex == 0)
		{
	     	alert('Please select your current accounting system.');
			RegistrationQForm.ProfileQuestion19.focus();
			return (false);
	    } 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion20)) {
		if (RegistrationQForm.ProfileQuestion20.selectedIndex == 0)
		{
	     	 alert('Please select your current SFA/CRM system.');
			RegistrationQForm.ProfileQuestion20.focus();
			return (false);
	    } 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion21)) {
		if (RegistrationQForm.ProfileQuestion21.selectedIndex == 0)
		{
	     	 alert('Please select your paid search marketing monthly spendings.');
			RegistrationQForm.ProfileQuestion21.focus();
			return (false);
	    } 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion22)) {
		if (RegistrationQForm.ProfileQuestion22.selectedIndex == 0)
		{
	     	 alert('Please select you SEM management type.');
			RegistrationQForm.ProfileQuestion22.focus();
			return (false);
	    } 
	}
  
	return (true);
}

function SurveyValidator(RegistrationQForm)
{
	if (isObject(RegistrationQForm.ProfileQuestion7)) {
		if (RegistrationQForm.ProfileQuestion7.selectedIndex == 0)
		{
			alert("Please select your company's industry.");
			RegistrationQForm.ProfileQuestion7.focus();
			return (false);
		} 
	}
	
	if (isCheckboxArray(RegistrationQForm, "ProfileQuestion8")) {
		itemsChecked = checkArray(RegistrationQForm, "ProfileQuestion8");
		if(itemsChecked.length == 0) {
	      alert('Please select at least one CRM functionality you are interested in.');
	      return (false);
	    }  
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion12)) {
		if (RegistrationQForm.ProfileQuestion12.selectedIndex == 0)
		{
			alert("Please select your company's Help Desk needs.");
			RegistrationQForm.ProfileQuestion12.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion13)) {
		if (RegistrationQForm.ProfileQuestion13.selectedIndex == 0)
		{
			alert("Please select how many Help Desk personnel you have.");
			RegistrationQForm.ProfileQuestion13.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion14)) {
		if (RegistrationQForm.ProfileQuestion14.selectedIndex == 0)
		{
			alert("Please select how many incidents per day your Help Desk currently handles.");
			RegistrationQForm.ProfileQuestion14.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion15)) {
		if (RegistrationQForm.ProfileQuestion15.selectedIndex == 0)
		{
			alert("Please select your company's budget for Help Desk Software.");
			RegistrationQForm.ProfileQuestion15.focus();
			return (false);
		} 
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion17)) {
		if (RegistrationQForm.ProfileQuestion17.selectedIndex == 0)
		{
	      alert('Please select your accounting software budget.');
	      RegistrationQForm.ProfileQuestion17.focus();
	      return (false);
	    }  
	}
	
	if (isObject(RegistrationQForm.ProfileQuestion18)) {
		if (RegistrationQForm.ProfileQuestion18.selectedIndex == 0)
		{
	      alert('Please select your company\'s annual revenue.');
	      RegistrationQForm.ProfileQuestion18.focus();
	      return (false);
	    } 
	}
	
	if (isObject(RegistrationQForm.dynamiclistbox)) {
		if (RegistrationQForm.dynamiclistbox.selectedIndex == 0)
		{
			alert("Please select which of the chosen CRM functionalities is the most important.");
			RegistrationQForm.dynamiclistbox.focus();
			return (false);
		} 
	}
	
	if (isCheckboxArray(RegistrationQForm, "ProfileQuestion26")) {
		itemsChecked = checkArray(RegistrationQForm, "ProfileQuestion26");
		if(itemsChecked.length == 0) {
	      alert('Please tell us how you want customer service software to improve your support.');
	      return (false);
	    }  
	}
	
	if (isCheckboxArray(RegistrationQForm, "ProfileQuestion27")) {
		itemsChecked = checkArray(RegistrationQForm, "ProfileQuestion27");
		if(itemsChecked.length == 0) {
	      alert('Please tell us how you want help desk software to improve your service.');
	      return (false);
	    }  
	}
	
	return true;
}

function isObject(a) 
{
	return (typeof a == 'object' && !!a);
}

function isArray(o) {return isObject(o) && o.constructor == Array;}

function checkArray(form, arrayName)
{
	var retval = new Array();
	for(var i=0; i < form.elements.length; i++) {
	  var el = form.elements[i];
	  if(el.type == "checkbox" && el.name.indexOf(arrayName) > -1 && el.checked) {
	    retval.push(el.value);
	  }
	}
	return retval;
}

function isCheckboxArray (form, arrayName) {
	
	for(var i=0; i < form.elements.length; i++) {
		var el = form.elements[i];		
		
		if(el.type == "checkbox" && el.name.indexOf(arrayName) > -1) {
			return true;
		}

	}
	
	return false;
}

function validate_email(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	  // alert("Invalid E-mail ID")
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }

		 return true					
}

function validate_phone(phoneNumber) {
	var valid = true;
	var validChars = "0123456789()-+. "
	var i = 0
	if (phoneNumber=="") {
		// Return false if number is empty
		valid = false
	}
	for (i =0; i <= phoneNumber.length -1; i++) {
		if (validChars.indexOf(phoneNumber.charAt(i)) == -1) {
			valid = false
		} // End if statement
	} // End for loop
	return valid
}

function validate_uszip (zipCode) {
	var valid = true;
	var validChars = "0123456789- ";
	var i = 0;
	if (zipCode=="") {
		// Return false if number is empty
		valid = false;
	}
	else if (zipCode.length < 5) {
		valid = false;
	}
	else {
		for (i =0; i <= zipCode.length -1; i++) {
			if (validChars.indexOf(zipCode.charAt(i)) == -1) {
				valid = false;
			} // End if statement
		} // End for loop
	}
	 
	return valid;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}
