var fadetime = 500;
var timer;
$(document).ready(function(){
	//dropdowns
	$('#main-nav > ul > li > a').hover(openMenu, startClose);
	$('#main-nav .submenu .has-subpages').hover(openSubmenu, startSubClose);
	$('.submenu').hover(stopClose, startClose);
	$('.subsubmenu').hover(stopClose, startSubClose);
	
	if (!Modernizr.input.placeholder){
		$(':text, textarea').each(setDefault);
		$(':text, textarea').focus(clearDefault);
		$(':text, textarea').blur(setDefault);
		$('form').submit(clearPlaceholders);
	}	
	$('#contact-form').submit(validateContact);
});
//Opens a dropdown menu
function openMenu(){
	stopClose();
	$('.submenu').hide();
	$(this).next('.submenu').show();
}
//starts closing a dropdown
function startClose(){
	timer = setTimeout(closeMenu, fadetime);
}
//starts closing a submenu
function startSubClose(){
	timer = setTimeout(closeSubmenu, fadetime);
}
//stops the clock on closing a dropdown
function stopClose(){
	clearTimeout(timer);
}
//closes a dropdown
function closeMenu(){
	$('.submenu').hide();
}
//Opens a submenu
function openSubmenu(){
	stopClose();
	$('.subsubmenu').hide();
	$(this).next('.subsubmenu').show();
}
//closes a submenu
function closeSubmenu(){
	$('.subsubmenu').hide();
}
//sets the default text of a text, placeholder polyfill
function setDefault(){
	if ($(this).attr('placeholder') != null){
		if ($(this).val() == '' || $(this).val() == $(this).attr('placeholder')){
			$(this).val($(this).attr('placeholder'));
			$(this).addClass('default-text');
		}
	}
}
//clears the default text when focused, placeholder polyfill
function clearDefault(){
	if ($(this).attr('placeholder') != null){
		if ($(this).val() == $(this).attr('placeholder')){
			$(this).val('');
			$(this).removeClass('default-text');
		}
	}
}
//clear placeholders
function clearPlaceholders(){
	$(this).find('input').each(function(){
		if ($(this).val() == $(this).attr('placeholder')){
			$(this).val('');
		}
	});
}
//validates a contact form
function validateContact(){	
	var message = '';
	$('.error').removeClass('error');
	$('#error-message').html('');
	if (!$('#recipient').val() != ''){
		message += 'Please include a recipient<br />';
		$('#recipient').addClass('error');
	}
	if ($('#firstname').val() == ''){
		message += 'Please include your first name<br />';
		$('#firstname').addClass('error');
	}
	if ($('#lastname').val() == ''){
		message += 'Please include your last name<br />';
		$('#lastname').addClass('error');
	}
	if ($('#email').val() == ''){
		message += 'Please include your email address<br />';
		$('#email').addClass('error');
	}else if (!validateEmail($('#email').val())){
		message += 'Please provide a valid email address<br />';
		$('#email').addClass('error');
	}

	if (message == ''){		
		return true;
	}else{
		$('#error-message').html(message);
		return false;
	}	
}
//validates an email using unicode characters
function validateEmail(email){
	var emailreg = /^((([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/; 
	if (!emailreg.exec(email))
		return false;
	else
		return true;
}
