
EI.namespace('VAB');


// Solves problem with event bubbling and mouseover/out
// 
// Requires: Prototype.js 1.5+
// 
// Adds Element.onmouseenter & Element.onmouseleave
// 
Element.addMethods({
		onmouseenter: function(element,observer) {
				element = $(element);
				element.observe('mouseover',function(evt,currentTarget) {
					var relatedTarget = $(evt.relatedTarget || evt.fromElement);
					if (relatedTarget) {
						if( relatedTarget!=currentTarget && relatedTarget.childOf(currentTarget)==false ) {
								observer();
						}	
					}
				}.bindAsEventListener({},element));
				return element;
		},
		onmouseleave: function(element,observer) {
				element = $(element);
				element.observe('mouseout',function(evt,currentTarget) {
					var relatedTarget = $(evt.relatedTarget || evt.toElement);
					if (relatedTarget) {
						if( relatedTarget!=currentTarget && relatedTarget.childOf(currentTarget)==false ) {
								observer();
						}	
					}
				}.bindAsEventListener({},element));
				return element;
		}
});

EI.namespace("FormHandler");

EI.FormHandler.focus = function() {
	if (this.value == this.defaultValue) {
		this.value = '';
	}
}

EI.FormHandler.blur = function() {
	if (this.value == '') {
		this.value = this.defaultValue;
	}
}

EI.FormHandler.clearDefaultValues = function() {
	var formElements = this.getElements();
	formElements.each(function(elm) {
		if (elm.type != 'submit') {
			if (elm.value == elm.defaultValue) {
				elm.value = ""
			}
		}
	});
}

EI.FormHandler.setup = function() {
	var quickContactForm = $('quick-contact');
	
	if(quickContactForm) {
		// This handles having the form names inside all input and textarea fields, selects
		// the whole label on focus and if the field is empty re populates the label
		var formElements = quickContactForm.getElements();
		formElements.each(function(elm) {
			if(elm.type != 'submit') {
				Event.stopObserving(elm, 'focus', EI.FormHandler.focus.bind(elm));
				Event.observe(elm, 'focus', EI.FormHandler.focus.bind(elm));
		
				Event.stopObserving(elm, 'blur', EI.FormHandler.blur.bind(elm));
				Event.observe(elm, 'blur', EI.FormHandler.blur.bind(elm));
			}
		});

		// Remove default values on form inputs
		Event.observe(quickContactForm, 'submit', EI.FormHandler.clearDefaultValues.bind(quickContactForm));
	}
}