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 xBackground(e, c, i) {
   if(!(e = xGetElementById(e))) return ''; 
   var bg = ''; 
   if(e.style) {
      if(xStr(c)) {
         if(!xOp6Dn) e.style.backgroundColor = c; 
         else e.style.background = c; 
      }
      if(xStr(i)) e.style.backgroundImage = (i != '') ? 'url(' + i + ')' : null; 
      if(!xOp6Dn) bg = e.style.backgroundColor; 
      else bg = e.style.background; 
   }
   return bg; 
}

function xClientHeight() {
   var h = 0; 
   if(xOp6Dn) h = window.innerHeight; 
   else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight)h = document.documentElement.clientHeight; 
   else if(document.body && document.body.clientHeight)h = document.body.clientHeight; 
   else if(xDef(window.innerWidth, window.innerHeight, document.width)) {
      h = window.innerHeight; 
      if(document.width > window.innerWidth) h -= 16; 
   }
   return h; 
}

function xClientWidth() {
   var w = 0; 
   if(xOp6Dn) w = window.innerWidth; 
   else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth)w = document.documentElement.clientWidth; 
   else if(document.body && document.body.clientWidth)w = document.body.clientWidth; 
   else if(xDef(window.innerWidth, window.innerHeight, document.height)) {
      w = window.innerWidth; 
      if(document.height > window.innerHeight) w -= 16; 
      }
   return w; 
}

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))) return null; 
   if(e.style && xDef(e.style.display)) {
      if (xStr(s)) e.style.display = s; 
      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 a = sProp.split('-'); 
      sProp = a[0]; 
      for (var 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') return e; 
   if(document.getElementById) e = document.getElementById(e); 
   else if(document.all) e = document.all[e]; 
   else e = null; 
   return e; 
   }
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) {
   if(!(e = xGetElementById(e))) return 0; 
   var css = xDef(e.style); 
   if (css && xStr(e.style.left)) {
      if(xNum(iX)) e.style.left = iX + 'px'; 
      else {
         iX = parseInt(e.style.left); 
         if(isNaN(iX)) iX = 0; 
         }
      }
   else if(css && xDef(e.style.pixelLeft)) {
      if(xNum(iX)) e.style.pixelLeft = iX; 
      else iX = e.style.pixelLeft; 
      }
   return iX; 
   }
function xMoveTo(e, x, y) {
   xLeft(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 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 = 0; 
         }
      }
   else if(css && xDef(e.style.pixelTop)) {
      if(xNum(iY)) e.style.pixelTop = iY; 
      else iY = e.style.pixelTop; 
      }
   return iY; 
   }
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; 
}
