var highZ = 50; 
/* xCore */
function xBackground(e, c, i) {
   if(!(e = xGetElementById(e)))return''; 
   var bg = ''; 
   if(e.style) {
      if(xStr(c)) {
         e.style.backgroundColor = c; 
         }
      if(xStr(i)) {
         e.style.backgroundImage = (i != '') ? 'url(' + i + ')':null; 
         }
      bg = e.style.backgroundColor; 
      }
   return bg; 
   }
function xClientHeight() {
   var v = 0, d = document, w = window; 
   if(d.compatMode == 'CSS1Compat' &&!w.opera && d.documentElement && d.documentElement.clientHeight) {
      v = d.documentElement.clientHeight; 
      }
   else if(d.body && d.body.clientHeight) {
      v = d.body.clientHeight; 
      }
   else if(xDef(w.innerWidth, w.innerHeight, d.width)) {
      v = w.innerHeight; 
      if(d.width > w.innerWidth)v -= 16; 
      }
   return v; 
   }
function xClientWidth() {
   var v = 0, d = document, w = window; 
   if(d.compatMode == 'CSS1Compat' &&!w.opera && d.documentElement && d.documentElement.clientWidth) {
      v = d.documentElement.clientWidth; 
      }
   else if(d.body && d.body.clientWidth) {
      v = d.body.clientWidth; 
      }
   else if(xDef(w.innerWidth, w.innerHeight, d.height)) {
      v = w.innerWidth; 
      if(d.height > w.innerHeight)v -= 16; 
      }
   return v; 
   }
function xClip(e, t, r, b, l) {
   if(!(e = xGetElementById(e)))return; 
   if(e.style) {
      if(xNum(l))e.style.clip = 'rect(' + t + 'px ' + r + 'px ' + b + 'px ' + l + 'px)'; 
      else e.style.clip = 'rect(0 ' + parseInt(e.style.width) + 'px ' + parseInt(e.style.height) + 'px 0)'; 
      }
   }
function xColor(e, s) {
   if(!(e = xGetElementById(e)))return''; 
   var c = ''; 
   if(e.style && xDef(e.style.color)) {
      if(xStr(s))e.style.color = s; 
      c = e.style.color; 
      }
   return c; 
   }
function xDef() {
   for(var i = 0; i < arguments.length; ++i) {
      if(typeof(arguments[i]) == 'undefined')return false; 
      }
   return true; 
   }
function xDisplay(e, s) {
   if((e = xGetElementById(e)) && e.style && xDef(e.style.display)) {
      if(xStr(s)) {
         try {
            e.style.display = s; 
            }
         catch(ex) {
            e.style.display = ''; 
            }
         }
      return e.style.display; 
      }
   return null; 
   }
function xGetComputedStyle(oEle, sProp, bInt) {
   var s, p = 'undefined'; 
   var dv = document.defaultView; 
   if(dv && dv.getComputedStyle) {
      s = dv.getComputedStyle(oEle, ''); 
      if(s)p = s.getPropertyValue(sProp); 
      }
   else if(oEle.currentStyle) {
      var i, c, a = sProp.split('-'); 
      sProp = a[0]; 
      for(i = 1; i < a.length; ++i) {
         c = a[i].charAt(0); 
         sProp += a[i].replace(c, c.toUpperCase()); 
         }
      p = oEle.currentStyle[sProp]; 
      }
   else return null; 
   return bInt ? (parseInt(p) || 0) : p; 
   }
function xGetElementById(e) {
   if(typeof(e) == 'string') {
      if(document.getElementById)e = document.getElementById(e); 
      else if(document.all)e = document.all[e]; 
      else e = null; 
      }
   return e; 
   }
function xGetElementsByTagName(t, p) {
   var list = null; 
   t = t || '*'; 
   p = p || document; 
   if(p.getElementsByTagName) {
      list = p.getElementsByTagName(t); 
      if(t == '*' && (!list ||!list.length))list = p.all; 
      }
   else {
      if(t == '*')list = p.all; 
      else if(p.all && p.all.tags)list = p.all.tags(t); 
      }
   return list || new Array(); 
   }
function xHasPoint(e, x, y, t, r, b, l) {
   if(!xNum(t)) {
      t = r = b = l = 0; 
      }
   else if(!xNum(r)) {
      r = b = l = t; 
      }
   else if(!xNum(b)) {
      l = r; 
      b = t; 
      }
   var eX = xPageX(e), eY = xPageY(e); 
   return(x >= eX + l && x <= eX + xWidth(e) - r && y >= eY + t && y <= eY + xHeight(e) - b); 
   }
function xHeight(e, h) {
   if(!(e = xGetElementById(e)))return 0; 
   if(xNum(h)) {
      if(h < 0)h = 0; 
      else h = Math.round(h); 
      }
   else h =- 1; 
   var css = xDef(e.style); 
   if(e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
      h = xClientHeight(); 
      }
   else if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
      if(h >= 0) {
         var pt = 0, pb = 0, bt = 0, bb = 0; 
         if(document.compatMode == 'CSS1Compat') {
            var gcs = xGetComputedStyle; 
            pt = gcs(e, 'padding-top', 1); 
            if(pt !== null) {
               pb = gcs(e, 'padding-bottom', 1); 
               bt = gcs(e, 'border-top-width', 1); 
               bb = gcs(e, 'border-bottom-width', 1); 
               }
            else if(xDef(e.offsetHeight, e.style.height)) {
               e.style.height = h + 'px'; 
               pt = e.offsetHeight - h; 
               }
            }
         h -= (pt + pb + bt + bb); 
         if(isNaN(h) || h < 0)return; 
         else e.style.height = h + 'px'; 
         }
      h = e.offsetHeight; 
      }
   else if(css && xDef(e.style.pixelHeight)) {
      if(h >= 0)e.style.pixelHeight = h; 
      h = e.style.pixelHeight; 
      }
   return h; 
   }
function xHide(e) {
   return xVisibility(e, 0); 
   }
function xLeft(e, iX) {
   try
   {
       if(!(e = xGetElementById(e)))return 0; 
       var css = xDef(e.style);
      // bug fix:10530
   
       if(css && xStr(e.style.left)) 
       {
          if(xNum(iX))e.style.left = iX + 'px'; 
          else {
             iX = parseInt(e.style.left); 
             if(isNaN(iX))iX = xGetComputedStyle(e, 'left', 1); 
             if(isNaN(iX))iX = 0; 
             }
       }
       
       else if(css && xDef(e.style.pixelLeft))
        {
          if(xNum(iX))e.style.pixelLeft = iX; 
          else iX = e.style.pixelLeft; 
        }
        if(parseInt(e.style.left)>(window.screen.width-e.offsetWidth))
          {
             e.style.left=(window.screen.width-e.offsetWidth)+"px";
          }
  
             return iX; 
         }
     
     catch(e)
     {
     }
      
   }
function xRight(e, iX) {
   if(!(e = xGetElementById(e)))return 0; 
   var css = xDef(e.style); 
   if(css && xStr(e.style.right)) {
      if(xNum(iX))e.style.right = iX + 'px'; 
      else {
         iX = parseInt(e.style.right); 
         if(isNaN(iX))iX = xGetComputedStyle(e, 'right', 1); 
         if(isNaN(iX))iX = 0; 
         }
      }
   else if(css && xDef(e.style.pixelRight)) {
      if(xNum(iX))e.style.pixelRight = iX; 
      else iX = e.style.pixelRight; 
      }
      if(parseInt(e.style.right)>(window.screen.width-e.offsetWidth))
          {
             e.style.right=(window.screen.width-e.offsetWidth)+"px";
          }
   return iX; 
   }
xLibrary = {
   version : '4.06', license : 'GNU LGPL', url : 'http://cross-browser.com/'}
; 
function xMoveTo(e, x, y) {
   xLeft(e, x); 
   xTop(e, y); 
   }
function xMoveToRight(e, x, y) {
   xRight(e, x); 
   xTop(e, y); 
   }   
function xNum() {
   for(var i = 0; i < arguments.length; ++i) {
      if(isNaN(arguments[i]) || typeof(arguments[i]) != 'number')return false; 
      }
   return true; 
   }
function xOffsetLeft(e) {
   if(!(e = xGetElementById(e)))return 0; 
   if(xDef(e.offsetLeft))return e.offsetLeft; 
   else return 0; 
   }
function xOffsetTop(e) {
   if(!(e = xGetElementById(e)))return 0; 
   if(xDef(e.offsetTop))return e.offsetTop; 
   else return 0; 
   }
function xOpacity(e, o) {
   var set = xDef(o); 
   if(!(e = xGetElementById(e)))return 2; 
   if(xStr(e.style.opacity)) {
      if(set)e.style.opacity = o + ''; 
      else o = parseFloat(e.style.opacity); 
      }
   else if(xStr(e.style.filter)) {
      if(set)e.style.filter = 'alpha(opacity=' + (100 * o) + ')'; 
      else if(e.filters && e.filters.alpha) {
         o = e.filters.alpha.opacity / 100; 
         }
      }
   else if(xStr(e.style.MozOpacity)) {
      if(set)e.style.MozOpacity = o + ''; 
      else o = parseFloat(e.style.MozOpacity); 
      }
   else if(xStr(e.style.KhtmlOpacity)) {
      if(set)e.style.KhtmlOpacity = o + ''; 
      else o = parseFloat(e.style.KhtmlOpacity); 
      }
   return isNaN(o) ? 1 : o; 
   }
function xPageX(e) {
   if(!(e = xGetElementById(e)))return 0; 
   var x = 0; 
   while(e) {
      if(xDef(e.offsetLeft))x += e.offsetLeft; 
      e = xDef(e.offsetParent) ? e.offsetParent : null; 
      }
   return x; 
   }
function xPageY(e) {
   if(!(e = xGetElementById(e)))return 0; 
   var y = 0; 
   while(e) {
      if(xDef(e.offsetTop))y += e.offsetTop; 
      e = xDef(e.offsetParent) ? e.offsetParent : null; 
      }
   return y; 
   }
function xParent(e, bNode) {
   if(!(e = xGetElementById(e)))return null; 
   var p = null; 
   if(!bNode && xDef(e.offsetParent))p = e.offsetParent; 
   else if(xDef(e.parentNode))p = e.parentNode; 
   else if(xDef(e.parentElement))p = e.parentElement; 
   return p; 
   }
function xResizeTo(e, w, h) {
   xWidth(e, w); 
   xHeight(e, h); 
   }
function xScrollLeft(e, bWin) {
   var offset = 0; 
   if(!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
      var w = window; 
      if(bWin && e)w = e; 
      if(w.document.documentElement && w.document.documentElement.scrollLeft)offset = w.document.documentElement.scrollLeft; 
      else if(w.document.body && xDef(w.document.body.scrollLeft))offset = w.document.body.scrollLeft; 
      }
   else {
      e = xGetElementById(e); 
      if(e && xNum(e.scrollLeft))offset = e.scrollLeft; 
      }
   return offset; 
   }
function xScrollTop(e, bWin) {
   var offset = 0; 
   if(!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
      var w = window; 
      if(bWin && e)w = e; 
      if(w.document.documentElement && w.document.documentElement.scrollTop)offset = w.document.documentElement.scrollTop; 
      else if(w.document.body && xDef(w.document.body.scrollTop))offset = w.document.body.scrollTop; 
      }
   else {
      e = xGetElementById(e); 
      if(e && xNum(e.scrollTop))offset = e.scrollTop; 
      }
   return offset; 
   }
function xShow(e) {
   return xVisibility(e, 1); 
   }
function xStr(s) {
   for(var i = 0; i < arguments.length; ++i) {
      if(typeof(arguments[i]) != 'string')return false; 
      }
   return true; 
   }
function xTop(e, iY) {
   if(!(e = xGetElementById(e)))return 0; 
   var css = xDef(e.style); 
   if(css && xStr(e.style.top)) {
      if(xNum(iY))e.style.top = iY + 'px'; 
      else {
         iY = parseInt(e.style.top); 
         if(isNaN(iY))iY = xGetComputedStyle(e, 'top', 1); 
         if(isNaN(iY))iY = 0; 
         }
      }
   else if(css && xDef(e.style.pixelTop)) {
      if(xNum(iY))e.style.pixelTop = iY; 
      else iY = e.style.pixelTop; 
      }
   return iY; 
   }
var xOp7Up, xOp6Dn, xIE4Up, xIE4, xIE5, xNN4, xUA = navigator.userAgent.toLowerCase(); 
if(window.opera) {
   var i = xUA.indexOf('opera'); 
   if(i !=- 1) {
      var v = parseInt(xUA.charAt(i + 6)); 
      xOp7Up = v >= 7; 
      xOp6Dn = v < 7; 
      }
   }
else if(navigator.vendor != 'KDE' && document.all && xUA.indexOf('msie') !=- 1) {
   xIE4Up = parseFloat(navigator.appVersion) >= 4; 
   xIE4 = xUA.indexOf('msie 4') !=- 1; 
   xIE5 = xUA.indexOf('msie 5') !=- 1; 
   }
else if(document.layers) {
   xNN4 = true; 
   }
xMac = xUA.indexOf('mac') !=- 1; 
function xVisibility(e, bShow) {
   if(!(e = xGetElementById(e)))return null; 
   if(e.style && xDef(e.style.visibility)) {
      if(xDef(bShow))e.style.visibility = bShow ? 'visible':'hidden'; 
      return e.style.visibility; 
      }
   return null; 
   }
function xWidth(e, w) {
   if(!(e = xGetElementById(e)))return 0; 
   if(xNum(w)) {
      if(w < 0)w = 0; 
      else w = Math.round(w); 
      }
   else w =- 1; 
   var css = xDef(e.style); 
   if(e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
      w = xClientWidth(); 
      }
   else if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
      if(w >= 0) {
         var pl = 0, pr = 0, bl = 0, br = 0; 
         if(document.compatMode == 'CSS1Compat') {
            var gcs = xGetComputedStyle; 
            pl = gcs(e, 'padding-left', 1); 
            if(pl !== null) {
               pr = gcs(e, 'padding-right', 1); 
               bl = gcs(e, 'border-left-width', 1); 
               br = gcs(e, 'border-right-width', 1); 
               }
            else if(xDef(e.offsetWidth, e.style.width)) {
               e.style.width = w + 'px'; 
               pl = e.offsetWidth - w; 
               }
            }
         w -= (pl + pr + bl + br); 
         if(isNaN(w) || w < 0)return; 
         else e.style.width = w + 'px'; 
         }
      w = e.offsetWidth; 
      }
   else if(css && xDef(e.style.pixelWidth)) {
      if(w >= 0)e.style.pixelWidth = w; 
      w = e.style.pixelWidth; 
      }
   return w; 
   }
function xZIndex(e, uZ) {
   if(!(e = xGetElementById(e)))return 0; 
   if(e.style && xDef(e.style.zIndex)) {
      if(xNum(uZ))e.style.zIndex = uZ; 
      uZ = parseInt(e.style.zIndex); 
      }
   return uZ; 
   }
/* xDrag */
function xDisableDrag(id, last) {
   if(!window._xDrgMgr)return; 
   var ele = xGetElementById(id); 
   ele.xDraggable = false; 
   ele.xODS = null; 
   ele.xOD = null; 
   ele.xODE = null; 
   xRemoveEventListener(ele, 'mousedown', _xOMD, false); 
   if(_xDrgMgr.mm && last) {
      _xDrgMgr.mm = false; 
      xRemoveEventListener(document, 'mousemove', _xOMM, false); 
      }
   }
var _xDrgMgr = {
   ele : null, mm : false}
; 
function xEnableDrag(id, fS, fD, fE, parentId) 
{
   var ele = xGetElementById(id); 
   if (ele != null)
   {
	   ele.parent = parentId; 
	   ele.xDraggable = true; 
	   ele.xODS = fS; 
	   ele.xOD = fD; 
	   ele.xODE = fE; 
	   xAddEventListener(ele, 'mousedown', _xOMD, false); 
	   if(!_xDrgMgr.mm) 
	   {
		  _xDrgMgr.mm = true; 
		  xAddEventListener(document, 'mousemove', _xOMM, false); 
	   }      
   } 
}
function _xOMD(e) {
   var evt = new xEvent(e); 
   var ele = evt.target; 
   while(ele &&!ele.xDraggable) {
      ele = xParent(ele); 
      }
   if(ele) {
      xPreventDefault(e); 
      ele.xDPX = evt.pageX; 
      ele.xDPY = evt.pageY; 
      _xDrgMgr.ele = ele; 
      xAddEventListener(document, 'mouseup', _xOMU, false); 
      if(ele.xODS) {
         ele.xODS(ele, evt.pageX, evt.pageY); 
         }
      }
   }
function _xOMM(e) {
   var evt = new xEvent(e); 
   if(_xDrgMgr.ele) {
      xPreventDefault(e); 
      var ele = _xDrgMgr.ele; 
      var dx = evt.pageX - ele.xDPX; 
      var dy = evt.pageY - ele.xDPY; 
      ele.xDPX = evt.pageX; 
      ele.xDPY = evt.pageY; 
      
      if(ele.xOD) {           
         ele.xOD(ele, dx, dy); 
          var e= xGetElementById(ele.parent); 
          var anchor = e.anchorStyle;   
          var etop = parseInt(xreplace(e.style.top, "px", "")); 
          if(anchor == "RIGHT")
          {
            var eright = parseInt(xreplace(e.style.right, "px", "")); 
            if(eright <0)
            {
                  e.style.right='0px';
                  endBoxdrag(ele); 
            }
          }
          else
          {
            var eleft = parseInt(xreplace(e.style.left, "px", "")); 
            if(eleft <0)
            {
                 
                  e.style.left='0px';
                  endBoxdrag(ele); 
            }
          }
          if(etop < 0)
           {
                    e.style.top='0px';
                    endBoxdrag(ele); 
                   _xDrgMgr.ele = false; 
           } 
     
         }
      else {
            var anchorStyle = ele.anchorStyle;
            if(anchorStyle == "RIGHT")
            {
                xMoveToRight(ele, xRight(ele) - dx, xTop(ele) + dy); 
            }
            else
            {
             xMoveTo(ele, xLeft(ele) + dx, xTop(ele) + dy); 
            }
          
         }
      }
   }
function _xOMU(e) {
   if(_xDrgMgr.ele) {
      xPreventDefault(e); 
      xRemoveEventListener(document, 'mouseup', _xOMU, false); 
      if(_xDrgMgr.ele.xODE) {
         var evt = new xEvent(e); 
         _xDrgMgr.ele.xODE(_xDrgMgr.ele, evt.pageX, evt.pageY); 
         }
      _xDrgMgr.ele = null; 
      }
   }
xLibrary = {
   version : '4.06', license : 'GNU LGPL', url : 'http://cross-browser.com/'}
; 
/* xEvent */
function xAddEventListener(e, eT, eL, cap) {
   if(!(e = xGetElementById(e)))return; 
   eT = eT.toLowerCase(); 
   if(e == window &&!e.opera &&!document.all) {
      if(eT == 'resize') {
         e.xPCW = xClientWidth(); 
         e.xPCH = xClientHeight(); 
         e.xREL = eL; 
         xResizeEvent(); 
         return; 
         }
      if(eT == 'scroll') {
         e.xPSL = xScrollLeft(); 
         e.xPST = xScrollTop(); 
         e.xSEL = eL; 
         xScrollEvent(); 
         return; 
         }
      }
   if(e.addEventListener)e.addEventListener(eT, eL, cap); 
   else if(e.attachEvent)e.attachEvent('on' + eT, eL); 
   else e['on' + eT] = eL; 
   }
function xResizeEvent() {
   if(window.xREL)setTimeout('xResizeEvent()', 250); 
   var w = window, cw = xClientWidth(), ch = xClientHeight(); 
   if(w.xPCW != cw || w.xPCH != ch) {
      w.xPCW = cw; 
      w.xPCH = ch; 
      if(w.xREL)w.xREL(); 
      }
   }
function xScrollEvent() {
   if(window.xSEL)setTimeout('xScrollEvent()', 250); 
   var w = window, sl = xScrollLeft(), st = xScrollTop(); 
   if(w.xPSL != sl || w.xPST != st) {
      w.xPSL = sl; 
      w.xPST = st; 
      if(w.xSEL)w.xSEL(); 
      }
   }
function xEvent(evt) {
   var e = evt || window.event; 
   if(!e)return; 
   if(e.type)this.type = e.type; 
   if(e.target)this.target = e.target; 
   else if(e.srcElement)this.target = e.srcElement; 
   if(e.relatedTarget)this.relatedTarget = e.relatedTarget; 
   else if(e.type == 'mouseover' && e.fromElement)this.relatedTarget = e.fromElement; 
   else if(e.type == 'mouseout')this.relatedTarget = e.toElement; 
   if(xDef(e.pageX, e.pageY)) {
      this.pageX = e.pageX; 
      this.pageY = e.pageY; 
      }
   else if(xDef(e.clientX, e.clientY)) {
      this.pageX = e.clientX + xScrollLeft(); 
      this.pageY = e.clientY + xScrollTop(); 
      }
   if(xDef(e.offsetX, e.offsetY)) {
      this.offsetX = e.offsetX; 
      this.offsetY = e.offsetY; 
      }
   else if(xDef(e.layerX, e.layerY)) {
      this.offsetX = e.layerX; 
      this.offsetY = e.layerY; 
      }
   else {
      this.offsetX = this.pageX - xPageX(this.target); 
      this.offsetY = this.pageY - xPageY(this.target); 
      }
   this.keyCode = e.keyCode || e.which || 0; 
   this.shiftKey = e.shiftKey; 
   this.ctrlKey = e.ctrlKey; 
   this.altKey = e.altKey; 
   }
xLibrary = {
   version : '4.06', license : 'GNU LGPL', url : 'http://cross-browser.com/'}
; 
function xPreventDefault(e) {
   if(e && e.preventDefault)e.preventDefault(); 
   else if(window.event)window.event.returnValue = false; 
   }
function xRemoveEventListener(e, eT, eL, cap) {
   if(!(e = xGetElementById(e)))return; 
   eT = eT.toLowerCase(); 
   if(e == window) {
      if(eT == 'resize' && e.xREL) {
         e.xREL = null; 
         return; 
         }
      if(eT == 'scroll' && e.xSEL) {
         e.xSEL = null; 
         return; 
         }
      }
   if(e.removeEventListener)e.removeEventListener(eT, eL, cap); 
   else if(e.detachEvent)e.detachEvent('on' + eT, eL); 
   else e['on' + eT] = null; 
   }
function xStopPropagation(evt) {
   if(evt && evt.stopPropagation)evt.stopPropagation(); 
   else if(window.event)window.event.cancelBubble = true; 
   }
function OnDragStart(ele, mx, my) {
   xZIndex(ele, highZ++); 
   ele.totalMX = 0; 
   ele.totalMY = 0; 
   _xDrgMgr.ele = true; 
   }
function OnDrag(ele, mdx, mdy) {
   xMoveTo(ele, xLeft(ele) + mdx, xTop(ele) + mdy); 
   ele.totalMX += mdx; 
   ele.totalMY += mdy; 
   }
/* setdrag element */
function SetupDragElement(eleName, onEnd) 
{
   var ele = xGetElementById(eleName); 
   xEnableDrag(ele, OnDragStart, OnDrag, onEnd); 
   xShow(ele); 
   return ele; 
}

//dragElement
if (window.g_allBoxItems == null)
{
	var g_allBoxItems = new Array(); 
}

function GetBoxItem(boxId)
{
  
    var boxItem = null;   
    for( var i = 0; i < g_allBoxItems.length ; i++) 
    {
        if(g_allBoxItems[i].BoxId == boxId) 
        {
            boxItem = g_allBoxItems[i];                 
            break;
        } 
    }
    
    return boxItem;
}

function AddBoxItem(boxItem)
{
	if (boxItem)
	{
		RemoveBoxItemById(boxItem.BoxId);
		g_allBoxItems.push(boxItem);
	}
}

function RemoveBoxItem(boxItem)
{
	if (boxItem)
		RemoveBoxItemById(boxItem.BoxId);
}

function RemoveBoxItemById(boxId)
{	
	for (var i=0;i<g_allBoxItems.length;i++)
	{
		if (g_allBoxItems[i].BoxId == boxId)
		{
			g_allBoxItems.splice(i,1);
			break;
		}
	}
}


function BoxProperty(boxId, visible, left, top, originalLeft, originalTop,trackerId, right, originalRight, anchorStyle)  
{
   this.BoxId = boxId; 
   this.visible = visible; 
   this.left = left; 
   this.top = top; 
   this.originalLeft = originalLeft;
   this.originalTop = originalTop;
   this.right = right;
   this.originalRight = originalRight;
   this.anchorStyle = anchorStyle;
   this.trackerId = trackerId;
   //represents whether the values are set from cookie cache.
   this.isCachedValue = false;
   this.PersistLocation = function()
   {
		if (this.trackerId == null)
		{
			this.trackerId = this.BoxId + "_Relayout";
		}
		try
		{
			document.getElementById(this.trackerId).value = this.left + '|' + this.top; 
		}
		catch (e)
		{}
	}
   
}
function SetupHeaderDrag(outerDivID, headerName, onEnd, originalLeft, originalTop, trackerId, originalRight) 
{
	var ele = xGetElementById(outerDivID); 
	
	if(ele != null) 
	{
	    var anchorStyle = ele.anchorStyle;
	    if(anchorStyle == null || anchorStyle == "")
	    {
	        anchorStyle = "LEFT";
	    }	    	    
		var boxEle = GetBoxItem(outerDivID); 
		
		if (boxEle != null) 
		{
			//set current tracker id always.
			boxEle.trackerId = trackerId;			
			
			if(anchorStyle == "RIGHT")
			{
			    ele.style.left = boxEle.right;
			}
			else
			{
			    ele.style.left = boxEle.left;
			}
			ele.style.top = boxEle.top;			
			 
			if(boxEle.visible != null) 
			{
				ele.style.display = boxEle.visible; 
			}
			
			var relayout = NgGetElementById(ele.id + '_Relayout'); 

			if(relayout && relayout.value == 'True') 
			{			
			    boxEle.originalRight = originalRight;
				boxEle.originalLeft = originalLeft;
				boxEle.originalTop = originalTop;
			}			
			
			//persist current position to hidden element
			boxEle.PersistLocation();
		}
		else 
		{
			var boxProp = new BoxProperty(ele.id, ele.style.display, ele.style.left, ele.style.top, originalLeft, originalTop, trackerId, ele.style.right, originalRight, anchorStyle);
			boxProp.PersistLocation();
			AddBoxItem(boxProp); 
		}
		
		xEnableDrag(headerName, OnHeaderDragStart, OnHeaderDrag, onEnd, outerDivID); 
	}
}


function OnHeaderDragStart(ele, mx, my)
{
 xZIndex(ele.parent, highZ++);
}
function OnHeaderDrag(ele, mdx, mdy)
{    
    var e= xGetElementById(ele.parent); 
    var anchorStyle = e.anchorStyle;    
    if(anchorStyle == "RIGHT")
        xMoveToRight(ele.parent, xRight(ele.parent) - mdx, xTop(ele.parent) + mdy);
    else
        xMoveTo(ele.parent, xLeft(ele.parent) + mdx, xTop(ele.parent) + mdy);
}

function endBoxdrag(ele, x, y) 
{ 	    
    var element = xGetElementById(ele.parent);    
    if (element)
    {         
        var boxEle = GetBoxItem(element.id);
        if(boxEle)
        { 
            boxEle.visible = element.style.display; 
            boxEle.left = element.style.left; 
            boxEle.top = element.style.top;
            boxEle.right = element.style.right; 
            boxEle.PersistLocation();
        }          
        else
        {  
			try
			{
				var boxProp = new BoxProperty(element.id, element.style.display, element.style.left, element.style.top, null, null, null,element.style.right, null, element.anchorStyle); 
				boxProp.PersistLocation();
				AddBoxItem(boxProp); 
			} 
			catch(e){}
        }
    }
    
    //bug fix 9697
    try {
        // Patch:  Call overviewmap update only if moving overview map
        if (element.id.indexOf('BoxOverviewMap') > 1 && g_overviewMapMode) {            
            var mapCtrlId = null;
            getOverviewMap(mapCtrlId);
        }
    }
    catch (e)
    {
    }
  
}

function NgGetElementById(e)
{
	return xGetElementById(e);
}

function ToggleLyrVisibility(eleId)
{
 var lyr = NgGetElementById(eleId);
 var isVisible = false;
  
     if (lyr != null && lyr.style != null)
     { 
        if (lyr.style.display == 'none')
        {   
           //if lyr is TR and not IE, then table-row, else block
           if (!xIE4Up && lyr.tagName == "TR")
           {    
            lyr.style.display = 'table-row';
           }
           else
           {
            lyr.style.display = 'block';
           }    
           isVisible = true;        
        }
        else
        {
            lyr.style.display = 'none';
            isVisible = false;
         }
     } 
 
 return isVisible;
}


function ShowLayer(elementID, btnShow,btnHide )
{ 
 
	if(btnShow!=null)
	{
        var ele = NgGetElementById(btnShow);
        if (ele)
            style.display = 'block';
    }
	//Hide btn
	if(btnHide!=null)
	{
        var ele = NgGetElementById(btnHide);
        if (ele)
	        style.display = 'none';
    }
	 
	 var ele = NgGetElementById(elementID);
	 if (ele)
        ele.style.display = 'block';
     xZIndex(ele, highZ++); 
     // status of border control is saved in hidden variable.used in case of postback.   
     var hiddenele =NgGetElementById(elementID + '_SaveBorderStyle');
    if(hiddenele)
    {

       hiddenele.value = 'block';
    }
    var boxEle = GetBoxItem(elementID);
    if(boxEle)
    {         
      boxEle.visible = "block"; 
          
    }
 
    }


//-------------------------
function HideLayer(elementID, btnShow, btnHide) {

    if (btnShow != null) {
        var ele = NgGetElementById(btnShow);
        if (ele)
            style.display = 'none';
    }
    //Hide btn
    if (btnHide != null) {
        var ele = NgGetElementById(btnHide);
        if (ele)
            style.display = 'block';
    }
    var ele = NgGetElementById(elementID);
    if (ele)
        ele.style.display = 'none';

    // status of border control is saved in hidden variable.used in case of postback.   
    var hiddenele = NgGetElementById(elementID + '_SaveBorderStyle');
    if (hiddenele) {
        hiddenele.value = 'none';
    }    
    var boxEle = GetBoxItem(elementID);
    if (boxEle) {
        boxEle.visible = "none";
    }
}

function SetDisplayStyle(elementID,styleHide)
{
	var boxEle = GetBoxItem(elementID);
	var ele = NgGetElementById(elementID);    

	if(ele)
	{
		if(styleHide !=null && styleHide !="")
		{
			ele.style.display=styleHide;
		}
		else
		{
			ele.style.display = 'none';
		}
	}
}

	
//-------------------------
function toggleLayer(elementID){
   
 if(!sessionExpired)
    {
	
	    if(NgGetElementById(elementID).style.display=="" ||  NgGetElementById(elementID).style.display=="block"  )
	      {
	       HideLayer(elementID,null,null); 
	      }
	    else
	     {
	       ShowLayer(elementID,null,null); 
         }	
     }
     else
     {
         HandleSessionExpired();
     }
 return;
}

function SetZindex(ele)
{
  
   xZIndex(ele, highZ++); 

}

var m_boxSep = "~";
var m_boxPropSep = ",";
function WriteCookies()
{  
    try
  {
    var str=m_boxSep;   // intial value is assigned to script otherwise it will take undefined
    if(g_allBoxItems != null && g_allBoxItems.length >0)
    {
        for( var i = 0; i < g_allBoxItems.length ; i++) 
        {     
             
            var box = g_allBoxItems[i];
            
            str = str + box.BoxId + m_boxPropSep + box.left + m_boxPropSep + box.top + m_boxPropSep + box.right + m_boxPropSep + box.anchorStyle +  m_boxSep;            
        }
    }
    str = str + ";";
    var Today = new Date();  
    var year = Today.getFullYear();  // year is updated .. get current date and year..set cookie to valid till one year
    year = year + 0001;
    Today.setYear(year);
   
    document.cookie  = _Currenttheme + "=" + str + "expires=" + Today.toGMTString() + ';';
  }
 catch(e){}
   
}

function ReadCookies() 
{
	try
	{		
		if(document.cookie != null && _Currenttheme != null) 
		{   
			//document.cookie = Surf=b1,1,1~b2,2,2;Classic=b1,1,1~b2,2,2;expires=Today
			// split cookies into array
			var split = document.cookie.split(';'); 
			for(var m = 0; m < split.length; m++) 
			{
				var kvPair = split[m].split('=');
				var key = kvPair[0];
				if(key.substring(0, 1) == ' ') 
				{
					key = key.substring(1, key.length); 
				}

				if(key.toLowerCase() == _Currenttheme.toLowerCase()) 
				{
					var ca = kvPair[1].split(m_boxSep);    //ca -> Container Array
					for(var i = 0; i < ca.length; i++) 
					{
						var boxPropArray = ca[i].split(m_boxPropSep); 
						// split properties of box such as left and right into boxPropArray
						var boxEle = false;
						if (boxPropArray != null && boxPropArray.length >= 3)
						{

                            var right = "", anchorStyle = "";
							for( var k = 0; k < g_allBoxItems.length ; k++) 
							{
								if(g_allBoxItems[k].BoxId == boxPropArray[0]) 
								{

									g_allBoxItems[k].BoxId = boxPropArray[0]; 
									g_allBoxItems[k].left = boxPropArray[1]; 
									g_allBoxItems[k].top = boxPropArray[2]; 
									if(boxPropArray.length >3)
									{
									    right=boxPropArray[3];
									    g_allBoxItems[k].right = boxPropArray[3]; 
									}
									if(boxPropArray.length > 4)
									{
									    anchorStyle = boxPropArray[4]; 
									    g_allBoxItems[k].anchorStyle = boxPropArray[4]; 
                                    }
									var ele = xGetElementById(boxPropArray[0]); 
									if(ele != null) 
									{
									    if(g_allBoxItems[k].anchorStyle == null || g_allBoxItems[k].anchorStyle == "" || g_allBoxItems[k].anchorStyle == "LEFT")
									    {
										    ele.style.left = boxPropArray[1]; 
										}
										else
										{
										    ele.style.right = boxPropArray[3]; 
										}
										ele.style.top = boxPropArray[2]; 
									}
									boxEle = true; 
									g_allBoxItems[k].PersistLocation();
									break;
								}
							}
							if( boxEle == false) 
							{								
								var boxProp = new BoxProperty(boxPropArray[0], null, boxPropArray[1], boxPropArray[2],null,null, null, boxPropArray[3], null, boxPropArray[4]); 
								boxProp.isCachedValue = true;								
								boxProp.PersistLocation();
								
								AddBoxItem(boxProp); 
							}
						}
					}
					
					//update server
					if (PageMethods && PageMethods.UpdateFloatingContainersFromCookies)
					{
						var ustring = "";
						for (var z=0;z<g_allBoxItems.length;z++)
						{
							if (g_allBoxItems[z].trackerId)
							{
								ustring += g_allBoxItems[z].trackerId + "," + g_allBoxItems[z].left + "|" + g_allBoxItems[z].top + "|" + g_allBoxItems[z].right + "|" + g_allBoxItems[z].anchorStyle + "~";
							}
						}
						
						PageMethods && PageMethods.UpdateFloatingContainersFromCookies(ustring);
					}
					
					break;
				}
			}
		}
	}
	catch(e){}
}



function Relayout() 
{
	if (g_allBoxItems == null)
		return;
			
	for( var i = 0; i < g_allBoxItems.length ; i++) 
	{
		try 
		{
			var element = NgGetElementById(g_allBoxItems[i].BoxId); 

			if(element) 
			{
			    if(g_allBoxItems[i].anchorStyle == "" || g_allBoxItems[i].anchorStyle == "LEFT" || g_allBoxItems[i].anchorStyle == null)
			    {
				    if(g_allBoxItems[i].originalLeft != null) 
				    {
					    element.style.left = g_allBoxItems[i].originalLeft + "px";					
				    }
                }
                else
                {
                    if(g_allBoxItems[i].originalRight != null) 
				    {
					    element.style.right = g_allBoxItems[i].originalRight + "px";					
				    }
                }				    
				if(g_allBoxItems[i].originalTop != null) 
				{
					element.style.top = g_allBoxItems[i].originalTop + "px";					
				}
			}
		}
		catch(e) 
		{ }
	}
	
}

