/*
  @package java_lang;
  */

/**
  @class Object

  This code doesn't define a new class but modifies the Object class
  defined in JavaScript
*/

Object.prototype.toString = java_lang_Object_toString;


function java_lang_Object_toString () {
  return '[object]';
}

String.prototype.toString = java_lang_String_toString;

function java_lang_String_toString () {
  return this;
}
/**
  @package javascript_lang_System;
  */

/**
  @class System

  By convention system properties should be defined in a file 
  "System.properties.js" and included as first javascript
  in every html page.
  This class loads all variables in 'window' that start with 
  _SYSTEM_PRPOERTY_PREFIX into the system properties
  */
function javascript_lang_System () {
}
javascript_lang_System.prototype._SYSTEM_PROPERTY_PREFIX = 'SystemProperties_';
javascript_lang_System.prototype._defaultSystemProperties = new Object ();
javascript_lang_System.prototype.getProperty = javascript_lang_System_getProperty;
javascript_lang_System.prototype.setProperty = javascript_lang_System_setProperty;
javascript_lang_System.prototype._loadProperties = javascript_lang_System__loadProperties;
javascript_lang_System.prototype._systemProperties = javascript_lang_System.prototype._loadProperties();

/**
  @static
  */
function javascript_lang_System_getProperty (key, defaultValue) {
  if (this._systemProperties [key]) {
    return this._systemProperties [key];
  }
  else if (this._defaultSystemProperties [key]) {
    return this._defaultSystemProperties [key];
  }
  else {
    return defaultValue;
  }
}

/**
  @static
  */
function javascript_lang_System_setProperty (key, value) {
  this._systemProperties [key] = value;
}

/**
  @static
  */
function javascript_lang_System__loadProperties () {
  var properties = new Object ();
  for (var property in window) {
    if (property.substring (0, this._SYSTEM_PROPERTY_PREFIX.length) ==
        this._SYSTEM_PROPERTY_PREFIX) {        
      properties 
          [property.substring (this._SYSTEM_PROPERTY_PREFIX.length, property.length)] = 
          window [property];
    }
  }
  return properties;
}

/**
  @package javascriptx_reference;
  */

/**
  @class References
  */
function javascriptx_reference_References () {
}
// static variables
javascriptx_reference_References.prototype._objects= new Array();
// static methods
javascriptx_reference_References.prototype.getReference= 
    javascriptx_reference_References_getReference;
javascriptx_reference_References.prototype.getObject= 
    javascriptx_reference_References_getObject;
javascriptx_reference_References.prototype.getReferenceCode= 
    javascriptx_reference_References_getReferenceCode;


function javascriptx_reference_References_getReference (object) {
  var result= -1;
  for (var i= 0; i < this._objects.length; i++) {
    if (this._objects [i] == object) {
      result= i;
    }
  }
  if (result == -1) {
    result= this._objects.length;
    this._objects [result]= object;
  }
  return result;
}

function javascriptx_reference_References_getObject (reference) {
  return this._objects [reference];
}

function javascriptx_reference_References_getReferenceCode (object) {
  var reference= javascriptx_reference_References.prototype.getReference (object);
  var referenceCode= 'javascriptx_reference_References.prototype.getObject (' + reference + ')';
  return referenceCode;
}//@package javascriptx_swing;

/**
  @class JSComponent
  */

function javascriptx_swing_JSComponent () {
  this._htmlString= '';
  this._isValid= true;
  this._styleClass= '';
  this._ui = '';
  this._frame;

  this.paint = javascriptx_swing_JSComponent_paint;
  this.validate = javascriptx_swing_JSComponent_validate;
  this.invalidate = javascriptx_swing_JSComponent_invalidate;
  this.doLayout = javascriptx_swing_JSComponent_doLayout;
  this.getStyleClass = javascriptx_swing_JSComponent_getStyleClass;
  this.setStyleClass = javascriptx_swing_JSComponent_setStyleClass;
  this.getUI = javascriptx_swing_JSComponent_getUI;
  this.setUI = javascriptx_swing_JSComponent_setUI;
  this.getFrame = javascriptx_swing_JSComponent_getFrame;
  this._addedToFrame = javascriptx_swing_JSComponent__addedToFrame;
  this.repaint = javascriptx_swing_JSComponent_repaint;
}


function javascriptx_swing_JSComponent_paint (document) {
  if (! this._isValid) {
    this.validate ();
  }
  document.write (this._htmlString);
}

function javascriptx_swing_JSComponent_validate () {
  if (! this._isValid) {
    this.doLayout ();
    this._isValid= true;
  }
}

function javascriptx_swing_JSComponent_invalidate () {
  this._isValid= false;
}

function javascriptx_swing_JSComponent_doLayout () {
  this._htmlString= '';
}

function javascriptx_swing_JSComponent_getStyleClass () {
  return this._styleClass;
}

function javascriptx_swing_JSComponent_setStyleClass (styleClass) {
  this._styleClass= styleClass;
  this.invalidate();
}

function javascriptx_swing_JSComponent_getUI () {
  return this._ui;
}

function javascriptx_swing_JSComponent_setUI (ui) {
  this._ui= ui;
  this.invalidate();
}

function javascriptx_swing_JSComponent_getFrame () {
  return this._frame;
}

function javascriptx_swing_JSComponent__addedToFrame (frame) {
  this._frame= frame;
}

function javascriptx_swing_JSComponent_repaint () {
  this._frame.repaint ();
}
/**
  @package javascriptx_swing;
  @import javascriptx_swing_JSComponent;
  @import javascriptx_swing_Tag;
  */


/**
  @class JSLabel
  @extends JSComponent
  */
function javascriptx_swing_JSLabel () {
  this._super = javascriptx_swing_JSComponent;
  this._super();

  this._text= '';

  this.doLayout= javascriptx_swing_JSLabel_doLayout
  this.getText= javascriptx_swing_JSLabel_getText;
  this.setText= javascriptx_swing_JSLabel_setText;
}
javascriptx_swing_JSLabel.prototype = new javascriptx_swing_JSComponent ();

function javascriptx_swing_JSLabel_getText () {
  return this._text;
}

function javascriptx_swing_JSLabel_setText (text) {
  this._text= text;
  this.invalidate();
}

function javascriptx_swing_JSLabel_doLayout () {
  var labelTag= new javascriptx_swing_Tag ('DIV');
  labelTag.setAttribute ('class', this._styleClass);
  this._htmlString= 
    labelTag.getStartTag () + this._text + labelTag.getEndTag ();
}

/**
  @package javascriptx_swing;
  */

/**
  @class Tag
  */
function javascriptx_swing_Tag (name) {
  this._name= (name) ? name : '';
  this._attributes= new Array();

  this.setAttribute= javascriptx_swing_Tag_setAttribute;
  this.getAttribute= javascriptx_swing_Tag_getAttribute;
  this.getStartTag= javascriptx_swing_Tag_getStartTag;
  this.getEndTag= javascriptx_swing_Tag_getEndTag;
  this.getEmptyTag= javascriptx_swing_Tag_getEmptyTag;
}

function javascriptx_swing_Tag_setAttribute (name, value) {
  this._attributes [name]= value;
}

function javascriptx_swing_Tag_getAttribute (name) {
  return this._attributes [name];
}

function javascriptx_swing_Tag_getStartTag () {
  var result= '';
  if (this._name && this._name!='') {
    result= '<' + this._name;
    for (var attributeName in this._attributes) {
      result+= ' ' + attributeName + '="' + this._attributes [attributeName] + '"';
    }
    result+= '>';
  }
  return result;
}

function javascriptx_swing_Tag_getEndTag () {
  var result= '';
  if (this._name && this._name!='') {
    result= '</' + this._name + '>';
  }
  return result;
}

function javascriptx_swing_Tag_getEmptyTag () {
  var result= '';
  if (this._name && this._name!='') {
    result= '<' + this._name;
    for (var attributeName in this._attributes) {
      result+= ' ' + attributeName + '="' + this._attributes [attributeName] + '"';
    }
    result+= ' />';
  }
  return result;
}

/**
  @package javascriptx_swing_tree;
  */

/**
  @interface TreeModel
  */
function javascriptx_swing_tree_TreeModel () {  
  this.getChild= javascriptx_swing_tree_TreeModel_getChild;
  this.getChildCount= javascriptx_swing_tree_TreeModel_getChildCount;
  this.getIndexOfChild= javascriptx_swing_tree_TreeModel_getIndexOfChild;

  this.getRoot= javascriptx_swing_tree_TreeModel_getRoot;
  this.setRoot= javascriptx_swing_tree_TreeModel_setRoot;
  
  this.isLeaf= javascriptx_swing_tree_TreeModel_isLeaf;
}

function javascriptx_swing_tree_TreeModel_getChild (parent, index) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeModel_getChildCount (parent) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeModel_getIndexOfChild (parent, child) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeModel_getRoot () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeModel_setRoot (root) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeModel_isLeaf (treeNode) {
  this.method_has_not_been_implemented ();
}/**
  @package javascriptx_swing_tree;
  */

/**
  @class DefaultTreeModel
  @implements TreeModel
  */
function javascriptx_swing_tree_DefaultTreeModel () {
  this._super = javascriptx_swing_tree_TreeModel;
  this._super();

  this._root;
  this._asksAllowsChildren= false;
  
  this.asksAllowsChildren= javascriptx_swing_tree_DefaultTreeModel_asksAllowsChildren;
  this.setAsksAllowsChildren= javascriptx_swing_tree_DefaultTreeModel_setAsksAllowsChildren;

  this.getChild= javascriptx_swing_tree_DefaultTreeModel_getChild;
  this.getChildCount= javascriptx_swing_tree_DefaultTreeModel_getChildCount;
  this.getIndexOfChild= javascriptx_swing_tree_DefaultTreeModel_getIndexOfChild;

  this.getRoot= javascriptx_swing_tree_DefaultTreeModel_getRoot;
  this.setRoot= javascriptx_swing_tree_DefaultTreeModel_setRoot;
  
  this.isLeaf= javascriptx_swing_tree_DefaultTreeModel_isLeaf;
}
javascriptx_swing_tree_DefaultTreeModel.prototype = new javascriptx_swing_tree_TreeModel ();



function javascriptx_swing_tree_DefaultTreeModel_asksAllowsChildren () {
  return this._asksAllowsChildren;
}

function javascriptx_swing_tree_DefaultTreeModel_setAsksAllowsChildren (asksAllowsChildren) {
  this._asksAllowsChildren= asksAllowsChildren;
}

function javascriptx_swing_tree_DefaultTreeModel_getChild (parent, index) {
  return parent.getChildAt (index);
}

function javascriptx_swing_tree_DefaultTreeModel_getChildCount (parent) {
  return parent.getChildCount();
}

function javascriptx_swing_tree_DefaultTreeModel_getIndexOfChild (parent, child) {
  return parent.getIndex (child);
}

function javascriptx_swing_tree_DefaultTreeModel_getRoot () {
  return this._root;
}

function javascriptx_swing_tree_DefaultTreeModel_setRoot (root) {
  this._root= root;
}

function javascriptx_swing_tree_DefaultTreeModel_isLeaf (treeNode) {
  var result;
  if (this._asksAllowsChildren) {
    result= treeNode.getAllowsChildren();
  }
  else {
    result= treeNode.isLeaf();
  }
  return result;
}/**
  @package javascriptx_swing_tree;
  */

/**
  @interface TreeNode
  */
function javascriptx_swing_tree_TreeNode () {

  // declare methods
  this.getAllowsChildren= javascriptx_swing_tree_TreeNode_getAllowsChildren;
  this.getChildAt= javascriptx_swing_tree_TreeNode_getChildAt;
  this.getChildCount= javascriptx_swing_tree_TreeNode_getChildCount;
  this.getIndex= javascriptx_swing_tree_TreeNode_getIndex;
  this.getParent= javascriptx_swing_tree_TreeNode_getParent;
  this.isLeaf= javascriptx_swing_tree_TreeNode_isLeaf;
}


function javascriptx_swing_tree_TreeNode_getAllowsChildren() {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeNode_getChildAt (index) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeNode_getChildCount() {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeNode_getIndex (treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeNode_getParent() {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeNode_isLeaf() {
  this.method_has_not_been_implemented ();
}
/**
  @package javascriptx_swing_tree;
  */

/**
  @class DefaultTreeRenderer
  @implements TreeNode
  */
function javascriptx_swing_tree_DefaultTreeNode (allowsChildren) {

  // define variables
  this._allowsChildren = allowsChildren || true;
  this._parent = null;
  this._children = new Array();
  this._userObject = null;

  // define methods
  this.getUserObject = javascriptx_swing_tree_DefaultTreeNode_getUserObject;
  this.setUserObject = javascriptx_swing_tree_DefaultTreeNode_setUserObject;

  this.add = javascriptx_swing_tree_DefaultTreeNode_add;
  this.getPath = javascriptx_swing_tree_DefaultTreeNode_getPath;
  this._getPathToRoot = javascriptx_swing_tree_DefaultTreeNode__getPathToRoot;
  this.getAllowsChildren = javascriptx_swing_tree_DefaultTreeNode_getAllowsChildren;
  this.getChildAt = javascriptx_swing_tree_DefaultTreeNode_getChildAt;
  this.getChildCount = javascriptx_swing_tree_DefaultTreeNode_getChildCount;
  this.getIndex = javascriptx_swing_tree_DefaultTreeNode_getIndex;
  this.getParent = javascriptx_swing_tree_DefaultTreeNode_getParent;
  this.isLeaf = javascriptx_swing_tree_DefaultTreeNode_isLeaf;

  this.getPreviousSibling = javascriptx_swing_tree_DefaultTreeNode_getPreviousSibling;
  this.getNextSibling = javascriptx_swing_tree_DefaultTreeNode_getNextSibling;

  this.toString = javascriptx_swing_tree_DefaultTreeNode_toString;
}


function javascriptx_swing_tree_DefaultTreeNode_getUserObject () {
  return this._userObject;
}

function javascriptx_swing_tree_DefaultTreeNode_setUserObject (userObject) {
  return this._userObject= userObject;
}

function javascriptx_swing_tree_DefaultTreeNode_add (siteElement) {
  this._children [this._children.length]= siteElement;
  siteElement._parent= this;

  // returning this allows chaining of add() calls
  return this;
}

function javascriptx_swing_tree_DefaultTreeNode_getPath() {
  return this._getPathToRoot (this, 0);
}

function javascriptx_swing_tree_DefaultTreeNode__getPathToRoot (treeNode, depth) {
  var result;
  if (this._parent) {
    result = this._parent._getPathToRoot (treeNode, depth + 1);
  }
  else {
    result = new Array (depth);
    result [depth] = treeNode;
    var currentSiteNode = treeNode;
    var index = depth;
    while (currentSiteNode.getParent ()) {
      currentSiteNode = currentSiteNode.getParent ();
      result [--index] = currentSiteNode;
    }
  }
  return result;
}

function javascriptx_swing_tree_DefaultTreeNode_getAllowsChildren() {
  return this._allowsChildren;
}

function javascriptx_swing_tree_DefaultTreeNode_getChildAt (index) {
  var result;
  if (0 <= index && index < this._children.length) {
    result= this._children[index];
  }
  return result;
}

function javascriptx_swing_tree_DefaultTreeNode_getChildCount() {
  return this._children.length;
}

function javascriptx_swing_tree_DefaultTreeNode_getIndex (treeNode) {
  for (var i= 0; i < this._children.length; i++) {
    if (treeNode == this._children[i]) {
      return i;
    }
  }
  return -1;
}

function javascriptx_swing_tree_DefaultTreeNode_getParent () {
  return this._parent;
}

function javascriptx_swing_tree_DefaultTreeNode_isLeaf () {
  return 0 == this._children.length;
}


function javascriptx_swing_tree_DefaultTreeNode_getPreviousSibling () {
  var result;
  if (this._parent) {
    var ownIndex = this._parent.getIndex (this);
    if (ownIndex > 0) {
      result = this._parent.getChildAt (ownIndex - 1);
    }
  }
  return result;
}

function javascriptx_swing_tree_DefaultTreeNode_getNextSibling () {
  var result;
  if (this._parent) {
    var ownIndex = this._parent.getIndex (this);
    if (ownIndex < this._parent.getChildCount() - 1) {
      result = this._parent.getChildAt (ownIndex + 1);
    }
  }
  return result;
}


function javascriptx_swing_tree_DefaultTreeNode_toString () {
  var result;
  if (this._userObject) {
    result= this._userObject.toString();
  }
  else {
    result= 'null';
  }
  return result;
}
/**
  @package javascriptx_swing_tree;
  */

/**
  @interface TreeRenderer
  */
function javascriptx_swing_tree_TreeRenderer () {

  this.getHandleCell= javascriptx_swing_tree_TreeRenderer_getHandleCell;
  this.getNodeCell= javascriptx_swing_tree_TreeRenderer_getNodeCell;
  this.getIndentionCell= javascriptx_swing_tree_TreeRenderer_getIndentionCell;
  this.getTableTag= javascriptx_swing_tree_TreeRenderer_getTableTag;
  this.getNodeRowTag= javascriptx_swing_tree_TreeRenderer_getNodeRowTag;
  this.getChildrenRowTag= javascriptx_swing_tree_TreeRenderer_getChildrenRowTag;
  this.getHandleCellTag= javascriptx_swing_tree_TreeRenderer_getHandleCellTag;
  this.getNodeCellTag= javascriptx_swing_tree_TreeRenderer_getNodeCellTag;
  this.getIndentionCellTag= javascriptx_swing_tree_TreeRenderer_getIndentionCellTag;
  this.getChildrenCellTag= javascriptx_swing_tree_TreeRenderer_getChildrenCellTag;
}


function javascriptx_swing_tree_TreeRenderer_getHandleCell (tree, treeNode, nodeIsExpanded) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getNodeCell (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getIndentionCell (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getTableTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getNodeRowTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getChildrenRowTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getHandleCellTag (tree, treeNode, nodeIsExpanded) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getNodeCellTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getIndentionCellTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_TreeRenderer_getChildrenCellTag (tree, treeNode) {
  this.method_has_not_been_implemented ();
}

/**
  @package javascriptx_swing_tree;
  @import javascriptx_swing_Tag
  */

/**
  @class DefaultTreeRenderer
  @implements TreeRenderer

  The DefaultTreeRenderer calls toString() on treeNodes to display them.
  Override getNodeCell() to change this behaviour.

  The DefaultTreeRenderer sets the class attribute on every tag it produces.

  The DefaultTreeRenderer doesn't rely on any knowledge about treeNode objects. 
  It doesn't even use the TreeNode interface.
  */
function javascriptx_swing_tree_DefaultTreeRenderer () {
  this._super = javascriptx_swing_tree_TreeRenderer;
  this._super();

  this._collapsedBranchImage = '/images/system/javascriptx_swing_tree_collapsedBranch_9x9_black.gif';
  this._expandedBranchImage = '/images/system/javascriptx_swing_tree_expandedBranch_9x9_black.gif';
  this._indentionImage = '/images/system/javascriptx_swing_tree_indention_9x9.gif';

  this.getHandleCell= javascriptx_swing_tree_DefaultTreeRenderer_getHandleCell;
  this.getNodeCell= javascriptx_swing_tree_DefaultTreeRenderer_getNodeCell;
  this.getIndentionCell= javascriptx_swing_tree_DefaultTreeRenderer_getIndentionCell;

  this.getTableTag= javascriptx_swing_tree_DefaultTreeRenderer_getTableTag;
  this.getNodeRowTag= javascriptx_swing_tree_DefaultTreeRenderer_getNodeRowTag;
  this.getChildrenRowTag= javascriptx_swing_tree_DefaultTreeRenderer_getChildrenRowTag;
  this.getHandleCellTag= javascriptx_swing_tree_DefaultTreeRenderer_getHandleCellTag;
  this.getNodeCellTag= javascriptx_swing_tree_DefaultTreeRenderer_getNodeCellTag;
  this.getIndentionCellTag= javascriptx_swing_tree_DefaultTreeRenderer_getIndentionCellTag;
  this.getChildrenCellTag= javascriptx_swing_tree_DefaultTreeRenderer_getChildrenCellTag;
}
javascriptx_swing_tree_DefaultTreeRenderer.prototype = new javascriptx_swing_tree_TreeRenderer ();


function javascriptx_swing_tree_DefaultTreeRenderer_getHandleCell (tree, treeNode, nodeIsExpanded) {
  var result= '';
  if (tree.getShowsHandles()) {
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('border', '0');
    imageTag.setAttribute ('class', tree.getStyleClass ());
    if (! tree.getTreeModel().isLeaf (treeNode)) {
      if (nodeIsExpanded) {
        imageTag.setAttribute ('src', this._expandedBranchImage);
      }
      else {
        imageTag.setAttribute ('src', this._collapsedBranchImage);
      }
    }
    else {
      // getEmptyCell
      imageTag.setAttribute ('src', this._indentionImage);
    }
    result = imageTag.getEmptyTag();
  }
  else {
    result= '&nbsp;';
  }
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getNodeCell (tree, treeNode) {
  return treeNode.toString();
}

function javascriptx_swing_tree_DefaultTreeRenderer_getIndentionCell (tree, treeNode) {
  var result= '';
  if (tree.getShowsLines ()) {
    /* not implemented */
  }
  else {
    result= '&nbsp;';
  }
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getTableTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TABLE');
  result.setAttribute ('class', tree.getStyleClass ());
  result.setAttribute ('border', '0');
  result.setAttribute ('cellpadding', '0');
  result.setAttribute ('cellspacing', '0');
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getNodeRowTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TR');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getChildrenRowTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TR');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getHandleCellTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getNodeCellTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getIndentionCellTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

function javascriptx_swing_tree_DefaultTreeRenderer_getChildrenCellTag (tree, treeNode) {
  var result= new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tree.getStyleClass ());
  return result;
}

/**
  @package javascriptx_swing_tree;
  */

/**
  @interface CollapseModel
  */
function javascriptx_swing_tree_CollapseModel () {
  this.getTreeModel = javascriptx_swing_tree_CollapseModel_getTreeModel;
  this.setTreeModel = javascriptx_swing_tree_CollapseModel_setTreeModel;
  this.getIndex = javascriptx_swing_tree_CollapseModel_getIndex;
  this.getTreeNode = javascriptx_swing_tree_CollapseModel_getTreeNode;

  this.isCollapsed = javascriptx_swing_tree_CollapseModel_isCollapsed;
  this.isExpanded = javascriptx_swing_tree_CollapseModel_isExpanded;
  this.collapse = javascriptx_swing_tree_CollapseModel_collapse;
  this.expand = javascriptx_swing_tree_CollapseModel_expand;
  this.collapseBranch = javascriptx_swing_tree_CollapseModel_collapseBranch;
  this.expandBranch = javascriptx_swing_tree_CollapseModel_expandBranch;
  this.collapseAll = javascriptx_swing_tree_CollapseModel_collapseAll;
  this.expandAll = javascriptx_swing_tree_CollapseModel_expandAll;
}



function javascriptx_swing_tree_CollapseModel_getTreeModel () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_setTreeModel (treeModel) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_getIndex (treeNode) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_getTreeNode (treeNodeIndex) {
  this.method_has_not_been_implemented ();
}


function javascriptx_swing_tree_CollapseModel_isCollapsed (treeNodeIndex) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_isExpanded (treeNodeIndex) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_collapse (treeNodeIndex) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_expand (treeNodeIndex) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_collapseBranch () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_expandBranch () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_collapseAll () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_tree_CollapseModel_expandAll () {
  this.method_has_not_been_implemented ();
}



/**
  @package javascriptx_swing_tree;
  */

/**
  @class DefaultCollapseModel
  @implements CollapseModel
  */
function javascriptx_swing_tree_DefaultCollapseModel () {
  this._super = javascriptx_swing_tree_CollapseModel;
  this._super();

  this._treeModel;
  this._treeNodes = new Array ();
  this._isCollapsed = new Array ();

  this.getTreeModel = javascriptx_swing_tree_DefaultCollapseModel_getTreeModel;
  this.setTreeModel = javascriptx_swing_tree_DefaultCollapseModel_setTreeModel;
  this.getIndex = javascriptx_swing_tree_DefaultCollapseModel_getIndex;
  this.getTreeNode = javascriptx_swing_tree_DefaultCollapseModel_getTreeNode;

  this.isCollapsed = javascriptx_swing_tree_DefaultCollapseModel_isCollapsed;
  this.isExpanded = javascriptx_swing_tree_DefaultCollapseModel_isExpanded;
  this.collapse = javascriptx_swing_tree_DefaultCollapseModel_collapse;
  this.expand = javascriptx_swing_tree_DefaultCollapseModel_expand;
  this.collapseBranch = javascriptx_swing_tree_DefaultCollapseModel_collapseBranch;
  this.expandBranch = javascriptx_swing_tree_DefaultCollapseModel_expandBranch;
  this.collapseAll = javascriptx_swing_tree_DefaultCollapseModel_collapseAll;
  this.expandAll = javascriptx_swing_tree_DefaultCollapseModel_expandAll;


  this._addTreeNode = javascriptx_swing_tree_DefaultCollapseModel__addTreeNode;
}
javascriptx_swing_tree_DefaultCollapseModel.prototype = new javascriptx_swing_tree_CollapseModel ();


function javascriptx_swing_tree_DefaultCollapseModel_getTreeModel () {
  return this._treeModel;
}

function javascriptx_swing_tree_DefaultCollapseModel_setTreeModel (treeModel) {
  this._treeModel = treeModel;
  this._treeNodes.length = 0;
  this._isCollapsed.length = 0;
  var root= this._treeModel.getRoot ();
  this._addTreeNode (root);
}

function javascriptx_swing_tree_DefaultCollapseModel_getIndex (treeNode) {
  var result= -1;
  for (var i = 0; i < this._treeNodes.length; i++) {
    if (this._treeNodes [i] == treeNode) {
      result = i;
      break;
    }
  }
  return result;
}

function javascriptx_swing_tree_DefaultCollapseModel_getTreeNode (treeNodeIndex) {
  return this._treeNodes [treeNodeIndex];
}

function javascriptx_swing_tree_DefaultCollapseModel__addTreeNode (treeNode) {
  this._treeNodes [this._treeNodes.length] = treeNode;
  this._isCollapsed [this._isCollapsed.length] = false;
  
  var childCount = this._treeModel.getChildCount (treeNode);
  for (var i= 0; i < childCount; i++) {
    var child = this._treeModel.getChild (treeNode, i);
    this._addTreeNode (child);
  }
}


function javascriptx_swing_tree_DefaultCollapseModel_isCollapsed (treeNodeIndex) {
  return this._isCollapsed [treeNodeIndex];
}

function javascriptx_swing_tree_DefaultCollapseModel_isExpanded (treeNodeIndex) {
  return ! this.isCollapsed (treeNodeIndex);
}

function javascriptx_swing_tree_DefaultCollapseModel_collapse (treeNodeIndex) {
  this._isCollapsed [treeNodeIndex] = true;
}

function javascriptx_swing_tree_DefaultCollapseModel_expand (treeNodeIndex) {
  this._isCollapsed [treeNodeIndex] = false;
}

function javascriptx_swing_tree_DefaultCollapseModel_collapseBranch (treeNodeIndex) {
  this.collapse (treeNodeIndex);
  var treeNode= this.getTreeNode (treeNodeIndex);
  var childCount= this._treeModel.getChildCount (treeNode);
  for (var i = 0; i < childCount; i++) {
    var childNode = this._treeModel.getChild (treeNode, i);
    var childNodeIndex= this.getIndex (childNode);
    this.collapseBranch (childNodeIndex);
  }
}

function javascriptx_swing_tree_DefaultCollapseModel_expandBranch (treeNodeIndex) {
  this.expand (treeNodeIndex);
  var treeNode= this.getTreeNode (treeNodeIndex);
  var childCount= this._treeModel.getChildCount (treeNode);
  for (var i = 0; i < childCount; i++) {
    var childNode = this._treeModel.getChild (treeNode, i);
    var childNodeIndex= this.getIndex (childNode);
    this.expandBranch (childNodeIndex);
  }
}

function javascriptx_swing_tree_DefaultCollapseModel_collapseAll () {
  for (var i = 0; i < this._treeNodes.length; i++) {
    this._isCollapsed [i] = true;
  }
}

function javascriptx_swing_tree_DefaultCollapseModel_expandAll () {
  for (var i = 0; i < this._treeNodes.length; i++) {
    this._isCollapsed [i] = false;
  }
}



/**
  @package javascriptx_swing;
  @import javascriptx_swing_JSComponent;
  @import javascriptx_swing_Tag;
  @import javascriptx_swing_tree_DefaultCollapseModel;
  */

/**
  @class public JSTree
  @extends JSComponent
  */
function javascriptx_swing_JSTree () {
  this._super = javascriptx_swing_JSComponent;
  this._super();

  this._treeModel = null;
  this._treeRenderer = null;
  this._collapseModel = new javascriptx_swing_tree_DefaultCollapseModel ();
  this._rootVisible = true;
  this._showsRootHandles = true;
  this._showsHandles = true;
  this._showsLines = false;
  this._collapsable = true;

  this.getTreeModel= javascriptx_swing_JSTree_getTreeModel;
  this.setTreeModel= javascriptx_swing_JSTree_setTreeModel;

  this.getCollapseModel= javascriptx_swing_JSTree_getCollapseModel;
  this.setCollapseModel= javascriptx_swing_JSTree_setCollapseModel;

  this.getTreeRenderer= javascriptx_swing_JSTree_getTreeRenderer;
  this.setTreeRenderer= javascriptx_swing_JSTree_setTreeRenderer;

  this.isRootVisible= javascriptx_swing_JSTree_isRootVisible;
  this.setRootVisible= javascriptx_swing_JSTree_setRootVisible;

  this.getShowsRootHandles= javascriptx_swing_JSTree_getShowsRootHandles;
  this.setShowsRootHandles= javascriptx_swing_JSTree_setShowsRootHandles;

  this.getShowsHandles= javascriptx_swing_JSTree_getShowsHandles;
  this.setShowsHandles= javascriptx_swing_JSTree_setShowsHandles;

  this.getShowsLines= javascriptx_swing_JSTree_getShowsLines;
  this.setShowsLines= javascriptx_swing_JSTree_setShowsLines;

  this.isCollapsable= javascriptx_swing_JSTree_isCollapsable;
  this.setCollapsable= javascriptx_swing_JSTree_setCollapsable;

  this.isCollapsed= javascriptx_swing_JSTree_isCollapsed;
  this.isExpanded= javascriptx_swing_JSTree_isExpanded;

  this.collapseNode= javascriptx_swing_JSTree_collapseNode;
  this.expandNode= javascriptx_swing_JSTree_expandNode;

  this.collapseBranch= javascriptx_swing_JSTree_collapseBranch;
  this.expandBranch= javascriptx_swing_JSTree_expandBranch;

  this.collapseAll= javascriptx_swing_JSTree_collapseAll;
  this.expandAll= javascriptx_swing_JSTree_expandAll;

  this._collapseIndex= javascriptx_swing_JSTree__collapseIndex;
  this._expandIndex= javascriptx_swing_JSTree__expandIndex;

  this.doLayout= javascriptx_swing_JSTree_doLayout;

  this._doLayoutRootTable= javascriptx_swing_JSTree__doLayoutRootTable;
  this._doLayoutRootNode= javascriptx_swing_JSTree__doLayoutRootNode;
  this._doLayoutRootNodeRow= javascriptx_swing_JSTree__doLayoutRootNodeRow;
  this._doLayoutRootChildrenRow= javascriptx_swing_JSTree__doLayoutRootChildrenRow;

  this._doLayoutNoRootTable= javascriptx_swing_JSTree__doLayoutNoRootTable;
  this._doLayoutNoRootNode= javascriptx_swing_JSTree__doLayoutNoRootNode;
  this._doLayoutNoRootNodeRow= javascriptx_swing_JSTree__doLayoutNoRootNodeRow;
  this._doLayoutNoRootChildrenRow= javascriptx_swing_JSTree__doLayoutNoRootChildrenRow;

  this._doLayoutChildrenTable= javascriptx_swing_JSTree__doLayoutChildrenTable;
  this._doLayoutNode= javascriptx_swing_JSTree__doLayoutNode;
  this._doLayoutNodeRow= javascriptx_swing_JSTree__doLayoutNodeRow;
  this._doLayoutChildrenRow= javascriptx_swing_JSTree__doLayoutChildrenRow;

  this._doLayoutHandleCell= javascriptx_swing_JSTree__doLayoutHandleCell;
  this._doLayoutNodeCell= javascriptx_swing_JSTree__doLayoutNodeCell;
  this._doLayoutIndentionCell= javascriptx_swing_JSTree__doLayoutIndentionCell;
  this._doLayoutChildrenCell= javascriptx_swing_JSTree__doLayoutChildrenCell;
}
javascriptx_swing_JSTree.prototype = new javascriptx_swing_JSComponent ();


function javascriptx_swing_JSTree_getTreeModel () {
  return this._treeModel;
}

function javascriptx_swing_JSTree_setTreeModel (treeModel) {
  this._treeModel= treeModel;
  if (this._collapseModel) {
    this._collapseModel.setTreeModel (this._treeModel);
  }
  this.invalidate();
}


function javascriptx_swing_JSTree_getCollapseModel () {
  return this._collapseModel;
}

function javascriptx_swing_JSTree_setCollapseModel (collapseModel) {
  this._collapseModel= collapseModel;
  if (this._treeModel) {
    this._collapseModel.setTreeModel (this._treeModel);
  }
  this.invalidate();
}


function javascriptx_swing_JSTree_getTreeRenderer () {
  return this._treeRenderer;
}

function javascriptx_swing_JSTree_setTreeRenderer (treeRenderer) {
  this._treeRenderer= treeRenderer;
  this.invalidate();
}


function javascriptx_swing_JSTree_isRootVisible () {
  return this._rootVisible;
}

function javascriptx_swing_JSTree_setRootVisible (rootVisible) {
  if (this._rootVisible != rootVisible) {
    this._rootVisible= rootVisible;
    this.invalidate();
  }
}


function javascriptx_swing_JSTree_getShowsRootHandles () {
  return this._showsRootHandles;
}

function javascriptx_swing_JSTree_setShowsRootHandles (showsRootHandles) {
  if (this._showsRootHandles != showsRootHandles) {
    this._showsRootHandles= showsRootHandles;
    this.invalidate();
  }
}


function javascriptx_swing_JSTree_getShowsHandles () {
  return this._showsHandles;
}

function javascriptx_swing_JSTree_setShowsHandles (showsHandles) {
  if (this._showsHandles != showsHandles) {
    this._showsHandles= showsHandles;
    this.invalidate();
  }
}


function javascriptx_swing_JSTree_getShowsLines () {
  return this._showsLines;
}

function javascriptx_swing_JSTree_setShowsLines (showsLines) {
  if (this._showsLines != showsLines) {
    this._showsLines= showsLines;
    this.invalidate();
  }
}


function javascriptx_swing_JSTree_isCollapsable () {
  return this._collapsable;
}

function javascriptx_swing_JSTree_setCollapsable (collapsable) {
  if (this._collapsable != collapsable) {
    this._collapsable= collapsable;
    this.invalidate();
  }
}

function javascriptx_swing_JSTree_isCollapsed (treeNode) {
  return this._collapseModel.isCollapsed
      (this._collapseModel.getIndex (treeNode)); 
}

function javascriptx_swing_JSTree_isExpanded (treeNode) {
  return this._collapseModel.isExpanded 
      (this._collapseModel.getIndex (treeNode)); 
}

function javascriptx_swing_JSTree_collapseNode (treeNode) {
  if (this._collapsable) {
    this._collapseIndex (this._collapseModel.getIndex (treeNode));
  }
}

function javascriptx_swing_JSTree_expandNode (treeNode) {
  if (this._collapsable) {
    this._expandIndex (this._collapseModel.getIndex (treeNode));
  }
}

function javascriptx_swing_JSTree__collapseIndex (treeNodeIndex) {
  if (this._collapsable) {
    if (this._collapseModel.isExpanded (treeNodeIndex)) {
      this._collapseModel.collapse (treeNodeIndex);
      this.invalidate ();
      this.repaint ();
    }
  }
}

function javascriptx_swing_JSTree__expandIndex (treeNodeIndex) {
  if (this._collapsable) {
    if (this._collapseModel.isCollapsed (treeNodeIndex)) {
      this._collapseModel.expand (treeNodeIndex);
      this.invalidate ();
      this.repaint ();
    }
  }
}

function javascriptx_swing_JSTree_collapseBranch (treeNode) {
  if (this._collapsable) {
    this._collapseModel.collapseBranch (this._collapseModel.getIndex (treeNode));
    this.invalidate();
  }
}

function javascriptx_swing_JSTree_expandBranch (treeNode) {
  if (this._collapsable) {
    this._collapseModel.expandBranch (this._collapseModel.getIndex (treeNode));
    this.invalidate();
  }
}

function javascriptx_swing_JSTree_collapseAll () {
  if (this._collapsable) {
    this._collapseModel.collapseAll ();
    this.invalidate();
  }
}

function javascriptx_swing_JSTree_expandAll () {
  if (this._collapsable) {
    this._collapseModel.expandAll ();
    this.invalidate();
  }
}


function javascriptx_swing_JSTree_doLayout () {
  this._htmlString = '';
  var rootNode = this._treeModel.getRoot();
  if (this._rootVisible) {
    this._doLayoutRootTable (rootNode);
  }
  else {
    if (this.isExpanded (rootNode)) {
      this._doLayoutNoRootTable (rootNode);
    }
  }
  this._htmlString += '\n';
}


function javascriptx_swing_JSTree__doLayoutRootTable (treeNode) {
  var tableTag= this._treeRenderer.getTableTag (this, treeNode);
  this._htmlString+= '\n' + tableTag.getStartTag ();
  this._doLayoutRootNode (treeNode);
  this._htmlString+= '\n' + tableTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutRootNode (treeNode) {
  this._doLayoutRootNodeRow (treeNode);
  if (!this._treeModel.isLeaf (treeNode)) {
    if (this.isExpanded (treeNode)) {
      this._doLayoutRootChildrenRow (treeNode);
    }
  }
}

function javascriptx_swing_JSTree__doLayoutRootNodeRow (treeNode) {
  var nodeRowTag= this._treeRenderer.getNodeRowTag (this, treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getStartTag ();
  if (this._showsRootHandles) {
    this._doLayoutHandleCell (treeNode);
  }
  this._doLayoutNodeCell (treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutRootChildrenRow (treeNode) {
  var childrenRowTag= this._treeRenderer.getChildrenRowTag (this, treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getStartTag ();
  if (this._showsRootHandles) {
    this._doLayoutIndentionCell (treeNode);
  }
  this._doLayoutChildrenCell (treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getEndTag ();
}



function javascriptx_swing_JSTree__doLayoutNoRootTable (treeNode) {
  var tableTag= this._treeRenderer.getTableTag (this, treeNode);
  this._htmlString+= '\n' + tableTag.getStartTag ();
  for (var i=0; i < this._treeModel.getChildCount (treeNode); i++) {
    this._doLayoutNoRootNode (this._treeModel.getChild (treeNode, i));
  }              
  this._htmlString+= '\n' + tableTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutNoRootNode (treeNode) {
  this._doLayoutNoRootNodeRow (treeNode);
  if (!this._treeModel.isLeaf (treeNode)) {
    if (this.isExpanded (treeNode)) {
      this._doLayoutNoRootChildrenRow (treeNode);
    }
  }
}

function javascriptx_swing_JSTree__doLayoutNoRootNodeRow (treeNode) {
  var nodeRowTag= this._treeRenderer.getNodeRowTag (this, treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getStartTag ();
  if (this._showsHandles) {
    this._doLayoutHandleCell (treeNode);
  }
  this._doLayoutNodeCell (treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutNoRootChildrenRow (treeNode) {
  var childrenRowTag= this._treeRenderer.getChildrenRowTag (this, treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getStartTag ();
  if (this._showsHandles) {
    this._doLayoutIndentionCell (treeNode);
  }
  this._doLayoutChildrenCell (treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getEndTag ();
}




function javascriptx_swing_JSTree__doLayoutChildrenTable (treeNode) {
  var tableTag= this._treeRenderer.getTableTag (this, treeNode);
  this._htmlString+= '\n' + tableTag.getStartTag ();
  for (var i=0; i < this._treeModel.getChildCount (treeNode); i++) {
    this._doLayoutNode (this._treeModel.getChild (treeNode, i));
  }              
  this._htmlString+= '\n' + tableTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutNode (treeNode) {
  this._doLayoutNodeRow (treeNode);
  if (!this._treeModel.isLeaf (treeNode)) {
    if (this.isExpanded (treeNode)) {
      this._doLayoutChildrenRow (treeNode);
    }
  }
}

function javascriptx_swing_JSTree__doLayoutNodeRow (treeNode) {
  var nodeRowTag= this._treeRenderer.getNodeRowTag (this, treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getStartTag ();
  this._doLayoutHandleCell (treeNode);
  this._doLayoutNodeCell (treeNode);
  this._htmlString+= '\n  ' + nodeRowTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutChildrenRow (treeNode) {
  var childrenRowTag= this._treeRenderer.getChildrenRowTag (this, treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getStartTag ();
  this._doLayoutIndentionCell (treeNode);
  this._doLayoutChildrenCell (treeNode);
  this._htmlString+= '\n  ' + childrenRowTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutHandleCell (treeNode) {
  var treeNodeIsCollapsed= this.isCollapsed (treeNode); 
  var handleCellTag= this._treeRenderer.getHandleCellTag (this, treeNode, ! treeNodeIsCollapsed);
  var handleCell= this._treeRenderer.getHandleCell (this, treeNode, ! treeNodeIsCollapsed);
  if (this._collapsable) {
    if (! this._treeModel.isLeaf (treeNode)) {
      var anchorTag= new javascriptx_swing_Tag ('A');
      var referenceCode= javascriptx_reference_References.prototype.getReferenceCode (this);
      var treeNodeIndex= this._collapseModel.getIndex (treeNode);
      if (treeNodeIsCollapsed) {
        anchorTag.setAttribute ('href', 'javascript:top.' + referenceCode + '._expandIndex (' + treeNodeIndex + ')');
      }
      else {
        anchorTag.setAttribute ('href', 'javascript:top.' + referenceCode + '._collapseIndex (' + treeNodeIndex + ')');
      }
      handleCell= anchorTag.getStartTag() + handleCell + anchorTag.getEndTag();
    }
  }
  this._htmlString+= '\n    ' + handleCellTag.getStartTag ();
  this._htmlString+= '\n      ' + handleCell;
  this._htmlString+= '\n    ' + handleCellTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutIndentionCell (treeNode) {
  var indentionCellTag= this._treeRenderer.getIndentionCellTag (this, treeNode);
  var indentionCell= this._treeRenderer.getIndentionCell (this, treeNode);
  this._htmlString+= '\n    ' + indentionCellTag.getStartTag ();
  this._htmlString+= '\n      ' + indentionCell;
  this._htmlString+= '\n    ' + indentionCellTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutNodeCell (treeNode) {
  var nodeCellTag= this._treeRenderer.getNodeCellTag (this, treeNode);
  var nodeCell= this._treeRenderer.getNodeCell (this, treeNode);
  this._htmlString+= '\n    ' + nodeCellTag.getStartTag ();
  this._htmlString+= '\n      ' + nodeCell;
  this._htmlString+= '\n    ' + nodeCellTag.getEndTag ();
}

function javascriptx_swing_JSTree__doLayoutChildrenCell (treeNode) {
  var childrenCellTag= this._treeRenderer.getChildrenCellTag (this, treeNode);
  this._htmlString+= '\n    ' + childrenCellTag.getStartTag ();
  this._doLayoutChildrenTable (treeNode);
  this._htmlString+= '\n    ' + childrenCellTag.getEndTag ();
}

/**
  @package javascriptx_swing;
  */

/**
  @interface public ListModel
  */
function javascriptx_swing_ListModel () {
  this.getElementAt = javascriptx_swing_ListModel_getElementAt;
  this.getSize = javascriptx_swing_ListModel_getSize;
}

function javascriptx_swing_ListModel_getElementAt () {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_ListModel_getSize () {
  this.method_has_not_been_implemented ();
}

/**
  @package javascriptx_swing;
  */

/**
  @class DefaultListModel
  @implements ListModel
  */
function javascriptx_swing_DefaultListModel () {
  this._super = javascriptx_swing_ListModel;
  this._super();

  this._listData;
  
  this.setListData = javascriptx_swing_DefaultListModel_setListData;
  this.getListData = javascriptx_swing_DefaultListModel_getListData;
  this.getElementAt = javascriptx_swing_DefaultListModel_getElementAt;
  this.getSize = javascriptx_swing_DefaultListModel_getSize;
}
javascriptx_swing_DefaultListModel.prototype = new javascriptx_swing_ListModel ();

function javascriptx_swing_DefaultListModel_setListData (listData) {
  this._listData = listData;
}

function javascriptx_swing_DefaultListModel_getListData () {
  return this._listData;
}

function javascriptx_swing_DefaultListModel_getElementAt (index) {
  return this._listData [index];
}

function javascriptx_swing_DefaultListModel_getSize () {
  var result = 0;
  if (this._listData) {
    result = this._listData.length;
  }
  return result;
}
/**
  @package javascriptx_swing;
  */

/**
  @interface public TabRenderer
  */
function javascriptx_swing_TabRenderer () {
  this.getDataCell= javascriptx_swing_TabRenderer_getDataCell;
  this.getDecorativeCell= javascriptx_swing_TabRenderer_getDecorativeCell;
  this.getTableTag= javascriptx_swing_TabRenderer_getTableTag;
  this.getRowTag= javascriptx_swing_TabRenderer_getRowTag;
  this.getDataCellTag= javascriptx_swing_TabRenderer_getDataCellTag;
  this.getDecorativeCellTag= javascriptx_swing_TabRenderer_getDecorativeCellTag;
}
// css id names of the tab subcomponents
javascriptx_swing_TabRenderer.prototype.ROW_UPPER =  'ROW_UPPER';
javascriptx_swing_TabRenderer.prototype.ROW_MIDDLE =  'ROW_MIDDLE';
javascriptx_swing_TabRenderer.prototype.ROW_LOWER =  'ROW_LOWER';
javascriptx_swing_TabRenderer.prototype.CELL_DATA =  'CELL_DATA';
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH =  'CELL_BORDER_NORTH';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH =  'CELL_BORDER_SOUTH';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST =  'CELL_BORDER_WEST';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST =  'CELL_BORDER_EAST';  
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST =  'CELL_CORNER_NORTH_WEST';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST =  'CELL_CORNER_NORTH_EAST';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST =  'CELL_CORNER_SOUTH_WEST';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST =  'CELL_CORNER_SOUTH_EAST';
javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR =  'CELL_SEPARATOR';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH =  'CELL_TEE_NORTH';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH =  'CELL_TEE_SOUTH';
javascriptx_swing_TabRenderer.prototype.CELL_DATA_SELECTED =  'CELL_DATA_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH_SELECTED =  'CELL_BORDER_NORTH_SELECTED';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH_SELECTED =  'CELL_BORDER_SOUTH_SELECTED';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST_SELECTED =  'CELL_BORDER_WEST_SELECTED';  
javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST_SELECTED =  'CELL_BORDER_EAST_SELECTED';  
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED =  'CELL_CORNER_NORTH_WEST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED =  'CELL_CORNER_NORTH_EAST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED =  'CELL_CORNER_SOUTH_WEST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED =  'CELL_CORNER_SOUTH_EAST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_WEST_SELECTED =  'CELL_SEPARATOR_WEST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_EAST_SELECTED =  'CELL_SEPARATOR_EAST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED =  'CELL_TEE_NORTH_WEST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED =  'CELL_TEE_NORTH_EAST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED =  'CELL_TEE_SOUTH_WEST_SELECTED';
javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED =  'CELL_TEE_SOUTH_EAST_SELECTED';


function javascriptx_swing_TabRenderer_getDataCell (tab, index) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_TabRenderer_getDecorativeCell (tab, cell) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_TabRenderer_getTableTag (tab) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_TabRenderer_getRowTag (tab, row) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_TabRenderer_getDataCellTag (tab, index) {
  this.method_has_not_been_implemented ();
}

function javascriptx_swing_TabRenderer_getDecorativeCellTag (tab, cell) {
  this.method_has_not_been_implemented ();
}

/**
  @package javascriptx_swing;
  */

/**
  @class public DefaultTabRenderer
  @implements public TabRenderer
  */
function javascriptx_swing_DefaultTabRenderer () {
  this._super = javascriptx_swing_TabRenderer;
  this._super();

  // sizes of size images
  this._decorativeCellsNorthHeight = 5;
  this._decorativeCellsSouthHeight = 5;
  this._decorativeCellsWestWidth = 9;
  this._decorativeCellsEastWidth = 9;
  this._decorativeCellsSeparatorWidth = 12;

  this.getDataCell= javascriptx_swing_DefaultTabRenderer_getDataCell;
  this.getDecorativeCell= javascriptx_swing_DefaultTabRenderer_getDecorativeCell;
  this.getTableTag= javascriptx_swing_DefaultTabRenderer_getTableTag;
  this.getRowTag= javascriptx_swing_DefaultTabRenderer_getRowTag;
  this.getDataCellTag= javascriptx_swing_DefaultTabRenderer_getDataCellTag;
  this.getDecorativeCellTag= javascriptx_swing_DefaultTabRenderer_getDecorativeCellTag;
}
javascriptx_swing_DefaultTabRenderer.prototype = new javascriptx_swing_TabRenderer ();


function javascriptx_swing_DefaultTabRenderer_getDataCell (tab, index) {
  return tab.getModel.getElementAt (index).toString ();
}

function javascriptx_swing_DefaultTabRenderer_getDecorativeCell (tab, cell) {
  var tag = new javascriptx_swing_Tag ('DIV');
  tag.setAttribute ('class', tab.getStyleClass ());
  tag.setAttribute ('id', tab.getUI () + '_' + 'CELL_DECORATIVE');
  return tag.getStartTag () + '&nbsp;' + tag.getEndTag () ;
}

function javascriptx_swing_DefaultTabRenderer_getTableTag (tab) {
  var result = new javascriptx_swing_Tag ('TABLE');
  result.setAttribute ('class', tab.getStyleClass ());
  result.setAttribute ('id', tab.getUI () + '_' + 'TABLE');
  result.setAttribute ('border', '0');
  result.setAttribute ('cellpadding', '0');
  result.setAttribute ('cellspacing', '0');
  return result;
}

function javascriptx_swing_DefaultTabRenderer_getRowTag (tab, row) {
  var result = new javascriptx_swing_Tag ('TR');
  result.setAttribute ('class', tab.getStyleClass ());
// ist das noch nötig?
// if (row == this.ROW_LOWER) {rowTag.setAttribute ('valign', 'top');}
  return result;
}

function javascriptx_swing_DefaultTabRenderer_getDataCellTag (tab, index) {
  var result =  new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tab.getStyleClass ());
  if (tab.isSelectedIndex (index)) {
    result.setAttribute ('id', tab.getUI () + '_' + this.CELL_DATA_SELECTED);
  }
  else {
    result.setAttribute ('id', tab.getUI () + '_' + this.CELL_DATA);
  }
  return result;
}

function javascriptx_swing_DefaultTabRenderer_getDecorativeCellTag (tab, cell) {
  var result =  new javascriptx_swing_Tag ('TD');
  result.setAttribute ('class', tab.getStyleClass ());
  result.setAttribute ('id', tab.getUI () + '_' + cell);

  if (        cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED) {
    result.setAttribute ('width',  this._decorativeCellsWestWidth);
  }
  else if ( cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED) {
    result.setAttribute ('width',  this._decorativeCellsEastWidth);
  }  
  else if ( cell == javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED ) {
    result.setAttribute ('width',  this._decorativeCellsSeparatorWidth);
  }  

  if (        cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED) {
    result.setAttribute ('height', this._decorativeCellsNorthHeight);
  }
  else if ( cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED ||
              cell == javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED) {
    result.setAttribute ('height', this._decorativeCellsSouthHeight);
  }

  return result;
}

/**
  @package javascriptx_swing;
  @import javascriptx_swing_JSComponent;
  @import javascriptx_swing_Tag;
  */


/**
  @class JSTab
  @extends JSComponent
  */
function javascriptx_swing_JSTab () {
  this._super = javascriptx_swing_JSComponent;
  this._super();
  
  this._model;
  this._tabRenderer;
  this._displayUpperBorder = false;
  this._displayLowerBorder = false;
  this._selectedIndex = -1;
  this._decorativeCells;


  this.getModel = javascriptx_swing_JSTab_getModel;
  this.setModel = javascriptx_swing_JSTab_setModel;
  this.setListData = javascriptx_swing_JSTab_setListData;

  this.getTabRenderer= javascriptx_swing_JSTab_getTabRenderer;
  this.setTabRenderer= javascriptx_swing_JSTab_setTabRenderer;

  this.setHanging = javascriptx_swing_JSTab_setHanging;
  this.isHanging = javascriptx_swing_JSTab_isHanging;
  this.setStanding = javascriptx_swing_JSTab_setStanding;
  this.isStanding = javascriptx_swing_JSTab_isStanding;
  this.isFloating = javascriptx_swing_JSTab_isFloating;
  this.setFloating = javascriptx_swing_JSTab_setFloating;

  this.clearSelection = javascriptx_swing_JSTab_clearSelection;
  this.getSelectedIndex = javascriptx_swing_JSTab_getSelectedIndex;
  this.isSelectedIndex = javascriptx_swing_JSTab_isSelectedIndex;
  this.isSelectionEmpty = javascriptx_swing_JSTab_isSelectionEmpty;
  this.setSelectedIndex = javascriptx_swing_JSTab_setSelectedIndex;
 
  this.doLayout = javascriptx_swing_JSTab_doLayout;
  this._doLayoutMiddleRow = javascriptx_swing_JSTab__doLayoutMiddleRow;
  this._doLayoutUpperRow = javascriptx_swing_JSTab__doLayoutUpperRow;
  this._doLayoutLowerRow = javascriptx_swing_JSTab__doLayoutLowerRow;
  this._doLayoutDataCell = javascriptx_swing_JSTab__doLayoutDataCell;
  this._doLayoutDecorativeCells = javascriptx_swing_JSTab__doLayoutDecorativeCells;
  this._doLayoutDecorativeCell = javascriptx_swing_JSTab__doLayoutDecorativeCell;
}
javascriptx_swing_JSTab.prototype = new javascriptx_swing_JSComponent ();
  

function javascriptx_swing_JSTab_getModel () {
  return this._model;
}

function javascriptx_swing_JSTab_setModel (model) {
  this._model= model;
  this.invalidate();
}

function javascriptx_swing_JSTab_setListData (listData) {
  var model = new javascriptx_swing_DefaultListModel ();
  model.setListData (listData);
  this.setModel (model);
}


function javascriptx_swing_JSTab_getTabRenderer () {
  return this._tabRenderer;
}

function javascriptx_swing_JSTab_setTabRenderer (tabRenderer) {
  this._tabRenderer = tabRenderer;
  this.invalidate();
}


function javascriptx_swing_JSTab_setHanging () {
  if (! this.isHanging ()) {
    this._displayUpperBorder = false;
    this._displayLowerBorder = true;
    this.invalidate ();
  }
}

function javascriptx_swing_JSTab_isHanging () {
  return (! this._displayUpperBorder) && this._displayLowerBorder;
}

function javascriptx_swing_JSTab_setStanding () {
  if (! this.isStanding ()) {
    this._displayUpperBorder = true;
    this._displayLowerBorder = false;
    this.invalidate ();
  }
}

function javascriptx_swing_JSTab_isStanding () {
  return this._displayUpperBorder && (! this._displayLowerBorder);
}

function javascriptx_swing_JSTab_setFloating () {
  if (! this.isFloating ()) {
    this._displayUpperBorder = true;
    this._displayLowerBorder = true;
    this.invalidate ();
  }
}

function javascriptx_swing_JSTab_isFloating () {
  return this._displayUpperBorder && this._displayLowerBorder;
}


function javascriptx_swing_JSTab_clearSelection () {
   this.setSelectedIndex (-1);
}

function javascriptx_swing_JSTab_getSelectedIndex () {
  return this._selectedIndex;
}

function javascriptx_swing_JSTab_isSelectedIndex (index) {
  return index == this._selectedIndex;
}

function javascriptx_swing_JSTab_isSelectionEmpty () {
  return -1 == this._selectedIndex;
}

function javascriptx_swing_JSTab_setSelectedIndex (selectedIndex) {
  if (this._selectedIndex != selectedIndex) {
    this._selectedIndex = selectedIndex;
    this.invalidate();
  }
}



function javascriptx_swing_JSTab_doLayout () {
  if (! this._decorativeCells) {
    this._doLayoutDecorativeCells ();
  }
  this._htmlString = '';
  if (this._model) {
    if (this._model.getSize () > 0) {
      var tableTag = this._tabRenderer.getTableTag (this);


      this._htmlString+= '\n' + tableTag.getStartTag () + '\n';

      if (this._displayUpperBorder) {
        var upperRowTag = this._tabRenderer.getRowTag 
            (this, javascriptx_swing_TabRenderer.prototype.ROW_UPPER);
        this._htmlString += '  ' + upperRowTag.getStartTag() + '\n';
        this._doLayoutUpperRow ();
        this._htmlString += '  ' + upperRowTag.getEndTag () + '\n';
      }

      var middleRowTag = this._tabRenderer.getRowTag 
          (this, javascriptx_swing_TabRenderer.prototype.ROW_MIDDLE);
      this._htmlString += '  ' + middleRowTag.getStartTag() + '\n';
      this._doLayoutMiddleRow ();
      this._htmlString += '  ' + middleRowTag.getEndTag () + '\n';

      if (this._displayLowerBorder) {
        var lowerRowTag = this._tabRenderer.getRowTag 
            (this, javascriptx_swing_TabRenderer.prototype.ROW_LOWER);
        this._htmlString += '  ' + lowerRowTag.getStartTag() + '\n';
        this._doLayoutLowerRow ();
        this._htmlString += '  ' + lowerRowTag.getEndTag () + '\n';
      }
      this._htmlString += tableTag.getEndTag () + '\n';
    }
  }
}


function javascriptx_swing_JSTab__doLayoutMiddleRow () {
  for (var i= 0; i < this._model.getSize (); i++) {

    this._htmlString += '    ';
    // first entry
    if (i == 0) {
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST];
      }
    }
    // not first entry
    else {
      // entry is selected
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_WEST_SELECTED];
      }
      // previous entry is selected
      else if (i-1 == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_EAST_SELECTED];
      }
      // neither this nor previous entry is selected
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR];
      }
    }
    this._htmlString += '\n';

    this._htmlString += '    ';
    this._doLayoutDataCell (i);
    this._htmlString += '\n';


    if (i == this._model.getSize () - 1) {
      this._htmlString += '    ';
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST];
      }
      this._htmlString += '\n';
    }

  } //end for
}

function javascriptx_swing_JSTab__doLayoutUpperRow () {
  for (var i= 0; i < this._model.getSize (); i++) {

    this._htmlString += '    ';
    // first entry
    if (i == 0) {
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST];
      }
    }
    // not first entry
    else {
      // entry is selected
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED];
      }
      // previous entry is selected
      else if (i-1 == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED];
      }
      // neither this nor previous entry is selected
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH];
      }
    }
    this._htmlString += '\n';


    this._htmlString += '    ';
    if (i == this._selectedIndex) {
      this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH_SELECTED];
    }
    else {
      this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH];
    }
    this._htmlString += '\n';


    if (i == this._model.getSize () - 1) {
      this._htmlString += '    ';
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST];
      }
      this._htmlString += '\n';
    }

  } //end for
}

function javascriptx_swing_JSTab__doLayoutLowerRow () {
  for (var i= 0; i < this._model.getSize (); i++) {

    this._htmlString += '    ';
    // first entry
    if (i == 0) {
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST];
      }
    }
    // not first entry
    else {
      // entry is selected
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED];
      }
      // previous entry is selected
      else if (i-1 == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED];
      }
      // neither this nor previous entry is selected
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH];
      }
    }
    this._htmlString += '\n';


    this._htmlString += '    ';
    if (i == this._selectedIndex) {
      this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH_SELECTED];
    }
    else {
      this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH];
    }
    this._htmlString += '\n';


    if (i == this._model.getSize () - 1) {
      this._htmlString += '    ';
      // entry is selected 
      if (i == this._selectedIndex) {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED];
      }
      // entry is not selected 
      else {
        this._htmlString += this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST];
      }
      this._htmlString += '\n';
    }

  } //end for
}

function javascriptx_swing_JSTab__doLayoutDataCell (index) {
  var dataCellTag = this._tabRenderer.getDataCellTag (this, index);
  var dataCell = this._tabRenderer.getDataCell (this, index);
  this._htmlString += dataCellTag.getStartTag () + dataCell + dataCellTag.getEndTag ();
}


function javascriptx_swing_JSTab__doLayoutDecorativeCells () {
  this._decorativeCells = new Object ();
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH] =   
      this._doLayoutDecorativeCell ( javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST] =   
      this._doLayoutDecorativeCell ( javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST] =   
      this._doLayoutDecorativeCell ( javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH);

  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_BORDER_NORTH_SELECTED);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_BORDER_SOUTH_SELECTED);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_BORDER_WEST_SELECTED);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_BORDER_EAST_SELECTED);  
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_WEST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_NORTH_EAST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_WEST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_CORNER_SOUTH_EAST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_WEST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_SEPARATOR_EAST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_WEST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_NORTH_EAST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_WEST_SELECTED);
  this._decorativeCells [javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED] =   
      this._doLayoutDecorativeCell (javascriptx_swing_TabRenderer.prototype.CELL_TEE_SOUTH_EAST_SELECTED);
}

function javascriptx_swing_JSTab__doLayoutDecorativeCell (cell) {
  var decorativeCellTag = this._tabRenderer.getDecorativeCellTag (this, cell);
  var decorativeCell = this._tabRenderer.getDecorativeCell (this, cell);
  return decorativeCellTag.getStartTag () + decorativeCell + decorativeCellTag.getEndTag ();
}

/**
  @package javascriptx_swing;
  */

/**
  @class public JSFrame
  */
function javascriptx_swing_JSFrame () {
  this._window;
  this._name;
  this._frameSet;
  this._components = new Array();
  this._locationListeners = new Array ();

  this.getWindow = javascriptx_swing_JSFrame_getWindow;
  this.getName = javascriptx_swing_JSFrame_getName;
  this.getFrameSet = javascriptx_swing_JSFrame_getFrameSet;
  this._addedToFrameSet = javascriptx_swing_JSFrame__addedToFrameSet;
  this.addComponent = javascriptx_swing_JSFrame_addComponent;
  this.repaint = javascriptx_swing_JSFrame_repaint;

  this.loadLocation = javascriptx_swing_JSFrame_loadLocation;
  this.getLocation = javascriptx_swing_JSFrame_getLocation;
  this.addLocationListener = javascriptx_swing_JSFrame_addLocationListener;
  this._fireLocationLoaded = javascriptx_swing_JSFrame__fireLocationLoaded;

  this.processOnLoad= javascriptx_swing_JSFrame_processOnLoad;
}


function javascriptx_swing_JSFrame_getWindow () {
  return this._window;
}

function javascriptx_swing_JSFrame_getName () {
  return this._name;
}

function javascriptx_swing_JSFrame_getFrameSet () {
  return this._frameSet;
}

function javascriptx_swing_JSFrame__addedToFrameSet (frameSet, frameName) {
  this._frameSet = frameSet;
  this._name = frameName;
}

function javascriptx_swing_JSFrame_addComponent (component) {
  this._components [this._components.length] = component;
  component._addedToFrame (this);
}

function javascriptx_swing_JSFrame_repaint () {
  /* don't repaint before this._window is initialized i.e. before frameset has been loaded. */
  if (this._window) {
    this._window.location.href = this._window.location.href;
  }
}


function javascriptx_swing_JSFrame_loadLocation (href) {
  this._window.location.href= href;
}

function javascriptx_swing_JSFrame_getLocation () {
  return this._window.location;
}

function javascriptx_swing_JSFrame_addLocationListener (locationListener) {
  this._locationListeners [this._locationListeners.length] = locationListener;
}

function javascriptx_swing_JSFrame__fireLocationLoaded () {
  for (var i= 0; i < this._locationListeners.length; i++) {
    this._locationListeners[i].locationLoaded();
  }
}


function javascriptx_swing_JSFrame_processOnLoad (window) {
  this._window = window;
  this._fireLocationLoaded ();
}




function ctrl_Controller_createLink (href, html, cssClass) {
  return '<A href="' + href + '" target="' + this.getName() + '" class="' + cssClass + '">' + html + '</A>';
}


/**
  @package javascriptx_swing;
  */

/**
  @class public JSFrameSet
  */
function javascriptx_swing_JSFrameSet () {
  this._window;
  this._frameMap = new Object ();

  this.getWindow = javascriptx_swing_JSFrameSet_getWindow;
  this.processOnLoad= javascriptx_swing_JSFrameSet_processOnLoad;
  this.getFrame = javascriptx_swing_JSFrameSet_getFrame;
  this.addFrame = javascriptx_swing_JSFrameSet_addFrame;  
}
/*
javascriptx_swing_JSFrameSet.prototype._instance;
javascriptx_swing_JSFrameSet.prototype.getInstance = javascriptx_swing_JSFrameSet_getInstance;
*/

/**
  @static
  */
/*
function javascriptx_swing_JSFrameSet_getInstance (frameName, frameSet) {
  return this._instance;
}
*/

function javascriptx_swing_JSFrameSet_getWindow () {
  return this._window;
}

function javascriptx_swing_JSFrameSet_getFrame (frameName) {
  return this._frameMap [frameName];
}

/*
  This method doesn't work before processOnLoad() has been executed.
  */
function javascriptx_swing_JSFrameSet_addFrame (frame, frameName) {
  this._frameMap [frameName] = frame; 
  frame._addedToFrameSet (this, frameName);  
}

/**
 */
function javascriptx_swing_JSFrameSet_processOnLoad (window) {
  this._window = window;
}
/**
  @package javascriptx_swing;
  */

/**
  @class public JSFrameSetProvider

  This class has only static fields and methods.
  But keep in mind, that distinct instances of this class exist in 
  several windows.
  */
function javascriptx_swing_JSFrameSetProvider () {
}  
javascriptx_swing_JSFrameSetProvider.prototype._frameSet;
javascriptx_swing_JSFrameSetProvider.prototype.setFrameSet = javascriptx_swing_JSFrameSetProvider_setFrameSet;
javascriptx_swing_JSFrameSetProvider.prototype.getFrameSet = javascriptx_swing_JSFrameSetProvider_getFrameSet;
javascriptx_swing_JSFrameSetProvider.prototype.findFrameSetWindow = javascriptx_swing_JSFrameSetProvider_findFrameSetWindow;
javascriptx_swing_JSFrameSetProvider.prototype.containsFrameSet = javascriptx_swing_JSFrameSetProvider_containsFrameSet;
javascriptx_swing_JSFrameSetProvider.prototype.loadFrameSet = javascriptx_swing_JSFrameSetProvider_loadFrameSet;
javascriptx_swing_JSFrameSetProvider.prototype.loadHome = javascriptx_swing_JSFrameSetProvider_loadHome;
javascriptx_swing_JSFrameSetProvider.prototype.getEntryLocation = javascriptx_swing_JSFrameSetProvider_getEntryLocation;

/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_setFrameSet (frameSet) {
  this._frameSet = frameSet;
}

/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_getFrameSet () {
  if (this._frameSet) {
    return this._frameSet;
  }
  else {
    var frameSetWindow = this.findFrameSetWindow (window);
    /* if an anchestor window contains the frameSet */
    if (frameSetWindow) {
      return frameSetWindow.javascriptx_swing_JSFrameSetProvider.prototype._frameSet;
    }
    /* if frameSet hasn't been loaded yet */
    else {
      this.loadFrameSet ();
    }
  }
}


/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_findFrameSetWindow (currentWindow) {
  var result;
  if (this.containsFrameSet (currentWindow)) {
    result = currentWindow;
  }
  else {
    if (currentWindow.parent != currentWindow) {
      result = this.findFrameSetWindow (currentWindow.parent);
    }
  }
  return result;
}

/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_containsFrameSet (currentWindow) {
  if (currentWindow.javascriptx_swing_JSFrameSetProvider) {
    if (currentWindow.javascriptx_swing_JSFrameSetProvider.prototype._frameSet) {
      return true;
    }
  }
  return false;
}

/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_loadFrameSet () {
  var frameSetHref = javascript_lang_System.prototype.getProperty 
      ('Swing_FrameSetHref', '/index.html');
  location.href= frameSetHref + '?' + location.pathname;
}

/**
  @static
  */
function javascriptx_swing_JSFrameSetProvider_loadHome () {
  var frameSetHref = javascript_lang_System.prototype.getProperty 
      ('Swing_FrameSetHref', '/index.html');
  location.href= frameSetHref;
}

/**
  @static
  If this method doesn't return null then the following had happened:
  - A user loaded one of the pages directly (without the frameset).
  - The page loaded the frame set.
  - Now the frameset can get the URL of the original page to display it
    in one of the frames.
  - This method returns the URL of the original page.
  - The frameset should evaluate this method in its processOnLoad method.
  */
function javascriptx_swing_JSFrameSetProvider_getEntryLocation () {
  var result;
  if (location.search) {
    result = location.search.substring (1, location.search.length);
  }  
  return result;
}
/**
  @package javascriptx_swing;
  */

/**
  @class public EventQueue
  */
function javascriptx_swing_EventQueue () {
}
javascriptx_swing_EventQueue.prototype.dispatchOnLoad = javascriptx_swing_EventQueue_dispatchOnLoad;


/**
  @static
  */
function  javascriptx_swing_EventQueue_dispatchOnLoad () {
  /* if this window contains the frameSet */
  if (javascriptx_swing_JSFrameSetProvider.prototype.containsFrameSet (window)) {
    var frameSet = javascriptx_swing_JSFrameSetProvider.prototype.getFrameSet ();
    frameSet.processOnLoad (window);
  }
  else {
    var frameSet = javascriptx_swing_JSFrameSetProvider.prototype.getFrameSet ();
    /* if this window is contained in a frameSet */
    if (frameSet) {
      var frame= frameSet.getFrame (window.name);
      frame.processOnLoad (window);
    }
    /* else: don't bother to do anything because frameSet will be loaded */
  }
}

/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_TreeNode;
  */

/**
  @interface SiteNode
  @extends TreeNode
*/
function de_orat_SiteNavigation_SiteNode () {
  this._super = javascriptx_swing_tree_TreeNode;
  this._super ();

  this.getType = de_orat_SiteNavigation_SiteNode_getType;
  this.isHome = de_orat_SiteNavigation_SiteNode_isHome;
  this.isDirectory = de_orat_SiteNavigation_SiteNode_isDirectory;
  this.isPage = de_orat_SiteNavigation_SiteNode_isPage;
  this.isLink = de_orat_SiteNavigation_SiteNode_isLink;

  this.getHref = de_orat_SiteNavigation_SiteNode_getHref;
  this.getDisplayName = de_orat_SiteNavigation_SiteNode_getDisplayName;

  this.containsPageSequence = de_orat_SiteNavigation_SiteNode_containsPageSequence;  
  this.isLeafInSideBar = de_orat_SiteNavigation_SiteNode_isLeafInSideBar;
  this.hasIndex = de_orat_SiteNavigation_SiteNode_hasIndex;
  
  this.setWebContext = de_orat_SiteNavigation_SiteNode_setWebContext;
  this.getWebContext = de_orat_SiteNavigation_SiteNode_getWebContext;
}
de_orat_SiteNavigation_SiteNode.prototype = new javascriptx_swing_tree_TreeNode ();
de_orat_SiteNavigation_SiteNode.prototype.TYPE_HOME= 'TYPE_HOME';
de_orat_SiteNavigation_SiteNode.prototype.TYPE_DIRECTORY= 'TYPE_DIRECTORY';
de_orat_SiteNavigation_SiteNode.prototype.TYPE_PAGE= 'TYPE_PAGE';
de_orat_SiteNavigation_SiteNode.prototype.TYPE_LINK= 'TYPE_LINK';


function de_orat_SiteNavigation_SiteNode_getType () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_isHome () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_isDirectory () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_isPage () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_isLink () {
  this.method_has_not_been_implemented ();
}


function de_orat_SiteNavigation_SiteNode_getHref () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_getDisplayName () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_containsPageSequence () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_isLeafInSideBar () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_hasIndex () {
  this.method_has_not_been_implemented ();
}


function de_orat_SiteNavigation_SiteNode_setWebContext (webContext) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteNode_getWebContext () {
  this.method_has_not_been_implemented ();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_TreeModel;
  */

/**
  @interface SiteModel
  @extends TreeModel
*/
function de_orat_SiteNavigation_SiteModel () {
  this._super = javascriptx_swing_tree_TreeModel;
  this._super();

  // public methods
  this.createPage = de_orat_SiteNavigation_SiteModel_createPage;
  this.createLink = de_orat_SiteNavigation_SiteModel_createLink;
  this.createDirectory = de_orat_SiteNavigation_SiteModel_createDirectory;
  this.createHome= de_orat_SiteNavigation_SiteModel_createHome;

  this.getSiteNodeByIndex = de_orat_SiteNavigation_SiteModel_getSiteNodeByIndex;
  this.getSiteNodeByHref = de_orat_SiteNavigation_SiteModel_getSiteNodeByHref;
  this.getSiteNodeCount = de_orat_SiteNavigation_SiteModel_getSiteNodeCount;
  this.getHome = de_orat_SiteNavigation_SiteModel_getHome;

}
de_orat_SiteNavigation_SiteModel.prototype = new javascriptx_swing_tree_TreeModel ();



function de_orat_SiteNavigation_SiteModel_createHome 
    (webContext, directoryName, fileName, displayName, containsPageSequence) {
  this.method_has_not_been_implemented ();
}

/**
  @param indexFileName use '' for no index file 
  */
function de_orat_SiteNavigation_SiteModel_createDirectory 
    (parent, directoryName, indexFileName, displayName,
    containsPageSequence, isLeafInSideBar) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteModel_createPage (parent, fileName, displayName) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteModel_createLink (parent, page) {
  this.method_has_not_been_implemented ();
}


function de_orat_SiteNavigation_SiteModel_getSiteNodeByIndex (index) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteModel_getSiteNodeByHref (href) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteModel_getSiteNodeCount () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SiteModel_getHome() {
  this.method_has_not_been_implemented ();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeNode;
  */

/**
  @class DefaultSiteNode
  @extends DefaultTreeNode
  @implements SiteNode

  @member _type
  used to tag different types of siteNodes
 
  @member _href
  href of the html file that is associated with this element

  @member _displayName
  the name of the element to appear in the navigation and orientation

  @member _isLeafInSideBar
  don't include children in side bar navigation tree

  @member _containsPageSequence
  regard children as an ordered sequence of pages
*/
function de_orat_SiteNavigation_DefaultSiteNode (type, href, displayName,
    containsPageSequence, isLeafInSideBar) {
  this._super = javascriptx_swing_tree_DefaultTreeNode;
  this._super ();

  // define variables
  this._type = type;
  this._href = href;
  this._displayName = displayName;
  this._containsPageSequence = containsPageSequence;
  this._isLeafInSideBar = isLeafInSideBar;
  this._webContext;

  // define methods
  this.toString = de_orat_SiteNavigation_DefaultSiteNode_toString;

  this.getType = de_orat_SiteNavigation_DefaultSiteNode_getType;
  this.isHome = de_orat_SiteNavigation_DefaultSiteNode_isHome;
  this.isDirectory = de_orat_SiteNavigation_DefaultSiteNode_isDirectory;
  this.isPage = de_orat_SiteNavigation_DefaultSiteNode_isPage;
  this.isLink = de_orat_SiteNavigation_DefaultSiteNode_isLink;

  this.getHref = de_orat_SiteNavigation_DefaultSiteNode_getHref;
  this.getDisplayName = de_orat_SiteNavigation_DefaultSiteNode_getDisplayName;

  this.containsPageSequence = de_orat_SiteNavigation_DefaultSiteNode_containsPageSequence;  
  this.isLeafInSideBar = de_orat_SiteNavigation_DefaultSiteNode_isLeafInSideBar;
  this.hasIndex = de_orat_SiteNavigation_DefaultSiteNode_hasIndex;
  
  this.setWebContext = de_orat_SiteNavigation_DefaultSiteNode_setWebContext;
  this.getWebContext = de_orat_SiteNavigation_DefaultSiteNode_getWebContext;
}
de_orat_SiteNavigation_DefaultSiteNode.prototype = new javascriptx_swing_tree_DefaultTreeNode ();


function de_orat_SiteNavigation_DefaultSiteNode_toString () {
  return this._displayName;
}


function de_orat_SiteNavigation_DefaultSiteNode_getType () {
  return this._type;
}

function de_orat_SiteNavigation_DefaultSiteNode_isHome () {
  return this._type == de_orat_SiteNavigation_SiteNode.prototype.TYPE_HOME;
}

function de_orat_SiteNavigation_DefaultSiteNode_isDirectory () {
  return this._type == de_orat_SiteNavigation_SiteNode.prototype.TYPE_DIRECTORY;
}

function de_orat_SiteNavigation_DefaultSiteNode_isPage () {
  return this._type == de_orat_SiteNavigation_SiteNode.prototype.TYPE_PAGE;
}

function de_orat_SiteNavigation_DefaultSiteNode_isLink () {
  return this._type == de_orat_SiteNavigation_SiteNode.prototype.TYPE_LINK;
}


function de_orat_SiteNavigation_DefaultSiteNode_getHref () {
  return this._href;
}

function de_orat_SiteNavigation_DefaultSiteNode_getDisplayName () {
  return this._displayName;
}

function de_orat_SiteNavigation_DefaultSiteNode_containsPageSequence () {
  return this._containsPageSequence;
}

function de_orat_SiteNavigation_DefaultSiteNode_isLeafInSideBar () {
  return this._isLeafInSideBar;
}

function de_orat_SiteNavigation_DefaultSiteNode_hasIndex () {
  return this._href.lastIndexOf('/') != this._href.length-1;
}


function de_orat_SiteNavigation_DefaultSiteNode_setWebContext (webContext) {
  this._webContext = webContext;
}

function de_orat_SiteNavigation_DefaultSiteNode_getWebContext () {
  if (this._parent) {
    return this._parent.getWebContext ();
  }
  else {
    return this._webContext;
  }
}


/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeModel;
  */

/**
  @class DefaultSiteModel
  @extends DefaultTreeModel
  @implements SiteModel
*/
function de_orat_SiteNavigation_DefaultSiteModel () {
  this._super = javascriptx_swing_tree_DefaultTreeModel;
  this._super();

  // define variables
  this._siteNodes= new Array();

  // public methods
  this.createPage= de_orat_SiteNavigation_DefaultSiteModel_createPage;
  this.createLink= de_orat_SiteNavigation_DefaultSiteModel_createLink;
  this.createDirectory= de_orat_SiteNavigation_DefaultSiteModel_createDirectory;
  this.createHome= de_orat_SiteNavigation_DefaultSiteModel_createHome;

  this.getSiteNodeByIndex= de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeByIndex;
  this.getSiteNodeByHref= de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeByHref;
  this.getSiteNodeCount= de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeCount;
  this.getHome= de_orat_SiteNavigation_DefaultSiteModel_getHome;

  // protected methods
  this._addSiteNode= de_orat_SiteNavigation_DefaultSiteModel__addSiteNode;
  this._getDirectory = de_orat_SiteNavigation_DefaultSiteModel__getDirectory;
  this._normalizePath = de_orat_SiteNavigation_DefaultSiteModel__normalizePath;
}
de_orat_SiteNavigation_DefaultSiteModel.prototype = new javascriptx_swing_tree_DefaultTreeModel ();



function de_orat_SiteNavigation_DefaultSiteModel_createHome 
    (webContext, directoryName, fileName, displayName, containsPageSequence) {
  var href;
  if (! directoryName || directoryName == "" || directoryName == '.') {
    href= this._getDirectory (window.location.href) + fileName;
  }
  else {
    href= this._getDirectory (window.location.href) + directoryName + '/' 
        + fileName;
  }
  var result= new de_orat_SiteNavigation_DefaultSiteNode     
    (de_orat_SiteNavigation_SiteNode.prototype.TYPE_HOME, 
    href, displayName, containsPageSequence, false);
  result.setWebContext (webContext);

  this._addSiteNode (result);
  this.setRoot (result);

  return result;
}

/**
  @param indexFileName use '' for no index file 
  */
function de_orat_SiteNavigation_DefaultSiteModel_createDirectory 
    (parent, directoryName, indexFileName, displayName,
    containsPageSequence, isLeafInSideBar) {
  var href= 
      this._getDirectory (parent.getHref()) + directoryName + '/' + 
      indexFileName;
  var result= new de_orat_SiteNavigation_DefaultSiteNode 
    (de_orat_SiteNavigation_SiteNode.prototype.TYPE_DIRECTORY, 
    href, displayName, containsPageSequence, isLeafInSideBar);

  this._addSiteNode (result);

  parent.add (result);
  return result;
}

function de_orat_SiteNavigation_DefaultSiteModel_createPage (parent, fileName, displayName) {
  var href= this._normalizePath 
    (this._getDirectory (parent.getHref()) + fileName);
  var result= new de_orat_SiteNavigation_DefaultSiteNode 
      (de_orat_SiteNavigation_SiteNode.prototype.TYPE_PAGE, 
      href, displayName, false, true);
  
  this._addSiteNode (result);
  parent.add (result);
  return result;
}

function de_orat_SiteNavigation_DefaultSiteModel_createLink (parent, page) {
  var result= new de_orat_SiteNavigation_DefaultSiteNode 
      (de_orat_SiteNavigation_SiteNode.prototype.TYPE_LINK, 
       page.getHref(), page.getDisplayName(), 
       page.containsPageSequence(), page.isLeafInSideBar());

  this._addSiteNode (result);
  parent.add (result);
  return result;
}


function de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeByIndex (index) {
  return this._siteNodes [index];
}

function de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeByHref (href) {
  var result;
  for (var i= 0; i < this._siteNodes.length; i++) {
    if (this._siteNodes [i].getHref () == href) {
      result= this._siteNodes [i];
      break;
    }
  }
  return result;
}

function de_orat_SiteNavigation_DefaultSiteModel_getSiteNodeCount () {
  return this._siteNodes.length;
}

function de_orat_SiteNavigation_DefaultSiteModel_getHome() {
  return this.getRoot();
}

function de_orat_SiteNavigation_DefaultSiteModel__addSiteNode (siteNode) {
  this._siteNodes [this._siteNodes.length]= siteNode;
}


function de_orat_SiteNavigation_DefaultSiteModel__getDirectory (href) {
  var result;
  // remove query string from href because it can contain slashes
  if (href.indexOf ('?') != -1) {
    href= href.substring (0, href.lastIndexOf('?'));
  }
  // if href doesn't contain path
  if (href.indexOf ('/', href.indexOf('://')+3) == -1) {
    result = href;
  }
  // if href does contain path omit fileName
  else {
    result= href.substring (0, href.lastIndexOf('/'));
  }
  return result + '/';
}

function de_orat_SiteNavigation_DefaultSiteModel__normalizePath (href) {
  var result;
  var beginPath= href.indexOf ('/', href.indexOf('://')+3);
  if (beginPath == -1) {
    result = href;
  }
  else {
    var endPath= href.indexOf ('?', beginPath);
    if (endPath == -1) {
      endPath= href.length;
    }
    var path= href.substring (beginPath, endPath);
    while (path.search (/\/\//) != -1) {
      path= path.replace (/\/\//, '/');        //  //    ->  /
    }
    while (path.search (/\/\.\//) != -1) {
      path= path.replace (/\/\.\//, '/');      //  /./   ->  /
    }
    while (path.search (/\/[^\/]+\/\.\.\//) != -1) {
      path= path.replace (/\/[^\/]+\/\.\.\//, '/');    //  /abc/../  ->  /
    }
    result= href.substring (0, beginPath) + path + href.substring (endPath, href.length);
  }
  return result;
}
/**
  @package de_orat_SiteNavigation;
  */

/**
  @class public SiteModelProvider

  This class has only static fields and methods.
  But keep in mind, that distinct instances of this class exist in 
  several windows.
  */
function de_orat_SiteNavigation_SiteModelProvider () {
}  
de_orat_SiteNavigation_SiteModelProvider.prototype._siteModel;
de_orat_SiteNavigation_SiteModelProvider.prototype.getSiteModel = de_orat_SiteNavigation_SiteModelProvider_getSiteModel;
de_orat_SiteNavigation_SiteModelProvider.prototype._createSiteModel = de_orat_SiteNavigation_SiteModelProvider__createSiteModel;

/**
  @static
  */
function de_orat_SiteNavigation_SiteModelProvider_getSiteModel () {
  if (! this._siteModel) {
    this._siteModel = this._createSiteModel ();
  }
  return this._siteModel;
}

/**
  @static
  */
function de_orat_SiteNavigation_SiteModelProvider__createSiteModel () {
  var evalString = 'new ' + javascript_lang_System.prototype.getProperty ('SiteNavigation_SiteModelClass', 'de_orat_SiteNavigation_DefaultSiteModel') + ' ()';
  return eval (evalString);
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSFrame;
  */

/**
  @class ContentFrame
  @extends JSFrame
*/
function de_orat_SiteNavigation_ContentFrame () {
  this._super = javascriptx_swing_JSFrame;
  this._super ();

  // public methods
  this.setSiteMapComponent = de_orat_SiteNavigation_ContentFrame_setSiteMapComponent;
  this.getSiteMapComponent = de_orat_SiteNavigation_ContentFrame_getSiteMapComponent;

  this.getCurrentSiteNode= de_orat_SiteNavigation_ContentFrame_getCurrentSiteNode;
}
de_orat_SiteNavigation_ContentFrame.prototype = new javascriptx_swing_JSFrame ();

function de_orat_SiteNavigation_ContentFrame_setSiteMapComponent (siteMap) {
    this._siteMap = siteMap;
    this.addComponent (this._siteMap);
}

function de_orat_SiteNavigation_ContentFrame_getSiteMapComponent () {
    return this._siteMap;
}


function de_orat_SiteNavigation_ContentFrame_getCurrentSiteNode () {
  var currentHref= this.getLocation().href;
  var endOfPath;
  if (currentHref.indexOf ('#') != -1) {
    endOfPath= currentHref.indexOf ('#');
  }
  else if (currentHref.indexOf ('?') != -1) {
    endOfPath= currentHref.indexOf ('?');
  }
  else {
    endOfPath= currentHref.length;
  }
  var currentPage= currentHref.substring (0, endOfPath);
  return this.getFrameSet().getSiteModel().getSiteNodeByHref (currentPage);
}


/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSTree;
  */

/**
  @class SiteMapTree
  @extends JSTree
*/
function de_orat_SiteNavigation_SiteMapTree () {
  this._super = javascriptx_swing_JSTree;
  this._super();

  this._treeRenderer = new de_orat_SiteNavigation_SiteMapTreeRenderer();
  this._rootVisible = true;
  this._showsRootHandles = false;
  this._showsHandles = false;
  this._showsLines = false;
  this._collapsable = false;

  this.setSiteModel = de_orat_SiteNavigation_SiteMapTree_setSiteModel;
  this.getTarget = de_orat_SiteNavigation_SiteMapTree_getTarget;
}
de_orat_SiteNavigation_SiteMapTree.prototype = new javascriptx_swing_JSTree ();


function de_orat_SiteNavigation_SiteMapTree_setSiteModel (siteModel) {
  this.setTreeModel (siteModel);
}

function de_orat_SiteNavigation_SiteMapTree_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeRenderer;
  */

/**
  @class SiteMapTreeRenderer
  @extends DefaultTreeRenderer
*/
function de_orat_SiteNavigation_SiteMapTreeRenderer () {
  this._super = javascriptx_swing_tree_DefaultTreeRenderer;
  this._super();
  this._super_getHandleCell = javascriptx_swing_tree_DefaultTreeRenderer_getHandleCell;

  this._homeImage = '/images/system/de_orat_SiteNavigation_SiteMapTreeRenderer_home_15x15.gif';
  this._directoryImage = '/images/system/de_orat_SiteNavigation_SiteMapTreeRenderer_directory_15x15.gif';
  this._pageImage = '/images/system/de_orat_SiteNavigation_SiteMapTreeRenderer_page_15x15.gif';
  this._linkImage = '/images/system/de_orat_SiteNavigation_SiteMapTreeRenderer_link_15x15.gif';
  this._indentionImage = '/images/system/de_orat_SiteNavigation_SiteMapTreeRenderer_indention_15x15.gif';

  this.getNodeCell = de_orat_SiteNavigation_SiteMapTreeRenderer_getNodeCell;
  this.getHandleCell = de_orat_SiteNavigation_SiteMapTreeRenderer_getHandleCell;
}
de_orat_SiteNavigation_SiteMapTreeRenderer.prototype = new javascriptx_swing_tree_DefaultTreeRenderer ();

function de_orat_SiteNavigation_SiteMapTreeRenderer_getNodeCell (tree, treeNode) {
  var result = '';
  var image;
  var displayName;
  var setLink = true;
  if (treeNode.isHome()) {
    displayName = treeNode.getWebContext ();
    image = this._homeImage;
  }
  else if (treeNode.isDirectory()) {
    displayName = treeNode.getDisplayName();
    if (! treeNode.hasIndex ()) {
      image = this._directoryImage;
      setLink = false;
    }
    else {
      if (treeNode.getChildCount () == 0) {
        image = this._pageImage;
      }
      else {
        image = this._directoryImage;
      }
    }
  }
  else if (treeNode.isLink()) {
    displayName = treeNode.getDisplayName();
    image = this._linkImage;
  }
  else {
    displayName = treeNode.getDisplayName();
    image = this._pageImage;
  }
  var imageTag = new javascriptx_swing_Tag ('IMG');
  imageTag.setAttribute ('src', image);
  imageTag.setAttribute ('border', '0');
  imageTag.setAttribute ('class', tree.getStyleClass ());

  if (setLink) {
    var linkTag = new javascriptx_swing_Tag ('A');
    linkTag.setAttribute ('href', treeNode.getHref());
    linkTag.setAttribute ('target', tree.getTarget());
    linkTag.setAttribute ('class', tree.getStyleClass ());

    result =
      linkTag.getStartTag () + imageTag.getEmptyTag () + linkTag.getEndTag () + 
      linkTag.getStartTag () + displayName + linkTag.getEndTag ();
  }
  else {
    result = imageTag.getEmptyTag () + displayName;
  }
  return result;
}

function de_orat_SiteNavigation_SiteMapTreeRenderer_getHandleCell (tree, treeNode, nodeIsExpanded) {
  var result = '';
  if (tree.getShowsHandles ()) {
    result = this._super_getHandleCell (tree, treeNode, nodeIsExpanded);
  }
  else {
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('src', this._indentionImage);
    imageTag.setAttribute ('border', '0');
    imageTag.setAttribute ('class', tree.getStyleClass ());
    result= imageTag.getEmptyTag ();
  }
  return result;
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSFrame;
  @import javascriptx_swing_LocationListener;
  */

/**
  @class OrientationFrame
  @extends JSFrame
  @implements LocationListener
*/
function de_orat_SiteNavigation_OrientationFrame () {
  this._super = javascriptx_swing_JSFrame;
  this._super();

  this.setPathComponent = de_orat_SiteNavigation_OrientationFrame_setPathComponent;
  this.getPathComponent = de_orat_SiteNavigation_OrientationFrame_getPathComponent;
  this.setTurnOverComponent = de_orat_SiteNavigation_OrientationFrame_setTurnOverComponent;
  this.getTurnOverComponent = de_orat_SiteNavigation_OrientationFrame_getTurnOverComponent;
  this.locationLoaded= de_orat_SiteNavigation_OrientationFrame_locationLoaded;
}
de_orat_SiteNavigation_OrientationFrame.prototype = new javascriptx_swing_JSFrame ();


function de_orat_SiteNavigation_OrientationFrame_setPathComponent (pathComponent) {
  this._pathComponent = pathComponent;
  this.addComponent (this._pathComponent);
}

function de_orat_SiteNavigation_OrientationFrame_getPathComponent () {
  return this._pathComponent;
}

function de_orat_SiteNavigation_OrientationFrame_setTurnOverComponent (turnOverComponent) {
  this._turnOverComponent = turnOverComponent;
  this.addComponent (this._turnOverComponent);
}

function de_orat_SiteNavigation_OrientationFrame_getTurnOverComponent () {
  return this._turnOverComponent;
}

function de_orat_SiteNavigation_OrientationFrame_locationLoaded () {
  var currentSiteNode = this.getFrameSet ().getContentFrame ()
      .getCurrentSiteNode ();
  var path = currentSiteNode.getPath ();
  this._pathComponent.setPath (path);
  this._turnOverComponent.setPage (currentSiteNode);
  this.repaint();
}

/**
  @package de_orat_SiteNavigation;
  */


/**
  @interface PathComponent
  */
function de_orat_SiteNavigation_PathComponent () {

  this.getPath = de_orat_SiteNavigation_PathComponent_getPath;
  this.setPath = de_orat_SiteNavigation_PathComponent_setPath;
}

function de_orat_SiteNavigation_PathComponent_getPath () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_PathComponent_setPath (path) {
  this.method_has_not_been_implemented ();
}
  

function de_orat_SiteNavigation_PathComponent_getTarget () {
  this.method_has_not_been_implemented ();
}

/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSTab;
  */


/**
  @class PathTab
  @extends JSTab
  @implements PathComponent
  */
function de_orat_SiteNavigation_PathTab () {
  this._super = javascriptx_swing_JSTab;
  this._super();

  this._tabRenderer = new de_orat_SiteNavigation_PathTabRenderer ();
  this._model = new javascriptx_swing_DefaultListModel ();
  this.setHanging();

  this.getPath = de_orat_SiteNavigation_PathTab_getPath;
  this.setPath = de_orat_SiteNavigation_PathTab_setPath;
  this.getTarget = de_orat_SiteNavigation_PathTab_getTarget;
}
de_orat_SiteNavigation_PathTab.prototype = new javascriptx_swing_JSTab ();

function de_orat_SiteNavigation_PathTab_getPath () {
  return this._model.getListData ();
}

function de_orat_SiteNavigation_PathTab_setPath (path) {
  if (path.length > 1) {
    this._model.setListData (path);
  }
  else {
    this._model.setListData (null);
  }
  this.invalidate ();
}
  

function de_orat_SiteNavigation_PathTab_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}

/**
  @package javascriptx_swing;
  */

/**
  @class public PathTabRenderer
  @extends DefaultTabRenderer
  */
function de_orat_SiteNavigation_PathTabRenderer () {
  this._super = javascriptx_swing_DefaultTabRenderer;
  this._super();

  this.getDataCell= de_orat_SiteNavigation_PathTabRenderer_getDataCell;
}
de_orat_SiteNavigation_PathTabRenderer.prototype = new javascriptx_swing_DefaultTabRenderer ();


function de_orat_SiteNavigation_PathTabRenderer_getDataCell (tab, index) {
  var result;
  var page = tab.getModel().getElementAt (index);
//  if (index == tab.getModel ().getSize () -1) {
//    var spanTag = new javascriptx_swing_Tag ('SPAN');
//    spanTag.setAttribute ('id', tab.getStyleClass () + '_CURRENT');
//    result = spanTag.getStartTag () + 
//        page.getDisplayName() + spanTag.getEndTag ();
//  }
//  else 
  if (page.isDirectory () && ! page.hasIndex ()) {
    result = page.getDisplayName();
  }
  else {
    var linkTag = new javascriptx_swing_Tag ('A');
    linkTag.setAttribute ('href', page.getHref());
    linkTag.setAttribute ('target', tab.getTarget());
    linkTag.setAttribute ('class', tab.getStyleClass ());
    if (index == tab.getModel ().getSize () -1) {
      linkTag.setAttribute ('id', tab.getStyleClass () + '_CURRENT');
    }
    result = linkTag.getStartTag () + 
        page.getDisplayName() + linkTag.getEndTag ();
  }
  return result;
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSComponent;
  */


/**
  @class PathLabel
  @extends JSComponent
  @implements PathComponent
  */
function de_orat_SiteNavigation_PathLabel () {
  this._super = javascriptx_swing_JSComponent;
  this._super();

  this._path;

  this.doLayout = de_orat_SiteNavigation_PathLabel_doLayout;
  this.getPath = de_orat_SiteNavigation_PathLabel_getPath;
  this.setPath = de_orat_SiteNavigation_PathLabel_setPath;
  this.getTarget = de_orat_SiteNavigation_PathLabel_getTarget;
}
de_orat_SiteNavigation_PathLabel.prototype = new javascriptx_swing_JSComponent ();

function de_orat_SiteNavigation_PathLabel_getPath () {
  return this._path;
}

function de_orat_SiteNavigation_PathLabel_setPath (path) {
  this._path= path;
  this.invalidate();
}
  

function de_orat_SiteNavigation_PathLabel_doLayout () {
  var text = '';
  if (this._path) {
    var setLink;
    for (var i = 0; i < this._path.length; i ++) {
      if (i != 0) {
        text += '&nbsp;&nbsp;>&nbsp;&nbsp;';
      }
//      if (i == this._path.length-1) {
//        var spanTag = new javascriptx_swing_Tag ('SPAN');
//        spanTag.setAttribute ('id', this._styleClass + '_CURRENT');
//        text += spanTag.getStartTag() + 
//            this._path [i].getDisplayName() + spanTag.getEndTag();      
//      }
//      else 
      if (this._path [i].isDirectory() && ! this._path [i].hasIndex()) {
        text += this._path [i].getDisplayName();
      }
      else {
        var linkTag = new javascriptx_swing_Tag ('A');
        linkTag.setAttribute ('href', this._path [i].getHref());
        linkTag.setAttribute ('target', this.getTarget());
        linkTag.setAttribute ('class', this._styleClass);
        if (i == this._path.length-1) {
          linkTag.setAttribute ('id', this._styleClass + '_CURRENT');
        }
        text += linkTag.getStartTag() + 
            this._path [i].getDisplayName() + linkTag.getEndTag();
      }
    }  
  }
  var labelTag= new javascriptx_swing_Tag ('DIV');
  labelTag.setAttribute ('class', this._styleClass);
  this._htmlString= 
    labelTag.getStartTag () + text + labelTag.getEndTag ();
}

function de_orat_SiteNavigation_PathLabel_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}

/**
  @package de_orat_SiteNavigation;
  */


/**
  @interface TurnOverComponent
  */
function de_orat_SiteNavigation_TurnOverComponent () {
  this.getPage = de_orat_SiteNavigation_TurnOverComponent_getPage;
  this.setPage = de_orat_SiteNavigation_TurnOverComponent_setPage;
}

function de_orat_SiteNavigation_TurnOverComponent_getPage () {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_TurnOverComponent_setPage (page) {
  this.method_has_not_been_implemented ();
}
  /**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSTab;
  */


/**
  @class TurnOverTab
  @extends JSTab
  @implements TurnOverComponent
  */
function de_orat_SiteNavigation_TurnOverTab () {
  this._super = javascriptx_swing_JSTab;
  this._super();


  this._tabRenderer = new de_orat_SiteNavigation_TurnOverTabRenderer ();
  this._model = new javascriptx_swing_DefaultListModel ();
  this._pages = new Array (1);
  this.setHanging();

  this.getPage = de_orat_SiteNavigation_TurnOverTab_getPage;
  this.setPage = de_orat_SiteNavigation_TurnOverTab_setPage;
  this.pageIsInSequence = de_orat_SiteNavigation_TurnOverTab_pageIsInSequence;
  this.pageHasPrevious = de_orat_SiteNavigation_TurnOverTab_pageHasPrevious;
  this.pageHasNext = de_orat_SiteNavigation_TurnOverTab_pageHasNext;
  this.getTarget = de_orat_SiteNavigation_TurnOverTab_getTarget;
}
de_orat_SiteNavigation_TurnOverTab.prototype = new javascriptx_swing_JSTab ();

function de_orat_SiteNavigation_TurnOverTab_getPage () {
  return this._pages [0];
}
 
function de_orat_SiteNavigation_TurnOverTab_setPage (page) {
  this._pages [0]= page;
  if (this.pageIsInSequence () && 
      (this.pageHasPrevious () || this.pageHasNext () ) ) {
    this._model.setListData (this._pages);
  }
  else {
    this._model.setListData (null);
  }
  this.invalidate();
}
 
function de_orat_SiteNavigation_TurnOverTab_pageIsInSequence () {
  var result = false;
  var page = this.getPage ();
  if (page && page.getParent () && page.getParent ().containsPageSequence () ) {
    result = true;
  }
  return result;
}

function de_orat_SiteNavigation_TurnOverTab_pageHasPrevious () {
  var result = false;
  var page = this.getPage ();
  if (page) {
    var previousPage = page.getPreviousSibling ();
    if (previousPage &&
        (! previousPage.isDirectory () || previousPage.hasIndex () ) ) {
      result = true;
    }
  }
  return result;
}

function de_orat_SiteNavigation_TurnOverTab_pageHasNext () {
  var result = false;
  var page = this.getPage ();
  if (page) {
    var nextPage = page.getNextSibling ();
    if (nextPage &&
        (! nextPage.isDirectory () || nextPage.hasIndex () ) ) {
      result = true;
    }
  }
  return result;
}

function de_orat_SiteNavigation_TurnOverTab_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}
/**
  @package javascriptx_swing;
  */

/**
  @class public TurnOverTabRenderer
  @extends DefaultTabRenderer
  */
function de_orat_SiteNavigation_TurnOverTabRenderer () {
  this._super = javascriptx_swing_DefaultTabRenderer;
  this._super();

  this._previousImage = '/images/system/de_orat_SiteNavigation_TurnOverTabRenderer_previous_12x12.gif';
  this._previousDisabledImage = '/images/system/de_orat_SiteNavigation_TurnOverTabRenderer_previousDisabled_12x12.gif';
  this._nextImage = '/images/system/de_orat_SiteNavigation_TurnOverTabRenderer_next_12x12.gif';
  this._nextDisabledImage = '/images/system/de_orat_SiteNavigation_TurnOverTabRenderer_nextDisabled_12x12.gif';

  this.getDataCell= de_orat_SiteNavigation_TurnOverTabRenderer_getDataCell;
}
de_orat_SiteNavigation_TurnOverTabRenderer.prototype = new javascriptx_swing_DefaultTabRenderer ();


function de_orat_SiteNavigation_TurnOverTabRenderer_getDataCell (tab, index) {
  var result = '';
  var previousPage = tab.getPage ().getPreviousSibling ();
  var nextPage = tab.getPage ().getNextSibling ();
  if (tab.pageHasPrevious ()) {
    var linkTag = new javascriptx_swing_Tag ('A');
    linkTag.setAttribute ('href', previousPage.getHref());
    linkTag.setAttribute ('target', tab.getTarget());
    linkTag.setAttribute ('class', tab.getStyleClass ());
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('src', this._previousImage);
    imageTag.setAttribute ('class', tab.getStyleClass ());
    result += linkTag.getStartTag () + 
        imageTag.getEmptyTag () + linkTag.getEndTag ();
  }
  else {
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('src', this._previousDisabledImage);
    imageTag.setAttribute ('class', tab._styleClass);
    result += imageTag.getEmptyTag ();  
  }
  if (tab.pageHasNext ()) {
    var linkTag = new javascriptx_swing_Tag ('A');
    linkTag.setAttribute ('href', nextPage.getHref());
    linkTag.setAttribute ('target', tab.getTarget());
    linkTag.setAttribute ('class', tab.getStyleClass ());
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('src', this._nextImage);
    imageTag.setAttribute ('class', tab.getStyleClass ());
    result += linkTag.getStartTag () + 
        imageTag.getEmptyTag () + linkTag.getEndTag ();
  }
  else {
    var imageTag = new javascriptx_swing_Tag ('IMG');
    imageTag.setAttribute ('src', this._nextDisabledImage);
    imageTag.setAttribute ('class', tab._styleClass);
    result += imageTag.getEmptyTag ();  
  }
  return result;
}/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSComponent;
  */


/**
  @class TurnOverLabel
  @extends JSComponent
  @implements TurnOverComponent
  */
function de_orat_SiteNavigation_TurnOverLabel () {
  this._super = javascriptx_swing_JSComponent;
  this._super();

  this._page;
  this._previousPageLabel = 'Vorherige Seite';
  this._nextPageLabel = 'Nächste Seite';

  this.doLayout = de_orat_SiteNavigation_TurnOverLabel_doLayout;
  this.getPage = de_orat_SiteNavigation_TurnOverLabel_getPage;
  this.setPage = de_orat_SiteNavigation_TurnOverLabel_setPage;
  this.getTarget = de_orat_SiteNavigation_TurnOverLabel_getTarget;
}
de_orat_SiteNavigation_TurnOverLabel.prototype = new javascriptx_swing_JSComponent ();

function de_orat_SiteNavigation_TurnOverLabel_getPage () {
  return this._page;
}

function de_orat_SiteNavigation_TurnOverLabel_setPage (page) {
  this._page= page;
  this.invalidate();
}
  

function de_orat_SiteNavigation_TurnOverLabel_doLayout () {
  if (this._page) {
    if (this._page.getParent ()) {
      if (this._page.getParent ().containsPageSequence ()) {
        var text = '';
        var previousPage = this._page.getPreviousSibling ();
        var nextPage = this._page.getNextSibling ();
        if (previousPage || nextPage) {
          text += '[';
        }
        if (previousPage) {
          if (! previousPage.isDirectory () || previousPage.hasIndex () ) {
            var linkTag = new javascriptx_swing_Tag ('A');
            linkTag.setAttribute ('href', previousPage.getHref());
            linkTag.setAttribute ('target', this.getTarget());
            linkTag.setAttribute ('class', this._styleClass);
            text += linkTag.getStartTag() + 
                this._previousPageLabel + linkTag.getEndTag();
          }
        }
        if (previousPage && nextPage) {
          text += '|';
        }
        if (nextPage) {
          if (! nextPage.isDirectory () || nextPage.hasIndex () ) {
            var linkTag = new javascriptx_swing_Tag ('A');
            linkTag.setAttribute ('href', nextPage.getHref());
            linkTag.setAttribute ('target', this.getTarget());
            linkTag.setAttribute ('class', this._styleClass);
            text += linkTag.getStartTag() + 
                this._nextPageLabel + linkTag.getEndTag();
          }
        }
        if (previousPage || nextPage) {
          text += ']';
        }
        var labelTag= new javascriptx_swing_Tag ('DIV');
        labelTag.setAttribute ('class', this._styleClass);
        this._htmlString= 
          labelTag.getStartTag () + text + labelTag.getEndTag ();
      }
      else {
        this._htmlString= '';      
      }
    }
    else {
      this._htmlString= '';      
    }
  }
}

function de_orat_SiteNavigation_TurnOverLabel_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}

/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSFrame;
  */

/**
  @class SideBarFrame
  @extends JSFrame
*/
function de_orat_SiteNavigation_SideBarFrame () {
  this._super = javascriptx_swing_JSFrame;
  this._super();

  this.setSideBarComponent = de_orat_SiteNavigation_SideBarFrame_setSideBarComponent;
  this.getSideBarComponent = de_orat_SiteNavigation_SideBarFrame_getSideBarComponent;
  this.locationLoaded= de_orat_SiteNavigation_SideBarFrame_locationLoaded;
}
de_orat_SiteNavigation_SideBarFrame.prototype = new javascriptx_swing_JSFrame ();


function de_orat_SiteNavigation_SideBarFrame_setSideBarComponent (sideBarComponent) {
  this._sideBarComponent = sideBarComponent;
  this.addComponent (this._sideBarComponent);
}

function de_orat_SiteNavigation_SideBarFrame_getSideBarComponent () {
  return this._sideBarComponent;
}

function de_orat_SiteNavigation_SideBarFrame_locationLoaded () {
}

/**
  @package de_orat_SiteNavigation;
  */

/**
  @interface SideBarComponent
*/
function de_orat_SiteNavigation_SideBarComponent () {
  this.setSiteModel = de_orat_SiteNavigation_SideBarComponent_setSiteModel;
  this.getSiteModel = de_orat_SiteNavigation_SideBarComponent_getSiteModel;
}


function de_orat_SiteNavigation_SideBarComponent_setSiteModel (siteModel) {
  this.method_has_not_been_implemented ();
}

function de_orat_SiteNavigation_SideBarComponent_getSiteModel() {
  this.method_has_not_been_implemented ();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSTree;
  */

/**
  @class SideBarTree
  @extends JSTree
  @implements SideBarComponent
*/
function de_orat_SiteNavigation_SideBarTree () {
  this._super = javascriptx_swing_JSTree;
  this._super();

  this._treeRenderer = new de_orat_SiteNavigation_SideBarTreeRenderer();
  this._rootVisible = false;
  this._showsRootHandles = false;

  this.setSiteModel = de_orat_SiteNavigation_SideBarTree_setSiteModel;
  this.getSiteModel = de_orat_SiteNavigation_SideBarTree_getSiteModel;
  this.getTarget = de_orat_SiteNavigation_SideBarTree_getTarget;
}
de_orat_SiteNavigation_SideBarTree.prototype = new javascriptx_swing_JSTree ();


function de_orat_SiteNavigation_SideBarTree_setSiteModel (siteModel) {
  this.setTreeModel (siteModel);
  this._collapseModel.collapseAll ();
  this._collapseModel.expand (this._collapseModel.getIndex (siteModel.getRoot ()));
}

function de_orat_SiteNavigation_SideBarTree_getSiteModel () {
  return this.getTreeModel ();
}

function de_orat_SiteNavigation_SideBarTree_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeRenderer;
  */

/**
  @class SideBarTreeRenderer
  @extends DefaultTreeRenderer
*/
function de_orat_SiteNavigation_SideBarTreeRenderer () {
  this._super = javascriptx_swing_tree_DefaultTreeRenderer;
  this._super();

  this.getNodeCell = de_orat_SiteNavigation_SideBarTreeRenderer_getNodeCell;
}
de_orat_SiteNavigation_SideBarTreeRenderer.prototype = new javascriptx_swing_tree_DefaultTreeRenderer ();

function de_orat_SiteNavigation_SideBarTreeRenderer_getNodeCell (tree, treeNode) {
  var result;
  if (treeNode.isDirectory() && ! treeNode.hasIndex ()) {
    if (treeNode.isLeafInSideBar () && treeNode.containsPageSequence () && 
        treeNode.getChildCount () > 0) {
      var firstChildNode = treeNode.getChildAt (0);
      var tag = new javascriptx_swing_Tag ('A');
      tag.setAttribute ('href', firstChildNode.getHref ());
      tag.setAttribute ('target', tree.getTarget ());
      tag.setAttribute ('class', tree.getStyleClass ());
      if (firstChildNode.isLink ()) {
        tag.setAttribute ('id', tree.getStyleClass () + '_LINK');
      }
      result = tag.getStartTag() + treeNode.getDisplayName () + tag.getEndTag();
    }
    else {
      result = treeNode.getDisplayName ();
    }
  }
  else {
    var tag = new javascriptx_swing_Tag ('A');
    tag.setAttribute ('href', treeNode.getHref ());
    tag.setAttribute ('target', tree.getTarget ());
    tag.setAttribute ('class', tree.getStyleClass ());
    if (treeNode.isLink ()) {
      tag.setAttribute ('id', tree.getStyleClass () + '_LINK');
    }
    result = tag.getStartTag() + treeNode.getDisplayName () + tag.getEndTag();
  }
  return result;
}

/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeModel;
  */

/**
  @class SideBarModel
  @extends DefaultTreeModel
*/
function de_orat_SiteNavigation_SideBarModel () {
  this._super = javascriptx_swing_tree_DefaultTreeModel;
  this._super();

  this.isLeaf= de_orat_SiteNavigation_SideBarModel_isLeaf;

}
de_orat_SiteNavigation_SideBarModel.prototype = new javascriptx_swing_tree_DefaultTreeModel ();

function de_orat_SiteNavigation_SideBarModel_isLeaf (treeNode) {
  return treeNode.isLeafInSideBar();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeModel;
  */

/**
  @class DirectoryModel
  @extends DefaultTreeModel
*/
function de_orat_SiteNavigation_DirectoryModel () {
  this._super = javascriptx_swing_tree_DefaultTreeModel;
  this._super();

  this._ascendingOrder = true;

  this.setAscendingOrder = de_orat_SiteNavigation_DirectoryModel_setAscendingOrder;
  this.isAscendingOrder = de_orat_SiteNavigation_DirectoryModel_isAscendingOrder;

  this.getChild= de_orat_SiteNavigation_DirectoryModel_getChild;
  this.getIndexOfChild= de_orat_SiteNavigation_DirectoryModel_getIndexOfChild;
  this.isLeaf= de_orat_SiteNavigation_DirectoryModel_isLeaf;
}
de_orat_SiteNavigation_DirectoryModel.prototype = new javascriptx_swing_tree_DefaultTreeModel ();

function de_orat_SiteNavigation_DirectoryModel_isLeaf (treeNode) {
  return treeNode == this._root;
}

function de_orat_SiteNavigation_DirectoryModel_getChild (parent, index) {
  var index1;
  if (this._ascendingOrder) {
    index1 = index;
  }
  else {
    index1 = parent.getChildCount() -1 - index;
  }
  return parent.getChildAt (index1);
}

function de_orat_SiteNavigation_DirectoryModel_getIndexOfChild (parent, child) {
  return parent.getChildCount() -1 - parent.getIndex (child);
}

function de_orat_SiteNavigation_DirectoryModel_setAscendingOrder (ascendingOrder) {
  this._ascendingOrder =  ascendingOrder;
}

function de_orat_SiteNavigation_DirectoryModel_isAscendingOrder () {
  return this._ascendingOrder;
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSTree;
  */

/**
  @class DirectoryList
  @extends JSTree
*/
function de_orat_SiteNavigation_DirectoryList () {
  this._super = javascriptx_swing_JSTree;
  this._super();

  this._treeRenderer = new de_orat_SiteNavigation_DirectoryListRenderer ();
  this._rootVisible = false;
  this._showsRootHandles = false;
  this._showsHandles = false;
  this._collapsable = false;

  this.setDirectoryModel = de_orat_SiteNavigation_DirectoryList_setDirectoryModel;
  this.getDirectoryModel = de_orat_SiteNavigation_DirectoryList_getDirectoryModel;
  this.getTarget = de_orat_SiteNavigation_DirectoryList_getTarget;
}
de_orat_SiteNavigation_DirectoryList.prototype = new javascriptx_swing_JSTree ();


function de_orat_SiteNavigation_DirectoryList_setDirectoryModel (siteModel, directory) {
  var directoryModel = new de_orat_SiteNavigation_DirectoryModel ();
  directoryModel.setRoot (directory);
  this.setTreeModel (directoryModel);
}

function de_orat_SiteNavigation_DirectoryList_getDirectoryModel () {
  return this.getTreeModel ();
}

function de_orat_SiteNavigation_DirectoryList_getTarget () {
  return this.getFrame().getFrameSet().getContentFrame().getName();
}
/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_tree_DefaultTreeRenderer;
  */

/**
  @class DirectoryListRenderer
  @extends DefaultTreeRenderer
*/
function de_orat_SiteNavigation_DirectoryListRenderer () {
  this._super = javascriptx_swing_tree_DefaultTreeRenderer;
  this._super();

  this.getNodeCell = de_orat_SiteNavigation_DirectoryListRenderer_getNodeCell;
}
de_orat_SiteNavigation_DirectoryListRenderer.prototype = new javascriptx_swing_tree_DefaultTreeRenderer ();

function de_orat_SiteNavigation_DirectoryListRenderer_getNodeCell (tree, treeNode) {
  var result;
  if (treeNode.isDirectory() && ! treeNode.hasIndex ()) {
    result = treeNode.getDisplayName ();
  }
  else {
    var tag = new javascriptx_swing_Tag ('A');
    tag.setAttribute ('href', treeNode.getHref ());
    tag.setAttribute ('target', tree.getTarget ());
    tag.setAttribute ('class', tree.getStyleClass ());
    if (treeNode.isLink ()) {
      tag.setAttribute ('id', tree.getStyleClass () + '_LINK');
    }
    result = tag.getStartTag() + treeNode.getDisplayName () + tag.getEndTag();
  }
  return result;
}

/**
  @package de_orat_SiteNavigation;
  @import javascriptx_swing_JSFrameSet;
  */

/**
  @class SiteFrameSet
  @extends JSFrameSet
*/
function de_orat_SiteNavigation_SiteFrameSet () {
  this._super = javascriptx_swing_JSFrameSet;
  this._super();
  this._super_processOnLoad = javascriptx_swing_JSFrameSet_processOnLoad;

  this._siteModel;
  this._contentFrame;
  this._orientationFrame;
  this._sideBarFrame;

  this.setSiteModel = de_orat_SiteNavigation_SiteFrameSet_setSiteModel;
  this.getSiteModel = de_orat_SiteNavigation_SiteFrameSet_getSiteModel;

  this.setFrames = de_orat_SiteNavigation_SiteFrameSet_setFrames;
  this.getContentFrame = de_orat_SiteNavigation_SiteFrameSet_getContentFrame;
  this.getOrientationFrame = de_orat_SiteNavigation_SiteFrameSet_getOrientationFrame;
  this.getSideBarFrame = de_orat_SiteNavigation_SiteFrameSet_getSideBarFrame;

  this.processOnLoad = de_orat_SiteNavigation_SiteFrameSet_processOnLoad;
}
de_orat_SiteNavigation_SiteFrameSet.prototype = new javascriptx_swing_JSFrameSet ();


function de_orat_SiteNavigation_SiteFrameSet_setSiteModel (siteModel) {
  this._siteModel = siteModel;
}

function de_orat_SiteNavigation_SiteFrameSet_getSiteModel () {
  return this._siteModel;
}

function de_orat_SiteNavigation_SiteFrameSet_setFrames (contentFrame, orientationFrame, sideBarFrame) {
  this._contentFrame = contentFrame;
  var contentFrameName = javascript_lang_System.prototype.getProperty 
      ('SiteNavigation_contentFrame', 'contentFrame');
  this.addFrame (this._contentFrame, contentFrameName);

  this._orientationFrame = orientationFrame;
  var orientationFrameName = javascript_lang_System.prototype.getProperty 
      ('SiteNavigation_orientationFrame', 'orientationFrame');
  this.addFrame (this._orientationFrame, orientationFrameName);
  this._contentFrame.addLocationListener (this._orientationFrame);

  this._sideBarFrame = sideBarFrame;
  var sideBarFrameName = javascript_lang_System.prototype.getProperty 
      ('SiteNavigation_sideBarFrame', 'sideBarFrame');
  this.addFrame (this._sideBarFrame, sideBarFrameName);
  this._contentFrame.addLocationListener (this._sideBarFrame);
}

function de_orat_SiteNavigation_SiteFrameSet_getContentFrame () {
  return this._contentFrame;
}

function de_orat_SiteNavigation_SiteFrameSet_getOrientationFrame () {
  return this._orientationFrame;
}

function de_orat_SiteNavigation_SiteFrameSet_getSideBarFrame () {
  return this._sideBarFrame;
}

function de_orat_SiteNavigation_SiteFrameSet_processOnLoad (window) {
  this._super_processOnLoad (window);
  var entryLocation = javascriptx_swing_JSFrameSetProvider.prototype.getEntryLocation ();
  if (entryLocation) {
    this._contentFrame.loadLocation (entryLocation);
  }
}
/**
  @package de_wfga_SiteNavigation;
  @import de_orat_SiteNavigation_SiteMapTreeRenderer;
  */

/**
  @class WfgaSiteMapTreeRenderer
  @extends SiteMapTreeRenderer
*/
function de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer () {
  this._super = de_orat_SiteNavigation_SiteMapTreeRenderer;
  this._super();

  this._homeImage = '/images/system/de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer_home_15x15.gif';
  this._directoryImage = '/images/system/de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer_directory_15x15.gif';
  this._pageImage = '/images/system/de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer_page_15x15.gif';
  this._linkImage = '/images/system/de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer_link_15x15.gif';
  this._indentionImage = '/images/system/de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer_indention_15x15.gif';
}
de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer.prototype = new de_orat_SiteNavigation_SiteMapTreeRenderer ();

/**
  @package de_wfga_SiteNavigation;
  @import de_orat_SiteNavigation_SideBarTreeRenderer;
  */

/**
  @class WfgaSideBarTreeRenderer
  @extends SideBarTreeRenderer
*/
function de_wfga_SiteNavigation_WfgaSideBarTreeRenderer () {
  this._super = de_orat_SiteNavigation_SideBarTreeRenderer;
  this._super();

  this._collapsedBranchImage = '/images/system/de_wfga_SiteNavigation_WfgaSideBarTreeRenderer_collapsedBranch_9x9_blue.gif';
  this._expandedBranchImage = '/images/system/de_wfga_SiteNavigation_WfgaSideBarTreeRenderer_expandedBranch_9x9_blue.gif';
  this._indentionImage = '/images/system/de_wfga_SiteNavigation_WfgaSideBarTreeRenderer_indention_9x9.gif';
}
de_wfga_SiteNavigation_WfgaSideBarTreeRenderer.prototype = new de_orat_SiteNavigation_SideBarTreeRenderer ();

/**
  @package de_wfga_SiteNavigation;
  */

/**
  @class Main
*/
function de_wfga_SiteNavigation_Main () {
}
de_wfga_SiteNavigation_Main.prototype.main = de_wfga_SiteNavigation_Main_main;

/**
  @static
  */
function de_wfga_SiteNavigation_Main_main () {
  var siteModel = de_orat_SiteNavigation_SiteModelProvider.prototype.getSiteModel ();

  var frameSet = new de_orat_SiteNavigation_SiteFrameSet ();
      frameSet.setSiteModel (siteModel);
  
      var contentFrame = new de_orat_SiteNavigation_ContentFrame ();

          var siteMapComponent = new de_orat_SiteNavigation_SiteMapTree ();
              siteMapComponent.setStyleClass ('siteMapStyle');
              var siteMapTreeRenderer = new de_wfga_SiteNavigation_WfgaSiteMapTreeRenderer ();
              siteMapComponent.setTreeRenderer (siteMapTreeRenderer);
              siteMapComponent.setSiteModel (siteModel);
          contentFrame.setSiteMapComponent (siteMapComponent);

      var orientationFrame = new de_orat_SiteNavigation_OrientationFrame ();

          var pathComponent = new de_orat_SiteNavigation_PathLabel ();
              pathComponent.setStyleClass ('pathStyle');
          orientationFrame.setPathComponent (pathComponent);

          var turnOverComponent = new de_orat_SiteNavigation_TurnOverLabel ();
              turnOverComponent.setStyleClass ('turnOverStyle');
          orientationFrame.setTurnOverComponent (turnOverComponent);

      var sideBarFrame = new de_orat_SiteNavigation_SideBarFrame ();

          var sideBarComponent = new de_orat_SiteNavigation_SideBarTree ();
              sideBarComponent.setStyleClass ('sideBarStyle');
              var sideBarTreeRenderer = new de_wfga_SiteNavigation_WfgaSideBarTreeRenderer ();
              sideBarComponent.setTreeRenderer (sideBarTreeRenderer);
              var sideBarModel = new de_orat_SiteNavigation_SideBarModel();
              sideBarModel.setRoot (siteModel.getRoot ());
              sideBarComponent.setSiteModel (sideBarModel);
              sideBarComponent.expandAll ();
          sideBarFrame.setSideBarComponent (sideBarComponent);

      frameSet.setFrames (contentFrame, orientationFrame, sideBarFrame);

  javascriptx_swing_JSFrameSetProvider.prototype.setFrameSet (frameSet);
}
/*
  The following functions are all the js-calls that are available for the frameSet.
  */

function onLoad () {
  javascriptx_swing_EventQueue.prototype.dispatchOnLoad ();
}

function main () {
  de_wfga_SiteNavigation_Main.prototype.main ();
}