| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| var toggledRows = new Array(); |
| var toggledCols = new Array(); |
| var mouseX = 0; |
| var mouseY = 0; |
| var passvar = 0; |
| |
| var browser = ""; |
| function setBrowser() { |
| browser = navigator.appName; |
| if(navigator.appName == 'Netscape') { |
| var regex = new RegExp('Safari'); |
| if(navigator.appVersion.match(regex)) { |
| browser = 'Safari'; |
| } |
| } |
| else if(navigator.appName == 'Microsoft Internet Explorer') { |
| browser = 'IE'; |
| } |
| } |
| setBrowser(); |
| |
| function init() { |
| if(typeof(dojo) == 'undefined') { |
| setTimeout(init, 250); |
| return; |
| } |
| if(typeof(tzoffset) != undefined && tzoffset == 'unset') { |
| var now = new Date(); |
| var data = {mode: 'AJsetTZoffset', |
| offset: now.getTimezoneOffset()}; |
| RPCwrapper(data, null, 0); |
| } |
| } |
| |
| function _(str) { |
| if(typeof usenls == 'undefined' || |
| typeof nlsmessages == 'undefined' || |
| ! (str in nlsmessages) || |
| nlsmessages[str] == '') |
| return str; |
| return nlsmessages[str]; |
| } |
| |
| Date.prototype.getDayName = function() { |
| return [_('Sunday'), _('Monday'), _('Tuesday'), _('Wednesday'), _('Thursday'), _('Friday'), _('Saturday')][this.getDay()]; |
| } |
| |
| function testJS() { |
| if(document.getElementById('testjavascript')) |
| document.getElementById('testjavascript').value = '1'; |
| } |
| |
| function RPCwrapper(data, CB, dojson, timeout) { |
| if(typeof timeout === 'undefined') |
| timeout = 15000; |
| if(dojson) { |
| return dojo.xhrPost({ |
| url: 'index.php', |
| load: function(data, ioArgs) {returnCheck(CB, data, ioArgs);}, |
| //load: CB, |
| //handleAs: "json", |
| error: errorHandler, |
| content: data, |
| timeout: timeout |
| }); |
| } |
| else { |
| return dojo.xhrPost({ |
| url: 'index.php', |
| load: CB, |
| error: errorHandler, |
| content: data, |
| timeout: timeout |
| }); |
| } |
| } |
| |
| function returnCheck(CB, data, ioArgs) { |
| try { |
| var json = dojo.fromJson(data); |
| } |
| catch(error) { |
| if((! data.match(/-- continuationserror --/)) && |
| (data.match(/<html/) || ! error.message.match(/syntax error/))) { |
| alert(_('Error encountered:') + " " + _('Please try again later')); |
| return; |
| } |
| else if(data.match(/-- continuationserror --/)) { |
| var i = data.indexOf('<div id="continuationserrormessage'); |
| i = data.indexOf('>', i) + 2; |
| var j = data.indexOf('</div>', i); |
| data = data.slice(i, j); |
| } |
| var div = document.createElement('div'); |
| div.innerHTML = data; |
| var msg = div.textContent || div.innerText || ""; |
| alert(_('Error encountered:') + '\n\n' + msg); |
| return; |
| } |
| CB(json, ioArgs); |
| } |
| |
| Array.prototype.inArray = function(data) { |
| for(var i = 0; i < this.length; i++) { |
| if(this[i] === data) { |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| Array.prototype.search = function(data) { |
| for (var i = 0; i < this.length; i++) { |
| if(this[i] === data) { |
| return i; |
| } |
| } |
| return false; |
| } |
| |
| function generalCB(data, ioArgs) { |
| unsetLoading(); |
| var regex = new RegExp('^<!DOCTYPE html'); |
| if(data.match(regex)) { |
| var mesg = 'A minor error has occurred. It is probably safe to ' + |
| 'ignore. However, if you keep getting this message and ' + |
| 'are unable to use VCL, you may contact the ' + |
| 'administrators of this site for further assistance.'; |
| alert(mesg); |
| var d = {mode: 'errorrpt', |
| data: data}; |
| RPCwrapper(d, function(data, ioArgs) {}); |
| return; |
| } |
| eval(data); |
| } |
| |
| var errorHandler = function(error, ioArgs) { |
| /*if(error.name == 'cancel') |
| return; |
| alert('AJAX Error: ' + error.message + '\nLine ' + error.lineNumber + ' in ' + error.fileName);*/ |
| //console.log(error); |
| } |
| |
| function errorHandler(data, ioArgs) { |
| alert('Error encountered while processing AJAX callback'); |
| } |
| |
| function AJdojoCreate(objid) { |
| if(dojo.byId(objid)) { |
| dojo.parser.parse(document.getElementById(objid)); |
| } |
| } |
| |
| function setLoading() { |
| document.body.style.cursor = 'wait'; |
| if(dijit.byId('workingDialog')) |
| dijit.byId('workingDialog').show(); |
| } |
| |
| function unsetLoading() { |
| document.body.style.cursor = 'default'; |
| if(dijit.byId('workingDialog')) |
| dijit.byId('workingDialog').hide(); |
| } |
| |
| function updateMouseXY(e) { |
| if(e) { |
| mouseX = e.pageX; |
| mouseY = e.pageY; |
| } |
| else if(event) { |
| mouseX = event.clientX + document.documentElement.scrollLeft; |
| mouseY = event.clientY + document.documentElement.scrollTop; |
| } |
| } |
| |
| function findPosX(obj) { |
| var curleft = 0; |
| if(obj.offsetParent) |
| while(1) { |
| curleft += obj.offsetLeft; |
| if(!obj.offsetParent) |
| break; |
| obj = obj.offsetParent; |
| } |
| else if(obj.x) |
| curleft += obj.x; |
| return curleft; |
| } |
| |
| function findPosY(obj) { |
| var curtop = 0; |
| if(obj.offsetParent) |
| while(1) { |
| curtop += obj.offsetTop; |
| if(!obj.offsetParent) |
| break; |
| obj = obj.offsetParent; |
| } |
| else if(obj.y) |
| curtop += obj.y; |
| return curtop; |
| } |
| |
| function showScriptOnly() { |
| if(!document.styleSheets) |
| return; |
| var cssobj = new Array(); |
| if(document.styleSheets[0].cssRules) // Standards Compliant |
| cssobj = document.styleSheets[0].cssRules; |
| else |
| cssobj = document.styleSheets[0].rules; // IE |
| var stop = 0; |
| for(var i = 0; i < cssobj.length; i++) { |
| if(cssobj[i].selectorText) { |
| if(cssobj[i].selectorText.toLowerCase() == '.scriptonly') { |
| //cssobj[i].style.display = "inline"; |
| cssobj[i].style.cssText = "display: inline;"; |
| stop++; |
| } |
| if(cssobj[i].selectorText.toLowerCase() == '.scriptoff') { |
| cssobj[i].style.cssText = "display: none;"; |
| stop++; |
| } |
| if(stop > 1) |
| return; |
| } |
| } |
| } |
| |
| function showGroupInfo(data, ioArgs) { |
| var members = data.items.members; |
| var mx = data.items.x; |
| var my = data.items.y; |
| var text = ""; |
| for(var i = 0; i < members.length; i++) { |
| text = text + members[i] + '<br>'; |
| } |
| var obj = document.getElementById('content'); |
| var x = findPosX(obj); |
| var y = findPosY(obj); |
| obj = document.getElementById('listitems'); |
| obj.innerHTML = text; |
| obj.style.left = mx - x - obj.clientWidth; |
| obj.style.top = my - y - obj.clientWidth; |
| obj.style.zIndex = 10; |
| } |
| |
| function checkNewLocalPassword() { |
| var pwd1 = document.getElementById('newpassword'); |
| var pwd2 = document.getElementById('confirmpassword'); |
| var stat = document.getElementById('pwdstatus'); |
| if(pwd1.value == "" && pwd2.value == "") { |
| stat.innerHTML = ''; |
| } |
| else if(pwd1.value == pwd2.value) { |
| stat.innerHTML = '<font color="#008000">' + _('match') + '</font>'; |
| } |
| else { |
| stat.innerHTML = '<font color="red">' + _('no match') + '</font>'; |
| } |
| } |
| |
| function sortSelect(selobj) { |
| var values = new Array(); |
| var texts = new Array(); |
| for(var i = 0; i < selobj.options.length; i++) { |
| values[selobj.options[i].text] = selobj.options[i].value; |
| texts[i] = selobj.options[i].text; |
| } |
| texts.sort(ignoreCaseSort); |
| for(var i = 0; i < selobj.options.length; i++) { |
| selobj.options[i].text = texts[i]; |
| selobj.options[i].value = values[texts[i]]; |
| } |
| } |
| |
| function ignoreCaseSort(a, b) { |
| a = a.toLowerCase(); |
| b = b.toLowerCase(); |
| if(a > b) |
| return 1; |
| if(a < b) |
| return -1; |
| return 0; |
| } |
| |
| function getSelectText(objid) { |
| if(dijit.byId(objid)) |
| return dijit.byId(objid).textbox.value; |
| var obj = dojo.byId(objid); |
| return obj.options[obj.selectedIndex].text; |
| } |
| |
| function getSelectValue(objid) { |
| if(dijit.byId(objid)) |
| return dijit.byId(objid).value; |
| return dojo.byId(objid).value; |
| } |
| |
| function get12from24(hour) { |
| if(hour == 0) |
| return {hour: 12, meridian: 'am'}; |
| if(hour < 12) |
| return {hour: hour, meridian: 'am'}; |
| if(hour == 12) |
| return {hour: hour, meridian: 'pm'}; |
| return {hour: hour - 12, meridian: 'pm'}; |
| } |
| |
| function hideDijitButton(id) { |
| dojo.style(dijit.byId(id).domNode, { |
| display: 'none' |
| }); |
| } |
| |
| function showDijitButton(id) { |
| dojo.style(dijit.byId(id).domNode, { |
| display: 'inline' |
| }); |
| } |
| |
| function recenterDijitDialog(id) { |
| if(dijit.byId(id)._relativePosition) |
| delete dijit.byId(id)._relativePosition; |
| dijit.byId(id)._position(); |
| } |
| |
| function resizeRecenterDijitDialog(id) { |
| // taken from Dialog.js _size function |
| /*var d = dijit.byId(id); |
| var mb = dojo._getMarginSize(d.domNode); |
| var viewport = dojo.window.getBox(); |
| if(mb.h >= viewport.h) { |
| // Reduce size of dialog contents so that dialog fits in viewport |
| var h = Math.min(mb.h, Math.floor(viewport.h * 0.75)); |
| dojo.style(d.containerNode, { |
| height: h + "px", |
| overflow: "auto", |
| position: "relative" // workaround IE bug moving scrollbar or dragging dialog |
| }); |
| }*/ |
| dijit.byId(id)._size(); |
| recenterDijitDialog(id); |
| } |
| |
| function checkValidatedObj(objid, errobj) { |
| if(dijit.byId(objid) && ! dijit.byId(objid).get('disabled') && |
| 'isValid' in dijit.byId(objid) && ! dijit.byId(objid).isValid()) { |
| dijit.byId(objid)._hasBeenBlurred = true; |
| dijit.byId(objid).validate(); |
| //dijit.byId(objid).focus(); |
| if(typeof errobj == 'string') { |
| if(dijit.byId(errobj)) |
| dijit.byId(errobj).set('value', ''); |
| else if(dojo.byId(errobj)) |
| dojo.byId(errobj).innerHTML = ''; |
| else |
| errobj = null; |
| } |
| if(errobj !== null && typeof errobj != 'undefined') |
| errobj.innerHTML = ''; |
| return 0; |
| } |
| return 1; |
| } |
| |
| function resetSelect(objid) { |
| if(dijit.byId(objid)) { |
| dijit.byId(objid).reset(); |
| return; |
| } |
| var obj = dojo.byId(objid); |
| var found = 0; |
| for(var i = 0; i < obj.options.length; i++) { |
| if(obj.options[i].defaultSelected) { |
| obj.selectedIndex = i; |
| found = 1; |
| } |
| } |
| if(! found) |
| obj.selectedIndex = 0; |
| } |