blob: 33915000acd558a53becac1b6d687b1ee8564e98 [file] [log] [blame]
/*
* 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;
}