/**
* Fitted: a jQuery Plugin
* @author: Trevor Morris (trovster)
* @url: http://www.trovster.com/lab/code/plugins/jquery.fitted.js
* @documentation: http://www.trovster.com/lab/plugins/fitted/
* @published: 11/09/2008
* @updated: 29/09/2008
* @license Creative Commons Attribution Non-Commercial Share Alike 3.0 Licence
*		   http://creativecommons.org/licenses/by-nc-sa/3.0/
* @notes: 
* Also see BigTarget by Leevi Graham - http://newism.com.au/blog/post/58/bigtarget-js-increasing-the-size-of-clickable-targets/ 
*
*/
if(typeof jQuery != 'undefined') {
	jQuery(function($) {
		$.fn.extend({
			fitted: function(options) {
				var settings = $.extend({}, $.fn.fitted.defaults, options);
							
				return this.each(
					function() {
						
						var $t = $(this);
						var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings;
						
						if($t.find(':has(a)')) {
							/**
							* Find the first Anchor
							* @var object $a
							*/
							var $a = $t.find('a:first');
							
							/**
							* Get the Anchor Attributes
							*/
							var href = $a.attr('href');
							var title = $a.attr('title');
							
							/**
							* Setup the Container
							* Add the 'container' class defined in settings
							* @event hover
							* @event click
							*/
							$t.addClass(o['class']['container']).hover(
								function(){
									/**
									* Hovered Element
									*/
									$h = $(this);
									
									/**
									* Add the 'hover' class defined in settings
									*/
									$h.addClass(o['class']['hover']);
									
									/**
									* Add the Title Attribute if the option is set, and it's not empty
									*/
									if(typeof o['title'] != 'undefined' && o['title']===true && title != '') {
										$h.attr('title',title);
									}
																		
									/**
									* Set the Status bar string if the option is set
									*/
									if(typeof o['status'] != 'undefined' && o['status']===true) {
										if($.browser.safari) {
											/**
											* Safari Formatted Status bar string
											*/
											window.status = 'Go to "' + href + '"';
										}
										else {
											/**
											* Default Formatted Status bar string
											*/
											window.status = href;
										}
									}
								},
								function(){
									/**
									* "un"-hovered Element
									*/
									$h = $(this);
									
									/**
									* Remove the Title Attribute if it was set by the Plugin
									*/
									if(typeof o['title'] != 'undefined' && o['title']===true && title != '') {
										$h.removeAttr('title');
									}
									
									/**
									* Remove the 'hover' class defined in settings
									*/
									$h.removeClass(o['class']['hover']);
									
									/**
									* Remove the Status bar string
									*/
									window.status = '';
								}
							).click(
								function(){
									/**
									* Clicked!
									* The Container has been Clicked
									* Trigger the Anchor / Follow the Link
									*/
									if($a.is('[rel*=external]')){
										window.open($href);
										return false;
									}
									else {
										//$a.click(); $a.trigger('click');
										window.location = href;
									}
								}
							);
						}
					}
				);
			}
		});
		
		/**
		* Plugin Defaults
		*/
		$.fn.fitted.defaults = {
			'class' : {
				'container' : 'fitted',
				'hover' : 'hovered'
			},
			'title' : true,
			'status' : false
		};
	});
}