mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-24 06:19:30 +00:00
Update prototype.js to fix IE 10 issues
Updated to commit @8c9ead49ec of https://github.com/sstephenson/prototype/
This commit is contained in:
121
UI/WebServerResources/prototype.js
vendored
121
UI/WebServerResources/prototype.js
vendored
@@ -399,7 +399,7 @@ Object.extend(Function.prototype, (function() {
|
||||
var __method = this, args = slice.call(arguments, 1);
|
||||
|
||||
var bound = function() {
|
||||
var a = merge(args, arguments), c = context;
|
||||
var a = merge(args, arguments);
|
||||
var c = this instanceof bound ? this : context;
|
||||
return __method.apply(c, a);
|
||||
};
|
||||
@@ -577,7 +577,8 @@ Object.extend(String.prototype, (function() {
|
||||
}
|
||||
|
||||
while (source.length > 0) {
|
||||
if (match = source.match(pattern)) {
|
||||
match = source.match(pattern)
|
||||
if (match && match[0].length > 0) {
|
||||
result += source.slice(0, match.index);
|
||||
result += String.interpret(replacement(match));
|
||||
source = source.slice(match.index + match[0].length);
|
||||
@@ -652,7 +653,10 @@ Object.extend(String.prototype, (function() {
|
||||
var key = decodeURIComponent(pair.shift()),
|
||||
value = pair.length > 1 ? pair.join('=') : pair[0];
|
||||
|
||||
if (value != undefined) value = decodeURIComponent(value);
|
||||
if (value != undefined) {
|
||||
value = value.gsub('+', ' ');
|
||||
value = decodeURIComponent(value);
|
||||
}
|
||||
|
||||
if (key in hash) {
|
||||
if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
|
||||
@@ -746,12 +750,17 @@ Object.extend(String.prototype, (function() {
|
||||
return this.indexOf(pattern) > -1;
|
||||
}
|
||||
|
||||
function startsWith(pattern) {
|
||||
return this.lastIndexOf(pattern, 0) === 0;
|
||||
function startsWith(pattern, position) {
|
||||
position = Object.isNumber(position) ? position : 0;
|
||||
return this.lastIndexOf(pattern, position) === position;
|
||||
}
|
||||
|
||||
function endsWith(pattern) {
|
||||
var d = this.length - pattern.length;
|
||||
function endsWith(pattern, position) {
|
||||
pattern = String(pattern);
|
||||
position = Object.isNumber(position) ? position : this.length;
|
||||
if (position < 0) position = 0;
|
||||
if (position > this.length) position = this.length;
|
||||
var d = position - pattern.length;
|
||||
return d >= 0 && this.indexOf(pattern, d) === d;
|
||||
}
|
||||
|
||||
@@ -793,8 +802,8 @@ Object.extend(String.prototype, (function() {
|
||||
isJSON: isJSON,
|
||||
evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,
|
||||
include: include,
|
||||
startsWith: startsWith,
|
||||
endsWith: endsWith,
|
||||
startsWith: String.prototype.startsWith || startsWith,
|
||||
endsWith: String.prototype.endsWith || endsWith,
|
||||
empty: empty,
|
||||
blank: blank,
|
||||
interpolate: interpolate
|
||||
@@ -921,8 +930,8 @@ var Enumerable = (function() {
|
||||
}
|
||||
|
||||
function include(object) {
|
||||
if (Object.isFunction(this.indexOf))
|
||||
if (this.indexOf(object) != -1) return true;
|
||||
if (Object.isFunction(this.indexOf) && this.indexOf(object) != -1)
|
||||
return true;
|
||||
|
||||
var found = false;
|
||||
this.each(function(value) {
|
||||
@@ -1406,11 +1415,13 @@ var Hash = Class.create(Enumerable, (function() {
|
||||
|
||||
|
||||
function _each(iterator, context) {
|
||||
var i = 0;
|
||||
for (var key in this._object) {
|
||||
var value = this._object[key], pair = [key, value];
|
||||
pair.key = key;
|
||||
pair.value = value;
|
||||
iterator.call(context, pair);
|
||||
iterator.call(context, pair, i);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1464,7 +1475,7 @@ var Hash = Class.create(Enumerable, (function() {
|
||||
function toQueryPair(key, value) {
|
||||
if (Object.isUndefined(value)) return key;
|
||||
|
||||
var value = String.interpret(value);
|
||||
value = String.interpret(value);
|
||||
|
||||
value = value.gsub(/(\r)?\n/, '\r\n');
|
||||
value = encodeURIComponent(value);
|
||||
@@ -1580,9 +1591,9 @@ var ObjectRange = Class.create(Enumerable, (function() {
|
||||
}
|
||||
|
||||
function _each(iterator, context) {
|
||||
var value = this.start;
|
||||
while (this.include(value)) {
|
||||
iterator.call(context, value);
|
||||
var value = this.start, i;
|
||||
for (i = 0; this.include(value); i++) {
|
||||
iterator.call(context, value, i);
|
||||
value = value.succ();
|
||||
}
|
||||
}
|
||||
@@ -1777,7 +1788,8 @@ Ajax.Request = Class.create(Ajax.Base, {
|
||||
}
|
||||
|
||||
for (var name in headers)
|
||||
this.transport.setRequestHeader(name, headers[name]);
|
||||
if (headers[name] != null)
|
||||
this.transport.setRequestHeader(name, headers[name]);
|
||||
},
|
||||
|
||||
success: function() {
|
||||
@@ -2628,6 +2640,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
}
|
||||
|
||||
function down(element, expression, index) {
|
||||
if (arguments.length === 1) return firstDescendant(element);
|
||||
element = $(element), expression = expression || 0, index = index || 0;
|
||||
|
||||
if (Object.isNumber(expression))
|
||||
@@ -2755,9 +2768,9 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
}
|
||||
|
||||
var PROBLEMATIC_ATTRIBUTE_READING = (function() {
|
||||
DIV.setAttribute('onclick', Prototype.emptyFunction);
|
||||
DIV.setAttribute('onclick', []);
|
||||
var value = DIV.getAttribute('onclick');
|
||||
var isFunction = (typeof value === 'function');
|
||||
var isFunction = Object.isArray(value);
|
||||
DIV.removeAttribute('onclick');
|
||||
return isFunction;
|
||||
})();
|
||||
@@ -2783,7 +2796,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
name = table.names[attr] || attr;
|
||||
value = attributes[attr];
|
||||
if (table.values[attr])
|
||||
name = table.values[attr](element, value);
|
||||
name = table.values[attr](element, value) || name;
|
||||
if (value === false || value === null)
|
||||
element.removeAttribute(name);
|
||||
else if (value === true)
|
||||
@@ -3104,7 +3117,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
}
|
||||
|
||||
function hasLayout_IE(element) {
|
||||
if (!element.currentStyle.hasLayout)
|
||||
if (!element.currentStyle || !element.currentStyle.hasLayout)
|
||||
element.style.zoom = 1;
|
||||
return element;
|
||||
}
|
||||
@@ -3432,6 +3445,14 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
|
||||
Element.addMethods(methods);
|
||||
|
||||
function destroyCache_IE() {
|
||||
DIV = null;
|
||||
ELEMENT_CACHE = null;
|
||||
}
|
||||
|
||||
if (window.attachEvent)
|
||||
window.attachEvent('onunload', destroyCache_IE);
|
||||
|
||||
})(this);
|
||||
(function() {
|
||||
|
||||
@@ -4066,7 +4087,8 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
function viewportOffset(forElement) {
|
||||
var valueT = 0, valueL = 0, docBody = document.body;
|
||||
|
||||
var element = $(forElement);
|
||||
forElement = $(forElement);
|
||||
var element = forElement;
|
||||
do {
|
||||
valueT += element.offsetTop || 0;
|
||||
valueL += element.offsetLeft || 0;
|
||||
@@ -4099,10 +4121,11 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
||||
var layout = element.getLayout();
|
||||
|
||||
element.store('prototype_absolutize_original_styles', {
|
||||
left: element.getStyle('left'),
|
||||
top: element.getStyle('top'),
|
||||
width: element.getStyle('width'),
|
||||
height: element.getStyle('height')
|
||||
position: element.getStyle('position'),
|
||||
left: element.getStyle('left'),
|
||||
top: element.getStyle('top'),
|
||||
width: element.getStyle('width'),
|
||||
height: element.getStyle('height')
|
||||
});
|
||||
|
||||
element.setStyle({
|
||||
@@ -5799,18 +5822,23 @@ var Form = {
|
||||
accumulator = function(result, key, value) {
|
||||
if (key in result) {
|
||||
if (!Object.isArray(result[key])) result[key] = [result[key]];
|
||||
result[key].push(value);
|
||||
result[key] = result[key].concat(value);
|
||||
} else result[key] = value;
|
||||
return result;
|
||||
};
|
||||
} else {
|
||||
initial = '';
|
||||
accumulator = function(result, key, value) {
|
||||
value = value.gsub(/(\r)?\n/, '\r\n');
|
||||
value = encodeURIComponent(value);
|
||||
value = value.gsub(/%20/, '+');
|
||||
return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value;
|
||||
}
|
||||
accumulator = function(result, key, values) {
|
||||
if (!Object.isArray(values)) {values = [values];}
|
||||
if (!values.length) {return result;}
|
||||
var encodedKey = encodeURIComponent(key).gsub(/%20/, '+');
|
||||
return result + (result ? "&" : "") + values.map(function (value) {
|
||||
value = value.gsub(/(\r)?\n/, '\r\n');
|
||||
value = encodeURIComponent(value);
|
||||
value = value.gsub(/%20/, '+');
|
||||
return encodedKey + "=" + value;
|
||||
}).join("&");
|
||||
};
|
||||
}
|
||||
|
||||
return elements.inject(initial, function(result, element) {
|
||||
@@ -6244,17 +6272,14 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
node = currentTarget;
|
||||
}
|
||||
|
||||
if (node.nodeType == Node.TEXT_NODE)
|
||||
node = node.parentNode;
|
||||
|
||||
return Element.extend(node);
|
||||
return node.nodeType == Node.TEXT_NODE ? node.parentNode : node;
|
||||
}
|
||||
|
||||
function findElement(event, expression) {
|
||||
var element = _element(event), match = Prototype.Selector.match;
|
||||
var element = _element(event), selector = Prototype.Selector;
|
||||
if (!expression) return Element.extend(element);
|
||||
while (element) {
|
||||
if (Object.isElement(element) && match(element, expression))
|
||||
if (Object.isElement(element) && selector.match(element, expression))
|
||||
return Element.extend(element);
|
||||
element = element.parentNode;
|
||||
}
|
||||
@@ -6535,8 +6560,8 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
|
||||
|
||||
function stopObservingElement(element) {
|
||||
var uid = getUniqueElementID(element),
|
||||
registry = getRegistryForElement(element, uid);
|
||||
var uid = getUniqueElementID(element), registry = GLOBAL.Event.cache[uid];
|
||||
if (!registry) return;
|
||||
|
||||
destroyRegistryForElement(element, uid);
|
||||
|
||||
@@ -6716,9 +6741,9 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
return createMouseEnterLeaveResponder(uid, eventName, handler);
|
||||
|
||||
return function(event) {
|
||||
var cacheEntry = Event.cache[uid];
|
||||
var element = cacheEntry.element;
|
||||
if (!Event.cache) return;
|
||||
|
||||
var element = Event.cache[uid].element;
|
||||
Event.extend(event, element);
|
||||
handler.call(element, event);
|
||||
};
|
||||
@@ -6726,7 +6751,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
|
||||
function createResponderForCustomEvent(uid, eventName, handler) {
|
||||
return function(event) {
|
||||
var cacheEntry = Event.cache[uid], element = cacheEntry.element;
|
||||
var element = Event.cache[uid].element;
|
||||
|
||||
if (Object.isUndefined(event.eventName))
|
||||
return false;
|
||||
@@ -6741,7 +6766,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
|
||||
function createMouseEnterLeaveResponder(uid, eventName, handler) {
|
||||
return function(event) {
|
||||
var cacheEntry = Event.cache[uid], element = cacheEntry.element;
|
||||
var element = Event.cache[uid].element;
|
||||
|
||||
Event.extend(event, element);
|
||||
var parent = event.relatedTarget;
|
||||
@@ -6791,6 +6816,12 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
|
||||
fireContentLoadedEvent();
|
||||
}
|
||||
|
||||
|
||||
if (document.readyState === 'complete') {
|
||||
fireContentLoadedEvent();
|
||||
return;
|
||||
}
|
||||
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user