﻿// displays the title of the input text as a hint when the input
// doesn't have focus and the user hasn't entered anything

jQuery.fn.titleHint = function(blurClass) {
    if (!blurClass) {
        blurClass = 'blur';
    }
    return this.each(function() {
        // get jQuery version of 'this'    
        var $input = jQuery(this),
        // capture the rest of the variable to allow for reuse      
        title = $input.attr('title'),
        $form = jQuery(this.form),
        $win = jQuery(window);
        function remove() {
            if ($input.val() === title && $input.hasClass(blurClass)) {
                $input.val('').removeClass(blurClass);
            }
        }
        // only apply logic if the element has the attribute    
        if (title) {
            // on blur, set value to title attr if text is blank      
            $input.blur(function() {
                if (this.value === '') {
                    $input.val(title).addClass(blurClass);
                }
            }).focus(remove).blur();
            // now change all inputs to title      
            // clear the pre-defined text when form is submitted
            $form.submit(remove);
            // handles Firefox's autocomplete
            $win.unload(remove);
        }
    });
};


// loads an image asynchronuosly with a default timeout of 1000 msecs
// TODO: test!
jQuery.fn.asyncImageLoad = function(imagePath, timeOut) {
    return this.each(function($) {
        var img = $(this);
        $.ajax(
            {
                type: "GET",
                url: imagePath,
                cache: false,
                timeout: timeOut || 1000,
                success: function() {
                    img.attr('src', imagePath);
                }
            });

    });
};

// -----------------------------------------------------------------------
// eros@recoding.it
// jqprint 0.3
//
// - 19/06/2009 - some new implementations, added Opera support
// - 11/05/2009 - first sketch
//
// Printing plug-in for jQuery, evolution of jPrintArea: http://plugins.jquery.com/project/jPrintArea
// requires jQuery 1.3.x
//------------------------------------------------------------------------

(function($) {
    var opt;

    $.fn.jqprint = function(options) {
        opt = $.extend({}, $.fn.jqprint.defaults, options);

        var $element = (this instanceof jQuery) ? this : $(this);

        if (opt.operaSupport && $.browser.opera) {
            var tab = window.open("", "jqPrint-preview");
            tab.document.open();

            var doc = tab.document;
        }
        else {
            var $iframe = $("<iframe  />");

            if (!opt.debug) { $iframe.css({ position: "absolute", width: "0px", height: "0px", left: "-600px", top: "-600px" }); }

            $iframe.appendTo("body");
            var doc = $iframe[0].contentWindow.document;
        }

        if (opt.importCSS) {
            if ($("link[media=print]").length > 0) {
                $("link[media=print]").each(function() {
                    doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />");
                });
            }
            else {
                $("link").each(function() {
                    doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />");
                });
            }
        }

        if (opt.printContainer) { doc.write($element.outer()); }
        else { $element.each(function() { doc.write($(this).html()); }); }

        doc.close();

        (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).focus();
        setTimeout(function() { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);
    }

    $.fn.jqprint.defaults = {
        debug: false,
        importCSS: true,
        printContainer: true,
        operaSupport: true
    };

    // Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
    jQuery.fn.outer = function() {
        return $($('<div></div>').html(this.clone())).html();
    }
})(jQuery);



