<!--
//GLOBALS
var w3c = (document.getElementById) ? 1:0
var ns4 = (document.layers) ? 1:0 //browser detect for NS4 & W3C standards
var hasCookies = false;
// tests whether the user accepts cookies, and sets a flag.
if(document.cookie == '') {
document.cookie = 'hasCookies=yes';
if (document.cookie.indexOf('hasCookies=yes') != -1) hasCookies = true;
}
else hasCookies = true;
// returns an object reference.
function getObject(obj) {
if (w3c)
var theObj = document.getElementById(obj);
else
if (ns4)
var theObj = eval("document." + obj);
return theObj;
}
// swaps text in a layer.
function swapText(text, divID, innerDivID) {
var content = "<span class=\"commandDesc\">" + text + "</span>";
if (w3c) {
var theObj = getObject(divID);
if (theObj) theObj.innerHTML = text;
}
else if (ns4) {
var innerObj = divID + ".document." + innerDivID;
var theObj = getObject(innerObj);
if (theObj) {
theObj.document.open();
theObj.document.write(content);
theObj.document.close();
}
}
}
// sets a cookie in the browser.
function setCookie (name, value, hours, path) {
if (hasCookies) {
if(hours) {
if ( (typeof(hours) == 'string') && Date.parse(hours) ) var numHours = hours;
else if (typeof(hours) == 'number') var numHours = (new Date((new Date()).getTime() + hours*3600000)).toGMTString();
}
document.cookie = name + '=' + escape(value) + ((numHours)?(';expires=' + numHours):'') + ((path)?';path=' + path:'');
}
}
// reads a cookie from the browser
function readCookie(name) {
if (document.cookie == '') return '';
else {
var firstChar, lastChar;
var theBigCookie = document.cookie;
firstChar = theBigCookie.indexOf(name);
if (firstChar != -1) {
firstChar += name.length + 1;
lastChar = theBigCookie.indexOf(';', firstChar);
if (lastChar == -1) lastChar = theBigCookie.length;
return unescape(theBigCookie.substring(firstChar, lastChar));
}
else return '';
}
}
/* Netscape 4 resize fix */
function WM_netscapeCssFix() {
if (document.WM.WM_netscapeCssFix.initWindowWidth != window.innerWidth || document.WM.WM_netscapeCssFix.initWindowHeight != window.innerHeight) {
document.location = document.location;
}
}
function WM_netscapeCssFixCheckIn() {
if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) {
if (typeof document.WM == 'undefined'){
document.WM = new Object;
}
if (typeof document.WM.WM_scaleFont == 'undefined') {
document.WM.WM_netscapeCssFix = new Object;
document.WM.WM_netscapeCssFix.initWindowWidth = window.innerWidth;
document.WM.WM_netscapeCssFix.initWindowHeight = window.innerHeight;
}
window.onresize = WM_netscapeCssFix;
}
}
WM_netscapeCssFixCheckIn();
function showHideModuleMouseOver(divID) {
var theCookie = readCookie(divID);
if ((theCookie=="e") || (theCookie=="")) {
window.status="Collapse";
}
else {
window.status="Expand";
}
}
function showHideModule(divID, theme) {
var state = toggleFoldyPersistState(divID);
var ok=false;
if(w3c) {
var divIDobj = MM_findObj(divID);
var tlobj = MM_findObj(divID +"tl");
var toggleobj = MM_findObj(divID +"Toggle");
if(divIDobj != null && tlobj != null && toggleobj != null) {
ok=true;
if(state=="c") {
tlobj.src = "../themes/"+theme+"/spacer.gif";
toggleobj.src = "../themes/"+theme+"/module_toggle_closed.gif";
divIDobj.style.display = "none";
} else {
tlobj.src = "../themes/"+theme+"/spacer.gif";
toggleobj.src = "../themes/"+theme+"/module_toggle_open.gif";
divIDobj.style.display = "";
}
}
}
if(!ok){
document.location = document.location;
}
showHideModuleMouseOver(divID);
//window.status = '';
}
function toggleFoldyPersistState(divID) {
var theCookie = readCookie(divID);
var state="e";
if ((theCookie == "e") || (theCookie == "")) {
state="c";
}
setCookie(divID,state,'Wed 01 Jan 2020 00:00:00 GMT','/');
return state;
}
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
// Remove an array item at n
// 0-based
function MM_removeNthArrayItem(array, n) {
var lhs = new Array();
if (n > 0)
lhs = array.slice(0, n);
var rhs = new Array();
if (n < array.length)
rhs = array.slice(n + 1);
var result = lhs.concat(rhs);
return result;
}
// Does the array contain the given string?
function MM_arrayContainsString(array, item) {
if (array == null)
return false;
var count = array.length;
for (i = 0; i < count; i++) {
if (array[i] == item)
return true;
}
return false;
}
// remove the given string from the array of strings
function MM_removeStringFromArray(array, item) {
if (array == null)
return null;
var count = array.length;
for (i = 0; i < count; i++) {
if (array[i] == item)
return MM_removeNthArrayItem(array, i);
}
return array;
}
// a selectedItems array is kept in the form. It is an array of strings, each
// string being the name of a checkbox image. It doesn't actually have to be
// the name="foo" attribute of the HTML object itself, just any arbitrary name
// that is associated with this checkbox. The image name is the actual name of the image.
function MM_toggleItem(form, itemName, imageName, theme) {
if (form.selectedItems == null)
form.selectedItems = new Array();
if (MM_arrayContainsString(form.selectedItems, itemName)) {
form.selectedItems = MM_removeStringFromArray(form.selectedItems, itemName);
document[imageName].src = '../themes/'+theme+'/checkbox_off_16.gif';
//MM_swapImage(imageName, '', '../themes/'+theme+'/checkbox_off_16.gif', '1');
} else {
form.selectedItems[form.selectedItems.length] = itemName;
document[imageName].src = '../themes/'+theme+'/checkbox_on_16.gif';
//MM_swapImage(imageName, '', '../themes/'+theme+'/checkbox_on_16.gif', '1');
}
MM_updateButtons2(form, form.selectedItems);
}
function MM_selectAllItems(form, theme) {
form.selectedItems = new Array();
if (form.checkboxes) {
var checkboxCount = form.checkboxes.length;
for (i = 0; i < checkboxCount; i++) {
var checkbox = form.checkboxes[i];
if (-1 == document[checkbox.mImageName].src.indexOf('dim_16.gif')) {
document[checkbox.mImageName].src = '../themes/'+theme+'/checkbox_on_16.gif';
form.selectedItems[form.selectedItems.length] = checkbox.mName;
}
}
}
MM_updateButtons2(form, form.selectedItems);
}
function MM_deselectAllItems(form, theme) {
form.selectedItems = new Array();
if (form.checkboxes) {
var checkboxCount = form.checkboxes.length;
for (i = 0; i < checkboxCount; i++) {
var checkbox = form.checkboxes[i];
if (-1 == document[checkbox.mImageName].src.indexOf('dim_16.gif')) {
document[checkbox.mImageName].src = '../themes/'+theme+'/checkbox_off_16.gif';
}
}
}
MM_updateButtons2(form, form.selectedItems);
}
// If all items are selected, deselect all. Otherwise select all.
function MM_toggleSelectedItems(form, theme) {
if (!form.selectedItems)
form.selectedItems = new Array();
if (form.checkboxes) {
if (form.selectedItems.length == form.checkboxes.length - MM_countDisabledCheckboxes(form))
MM_deselectAllItems(form, theme);
else
MM_selectAllItems(form, theme);
}
}
// counts the number of disabled checkboxes - used for deselect all
function MM_countDisabledCheckboxes(form) {
var disabledCount = 0;
if (form.checkboxes) {
var checkboxCount = form.checkboxes.length;
for (i = 0; i < checkboxCount; i++) {
var checkbox = form.checkboxes[i];
if (-1 != document[checkbox.mImageName].src.indexOf('dim_16.gif')) {
disabledCount++;
}
}
}
return disabledCount;
}
// See SELECTIONPARAMNAME and SELECTIONPARAMDELIMITER in ListModuleTagBase.java.
function MM_doButtonAction(action, selectedItems) {
// THESE MUST BE IN SYNC WITH ListModuleTagBase.java
var SELECTIONPARAMNAME = 'id';
var SELECTIONPARAMDELIMITER = '**';
// If the action is a javascript action (starts with 'javascript')
// then execute it immediately.
if ((action.indexOf('javascript') == 0) || (action.indexOf('Javascript') == 0)) {
eval(action);
} else {
var okay = true;
// if action starts with "function:" call the function on the selection to see
// if we can continue
if ((action.indexOf('function:') == 0)) {
okay = false;
var idx = action.indexOf(":");
if(idx + 1 < action.length) {
action = action.substr(idx+1);
idx = action.indexOf(",");
if(idx + 1 < action.length) {
var fxn = action.substr(0, idx);
action = action.substr(idx+1);
fxn = eval(fxn);
if(typeof(fxn) == "function") {
okay = fxn(selectedItems);
}
}
}
}
if(okay) {
var params = new String();
if (selectedItems) {
for (i = 0; i < selectedItems.length; i++) {
if (i > 0)
params = params.concat("**");
params = params.concat(selectedItems[i]);
}
}
var url = action;
if (params.length > 0) {
if (url.indexOf('?') == -1)
url = url + '?';
else
url = url + '&';
url = url + 'id=' + params;
}
window.location = url;
}
}
}
function MM_updateButtons(form) {
var dummy = new Array();
MM_updateButtons2(form, dummy);
}
function MM_updateButtons2(form, selectedItems) {
if (form.buttons) {
var buttonCount = form.buttons.length;
for (i = 0; i < buttonCount; i++) {
var button = form.buttons[i];
if (button) {
button.update(selectedItems);
}
}
}
}
function MM_getButtonWithName(form, buttonName) {
if (form.buttons) {
var buttonCount = form.buttons.length;
for (i = 0; i < buttonCount; i++) {
var button = form.buttons[i];
if (button.mName == buttonName) {
return button;
}
}
}
return null;
}
function MM_countFilesFolders(selectedItems) {
var ret_obj = new Object();
ret_obj["files"] = 0;
ret_obj["folders"] = 0;
var i = 0;
for(i=0;i<selectedItems.length;i++) {
var ftype = null;
if((ftype = MM_findObj(selectedItems[i]+"ftype")) != null) {
if(ftype.value == "file") ret_obj["files"]++;
else if(ftype.value == "folder") ret_obj["folders"]++;
}
}
return ret_obj;
}
function MM_oneFileOnly(selectedItems) {
var ret = false;
if(selectedItems.length == 1) {
var ftype = null;
if((ftype = MM_findObj(selectedItems[0]+"ftype")) != null) {
if(ftype.value == "file") ret = true;
}
}
return ret;
}
function MM_atLeastOneFile(selectedItems) {
var ret = false;
if(selectedItems.length > 0) {
var i = 0;
while(!ret && i < selectedItems.length) {
var ftype = null;
if((ftype = MM_findObj(selectedItems[i]+"ftype")) != null) {
if(ftype.value == "file") ret = true;
}
++i;
}
}
return ret;
}
function MMCommandButton(name,
form,
action,
enabledImage,
overImage,
downImage,
disabledImage,
enableOnNoSelection,
enableOnSingleSelection,
enableOnMultipleSelection,
enabledCheckSelectionJS,
altText,
confirmation,
confirmationMessage) {
this.mName = name; // Name of the image
this.mForm = form; // The form object enclosing this button (to retrieve selections)
this.mAction = action; // Action to perform when clicking
this.mEnabledImage = enabledImage; // enabled image (String)
this.mOverImage = overImage; // over image (String)
//this.mDownImage = downImage; // down image (String)
this.mDisabledImage = disabledImage; // disabled image (String)
this.mEnableOnNoSelection = enableOnNoSelection;
this.mEnableOnSingleSelection = enableOnSingleSelection;
this.mEnableOnMultipleSelection = enableOnMultipleSelection;
this.mEnabledCheckSelectionJS = null;
if(enabledCheckSelectionJS !='') {
this.mEnabledCheckSelectionJS = eval(enabledCheckSelectionJS);
}
this.mAltText = altText;
this.mConfirmation = confirmation;
this.mConfirmationMessage = confirmationMessage;
this.mEnabled = false;
this.update = MMCommandButton_update;
this.over = MMCommandButton_over;
this.out = MMCommandButton_out;
this.click = MMCommandButton_click;
}
function MMCommandButton_update(selectedItems) {
if(this.mEnabledCheckSelectionJS != '' &&
typeof(this.mEnabledCheckSelectionJS) == "function") {
var isEnabled = this.mEnabledCheckSelectionJS(selectedItems);
if (isEnabled == true) {
document[this.mName].src = this.mEnabledImage;
this.mEnabled = true;
} else {
document[this.mName].src = this.mDisabledImage;
this.mEnabled = false;
}
}
else {
if (selectedItems.length == 0) {
if (this.mEnableOnNoSelection == true) {
document[this.mName].src = this.mEnabledImage;
this.mEnabled = true;
} else {
document[this.mName].src = this.mDisabledImage;
this.mEnabled = false;
}
}
if (selectedItems.length == 1) {
if (this.mEnableOnSingleSelection == true) {
document[this.mName].src = this.mEnabledImage;
this.mEnabled = true;
} else {
document[this.mName].src = this.mDisabledImage;
this.mEnabled = false;
}
}
if (selectedItems.length > 1) {
if (this.mEnableOnMultipleSelection == true) {
document[this.mName].src = this.mEnabledImage;
this.mEnabled = true;
} else {
document[this.mName].src = this.mDisabledImage;
this.mEnabled = false;
}
}
}
}
function MMCommandButton_over() {
if (this.mEnabled) {
document[this.mName].src = this.mOverImage;
}
// To whom it may concern. If you are revisiting this code in order
// to speed it up, note that the thing slowing down the rollovers is
// this call to swapText.
swapText(this.mAltText, this.mForm.tt, this.mForm.tt + "i");
window.status= this.mAltText;
}
function MMCommandButton_out() {
if (this.mEnabled) {
document[this.mName].src = this.mEnabledImage;
}
swapText('', this.mForm.tt, this.mForm.tt + "i");
window.status = '';
}
function MMCommandButton_click() {
if (this.mEnabled) {
//document[this.mName].src = this.mDownImage;
if (this.mConfirmation) {
if (!confirm(this.mConfirmationMessage)) {
return;
}
}
MM_doButtonAction(this.mAction, this.mForm.selectedItems);
}
swapText('', this.mForm.tt, this.mForm.tt + "i");
window.status = '';
}
function MMCheckbox(name,
form,
imageName) {
// The mName is the name of the checkbox that is passed on via POST
this.mName = name;
this.mForm = form;
this.mImageName = imageName;
}
// A popup window for general use, but for invoking the content ui in particular
// For other purposes, a 500x350 window size is reasonable
function popUp( loc, w, h, menubar ) {
if( w == null ) { w = 700; }
if( h == null ) { h = 500; }
if( menubar == null || menubar == false ) {
menubar = "";
} else {
menubar = "menubar,";
}
//if( NS ) { w += 50; }
// Need the var or else IE4 blows up not recognizing editorWin
var editorWin = window.open(loc,'editWin', menubar + 'resizable,scrollbars,width=' + w + ',height=' + h);
//editorWin.focus(); //causing intermittent errors
}
// Used to submit a form if the user hits ENTER in the form - BAH
function submitOnEnter(form, e) {
if (document.all) e = window.event;
key = (document.layers) ? e.which : e.keyCode;
if (13 == key) {
if (form) form.submit();
return false;
}
return true;
}
// Used to kill a key press event from bubbling up - BAH
function killKeyEvent(e) {
if (document.all) e = window.event;
key = (document.layers) ? e.which : e.keyCode;
if (13 == key) e.cancelBubble = true;
}
// Used to limit the chars in a text or textarea input - BAH
// Must define variable maxChars & maxCharsError in the HTML tag or via javascript
function checkMaxChars(obj) {
// current key is not counted in length yet
if (obj.value.length >= obj.maxChars) {
alert(obj.maxCharsError + ': ' + obj.maxChars);
obj.value = obj.value.substr(0, obj.maxChars);
return false;
}
return true;
}
function doSitespringHelper(url, msg, installurl) {
var doIt = true;
if(!gSitespringHelperOK && !confirm(msg)) {
doIt = false;
}
if(doIt) window.location = url;
return;
}
function doHelpWindow(helpURL) {
mmHelpWindow = window.open(helpURL,"mmHelp");
// Quarter second pause before focus to avoid JS errors
setTimeout('mmHelpWindow.focus();',250);
}
function focusAndSelect(fld) {
var ualc = navigator.userAgent.toLowerCase();
if(ualc.indexOf('compatible') > -1 || ualc.indexOf("macin") < 0 ||
parseFloat(navigator.appVersion) >= 5.0) {
var fldobj = MM_findObj(fld);
if(fldobj != null) {
fldobj.focus(); fldobj.select();
}
}
}
//-->