﻿// -----------------------------------------------------------------------
// 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 randomnumber = Math.floor(Math.random()*500)
            var $iframe = $("<iframe id='print-"+randomnumber+"'  />");
        
            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).find('input:text').each(function(){
			this.value = $('input[name='+this.name+']')[0].value;
		});
		
		$(doc).find('select').each(function(){
			this.selectedIndex = $('select[name='+this.name+']')[0].selectedIndex;
		});
		
		$('input:radio:checked').each(function(){
			$($(doc).find('input:radio[value='+this.value+']')[0]).attr('checked','checked');
		});
        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);
		setTimeout( function() { 
		    try
            {
				isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
				if (!isIE6)
				{
					window.frames("print-"+randomnumber).focus();
					window.frames("print-"+randomnumber).document.execCommand('print', false, null);
				}
				else
				{
					(opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print();
					if (tab) { tab.close(); }
				}
            }
            catch(e)
            {
				(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() {
		var datum=new Date(); 
		var tag = datum.getDate();
		var tag_txt = ""+tag;
		if (tag <10) tag_txt = "0"+tag;
		var monat = datum.getMonth()+1;
		var monat_txt = ""+monat;
		if (monat <10) monat_txt = "0"+monat;
		var $content = "<div>"+this.html()+"</div>";
      return "<html><head><title>Ausdruck - Kundendaten</title></head><body><div class=\"header\"><img class='bfiheader-left' src=\"/bfiweb/sites/all/themes/bfi/images/bfiheader-left.jpg\" /><img class='bfiheader-right' src=\"/bfiweb/sites/all/themes/bfi/images/bfiheader-right.jpg\" /></div><div><h1 class='printh1'>BFI O&Ouml; Kundendaten - Ausdruck (Anmeldedatum: "+tag_txt+"."+monat_txt+"."+datum.getFullYear()+")</h1><br>"+$content+"</div><div class='print-footer'>&copy; Berufsf&ouml;rderungsinstitut Ober&ouml;sterreich, Raimundstra&szlig;e 3, 4021 Linz, ZVR Nr.: 249875807</div></body>";
    } 
})(jQuery);
