﻿(function( $ ){
                // plugin declarations
                 
                $.fn.printArea = function( options, button ) 
                {
                                // default options
                                var settings = 
                                {
                                                'hoverBorder': 'dashed 1px #ccc',
                                                'printStyle': 'cursor:pointer',
                                                'printWindowSettings': 'width=800,height=900,scrollbars=1,resizable=1,toobars=1',
                                                'alternativeContainerId':'',
                                                'divWidth':'726px',
                                                'headerHTML':'',                                               
                                                'additionalCSS':'',
                                                'footerHTML':''
                                };
                                
                                // always override defaults with any new values passed in
                                if ( options ) 
                                { 
                                                $.extend( settings, options );
                                }              
                                var $this = $(this);
                                
                                SetUpPrintArea($this, settings, button);
                                
                                // return the object itself to keep inline with jquerys cascading model                    
                                return $this;

                };                                             
                function SetUpPrintArea($this, settings, button)
                {
                    if(!button)
                    {
                        $($this).prepend("<div class='printbutton' style='" + settings.printStyle + "'>Print</div>");      
                        $($this).children(".printbutton").mouseover(function()
                        {              
                            var initialBorder = $(this).parent().css("border");
                        
                            $.data($(this).parent()[0],"initialBorder",initialBorder);
                            $(this).parent().css("border",settings.hoverBorder);
                        
                        });
                        $($this).children(".printbutton").mouseout(function()
                        {
                            var initialBorder = $.data($(this).parent()[0],"initialBorder");
                            if(!initialBorder || initialBorder == '')
                            {
                                initialBorder = 'none';
                            }
                            $(this).parent().css("border",initialBorder);
                        });       
                        $($this).children(".printbutton").click(function()
                        {
                            OpenPrintWindow($(this).parent(), settings);
                        });
                    }
                    else
                    {
                        $(button).click(function()
                        {
                            OpenPrintWindow($($this), settings);
                        });
                    }
                }
                function OpenPrintWindow($this, settings)
                {
                    var header = document.getElementsByTagName("head")[0];
        header = header.innerHTML;
        
        var bodyClass = $('body').attr('class');

        content = $($this).html();
        
        var printWindow = window.open("","printarea",settings.printWindowSettings);
 
        var windowContent = "<html>" +
            "<head>" + header + "<style type='text/css'>.printbutton{display:none;}</style>" +
            settings.additionalCSS +
            "</head>" +
            "<body>" +
            "<div id='printbuttons'>" +
            "<input type='button' onClick='document.close();window.print();' value='PRINT' id='butPrint'>" +
            "<input type='button' onClick='window.close();' value='CLOSE' id='butClose'>" +
            "</div>";
            
            if(settings.alternativeContainerId == '')
            {
                windowContent += "<div id='printcontent' class='" + bodyClass + "' style='width:" + settings.divWidth + "'>" + setting.headerHTML + content + settings.footerHTML + "</div>";
            }
            else
            {
                windowContent += "<div id='" + settings.alternativeContainerId + "' class='" + bodyClass  + "' style='width:" + settings.divWidth + "'>" + settings.headerHTML + content + settings.footerHTML + "</div>";
            }
            windowContent += "</body></html>";
        
        printWindow.document.write(windowContent ); 

                }

})( jQuery );

