// Droplicious v.3.0 Created May 21, 2009
// Copyright @2009 http://headfirstproductions.ca Author: Darren Terhune
// Contributors: Jan Sovak http://canada-jack.com,  Mason Meyer http://www.masonmeyer.com
// This software is licensed under the Creative Commons Attribution 2.5 Canada License 
// <http://creativecommons.org/licenses/by/2.5/ca//>

var dropliciousMenu = Class.create({

	// Properties
	showingUpDuration: 0.3,
	hidingDuration: 0.1,
	hideDelay: 0,

	initialize: function(){

		$$("a.drops").invoke('observe', 'mousemove', this.linkMouseOver.bind(this));
		$$("a.drops").invoke('observe', 'mouseout', this.linkMouseOut.bind(this));

		$$("ul.licious").invoke('observe', 'mousemove', this.submenuMouseOver.bind(this));
		$$("ul.licious").invoke('observe', 'mouseout', this.submenuMouseOut.bind(this));

	},

	// Default Effects
	// It's possible to set user's effects handlers
	// eg: myDropliciousInstance.showUpEffect = function(){ * user's effect * };
	showUpEffect: function(e, effectDuration){
		if(!e.visible()){
			new Effect.BlindDown(e, {
				duration: effectDuration,
				queue: {
					position: 'end',
					scope: e.identify(),
					limit: 2
				}
			});
		}
	},

	hidingEffect: function(e, effectDuration){
		new Effect.BlindUp(e, {
			duration: effectDuration,
			queue: {
				position: 'end',
				scope: e.identify(),
				limit: 2
			}
		});
	},

	// Mouse event handlers
	linkMouseOut: function(e){
		var dropElement = e.element().next();		
		if (dropElement && dropElement.hasClassName('active')){
			this.setDelayedHide(dropElement);
		}
	},

	linkMouseOver: function(e){
		var dropElement = e.element().next();
		// Additional check if something wrong with menu structure
		if(!dropElement){
			return;
		}

		if (!dropElement.hasClassName('hidding')){
			dropElement.removeClassName('waitingtohide');
		}

		if (!dropElement.hasClassName('active')){
			dropElement.addClassName('active');
			this.showUpEffect(dropElement, this.showingUpDuration);
		}
	},

	submenuMouseOut: function(e){
		var dropElement = e.findElement("ul");	
		if (dropElement && dropElement.hasClassName('active')){
			this.setDelayedHide(dropElement);
		}
	},

	submenuMouseOver: function(e){
		var dropElement = e.findElement("ul");	
		if (dropElement && !dropElement.hasClassName('hidding')){
			dropElement.removeClassName('waitingtohide');
		}
	},

	// Delayed  methods, needed for smooth subMenu hiding
	setDelayedHide: function(e){
		e.addClassName('waitingtohide')
		if(!e.hasClassName('hidding')){
			if (!e.hasClassName('hiddingtimerset')){	
				e.addClassName('hiddingtimerset');
				(function(obj, e){ obj.delayedHide(e); }).delay(this.hideDelay, this, e);
			}
		}
	},

	delayedHide: function(e){
		e.removeClassName('hiddingtimerset');
		if (e.hasClassName('waitingtohide')){
			this.hidingEffect(e, this.hidingDuration);
			e.addClassName('hidding');
			//Changed to Prototype's API manner
			(function(e){
				e.removeClassName('waitingtohide');
				e.removeClassName('hidding');
				e.removeClassName('active');
			}).delay(this.hidingDuration, e);

		}
	}

});

document.observe('dom:loaded', function() {
	new dropliciousMenu();
		
		$('submitContact').observe('click', function(event){ // <== RIGHT
		var host = getHost();
		var name = $('name').value;
		var title = $('title').value;
		var address = $('address').value;
		var city = $('city').value;
		var state = $('state').value;
		var zip = $('zip').value;
		var country = $('country').value;
		var email = $('email').value;
		
		if(!name){
			$('name').addClassName('warning');
			var error = 1;
		}else{
			$('name').removeClassName('warning');
		}
		
		if(!address){
			$('address').addClassName('warning');
			var error = 1;
		}else{
			$('address').removeClassName('warning');
		}
		
		if(!city){
			$('city').addClassName('warning');
			var error = 1;
		}else{
			$('city').removeClassName('warning');
		}
		
		if(!state){
			$('state').addClassName('warning');
			var error = 1;
		}else{
			$('state').removeClassName('warning');
		}
		
		if(!zip){
			$('zip').addClassName('warning');
			var error = 1;
		}else{
			$('zip').removeClassName('warning');
		}
		
		if(!country){
			$('country').addClassName('warning');
			var error = 1;
		}else{
			$('country').removeClassName('warning');
		}
		
		if(!email){
			$('email').addClassName('warning');
			var error = 1;
		}else{
			$('email').removeClassName('warning');
		}
		
		if(!error){
			new Ajax.Updater('contact_form', host+'/main/submit_contact', {
			  method: 'post',
			  parameters: {name: name, title: title, address: address, city: city, state: state, zip: zip, country: country, email: email}			 
			});
}

		
		
	});

	
})	
