rem: vmlStr.push(" top:", d.y, "px;left:", d.x, "px;") 
add: vmlStr.push("top:", mr(d.y / Z), "px;left:", mr(d.x / Z), "px;") 
context:   contextPrototype.drawImage = function (image, var_args) {    var dx, dy, dw, dh, sx, sy, sw, sh;    var w = image.width;    var h = image.height;    if (arguments.length == 3) {      dx = arguments[1];      dy = arguments[2];      sx = sy = 0;      sw = dw = w;      sh = dh = h;    } else if (arguments.length == 5) {      dx = arguments[1];      dy = arguments[2];      dw = arguments[3];      dh = arguments[4];      sx = sy = 0;      sw = w;      sh = h;    } else if (arguments.length == 9) {      sx = arguments[1];      sy = arguments[2];      sw = arguments[3];      sh = arguments[4];      dx = arguments[5];      dy = arguments[6];      dw = arguments[7];      dh = arguments[8];    } else {      throw "Invalid number of arguments";    }    var d = this.getCoords_(dx, dy);    var w2 = (sw / 2);    var h2 = (sh / 2);    var vmlStr = [];    // For some reason that I've now forgotten, using divs didn't work    vmlStr.push(' <g_vml_:group',                ' coordsize="1000,1000"',                ' coordorigin="0, 0"' ,                ' style="width:100px;height:100px;position:absolute;');    // If filters are necessary (rotation exists), create them    // filters are bog-slow, so only create them if abbsolutely necessary    // The following check doesn't account for skews (which don't exist    // in the canvas spec (yet) anyway.    if (this.m_[0][0] != 1 || this.m_[0][1]) {      var filter = [];      // Note the 12/21 reversal      filter.push("M11='", this.m_[0][0], "',",                  "M12='", this.m_[1][0], "',",                  "M21='", this.m_[0][1], "',",                  "M22='", this.m_[1][1], "',",                  "Dx='", d.x, "',",                  "Dy='", d.y, "'");      // Bounding box calculation (need to minimize displayed area so that      // filters don't waste time on unused pixels.      var max = d;      var c2 = this.getCoords_(dx+dw, dy);      var c3 = this.getCoords_(dx, dy+dh);      var c4 = this.getCoords_(dx+dw, dy+dh);      max.x = Math.max(max.x, c2.x, c3.x, c4.x);      max.y = Math.max(max.y, c2.y, c3.y, c4.y);      vmlStr.push(" padding:0 ", mr(max.x), "px ", mr(max.y),                  "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",                  filter.join(""), ", sizingmethod='clip');")    } else {      vmlStr.push(" top:", d.y, "px;left:", d.x, "px;")    }    vmlStr.push(' ">' ,                '<g_vml_:image src="', image.src, '"',                ' style="width:', dw, ';',                ' height:', dh, ';"',                ' cropleft="', sx / w, '"',                ' croptop="', sy / h, '"',                ' cropright="', (w - sx - sw) / w, '"',                ' cropbottom="', (h - sy - sh) / h, '"',                ' />',                '</g_vml_:group>');    this.element_.insertAdjacentHTML("BeforeEnd",                                    vmlStr.join(""));  };
meta: 4951	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/4951/e3b078327d4b51b9bce265f702635d5dcc939ddd/excanvas.js/clean/excanvas.js