| | |
| | | this.dom = document.getElementById ? true : false; |
| | | this.dom2 = document.addEventListener && document.removeEventListener; |
| | | |
| | | this.webkit = this.agent_lc.indexOf('applewebkit') > 0; |
| | | this.ie = (document.all && !window.opera) || (this.win && this.agent_lc.indexOf('trident/') > 0); |
| | | |
| | | if (this.ie) { |
| | | this.ie6 = this.appver.indexOf('MSIE 6') > 0; |
| | | this.ie7 = this.appver.indexOf('MSIE 7') > 0; |
| | | this.ie8 = this.appver.indexOf('MSIE 8') > 0; |
| | | this.ie9 = this.appver.indexOf('MSIE 9') > 0; |
| | | } |
| | | else if (window.opera) { |
| | | this.opera = true; |
| | | this.vendver = opera.version(); |
| | | } |
| | | else { |
| | | 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.safari = !this.chrome && (this.webkit || this.agent_lc.indexOf('safari') > 0); |
| | | this.konq = this.agent_lc.indexOf('konqueror') > 0; |
| | | this.mz = this.dom && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0; |
| | | this.iphone = this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0); |
| | | this.ipad = this.safari && this.agent_lc.indexOf('ipad') > 0; |
| | | this.opera = window.opera ? true : false; |
| | | } |
| | | |
| | | if (!this.vendver) { |
| | | // common version strings |
| | | this.vendver = /(khtml|chrome|safari|applewebkit|opera|msie)(\s|\/)([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$3) : 0; |
| | | this.vendver = /(opera|opr|khtml|chrome|safari|applewebkit|msie)(\s|\/)([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$3) : 0; |
| | | |
| | | // any other (Mozilla, Camino, IE>=11) |
| | | if (!this.vendver) |
| | |
| | | classname += ' iphone'; |
| | | else if (this.ipad) |
| | | classname += ' ipad'; |
| | | else if (this.safari || this.chrome) |
| | | else if (this.webkit) |
| | | classname += ' webkit'; |
| | | |
| | | if (this.mobile) |
| | |
| | | * |
| | | * @param {String} Event name |
| | | * @param {Function} Handler function |
| | | * @return Listener ID (used to remove this handler later on) |
| | | */ |
| | | addEventListener: function(evt, func, obj) |
| | | { |
| | |
| | | this._events[evt] = []; |
| | | |
| | | this._events[evt].push({func:func, obj:obj ? obj : window}); |
| | | |
| | | return this; // chainable |
| | | }, |
| | | |
| | | /** |
| | |
| | | roundcube_browser.prototype.set_cookie = setCookie; |
| | | roundcube_browser.prototype.get_cookie = getCookie; |
| | | |
| | | // tiny replacement for Firebox functionality |
| | | function rcube_console() |
| | | { |
| | | this.log = function(msg) |
| | | { |
| | | var box = rcube_find_object('dbgconsole'); |
| | | |
| | | if (box) { |
| | | if (msg.charAt(msg.length-1)=='\n') |
| | | msg += '--------------------------------------\n'; |
| | | else |
| | | msg += '\n--------------------------------------\n'; |
| | | |
| | | // Konqueror doesn't allow to just change the value of hidden element |
| | | if (bw.konq) { |
| | | box.innerText += msg; |
| | | box.value = box.innerText; |
| | | } else |
| | | box.value += msg; |
| | | } |
| | | }; |
| | | |
| | | this.reset = function() |
| | | { |
| | | var box = rcube_find_object('dbgconsole'); |
| | | if (box) |
| | | box.innerText = box.value = ''; |
| | | }; |
| | | }; |
| | | |
| | | var bw = new roundcube_browser(); |
| | | bw.set_html_class(); |
| | | |
| | |
| | | position = position || 0; |
| | | return this.slice(position, search.length) === search; |
| | | }; |
| | | } |
| | | |
| | | // Make getElementById() case-sensitive on IE |
| | | if (bw.ie) { |
| | | document._getElementById = document.getElementById; |
| | | document.getElementById = function(id) { |
| | | var i = 0, obj = document._getElementById(id); |
| | | |
| | | if (obj && obj.id != id) |
| | | while ((obj = document.all[i]) && obj.id != id) |
| | | i++; |
| | | |
| | | return obj; |
| | | } |
| | | } |
| | | |
| | | // jQuery plugin to emulate HTML5 placeholder attributes on input elements |