$(document).ready(function(){
	var sRequiredMsg = '&laquo; Required';
	var sEmailMsg = '&laquo; Not a valid email address';
	var sPhoneMsg = '&laquo; Not a valid phone number';
	var sZipMsg = '&laquo; Not a valid zip code';
	var sErrorMsgClass = 'req_error';
	var sReqClass = 'req';

	// validation for forms.
	$('form').submit(function(){
		var bValid = true;

		$('.' + sErrorMsgClass).remove();

		$('li input, li select, li textarea').each(function(){
			if( $(this).val() == '' &&  $(this).parent().hasClass(sReqClass) ){
				$(this).addClass(sReqClass);
				$(this).after('<span class="' + sErrorMsgClass + '">' + sRequiredMsg + '</span>');
				bValid = false;
			} else if($(this).val() != ''){
				if( $(this).attr('id').search('email') > 0 && !isEmail( $(this).val() ) ){
					$(this).addClass(sReqClass);
					$(this).after('<span class="' + sErrorMsgClass + '">' + sEmailMsg + '</span>');
					bValid = false;
				} else if( $(this).attr('id').search('phone') > 0 && !isNumber( $(this).val(), 10 ) ){
					$(this).addClass(sReqClass);
					$(this).after('<span class="' + sErrorMsgClass + '">' + sPhoneMsg + '</span>');
					bValid = false;
				} else if( $(this).attr('id').search('zip') > 0 && !isNumber( $(this).val(), 5 ) ){
					$(this).addClass(sReqClass);
					$(this).after('<span class="' + sErrorMsgClass + '">' + sZipMsg + '</span>');
					bValid = false;
				} else {
					$(this).removeClass(sReqClass);
				}

			} else {
				$(this).removeClass(sReqClass);
			}
		});

		return bValid;
	});
	

	$('.grid tbody tr:odd').addClass('alt');
	$('.features_grid tbody tr:odd').addClass('alt');
	$('form label').append(':&nbsp;');
	$('li.req label').prepend('<em>*</em> ');

	$('#chk_all').click(function(){
		$('input[type="checkbox"]').attr('checked', $(this).attr('checked'));
	});

	// fun stuff for the alerts.
	$('.alert').bind('click', function(){
		$(this).stop().animate({ opacity: 0 }, 250).slideUp(500);
	}).bind('mouseenter', function(){
		$(this).stop().animate({ opacity: 0.5 }, 250);
	}).bind('mouseleave', function(){
		$(this).animate({ opacity: 1 }, 250);
	}).attr('title', 'Click here to hide this message.');

	// thumbnail tooltip.
	xOffset = -15;
	yOffset = 20;		

	$("a[rel*=tooltip]").hover(function(e){
		var src = $(this).attr('alt');
		var path = src != '' ? "?path=" + src : '';
		
		$("body").append("<div id='tooltip'><img src='/images/thumb.php" + path + "' /></div>");
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");		
	}, function(){
		$("#tooltip").remove();
	});	
	$("a[rel*=tooltip]").mousemove(function(e){
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
	});		
});

function isEmail(sInput) {
	return sInput.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1;
}
function isNumber(sInput, sLength) {
	return sInput.replace(/[^0-9]/g, '').length == sLength;
}
