forked from hestiacp/hestiacp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.usermode.js
More file actions
75 lines (67 loc) · 1.83 KB
/
Copy pathjquery.usermode.js
File metadata and controls
75 lines (67 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* @author trixta
*/
(function($){
$.userMode = (function(){
var userBg,
timer,
testDiv,
boundEvents = 0;
function testBg(){
testDiv = testDiv || $('<div></div>').css({position: 'absolute', left: '-999em', top: '-999px', width: '0px', height: '0px'}).appendTo('body');
var black = $.curCSS( testDiv.css({backgroundColor: '#000000'})[0], 'backgroundColor', true),
white = $.curCSS( testDiv.css({backgroundColor: '#ffffff'})[0], 'backgroundColor', true),
newBgStatus = (black === white || white === 'transparent');
if(newBgStatus != userBg){
userBg = newBgStatus;
$.event.trigger('_internalusermode');
}
return userBg;
}
function init(){
testBg();
timer = setInterval(testBg, 3000);
}
function stop(){
clearInterval(timer);
testDiv.remove();
testDiv = null;
}
$.event.special.usermode = {
setup: function(){
(!boundEvents && init());
boundEvents++;
var jElem = $(this)
.bind('_internalusermode', $.event.special.usermode.handler);
//always trigger
setTimeout(function(){
jElem.triggerHandler('_internalusermode');
}, 1);
return true;
},
teardown: function(){
boundEvents--;
(!boundEvents && stop());
$(this).unbind('_internalusermode', $.event.special.usermode.handler);
return true;
},
handler: function(e){
e.type = 'usermode';
e.disabled = !userBg;
e.enabled = userBg;
return jQuery.event.handle.apply(this, arguments);
}
};
return {
get: testBg
};
})();
$.fn.userMode = function(fn){
return this[(fn) ? 'bind' : 'trigger']('usermode', fn);
};
$(function(){
$('html').userMode(function(e){
$('html')[e.enabled ? 'addClass' : 'removeClass']('hcm');
});
});
})(jQuery);