// UDMv4.5 //
///////////////////////////////////////////////////////////////////
//                                                               //
//  ULTIMATE DROP DOWN MENU Version 4.5 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;
};
