
mbSys = {

  IE: (navigator.userAgent.indexOf('MSIE 6') != -1)
       || (navigator.userAgent.indexOf('MSIE 7') != -1),

init: function() {
  var th = mbSys;

  mbSys.previewStyleFix();
  mbSys.ujClassInit();

  mbSys.formInit();
},

classes: function(element) {
  var th = mbSys;
  var s;

  if (th.IE) return th.classesIE(element);

  if (s = element.getAttribute('class'))
    return s;
  else
    return '';
},

classesSet: function(element, value) {
  var th = mbSys;
  var s;

  if (th.IE) return th.classesIESet(element, value);

  element.setAttribute('class', value)
},

classesIE: function(element) {
  var th = mbSys;
  var s;

  if (s = element.getAttribute('className'))
    return s;
  else
    return '';
},

classesIESet: function(element, value) {
  var th = mbSys;
  var s;

  element.setAttribute('className', value)
},

classOf: function(element, aclass) {
  var th = mbSys;

  return (' ' + th.classes(element) + ' ').indexOf(' ' + aclass + ' ') != -1
},

classAction: {
  check: 0,
  include: 1,
  exclude: 2,
  toggle:  3
},

classHandle: function(element, aclass, action) {
  var th = mbSys;
  var s;
  var i, iLen, iPos;
  var bOfClass, aClasses;

  bOfClass = false;
  s = th.classes(element);
  aClasses = s.split(' ');
  iPos = -1;

  iLen = aClasses.length;
  for (i = 0; iLen > i; i++) {
    if (aClasses[i] == aclass) {
      iPos = i;
      break;
    }
  }
  if (iPos != -1)
    bOfClass = true;
  else
    iPos = aClasses.length;

  if (bOfClass) {
    if ((action == th.classAction.exclude) || (action == th.classAction.toggle)) {
      aClasses.splice(iPos, 1);
      th.classesSet(element, aClasses.join(' '));
    }
  }
  else {
    if ((action == th.classAction.include) || (action == th.classAction.toggle)) {
      aClasses[iPos] = aclass;
      th.classesSet(element, aClasses.join(' '));
    }
  };
  return bOfClass;
},

elementsByAttr: function(element, attr, value, tag, firstOnly) {
  var th = mbSys;
  var i;
  var nls, elm, iLen;
  var ret;

  if (firstOnly)
    ret = null;
  else
    ret = new Array();
  if (! tag) tag = '*';

  nls = document.getElementsByTagName(tag);

  iLen = nls.length;
  for (i = 0; iLen > i; i++) {
    elm = nls[i]
    if (elm.getAttribute(attr) == value) {
      if (firstOnly) {
        ret = elm;
        break;
      }
      else {
        ret.push(elm)
      }
    }
  }
  return ret;
},

elementsByClass: function(element, aclass, tag, firstOnly) {
  var th = mbSys;
  var i, s
  var nls, elm, iLen, reg
  var ret;

  if (firstOnly)
    ret = null;
  else
    ret = new Array()
  if (tag == null) tag = '*';

  nls = document.getElementsByTagName(tag);
  reg = new RegExp('(^|\\s)' + aclass + '(\\s|$)', 'i');

  iLen = nls.length;
  for (i = 0; iLen > i; i++) {
    elm = nls[i];
    if (th.classes(elm).match(reg)) {
      if (firstOnly) {
        ret = elm;
        break;
      }
      else {
        ret.push(elm)
      }
    }
  }
  return ret;
},

eventSet: function(element, eventName, eventHandler, selfObject) {
  var th = mbSys;

  element._self = selfObject;
  element[eventName] = eventHandler
},

formInit: function() {
  var th = mbSys;
  var i, iLen;
  var nls, elm;
  var reg;

  if (elm = th.elementsByAttr(document, 'name', 'mb_js', 'input', true)) {
    elm.setAttribute('value', 1);
  }

  elm = th.elementsByClass(document, 'Focus', null, true);
  if (! elm) {
    return;
  }
  else if (elm.nodeName.toLowerCase() != 'form') {
    elm.focus();
  }
  else {
    nls = th.elementsByClass(elm, '*')
    iLen = nls.length;
    reg = /(^|\\s)(input|textarea|select)(\\s|$)/i;
    for (i = 0; iLen > i; i++) {
      elm = nls[i];
      if (elm.nodeName.match(reg) && (elm.getAttribute('type') != 'hidden')) {
        elm.focus();
        break;
      }
    }
  }
},

layerAction: {
  expand:   1,
  collapse: 2,
  toggle:   3
},

layerHandle: function(element, action) {
  var th = mbSys;

  switch(action) {
    case th.layerAction.expand:
      th.classHandle(element, 'Expanded', th.classAction.include);
      th.classHandle(element, 'Collapsed', th.classAction.exclude);
      break;
    case th.layerAction.collapse:
      th.classHandle(element, 'Collapsed', th.classAction.include);
      th.classHandle(element, 'Expanded', th.classAction.exclude);
      break;
    case th.layerAction.toggle:
      if (th.classOf(element, 'Expanded'))
        th.layerHandle(element, th.layerAction.collapse);
      else
        th.layerHandle(element, th.layerAction.expand);
      break;
    default:
  }
},

layerChangeOldElement: undefined,

layerChange: function(element) {
  var th = mbSys;

  if (element === th.layerChangeOldElement) return;

  th.layerHandle(element, th.layerAction.expand)
  if (typeof th.layerChangeOldElement == 'object')
    th.layerHandle(th.layerChangeOldElement, th.layerAction.collapse);
  th.layerChangeOldElement = element;
},

onloadAdd: function(awindow, newOnload) {
  var th = mbSys;
  var fnOldOnload;

  if ((! awindow) || (! newOnload)) {
    throw 'onloadinclude error';
  }

  fnOldOnload = awindow.onload;
  if (typeof awindow.onload == 'function') {
    awindow.onload = function() {
      fnOldOnload();
      newOnload();
    }
  }
  else {
    awindow.onload = newOnload;
  }
},

previewStyleFix: function() {
  var th = mbSys;
  var i, iLen;
  var s;
  var lst, lnk;

  if (location.search.indexOf('print') == -1) return;

  iLen = (lst = document.links).length;
  for (i = 0; iLen > i; i++) {
    s = lst[i].href;
    if ((s.indexOf('#') == -1) && (s.indexOf('mailto:') == -1)) {
      if (s.indexOf('?') == -1)
        s += '?print';
      else
        s += '&print'
      lst[i].href = s;
    }
  }

  iLen = (lst = document.forms).length;
  for (i = 0; iLen > i; i++) {
    s = lst[i].action;
    if (s.indexOf('#') == -1) {
      if (s.indexOf('?') == -1)
        s += '?print=1';
      else
        s += '&print=1';
      lst[i].action = s;
    }
  }
},

ujClassInitList: {},

ujClassInitAdd: function(aclass, tag, initHandler) {
  var th = mbSys;
  var sName, fn;

  sName = aclass + '-' + tag;
  fn = th.ujClassInitList[sName];
  if (fn) {
    th.ujClassInitList[sName] = function(element, aclass, atag) {
      fn(element, aclass, atag);
      initHandler(element, aclass, atag);
    }
  }
  else {
    th.ujClassInitList[sName] = initHandler;
  }
},

ujClassInit: function() {
  var th = mbSys;
  var i, j, iLen, jLen;
  var nls, elm;
  var sTag, aClasses, sClass, fn;

  iLen = (nls = document.getElementsByTagName('*')).length;
  for (i = 0; iLen > i; i++) {
    elm = nls[i];
    sTag = elm.nodeName.toLowerCase();
    jLen = (aClasses = th.classes(elm).split(' ')).push('');
    for (j = 0; jLen > j; j++) {
      sClass = aClasses[j];
      if (fn = th.ujClassInitList[sClass + '-' + sTag]) {
        fn(elm, sClass, sTag);
      }
      if (fn = th.ujClassInitList[sClass + '-']) {
        fn(elm, sClass, sTag);
      }
    }
  }
}

}  // mbSys


mbJW = {

collapsedInit: function(element, aclass, tag) {
  var th = mbSys;

  mbSys.classHandle(element, 'JWC', mbSys.classAction.exclude);
  mbSys.layerHandle(element, mbSys.layerAction.collapse);
},

expandedInit: function(element, aclass, tag) {
  var th = mbSys;

  mbSys.classHandle(element, 'JWE', mbSys.classAction.exclude);
  mbSys.layerHandle(element, mbSys.layerAction.expand);
},

helpInit: function(element, aclass, tag) {
  var JWAttr = 'title';
  var th = mbJW;
  var s, s1;

  reg = /\s*\[(.*)\]/
  s = element.getAttribute(JWAttr);
  element.setAttribute(JWAttr, s.replace(reg, ''));
  element.onclick = function() {th.helpLoad(element, s.match(reg)[1]); return(false);}
},

helpLoad: function(element, code) {
  var th = mbJW;
  var a;
  var s;

  a = code.split(';');
  s = '/jwdef.asp' + location.search + '&md=help&bt=' + a[0];
  th.load(s, true, function(text, status) {
    if (status) th.helpShow(element, text, a[1], a[2]);
  });
},

helpShow: function(element, text, where, before) {
  var th = mbJW;
  var elm, elmWhere, elmBefore;

  if (where) {
    elmWhere = document.getElementById(where);
    if (before) elmBefore = document.getElementById(before);
  }
  else {
    elmWhere = element.parentNode.parentNode;
  }

  elm = document.createElement("div");
  mbSys.classHandle(elm, 'JWHelpContent', mbSys.classAction.include);
  if (elmBefore)
    elmWhere.insertBefore(elm, elmBefore);
  else
    elmWhere.appendChild(elm);
  mbSys.layerHandle(elmWhere, mbSys.layerAction.expand);
  elm.innerHTML = text;

  element.onclick = function() {
    mbSys.layerHandle(elmWhere, mbSys.layerAction.toggle); return(false);
  };
},

load: function(aurl, returnText, onXMLLoad) {
  var th = mbJW;
  var xmlHttp;

  xmlHttp = null;
  if (window.XMLHttpRequest) {  // code for all new browsers
    xmlHttp = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {  // code for IE5 and IE6
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (xmlHttp != null) {
    xmlHttp.onreadystatechange = function() {
      if (xmlHttp.readyState == 4) {  // 4 = complete
        onXMLLoad(returnText ? xmlHttp.responseText : xmlHttp.responseXML, xmlHttp.status == 200);
      }
    }
    xmlHttp.open("GET", aurl, true);
    xmlHttp.send(null);
  }
  else {
    alert("Your browser does not support XMLHTTP.");
  }

  return false;
}

}  // mbJW


function showLayer(element) {
  if ((typeof element != 'object') && !(element = document.getElementById(element))) return;

  if (typeof mbSys.layerChangeOldElement != 'object') mbSys.layerChangeOldElement = document.getElementById('1');
  mbSys.layerChange(element);
}

mbSys.onloadAdd(window, mbSys.init);
mbSys.ujClassInitAdd('JWC', '', mbJW.collapsedInit);
mbSys.ujClassInitAdd('JWE', '', mbJW.expandedInit);
mbSys.ujClassInitAdd('JWHelpLink', 'a', mbJW.helpInit);
