Removed /usr/local from CDPATH
[clearscm.git] / clearadm / clearadm.js
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // File:        $RCSfile: clearadm.js,v $
4 // Revision:    $Revision: 1.8 $
5 // Description: Javascript routines for Clearadm
6 // Author:      Andrew@ClearSCM.com
7 // Created:     Wed Dec 29 12:36:47 EST 2010
8 // Modified:    $Date: 2011/01/21 01:00:09 $
9 // Language:    JavaScript
10 //
11 // (c) Copyright 2010, ClearSCM, Inc., all rights reserved.
12 // 
13 ////////////////////////////////////////////////////////////////////////////////
14 function getXMLHTTP () {
15   try {
16     return new XMLHttpRequest ();
17   } catch (e)   {               
18     try {                       
19       return new ActiveXObject ('Microsoft.XMLHTTP');
20     } catch (e) {
21       try {
22         return new ActiveXObject ('Msxml2.XMLHTTP');
23       } catch (e) {
24         return false;
25       } // try
26     } // try
27   } // try
28 } // getXMLHTTP
29
30 function updateTimestamp (system, elementID, filesystem) {
31   var request = getXMLHTTP ();
32   var script  = 'getTimestamp.cgi?system=' + system + '&elementID=' + elementID;
33   
34   var scaling = document.getElementById ('scalingFactor').value;
35   
36   if (scaling) {
37         script += '&scaling=' + scaling;
38   } // if
39   
40   if (filesystem) {
41     script += '&filesystem=' + filesystem; 
42   } // if
43   
44   if (request) {
45     request.onreadystatechange = function () {
46       if (request.readyState == 4) {
47         if (request.status == 200) {
48           document.getElementById (elementID).innerHTML 
49             = request.responseText;
50         } // if
51       } // if
52     } // function
53
54    request.open ('get', script, true);
55    request.send (null);
56   } else {
57         alert ('Unable to create XMLHTTP Request object');
58   } // if
59 } // updateTimestamp
60
61 function updateSystem (system) {
62         updateTimestamp (system, 'startTimestamp');
63         updateTimestamp (system, 'endTimestamp');
64 } // updateSystem
65
66 function updateSystemLink (system) {
67         document.getElementById ('systemLink').innerHTML 
68          = '<a href="systemdetails.cgi?system=' + system + '">System</a>';
69         
70         updateTimestamp (system, 'startTimestamp');
71         updateTimestamp (system, 'endTimestamp');
72 } // updateSystemLink
73
74 function updateFilesystems (system) {
75   var request = getXMLHTTP ();
76   
77   if (request) {
78     request.onreadystatechange = function () {
79       if (request.readyState == 4) {
80         if (request.status == 200) {
81           document.getElementById ('filesystems').innerHTML 
82             = request.responseText;
83         } // if
84       } // if
85     } // function
86
87     request.open ('GET', 'getFilesystems.cgi?system=' + system, true);
88     request.send (null);
89   } else {
90         alert ('Unable to create XMLHTTP Request object');
91   } // if
92 } // updateFilesystems
93
94 function updateFilesystem (system, filesystem) {
95         updateTimestamp (system, 'startTimestamp', filesystem);
96         updateTimestamp (system, 'endTimestamp',   filesystem);
97 } // updateFilesystem
98
99 function trimSpaces (str) {
100   return str.replace (/^\s+|\s+$/g, '');
101 } // trimSpaces
102
103 function validEmailAddress (email) {
104   var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
105   
106   return emailPattern.test (email);  
107 } // validEmailAddress
108
109 function validateAlert (alertrec) {
110         with (alertrec) {
111     if (name.value == '') {
112       alert ("You must specify the alert's name");
113       name.focus ();
114       return false;
115     } // if
116     
117     if (who.value) {
118             if (!validEmailAddress (alertrec.who.value)) {
119         alert ('That email address is invalid!\n'
120             + 'Must be <username>@<domainname>\n'
121             + 'For example: Andrew@ClearSCM.com');
122         return false;
123       } // if
124     } // if
125         } // with
126 } // validateAlert
127
128 function validateNotification (notification) {
129   with (notification) {
130         if (name.value == '') {
131                 alert ("You must specify the notification's name");
132                 name.focus ();
133                 return false;
134         } // if
135         
136         if (cond.value == '') {
137                 alert ('You must specify a condition');
138                 cond.focus ();
139                 return false;
140         } // if
141   } // with
142 } // validateNotification
143
144 function validateSchedule (schedule) {
145   with (schedule) {
146         if (name.value == '') {
147                 alert ("You must specify the schedule's name");
148                 name.focus;
149                 return false;
150         } // if
151         
152     if (isNaN (nbr.value)) {
153         alert ('Frequency is not a number');
154         nbr.focus;
155         return false;
156     } else if (nbr.value < 1 || nbr.value > 999) {
157         alert ('Frequency must be a positive number between 1-999');
158         nbr.focus;
159         return false;
160     } // if
161   } // with
162 } // validateSchedule
163
164 function validateTask (task) {
165   with (task) {
166         if (name.value == '') {
167                 alert ("You must specify the task's name");
168                 name.focus;
169                 return false;
170         } // if
171   } // with
172 } // validateTask
173
174 function validateSystem (system) {
175   with (system) {
176     name.value = trimSpaces (name.value);
177     
178     if (name.value == '') {
179       alert ("You must specify the system's name");
180       name.focus ();
181       return false;
182     } // if
183     
184     admin.value = trimSpaces (admin.value);
185     
186     if (admin.value == '') {
187       alert ("You must specify the admin's name");
188       admin.focus ();
189       return false;
190     } // if
191     
192     if (isNaN (port.value)) {
193         alert ('Port is not a number');
194         port.focus;
195         return false;
196     } else if (port.value < 1 || port.value > 65535) {
197         alert ('Port must be a positive number between 1-65535');
198         port.focus;
199         return false;
200     } // if
201     
202     if (isNaN (loadavgThreshold.value)) {
203         alert ('Loadavg Threshold is not a number');
204         loadavgThreshold.focus;
205         return false;
206     } else if (loadavgThreshold.value < 0 || loadavgThreshold.value > 99.99) {
207         alert ('Loadavg Threshold must be a positive number between 0 - 99.99');
208         loadavgThreshold.focus;
209         return false;
210     } // if
211     
212     email.value = trimSpaces (email.value);
213     
214     if (email.value == '') {
215       alert ("You must specify the admin's email");
216       email.focus ();
217       return false;
218     } else {
219         if (!validEmailAddress (email.value)) {
220                 alert ('That email address is invalid!\n'
221                         + 'Must be <username>@<domainname>\n'
222             + 'For example: Andrew@ClearSCM.com');
223           return false;
224         } // if
225     } // if
226   } // with
227 } // validateSystem
228
229 function AreYouSure (message) {
230   return window.confirm (message);
231 } // AreYouSure