/*================================================================================*/
/*                                                                                */
/*             BW2Technologies.Web.JScript.Framework (Alpha V1.0.0.0)             */
/*                                                                                */
/*                                 Web-Frames                                     */
/*                                                                                */
/*              Copyright © 2006-2010 by BW2Technologies (HP. Lassnig)            */
/*                                                                                */
/*================================================================================*/

var _oSplitContainers = new Array();
var _oSplitContainer = null;

/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/


/*================================================================================*/
/* <Function> Frame-Set (0=Horinzontal | 1=Vertikal) </Function>
/*================================================================================*/
function __bw2SplitContainer(strSplitContainer, strPanel1, strPanel2, strSplitter, fSplitable, fCollapsible, eOrientation, eViewState, nDistance, nDistanceMin, nDistanceCollapsed, fAjax) {
         if ((strSplitContainer == strPanel1) || (strSplitContainer == strPanel2)) { alert('[SplitContainer] - Fehler bei Vergabe der eindeutigen Bezeichner : ' + strSplitContainer + ', ' + strPanel1 + ', ' + strPanel2); return; }

         this.Ajax = fAjax;
         this.ID = strSplitContainer;
         this.SplitterDistanceCollapsed = nDistanceCollapsed;
         this.SplitterDistance = nDistance;
         this.SplitterDistanceMin = nDistanceMin;
         this.SplitterDistancePos = 0;
         this.SplitterOrientation = eOrientation;       /* 0=Horinzontal | 1=Vertikal */
         this.SplitterViewState = eViewState;           /* 0=None | 1=Collapsed | 2=Expanded */
         
         this.Resize = _bw2Resize; 
         
         /*--- SplitContainer ---*/
         this.SplitContainer = __bw2GetElementById(strSplitContainer);
         this.SplitContainer.ParentObject = this;
         this.SplitContainer.Type = 'splitcontainer';
         this.SplitContainer.Draging = false;
         this.SplitContainer.NotResize = true;

         /*--- Panel-1 ---*/
         this.Panel1 = __bw2GetElementById(strPanel1);
         this.Panel1.Type = 'frame';

         /*--- Panel-2 ---*/
         this.Panel2 = __bw2GetElementById(strPanel2);
         this.Panel2.Type = 'frame';

         /*--- Splitter ---*/
         this.Splitter = __bw2GetElementById(strSplitter);
         this.Splitter.Type = 'splitter';

         /*--- Splitter-Clip ---*/
         if (fCollapsible) {
            this.SplitterClip = __bw2GetElementById(strSplitter + "_CLIP");
            this.SplitterClip.ParentObject = this;
            this.SplitterClip.onclick = _bw2SplitterClipClick;
         } else {         
            this.SplitterClip = null;
         }

         /*--- Event-Handlers ---*/
         if (fSplitable) {
            __bw2AddEventListener(this.Splitter, 'mousedown', _bw2SplitContainerDragBegin, false);
            __bw2AddEventListener(this.SplitContainer, 'mousemove', _bw2SplitContainerDragMove, false);
            __bw2AddEventListener(this.SplitContainer, 'mouseup', _bw2SplitContainerDragEnd, false);
         }
         
         if (_fIE) __bw2AddEventListener(this.SplitContainer, 'resize', _bw2SplitContainerResize, false);

/*--------------------------------------------------------------------------------*/

         function _bw2Resize() {
                 try {
                     with (this) {
                          var nPW = 0;
                          var nPH = 0;

                          if ((SplitContainer.parentElement) && (SplitContainer.parentElement.tagName) && (SplitContainer.parentElement.tagName != 'FORM')) {
                             nPW = SplitContainer.parentElement.offsetWidth;
                             nPH = SplitContainer.parentElement.offsetHeight;
                          } else if ((SplitContainer.parentNode) && (SplitContainer.parentNode.tagName) && (SplitContainer.parentNode.tagName != 'FORM')) {
                             nPW = SplitContainer.parentNode.offsetWidth;
                             nPH = SplitContainer.parentNode.offsetHeight;
                          }    

                          if ((SplitContainer.offsetLeft > 0) && (nPW > 0)) SplitContainer.style.width = nPW - SplitContainer.offsetLeft;
                          if ((SplitContainer.offsetTop > 0) && (nPH > 0)) SplitContainer.style.height = nPH - SplitContainer.offsetTop; 

                          /*--- Split Horizontal (Left/Right) ---*/ 
                          if (SplitterOrientation == 0) {
                             if (SplitterClip) SplitterClip.style.top = (SplitContainer.offsetHeight - SplitterClip.offsetHeight) / 2;

                             Panel1.style.height = SplitContainer.offsetHeight;
                             Splitter.style.height = SplitContainer.offsetHeight;
                             Panel2.style.height = SplitContainer.offsetHeight;

                             if (SplitterViewState < 2) {
                                if (_fIE) Panel1.style.width = SplitterDistanceCollapsed; else Panel1.style.width = SplitterDistanceCollapsed - 2;
                                Splitter.style.left = SplitterDistanceCollapsed;
                             } else {
                                if (_fIE) Panel1.style.width = SplitterDistance; else Panel1.style.width = SplitterDistance - 2;
                                Splitter.style.left = SplitterDistance;
                             }

                             var nSX = Splitter.offsetLeft + Splitter.offsetWidth;
                             Panel2.style.left = nSX;
                             Panel2.style.width = SplitContainer.offsetWidth - nSX;
         
                          /*--- Split Vertical (Up/Down) ---*/
                          } else {
                             if (SplitterClip) { SplitterClip.style.left = (SplitContainer.offsetWidth - SplitterClip.offsetWidth) / 2; SplitterClip.style.top = '0'; }

                             Panel1.style.width = SplitContainer.offsetWidth;
                             Splitter.style.width = SplitContainer.offsetWidth;
                             Panel2.style.width = SplitContainer.offsetWidth;

                             if (SplitterViewState < 2) {
                                if (_fIE) Panel1.style.height = SplitterDistanceCollapsed; else Panel1.style.height = SplitterDistanceCollapsed - 2;
                                Splitter.style.top = SplitterDistanceCollapsed;
                             } else {
                                if (_fIE) Panel1.style.height = SplitterDistance; else Panel1.style.height = SplitterDistance - 2;
                                Splitter.style.top = SplitterDistance;
                             }
                            
                             var nSY = Splitter.offsetTop + Splitter.offsetHeight;
                             Panel2.style.top = nSY;
                             Panel2.style.height = SplitContainer.offsetHeight - nSY;
                          }
                     }

                     if (!_fIE) {
                        if (SplitContainer.Panel1) __bw2ChildResize(SplitContainer.Panel1, 'DIV');
                        if (SplitContainer.Panel2) __bw2ChildResize(SplitContainer.Panel2, 'DIV');
                     }
                 } catch (e) {}
         }
         
/*--------------------------------------------------------------------------------*/

         function _bw2SplitContainerDragBegin(oEvent) {
                  if (oEvent == null) return;

                  var nPos=0, nOff=0;
                  var strID = __bw2EventSource(oEvent).id.replace('__SPL','');

                  try {
                      _oSplitContainer = _oSplitContainers[strID];
                      if (_oSplitContainer == null) return;

                      with (_oSplitContainer) {
                           _oSplitContainer.Draging = true;

                           /*--- Split Horizontal (Left/Right) ---*/ 
                           if (_oSplitContainer.SplitterOrientation == 0) {
                              nOff = _oSplitContainer.Splitter.offsetLeft;
                              nPos = __bw2EventClientX(oEvent);
  
                              if (SplitterClip) {
                                 if (nPos > 0) {
                                    SplitterClip.src = _oSkinImages['SPLITTER_TO_LEFT'].Image;
                                 } else {
                                    SplitterClip.src = _oSkinImages['SPLITTER_TO_RIGHT'].Image;
                                 }
                              }

                           /*--- Split Vertical (Up/Down) ---*/ 
                           } else {
                              nOff = _oSplitContainer.Splitter.offsetTop;
                              nPos = __bw2EventClientY(oEvent);

                              if (SplitterClip) {
                                 if (nPos > 0) {
                                    SplitterClip.src = _oSkinImages['SPLITTER_TO_TOP'].Image;
                                 } else {
                                    SplitterClip.src = _oSkinImages['SPLITTER_TO_BOTTOM'].Image;
                                 }
                              }
                           }

                           _oSplitContainer.SplitterDistancePos = nPos - nOff;
                      }
                  } catch (e) {
                  }
         }

/*--------------------------------------------------------------------------------*/

         function _bw2SplitContainerDragMove(oEvent) {
                  if (oEvent == null) return;
                  if (_oSplitContainer == null) return;

                  with (_oSplitContainer) {
                       var nPos = 0;

                       if (SplitterOrientation == 0) {
                          nPos = __bw2EventClientX(oEvent);
                       } else {
                          nPos = __bw2EventClientY(oEvent);
                       }

                       nPos -= SplitterDistancePos;
                       if (nPos < SplitterDistanceMin) nPos = SplitterDistanceMin;

                       /*--- Split Horizontal (Left/Right) ---*/ 
                       if (SplitterOrientation == 0) {
                          if (nPos > (SplitContainer.offsetWidth - SplitterDistanceMin)) nPos = SplitContainer.offsetWidth - SplitterDistanceMin;

                          Panel1.style.left = 0;
                          
                          if (_fIE) Panel1.style.width = nPos; else Panel1.style.width = nPos - 2;
                          Splitter.style.left = nPos;

                          var nSX = nPos + Splitter.offsetWidth;
                          Panel2.style.left = nSX;
                          Panel2.style.width = SplitContainer.offsetWidth - nSX;

                       /*--- Split Vertical (Up/Down) ---*/ 
                       } else {
                          if (nPos > (SplitContainer.offsetHeight - SplitterDistanceMin)) nPos = SplitContainer.offsetHeight - SplitterDistanceMin;

                          Panel1.style.top = 0;
                          
                          if (_fIE) Panel1.style.height = nPos; else Panel1.style.height = nPos - 2;
                          Splitter.style.top = nPos;

                          var nSY = nPos + Splitter.offsetHeight;
                          Panel2.style.top = nSY;
                          Panel2.style.height = SplitContainer.offsetHeight - nSY;
                       }  

                       if (!_fIE) __bw2SplitContainersResize(ID);
                  }  

                  __bw2Unselect();
         }

/*--------------------------------------------------------------------------------*/

         function _bw2SplitContainerDragEnd(oEvent) {
                  if (oEvent == null) return;
                  if (_oSplitContainer == null) return;

                  try {
                      with (_oSplitContainer) { 
                           var oHidden = __bw2GetElementById(Splitter.id + '_SAVE');

                           Draging = false;

                           /*--- Split Horizontal (Left/Right) ---*/ 
                           if (SplitterOrientation == 0) {
                              SplitterDistance = Splitter.offsetLeft;
                              oHidden.value = Splitter.offsetLeft + ',' + Panel2.offsetLeft + ',' + Panel2.offsetWidth;

                           /*--- Split Vertical (Up/Down) ---*/ 
                           } else {
                              SplitterDistance = Splitter.offsetTop;
                              oHidden.value = Splitter.offsetTop + ',' + Panel2.offsetTop + ',' + Panel2.offsetHeight;
                           }

                           if (Ajax) __bw2AjaxObjOnEvent(oEvent, ID, 'onchange', oHidden.value);
                      }
                  } catch (e) {
                  }

                  _oSplitContainer = null;
                  __bw2Unselect();
         }

/*--------------------------------------------------------------------------------*/

         function _bw2SplitContainerResize(oEvent) {
                  if (oEvent == null) return;

                  try {
                      var oFS = null;

                      if (oEvent.Type == null) {
                         oFS = __bw2EventSource(oEvent);
                      } else {
                         oFS = oEvent;
                      }
                     
                      oFS.ParentObject.Resize();
                  } catch (e) {}
         }

/*--------------------------------------------------------------------------------*/

         function _bw2SplitterClipClick(oEvent) {
                  try {
                     if (this.ParentObject == null) return;

                     with (this.ParentObject) {
                          /*--- Split Horizontal (Left/Right) ---*/ 
                          if (SplitterOrientation == 0) {
                             if (Splitter.offsetLeft > SplitterDistanceCollapsed) {
                                SplitterViewState = 1;
                                SplitterClip.src = _oSkinImages['SPLITTER_TO_RIGHT'].Image;
                             } else {
                                SplitterViewState = 2;
                                SplitterClip.src = _oSkinImages['SPLITTER_TO_LEFT'].Image;
                             }
  
                          /*--- Split Vertical (Up/Down) ---*/ 
                          } else {
                             if (Splitter.offsetTop > SplitterDistanceCollapsed) {
                                SplitterViewState = 1;
                                SplitterClip.src = _oSkinImages['SPLITTER_TO_BOTTOM'].Image;
                             } else {
                                SplitterViewState = 2;
                                SplitterClip.src = _oSkinImages['SPLITTER_TO_TOP'].Image;
                             }
                          }
                          
                          if (Ajax) {
                             if (SplitterViewState == 1) {
                                __bw2AjaxObjOnEvent(oEvent, ID, 'onclick', 'collapse');
                             } else {
                                if (Panel1.childNodes.length == 0) __bw2Loading(true);
                                __bw2AjaxObjOnEvent(oEvent, ID, 'onclick', 'expand');
                             }
                          }
                     }
                    
                     __bw2SplitContainersResize();
                 } catch (e) {}
         }
}

/*================================================================================*/
/* <Function> Resize Split-Containers </Function>
/*================================================================================*/
function __bw2SplitContainersResize(strChilds) {
         var fC = false;
         
         for (strID in _oSplitContainers) {
             if (_oSplitContainers[strID] != null) {
                if (strChilds != null) {
                   if (fC) _oSplitContainers[strID].Resize();
                   if (strID == strChilds) fC = true;
                } else { 
                   _oSplitContainers[strID].Resize();
                }   
             }
         }
}

/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------*/

