var dropliciousShowingUpDuration = 0.3;
var dropliciousHidingDuration = 0.1;
var dropliciousHideDelay = 0.1;

function dropliciousShowingUpEffect(dEl){
	 if(!Element.visible(dEl))
	new Effect.BlindDown( $(dEl),  { duration: dropliciousShowingUpDuration, queue: {position: 'end', scope: dEl.id, limit:2} } );
}
function dropliciousHidingEffect(dEl){
	new Effect.BlindUp( $(dEl),  { duration: dropliciousHidingDuration, queue: {position: 'end', scope: dEl.id, limit:2 } });
}
function setDelayedHide(id){
	$(id).addClassName('waitingtohide')
	if(!$(id).hasClassName('hidding')){
		if (!$(id).hasClassName('hiddingtimerset')){	
			$(id).addClassName('hiddingtimerset');
			setTimeout("delayedHide('" + id + "')", dropliciousHideDelay * 1000);
		}
	}
}
function delayedHide(id){
	var dropElement = $(id);
	dropElement.removeClassName('hiddingtimerset');
	if ($(dropElement).hasClassName('waitingtohide')){
		dropliciousHidingEffect(dropElement);
		$(dropElement).addClassName('hidding');
		setTimeout("finishedHiding('" + id + "')",dropliciousHidingDuration * 1000);
	}
}
function finishedHiding(id){
	var dropElement = $(id);
	dropElement.removeClassName('waitingtohide');
	dropElement.removeClassName('hidding');
	dropElement.removeClassName('active');
}
function linkMouseOut(id){
	var currentElement = Event.element(id).id;
	var currentElement = $(currentElement);
	var dropElement = currentElement.next();		
	if ($(dropElement).hasClassName('active')){
		setDelayedHide($(dropElement).id);
	}
}
function linkMouseOver(id){
	var currentElement = Event.element(id).id;
	var currentElement = $(currentElement);
	var dropElement = currentElement.next();	
	if (!$(dropElement).hasClassName('hidding')){
		dropElement.removeClassName('waitingtohide');
	}
	if (!$(dropElement).hasClassName('active')){
		dropElement.addClassName('active');
		dropliciousShowingUpEffect(dropElement);
	}
}
function submenuMouseOut(id){
	var currentElement = Event.findElement(id,'ul');
	var currentElement = $(currentElement);
	var dropElement = currentElement;	
	if ($(dropElement).hasClassName('active')){
		setDelayedHide($(dropElement).id);
	}
}
function submenuMouseOver(id){
	var currentElement = Event.findElement(id,'ul');
	var currentElement = $(currentElement);
	var dropElement = currentElement;
	if (!$(dropElement).hasClassName('hidding')){
		dropElement.removeClassName('waitingtohide');
	}
}
document.observe('dom:loaded', function() {
	var dropDowns = $$('a.drops');	
	dropDowns.each(function(name) {
		name.observe('mousemove', linkMouseOver.bindAsEventListener(this));
		name.observe('mouseout', linkMouseOut.bindAsEventListener(this));
	})
	var dropDowns = $$('ul.scriptaculously');
	dropDowns.each(function(name){
		name.observe('mousemove', submenuMouseOver.bindAsEventListener(this));
		name.observe('mouseout', submenuMouseOut.bindAsEventListener(this));
	})
})

function notEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function isNumeric(elem, helperMsg){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphabet(elem, helperMsg){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphanumeric(elem, helperMsg){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function lengthRestriction(elem, min, max){
	var uInput = elem.value;
	if(uInput.length >= min && uInput.length <= max){
		return true;
	}else{
		alert("Please enter between " +min+ " and " +max+ " characters");
		elem.focus();
		return false;
	}
}

function madeSelection(elem, helperMsg){
	if(elem.value == "Please Choose"){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

function emailValidator(elem, helperMsg){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function validate_form(){
	// Make quick references to our fields
	var firstname = document.getElementById('sales_lead_first');
	var lastname = document.getElementById('sales_lead_last');
	var email = document.getElementById('sales_lead_email');
	var phone = document.getElementById('sales_lead_phone');
	
	// Check each input in the order that it appears in the form!
	if(notEmpty(firstname, "Please enter your first name")){
		if(notEmpty(lastname, "Please enter your last name")){
			if(notEmpty(email, "Please enter your email")){
				if(emailValidator(email, "Please enter a valid email")){
					if(notEmpty(phone, "Please enter your phone number")){
						return true;
					}
				}
			}
		}
	}
	return false;
}

function validate_short_form(){
	// Make quick references to our fields
	var fullname = document.getElementById('sales_lead_full_name');
	var email = document.getElementById('sales_lead_email');
	var phone = document.getElementById('sales_lead_phone');
	
	// Check each input in the order that it appears in the form!
	if(notEmpty(fullname, "Please enter your name")){
		if(notEmpty(email, "Please enter your email")){
			if(emailValidator(email, "Please enter a valid email")){
				if(notEmpty(phone, "Please enter your phone number")){
					return true;
				}
			}
		}
	}
	return false;
}