client/servlet/www/static/js/script.js

Code
Comments
Other
Rev Date Author Line
3919 28 Oct 10 gregory 1 function empty()
3919 28 Oct 10 gregory 2 {
3919 28 Oct 10 gregory 3     return true;
3919 28 Oct 10 gregory 4 }
3919 28 Oct 10 gregory 5
805 30 Oct 06 gregory 6 function goToLocation(location)
805 30 Oct 06 gregory 7 {
3920 28 Oct 10 gregory 8   window.location = location;
805 30 Oct 06 gregory 9 }
2495 10 Jan 08 gregory 10
3919 28 Oct 10 gregory 11 function getScrollXY()
3919 28 Oct 10 gregory 12 {
3919 28 Oct 10 gregory 13     var scrOfX = 0, scrOfY = 0;
3919 28 Oct 10 gregory 14     if( typeof( window.pageYOffset ) == 'number' )
3919 28 Oct 10 gregory 15     {
3919 28 Oct 10 gregory 16         //Netscape compliant
3919 28 Oct 10 gregory 17         scrOfY = window.pageYOffset;
3919 28 Oct 10 gregory 18         scrOfX = window.pageXOffset;
3919 28 Oct 10 gregory 19     }
3919 28 Oct 10 gregory 20     else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
3919 28 Oct 10 gregory 21     {
3919 28 Oct 10 gregory 22         //DOM compliant
3919 28 Oct 10 gregory 23         scrOfY = document.body.scrollTop;
3919 28 Oct 10 gregory 24         scrOfX = document.body.scrollLeft;
3919 28 Oct 10 gregory 25     }
3919 28 Oct 10 gregory 26     else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
3919 28 Oct 10 gregory 27     {
3919 28 Oct 10 gregory 28         //IE6 standards compliant mode
3919 28 Oct 10 gregory 29         scrOfY = document.documentElement.scrollTop;
3919 28 Oct 10 gregory 30         scrOfX = document.documentElement.scrollLeft;
3919 28 Oct 10 gregory 31     }
3919 28 Oct 10 gregory 32     return [ scrOfX, scrOfY ];
1950 14 Sep 07 gregory 33 }
3409 14 Sep 09 gregory 34
3919 28 Oct 10 gregory 35 function getXYSize()
3919 28 Oct 10 gregory 36 {
3919 28 Oct 10 gregory 37     var myWidth = 0, myHeight = 0;
3919 28 Oct 10 gregory 38     if( typeof( window.innerWidth ) == 'number' ) {
3919 28 Oct 10 gregory 39         // Non-IE
3919 28 Oct 10 gregory 40         myWidth = window.innerWidth;
3919 28 Oct 10 gregory 41         myHeight = window.innerHeight;
3919 28 Oct 10 gregory 42     }
3919 28 Oct 10 gregory 43     else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
3919 28 Oct 10 gregory 44     {
3919 28 Oct 10 gregory 45         // IE 6+ in 'standards compliant mode'
3919 28 Oct 10 gregory 46         myWidth = document.documentElement.clientWidth;
3919 28 Oct 10 gregory 47         myHeight = document.documentElement.clientHeight;
3919 28 Oct 10 gregory 48     }
3919 28 Oct 10 gregory 49     else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
3919 28 Oct 10 gregory 50     {
3919 28 Oct 10 gregory 51         // IE 4 compatible
3919 28 Oct 10 gregory 52         myWidth = document.body.clientWidth;
3919 28 Oct 10 gregory 53         myHeight = document.body.clientHeight;
3919 28 Oct 10 gregory 54     }
3919 28 Oct 10 gregory 55     return [ myWidth, myHeight ];
1950 14 Sep 07 gregory 56 }
3409 14 Sep 09 gregory 57
3919 28 Oct 10 gregory 58 // Returns node by the given id, or null if it does not exist
678 04 Oct 06 gregory 59 function getElement(id)
678 04 Oct 06 gregory 60 {
4436 08 Mar 13 olle 61   if (id != null && id != '')
4436 08 Mar 13 olle 62   {
4436 08 Mar 13 olle 63     return document.all ? document.all[id] : document.getElementById(id);
4436 08 Mar 13 olle 64   }
4436 08 Mar 13 olle 65   else
4436 08 Mar 13 olle 66   {
4436 08 Mar 13 olle 67     return null;
4436 08 Mar 13 olle 68   }
678 04 Oct 06 gregory 69 }
678 04 Oct 06 gregory 70
881 11 Nov 06 gregory 71 function submitForm(formId)
881 11 Nov 06 gregory 72 {
3919 28 Oct 10 gregory 73     getElement(formId).submit();
881 11 Nov 06 gregory 74 }
881 11 Nov 06 gregory 75
695 04 Oct 06 gregory 76 function addHiliteEvents(item)
695 04 Oct 06 gregory 77 {
3919 28 Oct 10 gregory 78     item.onmouseover = function()
3919 28 Oct 10 gregory 79     {
3919 28 Oct 10 gregory 80         this.className = "hover " + this.className;
3919 28 Oct 10 gregory 81     };
3919 28 Oct 10 gregory 82     item.onmouseout = function()
3919 28 Oct 10 gregory 83     {
3919 28 Oct 10 gregory 84         this.className = this.className.slice(6);
3919 28 Oct 10 gregory 85     };
695 04 Oct 06 gregory 86 }
695 04 Oct 06 gregory 87
881 11 Nov 06 gregory 88 function submitFormAs(formId, action)
881 11 Nov 06 gregory 89 {
3920 28 Oct 10 gregory 90     getElement(formId + "action").value = action;
3920 28 Oct 10 gregory 91     getElement(formId).submit();
881 11 Nov 06 gregory 92 }
881 11 Nov 06 gregory 93
3919 28 Oct 10 gregory 94 // Toggles visibility of a div
678 04 Oct 06 gregory 95 function toggle(id)
678 04 Oct 06 gregory 96 {
3919 28 Oct 10 gregory 97     var div = getElement(id);
3919 28 Oct 10 gregory 98     if(div.style.display == "block")
3919 28 Oct 10 gregory 99     {
3919 28 Oct 10 gregory 100         div.style.display = "none";
3919 28 Oct 10 gregory 101     }
3919 28 Oct 10 gregory 102     else
3919 28 Oct 10 gregory 103     {
3919 28 Oct 10 gregory 104         div.style.display = "block";
3919 28 Oct 10 gregory 105     }
678 04 Oct 06 gregory 106 }
678 04 Oct 06 gregory 107
3919 28 Oct 10 gregory 108 // Toggles visibility of a fieldset
3894 20 Oct 10 gregory 109 function toggleFieldset(id)
3894 20 Oct 10 gregory 110 {
3919 28 Oct 10 gregory 111     var node = getElement(id);
3919 28 Oct 10 gregory 112     var icon = getElement("btn" + id);
3919 28 Oct 10 gregory 113     if(node.style.display == "block")
3919 28 Oct 10 gregory 114     {
3919 28 Oct 10 gregory 115         node.style.display = "none";
3919 28 Oct 10 gregory 116         icon.src = "static/img/plus.gif";
3919 28 Oct 10 gregory 117     }
3919 28 Oct 10 gregory 118     else
3919 28 Oct 10 gregory 119     {
3919 28 Oct 10 gregory 120         node.style.display = "block";
3919 28 Oct 10 gregory 121         icon.src = "static/img/minus.gif";
3919 28 Oct 10 gregory 122     }
3894 20 Oct 10 gregory 123 }
3894 20 Oct 10 gregory 124
2503 14 Jan 08 gregory 125 var visiblePopup = 0;
3919 28 Oct 10 gregory 126 // popup, toggles the visibility and positions a div so it's visible
1950 14 Sep 07 gregory 127 function popup(id)
1950 14 Sep 07 gregory 128 {
3919 28 Oct 10 gregory 129     var div = getElement(id);
3919 28 Oct 10 gregory 130     var xy = getScrollXY();
3919 28 Oct 10 gregory 131     var newTop = (xy[1]+50) + "px";
3919 28 Oct 10 gregory 132     div.style.top = newTop;
3919 28 Oct 10 gregory 133     toggle(id);
3919 28 Oct 10 gregory 134     visiblePopup=id;
1950 14 Sep 07 gregory 135 }
1950 14 Sep 07 gregory 136
3919 28 Oct 10 gregory 137 // TODO there might be a situation where more popups have been shown, this method should close them all
2503 14 Jan 08 gregory 138 function closeAllVisiblePopups()
2503 14 Jan 08 gregory 139 {
3919 28 Oct 10 gregory 140     hide(visiblePopup);
2503 14 Jan 08 gregory 141 }
2503 14 Jan 08 gregory 142
3919 28 Oct 10 gregory 143 // Sets display:none for the given elementId
678 04 Oct 06 gregory 144 function hide(id)
678 04 Oct 06 gregory 145 {
3919 28 Oct 10 gregory 146     var div = getElement(id);
3919 28 Oct 10 gregory 147     div.style.display = "none";
678 04 Oct 06 gregory 148 }
678 04 Oct 06 gregory 149
3919 28 Oct 10 gregory 150 // Sets display:block for the given elementId
678 04 Oct 06 gregory 151 function show(id)
678 04 Oct 06 gregory 152 {
3919 28 Oct 10 gregory 153     var div = getElement(id);
3919 28 Oct 10 gregory 154     div.style.display = "block";
678 04 Oct 06 gregory 155 }
678 04 Oct 06 gregory 156
1101 15 Jan 07 gregory 157 var LASTTABID = 0;
1101 15 Jan 07 gregory 158 function showTab(id)
1101 15 Jan 07 gregory 159 {
3919 28 Oct 10 gregory 160     var prefix = "contentOf";
3919 28 Oct 10 gregory 161     if(LASTTABID != 0)
3919 28 Oct 10 gregory 162     {
3919 28 Oct 10 gregory 163         var last = getElement(LASTTABID);
3919 28 Oct 10 gregory 164         last.className = "tab";
3919 28 Oct 10 gregory 165         hide(prefix + LASTTABID);
3919 28 Oct 10 gregory 166     }
3919 28 Oct 10 gregory 167     show(prefix + id);
3919 28 Oct 10 gregory 168     var tab = getElement(id);
3919 28 Oct 10 gregory 169     tab.className = "hover tab here";
3919 28 Oct 10 gregory 170     LASTTABID = id;
1101 15 Jan 07 gregory 171 }
678 04 Oct 06 gregory 172
3919 28 Oct 10 gregory 173 // Initiates a table with correct class and eventhandlers
3409 14 Sep 09 gregory 174 function initTable(id)
678 04 Oct 06 gregory 175 {
3919 28 Oct 10 gregory 176     var table = getElement(id);
3919 28 Oct 10 gregory 177     if(table != null)
3919 28 Oct 10 gregory 178     {
3919 28 Oct 10 gregory 179         var tableRows = table.rows;
4436 08 Mar 13 olle 180         if (tableRows != null)
3919 28 Oct 10 gregory 181         {
4436 08 Mar 13 olle 182           for(var i = 0; i<tableRows.length;i++)
4436 08 Mar 13 olle 183           {
4436 08 Mar 13 olle 184               var row = tableRows[i];
4436 08 Mar 13 olle 185               addHiliteEvents(row);
4436 08 Mar 13 olle 186           }
3919 28 Oct 10 gregory 187         }
3919 28 Oct 10 gregory 188     }
678 04 Oct 06 gregory 189 }
678 04 Oct 06 gregory 190
3919 28 Oct 10 gregory 191 // Binds hover events to all LI elements
2733 01 Jul 08 gregory 192 function initUl(id) {
3919 28 Oct 10 gregory 193     var ul = getElement(id);
3919 28 Oct 10 gregory 194     var elements = ul.getElementsByTagName("LI");
3919 28 Oct 10 gregory 195     for(var i = 0; i< elements.length-1;i++)
3919 28 Oct 10 gregory 196     {
3919 28 Oct 10 gregory 197         if(elements[i].nodeName == "LI")
3919 28 Oct 10 gregory 198         {
3919 28 Oct 10 gregory 199             var li = elements[i];
3919 28 Oct 10 gregory 200             addHiliteEvents(li);
3919 28 Oct 10 gregory 201         }
3919 28 Oct 10 gregory 202     }
819 31 Oct 06 gregory 203 }
819 31 Oct 06 gregory 204
881 11 Nov 06 gregory 205 function setNameField(select)
881 11 Nov 06 gregory 206 {
3919 28 Oct 10 gregory 207     var form = select.form;
3919 28 Oct 10 gregory 208     var option = select.options[select.selectedIndex];
3919 28 Oct 10 gregory 209     var value = option.text;
3919 28 Oct 10 gregory 210     var elements = form.getElementsByTagName("input");
3919 28 Oct 10 gregory 211     for(var i = 0; i < elements.length;i++)
3919 28 Oct 10 gregory 212     {
3919 28 Oct 10 gregory 213         var input = elements[i];
3919 28 Oct 10 gregory 214         if(input.id == "annotationName")
3919 28 Oct 10 gregory 215         {
3919 28 Oct 10 gregory 216             if(option.value == "0")
3919 28 Oct 10 gregory 217             {
3919 28 Oct 10 gregory 218                 input.value = "";
3919 28 Oct 10 gregory 219                 input.disabled = !(input.disabled);
3919 28 Oct 10 gregory 220             }
3919 28 Oct 10 gregory 221             else
3919 28 Oct 10 gregory 222             {
3919 28 Oct 10 gregory 223                 input.value = option.text;
3919 28 Oct 10 gregory 224                 input.disabled = "disabled";
3919 28 Oct 10 gregory 225             }
3919 28 Oct 10 gregory 226         }
3919 28 Oct 10 gregory 227     }
881 11 Nov 06 gregory 228 }
819 31 Oct 06 gregory 229
1664 23 May 07 gregory 230 function checkAllRowsInTable(formId)
1664 23 May 07 gregory 231 {
3919 28 Oct 10 gregory 232     var form = getElement(formId);
3919 28 Oct 10 gregory 233     var elements = form.getElementsByTagName("input");
3919 28 Oct 10 gregory 234     for(var i = 0; i < elements.length;i++)
3919 28 Oct 10 gregory 235     {
3919 28 Oct 10 gregory 236         var input = elements[i];
3919 28 Oct 10 gregory 237         if(input.id == "itemId")
3919 28 Oct 10 gregory 238         {
3919 28 Oct 10 gregory 239             input.checked = !input.checked;
3919 28 Oct 10 gregory 240         }
3919 28 Oct 10 gregory 241     }
1664 23 May 07 gregory 242 }
1664 23 May 07 gregory 243
1791 21 Jun 07 gregory 244 /*
3921 28 Oct 10 gregory 245     Add a field to a form. If it already exists, the value is changed.
1791 21 Jun 07 gregory 246 */
1791 21 Jun 07 gregory 247 function addField(formId, name, value)
1791 21 Jun 07 gregory 248 {
3919 28 Oct 10 gregory 249     var field = null;
3919 28 Oct 10 gregory 250     var form = getElement(formId);
3919 28 Oct 10 gregory 251     for(var i = 0; i < form.elements.length; i++)
3453 19 Oct 09 gregory 252     {
3919 28 Oct 10 gregory 253         var e = form.elements[i];
3919 28 Oct 10 gregory 254         if(e.name == name)
3919 28 Oct 10 gregory 255         {
3919 28 Oct 10 gregory 256             field = e;
3919 28 Oct 10 gregory 257             break;
3919 28 Oct 10 gregory 258         }
3453 19 Oct 09 gregory 259     }
3919 28 Oct 10 gregory 260     if(field == null)
3919 28 Oct 10 gregory 261     {
3919 28 Oct 10 gregory 262         // Create new element
3919 28 Oct 10 gregory 263         field = document.createElement("input");
3919 28 Oct 10 gregory 264         field.type = "hidden";
3919 28 Oct 10 gregory 265         field.name = name;
3919 28 Oct 10 gregory 266         form.appendChild(field);
3919 28 Oct 10 gregory 267     }
3453 19 Oct 09 gregory 268     field.value = value;
1791 21 Jun 07 gregory 269 }
1791 21 Jun 07 gregory 270
2597 05 Mar 08 gregory 271 function addShadeUnshade(obj)
2597 05 Mar 08 gregory 272 {
3919 28 Oct 10 gregory 273     obj.shade = function()
3919 28 Oct 10 gregory 274     {
3919 28 Oct 10 gregory 275         this.className = "shade " + this.className;
3919 28 Oct 10 gregory 276     };
3409 14 Sep 09 gregory 277
3919 28 Oct 10 gregory 278     obj.unshade = function()
3919 28 Oct 10 gregory 279     {
3919 28 Oct 10 gregory 280         this.className = this.className.slice(6);
3919 28 Oct 10 gregory 281     };
2597 05 Mar 08 gregory 282 }
2597 05 Mar 08 gregory 283
3919 28 Oct 10 gregory 284 // http://blog.firetree.net/2005/07/04/javascript-find-position/
3919 28 Oct 10 gregory 285 function findPosX(obj)
3919 28 Oct 10 gregory 286 {
2807 22 Aug 08 gregory 287     var curleft = 0;
2807 22 Aug 08 gregory 288     if(obj.offsetParent)
3919 28 Oct 10 gregory 289     while(1)
3919 28 Oct 10 gregory 290     {
3919 28 Oct 10 gregory 291         curleft += obj.offsetLeft;
3919 28 Oct 10 gregory 292         if(!obj.offsetParent)
2807 22 Aug 08 gregory 293         {
2807 22 Aug 08 gregory 294             break;
2807 22 Aug 08 gregory 295         }
3919 28 Oct 10 gregory 296         obj = obj.offsetParent;
3919 28 Oct 10 gregory 297     }
2807 22 Aug 08 gregory 298     else if(obj.x)
3919 28 Oct 10 gregory 299     {
2807 22 Aug 08 gregory 300         curleft += obj.x;
3919 28 Oct 10 gregory 301     }
3919 28 Oct 10 gregory 302
2807 22 Aug 08 gregory 303     return curleft;
3919 28 Oct 10 gregory 304 }
2807 22 Aug 08 gregory 305
3919 28 Oct 10 gregory 306 function findPosY(obj)
3919 28 Oct 10 gregory 307 {
2807 22 Aug 08 gregory 308     var curtop = 0;
2807 22 Aug 08 gregory 309     if(obj.offsetParent)
3919 28 Oct 10 gregory 310     while(1)
3919 28 Oct 10 gregory 311     {
3919 28 Oct 10 gregory 312         curtop += obj.offsetTop;
3919 28 Oct 10 gregory 313         if(!obj.offsetParent)
2807 22 Aug 08 gregory 314         {
2807 22 Aug 08 gregory 315             break;
2807 22 Aug 08 gregory 316         }
3919 28 Oct 10 gregory 317         obj = obj.offsetParent;
3919 28 Oct 10 gregory 318     }
2807 22 Aug 08 gregory 319     else if(obj.y)
3919 28 Oct 10 gregory 320     {
2807 22 Aug 08 gregory 321         curtop += obj.y;
3919 28 Oct 10 gregory 322     }
3919 28 Oct 10 gregory 323
2807 22 Aug 08 gregory 324     return curtop;
3919 28 Oct 10 gregory 325 }
3409 14 Sep 09 gregory 326
3919 28 Oct 10 gregory 327 // http://bytes.com/forum/thread763579.html
3919 28 Oct 10 gregory 328 function resize_all_iframes()
3919 28 Oct 10 gregory 329 {
2807 22 Aug 08 gregory 330     var f_list = document.getElementsByTagName("IFRAME");
2807 22 Aug 08 gregory 331     if(f_list.length > 0)
2807 22 Aug 08 gregory 332     {
3919 28 Oct 10 gregory 333         for (var i = 0, f; f = f_list[i]; i++)
3919 28 Oct 10 gregory 334         {
3919 28 Oct 10 gregory 335             resize_iframe(f.id);
3919 28 Oct 10 gregory 336         }
2807 22 Aug 08 gregory 337     }
3919 28 Oct 10 gregory 338 }
3409 14 Sep 09 gregory 339
3919 28 Oct 10 gregory 340 // http://guymal.com/mycode/100_percent_iframe/
2807 22 Aug 08 gregory 341 function resize_iframe(frameId)
2807 22 Aug 08 gregory 342 {
2807 22 Aug 08 gregory 343
3919 28 Oct 10 gregory 344     var height=window.innerWidth;//Firefox
3919 28 Oct 10 gregory 345     if (document.body.clientHeight)
3919 28 Oct 10 gregory 346     {
3919 28 Oct 10 gregory 347         height=document.body.clientHeight;//IE
3919 28 Oct 10 gregory 348     }
3919 28 Oct 10 gregory 349     // resize the iframe according to the size of the
3919 28 Oct 10 gregory 350     // window (all these should be on the same line)
3919 28 Oct 10 gregory 351     var iframe = getElement(frameId);
3919 28 Oct 10 gregory 352     var y = findPosY(iframe);
3919 28 Oct 10 gregory 353     iframe.style.height=parseInt(height-y-8)+"px";
2807 22 Aug 08 gregory 354 }
2807 22 Aug 08 gregory 355
3919 28 Oct 10 gregory 356 // http://www.dynamicdrive.com/dynamicindex5/texttool.htm
3441 13 Oct 09 olle 357 function showtip(current,e,text)
3441 13 Oct 09 olle 358 {
3919 28 Oct 10 gregory 359     if (document.all || document.getElementById)
3919 28 Oct 10 gregory 360     {
3919 28 Oct 10 gregory 361         thetitle = text.split('<br>');
3919 28 Oct 10 gregory 362         if (thetitle.length > 1)
3919 28 Oct 10 gregory 363         {
3919 28 Oct 10 gregory 364             thetitles = '';
3919 28 Oct 10 gregory 365             for (i=0; i < thetitle.length; i++)
3919 28 Oct 10 gregory 366             {
3919 28 Oct 10 gregory 367                 thetitles += thetitle[i];
3919 28 Oct 10 gregory 368             }
3919 28 Oct 10 gregory 369             current.title = thetitles;
3919 28 Oct 10 gregory 370         }
3919 28 Oct 10 gregory 371         else
3919 28 Oct 10 gregory 372         {
3919 28 Oct 10 gregory 373             current.title = text;
3919 28 Oct 10 gregory 374         }
3919 28 Oct 10 gregory 375     }
3919 28 Oct 10 gregory 376     else if (document.layers)
3919 28 Oct 10 gregory 377     {
3919 28 Oct 10 gregory 378         document.tooltip.document.write('<layer bgColor="white" style="border:1px solid black;font-size:12px;">'+text+'</layer>');
3919 28 Oct 10 gregory 379         document.tooltip.document.close();
3919 28 Oct 10 gregory 380         document.tooltip.left = e.pageX + 5;
3919 28 Oct 10 gregory 381         document.tooltip.top = e.pageY + 5;
3919 28 Oct 10 gregory 382         document.tooltip.visibility = "show";
3919 28 Oct 10 gregory 383     }
3441 13 Oct 09 olle 384 }
3441 13 Oct 09 olle 385
3441 13 Oct 09 olle 386 function hidetip()
3441 13 Oct 09 olle 387 {
3919 28 Oct 10 gregory 388     if (document.layers)
3919 28 Oct 10 gregory 389     {
3919 28 Oct 10 gregory 390         document.tooltip.visibility = "hidden";
3919 28 Oct 10 gregory 391     }
3441 13 Oct 09 olle 392 }
3441 13 Oct 09 olle 393
3919 28 Oct 10 gregory 394 // this will resize all iframes every time you change the size of the window.
3409 14 Sep 09 gregory 395 window.onresize=resize_all_iframes;
2807 22 Aug 08 gregory 396
4436 08 Mar 13 olle 397 /**
4436 08 Mar 13 olle 398  *  Returns a JSON object with element position for upper left corner.
4436 08 Mar 13 olle 399  *  Code from http://www.kirupa.com/html5/get_element_position_using_javascript.htm
4436 08 Mar 13 olle 400  *
4436 08 Mar 13 olle 401  *  @param GUIelement element The GUI element to get the position for.
4436 08 Mar 13 olle 402  *  @return JSON object with keys 'x' and 'y' with position values.
4436 08 Mar 13 olle 403  */
4436 08 Mar 13 olle 404 function getElementPosition(element)
4410 12 Feb 13 olle 405 {
4436 08 Mar 13 olle 406   var xPos = 0;
4436 08 Mar 13 olle 407   var yPos = 0;
4436 08 Mar 13 olle 408   // Add relative offsets for element parents
4436 08 Mar 13 olle 409   while (element)
4436 08 Mar 13 olle 410   {
4436 08 Mar 13 olle 411     xPos += (element.offsetLeft - element.scrollLeft + element.clientLeft);
4436 08 Mar 13 olle 412     yPos += (element.offsetTop - element.scrollTop + element.clientTop);
4436 08 Mar 13 olle 413     element = element.offsetParent;
4436 08 Mar 13 olle 414   }
4436 08 Mar 13 olle 415   return {x: xPos, y: yPos};
4436 08 Mar 13 olle 416 }
4436 08 Mar 13 olle 417
4436 08 Mar 13 olle 418 /**
4436 08 Mar 13 olle 419  *  Returns the last element with a given name.
4436 08 Mar 13 olle 420  *
4436 08 Mar 13 olle 421  *  @param elementName Name of the GUIElements.
4436 08 Mar 13 olle 422  *  @return GUIElement The last element with given name.
4436 08 Mar 13 olle 423  */
4436 08 Mar 13 olle 424 function getLastElementByName(elementName)
4436 08 Mar 13 olle 425 {
4436 08 Mar 13 olle 426   var element = null;
4436 08 Mar 13 olle 427   if (elementName != null && elementName != '')
4436 08 Mar 13 olle 428   {
4436 08 Mar 13 olle 429     var elArray = document.getElementsByName(elementName);
4436 08 Mar 13 olle 430     if (elArray != null)
4436 08 Mar 13 olle 431     {
4436 08 Mar 13 olle 432       // Get last element
4436 08 Mar 13 olle 433       element = elArray[elArray.length - 1];
4436 08 Mar 13 olle 434     }
4436 08 Mar 13 olle 435   }
4436 08 Mar 13 olle 436   return element;
4436 08 Mar 13 olle 437 }
4436 08 Mar 13 olle 438
4436 08 Mar 13 olle 439 function updateNodeFirstChildText(nodeId, nodeText)
4436 08 Mar 13 olle 440 {
4410 12 Feb 13 olle 441   var node = document.getElementById(nodeId);
4410 12 Feb 13 olle 442   if (node != null)
4410 12 Feb 13 olle 443   {
4410 12 Feb 13 olle 444     node.firstChild.nodeValue = nodeText;
4410 12 Feb 13 olle 445   }
4410 12 Feb 13 olle 446 }
4410 12 Feb 13 olle 447
4410 12 Feb 13 olle 448 /**
4410 12 Feb 13 olle 449  *  Returns a string with comma-separated id values for job items,
4410 12 Feb 13 olle 450  *  shown in the job table of current web page.
4410 12 Feb 13 olle 451  *
4410 12 Feb 13 olle 452  *  @return String A string with comma-separated id values for shown job items.
4410 12 Feb 13 olle 453  */
4410 12 Feb 13 olle 454 function getJobIdList()
4410 12 Feb 13 olle 455 {
4410 12 Feb 13 olle 456   var jobIdList = '';
4410 12 Feb 13 olle 457   var tables = document.getElementsByTagName('table');
4410 12 Feb 13 olle 458   for (var i = 0; i < tables.length; i++)
4410 12 Feb 13 olle 459   {
4410 12 Feb 13 olle 460     if (tables[i].id != null && tables[i].id == 'Job')
4410 12 Feb 13 olle 461     {
4410 12 Feb 13 olle 462       // Jobs id values are used as id for table rows in job table
4410 12 Feb 13 olle 463       // All other table rows have no id value
4410 12 Feb 13 olle 464       var jobTable = tables[i];
4410 12 Feb 13 olle 465       var tableRows = jobTable.getElementsByTagName('tr');
4410 12 Feb 13 olle 466       for (var k = 0; k < tableRows.length; k++)
4410 12 Feb 13 olle 467       {
4410 12 Feb 13 olle 468         if (tableRows[k].id != null && tableRows[k].id != '')
4410 12 Feb 13 olle 469         {
4410 12 Feb 13 olle 470           // Add table row id to list
4410 12 Feb 13 olle 471           if (jobIdList != '')
4410 12 Feb 13 olle 472           {
4410 12 Feb 13 olle 473             jobIdList += ',';
4410 12 Feb 13 olle 474           }
4410 12 Feb 13 olle 475           jobIdList += tableRows[k].id;
4410 12 Feb 13 olle 476         }
4410 12 Feb 13 olle 477       }
4410 12 Feb 13 olle 478     }
4410 12 Feb 13 olle 479   }
4410 12 Feb 13 olle 480   return jobIdList;
4410 12 Feb 13 olle 481 }
4410 12 Feb 13 olle 482
4410 12 Feb 13 olle 483 /**
4410 12 Feb 13 olle 484  *  Uses Ajax to send a list if id values for shown job items
4410 12 Feb 13 olle 485  *  to servlet, that retrieves current values for variables,
4410 12 Feb 13 olle 486  *  that may change without the user's input. The data is
4410 12 Feb 13 olle 487  *  sent back to the script as a JSON object, and is used
4410 12 Feb 13 olle 488  *  to update specific elements of the job and job queue tables.
4410 12 Feb 13 olle 489  */
4410 12 Feb 13 olle 490 function updateJobTableColumns()
4410 12 Feb 13 olle 491 {
4421 25 Feb 13 olle 492   // Set cmd
4419 21 Feb 13 olle 493   var cmd = 'updateJobTable';
4421 25 Feb 13 olle 494   // Set requestType to "Ajax" to prevent action from being returned as "last action"
4421 25 Feb 13 olle 495   var requestType = 'Ajax';
4410 12 Feb 13 olle 496   // Get job id values in comma-separated list
4410 12 Feb 13 olle 497   var jobIdList = getJobIdList();
4421 25 Feb 13 olle 498   // Create url for Ajax XMLHttpRequest
4421 25 Feb 13 olle 499   var url = 'app?action=org.proteios.action.job.ListJobsAjax&requestType=' + requestType + '&cmd=' + cmd + '&jobIdList=' + jobIdList;
4410 12 Feb 13 olle 500   var request = new XMLHttpRequest();
4410 12 Feb 13 olle 501   request.open("GET", url, false);
4410 12 Feb 13 olle 502   request.send(null);
4410 12 Feb 13 olle 503
4410 12 Feb 13 olle 504   var response = JSON.parse(request.responseText);
4410 12 Feb 13 olle 505   if (response.status != 'ok')
4410 12 Feb 13 olle 506   {
4410 12 Feb 13 olle 507     // Optional error handler
4410 12 Feb 13 olle 508     //setFatalError(response.message);
4410 12 Feb 13 olle 509     return false;
4410 12 Feb 13 olle 510   }
4410 12 Feb 13 olle 511   // Get JSON array for column data
4410 12 Feb 13 olle 512   var jsonColumnDataArray = response.tableupdate;
4410 12 Feb 13 olle 513   if (jsonColumnDataArray != null)
4410 12 Feb 13 olle 514   {
4410 12 Feb 13 olle 515     for (var index in jsonColumnDataArray)
4410 12 Feb 13 olle 516     {
4410 12 Feb 13 olle 517       var jsonCell = jsonColumnDataArray[index];
4410 12 Feb 13 olle 518       // Get cell id from JSON key
4410 12 Feb 13 olle 519       for (var cellId in jsonCell)
4410 12 Feb 13 olle 520       {
4410 12 Feb 13 olle 521         // Get JSON table cell data
4410 12 Feb 13 olle 522         var cellData = jsonCell[cellId];
4410 12 Feb 13 olle 523         if (cellData == null)
4410 12 Feb 13 olle 524         {
4410 12 Feb 13 olle 525           cellData = '';
4410 12 Feb 13 olle 526         }
4410 12 Feb 13 olle 527         // Update table cell data
4436 08 Mar 13 olle 528         updateNodeFirstChildText(cellId, "" + cellData);
4410 12 Feb 13 olle 529       }
4410 12 Feb 13 olle 530     }
4410 12 Feb 13 olle 531   }
4410 12 Feb 13 olle 532 }
4410 12 Feb 13 olle 533
4410 12 Feb 13 olle 534 var secondsBetweenUpdates = 5;
4410 12 Feb 13 olle 535
4410 12 Feb 13 olle 536 function startRegularUpdates()
4410 12 Feb 13 olle 537 {
4410 12 Feb 13 olle 538   setInterval('updateJobTableColumns()', 1000*secondsBetweenUpdates);
4410 12 Feb 13 olle 539 }
4410 12 Feb 13 olle 540
4436 08 Mar 13 olle 541 /**
4436 08 Mar 13 olle 542  *  Returns a mass value corresponding to an x-position in a mass spectrum image.
4436 08 Mar 13 olle 543  *  Returns null if any argument values are invalid.
4436 08 Mar 13 olle 544  *
4436 08 Mar 13 olle 545  *  @param e event The event to get position from
4436 08 Mar 13 olle 546  *  @param imgId String The element id of the spectrum img tag in the html page
4436 08 Mar 13 olle 547  *  @param spectrumWidth int The spectrum width in pixels
4436 08 Mar 13 olle 548  *  @param spectrumOffsetLeft int The spectrum offset from the left image border in pixels
4436 08 Mar 13 olle 549  *  @param spectrumOffsetRight int The spectrum offset from the right image border in pixels
4436 08 Mar 13 olle 550  *  @param massMin double The lowest mass value in the displayed spectrum
4436 08 Mar 13 olle 551  *  @param massMax double The highest mass value in the displayed spectrum
4436 08 Mar 13 olle 552  */
4436 08 Mar 13 olle 553 function fetchMassValue(e, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax)
4436 08 Mar 13 olle 554 {
4436 08 Mar 13 olle 555   // Return if basic arguments are missing or have odd values
4436 08 Mar 13 olle 556   if (imgId == null || imgId == '' || massMin == null || massMax == null || massMin == massMax)
4436 08 Mar 13 olle 557   {
4436 08 Mar 13 olle 558     //alert('Returned at check 1');
4436 08 Mar 13 olle 559     return null;
4436 08 Mar 13 olle 560   }
4436 08 Mar 13 olle 561   // Return if effective spectrum width or massrange are <= 0
4436 08 Mar 13 olle 562   var spectrumEffWidth = spectrumWidth - spectrumOffsetLeft - spectrumOffsetRight;
4436 08 Mar 13 olle 563   var massRange = massMax - massMin;
4436 08 Mar 13 olle 564   if (spectrumEffWidth <= 0 || massRange <= 0)
4436 08 Mar 13 olle 565   {
4436 08 Mar 13 olle 566     //alert('Returned at check 2 spectrumEffWidth = ' + spectrumEffWidth + ' massRange = ' + massRange);
4436 08 Mar 13 olle 567     return null;
4436 08 Mar 13 olle 568   }
4436 08 Mar 13 olle 569   // Get image element
4436 08 Mar 13 olle 570   var imgEl = document.getElementById(imgId);
4436 08 Mar 13 olle 571   if (imgEl == null)
4436 08 Mar 13 olle 572   {
4436 08 Mar 13 olle 573     return null;
4436 08 Mar 13 olle 574   }
4436 08 Mar 13 olle 575   // Get position on page for event
4436 08 Mar 13 olle 576   var x = e.pageX;
4436 08 Mar 13 olle 577   // Get relative position inside current GUI element
4436 08 Mar 13 olle 578   var xRel = 0;
4436 08 Mar 13 olle 579   var pos = getElementPosition(imgEl);
4436 08 Mar 13 olle 580   xRel = x - pos.x;
4436 08 Mar 13 olle 581   var spectrumPixelOffsetLeft = xRel - spectrumOffsetLeft;
4436 08 Mar 13 olle 582   var mass = null;
4436 08 Mar 13 olle 583   // Return if basic arguments are missing or have odd values
4436 08 Mar 13 olle 584   if (massMin == null || massMax == null || massMin == massMax)
4436 08 Mar 13 olle 585   {
4436 08 Mar 13 olle 586     //alert('Returned at check 3');
4436 08 Mar 13 olle 587     return null;
4436 08 Mar 13 olle 588   }
4436 08 Mar 13 olle 589   // Return if effective spectrum width or massrange are <= 0
4436 08 Mar 13 olle 590   var spectrumEffWidth = spectrumWidth - spectrumOffsetLeft - spectrumOffsetRight;
4436 08 Mar 13 olle 591   var massRange = massMax - massMin;
4436 08 Mar 13 olle 592   if (spectrumEffWidth <= 0 || massRange <= 0)
4436 08 Mar 13 olle 593   {
4436 08 Mar 13 olle 594     //alert('Returned at check 4 spectrumEffWidth = ' + spectrumEffWidth + ' massRange = ' + massRange);
4436 08 Mar 13 olle 595     return null;
4436 08 Mar 13 olle 596   }
4436 08 Mar 13 olle 597   var spectrumPixelOffsetLeft = xRel - spectrumOffsetLeft;
4436 08 Mar 13 olle 598   // Calculate mass value from event pixel coordinate
4436 08 Mar 13 olle 599   mass = massMin + (spectrumPixelOffsetLeft/spectrumEffWidth)*massRange;
4436 08 Mar 13 olle 600   // Round mass value to nearest integer
4436 08 Mar 13 olle 601   mass = Math.floor(mass + 0.5);
4436 08 Mar 13 olle 602   return mass;
4436 08 Mar 13 olle 603 }
4436 08 Mar 13 olle 604
4436 08 Mar 13 olle 605 /**
4436 08 Mar 13 olle 606  *  Returns a mass cuttoff string corresponding to an x-position in a mass spectrum image.
4436 08 Mar 13 olle 607  *  Returns null if any argument values are invalid.
4436 08 Mar 13 olle 608  *
4436 08 Mar 13 olle 609  *  @param e event The event to get position from
4436 08 Mar 13 olle 610  *  @param inputElName String The element name of the mass cutoff input field in the html page
4436 08 Mar 13 olle 611  *  @param imgId String The element id of the spectrum img tag in the html page
4436 08 Mar 13 olle 612  *  @param spectrumWidth int The spectrum width in pixels
4436 08 Mar 13 olle 613  *  @param spectrumOffsetLeft int The spectrum offset from the left image border in pixels
4436 08 Mar 13 olle 614  *  @param spectrumOffsetRight int The spectrum offset from the right image border in pixels
4436 08 Mar 13 olle 615  *  @param massMin double The lowest mass value in the displayed spectrum
4436 08 Mar 13 olle 616  *  @param massMax double The highest mass value in the displayed spectrum
4436 08 Mar 13 olle 617  */
4436 08 Mar 13 olle 618 function fetchMassCutoffStr(e, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax)
4436 08 Mar 13 olle 619 {
4436 08 Mar 13 olle 620   // Get mass value (equals null if any input argument values are invalid)
4436 08 Mar 13 olle 621   var mass =  fetchMassValue(e, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax);
4436 08 Mar 13 olle 622   if (mass == null)
4436 08 Mar 13 olle 623   {
4436 08 Mar 13 olle 624     return null;
4436 08 Mar 13 olle 625   }
4436 08 Mar 13 olle 626   // Get mass cutoff string
4436 08 Mar 13 olle 627   var massCutoffStr = '';
4436 08 Mar 13 olle 628   if (mass >= massMin && mass <= massMax)
4436 08 Mar 13 olle 629   {
4436 08 Mar 13 olle 630     // Mouse event inside spectrum range, set mass value
4436 08 Mar 13 olle 631     massCutoffStr = '' + mass;
4436 08 Mar 13 olle 632   }
4436 08 Mar 13 olle 633   else if (mass < massMin)
4436 08 Mar 13 olle 634   {
4436 08 Mar 13 olle 635     // Mouse event below spectrum range, set mass value to below lowest mass
4436 08 Mar 13 olle 636     massCutoffStr = '' + (massMin - 0.1).toFixed(1);
4436 08 Mar 13 olle 637   }
4436 08 Mar 13 olle 638   else if (mass > massMax)
4436 08 Mar 13 olle 639   {
4436 08 Mar 13 olle 640     // Mouse event above spectrum range, set mass value to above highest mass
4436 08 Mar 13 olle 641     massCutoffStr = '' + (massMax + 0.1).toFixed(1);
4436 08 Mar 13 olle 642   }
4436 08 Mar 13 olle 643   return massCutoffStr;
4436 08 Mar 13 olle 644 }
4436 08 Mar 13 olle 645
4436 08 Mar 13 olle 646 var lastMouseDownMassCutoffStr = '';
4436 08 Mar 13 olle 647 var isNextClickReservedForMouseUpEvent = false;
4436 08 Mar 13 olle 648
4436 08 Mar 13 olle 649 /**
4436 08 Mar 13 olle 650  *  Converts an event in a spectrum image to a mass value and
4436 08 Mar 13 olle 651  *  sets mass cutoff value to the found mass.
4436 08 Mar 13 olle 652  *  In order to support setting of cutoff masses using
4436 08 Mar 13 olle 653  *  two clicks instead of dragging, a mass cutoff
4437 08 Mar 13 olle 654  *  value will not be set if isNextClickReservedForMouseUpEvent == true.
4436 08 Mar 13 olle 655  *
4436 08 Mar 13 olle 656  *  @param e event The event to get position from
4436 08 Mar 13 olle 657  *  @param inputElName String The element name of the mass cutoff input field in the html page
4436 08 Mar 13 olle 658  *  @param imgId String The element id of the spectrum img tag in the html page
4436 08 Mar 13 olle 659  *  @param spectrumWidth int The spectrum width in pixels
4436 08 Mar 13 olle 660  *  @param spectrumOffsetLeft int The spectrum offset from the left image border in pixels
4436 08 Mar 13 olle 661  *  @param spectrumOffsetRight int The spectrum offset from the right image border in pixels
4436 08 Mar 13 olle 662  *  @param massMin double The lowest mass value in the displayed spectrum
4436 08 Mar 13 olle 663  *  @param massMax double The highest mass value in the displayed spectrum
4436 08 Mar 13 olle 664  */
4436 08 Mar 13 olle 665 function setMouseDownMassCutoffValue(e, inputElName, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax)
4436 08 Mar 13 olle 666 {
4436 08 Mar 13 olle 667   if (isNextClickReservedForMouseUpEvent)
4436 08 Mar 13 olle 668   {
4436 08 Mar 13 olle 669     // Mouse click reserved for mouse up event
4436 08 Mar 13 olle 670     //alert('setMouseDownMassCutoffValue(): isNextClickReservedForMouseUpEvent = ' + isNextClickReservedForMouseUpEvent);
4436 08 Mar 13 olle 671     return;
4436 08 Mar 13 olle 672   }
4436 08 Mar 13 olle 673   // Prevent default dragging of image in older browsers
4436 08 Mar 13 olle 674   e.preventDefault();
4436 08 Mar 13 olle 675   if (inputElName == null || inputElName == '')
4436 08 Mar 13 olle 676   {
4436 08 Mar 13 olle 677     //alert('setMouseDownMassCutoffValue(): inputElName == ' + inputElName);
4436 08 Mar 13 olle 678     return;
4436 08 Mar 13 olle 679   }
4436 08 Mar 13 olle 680   // Get mass cutoff string (equals null if any input argument values are invalid)
4436 08 Mar 13 olle 681   var massCutoffStr = fetchMassCutoffStr(e, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax);
4436 08 Mar 13 olle 682   if (massCutoffStr == null)
4436 08 Mar 13 olle 683   {
4436 08 Mar 13 olle 684     //alert('setMouseDownMassCutoffValue(): massCutoffStr == null');
4436 08 Mar 13 olle 685     return;
4436 08 Mar 13 olle 686   }
4436 08 Mar 13 olle 687   // Get input field element
4436 08 Mar 13 olle 688   var inputEl = getLastElementByName(inputElName);
4436 08 Mar 13 olle 689   if (inputEl == null)
4436 08 Mar 13 olle 690   {
4436 08 Mar 13 olle 691     //alert('setMouseDownMassCutoffValue(): inputEl == null');
4436 08 Mar 13 olle 692     return;
4436 08 Mar 13 olle 693   }
4436 08 Mar 13 olle 694   // Set input field value
4436 08 Mar 13 olle 695   inputEl.value = massCutoffStr;
4436 08 Mar 13 olle 696   // Store value set
4436 08 Mar 13 olle 697   lastMouseDownMassCutoffStr = massCutoffStr;
4436 08 Mar 13 olle 698 }
4436 08 Mar 13 olle 699
4436 08 Mar 13 olle 700 /**
4436 08 Mar 13 olle 701  *  Converts an event in a spectrum image to a mass value and
4436 08 Mar 13 olle 702  *  sets mass cutoff value to the found mass.
4436 08 Mar 13 olle 703  *  In order to support setting of cutoff masses using
4436 08 Mar 13 olle 704  *  two clicks instead of dragging, a mass cutoff
4436 08 Mar 13 olle 705  *  value will not be set if the mass value equals lastMouseDownMassCutoffStr.
4436 08 Mar 13 olle 706  *
4436 08 Mar 13 olle 707  *  @param e event The event to get position from
4436 08 Mar 13 olle 708  *  @param inputElName String The element name of the mass cutoff input field in the html page
4436 08 Mar 13 olle 709  *  @param imgId String The element id of the spectrum img tag in the html page
4436 08 Mar 13 olle 710  *  @param spectrumWidth int The spectrum width in pixels
4436 08 Mar 13 olle 711  *  @param spectrumOffsetLeft int The spectrum offset from the left image border in pixels
4436 08 Mar 13 olle 712  *  @param spectrumOffsetRight int The spectrum offset from the right image border in pixels
4436 08 Mar 13 olle 713  *  @param massMin double The lowest mass value in the displayed spectrum
4436 08 Mar 13 olle 714  *  @param massMax double The highest mass value in the displayed spectrum
4436 08 Mar 13 olle 715  */
4436 08 Mar 13 olle 716 function setMouseUpMassCutoffValue(e, inputElName, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax)
4436 08 Mar 13 olle 717 {
4436 08 Mar 13 olle 718   // Prevent default dragging of image in older browsers
4436 08 Mar 13 olle 719   e.preventDefault();
4436 08 Mar 13 olle 720   if (inputElName == null || inputElName == '')
4436 08 Mar 13 olle 721   {
4436 08 Mar 13 olle 722     //alert('setMouseUpMassCutoffValue(): inputElName == ' + inputElName);
4436 08 Mar 13 olle 723     return;
4436 08 Mar 13 olle 724   }
4436 08 Mar 13 olle 725   // Get mass cutoff string (equals null if any input argument values are invalid)
4436 08 Mar 13 olle 726   var massCutoffStr = fetchMassCutoffStr(e, imgId, spectrumWidth, spectrumOffsetLeft, spectrumOffsetRight, massMin, massMax);
4436 08 Mar 13 olle 727   if (massCutoffStr == null)
4436 08 Mar 13 olle 728   {
4436 08 Mar 13 olle 729     //alert('setMouseUpMassCutoffValue(): massCutoffStr == null');
4436 08 Mar 13 olle 730     return;
4436 08 Mar 13 olle 731   }
4436 08 Mar 13 olle 732   if (massCutoffStr == lastMouseDownMassCutoffStr)
4436 08 Mar 13 olle 733   {
4436 08 Mar 13 olle 734     // No drag, mouse click intended for mouse down event
4436 08 Mar 13 olle 735     //alert('setMouseDownMassCutoffValue(): massCutoffStr == lastMouseDownMassCutoffStr = ' + massCutoffStr);
4436 08 Mar 13 olle 736     isNextClickReservedForMouseUpEvent = true;
4436 08 Mar 13 olle 737     return;
4436 08 Mar 13 olle 738   }
4436 08 Mar 13 olle 739   // Get input field element
4436 08 Mar 13 olle 740   var inputEl = getLastElementByName(inputElName);
4436 08 Mar 13 olle 741   if (inputEl == null)
4436 08 Mar 13 olle 742   {
4436 08 Mar 13 olle 743     //alert('setMouseUpMassCutoffValue(): inputEl == null');
4436 08 Mar 13 olle 744     return;
4436 08 Mar 13 olle 745   }
4436 08 Mar 13 olle 746   // Set input field value
4436 08 Mar 13 olle 747   inputEl.value = massCutoffStr;
4436 08 Mar 13 olle 748   // Set focus to input field
4436 08 Mar 13 olle 749   inputEl.focus();
4436 08 Mar 13 olle 750   // Set isNextClickReservedForMouseUpEvent to false
4436 08 Mar 13 olle 751   isNextClickReservedForMouseUpEvent = false;
4436 08 Mar 13 olle 752 }
4436 08 Mar 13 olle 753
2597 05 Mar 08 gregory 754 var body;
3919 28 Oct 10 gregory 755 window.onload =function()
3919 28 Oct 10 gregory 756 {
3919 28 Oct 10 gregory 757     body = getElement("rightFrameBody");
3919 28 Oct 10 gregory 758     addShadeUnshade(body);
3919 28 Oct 10 gregory 759     var elements = document.getElementsByTagName("LI");
3919 28 Oct 10 gregory 760     for(var i = 0; i < elements.length;i++)
3919 28 Oct 10 gregory 761     {
3919 28 Oct 10 gregory 762         addHiliteEvents(elements[i]);
3919 28 Oct 10 gregory 763     }
4410 12 Feb 13 olle 764     // Start regular updates for Jobs table
4422 25 Feb 13 olle 765     if (document.forms[0] != null)
4410 12 Feb 13 olle 766     {
4422 25 Feb 13 olle 767       if (document.forms[0].name == 'formOfJob')
4422 25 Feb 13 olle 768       {
4422 25 Feb 13 olle 769         startRegularUpdates();
4422 25 Feb 13 olle 770     }
4410 12 Feb 13 olle 771     }
3919 28 Oct 10 gregory 772 };
2597 05 Mar 08 gregory 773