﻿// bigTarget.js - A jQuery Plugin
// Version 1.0.1
// Written by Leevi Graham - Technical Director - Newism Web Design & Development
// http://newism.com.au
// Notes: Tooltip code from fitted.js - http://www.trovster.com/lab/plugins/fitted/

// create closure
(function($) {
    
    // plugin definition
$.fn.bigTarget = function(options) {

        debug(this);
        // build main options before element iteration
        var opts = $.extend({}, $.fn.bigTarget.defaults, options);
        // iterate and reformat each matched element
        return this.each(function() {
            // set the anchor attributes
            var $a = $(this);
            var href = $a.attr('href');
            var title = $a.attr('title');
            // build element specific options
            var o = $.meta ? $.extend({}, opts, $a.data()) : opts;
            // update element styles
            $a.parents(o.clickZone)
				.hover(function() {
				    $h = $(this);
				    $h.addClass(o.hoverClass);
				    if (typeof o.title != 'undefined' && o.title === true && title != '') {
				        $h.attr('title', title);
				    }
				}, function() {

				    $h.removeClass(o.hoverClass);
				    if (typeof o.title != 'undefined' && o.title === true && title != '') {
				        $h.removeAttr('title');
				    }
				})
            // click
				.click(function() {
				    if (getSelectedText() == "") {
				        if ($a.is('[rel*=external]')) {
				            window.open(href);
				            return false;
				        }
				        else {
				            //$a.click(); $a.trigger('click');
				            window.location = href;
				        }
				    }
				});
        });
    };
    // private function for debugging
    function debug($obj) {
        if (window.console && window.console.log)
            window.console.log('bigTarget selection count: ' + $obj.size());
    };
    // get selected text
    function getSelectedText() {
        if (window.getSelection) {
            return window.getSelection().toString();
        }
        else if (document.getSelection) {
            return document.getSelection();
        }
        else if (document.selection) {
            return document.selection.createRange().text;
        }
    };
    // plugin defaults
    $.fn.bigTarget.defaults = {
        hoverClass: 'hover',
        clickZone: 'li:eq(0)',
        title: true
    };
    // end of closure
})(jQuery);
