| | |
| | | this.ie = (document.all) ? true : false; |
| | | this.ie4 = (this.ie && !this.dom); |
| | | this.ie5 = (this.dom && this.appver.indexOf('MSIE 5')>0); |
| | | this.ie6 = (this.dom && this.appver.indexOf('MSIE 6')>0); |
| | | this.ie8 = (this.dom && this.appver.indexOf('MSIE 8')>0); |
| | | 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)); |
| | |
| | | { |
| | | var ret, h; |
| | | if (typeof e == 'undefined') |
| | | e = {}; |
| | | if (typeof e == 'object') |
| | | e = this; |
| | | else if (typeof e == 'object') |
| | | e.event = evt; |
| | | |
| | | |
| | | if (this._events && this._events[evt] && !this._event_exec) { |
| | | this._event_exec = true; |
| | | for (var i=0; i < this._events[evt].length; i++) { |
| | | if ((h = this._events[evt][i])) { |
| | | if (typeof h.func == 'function') |
| | | ret = h.func.call ? h.func.call(h.obj, this, e) : h.func(this, e); |
| | | ret = h.func.call ? h.func.call(h.obj, e) : h.func(e); |
| | | else if (typeof h.obj[h.func] == 'function') |
| | | ret = h.obj[h.func](this, e); |
| | | ret = h.obj[h.func](e); |
| | | |
| | | // cancel event execution |
| | | if (typeof ret != 'undefined' && !ret) |
| | |
| | | } |
| | | |
| | | |
| | | // find a value in a specific array and returns the index |
| | | function find_in_array() |
| | | { |
| | | var args = find_in_array.arguments; |
| | | if(!args.length) return -1; |
| | | |
| | | var haystack = typeof(args[0])=='object' ? args[0] : args.length>1 && typeof(args[1])=='object' ? args[1] : new Array(); |
| | | var needle = typeof(args[0])!='object' ? args[0] : args.length>1 && typeof(args[1])!='object' ? args[1] : ''; |
| | | var nocase = args.length==3 ? args[2] : false; |
| | | |
| | | if(!haystack.length) return -1; |
| | | |
| | | for(var i=0; i<haystack.length; i++) |
| | | if(nocase && haystack[i].toLowerCase()==needle.toLowerCase()) |
| | | return i; |
| | | else if(haystack[i]==needle) |
| | | return i; |
| | | |
| | | return -1; |
| | | // recursively copy an object |
| | | function rcube_clone_object(obj) |
| | | { |
| | | var out = {}; |
| | | |
| | | for (var key in obj) { |
| | | if (obj[key] && typeof obj[key] == 'object') |
| | | out[key] = clone_object(obj[key]); |
| | | else |
| | | out[key] = obj[key]; |
| | | } |
| | | |
| | | |
| | | return out; |
| | | } |
| | | |
| | | // make a string URL safe |
| | | function urlencode(str) |
| | |
| | | { |
| | | this.log = function(msg) |
| | | { |
| | | var box = rcube_find_object('console'); |
| | | var box = rcube_find_object('dbgconsole'); |
| | | |
| | | if (box) { |
| | | if (msg.charAt(msg.length-1)=='\n') |
| | |
| | | |
| | | this.reset = function() |
| | | { |
| | | var box = rcube_find_object('console'); |
| | | var box = rcube_find_object('dbgconsole'); |
| | | if (box) |
| | | box.innerText = box.value = ''; |
| | | }; |