function initForm(){		  
    if(document.getElementById("btnCont")){
	  document.getElementById("btnCont").onclick= validate ;
	  }  
	
	 if(document.getElementById("getStartedForm")){
	  document.getElementById("getStartedForm").onsubmit= function(){return false;}
		}	

}



 var emailCheck = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/ ;
 var dateCheck=/^([0-9]{2})\/([0-9]{2})\/([0-9]{2})$/;
 var phoneCheck=/^([0-9]{3})-([0-9]{3})-([0-9]{4})$/;

 
function validate(){ // Validate in stages based on which sections are displaying
    if(document.getElementById("planBasic").checked==false && document.getElementById("planFull").checked==false ){
	  alert("Please select a plan.");
	  return false;
	  }
     
	 if(document.getElementById("busInfo").style.display!="block"){
	 	document.getElementById("busInfo").style.display="block";
		document.getElementById("busInfo").focus();
       }
	 else if(validateBusInfo()){
		   if(document.getElementById("contacts").style.display!="block"){
			 	document.getElementById("contacts").style.display="block";
				location.hash="contacts";
		       }
		   else if(validateContactInfo()){		
		        document.getElementById("vendorInfo").style.display="block";	   
			 	location.hash="vendorInfo";		
				setTermsLink();												//Set the link for terms and conditions.
				document.getElementById("planBasic").onclick=setTermsLink;
				document.getElementById("planFull").onclick=setTermsLink;     
			    document.getElementById("btnCont").onclick=submitForm;   // All sections displaying. Validate and submit form.			   
			   } 
	    }	
}

function submitForm(){
	var validateBus=validateBusInfo();
	var validateContact=validateContactInfo();
	if(validateBus==true && validateContact==true){ 
	   if(document.getElementById("agree").checked){				
			document.getElementById("getStartedForm").onsubmit= function(){return true;}
			document.getElementById("getStartedForm").submit();
			this.disabled=true;
		}
	   else{
	      alert("You need to the agree to the terms and conditions before submitting this form.");
		  setStyle(document.getElementById("agree"));
		  return false;	
	   }	
	 } 
	else if(validateBus==false || validateContact==false){ 
		return false;
		}  
}

function setTermsLink(){  // Sets the value of the terms and conditions link based on plan selected
	if(document.getElementById("planBasic").checked){
	  document.getElementById("termsLink").href="termsBasic.html";
	  }
	else{
	  document.getElementById("termsLink").href="termsFull.html"; 
	  }  
}

function validateBusInfo(){      //  Validates Business information only
	if(document.getElementById("opName").value==""){
	  alert("Please enter Operation Name.");
	  setStyle(document.getElementById("opName"));
	  return false;	
	  }
	  
	if(document.getElementById("addr1").value.length==0){
	  alert("Please enter Street.");
	  document.getElementById("addr1").focus();
	  setStyle(document.getElementById("addr1"));
	  return false;	
	  }
	  
	if(document.getElementById("zip").value.length==0){
	  alert("Please enter Zip Code.");
	  document.getElementById("zip").focus();
	  setStyle(document.getElementById("zip"));
	  return false;	
	  }  
	      	
	if(document.getElementById("primaryPhone1").value.length==0 || document.getElementById("primaryPhone2").value.length==0 || document.getElementById("primaryPhone3").value.length==0){
	  alert("Please enter Primary Phone number.");
	  document.getElementById("primaryPhone1").focus();
	  setStyle(document.getElementById("primaryPhone1"));
	  setStyle(document.getElementById("primaryPhone2"));
	  setStyle(document.getElementById("primaryPhone3"));
	  return false;	
	  }  
	  
	var primaryPhone= document.getElementById("primaryPhone1").value+"-"+document.getElementById("primaryPhone2").value+"-"+document.getElementById("primaryPhone3").value;
	if(validatePhone(primaryPhone)==false){
	  alert("Please enter valid Phone number.");
	  document.getElementById("primaryPhone1").focus();
	  document.getElementById("primaryPhone1").select();
	  setStyle(document.getElementById("primaryPhone1"));
	  setStyle(document.getElementById("primaryPhone2"));
	  setStyle(document.getElementById("primaryPhone3"));
	  return false;		
	  }
	
	    	
	if(document.getElementById("kitchenPhone1").value.length==0 || document.getElementById("kitchenPhone2").value.length==0 || document.getElementById("kitchenPhone3").value.length==0){
	  alert("Please enter Kitchen Phone number.");
	  document.getElementById("kitchenPhone1").focus();
	  setStyle(document.getElementById("kitchenPhone1"));
	  setStyle(document.getElementById("kitchenPhone2"));
	  setStyle(document.getElementById("kitchenPhone3"));
	  return false;	
	  }    
	
	var kitchenPhone= document.getElementById("kitchenPhone1").value+"-"+document.getElementById("kitchenPhone2").value+"-"+document.getElementById("kitchenPhone3").value;
	if(validatePhone(kitchenPhone)==false){
	  alert("Please enter valid Phone number.");
	  document.getElementById("kitchenPhone1").focus();
	  document.getElementById("kitchenPhone1").select();
	  setStyle(document.getElementById("kitchenPhone1"));
	  setStyle(document.getElementById("kitchenPhone2"));
	  setStyle(document.getElementById("kitchenPhone3"));
	  return false;		
	  }
	 
	  
    if(document.getElementById("fax1").value.length==0 || document.getElementById("fax2").value.length==0 || document.getElementById("fax3").value.length==0){
	  alert("Please enter Fax number.");
	  document.getElementById("fax1").focus();
	  setStyle(document.getElementById("fax1"));
	  setStyle(document.getElementById("fax2"));
	  setStyle(document.getElementById("fax3"));
	  return false;	
	  }   
	  
	var fax= document.getElementById("fax1").value+"-"+document.getElementById("fax2").value+"-"+document.getElementById("fax3").value;
	if(validatePhone(fax)==false){
	  alert("Please enter valid fax number.");
	  document.getElementById("fax1").focus();
	  document.getElementById("fax1").select();
	  setStyle(document.getElementById("fax1"));
	  setStyle(document.getElementById("fax2"));
	  setStyle(document.getElementById("fax3"));
	  return false;		
	  }  
	
	
 	 
	if(document.getElementById("email").value.length==0 || emailCheck.exec(document.getElementById("email").value)==null){ 
	  alert("Please enter a valid email address.");
	  document.getElementById("email").focus();
	  document.getElementById("email").select();
	  setStyle(document.getElementById("email"));
	  return false;	
	  }  
	return true; 
}

function validateContactInfo(){   //Validates contact information only
if(document.getElementById("chefName").value==""){
	  alert("Please enter Exec Chef Name.");
	  document.getElementById("chefName").focus();
	  setStyle(document.getElementById("chefName"));
	  return false;	
	  }
	
	if(document.getElementById("chefPhone1").value.length==0 || document.getElementById("chefPhone2").value.length==0 || document.getElementById("chefPhone3").value.length==0){
	  alert("Please enter Phone number.");
	  document.getElementById("chefPhone1").focus();
	  setStyle(document.getElementById("chefPhone1"));
	  setStyle(document.getElementById("chefPhone2"));
	  setStyle(document.getElementById("chefPhone3"));
	  return false;	
	  }     
	  
	var chefPhone= document.getElementById("chefPhone1").value+"-"+document.getElementById("chefPhone2").value+"-"+document.getElementById("chefPhone3").value;
	if(validatePhone(chefPhone)==false){
	  alert("Please enter valid Phone number.");
	  document.getElementById("chefPhone1").focus();
	  document.getElementById("chefPhone1").select();
	  setStyle(document.getElementById("chefPhone1"));
	  return false;		
	  }
	  
	if(document.getElementById("chefEmail").value.length==0 || emailCheck.exec(document.getElementById("chefEmail").value)==null){ 
	  alert("Please enter a valid email address.");
	  document.getElementById("chefEmail").focus();
	  setStyle(document.getElementById("chefEmail"));
	  return false;	
	  }    
	  
	if(document.getElementById("accountantName").value==""){
	  alert("Please enter Exec accountant Name.");
	  document.getElementById("accountantName").focus();
	  setStyle(document.getElementById("accountantName"));
	  return false;	
	  }
	
	if(document.getElementById("accountantPhone1").value.length==0 || document.getElementById("accountantPhone2").value.length==0 || document.getElementById("accountantPhone3").value.length==0){
	  alert("Please enter valid Phone number.");
	  document.getElementById("accountantPhone1").focus();
	  setStyle(document.getElementById("accountantPhone1"));
	  setStyle(document.getElementById("accountantPhone2"));
	  setStyle(document.getElementById("accountantPhone3"));
	  return false;	
	  }    
	   
	var accountantPhone= document.getElementById("accountantPhone1").value+"-"+document.getElementById("accountantPhone2").value+"-"+document.getElementById("accountantPhone3").value;
	if(validatePhone(accountantPhone)==false){
	  alert("Please enter valid Phone number.");
	  document.getElementById("accountantPhone1").focus();
	   document.getElementById("accountantPhone1").select();
	  setStyle(document.getElementById("accountantPhone1"));
	  return false;		
	  }
	  
	if(document.getElementById("accountantEmail").value.length==0 || emailCheck.exec(document.getElementById("accountantEmail").value)==null){ 
	  alert("Please enter a valid email address.");
	  document.getElementById("accountantEmail").focus();
	  document.getElementById("accountantEmail").select();
	  setStyle(document.getElementById("accountantEmail"));
	  return false;	
	  }    	  

  return true;
}
function setStyle(element){    // Highlight the field
	element.style.backgroundColor="#ffc";
}

function validatePhone(phone){    // Validate phone number
	if(phoneCheck.exec(phone)==null){
		return false;
	}
	return true;
}


function addToWorksheet(){   // Dynamic field and row addition to the vendor information worksheet

	var count=1;
	while(document.getElementById("vendor"+count)){
	   count++;
	  }

	var rowNode=document.createElement("tr");
	var cell1Node=document.createElement("td");
	var cell1Content="Vendor";
	var cell1TextNode=document.createTextNode(cell1Content);
	cell1Node.appendChild(cell1TextNode);
	var cell2Node=document.createElement("td");
	var cell2Html='<div><label>Name&#42;<br><input type="text" size="40" name="vendor'+count+'" id="vendor'+count+'" ></label></div>'+
		   	'<div><label>Type<br><input type="text" size="10" name="vendorType'+count+'" id="typ'+count+'" ></label></div>'+
			'<div ><label>Contact&#42;<br><input type="text" size="40" name="vendorContact'+count+'" id="contact'+count+'" ></label></div>'+
			'<div><label>Phone&#42;<br>'+
			'<input type="text" size="3" maxlength="3" name="vendor'+count+'Phone1" id="vendor'+count+'Phone1" title="Area code"> - '+
		  	'<input type="text" size="3" maxlength="3" name="vendor'+count+'Phone2" id="vendor'+count+'Phone2" title="First 3"> - '+ 
		  	'<input type="text" size="4" maxlength="4" name="vendor'+count+'Phone3" id="vendor'+count+'Phone3" title="Last 4"></div> '+
			'<div><label>Email&#42;<br><input type="text" size="20" maxlength="20" name="vendorPhone'+count+'" id="vendorPhone'+count+'" ></label></div>'+
		   	'<div><label>Fax<br>'+
			'<input type="text" size="3" maxlength="3" name="vendor'+count+'Fax1" id="vendor'+count+'Fax1" title="Area code"> - '+
		  	'<input type="text" size="3" maxlength="3" name="vendor'+count+'Fax2" id="vendor'+count+'Fax2" title="First 3"> - '+ 
		  	'<input type="text" size="4" maxlength="4" name="vendor'+count+'Fax3" id="vendor'+count+'Fax3" title="Last 4"></div> '+
			'<div><label>Acct. Number<br><input type="text" size="10" name="vendorAcctNo'+count+'" id="vendorAcctNo'+count+'" ></label></div>'+
			'<div><label>Delivery Dates &amp; Notes&#42;<br><textarea name="vendorDelivery'+count+'" id="vendorDelivery'+count+'" cols="60" rows="7" ></textarea></label></div>';

    var cell3Node=document.createElement("td");
	var cell3Html='<a href="#" class="remove">Remove</a>';

	rowNode.appendChild(cell1Node);
	rowNode.appendChild(cell2Node);
	rowNode.appendChild(cell2Node);
	rowNode.appendChild(cell3Node);
	
	var cellNodes=rowNode.childNodes;	
				
	rowNode.firstChild.nextSibling.innerHTML=cell2Html;
	rowNode.lastChild.innerHTML=cell3Html;
	var worksheetChildren=document.getElementById("worksheet").childNodes;
	var tbody;
	for(var i=0;i<worksheetChildren.length;i++){
	   if(worksheetChildren[i].tagName=="TBODY"){
	     tbody=worksheetChildren[i];
	   }
	}
	tbody.appendChild(rowNode); //add the row to <tbody>. IE will not display otherwise
	setWorksheetLinks(); // Set the remove links
}

function worksheetRemove(){   // Remove a row from the worksheet
	var parent=this.parentNode;
	while(parent.tagName!="TR"){
		parent=parent.parentNode;
	}
	var worksheetChildren=document.getElementById("worksheet").childNodes;
	var tbody;
	for(var i=0;i<worksheetChildren.length;i++){
	   if(worksheetChildren[i].tagName=="TBODY"){
	     tbody=worksheetChildren[i];
	   }
	}
	tbody.removeChild(parent);  //Remove the row from <tbody> . 
	// Reset the field numbers
	
	var rows=new Array();
	var tbodyChildren=tbody.childNodes;
	for(var i=1;i<tbodyChildren.length;i++){
		if(tbodyChildren[i].tagName=="TR"){
		  rows.push(tbodyChildren[i]);		
		  }		  
		}	
	
    // Cycle through all displaying rows and renumber the fields
	for(var i=0;i<rows.length;i++){	  
	   rows[i].firstChild.nextSibling.innerHTML= '<div><label>Name&#42;<br><input type="text" size="40" name="vendor'+(i+2)+'" id="vendor'+(i+2)+'" ></label></div>'+
		   	'<div><label>Type<br><input type="text" size="10" name="vendorType'+(i+2)+'" id="typ'+(i+2)+'" ></label></div>'+
			'<div ><label>Contact&#42;<br><input type="text" size="40" name="vendorContact'+(i+2)+'" id="contact'+(i+2)+'" ></label></div>'+
			'<div><label>Phone&#42;<br>'+
			'<input type="text" size="3" maxlength="3" name="vendor'+(i+2)+'Phone1" id="vendor'+(i+2)+'Phone1" title="Area code"> - '+
		  	'<input type="text" size="3" maxlength="3" name="vendor'+(i+2)+'Phone2" id="vendor'+(i+2)+'Phone2" title="First 3"> - '+ 
		  	'<input type="text" size="4" maxlength="4" name="vendor'+(i+2)+'Phone3" id="vendor'+(i+2)+'Phone3" title="Last 4"></div> '+
			'<div><label>Email&#42;<br><input type="text" size="20" maxlength="20" name="vendorEmail'+(i+2)+'" id="vendorEmail'+(i+2)+'" ></label></div>'+
		   	'<div><label>Fax<br>'+
			'<input type="text" size="3" maxlength="3" name="vendor'+(i+2)+'Fax1" id="vendor'+(i+2)+'Fax1" title="Area code"> - '+
		  	'<input type="text" size="3" maxlength="3" name="vendor'+(i+2)+'Fax2" id="vendor'+(i+2)+'Fax2" title="First 3"> - '+ 
		  	'<input type="text" size="4" maxlength="4" name="vendor'+(i+2)+'Fax3" id="vendor'+(i+2)+'Fax3" title="Last 4"></div> '+
			'<div><label>Acct. Number<br><input type="text" size="10" name="vendorAcctNo'+(i+2)+'" id="vendorAcctNo'+(i+2)+'" ></label></div>'+
			'<div><label>Delivery Dates &amp; Notes&#42;<br><textarea name="vendorDelivery'+(i+2)+'" id="vendorDelivery'+(i+2)+'" cols="60" rows="7" ></textarea></label></div>';
 		}
    return false;
}

function setWorksheetLinks(){  // Register the onclick behavior for the newly created links
	document.getElementById("add").onclick=function(){addToWorksheet();return false;};
	var links=document.links;
	for(var i=0;i<links.length;i++){
	    if(links[i].className=="remove"){
			links[i].onclick=worksheetRemove;
		  } 
	   }
}

addEvent(window,"load",initForm);
addEvent(window,"load",setWorksheetLinks);