82 lines
3.0 KiB
JavaScript
82 lines
3.0 KiB
JavaScript
/*
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU AFFERO General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
or see http://www.gnu.org/licenses/agpl.txt.
|
|
*/
|
|
|
|
// OSRM old/cross browser support
|
|
// [browser detection and routines for old/cross browser support]
|
|
|
|
|
|
// browser detection (runs anonymous function to prevent local variables cluttering global namespace)
|
|
(function() {
|
|
var useragent = navigator.userAgent;
|
|
|
|
OSRM.Browser = {
|
|
FF3: useragent.search(/Firefox\/3/),
|
|
IE6_8: useragent.search(/MSIE (6|7|8)/),
|
|
IE6_9: useragent.search(/MSIE (6|7|8|9)/)
|
|
};
|
|
}());
|
|
|
|
|
|
// compatibility tools
|
|
|
|
//add document.head reference for older browsers
|
|
document.head = document.head || document.getElementsByTagName('head')[0];
|
|
|
|
// supply getElementsByClassName method for older browser
|
|
OSRM.Browser.getElementsByClassName = function( node, classname ) {
|
|
var a = [];
|
|
var re = new RegExp('(^| )'+classname+'( |$)');
|
|
var els = node.getElementsByTagName("*");
|
|
for(var i=0,j=els.length; i<j; i++)
|
|
if(re.test(els[i].className))a.push(els[i]);
|
|
return a;
|
|
};
|
|
|
|
// call a function when DOM has finished loading and remove event handler (optionally pass a different window object)
|
|
OSRM.Browser.onLoadHandler = function( function_pointer, the_window ) {
|
|
the_window = the_window || window; // default document
|
|
var the_document = the_window.document;
|
|
|
|
if(the_window.addEventListener) { // FF, CH, IE9+
|
|
var temp_function = function() {
|
|
the_window.removeEventListener("DOMContentLoaded", arguments.callee, false);
|
|
function_pointer.call();
|
|
};
|
|
the_window.addEventListener("DOMContentLoaded", temp_function, false);
|
|
}
|
|
|
|
else if(the_document.attachEvent) { // IE8-
|
|
var temp_function = function() {
|
|
if ( the_document.readyState === "interactive" || the_document.readyState === "complete" ) {
|
|
the_document.detachEvent("onreadystatechange", arguments.callee);
|
|
function_pointer.call();
|
|
}
|
|
};
|
|
the_document.attachEvent("onreadystatechange", temp_function);
|
|
}
|
|
};
|
|
OSRM.Browser.onUnloadHandler = function( function_pointer, the_window ) {
|
|
the_window = the_window || window; // default document
|
|
var the_document = the_window.document;
|
|
|
|
if(the_window.addEventListener) { // FF, CH, IE9+
|
|
the_window.addEventListener("unload", function_pointer, false);
|
|
}
|
|
else if(the_document.attachEvent) { // IE8-
|
|
the_document.attachEvent("onunload", function_pointer);
|
|
}
|
|
}; |