From d6284b4d22d1e6912b01228b7d2a63e9fecbc5fb Mon Sep 17 00:00:00 2001 From: till <till@php.net> Date: Wed, 02 Nov 2011 11:13:42 -0400 Subject: [PATCH] check-in 3.4.6 (without moxieplayer due to a content-spoofing vulnerability) --- program/js/common.js | 83 ++++++++++++++++++++++++++--------------- 1 files changed, 52 insertions(+), 31 deletions(-) diff --git a/program/js/common.js b/program/js/common.js index 00c4b00..831e44a 100644 --- a/program/js/common.js +++ b/program/js/common.js @@ -55,16 +55,13 @@ this.ie7 = (this.dom && this.appver.indexOf('MSIE 7')>0); this.ie6 = (this.dom && !this.ie8 && !this.ie7 && this.appver.indexOf('MSIE 6')>0); - this.mz = (this.dom && this.ver >= 5); // (this.dom && this.product=='Gecko') this.ns = ((this.ver < 5 && this.name == 'Netscape') || (this.ver >= 5 && this.vendor.indexOf('Netscape') >= 0)); - this.ns6 = (this.ns && parseInt(this.vendver) == 6); // (this.mz && this.ns) ? true : false; - this.ns7 = (this.ns && parseInt(this.vendver) == 7); // this.agent.indexOf('Netscape/7')>0); this.chrome = (this.agent_lc.indexOf('chrome') > 0); this.safari = (!this.chrome && (this.agent_lc.indexOf('safari') > 0 || this.agent_lc.indexOf('applewebkit') > 0)); + this.mz = (this.dom && !this.ie && !this.ns && !this.chrome && !this.safari && this.agent.indexOf('Mozilla') >= 0); this.konq = (this.agent_lc.indexOf('konqueror') > 0); this.iphone = (this.safari && this.agent_lc.indexOf('iphone') > 0); this.ipad = (this.safari && this.agent_lc.indexOf('ipad') > 0); - this.opera = window.opera ? true : false; if (this.opera && window.RegExp) @@ -129,10 +126,6 @@ classname += ' iphone'; else if (this.ipad) classname += ' ipad'; - else if (this.ns6) - classname += ' netscape6'; - else if (this.ns7) - classname += ' netscape7'; if (document.documentElement) document.documentElement.className += classname; @@ -178,14 +171,12 @@ var opcode = 0; e = e || window.event; - if (bw.mac && e) { + if (bw.mac && e) opcode += (e.metaKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY); - return opcode; - } - if (e) { + else if (e) opcode += (e.ctrlKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY); - return opcode; - } + + return opcode; }, /** @@ -354,9 +345,26 @@ break; } } + if (ret && ret.event) { + try { + delete ret.event; + } catch (err) { + // IE6-7 doesn't support deleting HTMLFormElement attributes (#1488017) + $(ret).removeAttr('event'); + } + } } this._event_exec = false; + if (e.event) { + try { + delete e.event; + } catch (err) { + // IE6-7 doesn't support deleting HTMLFormElement attributes (#1488017) + $(e).removeAttr('event'); + } + } + return ret; } @@ -385,21 +393,17 @@ parent = arg.parent, obj = document.createElement('DIV'); - with (obj) { - id = this.name; - with (style) { - position = 'absolute'; - visibility = (vis) ? (vis==2) ? 'inherit' : 'visible' : 'hidden'; - left = l+'px'; - top = t+'px'; - if (w) - width = w.toString().match(/\%$/) ? w : w+'px'; - if (h) - height = h.toString().match(/\%$/) ? h : h+'px'; - if (z) - zIndex = z; - } - } + obj.id = this.name; + obj.style.position = 'absolute'; + obj.style.visibility = (vis) ? (vis==2) ? 'inherit' : 'visible' : 'hidden'; + obj.style.left = l+'px'; + obj.style.top = t+'px'; + if (w) + obj.style.width = w.toString().match(/\%$/) ? w : w+'px'; + if (h) + obj.style.height = h.toString().match(/\%$/) ? h : h+'px'; + if (z) + obj.style.zIndex = z; if (parent) parent.appendChild(obj); @@ -613,10 +617,10 @@ return null; } else { - begin += 2; + begin += 2; } - var end = document.cookie.indexOf(";", begin); + var end = dc.indexOf(";", begin); if (end == -1) end = dc.length; @@ -667,6 +671,23 @@ return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; +// Extend Date prototype to detect Standard timezone without DST +// from http://www.michaelapproved.com/articles/timezone-detect-and-ignore-daylight-saving-time-dst/ +Date.prototype.getStdTimezoneOffset = function() +{ + var m = 12, + d = new Date(null, m, 1), + tzo = d.getTimezoneOffset(); + + while (--m) { + d.setUTCMonth(m); + if (tzo != d.getTimezoneOffset()) { + return Math.max(tzo, d.getTimezoneOffset()); + } + } + + return tzo; +} // Make getElementById() case-sensitive on IE if (bw.ie) -- Gitblit v1.9.1