/**
* 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
* @requires: jQuery v.1.2.6 or above
* 
* @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() {
						if($.fn.jquery < '1.2.6') {return;}
						
						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');
							
							/** fix for missing links / rickard */
							if( href != undefined )
							{
							
								/**
								* 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;
										}
									}
								);
							} // end fix / rickard
						}
					}
				);
			}
		});
		
		/**
		* Plugin Defaults
		*/
		$.fn.fitted.defaults = {
			'class' : {
				'container' : 'fitted',
				'hover' : 'hovered'
			},
			'title' : true,
			'status' : false
		};
	});
}
