var isIE = /(msie|internet explorer)/i.test(navigator.userAgent);
function isFirefox() {
    return !isIE;
}
function ffPrintFix(objId, imgData) {
    
    if (isIE) return;
    
    var obj = document.getElementById(objId);
    
    if (obj == null) return;
    
    //step #1: get parent node
    var parent = obj.parentNode;
    if (parent == null) return;
    
    //step #2: get header
    var head = document.getElementsByTagName('head');
    head = ((head.length != 1) ? null : head[0]);
        
    if (head == null) return;
        
    //step #3: write normal css rule        
    var style = document.createElement('style');
    style.setAttribute('type','text/css');
    style.setAttribute('media','screen');
    
    var imgDescriptor = 'img#'+objId+'_screen';
    var imgRule = "width: "+obj.width+";\n"+
                  "height: "+obj.height+";\n"+
                  "padding: 0;\n"+
                  "margin: 0;\n"+
                  "border: 0;\n";
    style.appendChild(document.createTextNode(imgDescriptor + '{' + imgRule + "}\n"));
    //add style to head
    head.appendChild(style);
    
    //step #4: write print css rule
    style = document.createElement('style');
    style.setAttribute('type','text/css');
    style.setAttribute('media','print');
    
    //write image style
    imgDescriptor = 'img#'+objId+'_screen';
    imgRule = 'display: block;';
    
    style.appendChild(document.createTextNode(imgDescriptor + '{' + imgRule + '}'));
    
    //write object style
    var objDescriptor = 'embed#'+objId;
    var objRule = 'display: none;';
    style.appendChild(document.createTextNode(objDescriptor + '{' + objRule + '}'));
    
    //add style to head
    head.appendChild(style);
    
    //step #5: get image
    var needAppend = false;
    var img = document.getElementById('img');
    if (img == null) {
        img = document.createElement('img');
        needAppend = true;
    }
    
    img.src = 'data:image/png;base64,'+imgData;
    if (needAppend)
        parent.appendChild(img);
}