mirror of
https://github.com/86Box/86box.github.io.git
synced 2026-02-22 09:35:35 -07:00
89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
/* This script is executed by all browsers, so keep it retro-friendly. */
|
|
|
|
/* Polyfills. */
|
|
function addEvent(elem, evtName, func) {
|
|
if (elem.addEventListener)
|
|
return elem.addEventListener(evtName, func);
|
|
evtName = 'on' + evtName;
|
|
if (elem.attachEvent)
|
|
return elem.attachEvent(evtName, func);
|
|
var prevFunc = elem[evtName];
|
|
if (prevFunc) {
|
|
elem[evtName] = function(evt) {
|
|
if (prevFunc(evt) == false)
|
|
return false;
|
|
return func(evt);
|
|
};
|
|
} else {
|
|
elem[evtName] = func;
|
|
}
|
|
}
|
|
if (!Array.prototype.indexOf) {
|
|
Array.prototype.indexOf = function(elem, start) {
|
|
for (var i = start || 0; i < this.length; i++) {
|
|
if (this[i] == elem)
|
|
return i;
|
|
}
|
|
return -1;
|
|
};
|
|
}
|
|
if (!Array.prototype.push) {
|
|
Array.prototype.push = function(elem) {
|
|
this[this.length] = elem;
|
|
};
|
|
}
|
|
if (!Array.prototype.unshift) {
|
|
Array.prototype.unshift = function(elem) {
|
|
for (var i = this.length; i; i--)
|
|
this[i] = this[i - 1];
|
|
this[0] = elem;
|
|
};
|
|
}
|
|
var imgCache = {};
|
|
function getNaturalWidth(img) { /* for the auto-sizing expression on the retro CSS */
|
|
if (img.naturalWidth)
|
|
return img.naturalWidth;
|
|
|
|
/* Cache images by src to avoid wasting memory. */
|
|
var imgObj = imgCache[img.src];
|
|
if (!imgObj) {
|
|
imgObj = new Image();
|
|
imgObj.src = img.src;
|
|
imgCache[img.src] = imgObj;
|
|
}
|
|
return imgObj.width;
|
|
}
|
|
|
|
/* Allow HTML5 elements to be styled on IE6. */
|
|
if (navigator.userAgent.indexOf('MSIE') > -1) {
|
|
document.createElement('nav');
|
|
document.createElement('hero');
|
|
document.createElement('main');
|
|
document.createElement('footer');
|
|
}
|
|
|
|
/* Merge horizontally-neighboring table cells with identical contents. */
|
|
addEvent(window, 'load', function() {
|
|
var tr = document.getElementsByTagName('tr');
|
|
for (var i = 0; i < tr.length; i++) {
|
|
var tdStart = tr[i].firstChild;
|
|
while (tdStart && (tdStart.nodeType != 1))
|
|
tdStart = tdStart.nextSibling;
|
|
if (!tdStart)
|
|
continue;
|
|
var td = tdStart.nextSibling;
|
|
while (td) {
|
|
var tdNext = td.nextSibling;
|
|
if (td.nodeType != 1) {
|
|
/* Ignore non-elements. */
|
|
} else if (td.innerHTML == tdStart.innerHTML) {
|
|
td.parentNode.removeChild(td);
|
|
tdStart.colSpan = (tdStart.colSpan || 1) + 1;
|
|
} else {
|
|
tdStart = td;
|
|
}
|
|
td = tdNext;
|
|
}
|
|
}
|
|
});
|