/*================================================================================*/
/*                                                                                */
/*       BW2Technologies.Web.JScript.Framework.ToolStrips (Alpha V1.0.0.0)        */
/*                                                                                */
/*                                Web-ToolStrips                                  */
/*                                                                                */
/*              Copyright © 2006-2007 by BW2Technologies (HP. Lassnig)            */
/*                                                                                */
/*================================================================================*/

var _oToolStrip = null;
var _oToolStrips = new Array();
var _oToolStripItem;
var _oItem = null;
var _oItemGroupsSelected = new Array();
var _oItemSelected = null;
var _oCtrlItemSelected = null;
var _oColorListStandard = new Array('FFFF00', '00FF00', '00FFFF', 'FF00FF', '0000FF', 'FF0000', '000080', '008080', '008000', '800080', '800000', '808000', '808080', 'C0C0C0', '000000');
var _oColorListExtended = new Array('000000', '993300', '333300', '003300', '003366', '000080', '333399', '333333', '800000', 'FF6600', '808000', '008000', '008080', '0000FF', '666699', '808080', 'FF0000', 'FF9900', '99CC00', '339966', '33CCCC', '3366FF', '800080', '999999', 'FF00FF', 'FFCC00', 'FFFF00', '00FF00', '00FFFF', '00CCFF', '993366', 'C0C0C0', 'FF99CC', 'FFCC99', 'FFFF99', 'CCFFCC', 'CCFFFF', '99CCFF', 'CC99FF', 'FFFFFF');
//var _fInitiaize = false;
var _fOnMouseDown = false;
var _nShowDelay = -1;

/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/


/*================================================================================*/
/* <Function> Create ToolStrip </Function>
/*================================================================================*/
function __bw2ToolStrip(strToolStrip, nType, nWidth, nHeight, fEnabled, nResizeType, strCssClassItem, strCssClassItemCaption, strCssClassItemClick, strCssClassItemDisabled, strCssClassItemOnOver, strCssClassItemSelected, strCssClassCtrlItem, strCssClassCtrlItemClick, strCssClassCtrlItemDisabled, strCssClassCtrlItemInput, strCssClassCtrlItemOnOver, strCssClassCtrlItemSelected, nSpecialHandled, fAjax) {

         /*--- Base-Object ---*/
         this.Ajax = fAjax;
         this.Enabled = fEnabled;
         this.ID = strToolStrip;
         this.Initialize = _bw2ToolStripInitialize;
         this.Items = new Array();
         this.LastItem = null;
         this.LastItemType = null;
         this.ResizeType = null;
         this.SpecialHandled = null;
         this.Type = null;
         this.Width = nWidth;
         this.Height = nHeight;

         /*--- Special-Handled ---*/
         switch (nSpecialHandled) {
                case 1 : this.SpecialHandled = 'editor'; break;
         }
         
         /*--- ToolStrip-Type ---*/
         switch (nType) {
                case 1 : this.Type = 'menustrip'; break;
                case 2 : this.Type = 'menu'; break;
                case 3 : this.Type = 'dropdown'; break;
                case 4 : this.Type = 'popup'; break;
                case 5 : this.Type = 'submenu'; break;
         }

         /*--- Resize-Type ---*/
         switch (nResizeType) {
                case 1 : this.ResizeType = 'both'; break;
                case 2 : this.ResizeType = 'horizontal'; break;
                case 3 : this.ResizeType = 'vertical'; break;
         }

         this.ToolStrip = document.createElement('DIV');
         this.ToolStrip.id = strToolStrip;
         this.ToolStrip.Enabled = fEnabled;
         this.ToolStrip.IsDynamic = false;
         this.ToolStrip.IsLoaded = false;
         this.ToolStrip.OnOver = false;
         this.ToolStrip.ResizeType = this.ResizeType;
         this.ToolStrip.SpecialHandled = this.SpecialHandled;
         this.ToolStrip.Type = this.Type;
         this.ToolStrip.ParentObject = this;

         this.CssClassItem = strCssClassItem;
         this.CssClassItemCaption = strCssClassItemCaption;
         this.CssClassItemClick = strCssClassItemClick;
         this.CssClassItemDisabled = strCssClassItemDisabled;
         this.CssClassItemOnOver = strCssClassItemOnOver;
         this.CssClassItemSelected = strCssClassItemSelected;
         this.CssClassCtrlItem = strCssClassCtrlItem;
         this.CssClassCtrlItemClick = strCssClassCtrlItemClick;
         this.CssClassCtrlItemDisabled = strCssClassCtrlItemDisabled;
         this.CssClassCtrlItemInput = strCssClassCtrlItemInput;
         this.CssClassCtrlItemOnOver = strCssClassCtrlItemOnOver;
         this.CssClassCtrlItemSelected = strCssClassCtrlItemSelected;
         
         this.Initialize(null);

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripInitialize(strInnerHTML) {
                  var oMN = null;
                  
                  try {
                      oMN = __bw2GetElementById(this.ID);
                  } catch (e) {
                      alert('1 _bw2ToolStripInitialize Error : ' + e + ', ' + this.ID);
                  }

                  try {
                      if (oMN != null) {
                         this.ToolStrip = oMN;
                         this.ToolStrip.IsLoaded = true;
                         this.ToolStrip.Type = this.Type; 
                      } else {
                		     __bw2GetElementById('oForm').appendChild(this.ToolStrip);
                         this.ToolStrip.IsLoaded = false;
                         this.ToolStrip.IsDynamic = true;
                         this.ToolStrip.style.position = 'absolute';
                         this.ToolStrip.style.display = 'none';
                         if (_fIE) this.ToolStrip.style.filter = 'progid:dximagetransform.microsoft.shadow(direction=150, strength=3, color=#a0a0a0)';
                      }

//                      this.ToolStrip.style.overflow = 'hidden';
//                      if (this.Width > 0) this.ToolStrip.style.width = this.Width;
//                      if (this.Height > 0) this.ToolStrip.style.Height = this.Height;
              
                      if (strInnerHTML != null) this.ToolStrip.innerHTML = strInnerHTML;

                  } catch (e) {
                      alert('3 _bw2ToolStripInitialize Error : ' + e + ', ' + this.ID);
                  }
         }
}

/*================================================================================*/
/* <Function> Get ToolStrip-Item by Key or SpecialHandled </Function>
/*================================================================================*/
function __bw2ToolStripGetItem(strToolStripKey, strItemKey) {
         try {
             return _oToolStrips[strToolStripKey].Items[strItemKey].Item;
         } catch (e) {
             return null;
         }
}

/*--------------------------------------------------------------------------------*/

function __bw2ToolStripGetItemByCommand(strToolStripKey, strItemCommand) {
         for (strMID in _oToolStrips) {
             var oToolStrip = _oToolStrips[strMID];

             try {
                 if (strMID.substring(0, strToolStripKey.length) == strToolStripKey) {
                    for (strIID in oToolStrip.Items) {
                        if (oToolStrip.Items[strIID].Item.Command == strItemCommand) {
                           return __bw2GetElementById(strIID);
                        }
                    }
                 }
             } catch (e) {
             }
         }

         return null;
}

/*================================================================================*/
/* <Function> Initialize ToolStrip </Function>
/*================================================================================*/
function __bw2ToolStripsInitialize() {
         this.CurrentItem = null;
         
//         var strX = '';

         for (strMID in _oToolStrips) {
             var oToolStripObj = _oToolStrips[strMID];
//             strX += strMID + ', '
             
             try {
                 for (strIID in oToolStripObj.Items) {
                     oToolStripObj.Items[strIID].Item.ToolStripObj = oToolStripObj;
                 }
             } catch (e) {
//                 alert('__bw2ToolStripsInitialize Err : ' + strIID + ', ' + strMID);
             }
         }

//         alert('__bw2ToolStripsInitialize : ' + strX);
}

/*================================================================================*/
/* <Function> ToolStrip-CtrlItem reset Selection </Function>
/*================================================================================*/
function __bw2ToolStripSpezialHandled(oItem) {

//alert('__bw2ToolStripSpezialHandled : ' + oItem.id + ', ' + oItem.SpecialHandled);

         try { 
             var strSH = null;

             if (oItem.SpecialHandled != null) strSH = oItem.SpecialHandled;
             if (oItem.ToolStripObj.SpecialHandled != null) strSH = oItem.ToolStripObj.SpecialHandled;

             switch (strSH) {
                    case 'editor' :
                         if (_oEditor) _oEditor.EventItem(oItem);
                         break;
             }
         } catch (e) {
         }
}

/*================================================================================*/
/* <Function> ToolStrip anzeigen (bei DropDown & PopUp) </Function>
/*================================================================================*/
function __bw2ToolStripShow(oEvent, oItem, fSubToolStrip) {
              
__bw2Debug('__bw2ToolStripShow : ' + oItem); // + ', ' + _oToolStrip);
              
         /*--- Get ToolStrip ---*/
         var oToolStrip = __bw2GetElementById(oItem.ToolStripChildID);
         
         if ((oToolStrip == null) || (oToolStrip.IsLoaded == false)) {
            /*--- Load ToolStrip by Ajax ---*/ 
            if (oItem.Ajax) __bw2AjaxObjOnEvent(oEvent, oItem, 'loadtoolstrip', 1);
            oToolStrip = __bw2GetElementById(oItem.ToolStripChildID);
         }
          
         if (oToolStrip) { 
            oToolStrip.ParentToolStrip = oItem.ToolStripObj.ToolStrip;
//alert(oToolStrip.ParentToolStrip.id);
            __bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
            __bw2ToolStripShowPos(oToolStrip, oItem); 
            __bw2AddEventListener(oToolStrip, 'click', __bw2ToolStripItemClick, false);
            _oToolStrip = oToolStrip;
         } else {
            _oToolStrip = null;
         }
}

/*--------------------------------------------------------------------------------*/

function __bw2ToolStripShowDynamic(strToolStrip, strItem, nLeft, nTop, nWidth, nHeight, strInnerHTML) {

         /*--- Get ToolStrip ---*/
         var oToolStripObj = _oToolStrips[strToolStrip];
         var oToolStrip = oToolStripObj.ToolStrip
         var oItem = __bw2GetElementById(strItem);

//alert(strToolStrip + ', ' + oToolStripObj.Type);

         /*--- Initialize ToolStrip ---*/
         oToolStripObj.Initialize(strInnerHTML);

         try {
             for (strIID in oToolStripObj.Items) {
                 oToolStripObj.Items[strIID].Initialize(oToolStripObj);
             }
         } catch (e) {
         }

         //if ((nLeft != null) && (nLeft > 0)) _oToolStrip.style.left = nLeft;
         //if ((nTop != null) && (nTop > 0)) _oToolStrip.style.top = nTop;
         //if ((nWidth != null) && (nWidth > 0)) _oToolStrip.style.width = nWidth;
         //if ((nHeight != null) && (nHeight > 0)) _oToolStrip.style.height = nHeight;
         
         __bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
         __bw2ToolStripShowPos(oToolStrip, oItem); 
         __bw2AddEventListener(oToolStrip, 'mouseover', __bw2ToolStripOnOver, false);
         __bw2AddEventListener(oToolStrip, 'mouseout', __bw2ToolStripOnOut, false);
         __bw2AddEventListener(oToolStrip, 'click', __bw2ToolStripItemClick, false);
}

/*================================================================================*/
/* <Function> Child-ToolStrip anzeigen </Function>
/*================================================================================*/
function __bw2ToolStripChildShow(oEvent, oItem) {
         //if (_oToolStrips[oItem.ToolStripChildID].ToolStrip.style.display != 'none') return;

         switch (_nShowDelay) {
                case -1 : return; break;
                case 0 : _nShowDelay = 1;
                     window.TempEvent = oEvent;
                     window.TempObject = oItem;
                     setTimeout('__bw2ToolStripChildShow()', 300);
                     break;
                case 1 : _nShowDelay = 2;
                     if ((window.TempEvent) && (window.TempObject)) {
                        _oItemSelected = window.TempObject;
                        _oItemSelected.ToolStripChildShow = true;
                        __bw2ToolStripShow(window.TempEvent, window.TempObject, true)
                        window.TempEvent = null;
                        window.TempObject = null;
                     }
         }
}

/*================================================================================*/
/* <Function> ToolStrip anzeigen auf Position </Function>
/*================================================================================*/
function __bw2ToolStripShowPos(oToolStrip, oItem) {

__bw2Debug('Show : ' + oToolStrip.Type + ', ' + window.ZIndex);

         var nW = __bw2ObjectWidth(oItem); 
         var nH = __bw2ObjectHeight(oItem); 
         var nX = __bw2ObjectOffsetLeft(oItem); 
         var nY = __bw2ObjectOffsetTop(oItem); 
         var fC = false; 
         
         window.ZIndex++; 
         oToolStrip.style.display = 'block';
         oToolStrip.style.zIndex = window.ZIndex;
            
__bw2Debug('Show : ' + nX + ', ' + nY + ', ' + oToolStrip.Type + ', ' + window.ZIndex);

         if ((oToolStrip.IsDynamic) && (_fIE)) {
            switch (oToolStrip.Type) {
                   case 'menustrip' :
                        break;
                   case 'menu', 'dropdown' :
                        nX += 1;
                        nY += 1;
                        break;
                   case 'popup' :
                        nX += 1;
                        nY += nH + 1;
                        fC = true;
                        break;
                   case 'submenu' :
                        var nMW = __bw2ObjectWidth(oToolStrip);

                        if ((nX + nW + nMW) > __bw2WindowWidth()) {
                           nX -= nMW - 4;
                        } else {
                           nX += nW + 1;
                        }

                        break;
            }
         } else {
            switch (oToolStrip.Type) {
                   case 'menustrip' :
                        break;
                   case 'menu', 'dropdown' :
                        break;
                   case 'popup' :
                        nY += nH;
                        break;
                   case 'submenu' :
                        var nMW = __bw2ObjectWidth(oToolStrip);

                        if ((nX + nW + nMW) > __bw2WindowWidth()) {
                           nX -= nMW - 1;
                        } else {
                           nX += nW + 1;
                        }
            }
         }

         oToolStrip.style.left = nX;
         oToolStrip.style.top = nY;
}

/*================================================================================*/
/* <Function> ToolStripItem ausblenden (bei DropDown & PopUp) </Function>
/*================================================================================*/
function __bw2ToolStripHide(nMode) {
         __bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);

         switch (nMode) {
                case 1, 2: break;
                default : __bw2ToolStripCtrlItemSelectedReset(); _oToolStrip = null; break;
         }

         for (strMID in _oToolStrips) {
             try {
                 var oToolStripObj = _oToolStrips[strMID];
                                  
                 switch (oToolStripObj.Type ) {
                        case 'menustrip' : break;
                        default :  
                             if (oToolStripObj.ToolStrip.style.display != 'none') {
                                if (nMode == 2) {
                                   if ((oToolStripObj.Type == 'submenu') || (oToolStripObj.Type == 'popup')) {
                                      if ((_oToolStrip) && (_oToolStrip.ParentToolStrip) && (_oToolStrip.ParentToolStrip.Type == 'submenu')  && (_oToolStrip.ParentToolStrip.id != strMID)) {
                                         _oToolStrip.ParentToolStrip.style.display = 'block';
                                      } else {
                                         if ((_oToolStrip) && (_oToolStrip.id != strMID)) oToolStripObj.ToolStrip.style.display = 'none';
                                      }
                                   }
                                } else {
                                   oToolStripObj.ToolStrip.style.display = 'none';
                                }
                             }
                             
                             break;
                 }
             } catch (e) {
             }
         }
}

/*================================================================================*/
/* <Function> ToolStrip (Mouse on Over) </Function>
/*================================================================================*/
function __bw2ToolStripOnOver(oEvent) {
         if (oEvent == null) return;
         _oToolStrip = oEvent;
         
         //__bw2Debug('ToolStrip OnOver : ' + _oToolStrip.id);

         __bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);

         if (_oToolStrip) _oToolStrip.OnOver = true; 
}

/*================================================================================*/
/* <Function> ToolStrip (Mouse on Out) </Function>
/*================================================================================*/
function __bw2ToolStripOnOut(oEvent) {
         __bw2AddEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
         //__bw2Debug('ToolStrip OnOut');
         if (_oToolStrip) _oToolStrip.OnOver = false; 
}

/*================================================================================*/
/* <Function> Click ToolStripItem </Function>
/*================================================================================*/
function __bw2ToolStripItemClick(oEvent) {
         //__bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
         //__bw2RemoveEventListener(_oToolStrip, 'click', __bw2ToolStripItemClick, false);
         __bw2ToolStripHide();
}

/*================================================================================*/
/* <Function> Click outside ToolStripItem </Function>
/*================================================================================*/
function __bw2ToolStripOutsideClick(oEvent) {
         __bw2ToolStripCtrlItemSelectedReset();
         __bw2ToolStripItemClick();
}

/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/


/*================================================================================*/
/* <Function> Create ToolStrip-Item </Function>
/*================================================================================*/
function __bw2ToolStripItem(strItemID, nType, strToolStripContainerID, strToolStripChildID, strValue, fEnabled, fSelected, fIsCheckable, fChecked, strOptionGroup, strBackgroundColor, strForeColor, strHighlightColor, nSpecialHandled, strCommand, fAjax) {
         this.Ajax = fAjax;
         this.ID = strItemID;
         this.BackgroundColor = strBackgroundColor;
         this.Command = strCommand;
         this.Enabled = fEnabled;
         this.ForeColor = strForeColor;
         this.HighlightColor = strHighlightColor;
         this.IsCheckable = fIsCheckable;
         this.Checked = fChecked;
         this.OptionGroup = strOptionGroup;
         //this.ToolStrip = null;
         this.Selected = fSelected;
         this.SpecialHandled = null;
         this.ToolStripContainerID = strToolStripContainerID;
         this.ToolStripChildID = strToolStripChildID;
         this.Type = nType;
         this.Value = strValue;

         /*--- Special-Handled ---*/
         switch (nSpecialHandled) {
                case 1 : this.SpecialHandled = 'editor'; break;
         }

         /*--- Item-Type ---*/
         switch (nType) {
                case 0 : this.Type = 'standard'; break;             
                case 1 : this.Type = 'separator'; break;             
                case 2 : this.Type = 'dropdown'; break;             
                case 3 : this.Type = 'dropdowninput'; break;             
                case 4 : this.Type = 'label'; break;             
         }

         this.Item  = null;
         this.Initialize = _bw2ToolStripItemInitialize;

         this.Initialize();

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemInitialize(oToolStripObj) {
                  var oIT = null;
                  
                  try {
                      var oIT = __bw2GetElementById(this.ID);
                      if (oIT == null) return;

                      this.Item = oIT;
                      this.Item.Ajax = this.Ajax;
                      this.Item.BackgroundColor = this.BackgroundColor;
                      this.Item.Command = this.Command;
                      this.Item.Enabled = this.Enabled;
                      this.Item.ForeColor = this.ForeColor;
                      this.Item.HighlightColor = this.HighlightColor;
                      this.Item.IsCheckable = this.IsCheckable;
                      this.Item.Checked = this.Checked;
                      this.Item.Check = _bw2ToolStripItemCheck;
                      this.Item.Click = _bw2ToolStripItemClick;
                      this.Item.OptionGroup = this.OptionGroup;
                      this.Item.Selected = this.Selected;
                      this.Item.SpecialHandled = this.SpecialHandled;
                      this.Item.ToolStripChildID = this.ToolStripChildID;
                      this.Item.ToolStripChildShow = false;
                      this.Item.Type = this.Type;
                      this.Item.Value = this.Value;
                      this.Item.ParentObject = this;

                      if ((this.Item.Checked) && (this.Item.OptionGroup != null)) _oItemGroupsSelected[this.Item.OptionGroup] = this.Item;

                      if (oToolStripObj) {
                         this.Item.ToolStripObj = oToolStripObj;
                      } else if (this.ToolStripContainerID) {
                         //this.Item.ToolStripObj = __bw2GetElementById(this.ToolStripContainerID);
                      }

                      //__bw2AddEventListener(this.Item, 'mousedown', _bw2ToolStripItemOnMouseDown, false);
                      //__bw2AddEventListener(this.Item, 'mouseup', _bw2ToolStripItemOnMouseUp, false);
                      //__bw2AddEventListener(this.Item, 'mouseover', _bw2ToolStripItemOnMouseOver, true);
                      //__bw2AddEventListener(this.Item, 'mouseout', _bw2ToolStripItemOnMouseOut, true);

                  } catch (e) {
                      //alert('__bw2Item : ' + e);
                  }
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemCheck(fChecked) {
                  if (this.IsCheckable) {
                     if (this.OptionGroup != null) {
                        if (fChecked != null) {
                           this.Checked = fChecked;
                        } else {
                           this.Checked = true;
                        }
                        
                        this.className = this.ToolStripObj.CssClassItemSelected; 

                        try {
                            if (_oItemGroupsSelected[this.OptionGroup] != null) {
                              _oItemGroupsSelected[this.OptionGroup].className = this.ToolStripObj.CssClassItem;
                              _oItemGroupsSelected[this.OptionGroup] = this;
                            } else {
                              _oItemGroupsSelected[this.OptionGroup] = this;
                            }
                        } catch (e) {
                            _oItemGroupsSelected[this.OptionGroup] = this;
                        }
                    } else {
                        if (fChecked != null) {
                           this.Checked = fChecked;
                        } else {
                           this.Checked = !this.Checked;
                        }

//__bw2Debug('Check : ' + this.id + ', ' + this.Checked)                    

                        if (this.Checked) {
                           this.className = this.ToolStripObj.CssClassItemSelected; 
                        } else {
                           this.className = this.ToolStripObj.CssClassItem; 
                        }
                        
                        _oItemSelected = this;
                    }
                  }
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemClick(oEvent) {
                  __bw2ToolStripSpezialHandled(this);

                  if (this.Ajax) {
                     __bw2AjaxObjOnEvent(oEvent, this, 'onclick', 1);
                  } else {
                     __doPostBack(this.id, 'ITEMCLICK');
                  }
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemOnMouseDown(oEvent) {
                  if (oEvent == null) return;

                  var oItem = __bw2EventSource(oEvent);
                  
                  if (!oItem.Enabled) return;
__bw2Debug('_bw2ToolStripItemOnMouseDown : ' + oItem.id);
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemOnMouseUp(oEvent) {
                  if (oEvent == null) return;

                  var oItem = __bw2EventSource(oEvent);
                  
                  if (!oItem.Enabled) return;
__bw2Debug('_bw2ToolStripItemOnMouseUp : ' + oItem.id);
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemOnMouseOver(oEvent) {
                  if (oEvent == null) return;

                  var oItem = __bw2EventSource(oEvent);
                  
                  if (!oItem.Enabled) return;
__bw2Debug('_bw2ToolStripItemOnMouseOver : ' + oItem.id);
         }

/*--------------------------------------------------------------------------------*/

         function _bw2ToolStripItemOnMouseOut(oEvent) {
                  if (oEvent == null) return;

                  var oItem = __bw2EventSource(oEvent);
                  
                  if (!oItem.Enabled) return;
__bw2Debug('_bw2ToolStripItemOnMouseOut : ' + oItem.id);
         }
}


/*================================================================================*/
/* <Function> ToolStrip-Item Event (Event-Handeler) </Function>
/*================================================================================*/
function __bw2ToolStripItemEvent(oEvent, oItem, strType, nMode) {
         if (oItem.ToolStripObj == null) {
            return;
         } else {
            if (oItem.ToolStripObj.LastItemType == strType) return;
         }

         if (nMode == null) nMode = 0;
         oItem.ToolStripObj.LastItemType = strType;
 
         //__bw2Debug('Debug ' + strType+ ' : ' + oItem.id + ', ' + oItem.ToolStripChildID + ', ' + nMode + ', ' + oItem.Ajax);
         var nX = (oEvent.clientX - __bw2ObjectOffsetLeft(oItem)); 

         try { document.selection.empty(); } catch (e) {}

         /*--- Click ---*/
         if (strType == 'CLICK') {
            __bw2ToolStripCtrlItemSelectedReset();
alert('CLICK');
            oItem.className = oItem.ToolStripObj.CssClassItemClick;
            oItem.Click(oEvent);

         /*--- DropDown ---*/
         } else if (strType == 'DROPDOWN') {
            __bw2ToolStripCtrlItemSelectedReset();

            if (nX > (oItem.offsetWidth - 14)) {
               oItem.className = oItem.ToolStripObj.CssClassItemClick;

               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 1; 
                  oIO.style.top = 1; 
               }

               __bw2ToolStripShow(oEvent, oItem);
            } else {
               oItem.className = oItem.ToolStripObj.CssClassItemOnOver;
               oItem.Check();
               oItem.Click(oEvent);
            }

         /*--- ToolStrip ---*/
         } else if (strType == 'MENU') {
            __bw2ToolStripCtrlItemSelectedReset();

            oItem.className = oItem.ToolStripObj.CssClassItem;
            __bw2ToolStripShow(oEvent, oItem);

         /*--- Sub-ToolStrip ---*/
//         } else if (strType == 'SUBMENU') {
//            __bw2ToolStripCtrlItemSelectedReset();

         /*--- MouseDown ---*/
         } else if (strType == 'MOUSEDOWN') {
            if (oItem.ToolStripObj.Type != 'popup') __bw2ToolStripCtrlItemSelectedReset();

            oItem.className = oItem.ToolStripObj.CssClassItemClick; 

            if (nX > (oItem.offsetWidth - 14)) {
               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 1; 
                  oIO.style.top = 1; 
               }
            }   

         /*--- MouseUp ---*/
         } else if (strType == 'MOUSEUP') {
            if (oItem.ToolStripObj.Type == 'popup') __bw2ToolStripCtrlItemSelectedReset();

            if (oItem.ToolStripChildID) {
               __bw2ToolStripShow(oEvent, oItem);
               return;
            } else if ((oItem.IsCheckable) && (oItem.Checked)) {
               oItem.className = oItem.ToolStripObj.CssClassItemSelected; 
            } else {
               oItem.className = oItem.ToolStripObj.CssClassItemOnOver;
            }

            var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

            if (oIO) {
               oIO.style.position = 'relative'; 
               oIO.style.left = 0; 
               oIO.style.top = 0; 
            }

            oItem.Check();
            oItem.Click(oEvent);
            
            __bw2ToolStripHide();

         /*--- MouseOver ---*/
         } else if (strType == 'MOUSEOVER') {
            if (oItem.IsCheckable) {
               if (!oItem.Checked) oItem.className = oItem.ToolStripObj.CssClassItemOnOver;
            } else {
               oItem.className = oItem.ToolStripObj.CssClassItemOnOver;
            }

            if ((oItem.ToolStripObj) && (oItem.ToolStripObj.Type != 'menustrip')) _oToolStrip = oItem.ToolStripObj.ToolStrip;

if ((_oToolStrip) && (_oToolStrip.ParentToolStrip)) {
   __bw2Debug('OnOver : ' + oItem.id + ', ' + nMode + ', ' + _oToolStrip + ', ' + _oToolStrip.ParentToolStrip.id);
} else {
   __bw2Debug('OnOver : ' + oItem.id + ', ' + nMode);
}
            
            if ((nMode == 0) && (_oToolStrip != null)) {
               if (_oItemSelected) { _oItemSelected.className = oItem.ToolStripObj.CssClassItem; _oItemSelected.ToolStripChildShow = false;}
               _nShowDelay = -1;   
               __bw2ToolStripHide(1);
                
               if (oItem.ToolStripChildID != null) {
                  __bw2ToolStripShow(oEvent, oItem);
               } else {
                  _oToolStrip = null;
               }

            //} else if ((nMode == 1) && (_oToolStrip != null)) {
            } else if (nMode == 1) {
               if (_oItemSelected) { _oItemSelected.className = oItem.ToolStripObj.CssClassItem; _oItemSelected.ToolStripChildShow = false;}
               _nShowDelay = -1;   
               __bw2ToolStripHide(2);

            } else if ((nMode == 2) && (oItem.ToolStripChildID != null)) {
               try {
                   if (_oToolStrips[oItem.ToolStripChildID].ToolStrip.style.display != 'none') return;
               } catch (e) {} 

               _nShowDelay = 0; 
               __bw2ToolStripChildShow(oEvent, oItem);

            } else {
               if (_oItemSelected) { _oItemSelected.className = oItem.ToolStripObj.CssClassItem; _oItemSelected.ToolStripChildShow = false;}
               _nShowDelay = -1;   
            }

         /*--- MouseOut ---*/
         } else if (strType == 'MOUSEOUT') {
            if (oItem.ToolStripChildShow) {
            } else if (!oItem.Checked) {
               oItem.className = oItem.ToolStripObj.CssClassItem;

               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 0; 
                  oIO.style.top = 0; 
               }
            }
         }
}

/*================================================================================*/
/* <Function> ToolStrip-ColorItem Event (Event-Handeler) </Function>
/*================================================================================*/
function __bw2ToolStripColorItemEvent(oEvent, oItem, strToolStrip, strColor, strCommand, strSpecialHandled, fAjax) {
         //alert('__bw2ToolStripColorItemEvent : ' + oItem.id + ', ' + strToolStrip + ', ' + strColor + ', ' + strCommand);

         /*--- Set Symbol-Color ---*/
         var oM = _oToolStrips[strToolStrip];

         try {
             if (strColor == 'autocolor') {
                oItem.AutoColor = true;
                 
                if (_oEditor) {
                   strColor = _oEditor.DefForeColor;
                } else {
                   strColor = '#FFFFFF'; //'transparent';
                }
             } else if (strColor == 'transparent') {
                oItem.AutoColor = true;
             }

             __bw2GetElementById(strToolStrip + '_ColorMarker1').style.backgroundColor = strColor;
             __bw2GetElementById(strToolStrip + '_ColorMarker2').style.backgroundColor = strColor;
         } catch (e) {
         }

         /*--- Color-Unselection ---*/
         if (oM.ColorSel) {
            oM.ColorSel.className = oM.CssClassItem;

            if (oM.ColorSel.AutoColor) {
               oM.ColorSel.onmouseover = function () { this.className = oM.CssClassItemOnOver; } 
               oM.ColorSel.onmouseout = function () { this.className = oM.CssClassItem; } 
            } else {
               oM.ColorSel.style.padding = '4 4 4 4';
               oM.ColorSel.onmouseover = function () { this.className = oM.CssClassItemOnOver; this.style.padding = '3 3 3 3'; } 
               oM.ColorSel.onmouseout = function () { this.className = oM.CssClassItem; this.style.padding = '4 4 4 4'; } 
            }
         } else { 
            var nP = oItem.id.search(/_#/); 
            var fE = false;
         
            if (nP > -1) {
               var strI = oItem.id.substring(0, nP + 2);

               for (nI = 0; nI < _oColorListStandard.length; nI++) {
                   var oE = __bw2GetElementById(strI + _oColorListStandard[nI]);

                   if ((oE.className) && (oE.className == oM.CssClassItemSelected)) {
                      oE.className = oM.CssClassItem;
                      oE.style.padding = '4 4 4 4';
                      oE.onmouseover = function () { this.className = oM.CssClassItemOnOver; this.style.padding = '3 3 3 3'; } 
                      oE.onmouseout = function () { this.className = oM.CssClassItem; this.style.padding = '4 4 4 4'; } 
                      fE = true;
                      break;
                   }
               }

               if (!fE) {
                  for (nI = 0; nI < _oColorListExtended.length; nI++) {
                      var oE = __bw2GetElementById(strI + _oColorListStandard[nI]);

                      if ((oE.className) && (oE.className == oM.CssClassItemSelected)) {
                         oE.className = oM.CssClassItem;
                         oE.style.padding = '4 4 4 4';
                         oE.onmouseover = function () { this.className = oM.CssClassItemOnOver; this.style.padding = '3 3 3 3'; } 
                         oE.onmouseout = function () { this.className = oM.CssClassItem; this.style.padding = '4 4 4 4'; } 
                         break;
                      }
                  }
               }
            }
         }
            
         /*--- Color-Selection ---*/
         oM.ColorSel = oItem;
         oItem.className = oM.CssClassItemSelected;
         if (!oItem.AutoColor) oItem.style.padding = '3 3 3 3';
         oItem.onmouseover = function () { this.className = oM.CssClassItemOnOver; } 
         oItem.onmouseout = function () { this.className = oM.CssClassItemSelected; } 

         /*--- Special Handled ---*/
         try {
             oItem.ToolStripObj = _oToolStrips[strToolStrip];
             oItem.Command = strCommand;
             oItem.SpecialHandled = strSpecialHandled;
             oItem.Value = strColor;
         
             __bw2ToolStripSpezialHandled(oItem);
         } catch (e) {
         }

         /*--- PostBack ---*/
         if (fAjax) {
            __bw2AjaxObjOnEvent(oEvent, oItem, 'onclick', strColor);
         } else {
            __doPostBack(oItem.id, 'ITEMCLICK');
         }

         //__bw2RemoveEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
         __bw2ToolStripHide(1);
}

/*================================================================================*/
/* <Function> ToolStrip-CtrlItem Event (Event-Handeler) </Function>
/*================================================================================*/
function __bw2ToolStripCtrlItemEvent(oEvent, oItem, strType, fInput, nMode) {
         if (oItem.ToolStripObj == null) {
            __bw2Debug('kein ToolStrip');
            return;
         } else {
            if (oItem.ToolStripObj.LastItemType == strType) return;
         }

         if (nMode == null) nMode = 0;
         oItem.ToolStripObj.LastItemType = strType;

         try { document.selection.empty(); } catch (e) {}

         /*--- Click ---*/
         if (strType == 'CLICK') {
            if (_oToolStrip != null) {
               oItem.ToolStripObj.LastItemType = null;
               oItem.className = oItem.ToolStripObj.CssClassCtrlItem;
               oItem.Selected = true;

               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');
               
               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 0; 
                  oIO.style.top = 0; 
               }

               __bw2ToolStripHide();
               return;
               
            } else if (_oCtrlItemSelected != null) {
               if (_oCtrlItemSelected == oItem) return;
               _oCtrlItemSelected.className = oItem.ToolStripObj.CssClassCtrlItem; 
               _oCtrlItemSelected.Selected = false;
            }
            
            oItem.className = oItem.ToolStripObj.CssClassCtrlItemClick;
            oItem.Selected = true;
            _oCtrlItemSelected = oItem;

         /*--- DropDown ---*/
         } else if (strType == 'DROPDOWN') {
            if (_fOnMouseDown) {
               _fOnMouseDown = false;
               return; 
            
            } else if (_oToolStrip != null) {
               oItem.ToolStripObj.LastItemType = null;
               oItem.className = oItem.ToolStripObj.CssClassCtrlItem;
               oItem.Selected = true;

               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 0; 
                  oIO.style.top = 0; 
               }

               __bw2ToolStripHide();
               return;

            } else if (_oCtrlItemSelected != null) {
               if (_oCtrlItemSelected == oItem) return;
               __bw2ToolStripCtrlItemSelectedReset();
            }

            oItem.className = oItem.ToolStripObj.CssClassCtrlItemClick;
            oItem.Selected = true;

            var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

            if (oIO) {
               oIO.style.position = 'relative'; 
               oIO.style.left = 1; 
               oIO.style.top = 1; 
            }

            _oCtrlItemSelected = oItem;

            __bw2ToolStripShow(oEvent, oItem);

         /*--- MouseDown ---*/
         } else if (strType == 'MOUSEDOWN') {
            if (_oToolStrip != null) {
               oItem.ToolStripObj.LastItemType = null;
               oItem.className = oItem.ToolStripObj.CssClassCtrlItem;
               oItem.Selected = true;

               var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

               if (oIO) {
                  oIO.style.position = 'relative'; 
                  oIO.style.left = 0; 
                  oIO.style.top = 0; 
               }

               __bw2ToolStripHide();
               _fOnMouseDown = true;
               return;
            }
            
            oItem.className = oItem.ToolStripObj.CssClassCtrlItemClick;

            var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

            if (oIO) {
               oIO.style.position = 'relative'; 
               oIO.style.left = 1; 
               oIO.style.top = 1; 
            }

         /*--- MouseUp ---*/
         } else if (strType == 'MOUSEUP') {
            var oIO = __bw2GetElementById(oItem.id + '_ImageOpen');

            if (oIO) {
               oIO.style.position = 'relative'; 
               oIO.style.left = 0; 
               oIO.style.top = 0; 
            }

         /*--- MouseOver ---*/
         } else if (strType == 'MOUSEOVER') {
            if (!oItem.Selected) oItem.className = oItem.ToolStripObj.CssClassCtrlItemOnOver;

            if (oItem.ToolStripChildID != null) {
               var oSM = __bw2GetElementById(oItem.ToolStripChildID); 
               
               if ((oSM != null) && (oSM.style.display == 'block')) {
                  __bw2AddEventListener(document.body, 'mousedown', __bw2ToolStripOutsideClick, false);
                  return;
               } 
            }

            if ((nMode == 0) && (_oToolStrip != null)) __bw2ToolStripHide();

         /*--- MouseOut ---*/
         } else if (strType == 'MOUSEOUT') {
            if (!oItem.Selected) oItem.className = oItem.ToolStripObj.CssClassCtrlItem;
         }
}

/*================================================================================*/
/* <Function> ToolStrip-CtrlItem reset Selection </Function>
/*================================================================================*/
function __bw2ToolStripCtrlItemSelectedReset() {
         try {
             if (_oCtrlItemSelected != null) {
                _oCtrlItemSelected.ToolStripObj.LastItemType = null;
                _oCtrlItemSelected.className = _oCtrlItemSelected.ToolStripObj.CssClassCtrlItem; 
                _oCtrlItemSelected.Selected = false;

                var oIO = __bw2GetElementById(_oCtrlItemSelected.id + '_ImageOpen');
                
                if (oIO) {
                   oIO.style.position = 'relative'; 
                   oIO.style.left = 0; 
                   oIO.style.top = 0; 
                }

                _oCtrlItemSelected = null;
             }
         } catch (e) {
         }
}

/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/

