
// UDMv4.45 //
///////////////////////////////////////////////////////////////////
//                                                               //
//  ULTIMATE DROP DOWN MENU Version 4.45 by Brothercake          //
//  http://www.udm4.com/                                         //
//                                                               //
//  This script may not be used or distributed without license   //
//                                                               //
///////////////////////////////////////////////////////////////////
function umKM() {
  um.kbm = this;
  um.ha = 0;
  um.fkd = 0;
  um.tf = null;
  um.mt = [um.e[10], um.e[11]];
  if (um.kb && um.m.cookie) {
    var f = [um.gd('hotkeySelector'), um.gd('modifierSelector')];
    var c = um.m.cookie.split(';');
    var n = c.length;
    i = 0;
    do {
      if (/udmKeyPrefs/.test(c[i])) {
        var a = c[i].split('=')[1].split(',');
        j = 0;
        do {
          um.keys[j + 4] = a[j];
          if (f[j]) {
            var z = f[j].options;
            var l = z.length;
            var k = 0;
            do {
              if (z[k].value == a[j]) {
                z[k].selected = 1;
                break;
              }
              k++;
            } while ( k < l );
          }
          j++;
        } while ( j < 2 );
        break;
      }
      i++;
    } while ( i < n );
  }
};
um.keyPrefs = function() {
  if (! (um.kb && um.d)) {
    alert('Sorry, this feature is not supported in your browser.');
    return false;
  }
  var d = new Date();
  d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
  um.m.cookie = 'udmKeyPrefs=test; expires=' + d.toGMTString() + '; path=/';
  if (!um.m.cookie) {
    alert('Sorry, your browser didn\'t accept the cookie.\nWe cannot save your settings.');
  } else {
    var f = [um.gd('hotkeySelector'), um.gd('modifierSelector')];
    i = 0;
    do {
      um.keys[i + 4] = f[i].options[f[i].options.selectedIndex].value;
      i++;
    } while ( i < 2 );
    um.m.cookie = 'udmKeyPrefs=' + um.keys[4] + ',' + um.keys[5] + '; expires=' + d.toGMTString() + '; path=/';
    alert('Save successful!');
  }
  return true;
};
umKM.prototype.bdh = function() {
  if (typeof document.addEventListener != um.un) {
    if (um.s) {
      var self = this;
      document.addEventListener('keydown',
      function(e) {
        if (um.fkd) {
          return;
        }
        um.fkd = 1;
        self.kha(e);
      },
      0);
      document.addEventListener('keyup',
      function() {
        um.fkd = 0;
      },
      0);
    } else {
      document.addEventListener('keypress', this.kha, 0);
    }
  } else {
    document.attachEvent('onkeydown', this.kha);
  }
};
umKM.prototype.bfh = function() {
  document.addEventListener('mouseover',
  function(e) {
    if (um.ha && um.kdf && !umTree.contains(e.target)) {
      um.cm(e);
      um.ha = 0;
    }
  },
  0);
};
umKM.prototype.bth = function(l) {
  var a = um.gc(l);
  var c = um.es(a.className);
  if (/nohref/i.test(c)) {
    um.kbm.cdl(a);
  }
  if (um.ie) {
    return false;
  }
  a.addEventListener('focus',
  function(e) {
    if ((!um.o7 && !um.lf) || (um.o7 && um.kdf)) {
      um.bub = 0;
      l.over(1, e.target);
    }
  },
  0);
  return true;
};
umKM.prototype.cu = function(m, l, t) {
  var v = [null, null, null];
  if ((m != null && m.style.visibility != 'visible') || m == null) {
    if (l.previousSibling) {
      v[0] = l.previousSibling;
    }
    if (l.nextSibling) {
      v[1] = l.nextSibling;
    }
  }
  m = (um.gu(um.gp(t)).length > 0) ? um.gu(um.gp(t))[0] : null;
  if (m != null && typeof m.style != um.un && m.style.visibility == 'visible') {
    var r = m.getElementsByTagName('li');
    var n = r.length;
    j = 0;
    do {
      v[v.length] = r[j++];
    } while ( j < n );
  }
  if (um.tf != null) {
    r = um.gp(um.tf).parentNode.lastChild;
    if (um.gp(um.tf) == r) {
      um.n.lr(um.gc(r), 0);
    }
  }
  n = v.length;
  i = 0;
  do {
    if (v[i] != null) {
      if (um.gu(v[i]).length > 0) {
        um.n.cp(um.gu(v[i])[0], v[i]);
      } else {
        um.n.cp(null, v[i]);
      }
    }
    i++;
  } while ( i < n );
};
umKM.prototype.cdl = function(l) {
  l.href = um.jv;
  l.style.cursor = 'default';
};
umKM.prototype.mkc = function(k) {
  for (i = 1; i < 4; i += 2) {
    if (k == um.keys[i]) {
      k = um.keys[4 - i];
      break;
    }
  }
  return k;
};
umKM.prototype.kha = function(e) {
  if (!e) {
    e = window.event;
  }
  k = e.keyCode;
  if (!um.kb && k != 9) {
    return false;
  }
  if (k == um.keys[6]) {
    um.ha = 1;
  }
  if ((k == um.keys[4] && ((um.keys[5] == 'none' && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) || e[um.keys[5]])) || (k == um.keys[6])) {
    um.e[10] = 1;
    um.e[11] = 1;
    if (!um.ha) {
      um.cm(e);
      um.fl.focus();
      um.ha = 1;
      um.ap('080', um.tr);
    } else {
      if (um.sp) {
        um.sapi.voice.Speak(um.vocab[8], 2);
      }
      um.cm(e);
      if (um.wie50 && um.e[13] == 'yes') {
        um.n.ts('visible');
      }
      eval(um.keys[7]).focus();
      um.e[10] = um.mt[0];
      um.e[11] = um.mt[1];
      um.ha = 0;
      um.ap('090', um.tr);
    }
  }
  var a = (e.target) ? e.target: e.srcElement;
  if (um.tr.contains(a)) {
    um.e[10] = 1;
    um.e[11] = 1;
    var c = um.es(um.gp(a).parentNode.className);
    if ((um.h && c == 'udm') || typeof um.hmx == 'boolean') {
      if (um.nm && (k == um.keys[0] || k == um.keys[2])) {
        return false;
      }
      i = 0;
      do {
        if (k == um.keys[i]) {
          k = um.keys[um.rtl ? (i - 1) : (3 - i)];
          break;
        }
        i++;
      } while ( i < 4 );
    } else {
      if (um.nm && (k == um.keys[1] || k == um.keys[3])) {
        return false;
      }
      var t = um.gp(a).parentNode;
      if (um.a || um.e[12] == 'yes') {
        c = um.es(t.className);
        if (um.gu(um.gp(a))[0]) {
          um.xm = um.gu(um.gp(a))[0];
          if (um.getRealPosition(um.xm, 'x') < um.getRealPosition(t, 'x')) {
            k = um.kbm.mkc(k);
          }
        } else if (c != 'udm') {
          um.pm = um.gp(t).parentNode;
          if (um.getRealPosition(um.pm, 'x') > um.getRealPosition(t, 'x')) {
            k = um.kbm.mkc(k);
          }
        }
      }
    }
    um.tf = null;
    var l = umTree.getElementsByTagName('li');
    var n = l.length;
    switch (k) {
    case 9:
      i = 0;
      do {
        if (l[i] == um.gp(a)) {
          um.tf = a;
          if (e.shiftKey) {
            var p = (i == 0) ? -1 : i - 1;
          } else {
            p = ((i + 1) == n) ? -1 : i + 1;
          }
          if (p <= -1) {
            setTimeout('um.closeAllMenus()', 55);
          }
          break;
        }
        i++;
      } while ( i < n );
      break;
    case um.keys[0]:
      if (um.gp(a).previousSibling) {
        var s = um.gp(a).previousSibling;
        if (s) {
          t = um.gc(s);
          var f = (typeof t != um.un) ? t: null;
          if (f) {
            f.focus();
          }
        }
      } else if (um.gp(a).parentNode.childNodes.length > 1) {
        um.n.cp(um.gu(um.gp(a))[0], um.gp(a));
        t = um.gc(um.gp(a).parentNode.lastChild);
        f = (um.gp(a).parentNode.className != 'udm');
        if (f && um.h && um.gp(um.gp(a).parentNode).parentNode.className == 'udm') {
          t = um.gc(um.gp(um.gp(a).parentNode));
        }
        t.focus();
      }
      um.ap('100', a);
      if (um.ie) {
        return false;
      } else if (e) {
        e.preventDefault();
      }
      break;
    case um.keys[1]:
      if (um.gu(um.gp(a))[0]) {
        t = um.gu(um.gp(a))[0];
        f = (t) ? um.gc(t) : null;
        if (f) {
          f.focus();
        }
      }
      um.ap('101', a);
      if (um.ie) {
        return false;
      } else if (e) {
        e.preventDefault();
      }
      break;
    case um.keys[2]:
      if (um.gp(a).nextSibling) {
        s = um.gp(a).nextSibling;
        if (s) {
          t = um.gc(s);
          f = (typeof t != um.un) ? t: null;
          if (f) {
            f.focus();
          }
        }
      } else if (um.gp(a).parentNode.childNodes.length > 1) {
        um.n.cp(um.gu(um.gp(a))[0], um.gp(a));
        um.gc(um.gp(a).parentNode.firstChild).focus();
      }
      um.ap('102', a);
      if (um.ie) {
        return false;
      } else if (e) {
        e.preventDefault();
      }
      break;
    case um.keys[3]:
      if (um.gp(a).parentNode.parentNode) {
        t = um.gp(a).parentNode;
        f = (t.className == 'udm') ? null: um.gc(um.gp(t));
        if (f && (typeof f.focus == 'function' || typeof f.focus == 'object')) {
          f.focus();
        }
      }
      um.ap('103', a);
      if (um.ie) {
        return false;
      } else if (e) {
        e.preventDefault();
      }
      break;
    }
  }
  return true;
};
umKM.prototype.cws = function(n) {
  if (um.mie) {
    return false;
  }
  for (var x = 0; x < n.childNodes.length; x++) {
    var k = n.childNodes[x];
    if ((k.nodeType == 3) && (!/\S/.test(k.nodeValue))) {
      n.removeChild(n.childNodes[x]);
      x--;
    }
    if (k.nodeType == 1) {
      this.cws(k);
    }
  }
  return n;
};
