var stateName = new Array("Texas, of course!");
								
var stateValue = new Array("Texas, of course!");

var fieldName = new Array("Name","Address","City","State","Zip","Phone Number","E-mail Address","Best method of contact","Type of service requested<br />(Choose all that apply)","Questions or Comments");
var inputName = new Array("fullName","address","city","state","zip","phone","email","contactMethod","service","comments");

function buildDataTable(formId) {
	tableId = document.getElementById(formId);

	table = document.createElement("table");
	table.setAttribute("width", "90%");
	tablebody = document.createElement("tbody");
	for(var i=0; i< fieldName.length;i++){
		
			row = document.createElement("tr");
			cell = document.createElement("td");
			cell.innerHTML = fieldName[i];
			row.appendChild(cell);
			
		if(fieldName[i] == "State"){
			cell = document.createElement("td");
			selectData = document.createElement("select");
			selectData.name = "State";
	
			if(stateName && stateName.length){
				for(j=0;j<stateName.length;j++){
					optionData = document.createElement("option");
					optionData.setAttribute("value",stateValue[j]);
					optionData.innerHTML = stateName[j];
					selectData.appendChild(optionData);
				}
			}
			
			cell.appendChild(selectData);
			if(navigator.appName == "Microsoft Internet Explorer")
				selectData.outerHTML = selectData.outerHTML.replace(/>/, " name="+selectData.name+">");

			row.appendChild(cell);
		}else if(fieldName[i] == "Best method of contact"){
			
			cell = document.createElement("td");
			inputType = document.createElement("input");	
			inputType.setAttribute("type","radio");
			inputType.name="contactMethod";
			inputType.setAttribute("value","Phone");
			
			cell.appendChild(inputType);
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			
			
			cell.innerHTML += "phone";

			inputType = document.createElement("input");
			inputType.setAttribute("type","radio");
			inputType.name = "contactMethod";
			inputType.setAttribute("value","Email");
			cell.appendChild(inputType);
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			
			cell.innerHTML += "e-mail";

			row.appendChild(cell);
		
		}else if(fieldName[i] == "Type of service requested<br />(Choose all that apply)"){
			
			cell = document.createElement("td");
			inputType = document.createElement("input");
			inputType.name = "service[]";
			inputType.type = "checkbox";
			
			cell.appendChild(inputType);	
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			cell.innerHTML += "Lawn Maintenance<br />";
			
			inputType = document.createElement("input");
			inputType.setAttribute("type","checkbox");
			inputType.name = "service[]";
			
			cell.appendChild(inputType);
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			
			cell.innerHTML += "Landscape Design or Installation<br />";
			
			inputType = document.createElement("input");
			inputType.setAttribute("type","checkbox");
			inputType.name="service[]";
			cell.appendChild(inputType);
			
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			
			cell.innerHTML += "Stonework, Walkways, Borders<br />";
			inputType = document.createElement("input");
			inputType.setAttribute("type","checkbox");
			inputType.name = "service[]";

			cell.appendChild(inputType);
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			cell.innerHTML += "Tree or Shrub Maintenance";
			
			row.appendChild(cell);
			
		}else if(fieldName[i] == "Questions or Comments"){
			cell = document.createElement("td");
			inputType = document.createElement("textarea");
			inputType.name="comments";
			cell.appendChild(inputType);	
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
			row.appendChild(cell);
			
		}else{
			cell = document.createElement("td");
			inputType = document.createElement("input");
			inputType.setAttribute("type","text");
			inputType.name=inputName[i];
			
			cell.appendChild(inputType);
			if(navigator.appName == "Microsoft Internet Explorer")
				inputType.outerHTML = inputType.outerHTML.replace(/>/, " name="+inputType.name+">");
				
			row.appendChild(cell);
		}		
			tablebody.appendChild(row);
	}

	row = document.createElement("tr");
	cell = document.createElement("td");
	cell.setAttribute("colspan","2");
	cell.innerHTML = "All fields are required.";
	row.appendChild(cell);
	tablebody.appendChild(row);	

	table.appendChild(tablebody);
	
	tableId.appendChild(table);

	return;
}

function fieldMatch(formField1,formField2)
{
  var field1 = formField1.value;
  var field2 = formField2.value;

if (field1 == field2)
  {
	result = true;
  }
  else
  {
	  alert('Please be sure that both "'+ formField1.name +'"and "'+ formField2.name +'" match!');
	  formField1.focus();
	  result = false;
  }
  return result;
}

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 (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	if (formField.value == "-Select One-")
	{
		alert('Please select a "' + fieldLabel +'" from the drop down menu.');
		formField.focus();
		result = false;
	}
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	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)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		if (!allDigits(formField.value))
		{
			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var num = parseInt(formField.value,10);
		if (isNaN(num))
		{
			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
	if (result)
	{
		var elems = formField.value.split("/");
		
		result = (elems.length == 3); // should be three components
		
		if (result)
		{
			var month = parseInt(elems[0],10);
			var day = parseInt(elems[1],10);
			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
		}
		
		if (!result)
		{
			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function passwordLength(formField,fieldLabel)
{
	var result = true;	
	var reqLength = 6;
	
	if(formField.value.length < reqLength)
	
		{
			alert('Please choose a "' + fieldLabel +'" that is at least 6 characters.');
			formField.focus();
			result = false;
		}
		
	return result;
		
}

function checkRadio(formField, fieldName) 
{
	var result = false;	
	var counter = (formField) ? formField.length : 0;
	if(counter && counter > 1){
		for(i=0;i<counter;i++){
				if (formField[i].checked){
					result = true;
					break;
				}
		}
	}
	if(!result){
		alert ('Please select '+fieldName+'!');
		result = false;
	} 
	
	return result;
}
function checkChecks(formField,fieldName){
	var result = false;	
	var counter = formField.length;
	if(counter && counter > 0){
		for(i=0;i<4;i++){
			if(formField[i].checked){
				result = true;
				break;
			}	
		}	
	}
	if(!result){
		alert ('Please select '+fieldName+'!');
		result = false;
	} 
	
	return result;
}
function validateForm(theForm)
{
	// Customize these calls for your form

	// Start ------->

	if (!validRequired(theForm.fullName,"Name"))
		return false;
	if (!validRequired(theForm.address,"Address"))
		return false;
		
	if (!validRequired(theForm.city,"City"))
		return false;
	if (!validRequired(theForm.zip,"Zip"))
		return false;
		
	if (!validRequired(theForm.phone,"Phone Number"))
		return false;

	if (!validRequired(theForm.email,"E-mail Address"))
		return false;
	
	if (!validEmail(theForm.email,"E-mail Address",true))
		return false;
		
	if (!checkRadio(theForm.contactMethod,"Best method of contact"))
		return false;
		
	if (!checkChecks(document.getElementsByName('service[]'),"Type of service requested"))
		return false;
		
	if (!validRequired(theForm.comments,"Questions or Comments"))
		return false;

	// <--------- End
	
	return true;
}