var vd = {

	contactForm : document.getElementById('ajax-contact-form'),
	requestForm : document.getElementById('ajax-request-form'),
	
	contactInputs : null,
	requestInputs : null,
	
	contactTextarea : null,
	
	errorC : false,
	errorR : false,
	
	content : document.getElementById('content'),
	sidebar : document.getElementById('sidebar'),

	init : function(){
	
		vd.contactInputs = vd.contactForm.getElementsByTagName('input');
		vd.contactTextarea = vd.contactForm.getElementsByTagName('textarea')[0];	
		vd.requestInputs = vd.requestForm.getElementsByTagName('input');
		vd.util.configEvents();
		vd.util.addEvent(vd.contactForm, 'submit', vd.contValidate, false);
		vd.util.addEvent(vd.requestForm, 'submit', vd.requestValidate, false);
	},
	
	contValidate : function(evt){
		if(vd.errorC === true){
			var errorList = document.getElementById('contactError');
			errorList.parentNode.removeChild(errorList);
		}
		var inputLength = vd.contactInputs.length;
		vd.errorC = false;
		var li = [];
		var counter = 0;
		
		for(var i=0; i<inputLength; i++){
		
			if(vd.contactInputs[i].id === 'name' && vd.contactInputs[i].value === ''){
				li[counter] = 'Please enter your name'; counter++; vd.errorC=true;
			}
			
			if(vd.contactInputs[i].id === 'email'){
				if(vd.contactInputs[i].value === ''){
					li[counter] = 'Please enter your email address'; counter++; vd.errorC=true;
				}
				var emailPattern = /^([\w\.\-])+\@(([\w\-])+\.)+([\w]{2,6})+$/;
				var validEmail = emailPattern.test(vd.contactInputs[i].value);
				if(!validEmail && vd.contactInputs[i].value !== ''){
					li[counter] = 'Please enter a valid email address'; counter++; vd.errorC=true;
				}
			}
			
			if(vd.contactInputs[i].id === 'subject' && vd.contactInputs[i].value === ''){
				li[counter] = 'Please enter a subject for the email'; counter++; vd.errorC=true;
			}
		}
	
		if(vd.contactTextarea.value === ''){
			li[counter] = 'Please enter a message'; vd.errorC=true;
		}
		
		if(vd.errorC){
			vd.util.stopDefault(evt);
			var no = li.length;
			var newUL = document.createElement('ul');
			newUL.id = "contactError";
			for(var j=0; j<no; j++){
				var newLi = document.createElement('li');
				newLi.appendChild(document.createTextNode(li[j]));	
				newUL.appendChild(newLi);
			}
			vd.contactForm.parentNode.insertBefore(newUL, vd.contactForm);
		}
		
		vd.content.style.height="100%";
		var newHeight = vd.content.offsetHeight;
		vd.sidebar.style.height= (newHeight - 40 + 'px');
	},
	
	requestValidate : function(evt){
		if(vd.errorR === true){
			var errorList = document.getElementById('requestError');
			errorList.parentNode.removeChild(errorList);		
		}
		var inputLength = vd.requestInputs.length;
		vd.errorR = false;
		var li = [];
		var counter = 0;
		
		for(var i=0; i<inputLength; i++){
		
			if(vd.requestInputs[i].name === 'name' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter your name'; counter++; vd.errorR=true;
			}
			
			if(vd.requestInputs[i].name === 'email'){
				if(vd.requestInputs[i].value === ''){
					li[counter] = 'Please enter your email address'; counter++; vd.errorR=true;
				}
				var emailPattern = /^([\w\.\-])+\@(([\w\-])+\.)+([\w]{2,6})+$/;
				var validEmail = emailPattern.test(vd.requestInputs[i].value);
				if(!validEmail && vd.requestInputs[i].value !== ''){
					li[counter] = 'Please enter a valid email address'; counter++; vd.errorR=true;
				}
			}
			
			if(vd.requestInputs[i].name === 'phone' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter a phone number'; counter++; vd.errorR=true;
			}
			
			if(vd.requestInputs[i].name === 'location' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter the location of your event'; counter++; vd.errorR=true;
			}
			
			if(vd.requestInputs[i].name === 'eventdate' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter the date of your event'; counter++; vd.errorR=true;
			}
			
			if(vd.requestInputs[i].name === 'chaircount' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter a chair count'; counter++; vd.errorR=true;
			}
			
			if(vd.requestInputs[i].name === 'chaircolor' && vd.requestInputs[i].value === ''){
				li[counter] = 'Please enter a chair color'; counter++; vd.errorR=true;
			}
		}

		if(vd.errorR){
			vd.util.stopDefault(evt);
			var no = li.length;
			var newUL = document.createElement('ul');
			newUL.id = "requestError";
			for(var j=0; j<no; j++){
				var newLi = document.createElement('li');
				newLi.appendChild(document.createTextNode(li[j]));
				newUL.appendChild(newLi);
			}
			vd.requestForm.parentNode.insertBefore(newUL, vd.requestForm);
		}
		vd.content.style.height="100%";
		var newHeight = vd.content.offsetHeight;
		vd.sidebar.style.height= (newHeight - 40 + 'px');
	},
	
	util : {
		configEvents : function() {
		  if (document.addEventListener) {
			this.addEvent = function(el, type, func, capture) { el.addEventListener(type, func, capture); };
			this.stopBubble = function(evt) { evt.stopPropagation(); };
			this.stopDefault = function(evt) { evt.preventDefault(); };
			this.findTarget = function(evt, targetNode, container) {
			 var currentNode = evt.target;
			 while (currentNode && currentNode !== container) {
			  if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
			  else { currentNode = currentNode.parentNode; }
			 };
			 return false;
			};
			this.removeEvent = function(el, type, func, capture) { el.removeEventListener(type, func, capture);}
		  }
		  
		  else if (document.attachEvent) {
		   this.addEvent = function(el, type, func) { el["e" + type + func] = func; el[type + func] = function() { el["e" + type + func] (window.event); }; el.attachEvent("on" + type, el[type + func]); };
		   this.stopBubble = function(evt) { evt.cancelBubble = true; };
		   this.stopDefault = function(evt) { evt.returnValue = false; };
		   this.findTarget = function(evt, targetNode, container) { var currentNode = evt.srcElement; 
			while (currentNode && currentNode !== container) {
			 if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
			 else { currentNode = currentNode.parentNode; }
			};
			return false;
		   };
		   this.removeEvent = function(el, type, func) { el["e" + type + func] = null; el[type + func] = null; el.detachEvent("on" + type, el[type + func]);}
		  }
		}
	}
};
vd.init();
