﻿// 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);

