Inner HTML will return the html written inside the individual element. Certainly it won't get the other settings of the ojbject
Try to rewrite the code following way:
function PrintPanel() {
var panel = document.getElementById("<%=pnlContents.ClientID %>");
printWindow = window.open('', '', 'height=400,width=800');
var tbl=panel.cloneNode(true);
printWindow.window.document.body.appendChild(tbl);
printWindow.document.close();
setTimeout(function () {
printWindow.print();
}, 500);
return false;
}
I only tested it with Chrome. Also try with other browser and see if it works.