﻿/*
* IFBF jQuery Extensions
* Contact: dmoore@ifbf.org
*/

(function($) {
    $.fn.createTabs = function() {
        var tabContainers = $(this).children('div');
        var mainContainer = $(this);
        tabContainers.hide().filter(':first').show();

        $(mainContainer).find('ul.tabNavigation a').click(function() {
            tabContainers.hide();
            tabContainers.filter(this.hash).show();
            $(mainContainer).find('ul.tabNavigation a').removeClass('selected');        
            $(this).addClass('selected');
            return false;
        }).filter(':first').click();
    }
})(jQuery);


function generateSprites(parent, selectedPrefix, setActive, hoverSpeed, style) {
    // throw the parent object's class into a variable
    var parentClass = $(parent).attr("class");

    // start a loop that cycles through each of the li elements inside the parent element
    $(parent).children("li").each(function() {
        // create a few variables that we'll need during this function:
        // myClass = the class of the object we're currently inspecting
        // current = what the selected class should look like for the parent of the object we're currently inspecting
        var myClass = ($(this).attr("class"))
        var current = parent.substring(1) + " current-" + ($(this).attr("class"));

        // turn on nav events for element this loop identifies
        attachNavEvents(parent, myClass, setActive, hoverSpeed, style);

        // let's hide the CSS-defined background image, but only if this isn't the currently-selected item
        if (parentClass != current) {
            $(this).children("a").css({ backgroundImage: "none" });
        }

    });
}


function attachNavEvents(parent, myClass, setActive, hoverSpeed, style) {
    var test = parent.toString().substr(1, parent.toString().length);

    $(parent + " ." + myClass).mouseover(function() {
        // create pseudo-link
        $(this).append('<div class="' + test + '-' + myClass + '"></div>');
        // either slide or fade, depending on the style value
        if (style == "slide") {
            // slide down the pseudo-link
            $("div." + test + "-" + myClass).css({ display: "none" }).slideDown(hoverSpeed);
        } else {
            // fade in the pseudo-link
            $("div." + test + "-" + myClass).css({ display: "none" }).fadeIn(hoverSpeed);
        }
    }).mouseout(function() {
        // either slide or fade, depending on the style value
        if (style == "slide") {
            // slide up & destroy pseudo-link
            $("div." + test + "-" + myClass).slideUp(hoverSpeed, function() {
                $(this).remove();
            });
        } else {
            // fade out & destroy pseudo-link
            $("div." + test + "-" + myClass).fadeOut(hoverSpeed, function() {
                $(this).remove();
            });
        }
    });


    // we only want to check the mousedown/up events if the CSS exists for :active states
    // if so, let's apply our selective filtering to undo the events above
    if (setActive) {
        $(parent + " ." + myClass).mousedown(function() {
            $("div.nav-" + myClass).attr("class", "nav-" + myClass + "-click");
        }).mouseup(function() {
            $("div.nav-" + myClass + "-click").attr("class", "nav-" + myClass);
        });
    }
}




function initMenu(pageID) {

    var pageFound = false;
    
    $('#vertmenu ul').hide();
    $('#vertmenu li a').click(
    function() {
        if ($(this).next().children("li").size() == 1) {
            window.location = $(this).next().children("li").children("a").attr("href");
        }
        else {
            var checkElement = $(this).next();
            if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
                return false;
            }
            if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
                $('#vertmenu ul:visible').slideUp('normal');
                checkElement.slideDown('normal');
                $("#vertmenu li a").removeClass("activeHeading");
                $(this).addClass("activeHeading");
                return false;
            }
        }
    }
    );

    $("#vertmenu ul").each(
            function() {
                if (pageID != "#" && $(this).find(pageID).size() > 0 && pageFound == false) {
                    pageFound = true;

                    $(this).find(pageID + " > a").addClass("selectedNavItem");

                    if (!$(this).is(':visible')) {
                        $('#vertmenu ul:visible').slideUp('normal');

                        if ($(this).children("li").size() > 1) {
                            $(this).show();
                        }

                        $(this).parent().children("a").addClass("activeHeading");
                    }
                }
            }
        );

    if (pageFound == false) {
        if ($("#vertmenu").find(pageID).size() > 0) {
            pageFound = true;
            $("#vertmenu").find(pageID).children("a").addClass("activeHeading");
        }
        else {
            $('#vertmenu ul:first').show();
            $('#vertmenu ul:first').parent().children("a").addClass("activeHeading");
        }
    }
}


/**
* Slideshow Lite plugin for jQuery
*
* v0.5.2
*
* Copyright (c) 2009 Fred Wu
*
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*/

/**
* Configuration options:
*
* pauseSeconds  integer  number of seconds between each photo to be displayed
* width         integer  width of the slideshow, in pixels
* height        integer  height of the slideshow, in pixels
* caption       boolean  display photo caption?
* cssClass      string   name of the CSS class, defaults to 'slideshowlite'
*/

(function($) {
    $.fn.slideshow = function(options) {

        var defaults = {
            pauseSeconds: 2,
            width: 468,
            height: 120,
            caption: true,
            cssClass: 'slideshowlite'
        };

        var options = $.extend(defaults, options);

        // ----------------------------------------
        // slideshow objects and variables
        // ----------------------------------------

        var target = this;
        var items = $(target).children("a");
        var instance;

        // ----------------------------------------
        // some mandontory styling
        // ----------------------------------------

        if (!$(this).hasClass(options.cssClass)) $(this).addClass(options.cssClass);

        $(this).css({
            width: options.width + "px",
            height: options.height + "px"
        });

        // ----------------------------------------
        // create anchor links to make the structure simpler for manupilation
        // ----------------------------------------

        $(this).children("img").wrap(document.createElement("a"));
        $(this).children("a").attr("target", "blank");

        // ----------------------------------------
        // add item sequence markups
        // ----------------------------------------

        var i = 1;
        $(this).children("a").each(function() {
            $(this).attr("rel", i++);
        });

        // ----------------------------------------
        // create pagination and caption
        // ----------------------------------------

        $(this).append("<ul></ul>");
        $(this).append("<ol></ol>");
        var pagination = $(this).children("ul");
        var caption = $(this).children("ol");

        var i = 1;
        var j = 0;
        $(this).children("a").each(function() {
            pagination.append("<li><a href=\"#\">" + i++ + "</a></li>");
            caption.append("<li>" + $("#" + $(target).attr("id") + " img:nth(" + j++ + ")").attr("alt") + "</li>");
        });
        pagination.fadeTo(0, 0.8);
        caption.fadeTo(0, 0.6);
        caption.hide();

        // ----------------------------------------
        // shortcuts
        // ----------------------------------------

        var firstItem = $(target).children("a:first");
        var lastItem = $(target).children("a:last");
        var currentItem = firstItem;

        // ----------------------------------------
        // pagination highlight
        // ----------------------------------------

        var paginationHighlight = function(sequence) {
            pagination.children("li").children("a").removeClass("current");
            pagination.children("li").children("a:nth(" + sequence + ")").addClass("current");
        }

        // ----------------------------------------
        // caption
        // ----------------------------------------

        var showCaption = function(sequence) {
            caption.show();
            caption.children("li").hide();
            caption.children("li:nth(" + sequence + ")").fadeIn();
        }

        // ----------------------------------------
        // slideshow logic
        // ----------------------------------------

        var makeSlideshow = function() {

            // pagination click
            pagination.children("li").children("a").click(function() {
                if (!$(this).hasClass("current")) {
                    // select the current item after the pagination click
                    currentItem = $(target).children("a:nth(" + ($(this).text() - 1) + ")");

                    currentItem.show();
                    startSlideshow();
                }
            });

            // pagination highlight
            paginationHighlight(currentItem.attr("rel") - 1);

            // show caption
            if (options.caption == true) {
                showCaption(currentItem.attr("rel") - 1);
            }

            // show the current slide
            currentItem.fadeIn(function() {
                $(target).children("a").hide();
                $(this).show().css("z-index", 1);
            });

            // prepare for the next slide
            // determines the next item (or we need to rewind to the first item?)
            if (currentItem.children("img").attr("src") == lastItem.children("img").attr("src")) {
                currentItem = firstItem;
                currentItem.css("z-index", 2);
            }
            else {
                currentItem = currentItem.next();
            }
        };

        var startSlideshow = function() {
            clearInterval(instance);
            makeSlideshow();
            instance = setInterval(makeSlideshow, options.pauseSeconds * 1000);
        };

        // ----------------------------------------
        // start the slideshow!
        // ----------------------------------------

        startSlideshow();
    };
})(jQuery);



/*
FAQ v1.1 Plugin
    
A dynamic FAQ builder using the power of jQuery.

Updated December 3rd, 2008 
- Changed the span to a div - Symantically correct
- Added an incrementor in case of a duplicate header name
- Changed the regular expression to anything other than alphanumeric
- Corrected the syntax to accept the faqHeader variable

Example HTML Syntax:
--------------------
<div id="faq">
<h2>Title 1</h2>
<div>Some content</div>
<h2>Title 2</h2>
<div>Some content</div>
</div>

Example Script Syntax:
--------------------
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript" src="jquery.faq.js"></script>    
<script type="text/javascript" >
$().ready(function() {
$('#faq').makeFAQ({
indexTitle: "My Index",
displayIndex: true,
faqHeader: "h2"
});
});
</script>

Visit http://www.dscoduc.com for questions, comments, issues.
Creative Commons Attribution-Share Alike
*/

(function($) {
    $.fn.makeFAQ = function(options) {
        var defaults = {
            indexTitle: "Index",    // Change to whatever you want to be displayed
            faqHeader: ":header",   // default grabs any header element - h1,h2, etc...
            displayIndex: true      // Display Index
        };
        var options = $.extend(defaults, options);

        return this.each(function() {
            // load the parent object only once
            var $obj = $(this);

            // wrap parent in faqRoot div
            $obj.wrap("<div id='faqRoot'></div>");

            // Add index div
            if (options.displayIndex) {
                $obj.before("<div id='faqindex'><h2>" + options.indexTitle + "</h2><ul></ul></div>");
            };

            // Get header children using the obj ID
            var $faqEntries = $obj.children(options.faqHeader);
            // counting integer - ensures unique id names
            var i = 0;
            // enumerate through each entry and perform several tasks
            $faqEntries.each(function() {
                // load object only once
                var $entry = $(this);

                // Get entry name
                var entryName = $entry.text();
                // strip whitespaces and special characters
                var entryNameSafe = entryName.replace(/\W/g, "") + i;
                // Increment counter
                i++;

                // build index line for entry
                var itemHTML = "<li><a id='" + entryNameSafe.toString() + "Index' href='#" + entryNameSafe.toString() + "' >" + entryName + "</a></li>";
                // append the index line to the index
                $('#faqindex ul').append(itemHTML);

                // add click event for index entry
                if (options.displayIndex) {
                    $('#' + entryNameSafe.toString() + 'Index').click(function() {
                        // slide down the selected index before jumping to the bookmark    
                        $('#' + entryNameSafe.toString()).next('span').slideDown('fast');
                        // make sure it gets the faqopened class
                        $('#' + entryNameSafe.toString()).addClass('faqopened');
                    });
                };

                // add class to faq entry content
                $entry.next("div").addClass('faqcontent');

                // add title, name and id to entry
                $entry.attr({
                    title: "Click to expand/collapse",
                    name: entryNameSafe,
                    id: entryNameSafe
                })
                // add class
                    .addClass("faqclosed")

                // Add click event to entry
                    .click(function() {
                        $entry.next('div').slideToggle('fast');
                        $entry.toggleClass('faqopened');
                    })
                // Collapse the span tag of the entry
                        .next('div').css({
                            display: "none"
                        });
            }); // end enumeration of each faq entry

        }); // end this each
    }; // end function
})(jQuery);


/* 
* Auto Expanding Text Area (1.2.2)
* by Chrys Bader (www.chrysbader.com)
* chrysb@gmail.com
*
* Special thanks to:
* Jake Chapa - jake@hybridstudio.com
* John Resig - jeresig@gmail.com
*
* Copyright (c) 2008 Chrys Bader (www.chrysbader.com)
* Licensed under the GPL (GPL-LICENSE.txt) license. 
*
*
* NOTE: This script requires jQuery to work.  Download jQuery at www.jquery.com
*
*/

(function(jQuery) {

    var self = null;

    jQuery.fn.autogrow = function(o) {
        return this.each(function() {
            new jQuery.autogrow(this, o);
        });
    };


    /**
    * The autogrow object.
    *
    * @constructor
    * @name jQuery.autogrow
    * @param Object e The textarea to create the autogrow for.
    * @param Hash o A set of key/value pairs to set as configuration properties.
    * @cat Plugins/autogrow
    */

    jQuery.autogrow = function(e, o) {
        this.options = o || {};
        this.dummy = null;
        this.interval = null;
        this.line_height = this.options.lineHeight || parseInt(jQuery(e).css('line-height'));
        this.min_height = this.options.minHeight || parseInt(jQuery(e).css('min-height'));
        this.max_height = this.options.maxHeight || parseInt(jQuery(e).css('max-height')); ;
        this.textarea = jQuery(e);

        if (this.line_height == NaN)
            this.line_height = 0;

        // Only one textarea activated at a time, the one being used
        this.init();
    };

    jQuery.autogrow.fn = jQuery.autogrow.prototype = {
        autogrow: '1.2.2'
    };

    jQuery.autogrow.fn.extend = jQuery.autogrow.extend = jQuery.extend;

    jQuery.autogrow.fn.extend({

        init: function() {
            var self = this;
            this.textarea.css({ overflow: 'hidden', display: 'block' });
            this.textarea.bind('focus', function() { self.startExpand() }).bind('blur', function() { self.stopExpand() });
            this.checkExpand();
        },

        startExpand: function() {
            var self = this;
            this.interval = window.setInterval(function() { self.checkExpand() }, 400);
        },

        stopExpand: function() {
            clearInterval(this.interval);
        },

        checkExpand: function() {

            if (this.dummy == null) {
                this.dummy = jQuery('<div></div>');
                this.dummy.css({
                    'font-size': this.textarea.css('font-size'),
                    'font-family': this.textarea.css('font-family'),
                    'width': this.textarea.css('width'),
                    'padding': this.textarea.css('padding'),
                    'line-height': this.line_height + 'px',
                    'overflow-x': 'hidden',
                    'position': 'absolute',
                    'top': 0,
                    'left': -9999
                }).appendTo('body');
            }

            // Strip HTML tags
            var html = this.textarea.val().replace(/(<|>)/g, '');

            // IE is different, as per usual
            if ($.browser.msie) {
                html = html.replace(/\n/g, '<BR>new');
            }
            else {
                html = html.replace(/\n/g, '<br>new');
            }

            if (this.dummy.html() != html) {
                this.dummy.html(html);

                if (this.max_height > 0 && (this.dummy.height() + this.line_height > this.max_height)) {
                    this.textarea.css('overflow-y', 'auto');
                }
                else {
                    this.textarea.css('overflow-y', 'hidden');
                    if (this.textarea.height() < this.dummy.height() + this.line_height || (this.dummy.height() < this.textarea.height())) {
                        this.textarea.animate({ height: (this.dummy.height() + this.line_height) + 'px' }, 100);
                    }
                }
            }
        }

    });
})(jQuery);

/*
* jquery.qtip. The jQuery tooltip plugin
*
* Copyright (c) 2009 Craig Thompson
* http://craigsworks.com
*
* Licensed under MIT
* http://www.opensource.org/licenses/mit-license.php
*
* Launch  : February 2009
* Version : 1.0.0-rc3
* Released: Tuesday 12th May, 2009 - 00:00
* Debug: jquery.qtip.debug.js
*/
(function(f) { f.fn.qtip = function(B, u) { var y, t, A, s, x, w, v, z; if (typeof B == "string") { if (typeof f(this).data("qtip") !== "object") { f.fn.qtip.log.error.call(self, 1, f.fn.qtip.constants.NO_TOOLTIP_PRESENT, false) } if (B == "api") { return f(this).data("qtip").interfaces[f(this).data("qtip").current] } else { if (B == "interfaces") { return f(this).data("qtip").interfaces } } } else { if (!B) { B = {} } if (typeof B.content !== "object" || (B.content.jquery && B.content.length > 0)) { B.content = { text: B.content} } if (typeof B.content.title !== "object") { B.content.title = { text: B.content.title} } if (typeof B.position !== "object") { B.position = { corner: B.position} } if (typeof B.position.corner !== "object") { B.position.corner = { target: B.position.corner, tooltip: B.position.corner} } if (typeof B.show !== "object") { B.show = { when: B.show} } if (typeof B.show.when !== "object") { B.show.when = { event: B.show.when} } if (typeof B.show.effect !== "object") { B.show.effect = { type: B.show.effect} } if (typeof B.hide !== "object") { B.hide = { when: B.hide} } if (typeof B.hide.when !== "object") { B.hide.when = { event: B.hide.when} } if (typeof B.hide.effect !== "object") { B.hide.effect = { type: B.hide.effect} } if (typeof B.style !== "object") { B.style = { name: B.style} } B.style = c(B.style); s = f.extend(true, {}, f.fn.qtip.defaults, B); s.style = a.call({ options: s }, s.style); s.user = f.extend(true, {}, B) } return f(this).each(function() { if (typeof B == "string") { w = B.toLowerCase(); A = f(this).qtip("interfaces"); if (typeof A == "object") { if (u === true && w == "destroy") { while (A.length > 0) { A[A.length - 1].destroy() } } else { if (u !== true) { A = [f(this).qtip("api")] } for (y = 0; y < A.length; y++) { if (w == "destroy") { A[y].destroy() } else { if (A[y].status.rendered === true) { if (w == "show") { A[y].show() } else { if (w == "hide") { A[y].hide() } else { if (w == "focus") { A[y].focus() } else { if (w == "disable") { A[y].disable(true) } else { if (w == "enable") { A[y].disable(false) } } } } } } } } } } } else { v = f.extend(true, {}, s); v.hide.effect.length = s.hide.effect.length; v.show.effect.length = s.show.effect.length; if (v.position.container === false) { v.position.container = f(document.body) } if (v.position.target === false) { v.position.target = f(this) } if (v.show.when.target === false) { v.show.when.target = f(this) } if (v.hide.when.target === false) { v.hide.when.target = f(this) } t = f.fn.qtip.interfaces.length; for (y = 0; y < t; y++) { if (typeof f.fn.qtip.interfaces[y] == "undefined") { t = y; break } } x = new d(f(this), v, t); f.fn.qtip.interfaces[t] = x; if (typeof f(this).data("qtip") == "object") { if (typeof f(this).attr("qtip") === "undefined") { f(this).data("qtip").current = f(this).data("qtip").interfaces.length } f(this).data("qtip").interfaces.push(x) } else { f(this).data("qtip", { current: 0, interfaces: [x] }) } if (v.content.prerender === false && v.show.when.event !== false && v.show.ready !== true) { v.show.when.target.bind(v.show.when.event + ".qtip-" + t + "-create", { qtip: t }, function(C) { z = f.fn.qtip.interfaces[C.data.qtip]; z.options.show.when.target.unbind(z.options.show.when.event + ".qtip-" + C.data.qtip + "-create"); z.cache.mouse = { x: C.pageX, y: C.pageY }; p.call(z); z.options.show.when.target.trigger(z.options.show.when.event) }) } else { x.cache.mouse = { x: v.show.when.target.offset().left, y: v.show.when.target.offset().top }; p.call(x) } } }) }; function d(u, t, v) { var s = this; s.id = v; s.options = t; s.status = { animated: false, rendered: false, disabled: false, focused: false }; s.elements = { target: u.addClass(s.options.style.classes.target), tooltip: null, wrapper: null, content: null, contentWrapper: null, title: null, button: null, tip: null, bgiframe: null }; s.cache = { mouse: {}, position: {}, toggle: 0 }; s.timers = {}; f.extend(s, s.options.api, { show: function(y) { var x, z; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "show") } if (s.elements.tooltip.css("display") !== "none") { return s } s.elements.tooltip.stop(true, false); x = s.beforeShow.call(s, y); if (x === false) { return s } function w() { if (s.options.position.type !== "static") { s.focus() } s.onShow.call(s, y); if (f.browser.msie) { s.elements.tooltip.get(0).style.removeAttribute("filter") } } s.cache.toggle = 1; if (s.options.position.type !== "static") { s.updatePosition(y, (s.options.show.effect.length > 0)) } if (typeof s.options.show.solo == "object") { z = f(s.options.show.solo) } else { if (s.options.show.solo === true) { z = f("div.qtip").not(s.elements.tooltip) } } if (z) { z.each(function() { if (f(this).qtip("api").status.rendered === true) { f(this).qtip("api").hide() } }) } if (typeof s.options.show.effect.type == "function") { s.options.show.effect.type.call(s.elements.tooltip, s.options.show.effect.length); s.elements.tooltip.queue(function() { w(); f(this).dequeue() }) } else { switch (s.options.show.effect.type.toLowerCase()) { case "fade": s.elements.tooltip.fadeIn(s.options.show.effect.length, w); break; case "slide": s.elements.tooltip.slideDown(s.options.show.effect.length, function() { w(); if (s.options.position.type !== "static") { s.updatePosition(y, true) } }); break; case "grow": s.elements.tooltip.show(s.options.show.effect.length, w); break; default: s.elements.tooltip.show(null, w); break } s.elements.tooltip.addClass(s.options.style.classes.active) } return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_SHOWN, "show") }, hide: function(y) { var x; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "hide") } else { if (s.elements.tooltip.css("display") === "none") { return s } } clearTimeout(s.timers.show); s.elements.tooltip.stop(true, false); x = s.beforeHide.call(s, y); if (x === false) { return s } function w() { s.onHide.call(s, y) } s.cache.toggle = 0; if (typeof s.options.hide.effect.type == "function") { s.options.hide.effect.type.call(s.elements.tooltip, s.options.hide.effect.length); s.elements.tooltip.queue(function() { w(); f(this).dequeue() }) } else { switch (s.options.hide.effect.type.toLowerCase()) { case "fade": s.elements.tooltip.fadeOut(s.options.hide.effect.length, w); break; case "slide": s.elements.tooltip.slideUp(s.options.hide.effect.length, w); break; case "grow": s.elements.tooltip.hide(s.options.hide.effect.length, w); break; default: s.elements.tooltip.hide(null, w); break } s.elements.tooltip.removeClass(s.options.style.classes.active) } return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_HIDDEN, "hide") }, updatePosition: function(w, x) { var C, G, L, J, H, E, y, I, B, D, K, A, F, z; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "updatePosition") } else { if (s.options.position.type == "static") { return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.CANNOT_POSITION_STATIC, "updatePosition") } } G = { position: { left: 0, top: 0 }, dimensions: { height: 0, width: 0 }, corner: s.options.position.corner.target }; L = { position: s.getPosition(), dimensions: s.getDimensions(), corner: s.options.position.corner.tooltip }; if (s.options.position.target !== "mouse") { if (s.options.position.target.get(0).nodeName.toLowerCase() == "area") { J = s.options.position.target.attr("coords").split(","); for (C = 0; C < J.length; C++) { J[C] = parseInt(J[C]) } H = s.options.position.target.parent("map").attr("name"); E = f('img[usemap="#' + H + '"]:first').offset(); G.position = { left: Math.floor(E.left + J[0]), top: Math.floor(E.top + J[1]) }; switch (s.options.position.target.attr("shape").toLowerCase()) { case "rect": G.dimensions = { width: Math.ceil(Math.abs(J[2] - J[0])), height: Math.ceil(Math.abs(J[3] - J[1])) }; break; case "circle": G.dimensions = { width: J[2] + 1, height: J[2] + 1 }; break; case "poly": G.dimensions = { width: J[0], height: J[1] }; for (C = 0; C < J.length; C++) { if (C % 2 == 0) { if (J[C] > G.dimensions.width) { G.dimensions.width = J[C] } if (J[C] < J[0]) { G.position.left = Math.floor(E.left + J[C]) } } else { if (J[C] > G.dimensions.height) { G.dimensions.height = J[C] } if (J[C] < J[1]) { G.position.top = Math.floor(E.top + J[C]) } } } G.dimensions.width = G.dimensions.width - (G.position.left - E.left); G.dimensions.height = G.dimensions.height - (G.position.top - E.top); break; default: return f.fn.qtip.log.error.call(s, 4, f.fn.qtip.constants.INVALID_AREA_SHAPE, "updatePosition"); break } G.dimensions.width -= 2; G.dimensions.height -= 2 } else { if (s.options.position.target.add(document.body).length === 1) { G.position = { left: f(document).scrollLeft(), top: f(document).scrollTop() }; G.dimensions = { height: f(window).height(), width: f(window).width()} } else { if (typeof s.options.position.target.attr("qtip") !== "undefined") { G.position = s.options.position.target.qtip("api").cache.position } else { G.position = s.options.position.target.offset() } G.dimensions = { height: s.options.position.target.outerHeight(), width: s.options.position.target.outerWidth()} } } y = f.extend({}, G.position); if (G.corner.search(/right/i) !== -1) { y.left += G.dimensions.width } if (G.corner.search(/bottom/i) !== -1) { y.top += G.dimensions.height } if (G.corner.search(/((top|bottom)Middle)|center/) !== -1) { y.left += (G.dimensions.width / 2) } if (G.corner.search(/((left|right)Middle)|center/) !== -1) { y.top += (G.dimensions.height / 2) } } else { G.position = y = { left: s.cache.mouse.x, top: s.cache.mouse.y }; G.dimensions = { height: 1, width: 1} } if (L.corner.search(/right/i) !== -1) { y.left -= L.dimensions.width } if (L.corner.search(/bottom/i) !== -1) { y.top -= L.dimensions.height } if (L.corner.search(/((top|bottom)Middle)|center/) !== -1) { y.left -= (L.dimensions.width / 2) } if (L.corner.search(/((left|right)Middle)|center/) !== -1) { y.top -= (L.dimensions.height / 2) } I = (f.browser.msie) ? 1 : 0; B = (f.browser.msie && parseInt(f.browser.version.charAt(0)) === 6) ? 1 : 0; if (s.options.style.border.radius > 0) { if (L.corner.search(/Left/) !== -1) { y.left -= s.options.style.border.radius } else { if (L.corner.search(/Right/) !== -1) { y.left += s.options.style.border.radius } } if (L.corner.search(/Top/) !== -1) { y.top -= s.options.style.border.radius } else { if (L.corner.search(/Bottom/) !== -1) { y.top += s.options.style.border.radius } } } if (I) { if (L.corner.search(/top/) !== -1) { y.top -= I } else { if (L.corner.search(/bottom/) !== -1) { y.top += I } } if (L.corner.search(/left/) !== -1) { y.left -= I } else { if (L.corner.search(/right/) !== -1) { y.left += I } } if (L.corner.search(/leftMiddle|rightMiddle/) !== -1) { y.top -= 1 } } if (s.options.position.adjust.screen === true) { y = o.call(s, y, G, L) } if (s.options.position.target === "mouse" && s.options.position.adjust.mouse === true) { if (s.options.position.adjust.screen === true && s.elements.tip) { K = s.elements.tip.attr("rel") } else { K = s.options.position.corner.tooltip } y.left += (K.search(/right/i) !== -1) ? -6 : 6; y.top += (K.search(/bottom/i) !== -1) ? -6 : 6 } if (!s.elements.bgiframe && f.browser.msie && parseInt(f.browser.version.charAt(0)) == 6) { f("select, object").each(function() { A = f(this).offset(); A.bottom = A.top + f(this).height(); A.right = A.left + f(this).width(); if (y.top + L.dimensions.height >= A.top && y.left + L.dimensions.width >= A.left) { k.call(s) } }) } y.left += s.options.position.adjust.x; y.top += s.options.position.adjust.y; F = s.getPosition(); if (y.left != F.left || y.top != F.top) { z = s.beforePositionUpdate.call(s, w); if (z === false) { return s } s.cache.position = y; if (x === true) { s.status.animated = true; s.elements.tooltip.animate(y, 200, "swing", function() { s.status.animated = false }) } else { s.elements.tooltip.css(y) } s.onPositionUpdate.call(s, w); if (typeof w !== "undefined" && w.type && w.type !== "mousemove") { f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_POSITION_UPDATED, "updatePosition") } } return s }, updateWidth: function(w) { var x; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "updateWidth") } else { if (w && typeof w !== "number") { return f.fn.qtip.log.error.call(s, 2, "newWidth must be of type number", "updateWidth") } } x = s.elements.contentWrapper.siblings().add(s.elements.tip).add(s.elements.button); if (!w) { if (typeof s.options.style.width.value == "number") { w = s.options.style.width.value } else { s.elements.tooltip.css({ width: "auto" }); x.hide(); if (f.browser.msie) { s.elements.wrapper.add(s.elements.contentWrapper.children()).css({ zoom: "normal" }) } w = s.getDimensions().width + 1; if (!s.options.style.width.value) { if (w > s.options.style.width.max) { w = s.options.style.width.max } if (w < s.options.style.width.min) { w = s.options.style.width.min } } } } if (w % 2 !== 0) { w -= 1 } s.elements.tooltip.width(w); x.show(); if (s.options.style.border.radius) { s.elements.tooltip.find(".qtip-betweenCorners").each(function(y) { f(this).width(w - (s.options.style.border.radius * 2)) }) } if (f.browser.msie) { s.elements.wrapper.add(s.elements.contentWrapper.children()).css({ zoom: "1" }); s.elements.wrapper.width(w); if (s.elements.bgiframe) { s.elements.bgiframe.width(w).height(s.getDimensions.height) } } return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_WIDTH_UPDATED, "updateWidth") }, updateStyle: function(w) { var z, A, x, y, B; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "updateStyle") } else { if (typeof w !== "string" || !f.fn.qtip.styles[w]) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.STYLE_NOT_DEFINED, "updateStyle") } } s.options.style = a.call(s, f.fn.qtip.styles[w], s.options.user.style); s.elements.content.css(q(s.options.style)); if (s.options.content.title.text !== false) { s.elements.title.css(q(s.options.style.title, true)) } s.elements.contentWrapper.css({ borderColor: s.options.style.border.color }); if (s.options.style.tip.corner !== false) { if (f("<canvas>").get(0).getContext) { z = s.elements.tooltip.find(".qtip-tip canvas:first"); x = z.get(0).getContext("2d"); x.clearRect(0, 0, 300, 300); y = z.parent("div[rel]:first").attr("rel"); B = b(y, s.options.style.tip.size.width, s.options.style.tip.size.height); h.call(s, z, B, s.options.style.tip.color || s.options.style.border.color) } else { if (f.browser.msie) { z = s.elements.tooltip.find('.qtip-tip [nodeName="shape"]'); z.attr("fillcolor", s.options.style.tip.color || s.options.style.border.color) } } } if (s.options.style.border.radius > 0) { s.elements.tooltip.find(".qtip-betweenCorners").css({ backgroundColor: s.options.style.border.color }); if (f("<canvas>").get(0).getContext) { A = g(s.options.style.border.radius); s.elements.tooltip.find(".qtip-wrapper canvas").each(function() { x = f(this).get(0).getContext("2d"); x.clearRect(0, 0, 300, 300); y = f(this).parent("div[rel]:first").attr("rel"); r.call(s, f(this), A[y], s.options.style.border.radius, s.options.style.border.color) }) } else { if (f.browser.msie) { s.elements.tooltip.find('.qtip-wrapper [nodeName="arc"]').each(function() { f(this).attr("fillcolor", s.options.style.border.color) }) } } } return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_STYLE_UPDATED, "updateStyle") }, updateContent: function(A, y) { var z, x, w; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "updateContent") } else { if (!A) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.NO_CONTENT_PROVIDED, "updateContent") } } z = s.beforeContentUpdate.call(s, A); if (typeof z == "string") { A = z } else { if (z === false) { return } } if (f.browser.msie) { s.elements.contentWrapper.children().css({ zoom: "normal" }) } if (A.jquery && A.length > 0) { A.clone(true).appendTo(s.elements.content).show() } else { s.elements.content.html(A) } x = s.elements.content.find("img[complete=false]"); if (x.length > 0) { w = 0; x.each(function(C) { f('<img src="' + f(this).attr("src") + '" />').load(function() { if (++w == x.length) { B() } }) }) } else { B() } function B() { s.updateWidth(); if (y !== false) { if (s.options.position.type !== "static") { s.updatePosition(s.elements.tooltip.is(":visible"), true) } if (s.options.style.tip.corner !== false) { n.call(s) } } } s.onContentUpdate.call(s); return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_CONTENT_UPDATED, "loadContent") }, loadContent: function(w, z, A) { var y; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "loadContent") } y = s.beforeContentLoad.call(s); if (y === false) { return s } if (A == "post") { f.post(w, z, x) } else { f.get(w, z, x) } function x(B) { s.onContentLoad.call(s); f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_CONTENT_LOADED, "loadContent"); s.updateContent(B) } return s }, updateTitle: function(w) { if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "updateTitle") } else { if (!w) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.NO_CONTENT_PROVIDED, "updateTitle") } } returned = s.beforeTitleUpdate.call(s); if (returned === false) { return s } if (s.elements.button) { s.elements.button = s.elements.button.clone(true) } s.elements.title.html(w); if (s.elements.button) { s.elements.title.prepend(s.elements.button) } s.onTitleUpdate.call(s); return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_TITLE_UPDATED, "updateTitle") }, focus: function(A) { var y, x, w, z; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "focus") } else { if (s.options.position.type == "static") { return f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.CANNOT_FOCUS_STATIC, "focus") } } y = parseInt(s.elements.tooltip.css("z-index")); x = 6000 + f("div.qtip[qtip]").length - 1; if (!s.status.focused && y !== x) { z = s.beforeFocus.call(s, A); if (z === false) { return s } f("div.qtip[qtip]").not(s.elements.tooltip).each(function() { if (f(this).qtip("api").status.rendered === true) { w = parseInt(f(this).css("z-index")); if (typeof w == "number" && w > -1) { f(this).css({ zIndex: parseInt(f(this).css("z-index")) - 1 }) } f(this).qtip("api").status.focused = false } }); s.elements.tooltip.css({ zIndex: x }); s.status.focused = true; s.onFocus.call(s, A); f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_FOCUSED, "focus") } return s }, disable: function(w) { if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "disable") } if (w) { if (!s.status.disabled) { s.status.disabled = true; f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_DISABLED, "disable") } else { f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.TOOLTIP_ALREADY_DISABLED, "disable") } } else { if (s.status.disabled) { s.status.disabled = false; f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_ENABLED, "disable") } else { f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.TOOLTIP_ALREADY_ENABLED, "disable") } } return s }, destroy: function() { var w, x, y; x = s.beforeDestroy.call(s); if (x === false) { return s } if (s.status.rendered) { s.options.show.when.target.unbind("mousemove.qtip", s.updatePosition); s.options.show.when.target.unbind("mouseout.qtip", s.hide); s.options.show.when.target.unbind(s.options.show.when.event + ".qtip"); s.options.hide.when.target.unbind(s.options.hide.when.event + ".qtip"); s.elements.tooltip.unbind(s.options.hide.when.event + ".qtip"); s.elements.tooltip.unbind("mouseover.qtip", s.focus); s.elements.tooltip.remove() } else { s.options.show.when.target.unbind(s.options.show.when.event + ".qtip-create") } if (typeof s.elements.target.data("qtip") == "object") { y = s.elements.target.data("qtip").interfaces; if (typeof y == "object" && y.length > 0) { for (w = 0; w < y.length - 1; w++) { if (y[w].id == s.id) { y.splice(w, 1) } } } } delete f.fn.qtip.interfaces[s.id]; if (typeof y == "object" && y.length > 0) { s.elements.target.data("qtip").current = y.length - 1 } else { s.elements.target.removeData("qtip") } s.onDestroy.call(s); f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_DESTROYED, "destroy"); return s.elements.target }, getPosition: function() { var w, x; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "getPosition") } w = (s.elements.tooltip.css("display") !== "none") ? false : true; if (w) { s.elements.tooltip.css({ visiblity: "hidden" }).show() } x = s.elements.tooltip.offset(); if (w) { s.elements.tooltip.css({ visiblity: "visible" }).hide() } return x }, getDimensions: function() { var w, x; if (!s.status.rendered) { return f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.TOOLTIP_NOT_RENDERED, "getDimensions") } w = (!s.elements.tooltip.is(":visible")) ? true : false; if (w) { s.elements.tooltip.css({ visiblity: "hidden" }).show() } x = { height: s.elements.tooltip.outerHeight(), width: s.elements.tooltip.outerWidth() }; if (w) { s.elements.tooltip.css({ visiblity: "visible" }).hide() } return x } }) } function p() { var s, w, u, t, v, y, x; s = this; s.beforeRender.call(s); s.status.rendered = true; s.elements.tooltip = '<div qtip="' + s.id + '" class="qtip ' + (s.options.style.classes.tooltip || s.options.style) + '"style="display:none; -moz-border-radius:0; -webkit-border-radius:0; border-radius:0;position:' + s.options.position.type + ';">  <div class="qtip-wrapper" style="position:relative; overflow:hidden; text-align:left;">    <div class="qtip-contentWrapper" style="overflow:hidden;">       <div class="qtip-content ' + s.options.style.classes.content + '"></div></div></div></div>'; s.elements.tooltip = f(s.elements.tooltip); s.elements.tooltip.appendTo(s.options.position.container); s.elements.tooltip.data("qtip", { current: 0, interfaces: [s] }); s.elements.wrapper = s.elements.tooltip.children("div:first"); s.elements.contentWrapper = s.elements.wrapper.children("div:first").css({ background: s.options.style.background }); s.elements.content = s.elements.contentWrapper.children("div:first").css(q(s.options.style)); if (f.browser.msie) { s.elements.wrapper.add(s.elements.content).css({ zoom: 1 }) } if (s.options.hide.when.event == "unfocus") { s.elements.tooltip.attr("unfocus", true) } if (typeof s.options.style.width.value == "number") { s.updateWidth() } if (f("<canvas>").get(0).getContext || f.browser.msie) { if (s.options.style.border.radius > 0) { m.call(s) } else { s.elements.contentWrapper.css({ border: s.options.style.border.width + "px solid " + s.options.style.border.color }) } if (s.options.style.tip.corner !== false) { e.call(s) } } else { s.elements.contentWrapper.css({ border: s.options.style.border.width + "px solid " + s.options.style.border.color }); s.options.style.border.radius = 0; s.options.style.tip.corner = false; f.fn.qtip.log.error.call(s, 2, f.fn.qtip.constants.CANVAS_VML_NOT_SUPPORTED, "render") } if ((typeof s.options.content.text == "string" && s.options.content.text.length > 0) || (s.options.content.text.jquery && s.options.content.text.length > 0)) { u = s.options.content.text } else { if (typeof s.elements.target.attr("title") == "string" && s.elements.target.attr("title").length > 0) { u = s.elements.target.attr("title").replace("\\n", "<br />"); s.elements.target.attr("title", "") } else { if (typeof s.elements.target.attr("alt") == "string" && s.elements.target.attr("alt").length > 0) { u = s.elements.target.attr("alt").replace("\\n", "<br />"); s.elements.target.attr("alt", "") } else { u = " "; f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.NO_VALID_CONTENT, "render") } } } if (s.options.content.title.text !== false) { j.call(s) } s.updateContent(u); l.call(s); if (s.options.show.ready === true) { s.show() } if (s.options.content.url !== false) { t = s.options.content.url; v = s.options.content.data; y = s.options.content.method || "get"; s.loadContent(t, v, y) } s.onRender.call(s); f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_RENDERED, "render") } function m() { var F, z, t, B, x, E, u, G, D, y, w, C, A, s, v; F = this; F.elements.wrapper.find(".qtip-borderBottom, .qtip-borderTop").remove(); t = F.options.style.border.width; B = F.options.style.border.radius; x = F.options.style.border.color || F.options.style.tip.color; E = g(B); u = {}; for (z in E) { u[z] = '<div rel="' + z + '" style="' + ((z.search(/Left/) !== -1) ? "left" : "right") + ":0; position:absolute; height:" + B + "px; width:" + B + 'px; overflow:hidden; line-height:0.1px; font-size:1px">'; if (f("<canvas>").get(0).getContext) { u[z] += '<canvas height="' + B + '" width="' + B + '" style="vertical-align: top"></canvas>' } else { if (f.browser.msie) { G = B * 2 + 3; u[z] += '<v:arc stroked="false" fillcolor="' + x + '" startangle="' + E[z][0] + '" endangle="' + E[z][1] + '" style="width:' + G + "px; height:" + G + "px; margin-top:" + ((z.search(/bottom/) !== -1) ? -2 : -1) + "px; margin-left:" + ((z.search(/Right/) !== -1) ? E[z][2] - 3.5 : -1) + 'px; vertical-align:top; display:inline-block; behavior:url(#default#VML)"></v:arc>' } } u[z] += "</div>" } D = F.getDimensions().width - (Math.max(t, B) * 2); y = '<div class="qtip-betweenCorners" style="height:' + B + "px; width:" + D + "px; overflow:hidden; background-color:" + x + '; line-height:0.1px; font-size:1px;">'; w = '<div class="qtip-borderTop" dir="ltr" style="height:' + B + "px; margin-left:" + B + 'px; line-height:0.1px; font-size:1px; padding:0;">' + u.topLeft + u.topRight + y; F.elements.wrapper.prepend(w); C = '<div class="qtip-borderBottom" dir="ltr" style="height:' + B + "px; margin-left:" + B + 'px; line-height:0.1px; font-size:1px; padding:0;">' + u.bottomLeft + u.bottomRight + y; F.elements.wrapper.append(C); if (f("<canvas>").get(0).getContext) { F.elements.wrapper.find("canvas").each(function() { A = E[f(this).parent("[rel]:first").attr("rel")]; r.call(F, f(this), A, B, x) }) } else { if (f.browser.msie) { F.elements.tooltip.append('<v:image style="behavior:url(#default#VML);"></v:image>') } } s = Math.max(B, (B + (t - B))); v = Math.max(t - B, 0); F.elements.contentWrapper.css({ border: "0px solid " + x, borderWidth: v + "px " + s + "px" }) } function r(u, w, s, t) { var v = u.get(0).getContext("2d"); v.fillStyle = t; v.beginPath(); v.arc(w[0], w[1], s, 0, Math.PI * 2, false); v.fill() } function e(v) { var t, s, x, u, w; t = this; if (t.elements.tip !== null) { t.elements.tip.remove() } s = t.options.style.tip.color || t.options.style.border.color; if (t.options.style.tip.corner === false) { return } else { if (!v) { v = t.options.style.tip.corner } } x = b(v, t.options.style.tip.size.width, t.options.style.tip.size.height); t.elements.tip = '<div class="' + t.options.style.classes.tip + '" dir="ltr" rel="' + v + '" style="position:absolute; height:' + t.options.style.tip.size.height + "px; width:" + t.options.style.tip.size.width + 'px; margin:0 auto; line-height:0.1px; font-size:1px;">'; if (f("<canvas>").get(0).getContext) { t.elements.tip += '<canvas height="' + t.options.style.tip.size.height + '" width="' + t.options.style.tip.size.width + '"></canvas>' } else { if (f.browser.msie) { u = t.options.style.tip.size.width + "," + t.options.style.tip.size.height; w = "m" + x[0][0] + "," + x[0][1]; w += " l" + x[1][0] + "," + x[1][1]; w += " " + x[2][0] + "," + x[2][1]; w += " xe"; t.elements.tip += '<v:shape fillcolor="' + s + '" stroked="false" filled="true" path="' + w + '" coordsize="' + u + '" style="width:' + t.options.style.tip.size.width + "px; height:" + t.options.style.tip.size.height + "px; line-height:0.1px; display:inline-block; behavior:url(#default#VML); vertical-align:" + ((v.search(/top/) !== -1) ? "bottom" : "top") + '"></v:shape>'; t.elements.tip += '<v:image style="behavior:url(#default#VML);"></v:image>'; t.elements.contentWrapper.css("position", "relative") } } t.elements.tooltip.prepend(t.elements.tip + "</div>"); t.elements.tip = t.elements.tooltip.find("." + t.options.style.classes.tip).eq(0); if (f("<canvas>").get(0).getContext) { h.call(t, t.elements.tip.find("canvas:first"), x, s) } if (v.search(/top/) !== -1 && f.browser.msie && parseInt(f.browser.version.charAt(0)) === 6) { t.elements.tip.css({ marginTop: -4 }) } n.call(t, v) } function h(t, v, s) { var u = t.get(0).getContext("2d"); u.fillStyle = s; u.beginPath(); u.moveTo(v[0][0], v[0][1]); u.lineTo(v[1][0], v[1][1]); u.lineTo(v[2][0], v[2][1]); u.fill() } function n(u) { var t, w, s, x, v; t = this; if (t.options.style.tip.corner === false || !t.elements.tip) { return } if (!u) { u = t.elements.tip.attr("rel") } w = positionAdjust = (f.browser.msie) ? 1 : 0; t.elements.tip.css(u.match(/left|right|top|bottom/)[0], 0); if (u.search(/top|bottom/) !== -1) { if (f.browser.msie) { if (parseInt(f.browser.version.charAt(0)) === 6) { positionAdjust = (u.search(/top/) !== -1) ? -3 : 1 } else { positionAdjust = (u.search(/top/) !== -1) ? 1 : 2 } } if (u.search(/Middle/) !== -1) { t.elements.tip.css({ left: "50%", marginLeft: -(t.options.style.tip.size.width / 2) }) } else { if (u.search(/Left/) !== -1) { t.elements.tip.css({ left: t.options.style.border.radius - w }) } else { if (u.search(/Right/) !== -1) { t.elements.tip.css({ right: t.options.style.border.radius + w }) } } } if (u.search(/top/) !== -1) { t.elements.tip.css({ top: -positionAdjust }) } else { t.elements.tip.css({ bottom: positionAdjust }) } } else { if (u.search(/left|right/) !== -1) { if (f.browser.msie) { positionAdjust = (parseInt(f.browser.version.charAt(0)) === 6) ? 1 : ((u.search(/left/) !== -1) ? 1 : 2) } if (u.search(/Middle/) !== -1) { t.elements.tip.css({ top: "50%", marginTop: -(t.options.style.tip.size.height / 2) }) } else { if (u.search(/Top/) !== -1) { t.elements.tip.css({ top: t.options.style.border.radius - w }) } else { if (u.search(/Bottom/) !== -1) { t.elements.tip.css({ bottom: t.options.style.border.radius + w }) } } } if (u.search(/left/) !== -1) { t.elements.tip.css({ left: -positionAdjust }) } else { t.elements.tip.css({ right: positionAdjust }) } } } s = "padding-" + u.match(/left|right|top|bottom/)[0]; x = t.options.style.tip.size[(s.search(/left|right/) !== -1) ? "width" : "height"]; t.elements.tooltip.css("padding", 0); t.elements.tooltip.css(s, x); if (f.browser.msie && parseInt(f.browser.version.charAt(0)) == 6) { v = parseInt(t.elements.tip.css("margin-top")) || 0; v += parseInt(t.elements.content.css("margin-top")) || 0; t.elements.tip.css({ marginTop: v }) } } function j() { var s = this; if (s.elements.title !== null) { s.elements.title.remove() } s.elements.title = f('<div class="' + s.options.style.classes.title + '">').css(q(s.options.style.title, true)).css({ zoom: (f.browser.msie) ? 1 : 0 }).prependTo(s.elements.contentWrapper); if (s.options.content.title.text) { s.updateTitle.call(s, s.options.content.title.text) } if (s.options.content.title.button !== false && typeof s.options.content.title.button == "string") { s.elements.button = f('<a class="' + s.options.style.classes.button + '" style="float:right; position: relative"></a>').css(q(s.options.style.button, true)).html(s.options.content.title.button).prependTo(s.elements.title).click(function(t) { if (!s.status.disabled) { s.hide(t) } }) } } function l() { var t, v, u, s; t = this; v = t.options.show.when.target; u = t.options.hide.when.target; if (t.options.hide.fixed) { u = u.add(t.elements.tooltip) } if (t.options.hide.when.event == "inactive") { s = ["click", "dblclick", "mousedown", "mouseup", "mousemove", "mouseout", "mouseenter", "mouseleave", "mouseover"]; function y(z) { if (t.status.disabled === true) { return } clearTimeout(t.timers.inactive); t.timers.inactive = setTimeout(function() { f(s).each(function() { u.unbind(this + ".qtip-inactive"); t.elements.content.unbind(this + ".qtip-inactive") }); t.hide(z) }, t.options.hide.delay) } } else { if (t.options.hide.fixed === true) { t.elements.tooltip.bind("mouseover.qtip", function() { if (t.status.disabled === true) { return } clearTimeout(t.timers.hide) }) } } function x(z) { if (t.status.disabled === true) { return } if (t.options.hide.when.event == "inactive") { f(s).each(function() { u.bind(this + ".qtip-inactive", y); t.elements.content.bind(this + ".qtip-inactive", y) }); y() } clearTimeout(t.timers.show); clearTimeout(t.timers.hide); t.timers.show = setTimeout(function() { t.show(z) }, t.options.show.delay) } function w(z) { if (t.status.disabled === true) { return } if (t.options.hide.fixed === true && t.options.hide.when.event.search(/mouse(out|leave)/i) !== -1 && f(z.relatedTarget).parents("div.qtip[qtip]").length > 0) { z.stopPropagation(); z.preventDefault(); clearTimeout(t.timers.hide); return false } clearTimeout(t.timers.show); clearTimeout(t.timers.hide); t.elements.tooltip.stop(true, true); t.timers.hide = setTimeout(function() { t.hide(z) }, t.options.hide.delay) } if ((t.options.show.when.target.add(t.options.hide.when.target).length === 1 && t.options.show.when.event == t.options.hide.when.event && t.options.hide.when.event !== "inactive") || t.options.hide.when.event == "unfocus") { t.cache.toggle = 0; v.bind(t.options.show.when.event + ".qtip", function(z) { if (t.cache.toggle == 0) { x(z) } else { w(z) } }) } else { v.bind(t.options.show.when.event + ".qtip", x); if (t.options.hide.when.event !== "inactive") { u.bind(t.options.hide.when.event + ".qtip", w) } } if (t.options.position.type.search(/(fixed|absolute)/) !== -1) { t.elements.tooltip.bind("mouseover.qtip", t.focus) } if (t.options.position.target === "mouse" && t.options.position.type !== "static") { v.bind("mousemove.qtip", function(z) { t.cache.mouse = { x: z.pageX, y: z.pageY }; if (t.status.disabled === false && t.options.position.adjust.mouse === true && t.options.position.type !== "static" && t.elements.tooltip.css("display") !== "none") { t.updatePosition(z) } }) } } function o(u, v, A) { var z, s, x, y, t, w; z = this; if (A.corner == "center") { return v.position } s = f.extend({}, u); y = { x: false, y: false }; t = { left: (s.left < f.fn.qtip.cache.screen.scroll.left), right: (s.left + A.dimensions.width + 2 >= f.fn.qtip.cache.screen.width + f.fn.qtip.cache.screen.scroll.left), top: (s.top < f.fn.qtip.cache.screen.scroll.top), bottom: (s.top + A.dimensions.height + 2 >= f.fn.qtip.cache.screen.height + f.fn.qtip.cache.screen.scroll.top) }; x = { left: (t.left && (A.corner.search(/right/i) != -1 || (A.corner.search(/right/i) == -1 && !t.right))), right: (t.right && (A.corner.search(/left/i) != -1 || (A.corner.search(/left/i) == -1 && !t.left))), top: (t.top && A.corner.search(/top/i) == -1), bottom: (t.bottom && A.corner.search(/bottom/i) == -1) }; if (x.left) { if (z.options.position.target !== "mouse") { s.left = v.position.left + v.dimensions.width } else { s.left = z.cache.mouse.x } y.x = "Left" } else { if (x.right) { if (z.options.position.target !== "mouse") { s.left = v.position.left - A.dimensions.width } else { s.left = z.cache.mouse.x - A.dimensions.width } y.x = "Right" } } if (x.top) { if (z.options.position.target !== "mouse") { s.top = v.position.top + v.dimensions.height } else { s.top = z.cache.mouse.y } y.y = "top" } else { if (x.bottom) { if (z.options.position.target !== "mouse") { s.top = v.position.top - A.dimensions.height } else { s.top = z.cache.mouse.y - A.dimensions.height } y.y = "bottom" } } if (s.left < 0) { s.left = u.left; y.x = false } if (s.top < 0) { s.top = u.top; y.y = false } if (z.options.style.tip.corner !== false) { s.corner = new String(A.corner); if (y.x !== false) { s.corner = s.corner.replace(/Left|Right|Middle/, y.x) } if (y.y !== false) { s.corner = s.corner.replace(/top|bottom/, y.y) } if (s.corner !== z.elements.tip.attr("rel")) { e.call(z, s.corner) } } return s } function q(u, t) { var v, s; v = f.extend(true, {}, u); for (s in v) { if (t === true && s.search(/(tip|classes)/i) !== -1) { delete v[s] } else { if (!t && s.search(/(width|border|tip|title|classes|user)/i) !== -1) { delete v[s] } } } return v } function c(s) { if (typeof s.tip !== "object") { s.tip = { corner: s.tip} } if (typeof s.tip.size !== "object") { s.tip.size = { width: s.tip.size, height: s.tip.size} } if (typeof s.border !== "object") { s.border = { width: s.border} } if (typeof s.width !== "object") { s.width = { value: s.width} } if (typeof s.width.max == "string") { s.width.max = parseInt(s.width.max.replace(/([0-9]+)/i, "$1")) } if (typeof s.width.min == "string") { s.width.min = parseInt(s.width.min.replace(/([0-9]+)/i, "$1")) } if (typeof s.tip.size.x == "number") { s.tip.size.width = s.tip.size.x; delete s.tip.size.x } if (typeof s.tip.size.y == "number") { s.tip.size.height = s.tip.size.y; delete s.tip.size.y } return s } function a() { var s, t, u, x, v, w; s = this; u = [true, {}]; for (t = 0; t < arguments.length; t++) { u.push(arguments[t]) } x = [f.extend.apply(f, u)]; while (typeof x[0].name == "string") { x.unshift(c(f.fn.qtip.styles[x[0].name])) } x.unshift(true, { classes: { tooltip: "qtip-" + (arguments[0].name || "defaults")} }, f.fn.qtip.styles.defaults); v = f.extend.apply(f, x); w = (f.browser.msie) ? 1 : 0; v.tip.size.width += w; v.tip.size.height += w; if (v.tip.size.width % 2 > 0) { v.tip.size.width += 1 } if (v.tip.size.height % 2 > 0) { v.tip.size.height += 1 } if (v.tip.corner === true) { v.tip.corner = (s.options.position.corner.tooltip === "center") ? false : s.options.position.corner.tooltip } return v } function b(v, u, t) { var s = { bottomRight: [[0, 0], [u, t], [u, 0]], bottomLeft: [[0, 0], [u, 0], [0, t]], topRight: [[0, t], [u, 0], [u, t]], topLeft: [[0, 0], [0, t], [u, t]], topMiddle: [[0, t], [u / 2, 0], [u, t]], bottomMiddle: [[0, 0], [u, 0], [u / 2, t]], rightMiddle: [[0, 0], [u, t / 2], [0, t]], leftMiddle: [[u, 0], [u, t], [0, t / 2]] }; s.leftTop = s.bottomRight; s.rightTop = s.bottomLeft; s.leftBottom = s.topRight; s.rightBottom = s.topLeft; return s[v] } function g(s) { var t; if (f("<canvas>").get(0).getContext) { t = { topLeft: [s, s], topRight: [0, s], bottomLeft: [s, 0], bottomRight: [0, 0]} } else { if (f.browser.msie) { t = { topLeft: [-90, 90, 0], topRight: [-90, 90, -s], bottomLeft: [90, 270, 0], bottomRight: [90, 270, -s]} } } return t } function k() { var s, t, u; s = this; u = s.getDimensions(); t = '<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:false" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=\'0\'); border: 1px solid red; height:' + u.height + "px; width:" + u.width + 'px" />'; s.elements.bgiframe = s.elements.wrapper.prepend(t).children(".qtip-bgiframe:first") } f(document).ready(function() { f.fn.qtip.cache = { screen: { scroll: { left: f(window).scrollLeft(), top: f(window).scrollTop() }, width: f(window).width(), height: f(window).height()} }; var s; f(window).bind("resize scroll", function(t) { clearTimeout(s); s = setTimeout(function() { if (t.type === "scroll") { f.fn.qtip.cache.screen.scroll = { left: f(window).scrollLeft(), top: f(window).scrollTop()} } else { f.fn.qtip.cache.screen.width = f(window).width(); f.fn.qtip.cache.screen.height = f(window).height() } for (i = 0; i < f.fn.qtip.interfaces.length; i++) { var u = f.fn.qtip.interfaces[i]; if (u.status.rendered === true && (u.options.position.type !== "static" || u.options.position.adjust.scroll && t.type === "scroll" || u.options.position.adjust.resize && t.type === "resize")) { u.updatePosition(t, true) } } }, 100) }); f(document).bind("mousedown.qtip", function(t) { if (f(t.target).parents("div.qtip").length === 0) { f(".qtip[unfocus]").each(function() { var u = f(this).qtip("api"); if (f(this).is(":visible") && !u.status.disabled && f(t.target).add(u.elements.target).length > 1) { u.hide(t) } }) } }) }); f.fn.qtip.interfaces = []; f.fn.qtip.log = { error: function() { return this } }; f.fn.qtip.constants = {}; f.fn.qtip.defaults = { content: { prerender: false, text: false, url: false, data: null, title: { text: false, button: false} }, position: { target: false, corner: { target: "bottomRight", tooltip: "topLeft" }, adjust: { x: 0, y: 0, mouse: true, screen: false, scroll: true, resize: true }, type: "absolute", container: false }, show: { when: { target: false, event: "mouseover" }, effect: { type: "fade", length: 100 }, delay: 140, solo: false, ready: false }, hide: { when: { target: false, event: "mouseout" }, effect: { type: "fade", length: 100 }, delay: 0, fixed: false }, api: { beforeRender: function() { }, onRender: function() { }, beforePositionUpdate: function() { }, onPositionUpdate: function() { }, beforeShow: function() { }, onShow: function() { }, beforeHide: function() { }, onHide: function() { }, beforeContentUpdate: function() { }, onContentUpdate: function() { }, beforeContentLoad: function() { }, onContentLoad: function() { }, beforeTitleUpdate: function() { }, onTitleUpdate: function() { }, beforeDestroy: function() { }, onDestroy: function() { }, beforeFocus: function() { }, onFocus: function() { } } }; f.fn.qtip.styles = { defaults: { background: "white", color: "#111", overflow: "hidden", textAlign: "left", width: { min: 0, max: 250 }, padding: "5px 9px", border: { width: 1, radius: 0, color: "#d3d3d3" }, tip: { corner: false, color: false, size: { width: 13, height: 13 }, opacity: 1 }, title: { background: "#e1e1e1", fontWeight: "bold", padding: "7px 12px" }, button: { cursor: "pointer" }, classes: { target: "", tip: "qtip-tip", title: "qtip-title", button: "qtip-button", content: "qtip-content", active: "qtip-active"} }, cream: { border: { width: 3, radius: 0, color: "#F9E98E" }, title: { background: "#F0DE7D", color: "#A27D35" }, background: "#FBF7AA", color: "#A27D35", classes: { tooltip: "qtip-cream"} }, light: { border: { width: 3, radius: 0, color: "#E2E2E2" }, title: { background: "#f1f1f1", color: "#454545" }, background: "white", color: "#454545", classes: { tooltip: "qtip-light"} }, dark: { border: { width: 3, radius: 0, color: "#303030" }, title: { background: "#404040", color: "#f3f3f3" }, background: "#505050", color: "#f3f3f3", classes: { tooltip: "qtip-dark"} }, red: { border: { width: 3, radius: 0, color: "#CE6F6F" }, title: { background: "#f28279", color: "#9C2F2F" }, background: "#F79992", color: "#9C2F2F", classes: { tooltip: "qtip-red"} }, green: { border: { width: 3, radius: 0, color: "#A9DB66" }, title: { background: "#b9db8c", color: "#58792E" }, background: "#CDE6AC", color: "#58792E", classes: { tooltip: "qtip-green"} }, blue: { border: { width: 3, radius: 0, color: "#ADD9ED" }, title: { background: "#D0E9F5", color: "#5E99BD" }, background: "#E5F6FE", color: "#4D9FBF", classes: { tooltip: "qtip-blue"}}} })(jQuery);


function launchAgrivisor() {
    window.open("http://www.agrivisor.com/marketwatch_template.aspx?psk=ed67213c-1a5a-4ada-848b-bd96f2aeb3c0");
}

/*
* Simple Auto Expanding Text Area (0.1.2-dev)
* by Antti Kaihola (antti.kaihola.fi)
* akaihol+jquery@ambitone.com
*
* Copyright (c) 2009 Antti Kaihola (antti.kaihola.fi)
* Licensed under the MIT and BSD licenses.
*
* NOTE: This script requires jQuery to work.  Download jQuery at
*       www.jquery.com
* Modified by Paul Dickey to copy font info to clone and run checkExpand function before height is set.
*/

(function($)
{

    $.fn.simpleautogrow = function(o)
    {
        return this.each(function() { new $.simpleautogrow(this, o); });
    };

    $.simpleautogrow = function(e, o)
    {
        var self = this;
        var $e = this.textarea = $(e)
            .css({
                    overflow: 'hidden',
                    display: 'block'
                })
        .bind('focus', function()
        {
            this.timer = window.setInterval(function() { self.checkExpand(); }, 100);
        })
        .bind('blur', function() { clearInterval(this.timer); });
        this.border = $e.outerHeight() - $e.innerHeight();
        this.o = o || {};
        this.clone = $e.clone().css(
            { 
                'position': 'absolute',
                'visibility': 'hidden',
                'font-size': $e.css('font-size'),
                'font-family': $e.css('font-family'),
                'font-weight': $e.css('font-weight'),
                'top': 0,
                'left': 0
            }).attr('name', '')
        this.checkExpand();
        $e.height(e.scrollHeight + this.border)
            .after(this.clone);
    };

    $.simpleautogrow.prototype.checkExpand = function()
    {
        var target_height = this.clone[0].scrollHeight + this.border;
        if (this.o.min_height)
            target_height = target_height > this.o.min_height ? target_height : this.o.min_height;
        if (this.textarea.outerHeight() != target_height)
            this.textarea.height(target_height + 'px');
        this.clone.attr('value', this.textarea.attr('value')).height(0);
    };

})(jQuery);


function findElement(control, name)
{
    if (control.id != null && control.id.length > 0)
    {
        if (control.id.indexOf(name) >= 0)
        {
            return control;
        }
    }

    if (control.hasChildNodes())
    {
        for (var i = 0; i < control.childNodes.length; i++)
        {
            var childControl = findElement(control.childNodes[i], name);
            if (childControl != null)
            {
                return childControl;
            }
        }
    }

    else if (control.rows != null)
    {
        for (var i = 0; i < control.rows.length; i++)
        {
            var row = control.rows[i];
            for (var j = 0; j < row.cells.length; i++)
            {
                var cellControl = findElement(row.cells[j], name);
                if (cellControl != null)
                {
                    return cellControl;
                }
            }
        }
    }
    return null;
}

