// getAbsoluteTop, getAbsoluteLeft
// moved to include/utilityFunctions.js

      function getParentElement (obj, elementName) {
        while (obj.tagName != elementName) {
			obj = obj.parentElement;
        }
        return obj;
      }

      function getImageName (obj) {
        str = obj.src;
        re = /([a-zA-Z0-9])+.gif/g;
        return str.match(re);
      }

      function changeImage (obj, toStatus) {                 
        if (obj.tagName == 'IMG') {
          var imageName = getImageName (obj);
        
          if (imageName != 'Empty.gif') {
            if (toStatus == 'on') {
              if (imageName == 'folderclosed.gif') {
                obj.src = '../images/folderopen.gif';
              }
              else if (imageName == 'plusonly.gif') {
                obj.src = '../images/minusonly.gif';
              }
            }
            else {
              if (imageName == 'folderopen.gif') {
                obj.src = '../images/folderclosed.gif';
              }
              else if (imageName == 'minusonly.gif') {
                obj.src = '../images/plusonly.gif';
              }
            }
          }
        }
        else if (obj.tagName == 'TABLE' || obj.tagName == 'TBODY'  
            || obj.tagName == 'TR' || obj.tagName == 'TD') {
          for (var i = 0; i < obj.children.length; i++) {
            changeImage (obj.children[i], toStatus);
          }
        }
      }
      
      function getStatus (obj) {
        imageName = getImageName (obj);

        if (imageName == 'minusonly.gif' || imageName == 'folderopen.gif') {
          return 'on';
        }
        else {
          return 'off';
        }
      }

      function invertStatus (status) {
        if (status == 'on') {
          return 'off';
        }
        else {
          return 'on';
        }
      }

      function getSpanNumber (obj) {
        str = obj.id;
        return str.substring (4, str.length - 2);
      }

      function getTableNumber (obj) {
        str = obj.id;
        return str.substring (9, str.length);
      }

      function mustToggle (spanNumber, tableNumber, status) {
        if (status == 'off') {
          if (tableNumber.length > spanNumber.length && tableNumber.substring (0, spanNumber.length) == spanNumber) {
            return true;
          }
          else {
            return false;
          }
        }
        else {
          str = tableNumber.substring (0, spanNumber.length);

          if (tableNumber.length > spanNumber.length
                  && tableNumber.substring (0, spanNumber.length) == spanNumber) {
            str = tableNumber.substring (spanNumber.length, tableNumber.length);
            re = /_([0-9])_/g;
            found = str.match(re);

            return found == null;
          }
          else {
            return false;
          }
        }
      }

      function toggleTable (table, clickedTable, status) {
        var tableNumber = getTableNumber (table);

        if (mustToggle (clickedTable, tableNumber, status)) {
          if (status == 'on') {
            table.style.display = "";
            changeImage (table, 'off');
          }
          else {
            table.style.display = "None";
          }
        }
      }

      function image_onclick () {
 		var obj=window.event.srcElement;
        var toStatus = invertStatus (getStatus (obj));
        var childTable = getParentElement (obj, "TABLE");
        
        childTable = getParentElement (childTable, "TR");
        childTable = childTable.nextSibling;
        childTable = childTable.firstChild;
        childTable = childTable.firstChild;

        if (toStatus == "on") {
			childTable.style.display = '';
        }
        else {
			childTable.style.display = 'None';
        }
	
        changeImage (obj, toStatus);
      }
      
      function openTable (aTable) {
		aTable.style.display = '';

		var controllingTable = getParentElement (aTable, "TR");
        controllingTable = controllingTable.previousSibling;
        controllingTable = controllingTable.firstChild;
        controllingTable = controllingTable.firstChild;
        
		changeImage (controllingTable, 'on');

		var parentTable = getParentElement (controllingTable, "TR");
		parentTable = getParentElement (parentTable, "TABLE");

		if (parentTable.id != "TreeTable") {
			openTable (parentTable);
		}
      }
      
      function openElement (aValue) {            
        var radioArray = document.all.TreeRadio;
        var theRadio;

        if (radioArray != null) {            
			for (var i = 0; i < radioArray.length; i++) {
				if (radioArray[i].value == aValue) {
					theRadio = radioArray[i];
				}
			}
		}
        if (theRadio != null) {               
			var theTable = getParentElement (theRadio, "TABLE");
			theTable = getParentElement (theTable, "TR");
			theTable = getParentElement (theTable, "TABLE");
					
			if (theTable.id != "TreeTable") {
  				openTable (theTable);
  			}
  			theRadio.scrollIntoView ();       
			theRadio.checked = 'on';
			theRadio.fireEvent("onclick");
		}
      }

