]>
Commit | Line | Data |
---|---|---|
8d5d2c82 AM |
1 | /* |
2 | * noVNC: HTML5 VNC client | |
d0c29bb6 | 3 | * Copyright (C) 2011 Joel Martin |
8d5d2c82 AM |
4 | * Licensed under LGPL-3 (see LICENSE.txt) |
5 | * | |
6 | * See README.md for usage and integration instructions. | |
7 | */ | |
8 | ||
9 | "use strict"; | |
10 | /*jslint bitwise: false, white: false */ | |
a59f1cd2 | 11 | /*global window, document */ |
8d5d2c82 AM |
12 | |
13 | // Globals defined here | |
1b097a63 | 14 | var WebUtil = {}, $D; |
8d5d2c82 AM |
15 | |
16 | /* | |
17 | * Simple DOM selector by ID | |
18 | */ | |
e4671910 JM |
19 | if (!window.$D) { |
20 | $D = function (id) { | |
8d5d2c82 AM |
21 | if (document.getElementById) { |
22 | return document.getElementById(id); | |
23 | } else if (document.all) { | |
24 | return document.all[id]; | |
25 | } else if (document.layers) { | |
26 | return document.layers[id]; | |
27 | } | |
28 | return undefined; | |
29 | }; | |
30 | } | |
31 | ||
32 | ||
33 | /* | |
34 | * ------------------------------------------------------ | |
35 | * Namespaced in WebUtil | |
36 | * ------------------------------------------------------ | |
37 | */ | |
38 | ||
39 | // init log level reading the logging HTTP param | |
40 | WebUtil.init_logging = function() { | |
41 | Util._log_level = (document.location.href.match( | |
42 | /logging=([A-Za-z0-9\._\-]*)/) || | |
43 | ['', Util._log_level])[1]; | |
44 | ||
45 | Util.init_logging() | |
46 | } | |
47 | WebUtil.init_logging(); | |
48 | ||
49 | ||
50 | WebUtil.dirObj = function (obj, depth, parent) { | |
51 | var i, msg = "", val = ""; | |
52 | if (! depth) { depth=2; } | |
53 | if (! parent) { parent= ""; } | |
54 | ||
55 | // Print the properties of the passed-in object | |
56 | for (i in obj) { | |
57 | if ((depth > 1) && (typeof obj[i] === "object")) { | |
58 | // Recurse attributes that are objects | |
59 | msg += WebUtil.dirObj(obj[i], depth-1, parent + "." + i); | |
60 | } else { | |
61 | //val = new String(obj[i]).replace("\n", " "); | |
0a920147 JM |
62 | if (typeof(obj[i]) === "undefined") { |
63 | val = "undefined"; | |
64 | } else { | |
65 | val = obj[i].toString().replace("\n", " "); | |
66 | } | |
8d5d2c82 AM |
67 | if (val.length > 30) { |
68 | val = val.substr(0,30) + "..."; | |
69 | } | |
70 | msg += parent + "." + i + ": " + val + "\n"; | |
71 | } | |
72 | } | |
73 | return msg; | |
74 | }; | |
75 | ||
76 | // Read a query string variable | |
77 | WebUtil.getQueryVar = function(name, defVal) { | |
78 | var re = new RegExp('[?][^#]*' + name + '=([^&#]*)'); | |
79 | if (typeof defVal === 'undefined') { defVal = null; } | |
80 | return (document.location.href.match(re) || ['',defVal])[1]; | |
81 | }; | |
82 | ||
83 | ||
84 | /* | |
85 | * Cookie handling. Dervied from: http://www.quirksmode.org/js/cookies.html | |
86 | */ | |
87 | ||
88 | // No days means only for this browser session | |
89 | WebUtil.createCookie = function(name,value,days) { | |
90 | var date, expires; | |
91 | if (days) { | |
92 | date = new Date(); | |
93 | date.setTime(date.getTime()+(days*24*60*60*1000)); | |
94 | expires = "; expires="+date.toGMTString(); | |
95 | } | |
96 | else { | |
97 | expires = ""; | |
98 | } | |
99 | document.cookie = name+"="+value+expires+"; path=/"; | |
100 | }; | |
101 | ||
102 | WebUtil.readCookie = function(name, defaultValue) { | |
103 | var i, c, nameEQ = name + "=", ca = document.cookie.split(';'); | |
104 | for(i=0; i < ca.length; i += 1) { | |
105 | c = ca[i]; | |
106 | while (c.charAt(0) === ' ') { c = c.substring(1,c.length); } | |
107 | if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); } | |
108 | } | |
109 | return (typeof defaultValue !== 'undefined') ? defaultValue : null; | |
110 | }; | |
111 | ||
112 | WebUtil.eraseCookie = function(name) { | |
113 | WebUtil.createCookie(name,"",-1); | |
114 | }; | |
115 | ||
116 | /* | |
117 | * Alternate stylesheet selection | |
118 | */ | |
119 | WebUtil.getStylesheets = function() { var i, links, sheets = []; | |
120 | links = document.getElementsByTagName("link"); | |
121 | for (i = 0; i < links.length; i += 1) { | |
122 | if (links[i].title && | |
123 | links[i].rel.toUpperCase().indexOf("STYLESHEET") > -1) { | |
124 | sheets.push(links[i]); | |
125 | } | |
126 | } | |
127 | return sheets; | |
128 | }; | |
129 | ||
130 | // No sheet means try and use value from cookie, null sheet used to | |
131 | // clear all alternates. | |
132 | WebUtil.selectStylesheet = function(sheet) { | |
133 | var i, link, sheets = WebUtil.getStylesheets(); | |
134 | if (typeof sheet === 'undefined') { | |
135 | sheet = 'default'; | |
136 | } | |
137 | for (i=0; i < sheets.length; i += 1) { | |
138 | link = sheets[i]; | |
139 | if (link.title === sheet) { | |
140 | Util.Debug("Using stylesheet " + sheet); | |
141 | link.disabled = false; | |
142 | } else { | |
143 | //Util.Debug("Skipping stylesheet " + link.title); | |
144 | link.disabled = true; | |
145 | } | |
146 | } | |
147 | return sheet; | |
148 | }; |