1/*
2	js functions and code common to all pages
3*/
4
5/* define some global variables for this request */
6global.page = new Object();
7
8/* fill in some defaults */
9global.page.title = "Samba Web Administration Tool";
10
11libinclude("base.js");
12
13/* to cope with browsers that don't support cookies we append the sessionid
14   to the URI */
15global.SESSIONURI = "";
16if (request['COOKIE_SUPPORT'] != "True") {
17	global.SESSIONURI="?SwatSessionId=" + request['SESSION_ID'];
18}
19
20/*
21  possibly adjust a local URI to have the session id appended
22  used for browsers that don't support cookies
23*/
24function session_uri(uri) {
25	return uri + global.SESSIONURI;
26}
27
28/*
29  like printf, but to the web page
30*/
31function writef()
32{
33	write(vsprintf(arguments));
34}
35
36/*
37  like writef with a <br>
38*/
39function writefln()
40{
41	write(vsprintf(arguments));
42	write("<br/>\n");
43}
44
45
46/* if the browser was too dumb to set the HOST header, then
47   set it now */
48if (headers['HOST'] == undefined) {
49	headers['HOST'] = server['SERVER_HOST'] + ":" + server['SERVER_PORT'];
50}
51
52/*
53  show the page header. page types include "plain" and "column"
54*/
55function page_header(pagetype, title, menu) {
56	global.page.pagetype = pagetype;
57	global.page.title = title;
58	global.page.menu = menu;
59	include("/scripting/header_" + pagetype + ".esp");
60}
61
62/*
63  show the page footer, getting the page type from page.pagetype
64  set in page_header()
65*/
66function page_footer() {
67	include("/scripting/footer_" + global.page.pagetype + ".esp");
68}
69
70
71/*
72  display a table element
73*/
74function table_element(i, o) {
75	write("<tr><td>" + i + "</td><td>");
76	if (typeof(o[i]) == "object") {
77		var j, first;
78		first = true;
79		for (j in o[i]) {
80			if (first == false) {
81				write("<br />");
82			}
83			write(o[i][j]);
84			first = false;
85		}
86	} else {
87		write(o[i]);
88	}
89	write("</td></tr>\n");
90}
91
92/*
93  display a ejs object as a table. The header is optional
94*/
95function simple_table(v) {
96	if (v.length == 0) {
97		return;
98	}
99	write("<table class=\"data\">\n");
100	var r;
101	for (r in v) {
102		table_element(r, v);
103	}
104	write("</table>\n");
105}
106
107/*
108  display an array of objects, with the header for each element from the given
109  attribute
110*/
111function multi_table(array, header) {
112	var i, n;
113	write("<table class=\"data\">\n");
114	for (i=0;i<array.length;i++) {
115		var r, v = array[i];
116		write('<tr><th colspan="2">' + v[header] + "</th></tr>\n");
117		for (r in v) {
118			if (r != header) {
119			    table_element(r, v);
120			}
121		}
122	}
123	write("</table>\n");
124}
125
126