PortoszJsMenuCheckSign = document.createElement('DIV');
PortoszJsMenuCheckSign.className = 'check';
PortoszJsMenuCheckSign.appendChild(document.createTextNode(String.fromCharCode(215)));
PortoszJsMenuRadioSign = document.createElement('DIV');
PortoszJsMenuRadioSign.className = 'radio';
PortoszJsMenuRadioSign.appendChild(document.createTextNode(String.fromCharCode(248)));
PortoszJsMenuSubSign = document.createElement('DIV');
PortoszJsMenuSubSign.className = 'sub-arrow';
PortoszJsMenuSubSign.appendChild(document.createTextNode(String.fromCharCode(160)));
(function() {
	var navFamily = navigator.userAgent.toLowerCase();
	if (navFamily.indexOf('opera')!=-1) { 
		navigator.version = parseFloat( navFamily.substring(navFamily.indexOf('opera')+6,
			navFamily.length) );
		if (navigator.version >= 7.0) navFamily = 'Opera7';
		else navFamily = '';
	} else if (navFamily.indexOf('msie')!=-1) {
		navigator.version = parseFloat( navFamily.substring(navFamily.indexOf('msie')+5,
			navFamily.length) );
		if (navigator.version >= 6.0) navFamily = 'IE6';
		else navFamily = '';
	} else if (navFamily.indexOf('gecko')!=-1) {
		navigator.version = parseFloat( navFamily.substring(navFamily.indexOf('gecko')+6,
			navFamily.length) );
		if (navigator.version >= 20020823) navFamily = 'Gecko';
		else navFamily = '';
	} else {
		navFamily = '';
		navigator.version = 0;
	}
	
	navigator.family = navFamily;
})();
var PortoszJsMenuKeys = function() {};
PortoszJsMenuKeys.prototype = {
ALT_MASK:		1,
CONTROL_MASK:	2,
SHIFT_MASK:		4,
META_MASK:		8,
DOM_VK_CANCEL:	3,
DOM_VK_HELP:	6,
DOM_VK_BACK_SPACE:8,
DOM_VK_TAB:		9,
DOM_VK_CLEAR:	12,
DOM_VK_RETURN:	13,
DOM_VK_ENTER:	14,
DOM_VK_SHIFT:	16,
DOM_VK_CONTROL:17,
DOM_VK_ALT:		18,
DOM_VK_PAUSE:	19,
DOM_VK_CAPS_LOCK:20,
DOM_VK_ESCAPE:	27,
DOM_VK_SPACE:	32,
DOM_VK_PAGE_UP:33,
DOM_VK_PAGE_DOWN:34,
DOM_VK_END:		35,
DOM_VK_HOME:	36,
DOM_VK_LEFT:	37,
DOM_VK_UP:		38,
DOM_VK_RIGHT:	39,
DOM_VK_DOWN:	40,
DOM_VK_PRINTSCREEN:44,
DOM_VK_INSERT:	45,
DOM_VK_DELETE:	46,
DOM_VK_0:		48,
DOM_VK_1:		49,
DOM_VK_2:		50,
DOM_VK_3:		51,
DOM_VK_4:		52,
DOM_VK_5:		53,
DOM_VK_6:		54,
DOM_VK_7:		55,
DOM_VK_8:		56,
DOM_VK_9:		57,
DOM_VK_SEMICOLON:59,
DOM_VK_EQUALS:	61,
DOM_VK_A:		65,
DOM_VK_B:		66,
DOM_VK_C:		67,
DOM_VK_D:		68,
DOM_VK_E:		69,
DOM_VK_F:		70,
DOM_VK_G:		71,
DOM_VK_H:		72,
DOM_VK_I:		73,
DOM_VK_J:		74,
DOM_VK_K:		75,
DOM_VK_L:		76,
DOM_VK_M:		77,
DOM_VK_N:		78,
DOM_VK_O:		79,
DOM_VK_P:		80,
DOM_VK_Q:		81,
DOM_VK_R:		82,
DOM_VK_S:		83,
DOM_VK_T:		84,
DOM_VK_U:		85,
DOM_VK_V:		86,
DOM_VK_W:		87,
DOM_VK_X:		88,
DOM_VK_Y:		89,
DOM_VK_Z:		90,
DOM_VK_CONTEXT_MENU:93,
DOM_VK_NUMPAD0:	96,
DOM_VK_NUMPAD1:	97,
DOM_VK_NUMPAD2:	98,
DOM_VK_NUMPAD3:	99,
DOM_VK_NUMPAD4:	100,
DOM_VK_NUMPAD5:	101,
DOM_VK_NUMPAD6:	102,
DOM_VK_NUMPAD7:	103,
DOM_VK_NUMPAD8:	104,
DOM_VK_NUMPAD9:	105,
DOM_VK_MULTIPLY:106,
DOM_VK_ADD:		107,
DOM_VK_SEPARATOR:108,
DOM_VK_SUBTRACT:109,
DOM_VK_DECIMAL:	110,
DOM_VK_DIVIDE:	111,
DOM_VK_F1:		112,
DOM_VK_F2:		113,
DOM_VK_F3:		114,
DOM_VK_F4:		115,
DOM_VK_F5:		116,
DOM_VK_F6:		117,
DOM_VK_F7:		118,
DOM_VK_F8:		119,
DOM_VK_F9:		120,
DOM_VK_F10:		121,
DOM_VK_F11:		122,
DOM_VK_F12:		123,
DOM_VK_F13:		124,
DOM_VK_F14:		125,
DOM_VK_F15:		126,
DOM_VK_F16:		127,
DOM_VK_F17:		128,
DOM_VK_F18:		129,
DOM_VK_F19:		130,
DOM_VK_F20:		131,
DOM_VK_F21:		132,
DOM_VK_F22:		133,
DOM_VK_F23:		134,
DOM_VK_F24:		135,
DOM_VK_NUM_LOCK:144,
DOM_VK_SCROLL_LOCK:145,
DOM_VK_COMMA:	188,
DOM_VK_PERIOD:	190,
DOM_VK_SLASH:	191,
DOM_VK_BACK_QUOTE:192,
DOM_VK_OPEN_BRACKET:219,
DOM_VK_BACK_SLASH:220,
DOM_VK_CLOSE_BRACKET:221,
DOM_VK_QUOTE:	222,
DOM_VK_META:	224,
SCROLL_PAGE_UP:	-32768,
SCROLL_PAGE_DOWN:32768,

getKeyChar: function(iKeyCode,bShift) {
	if (iKeyCode >= this.DOM_VK_A && iKeyCode <= this.DOM_VK_Z) {
		if (!bShift) iKeyCode += 32;
		return String.fromCharCode(iKeyCode);
	} else if (iKeyCode >= this.DOM_VK_0 && iKeyCode <= this.DOM_VK_9) {
		if (!bShift) return String.fromCharCode(iKeyCode);
		else {
			var arChars = [')','!','@','#','$','%','^','&','*','('];
			return arChars[iKeyCode - this.DOM_VK_0];
		}
	} else if (bShift) switch (iKeyCode) {
		case this.DOM_VK_BACK_QUOTE: return '~';
		case this.DOM_VK_SUBTRACT: return '_';
		case this.DOM_VK_EQUALS: return '+';
		case this.DOM_VK_BACK_SLASH: return '|';
		case this.DOM_VK_OPEN_BRACKET: return '{';
		case this.DOM_VK_CLOSE_BRACKET: return '}';
		case this.DOM_VK_SEMICOLON: return ':';
		case this.DOM_VK_QUOTE: return '"';
		case this.DOM_VK_COMMA: return '<';
		case this.DOM_VK_PERIOD: return '>';
		case this.DOM_VK_SLASH: return '?';
	} else switch (iKeyCode) {
		case this.DOM_VK_BACK_QUOTE: return '`';
		case this.DOM_VK_SUBTRACT: return '-';
		case this.DOM_VK_EQUALS: return '=';
		case this.DOM_VK_BACK_SLASH: return String.fromCharCode(this.DOM_VK_BACK_SLASH);
		case this.DOM_VK_OPEN_BRACKET: return '[';
		case this.DOM_VK_CLOSE_BRACKET: return ']';
		case this.DOM_VK_SEMICOLON: return ';';
		case this.DOM_VK_QUOTE: return '\'';
		case this.DOM_VK_COMMA: return ',';
		case this.DOM_VK_PERIOD: return '.';
		case this.DOM_VK_SLASH: return '/';
		case this.DOM_VK_NUMPAD0: return '0';
		case this.DOM_VK_NUMPAD1: return '1';
		case this.DOM_VK_NUMPAD2: return '2';
		case this.DOM_VK_NUMPAD3: return '3';
		case this.DOM_VK_NUMPAD4: return '4';
		case this.DOM_VK_NUMPAD5: return '5'
		case this.DOM_VK_NUMPAD6: return '6';
		case this.DOM_VK_NUMPAD7: return '7';
		case this.DOM_VK_NUMPAD8: return '8';
		case this.DOM_VK_NUMPAD9: return '9';
		case this.DOM_VK_MULTIPLY: return '*';
		case this.DOM_VK_ADD: return '+';
		case this.DOM_VK_SUBTRACT: return '-';
		case this.DOM_VK_DECIMAL: return '.';
		case this.DOM_VK_DIVIDE:	 return '/';
	}
	return '';
},

getKeyText: function(iKeyCode) {
	if (iKeyCode <= 0) return '';
	var sNbsp = String.fromCharCode(160);
	with (this) switch(iKeyCode) {
	case DOM_VK_BACK_SPACE: return 'Backspace';
	case DOM_VK_TAB: return 'Tab';
	case DOM_VK_RETURN: return 'Enter';
	case DOM_VK_SHIFT: return 'Shift';
	case DOM_VK_CONTROL: return 'Ctrl';
	case DOM_VK_ALT: return 'Alt';
	case DOM_VK_PAUSE: return 'Pause';
	case DOM_VK_CAPS_LOCK: return 'Caps'+sNbsp+'Lock';
	case DOM_VK_ESCAPE: return 'Esc';
	case DOM_VK_SPACE: return 'Space';
	case DOM_VK_PAGE_UP: return 'Page'+sNbsp+'Up';
	case DOM_VK_PAGE_DOWN: return 'Page'+sNbsp+'Down';
	case DOM_VK_END: return 'End';
	case DOM_VK_HOME: return 'Home';
	case DOM_VK_LEFT: return 'Left'+sNbsp+'Arrow';
	case DOM_VK_UP: return 'Up'+sNbsp+'Arrow';
	case DOM_VK_RIGHT: return 'Right'+sNbsp+'Arrow';
	case DOM_VK_DOWN: return 'Down'+sNbsp+'Arrow';
	case DOM_VK_PRINTSCREEN: return 'Prt'+sNbsp+'Scr';
	case DOM_VK_INSERT: return 'Insert';
	case DOM_VK_DELETE: return 'Delete';
	case DOM_VK_0: return '0';
	case DOM_VK_1: return '1';
	case DOM_VK_2: return '2';
	case DOM_VK_3: return '3';
	case DOM_VK_4: return '4';
	case DOM_VK_5: return '5';
	case DOM_VK_6: return '6';
	case DOM_VK_7: return '7';
	case DOM_VK_8: return '8';
	case DOM_VK_9: return '9';
	case DOM_VK_SEMICOLON: return ';';
	case DOM_VK_EQUALS: return '=';
	case DOM_VK_A: return 'A';
	case DOM_VK_B: return 'B';
	case DOM_VK_C: return 'C';
	case DOM_VK_D: return 'D';
	case DOM_VK_E: return 'E';
	case DOM_VK_F: return 'F';
	case DOM_VK_G: return 'G';
	case DOM_VK_H: return 'H';
	case DOM_VK_I: return 'I';
	case DOM_VK_J: return 'J';
	case DOM_VK_K: return 'K';
	case DOM_VK_L: return 'L';
	case DOM_VK_M: return 'M';
	case DOM_VK_N: return 'N';
	case DOM_VK_O: return 'O';
	case DOM_VK_P: return 'P';
	case DOM_VK_Q: return 'Q';
	case DOM_VK_R: return 'R';
	case DOM_VK_S: return 'S';
	case DOM_VK_T: return 'T';
	case DOM_VK_U: return 'U';
	case DOM_VK_V: return 'V';
	case DOM_VK_W: return 'W';
	case DOM_VK_X: return 'X';
	case DOM_VK_Y: return 'Y';
	case DOM_VK_Z: return 'Z';
	case DOM_VK_NUMPAD0: return 'Numpad'+sNbsp+'0';
	case DOM_VK_NUMPAD1: return 'Numpad'+sNbsp+'1';
	case DOM_VK_NUMPAD2: return 'Numpad'+sNbsp+'2';
	case DOM_VK_NUMPAD3: return 'Numpad'+sNbsp+'3';
	case DOM_VK_NUMPAD4: return 'Numpad'+sNbsp+'4';
	case DOM_VK_NUMPAD5: return 'Numpad'+sNbsp+'5';
	case DOM_VK_NUMPAD6: return 'Numpad'+sNbsp+'6';
	case DOM_VK_NUMPAD7: return 'Numpad'+sNbsp+'7';
	case DOM_VK_NUMPAD8: return 'Numpad'+sNbsp+'8';
	case DOM_VK_NUMPAD9: return 'Numpad'+sNbsp+'9';
	case DOM_VK_MULTIPLY: return 'Numpad'+sNbsp+'*';
	case DOM_VK_ADD: return 'Numpad'+sNbsp+'+';
	case DOM_VK_SUBTRACT: return 'Numpad'+sNbsp+'-';
	case DOM_VK_DECIMAL: return 'Numpad'+sNbsp+'.';
	case DOM_VK_DIVIDE: return 'Numpad'+sNbsp+'/';
	case DOM_VK_F1: return 'F1';
	case DOM_VK_F2: return 'F2';
	case DOM_VK_F3: return 'F3';
	case DOM_VK_F4: return 'F4';
	case DOM_VK_F5: return 'F5';
	case DOM_VK_F6: return 'F6';
	case DOM_VK_F7: return 'F7';
	case DOM_VK_F8: return 'F8';
	case DOM_VK_F9: return 'F9';
	case DOM_VK_F10: return 'F10';
	case DOM_VK_F11: return 'F11';
	case DOM_VK_F12: return 'F12';
	case DOM_VK_F13: return 'F13';
	case DOM_VK_F14: return 'F14';
	case DOM_VK_F15: return 'F15';
	case DOM_VK_F16: return 'F16';
	case DOM_VK_F17: return 'F17';
	case DOM_VK_F18: return 'F18';
	case DOM_VK_F19: return 'F19';
	case DOM_VK_F20: return 'F20';
	case DOM_VK_F21: return 'F21';
	case DOM_VK_F22: return 'F22';
	case DOM_VK_F23: return 'F23';
	case DOM_VK_F24: return 'F24';
	case DOM_VK_NUM_LOCK: return 'Num'+sNbsp+'Lock';
	case DOM_VK_SCROLL_LOCK: return 'Scroll'+sNbsp+'Lock';
	case DOM_VK_COMMA: return ',';
	case DOM_VK_PERIOD: return '.';
	case DOM_VK_SLASH: return '/';
	case DOM_VK_BACK_QUOTE: return '`';
	case DOM_VK_OPEN_BRACKET: return '[';
	case DOM_VK_BACK_SLASH: return String.fromCharCode(DOM_VK_BACK_SLASH);
	case DOM_VK_CLOSE_BRACKET: return ']';
	case DOM_VK_QUOTE: return "'";
	default: return '';
	}
},

getKeyModifiersText: function(iModifiers) {
	var sModifiers = '';
	if (iModifiers & this.CONTROL_MASK) sModifiers = 'Ctrl';
	if (iModifiers & this.ALT_MASK) { if (sModifiers) sModifiers += '+Alt'; else sModifiers += 'Alt'; }
	if (iModifiers & this.SHIFT_MASK) { if (sModifiers) sModifiers += '+Shift'; else sModifiers += 'Shift'; }
	return sModifiers;
},

getKeyStroke: function(iKeyCode,iModifiers) {
	return {keyCode: iKeyCode, modifiers: iModifiers};
},

getNavKeyText: function(iKeyCode) {
	switch (iKeyCode) {
		case this.DOM_VK_LEFT: return 'Left';
		case this.DOM_VK_UP: return 'Up';
		case this.DOM_VK_RIGHT: return 'Right';
		case this.DOM_VK_DOWN: return 'Down';
		case this.DOM_VK_RETURN: return 'Enter';
		case this.DOM_VK_ESCAPE: return 'Esc';
	}
	return '';
}
};
PortoszJsMenuKeys = new PortoszJsMenuKeys();

if (navigator.family) {
	document.writeln("<"+"script language=\"JavaScript\" type=\"text/javascript\" src=\"./jscripts/menu/compat-"+navigator.family+".js\""+"><"+"/script"+">");
}
if (typeof PortoszJsMenuKeys=='undefined') {
	PortoszJsMenuKeys = false;
}
function PortoszJsMenu(sText,icon) {
	PortoszJsMenuItem.call(this,sText,icon);
	this._popup = new PortoszJsMenuPopup();
	this._popup.__owner__ = this;
	this._popup.__selectionManager__ = this.__selectionManager__;
	PortoszJsMenuSelectionManager.__managers__.length -= 1;
	this._isPopupVisible = false;
}
PortoszJsMenu.__objects__ = {};
PortoszJsMenu.delayOpen = 0;
PortoszJsMenu.chunkPerSizeOpen = 5;
PortoszJsMenu.SubMenuYOffset=0;
PortoszJsMenu.SubMenuXOffset=0;
PortoszJsMenu._zIndexMin = 100;
PortoszJsMenu.setZIndexMin = function(iZIndex) {
	iZIndex = parseInt(iZIndex); 
	if (isNaN(iZIndex)) {
		iZIndex = 100;
	}
	PortoszJsMenu._zIndexMin = iZIndex;
}
PortoszJsMenu.subSign = document.createElement('DIV');
PortoszJsMenu.subSign.className = 'sub';
PortoszJsMenu.subSign.appendChild(document.createTextNode(String.fromCharCode(187)));
PortoszJsMenu.setSubSign = function(oSign) {
	if (typeof oSign == 'object') if (oSign.cloneNode) PortoszJsMenu.subSign = oSign;
}
if (typeof PortoszJsMenuSubSign != 'undefined') {
	PortoszJsMenu.setSubSign(PortoszJsMenuSubSign);
}
PortoszJsMenu.checkSign = document.createElement('DIV');
PortoszJsMenu.checkSign.className = 'check';
PortoszJsMenu.checkSign.appendChild(document.createTextNode(String.fromCharCode(8730)));
PortoszJsMenu.setCheckSign = function(oSign) {
	if (typeof oSign == 'object') {
		if (oSign.cloneNode) {
			PortoszJsMenu.checkSign = oSign;
		}
	}
}
if (typeof PortoszJsMenuCheckSign != 'undefined') {
	PortoszJsMenu.setCheckSign(PortoszJsMenuCheckSign);
}
PortoszJsMenu.radioSign = document.createElement('DIV');
PortoszJsMenu.radioSign.className = 'radio';
PortoszJsMenu.radioSign.appendChild(document.createTextNode(String.fromCharCode(9830)));
PortoszJsMenu.setRadioSign = function(oSign) {
	if (typeof oSign == 'object') {
		if (oSign.cloneNode) {
			PortoszJsMenu.radioSign = oSign;
		}
	}
}
if (typeof PortoszJsMenuRadioSign != 'undefined') {
	PortoszJsMenu.setRadioSign(PortoszJsMenuRadioSign);
}
PortoszJsMenu.horizontalSeparatorSign = document.createElement('DIV');
PortoszJsMenu.horizontalSeparatorSign.className = 'horizontalline';
PortoszJsMenu.horizontalSeparatorSign.style.borderStyle = 'solid';
PortoszJsMenu.horizontalSeparatorSign.style.borderWidth = '0px 0px 0px 0px';
PortoszJsMenu.horizontalSeparatorSign.style.fontSize = '0px';
PortoszJsMenu.verticalSeparatorSign = PortoszJsMenu.horizontalSeparatorSign.cloneNode(true);
PortoszJsMenu.verticalSeparatorSign.className = 'verticalline';
PortoszJsMenu.setHorizontalSeparatorSign = function(oSign) {
	if (typeof oSign == 'object') {
		if (oSign.cloneNode) {
			PortoszJsMenu.horizontalSeparatorSign = oSign;
		}
	}
}
if (typeof PortoszJsMenuHorizontalSeparatorSign != 'undefined') {
	PortoszJsMenu.setHorizontalSeparatorSign(PortoszJsMenuHorizontalSeparatorSign);
}
PortoszJsMenu.setVerticalSeparatorSign = function(oSign) {
	if (typeof oSign == 'object') {
		if (oSign.cloneNode) {
			PortoszJsMenu.verticalSeparatorSign = oSign;
		}
	}
}
if (typeof PortoszJsMenuVerticalSeparatorSign != 'undefined'){
	PortoszJsMenu.setVerticalSeparatorSign(PortoszJsMenuVerticalSeparatorSign);
}
PortoszJsMenu.onclick = function(e) {
}
PortoszJsMenu.onchange = function(e) {
}
PortoszJsMenu.showCopyright = function(f) {
	if (typeof f != 'function') {
		f = window.alert;
	}
	var sCpyr = 'DHTML menu system: Portosz JsMenu version 0.1\n'
		+ 'Copyright \xA9 2006.09.03- Péter Illés (illes.peter@fibermail.com)\n'
		+ 'All rights reserved\n'
		+ 'See http://www.illesnet.hu\n\n';
	f(sCpyr);
	return sCpyr;
}
PortoszJsMenu.closeAllOpenMenu = function(e) {
	for (var i=0; i<PortoszJsMenuSelectionManager.__managers__.length; i++){
		PortoszJsMenuSelectionManager.__managers__[i].clearSelectedPath();
	}
}
function PortoszJsMenuRequestParam(sParamName) {
	this.paramName = sParamName;
	this._form = null;
}
PortoszJsMenuRequestParam.__params__ = {};
PortoszJsMenuRequestParam.isExist = false;
PortoszJsMenuRequestParam.cookieSettings = '';
PortoszJsMenuRequestParam.isCookieEnabled = true;
PortoszJsMenuRequestParam.setCookie = function(sName, sValue) {
	if (!PortoszJsMenuRequestParam.isCookieEnabled) {
		return;
	}
	var sSettings = PortoszJsMenuRequestParam.cookieSettings;
	if (sSettings && sSettings.substring(0,1) != ';') {
		sSettings = '; ' + sSettings;
	}
	document.cookie = sName + '=' + escape(sValue) + sSettings;
};
PortoszJsMenuRequestParam.getCookie = function(sName) {
	if (!PortoszJsMenuRequestParam.isCookieEnabled) {
		return null;
	}
	var arCookies = document.cookie.split('; ');
	for (var i=0; i < arCookies.length; i++) {
		var cookie = arCookies[i].split('=');
		if (sName == cookie[0]) {
			return unescape(cookie[1]);
		}
	}
	return null;
};
(function() {
	var sParams = PortoszJsMenuRequestParam.getCookie('PortoszJsMenu');
	if (sParams === null) {
		return;
	}
	PortoszJsMenuRequestParam.isExist = true;
	sParams = sParams.replace(/^\s+/,'').replace(/\s+$/,''); 
	if (!sParams) {
		return;
	}
	var arParams = sParams.split(':');
	for (var i=0; i < arParams.length; i++) {
		var param = arParams[i].split('=');
		if (param.length < 2) {
			continue;
		}
		PortoszJsMenuRequestParam.__params__[ param[0] ] = param[1];
	}
})();
PortoszJsMenuRequestParam.prototype = {
	setFormObject: function(oForm) {
		if (oForm && typeof oForm == 'object') {
			if (oForm.tagName == 'FORM') {
				this._form = oForm;
			}
		}
	},
	setFormId: function(sId) {
		var oForm = document.getElementById(sId);
		if (oForm) {
			if (oForm.tagName == 'FORM') {
				this._form = oForm;
			}
		}
	},
	setFormName: function(sName) {
		if (typeof document.forms[sName] == 'object') {
			this._form = document.forms[sName];
		}
	},
	getValue: function() {
		if (typeof PortoszJsMenuRequestParam.__params__[this.paramName] != 'undefined'){
			return PortoszJsMenuRequestParam.__params__[this.paramName];
		}
		return null;
	},
	setValue: function(val) {
		var oParams = PortoszJsMenuRequestParam.__params__;
		var bRemove = (typeof val == 'object' && val==null);
		if (bRemove) { 
			if (typeof oParams[this.paramName] != 'undefined') {
				delete oParams[this.paramName]; 
			}
		} else {
			oParams[this.paramName] = val;
		}
		var sCookie = '';
		for (p in oParams) {
			sCookie += (p + '=' + oParams[p] + ':');
		}
		PortoszJsMenuRequestParam.setCookie('PortoszJsMenu', sCookie);
		if (this._form) {
			if (this._form.elements[this.paramName]) {
				if (bRemove) {
					this._form.elements[this.paramName].name = '';
				} else {
					this._form.elements[this.paramName].value = val;
				}
			} else if (!bRemove) {
				var oInput = document.createElement('INPUT');
				oInput.type = 'hidden';
				oInput.value = val;
				this._form.appendChild(oInput);
			}
		}
	},
	removeMe: function() {
		this.setValue(null);
	}
}
//======================== Request Param Holder == ========================
function PortoszJsMenuRequestParamHolder() {
	this._reqParam = null;
}
PortoszJsMenuRequestParamHolder.prototype = {
	setRequestParam: function(oReqParam) {
		if (oReqParam instanceof PortoszJsMenuRequestParam) {
			this._reqParam = oReqParam;
		}
	},
	setRequestParamValue: function(val) {
		if (this._reqParam) {
			this._reqParam.setValue(val);
		}
	},
	getRequestParamValue: function() {
		if (this._reqParam) {
			return this._reqParam.getValue();
		}
		return null;
	},
	removeRequestParam: function() {
		if (this._reqParam) {
			this._reqParam.removeMe();
		}
	},
	setValue: function(val) {
	},
	getValue: function() {
	},
	setValueFromRequestParam: function() {
		if (this._reqParam) {
			this.setValue( this._reqParam.getValue() );
		}
	}
}
//======================== Menu Selection Manager ========================/
function PortoszJsMenuSelectionManager(owner) {
	this._path = [];
	this.__owner__ = ((typeof owner == 'object') ? owner : null);
	PortoszJsMenuSelectionManager.__managers__[PortoszJsMenuSelectionManager.__managers__.length] = this;
	this._topMnemonics =(this.__owner__ ? this.__owner__.getMnemonics() : []);
	this._mnemonics = [];
}
PortoszJsMenuSelectionManager.__managers__ = [];
PortoszJsMenuSelectionManager.__menuShortcuts__ = [[],[],[],[],[],[],[],[]];
PortoszJsMenuSelectionManager.isPathTrue = function(arPath) {
	var bRet = true;
	for (var i=arPath.length-2; i>=0; i--) {
		bRet = bRet && (arPath[i+1].parentMenu==arPath[i]);
	}
	if (arPath.length){
		bRet = bRet && (arPath[0] instanceof PortoszJsMenuBar || arPath[0] instanceof PortoszJsMenuPopup);
	}
	return bRet;
}
PortoszJsMenuSelectionManager.prototype = {
	__setFocusedElm__: function(bToClose) {
		var i = this._path.length, oMenuElm = null;
		if (i) { oMenuElm = this._path[i-1]; oMenuElm.showDescription(); /*window.focus();*/ } {
			if (i > 1) {
				if (oMenuElm instanceof PortoszJsMenu && oMenuElm.isPopupVisible()) {
					this._mnemonics = oMenuElm.getPopupMenu().getMnemonics();
				} else {
					this._mnemonics = oMenuElm.getContainer().getMnemonics();
				}
			} else if (i==1 && oMenuElm instanceof PortoszJsMenuPopup) {
				this._mnemonics = oMenuElm.getMnemonics();
			} else {
				this._mnemonics = []; 
			}
		}
	},
	pushPathElement: function(oMenuElm) {
		var i = this._path.length;
		if (this._path[i-1] != oMenuElm.parentMenu) {
			return;
		}
		this._path[i] = oMenuElm;
		oMenuElm.menuSelectionChanged(true);
		this.__setFocusedElm__();
	},
	popPathElement: function() {
		var i = this._path.length-1; 
		if (i<0) {
			return null;
		}
		var oMenu = this._path[i];
		oMenu.menuSelectionChanged(false);
		oMenu.clearDescription();
		this._path.length = i;
		this.__setFocusedElm__();
		return oMenu;
	},
	selectTopMnemonic: function(iMnemonic) {
		var oMenuElm = this._topMnemonics[iMnemonic];
		if (oMenuElm) {
			this._setSelectedPath(0, [oMenuElm.parentMenu, oMenuElm]);
			if (oMenuElm instanceof PortoszJsMenu) {
				oMenuElm.processKeyEvent('Enter');
			} else {
				oMenuElm.doClick();
			}
		}
		return oMenuElm;
	},
	selectMnemonic: function(iMnemonic) {
		var oMenuElm = this._mnemonics[iMnemonic];
		if (oMenuElm) {
			var i = this._path.length-1, oLastSelected = this._path[i];
			if (oLastSelected == oMenuElm.parentMenu) {
				this._setSelectedPath(i+1, [oMenuElm]);
			} else {
				this._setSelectedPath(i, [oMenuElm]);
			}
			oMenuElm.processKeyEvent('Enter');
		}
		return oMenuElm;
	},
	getSelectedPath: function() {
		return this._path.slice(0,this._path.length);
	},
	getLastSelectedMenu: function() {
		if (this._path.length) {
			return this._path[this._path.length-1];
		}
		return null;
	},
	getPathLength: function() {
		return this._path.length;
	},
	_setSelectedPath: function(i,arNewElms) {
		for (k=this._path.length-1; k>=i; k--){
			this._path[k].menuSelectionChanged(false);
		}
		if (this._path.length) {
			this._path[this._path.length-1].clearDescription();
		}
		for (k=0; k<arNewElms.length; k++){
			arNewElms[k].menuSelectionChanged(true);
		}
		this._path.length = i; this._path = this._path.concat(arNewElms);
		this.__setFocusedElm__();
	},
	setSelectedPath: function(arPath) {
		if (!PortoszJsMenuSelectionManager.isPathTrue(arPath)) {
			return;
		}
		var k = ((arPath.length > this._path.length) ? this._path.length : arPath.length);
		for (var i=0; i<k; i++) {
			if (arPath[i] != this._path[i]) {
				break;
			}
		}
		this._setSelectedPath(i, arPath.slice(i,arPath.length));
	},
	clearSelectedPath: function() {
		this._setSelectedPath(0,[]);
	},
	getParentIndexOnPath: function(oMenuElm) {
		for (var i=this._path.length-1; i>=0; i--) {
			if (this._path[i]==oMenuElm.parentMenu) {
				return i;
			}
		}
		return -1;
	},
	getSiblingIndexOnPath: function(oMenuElm) {
		var i = this.getParentIndexOnPath(oMenuElm) + 1;
		return ((i > 0 && i < this._path.length) ? i : -1);
	},
	processMouseOver: function(oMenuElm) {
		var i = this.getParentIndexOnPath(oMenuElm);
		var oParent = oMenuElm.parentMenu;
		if (i>=0) {
			this._setSelectedPath(i+1,[oMenuElm]);
		} else if (oParent instanceof PortoszJsMenuBar || oParent instanceof PortoszJsMenuPopup) { 
			this._setSelectedPath(0, [oParent,oMenuElm]);
		} 
	},
	processMouseOut: function(oMenuElm) {
		var i = this.getParentIndexOnPath(oMenuElm);
		if (i>0) {
			this._setSelectedPath(i+1,[]);
		} else if (this._path[0] instanceof PortoszJsMenuPopup || (this._path[0] instanceof PortoszJsMenuBar && this._path[0].__idxOpenItem__!=-1)) {
				this._setSelectedPath(1,[]);
		} else {
			this._setSelectedPath(0,[]);
		}
	}
}
PortoszJsMenuSelectionManager.processKeyDown = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	if (!PortoszJsMenuKeys) {
		return; 
	}
	var keys = PortoszJsMenuKeys;
	var iKeyCode = e.keyCode;
	if (iKeyCode==keys.DOM_VK_ALT || iKeyCode==keys.DOM_VK_CONTEXT_MENU) {
		PortoszJsMenu.closeAllOpenMenu(); return;
	}
	var arManagers = PortoszJsMenuSelectionManager.__managers__; 
	if (!arManagers.length) {
		return;
	}
	for (var i=0; i<arManagers.length; i++) {
		if (arManagers[i].getPathLength() > 0) {
			break;
		}
	}
	var bNoSelected = (i >= arManagers.length);
	if (iKeyCode >= keys.DOM_VK_A && iKeyCode <= keys.DOM_VK_Z || iKeyCode >= keys.DOM_VK_0 && iKeyCode <= keys.DOM_VK_9) {
		if (bNoSelected) {
			if (e.altKey && ((e.shiftKey && !e.ctrlKey) || (!e.shiftKey && e.ctrlKey)) ) {
				for (i=0; i<arManagers.length; i++) {
					if (arManagers[i].selectTopMnemonic(iKeyCode)) {
						return;
					}
				}
			}
		} else if (!e.altKey && !e.ctrlKey && !e.shiftKey) {
			if (arManagers[i].selectMnemonic(iKeyCode)) {
				return;
			}
		}
	}
	var iModifiers = 0, oMenu, sNavKey = keys.getNavKeyText(iKeyCode);
	if (e.altKey) {
		iModifiers += keys.ALT_MASK;
	}
	if (e.ctrlKey) {
		iModifiers += keys.CONTROL_MASK;
	}
	if (e.shiftKey) {
		iModifiers += keys.SHIFT_MASK;
	}
	if (oMenu = PortoszJsMenuSelectionManager.__menuShortcuts__[iModifiers][iKeyCode]) {
		PortoszJsMenu.closeAllOpenMenu();
		oMenu.doClick();
		if (e.altKey) {
			PortoszJsMenuSelectionManager._accPressed = true;
		}
	}
	if (bNoSelected || !sNavKey) {
		return;
	}
	var oMenuElm = arManagers[i].getLastSelectedMenu();
	oMenuElm.processKeyEvent(sNavKey);
	e.cancelBubble = true; 
	e.returnValue = false; 
	return false;
}
PortoszJsMenuSelectionManager.processKeyUp = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	if (!PortoszJsMenuKeys) {
		return; 
	}
	var keys = PortoszJsMenuKeys;
	var iKeyCode = e.keyCode;
	var arManagers = PortoszJsMenuSelectionManager.__managers__, oMenu = null;
	if (iKeyCode==keys.DOM_VK_ALT && (e.ctrlKey || e.shiftKey)) {
		if (PortoszJsMenuSelectionManager._accPressed) { 
			PortoszJsMenuSelectionManager._accPressed = false; 
			return; 
		}
		for (var i=0; i<arManagers.length; i++) {
			if (arManagers[i].__owner__ instanceof PortoszJsMenuBar) {
				oMenu = arManagers[i].__owner__.getMenu(0); 
				break;
			}
		}
		if (!oMenu) {
			return;
		}
		if (arManagers[i].getPathLength() > 0) {
			return;
		}
		arManagers[i].setSelectedPath([oMenu.parentMenu, oMenu]);
		e.cancelBubble = true; 
		e.returnValue = false; 
		return false;
	} else {
		for (var i=0; i<arManagers.length; i++) {
			if (arManagers[i].getPathLength() > 0) 
				break;
		}
		var sNavKey = keys.getNavKeyText(iKeyCode);
		if (i < arManagers.length && sNavKey) {
			arManagers[i].getLastSelectedMenu().processKeyEvent(sNavKey,true);
		}
	}
}
//======================== Base class for all Menu Component ========================/
function PortoszJsMenuElement(oMenuComp,icon) {
	this._component = (oMenuComp ? oMenuComp : null);
	this._id = (oMenuComp ? oMenuComp.id : '');
	this.icon = null;
	this._setIcon(icon);
}
PortoszJsMenuElement.prototype = {
	parentMenu: null,	
	__selectionManager__: null,
	descAttrName: 'desc',
	description: '',
	_setItemComponent: function(oComp) {
	},
	__setItemComponent__: function(oComp) {
		this._component = oComp;
		this._setItemComponent(oComp);
	},
	getDescription: function(oComp) {
		if (!oComp) { 
			oComp = this.getComponent();	
			if (!oComp) {
				return ''; 
			}
		}
		var sDescAttrName = oComp.getAttribute('__PortoszJsMenuDescAttr__');
		if (sDescAttrName) {
			return oComp.getAttribute(sDescAttrName);
		}
		return '';
	},
	showDescription: function(oComp) {
		var sDesc = this.getDescription(oComp);
		if (sDesc) {
			window.status = sDesc;
		}
	},
	clearDescription: function(oComp) {
		window.status = '';
	},
	menuSelectionChanged: function(bIncluded) {
	},
	getComponent: function() {
		if (this._component) {
			return this._component;
		}
		if (!this._id) {
			return null;
		}
		return (this._component = document.getElementById(this._id));
	},
	_setIcon: function(icon) {
		if (icon) {
			if (typeof icon == 'string') {
				this.icon = document.createElement('IMG');
				this.icon.src = icon;
			} else if (typeof icon == 'object') {
				if (icon.cloneNode) {
					if (icon.parentNode) {
						this.icon = icon.cloneNode(true);
					} else {
						this.icon = icon;
					}
				}
			}
		}
	},
	_drawIcon: function(oCont) {
		if (this.icon) {
			oCont.appendChild(this.icon);
		} else {
			oCont.appendChild( document.createTextNode(String.fromCharCode(160)) ); 
		}
	},
	setInterface: function(fInterface) {
		for (p in fInterface.prototype) {
			this[p] = fInterface.prototype[p];
		}
	}
}
//======================== Menu Separator ========================/
function PortoszJsMenuSeparator() {}
PortoszJsMenuSeparator.prototype = new PortoszJsMenuElement();
PortoszJsMenuSeparator.prototype._setItemComponent = function(oComp) {}
PortoszJsMenuSeparator.prototype.__setItemComponent__ = function(oComp,cons) {
	PortoszJsMenuElement.call(this,oComp,null);
	oComp.className = 'PortoszJsMenuSeparator';
	oComp.setAttribute('__PortoszJsMenuSeparator__', 1);
	oComp.onmouseover = PortoszJsMenuSeparator.__onmouseover__;
	this._setItemComponent(oComp);
}
PortoszJsMenuSeparator.__onmouseover__ = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	if (!e.fromElement || this.contains(e.fromElement)) {
		return;
	}
	var oContComp = document.getElementById(this.getAttribute('__PortoszJsMenuContId__'));
	var oCont = PortoszJsMenu.__objects__[oContComp.id];
	var oSelMan = oCont.__selectionManager__;
	var oParent = (oCont.__owner__ ? oCont.__owner__ : oCont);
	var i = oSelMan.getSiblingIndexOnPath(oParent);
	var arSelectedPath = oSelMan.getSelectedPath();
	if (i >= 0) { 
		arSelectedPath.length = i+1; 
		oSelMan.setSelectedPath(arSelectedPath); 
	}
	e.cancelBubble = true;
}
//======================== Menu Container ========================/
function PortoszJsMenuContainer(oComp,icon) {
	PortoszJsMenuElement.call(this,oComp,icon);
	this._mnemonics = [];
	this._containerComponent = null;
	this.__owner__ = null;
	if (oComp) {
		setNotSelectedElement(oComp);
		this.__selectionManager__ = new PortoszJsMenuSelectionManager(this);
		this.__isReady__ = true;
		PortoszJsMenu.__objects__[oComp.id] = this;
	}
}
PortoszJsMenuContainer.prototype = new PortoszJsMenuElement();
PortoszJsMenuContainer.prototype._realConstructor = PortoszJsMenuContainer;
PortoszJsMenuContainer.prototype.__setMnemonic__ = function(oMenuItem,iMnemonic,iOldMnemonic) {
	if (iOldMnemonic && this._mnemonics[iOldMnemonic]) {
		delete this._mnemonics[iOldMnemonic];
	}
	if (iMnemonic) {
		this._mnemonics[iMnemonic] = oMenuItem;
	}
}
PortoszJsMenuContainer.prototype.getMnemonics = function() {
	return this._mnemonics;
}
PortoszJsMenuContainer.prototype.getItem = function(idx) {
	var oCont = this._containerComponent; 
	if (!oCont) {
		return null;
	}
	idx = parseInt(idx); 
	if (isNaN(idx) || idx < 0 || idx >= this.getItemCount()) {
		return null;
	}
	var oItemComp = oCont.childNodes[idx];
	if (PortoszJsMenu.__objects__[oItemComp.id]) {
		return PortoszJsMenu.__objects__[oItemComp.id];
	}
	return null;
}
PortoszJsMenuContainer.prototype.getItemCount = function() {
	if (!this._containerComponent) {
		return 0;
	}
	return this._containerComponent.childNodes.length;
}
PortoszJsMenuContainer.prototype._getNewItemComponent = function(idx) {
}
PortoszJsMenuContainer.prototype.insert = function(oItem,idx) {
	idx = parseInt(idx); 
	if (isNaN(idx) || idx > this.getItemCount()) {
		idx = this.getItemCount();
	}
	var oComp = this._getNewItemComponent(idx);
	oComp.setAttribute('__PortoszJsMenuContId__',this._id);
	if (oItem.descAttrName && oItem.description) {
		oComp.setAttribute('__PortoszJsMenuDescAttr__',oItem.descAttrName);
		oComp.setAttribute(oItem.descAttrName,oItem.description);
	}
	oItem.parentMenu = (this.__owner__ ? this.__owner__ : this);
	oItem.__selectionManager__ = this.__selectionManager__;
	oItem.__setItemComponent__(oComp);
	this.__setMnemonic__(oItem, oItem.getMnemonic());
}
PortoszJsMenuContainer.prototype.add = function(oItem) {
	this.insert(oItem);
}
PortoszJsMenuContainer.prototype._removeComponentAt = function(idx) {
}
PortoszJsMenuContainer.prototype.remove = function(idx) {
	var oItem = ((typeof idx=='object') ? idx : this.getItem(idx));
	if (oItem) {
		idx = (oItem.isTopLevelMenu() ? (oItem.getIndex()+1) : oItem.getIndex());
		oItem.__selectionManager__ = null;
		if (oItem instanceof PortoszJsMenu) {
			PortoszJsMenu.__setSelectionManager__(oItem);
		}
		oItem.parentMenu = null;
		oItem.__setItemComponent__(null);
		delete PortoszJsMenu.__objects__[oItem.id];
	}
	idx = parseInt(idx);
	if (!isNaN(idx) && idx >= 0 && idx < this.getItemCount()) {
		this._removeComponentAt(idx);
	}
}
PortoszJsMenuContainer.prototype._getNewSeparatorComponent = function(idx) {
}
PortoszJsMenuContainer.prototype.insertSeparator = function(idx) {
	idx = parseInt(idx); 
	if (isNaN(idx) || idx < 0 || idx > this.getItemCount()) {
		idx = this.getItemCount();
	}
	var oComp = this._getNewSeparatorComponent(idx);
	oComp.setAttribute('__PortoszJsMenuContId__',this._id);
	var oSpr = new this._realConstructor.Separator();
	oSpr.__setItemComponent__(oComp);
}
PortoszJsMenuContainer.prototype.addSeparator = function() {
	this.insertSeparator();
}
//======================== Menu Bar ========================/
function PortoszJsMenuBar(sId,icon) {
	var oMenuBarComp = document.getElementById(sId); 
	if (!oMenuBarComp) {
		return;
	}
	PortoszJsMenuContainer.call(this,oMenuBarComp,icon);
	oMenuBarComp.className = 'PortoszJsMenuBar';
	var oTbl = oMenuBarComp.appendChild(document.createElement('TABLE'));
	oTbl.style.borderStyle = 'none'; 
	oTbl.cellSpacing = 0;
	oTbl.setAttribute('__PortoszJsMenuBar__',1);
	var oTR = oTbl.insertRow(0);
	this.__idxOpenItem__ = -1;
	this._containerComponent = oTR;
	if (icon!=""){
		this.add(new PortoszJsMenuBarIcon(icon));		
	}
}
PortoszJsMenuBar.prototype = new PortoszJsMenuContainer();
PortoszJsMenuBar.prototype._realConstructor = PortoszJsMenuBar;
PortoszJsMenuBar.prototype._getContainerComponent = function() {
	if (this._containerComponent && this._containerComponent.tagName=='TR') {
		return this._containerComponent;
	}
	var oBar = document.getElementById(this._id);
	for (var i=0; i<oBar.childNodes.length; i++) {
		var oChild = oBar.childNodes[i];
		if (oChild.tagName=='TABLE' && oChild.getAttribute('__PortoszJsMenuBar__')){
			return (this._containerComponent=oChild.rows[0]);
		}
	}
}
PortoszJsMenuBar.prototype._getNewItemComponent = function(idx) {
	return this._getContainerComponent().insertCell(idx);
}
PortoszJsMenuBar.prototype._removeComponentAt = function(idx) {
	this._getContainerComponent().deleteCell(idx);
}
PortoszJsMenuBar.prototype._getNewSeparatorComponent = function(idx) {
	return this._getNewItemComponent(idx);
}
PortoszJsMenuBar.prototype.menuSelectionChanged = function(bIncluded) {
	if (!bIncluded) {
		this.__idxOpenItem__ = -1;
	}
}
PortoszJsMenuBar.prototype.getMenu = function(idx) {
	return this.getItem(idx+1);
}
PortoszJsMenuBar.prototype.getMenuCount = function() {
	return (this.getItemCount()-1);
}
PortoszJsMenuBar.prototype.insert = function(oItem,idx) {
	PortoszJsMenuContainer.prototype.insert.call(this,oItem,idx+1);
}
PortoszJsMenuBar.prototype.remove = function(idx) {
	if (!isNaN(idx)) idx += 1;
	PortoszJsMenuContainer.prototype.remove.call(this,idx);
}
PortoszJsMenuBar.prototype.insertSeparator = function(idx) {
	PortoszJsMenuContainer.prototype.insertSeparator.call(this,idx+1);
}
//======================== Menu Bar Seperator ========================/
PortoszJsMenuBar.Separator = function() {
}
PortoszJsMenuBar.Separator.prototype = new PortoszJsMenuSeparator();
PortoszJsMenuBar.Separator.prototype._setItemComponent = function(oComp) {
	oComp.appendChild(PortoszJsMenu.verticalSeparatorSign.cloneNode(true));
}
//======================== Menu ========================/
function PortoszJsMenuPopup() {
	var oPopupComp = document.createElement('DIV');
	oPopupComp.id = '__PortoszJsMenuPopup' + (++PortoszJsMenuPopup.__idxCounter) + '__';
	oPopupComp.className = 'PortoszJsMenuPopup';
	oPopupComp.style.zIndex = PortoszJsMenu._zIndexMin;
	oPopupComp.style.position = 'absolute';
	oPopupComp.style.visibility = 'hidden';
	document.body.appendChild(oPopupComp);
	var oTbl = document.createElement('TABLE');
	oTbl.cellSpacing = 0;
	oTbl.appendChild(document.createElement('TBODY'));
	oPopupComp.appendChild(oTbl);
	PortoszJsMenuContainer.call(this,oPopupComp,null);
	this._containerComponent = oTbl.tBodies[0];
	this.__isReady__ = false;
	oPopupComp.onmousedown = PortoszJsMenuPopup.__onmousedown__;
}
PortoszJsMenuPopup.prototype = new PortoszJsMenuContainer();
PortoszJsMenuPopup.prototype._realConstructor = PortoszJsMenuPopup;
PortoszJsMenuPopup.__timerId__ = null;
PortoszJsMenuPopup.__idxCounter = 0;
PortoszJsMenuPopup.prototype._getNewItemComponent = function(idx) {
	var oTbl = this.getComponent().childNodes[0];
	var oTR = oTbl.insertRow(idx);
	var oTD = oTR.insertCell(0);
	oTD.className = 'icon';
	oTD = oTR.insertCell(1);
	oTD.className = 'text';
	oTD.style.whiteSpace = 'nowrap';
	oTD = oTR.insertCell(2);
	oTD.style.whiteSpace = 'nowrap';
	oTD.appendChild( document.createTextNode(String.fromCharCode(160)) );
	oTD.className = 'shortcut';
	return oTR;
}
PortoszJsMenuPopup.prototype._removeComponentAt = function(idx) {
	this.getComponent().childNodes[0].deleteRow(idx);
}
PortoszJsMenuPopup.prototype._getNewSeparatorComponent = function(idx) {
	var oTbl = this.getComponent().childNodes[0];
	var oTR = oTbl.insertRow(idx);
	var oTD = oTR.insertCell(0);
	oTD.colSpan = 3;
	return oTR;
}
PortoszJsMenuPopup.__initClip = {
	south: function(oPopupComp,arClip) { arClip[0] = oPopupComp.offsetHeight + 'px'; },
	north: function(oPopupComp,arClip) { arClip[2] = '0px'; },
	west: function(oPopupComp,arClip) { arClip[1] = '0px'; },
	east: function(oPopupComp,arClip) { arClip[3] = oPopupComp.offsetWidth + 'px'; }
};
PortoszJsMenuPopup.__initPos = {
	south: function(oPopupComp) {
		oPopupComp.style.top = (parseInt(oPopupComp.style.top)-oPopupComp.offsetHeight) + 'px'; 
	},
	north: function(oPopupComp) {
		oPopupComp.style.top = (parseInt(oPopupComp.style.top)+oPopupComp.offsetHeight) + 'px'; 
	},
	west: function(oPopupComp) {
		oPopupComp.style.left = (parseInt(oPopupComp.style.left)+oPopupComp.offsetWidth) + 'px'; 
	},
	east: function(oPopupComp) {
		oPopupComp.style.left = (parseInt(oPopupComp.style.left)-oPopupComp.offsetWidth) + 'px'; 
	}
};
PortoszJsMenuPopup._slideClip = {
	south: function(oPopupComp,iStep,arClip) {
		var iChunkSize = Math.ceil(oPopupComp.offsetHeight / PortoszJsMenu.chunkPerSizeOpen);
		if (iStep < PortoszJsMenu.chunkPerSizeOpen) {
			arClip[0] = (oPopupComp.offsetHeight-iChunkSize*iStep) + 'px';
		} else {
			iChunkSize = oPopupComp.offsetHeight - (iStep-1)*iChunkSize;
			arClip[0] = '0px';
		}
		return iChunkSize;
	},
	north: function(oPopupComp,iStep,arClip) {
		var iChunkSize = Math.ceil(oPopupComp.offsetHeight / PortoszJsMenu.chunkPerSizeOpen);
		if (iStep < PortoszJsMenu.chunkPerSizeOpen) {
			arClip[2] = (iChunkSize*iStep) + 'px';
		} else {
			iChunkSize = oPopupComp.offsetHeight - (iStep-1)*iChunkSize;
		}
		return iChunkSize;
	},
	west: function(oPopupComp,iStep,arClip) {
		var iChunkSize = Math.ceil(oPopupComp.offsetWidth / PortoszJsMenu.chunkPerSizeOpen);
		if (iStep < PortoszJsMenu.chunkPerSizeOpen) {
			arClip[1] = (iChunkSize*iStep) + 'px';
		} else {
			iChunkSize = oPopupComp.offsetWidth - (iStep-1)*iChunkSize;
		}
		return iChunkSize;
	},
	east: function(oPopupComp,iStep,arClip) {
		var iChunkSize = Math.ceil(oPopupComp.offsetWidth / PortoszJsMenu.chunkPerSizeOpen);
		if (iStep < PortoszJsMenu.chunkPerSizeOpen) {
			arClip[3] = (oPopupComp.offsetWidth-iChunkSize*iStep) + 'px';
		} else {
			iChunkSize = oPopupComp.offsetWidth - (iStep-1)*iChunkSize;
			arClip[3] = '0px';
		}
		return iChunkSize;
	}
};
PortoszJsMenuPopup._slidePos = {
	south: function(oPopupComp,iPixel,iTop,iLeft) {
		var iTop1 = parseInt(oPopupComp.style.top) + iPixel;
		if (iTop1 > iTop) {
			iTop1 = iTop;
		}
		oPopupComp.style.top = iTop1 + 'px'; },
	north: function(oPopupComp,iPixel,iTop,iLeft) {
		var iTop1 = parseInt(oPopupComp.style.top) - iPixel;
		if (iTop1 < iTop) {
			iTop1 = iTop;
		}
		oPopupComp.style.top = iTop1 + 'px'; },
	west: function(oPopupComp,iPixel,iTop,iLeft) {
		var iLeft1 = parseInt(oPopupComp.style.left) - iPixel;
		if (iLeft1 < iLeft) {
			iLeft1 = iLeft;
		}
		oPopupComp.style.left = iLeft1 + 'px'; },
	east: function(oPopupComp,iPixel,iTop,iLeft) {
		var iLeft1 = parseInt(oPopupComp.style.left) + iPixel;
		if (iLeft1 > iLeft) {
			iLeft1 = iLeft;
		}
		oPopupComp.style.left = iLeft1 + 'px'; }
};
PortoszJsMenuPopup.__show__ = function(sPopupCompId,iStep,sDir1,sDir2,iTop,iLeft) {
	oPopupComp = document.getElementById(sPopupCompId);
	var arClip = ['auto','auto','auto','auto'];
	var iPixelMove = PortoszJsMenuPopup._slideClip[sDir1](oPopupComp,iStep,arClip);
	PortoszJsMenuPopup._slidePos[sDir1](oPopupComp,iPixelMove,iTop,iLeft);
	if (sDir2) {
		iPixelMove = PortoszJsMenuPopup._slideClip[sDir2](oPopupComp,iStep,arClip);
		PortoszJsMenuPopup._slidePos[sDir2](oPopupComp,iPixelMove,iTop,iLeft);
	}
	oPopupComp.style.clip = 'rect(' + arClip.join(' ') + ')';
	if (iStep >= PortoszJsMenu.chunkPerSizeOpen) {
		PortoszJsMenuPopup.__timerId__ = null;
		PortoszJsMenu.__objects__[sPopupCompId].__isReady__ = true;
	} else {
		PortoszJsMenuPopup.__timerId__ = window.setTimeout('PortoszJsMenuPopup.__show__("'+sPopupCompId+'",'+(iStep+1)+',"'+sDir1+'","'+sDir2+'",'+iTop+','+iLeft+')',PortoszJsMenu.delayOpen);
	}
}
PortoszJsMenuPopup.prototype.show = function(iLeft,iTop,sDirection) {
	if (typeof arguments[0] == 'object') {
		return this.showOnInvoker(arguments[0],arguments[1],arguments[2]);
	}
	var oPopupComp = this.getComponent();
	oPopupComp.style.left = iLeft + "px";
	oPopupComp.style.top = iTop + "px";
	PortoszJsMenu.delayOpen = parseInt(PortoszJsMenu.delayOpen);
	if (isNaN(PortoszJsMenu.delayOpen) || PortoszJsMenu.delayOpen < 0) {
		PortoszJsMenu.delayOpen = 0;
	}
	PortoszJsMenu.chunkPerSizeOpen = parseInt(PortoszJsMenu.chunkPerSizeOpen);
	if (isNaN(PortoszJsMenu.chunkPerSizeOpen) || PortoszJsMenu.chunkPerSizeOpen < 1) {
		PortoszJsMenu.chunkPerSizeOpen = 1;
	}
	if (PortoszJsMenu.delayOpen > 0) {
		this.__isReady__ = false;
		var arDir = sDirection.split('-'), arClip = ['auto','auto','auto','auto'];
		PortoszJsMenuPopup.__initClip[arDir[0]](oPopupComp,arClip);
		PortoszJsMenuPopup.__initPos[arDir[0]](oPopupComp);
		if (arDir[1]) {
			PortoszJsMenuPopup.__initClip[arDir[1]](oPopupComp,arClip);
			PortoszJsMenuPopup.__initPos[arDir[1]](oPopupComp);
		} else {
			arDir[1] = '';
		}
		oPopupComp.style.clip = 'rect(' + arClip.join(' ') + ')';
		PortoszJsMenuPopup.__timerId__ = window.setTimeout('PortoszJsMenuPopup.__show__("'+oPopupComp.id+'",1,"'+arDir[0]+'","'+arDir[1]+'",'+iTop+','+iLeft+')',PortoszJsMenu.delayOpen);
	} else {
		this.__isReady__ = true;
	}
	oPopupComp.style.visibility = 'visible';
	if (!this.__owner__) {
		this.__selectionManager__.setSelectedPath([this]);
	}
}
PortoszJsMenuPopup.prototype.showOnInvoker = function(oInvoker,iX,iY) {
	oCoords = getElementCoordOnPage(oInvoker);
	iX += getWinLeftSide() + oCoords.x; iY += getWinTopSide() + oCoords.y;
	var sHortDir = 'east', sVertDir = 'south';
	if (iX + this.getWidth() > getWinRightSide()-20) {
		iX -= this.getWidth();
		sHortDir = 'west';
		if (iX < getWinLeftSide()) {
			iX = getWinLeftSide();
			sHortDir = 'east';
		}
	}
	if (iY + this.getHeight() > getWinBottomSide()-20) {
		iY -= this.getHeight();
		sVertDir = 'north';
		if (iY < getWinTopSide()) {
			iY = getWinTopSide();
			sVertDir = 'south';
		}
	}
	this.show(iX, iY, sVertDir+'-'+sHortDir);
}
PortoszJsMenuPopup.prototype.getHeight = function() {
	return this.getComponent().offsetHeight;
}
PortoszJsMenuPopup.prototype.getWidth = function() {
	return this.getComponent().offsetWidth;
}
PortoszJsMenuPopup.prototype.setLocation = function(iLeft, iTop) {
	var oComp = this.getComponent();
	oComp.style.left = iLeft + 'px';
	oComp.style.top = iTop + 'px';
}
PortoszJsMenuPopup.prototype.setVisible = function(bVisible) {
	this.getComponent().style.visibility = (bVisible ? 'visible' : 'hidden');
	this.__isReady__ = bVisible;
	if (bVisible && !this.__owner__) {
		this.__selectionManager__.setSelectedPath([this]);
	}
}
PortoszJsMenuPopup.prototype.isVisible = function() {
	return (this.getComponent().style.visibility!='hidden');
}
PortoszJsMenuPopup.prototype.menuSelectionChanged = function(bIncluded) {
	if (!bIncluded) {
		this.setVisible(false);
	}
}
PortoszJsMenuPopup.prototype._process_key_Esc = function(arPath) {
	this.__selectionManager__.clearSelectedPath();
}
PortoszJsMenuPopup.prototype._process_key_Up = function(arPath) {
	var i=this.getItemCount()-1, oItem=this.getItem(i); 
	while (!oItem && i >=0) {
		oItem=this.getItem(--i);
	}
	if (oItem) {
		this.__selectionManager__.pushPathElement(oItem);
	}
}
PortoszJsMenuPopup.prototype._process_key_Down = function(arPath) {
	var i=0, j=this.getItemCount(), oItem=this.getItem(i); 
	while(!oItem && i<=j) {
		oItem=this.getItem(++i);
	}
	if (oItem) {
		this.__selectionManager__.pushPathElement(oItem);
	}
}
PortoszJsMenuPopup.prototype.processKeyEvent = function(sKeyText) {
	var arPath = this.__selectionManager__.getSelectedPath();
	if (arPath[arPath.length-1] != this) {
		return;
	}
	var sMethod = '_process_key_' + sKeyText; 
	if (!this[sMethod]) {
		return;
	}
	this[sMethod](arPath);
}
PortoszJsMenuPopup.__onmousedown__ = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	e.cancelBubble = true; 
	e.returnValue = false; 
	return false;
}
//======================== Popup Menu Seperator ========================/
PortoszJsMenuPopup.Separator = function() {
}
PortoszJsMenuPopup.Separator.prototype = new PortoszJsMenuSeparator();
PortoszJsMenuPopup.Separator.prototype._setItemComponent = function(oComp) {
	oComp.cells[0].appendChild(PortoszJsMenu.horizontalSeparatorSign.cloneNode(true));
}
//======================== Menu Item Base ========================/
function PortoszJsMenuAbstractButton(oComp,icon) {
	PortoszJsMenuElement.call(this,oComp,icon);
	this._isArmed = false;
	this._selected = false;
	this._enabled = true;
	this._disabledClass = '';
	this.text = '';
	this._mnemonic = 0;
	if (!this._id) {
		this._id = '__PortoszJsMenu' + (++PortoszJsMenuAbstractButton.__idxCounter) + '__';
	}
	PortoszJsMenu.__objects__[this._id] = this;
}
PortoszJsMenuAbstractButton.prototype = new PortoszJsMenuElement();
PortoszJsMenuAbstractButton.__idxCounter = 0;
PortoszJsMenuAbstractButton.prototype._isToggle = false;
PortoszJsMenuAbstractButton.prototype._normalClassName = 'PortoszJsMenuButton';
PortoszJsMenuAbstractButton.prototype._hoverClassName = 'PortoszJsMenuButton-hover';
PortoszJsMenuAbstractButton.prototype._selectClassName = 'PortoszJsMenuButton-select';
PortoszJsMenuAbstractButton.prototype._selectHoverClassName = 'PortoszJsMenuButton-select-hover';
PortoszJsMenuAbstractButton.prototype._selectHoverArmedClassName = 'PortoszJsMenuButton-select-hover-armed';
PortoszJsMenuAbstractButton.prototype.__setItemComponent__ = function(oComp) {
	if (oComp) {
		oComp.id = this._id;
	}
	PortoszJsMenuElement.call(this,oComp,this.icon);
	if (!oComp) {
		return;
	}
	this.setText(this.text);
	oComp.onmouseover = PortoszJsMenuAbstractButton.__onmouseover__;
	oComp.onmouseout = PortoszJsMenuAbstractButton.__onmouseout__;
	oComp.onmousedown = PortoszJsMenuAbstractButton.__onmousedownup__;
	oComp.onmouseup = PortoszJsMenuAbstractButton.__onmousedownup__;
	this._setItemComponent(oComp);
	if (this._enabled) {
		this._disabledClass = '';
	} else {
		this._disabledClass = (this.isTopLevelMenu() ? '-disabled' : ' disabled');
	}
	this._setCssClass(false);
}
PortoszJsMenuAbstractButton.prototype._getIndex = function() {
	var oComp = this._component;
	if (isNaN(oComp.rowIndex)) {
		return oComp.cellIndex; 
	} else {
		return oComp.rowIndex
	}
}
PortoszJsMenuAbstractButton.prototype.getContainer = function() {
	var oComp = this.getComponent(); if (!oComp) return null;
	if (this.isTopLevelMenu()) {
		return this.parentMenu;
	}
	var oPopupComp = document.getElementById(oComp.getAttribute('__PortoszJsMenuContId__'));
	if (oPopupComp) {
		return PortoszJsMenu.__objects__[oPopupComp.id];
	}
	return null;
}
PortoszJsMenuAbstractButton.prototype._getTextContainerComponent = function() {
	return this.getComponent();
}
PortoszJsMenuAbstractButton.prototype.setText = function(sText) {
	this.text = sText;
	var oTextCont = this._getTextContainerComponent(); 
	if (!oTextCont) {
		return;
	}
	while(oTextCont.childNodes.length) {
		oTextCont.removeChild(oTextCont.childNodes[0]);
	}
	var sMneChar = ((this._mnemonic && PortoszJsMenuKeys) ? PortoszJsMenuKeys.getKeyChar(this._mnemonic) : '');
	var i = (sMneChar ? sText.toLowerCase().indexOf(sMneChar) : -1);
	if (i >= 0) {
		var sBefore=sText.substring(0,i), sAfter = sText.substring(i+1,sText.length);
		if (sBefore) {
			oTextCont.appendChild(document.createTextNode(sBefore));
		}
		var oU = oTextCont.appendChild(document.createElement('U'));
		oU.appendChild(document.createTextNode(sText.charAt(i)));
		if (sAfter) {
			oTextCont.appendChild(document.createTextNode(sAfter));
		}
	} else {
		if (typeof sText=="string") {
			oTextCont.appendChild(document.createTextNode(sText));
		} else {
			oTextCont.appendChild(sText);
		}
	}
}
PortoszJsMenuAbstractButton.prototype.setMnemonic = function(iKeyCode) {
	if (!PortoszJsMenuKeys) {
		return; 
	}
	var keys = PortoszJsMenuKeys;
	if ((iKeyCode < keys.DOM_VK_A || iKeyCode > keys.DOM_VK_Z) && (iKeyCode < keys.DOM_VK_0 || iKeyCode > keys.DOM_VK_9)) {
		return;
	}
	var oCont = this.getContainer();
	if (oCont) {
		oCont.__setMnemonic__(this,iKeyCode,this._mnemonic);
	}
	this._mnemonic = iKeyCode;
	this.setText(this.text);
}
PortoszJsMenuAbstractButton.prototype.getMnemonic = function() {
	return this._mnemonic;
}
PortoszJsMenuAbstractButton.prototype.onclick = function(e) {
}
PortoszJsMenuAbstractButton.prototype._doClick = function() {
}
PortoszJsMenuAbstractButton.prototype.doClick = function() {
	if (PortoszJsMenuPopup.__timerId__ !== null) {
		return;
	}
	PortoszJsMenu.closeAllOpenMenu();
	if (!this._enabled) {
		return;
	}
	this._doClick();
	var e = {src: this, cancelBubble: false};
	var oMenuElm = this;
	while (!e.cancelBubble && oMenuElm) {
		if (oMenuElm instanceof PortoszJsMenuBar || oMenuElm instanceof PortoszJsMenuPopup) {
			PortoszJsMenu.onclick(e); 
			break;
		}
		oMenuElm.onclick(e);
		oMenuElm = oMenuElm.parentMenu;
	}
}
PortoszJsMenuAbstractButton.prototype.isTopLevelMenu = function() {
	return (this.parentMenu instanceof PortoszJsMenuBar);
}
PortoszJsMenuAbstractButton.prototype._isPressed = function() {
	return this._selected;
}
PortoszJsMenuAbstractButton.prototype._setCssClass = function(bHighlight) {
	var oComp = this._component;
	if (bHighlight) {
		if (this._isPressed()) {
			oComp.className = this._selectHoverClassName + this._disabledClass;
		} else {
			oComp.className = this._hoverClassName + this._disabledClass;
		}
	} else {
		if (this._isPressed()) {
			oComp.className = this._selectClassName + this._disabledClass;
		} else {
			oComp.className = this._normalClassName + this._disabledClass;
		}
	}
}
PortoszJsMenuAbstractButton.prototype._fixCssClass = function() {
	this._setCssClass(this.__selectionManager__ && this.__selectionManager__.getLastSelectedMenu() == this);
}
PortoszJsMenuAbstractButton.prototype.menuSelectionChanged = function(bIncluded) {
	if (!this.getComponent()) {
		return;
	}
	this._setCssClass(bIncluded);
	if (bIncluded && this.isTopLevelMenu() && this.parentMenu.__idxOpenItem__ != -1) {
		this.parentMenu.__idxOpenItem__ = this._getIndex();
	}
}
PortoszJsMenuAbstractButton.prototype.setArmed = function(bArmed) {
	var oComp = this.getComponent(); 
	if (!oComp) {
		return;
	}
	this._isArmed = bArmed;
	if (bArmed && this._enabled) {
		if (this._selected) {
			oComp.className = this._selectHoverArmedClassName;
		} else {
			oComp.className = this._selectHoverClassName;
		}
	} else {
		this._fixCssClass();
	}
}
PortoszJsMenuAbstractButton.prototype.setSelected = function(bSelected) {
	if (!this._isToggle || (this._selected == bSelected)) {
		return;
	}
	this._selected = bSelected;
	if (!this.getComponent()) {
		return;
	}
	this._fixCssClass();
}
PortoszJsMenuAbstractButton.prototype.isSelected = function() {
	return this._selected;
}
PortoszJsMenuAbstractButton.prototype.setEnabled = function(bEnabled) {
	if (this._enabled == bEnabled) {
		return;
	}
	this._enabled = bEnabled;
	if (bEnabled) {
		this._disabledClass = '';
	} else {
		this._disabledClass = (this.isTopLevelMenu() ? '-disabled' : ' disabled');
	}
	if (!this.getComponent()) {
		return;
	}
	this._fixCssClass();
}
PortoszJsMenuAbstractButton.prototype.isEnabled = function() {
	return this._enabled;
}
PortoszJsMenuAbstractButton.prototype._mayHighlightFirstChildOf = function(oMenu) {
	if (oMenu instanceof PortoszJsMenu && oMenu.isPopupVisible() && oMenu.__selectionManager__.getLastSelectedMenu() == oMenu) {
		oMenu.processKeyEvent('Down');
	}
}
PortoszJsMenuAbstractButton.prototype._moveToPreviousSibling = function(bKeyEvent) {
	var j = this.parentMenu.getItemCount(), i = this._getIndex();
	var k = i - 1; if (k < 0) k = j - 1;
	var oItem = this.parentMenu.getItem(k);
	while (!oItem) { 
		oItem = this.parentMenu.getItem(--k); 
		if (k==i) {
			break; 
		}
		if (k<0) {
			k = j;
		}
	}
	this.__selectionManager__.processMouseOver(oItem);
	if (bKeyEvent) this._mayHighlightFirstChildOf(oItem);
}
PortoszJsMenuAbstractButton.prototype._moveToNextSibling = function(bKeyEvent) {
	var j = this.parentMenu.getItemCount(), i = this._getIndex(), oItem;
	var k = i + 1; if (k >= j) k = 0;
	var oItem = this.parentMenu.getItem(k);
	while (!oItem) { 
		oItem = this.parentMenu.getItem(++k); 
		if (k==i) {
			break; 
		}
		if (k>=j) {
			k = -1; 
		}
	}
	this.__selectionManager__.processMouseOver(oItem);
	if (bKeyEvent) this._mayHighlightFirstChildOf(oItem);
}
PortoszJsMenuAbstractButton.prototype._process_key_Enter = function(arPath) {
	if (this.isTopLevelMenu()) {
		this.setArmed(true);
	} else {
		this.doClick();
	}
}
PortoszJsMenuAbstractButton.prototype._process_keyup_Enter = function(arPath) {
	if (!this.isTopLevelMenu()) {
		return;
	}
	this.setArmed(false);
	this.doClick();
}
PortoszJsMenuAbstractButton.prototype._process_key_Esc = function(arPath) {
	if (this.isTopLevelMenu()) {
		PortoszJsMenu.closeAllOpenMenu();
	} else {
		this.__selectionManager__.popPathElement();
		this.parentMenu.processKeyEvent('Esc');
	}
}
PortoszJsMenuAbstractButton.prototype._process_key_Left = function(arPath) {
	if (this.isTopLevelMenu()) {
		this._moveToPreviousSibling(true);
	} else {
		if (this.parentMenu instanceof PortoszJsMenuPopup) {
			return;
		}
		this.__selectionManager__.popPathElement();
		this.parentMenu.processKeyEvent('Left');
	}
}
PortoszJsMenuAbstractButton.prototype._process_key_Up = function(arPath) {
	if (!this.isTopLevelMenu()) {
		this._moveToPreviousSibling(true);
	}
}
PortoszJsMenuAbstractButton.prototype._process_key_Right = function(arPath) {
	if (this.isTopLevelMenu()) {
		this._moveToNextSibling(true);
	} else {
		var oParent = this.parentMenu;
		while (oParent instanceof PortoszJsMenu && !oParent.isTopLevelMenu()) {
			oParent = oParent.parentMenu;
		}
		if (oParent instanceof PortoszJsMenu) {
			oParent.__process_key_Right__();
		}
	}
}
PortoszJsMenuAbstractButton.prototype._process_key_Down = function(arPath) {
	if (!this.isTopLevelMenu()) {
		this._moveToNextSibling(true);
	}
}
PortoszJsMenuAbstractButton.prototype.processKeyEvent = function(sKeyText,bReleased) {
	var oCont = this.getContainer(), sMethod;
	if (!this.__selectionManager__ || !oCont || (oCont && !oCont.__isReady__)) {
		return;
	}
	var arPath = this.__selectionManager__.getSelectedPath();
	if (arPath[arPath.length-1] != this) {
		return;
	}
	if (bReleased) {
		sMethod = '_process_keyup_' + sKeyText; 
	} else {
		sMethod = '_process_key_' + sKeyText;
	}
	if (this[sMethod]) {
		this[sMethod](arPath);
	}
}
PortoszJsMenuAbstractButton.prototype._process_mouseover = function(e) {
	this.__selectionManager__.processMouseOver(this);
}
PortoszJsMenuAbstractButton.prototype._process_mouseout = function(e) {
	this.setArmed(false);
	this.__selectionManager__.processMouseOut(this);
}
PortoszJsMenuAbstractButton.prototype._process_mousedown = function(e) {
	this.setArmed(e.getButton() == 1);
	if (this._isArmed) {
		e.returnValue = false; 
	} else {
		PortoszJsMenu.closeAllOpenMenu();
	}
	e.cancelBubble = true;
}
PortoszJsMenuAbstractButton.prototype._process_mouseup = function(e) {
	if (e.getButton() == 1 && this._isArmed) {
		this.doClick();
	}
	this.setArmed(false);
	e.cancelBubble = true;
	if (this.isTopLevelMenu()) {
		this.__selectionManager__.setSelectedPath([this.parentMenu,this]);
	}
}
PortoszJsMenuAbstractButton.prototype.processMouseEvent = function(e) {
	var oCont = this.getContainer();
	if (!this.__selectionManager__ || !oCont || (oCont && !oCont.__isReady__)) {
		return;
	}
	this['_process_' + e.type](e);
}
PortoszJsMenuAbstractButton.__onmouseover__ = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	if (!e.fromElement || this.contains(e.fromElement)) {
		return;
	}
	if ((typeof PortoszJsMenu).charAt(0) == 'f') {
		PortoszJsMenu.__objects__[this.id].processMouseEvent(e);
	}
	e.cancelBubble = true; 
	return true;
}
PortoszJsMenuAbstractButton.__onmouseout__ = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	if (!e.toElement || this.contains(e.toElement)) {
		return;
	}
	if ((typeof PortoszJsMenu).charAt(0) == 'f') {
		PortoszJsMenu.__objects__[this.id].processMouseEvent(e);
	}
	e.cancelBubble = true; return true;
}
PortoszJsMenuAbstractButton.__onmousedownup__ = function(e) { 
	if (!e || !e.getButton) {
		e = PortoszJsMenuEvent();
	}
	PortoszJsMenu.__objects__[this.id].processMouseEvent(e);
}
//======================== Menu Bar Icon ========================/
function PortoszJsMenuBarIcon(icon) {
	PortoszJsMenuAbstractButton.call(this,null,icon);
}
PortoszJsMenuBarIcon.prototype = new PortoszJsMenuAbstractButton();
PortoszJsMenuBarIcon.prototype._normalClassName = 'PortoszJsMenuButton-icon';
PortoszJsMenuBarIcon.prototype._hoverClassName = 'PortoszJsMenuButton-hover-icon';
PortoszJsMenuBarIcon.prototype._selectClassName = 'PortoszJsMenuButton-select-hover-icon';
PortoszJsMenuBarIcon.prototype._selectHoverClassName = 'PortoszJsMenuButton-select-hover-icon';
PortoszJsMenuBarIcon.prototype._setItemComponent = function(oComp) {
	this._drawIcon(oComp);
}
PortoszJsMenuBarIcon.prototype.setMnemonic = function(iKeyCode) {
	this._mnemonic = 0;
}
PortoszJsMenuBarIcon.prototype.setText = function(sText) {
	this.text = '';
}
PortoszJsMenuBarIcon.prototype.setEnabled = function(bEnabled) {
	this._enabled = true;
}
PortoszJsMenuBarIcon.prototype.onclick = function(e) {
	PortoszJsMenu.showCopyright();
	e.cancelBubble = true;
}
//======================== Menu Item ========================/
function PortoszJsMenuItem(sText,icon) {
	PortoszJsMenuAbstractButton.call(this,null,icon);
	this.setText(sText);
	this._accelerator = {keyCode: 0, modifiers: 0};
}
PortoszJsMenuItem.prototype = new PortoszJsMenuAbstractButton();
PortoszJsMenuItem.prototype._setItemComponent = function(oComp) {
	if (this.isTopLevelMenu()) {
		__proto__ = PortoszJsMenuAbstractButton.prototype;
		this._normalClassName = __proto__._normalClassName;
		this._hoverClassName = __proto__._hoverClassName;
		this._selectClassName = __proto__._selectClassName;
		this._selectHoverClassName = __proto__._selectHoverClassName;
	} else {
		this._normalClassName = 'PortoszJsMenuItem';
		this._hoverClassName = 'PortoszJsMenuItem hover';
		this._selectClassName = 'PortoszJsMenuItem';
		this._selectHoverClassName = 'PortoszJsMenuItem hover';
		this._drawIcon(oComp.cells[0]);
		this._setAcceleratorText(oComp.cells[2]);
	}
}
PortoszJsMenuItem.prototype._getTextContainerComponent = function() {
	if (this.isTopLevelMenu()) {
		return this.getComponent();
	} else if (this.getComponent()) {
		return this.getComponent().cells[1];
	}
	return null;
}
PortoszJsMenuItem.prototype._setAcceleratorText = function(oTextCont) {
	while(oTextCont.childNodes.length) {
		oTextCont.removeChild(oTextCont.childNodes[0]);
	}
	if (PortoszJsMenuKeys) {
		var sShortcut = PortoszJsMenuKeys.getKeyText(this._accelerator.keyCode);
		var sModifiers = PortoszJsMenuKeys.getKeyModifiersText(this._accelerator.modifiers);
		if (sShortcut && sModifiers) {
			sShortcut = sModifiers + '+' + sShortcut;
		}
		if (sShortcut) {
			oTextCont.appendChild(document.createTextNode(sShortcut));
		} else {
			oTextCont.appendChild(document.createTextNode(String.fromCharCode(160)));
		}
	} else {
		oTextCont.appendChild(document.createTextNode(String.fromCharCode(160)));
	}
}
PortoszJsMenuItem.prototype.getIndex = function() {
	if (!this.getComponent()) {
		return -1;
	}
	if (this.isTopLevelMenu()) {
		return (this._getIndex() - 1);
	}
	return this._getIndex();
}
PortoszJsMenuItem.prototype.setArmed = function(bArmed) {
	if (this.isTopLevelMenu()) {
		PortoszJsMenuAbstractButton.prototype.setArmed.call(this,bArmed);
	}
}
PortoszJsMenuItem.prototype.setAccelerator = function(iKeyCode,iModifiers) {
	var arShortcuts = PortoszJsMenuSelectionManager.__menuShortcuts__;
	var iOldKeyCode = this._accelerator.keyCode, iOldModifiers = this._accelerator.modifiers;
	if (arShortcuts[iOldModifiers][iOldKeyCode]) {
		delete arShortcuts[iOldModifiers][iOldKeyCode];
	}
	if (iKeyCode) {
		arShortcuts[iModifiers][iKeyCode] = this;
	}
	this._accelerator.keyCode = iKeyCode; 
	this._accelerator.modifiers = iModifiers;
	var oComp = this.getComponent();
	if (oComp) {
		this._setAcceleratorText(oComp.cells[2]);
	}
}
PortoszJsMenuItem.prototype.getAccelerator = function() {
	return {keyCode: this._accelerator.keyCode, modifiers: this._accelerator.modifiers};
}
PortoszJsMenuItem.prototype._process_mousedown = function(e) {
	if (this.isTopLevelMenu()) {
		PortoszJsMenuAbstractButton.prototype._process_mousedown.call(this,e);
	}
}
PortoszJsMenuItem.prototype._process_mouseup = function(e) {
	if (this.isTopLevelMenu()) {
		PortoszJsMenuAbstractButton.prototype._process_mouseup.call(this,e);
	} else if (e.getButton() == 1) {
		this.doClick();
	}
}
//======================== Menu ========================/
PortoszJsMenu.prototype = new PortoszJsMenuItem();
PortoszJsMenu.__setSelectionManager__ = function(oMenu) {
	oMenu._popup.__selectionManager__ = oMenu.__selectionManager__;
	var iItemCount = oMenu.getItemCount();
	for (var i=0; i<iItemCount; i++) { 
		var oItem = oMenu.getItem(i); 
		if (!oItem) {
			continue;
		}
		oItem.__selectionManager__ = oMenu.__selectionManager__;
		if (oItem instanceof PortoszJsMenu) {
			PortoszJsMenu.__setSelectionManager__(oItem);
		}
	}
}
PortoszJsMenu.prototype._setItemComponent = function(oComp) {
	PortoszJsMenuItem.prototype._setItemComponent.call(this,oComp);
	PortoszJsMenu.__setSelectionManager__(this);
	if (!this.isTopLevelMenu()) {
		oComp.cells[2].replaceChild(PortoszJsMenu.subSign.cloneNode(true), oComp.cells[2].childNodes[0]);
		oComp.cells[2].className = 'arrow';
	}
}
PortoszJsMenu.prototype.setAccelerator = function(iKeyCode,iModifiers) {
	this._accelerator.keyCode = 0; 
	this._accelerator.modifiers = 0;
}
PortoszJsMenu.prototype.doClick = function() {
}
PortoszJsMenu.prototype.getItem = function(idx) {
	return this._popup.getItem(idx);
}
PortoszJsMenu.prototype.getItemCount = function() {
	return this._popup.getItemCount();
}
PortoszJsMenu.prototype.getPopupMenu = function() {
	return this._popup;
}
PortoszJsMenu.prototype.insert = function(oMenuItem,idx) {
	this._popup.insert(oMenuItem,idx);
}
PortoszJsMenu.prototype.add = function(oMenuItem) {
	this.insert(oMenuItem);
}
PortoszJsMenu.prototype.insertSeparator = function(idx) {
	this._popup.insertSeparator(idx);
}
PortoszJsMenu.prototype.addSeparator = function() {
	this.insertSeparator();
}
PortoszJsMenu.prototype.remove = function(idx) {
	this._popup.remove(idx);
}
PortoszJsMenu.prototype._openTopMenu = function() {
	if (!this._enabled) {
		return;
	}
	var oComp = this._component;
	var oCoord = getElementCoordOnPage(oComp);
	var iLeft = oCoord.x;
	var iTop = oCoord.y + oComp.offsetHeight + 1;
	var oPopupComp = this._popup.getComponent();
	iLeft += oPopupComp.offsetWidth;
	if (iLeft > getWinRightSide()) {
		iLeft = getWinRightSide();
	}
	iLeft -= oPopupComp.offsetWidth;
	if (iLeft < getWinLeftSide()) {
		iLeft = getWinLeftSide();
	}
	this._popup.show(iLeft,iTop,'south');
	this._isPopupVisible = true;
	this.__selectionManager__.__setFocusedElm__();
}
PortoszJsMenu.prototype._openSubMenu = function() {
	if (!this._enabled) {
		return;
	}
	var oComp = this._component;
	var oPopupComp = this._popup.getComponent();
	var oCoord = getElementCoordOnPage(oComp);
	var iTop = oCoord.y + PortoszJsMenu.SubMenuYOffset + oPopupComp.offsetHeight;
	if (iTop > getWinBottomSide()) {
		iTop = getWinBottomSide();
	}
	iTop -= oPopupComp.offsetHeight;
	if (iTop < getWinTopSide()) {
		iTop = getWinTopSide();
	}
	var sDirection = 'east';
	var iLeft = oCoord.x + oComp.offsetWidth + oPopupComp.offsetWidth + PortoszJsMenu.SubMenuXOffset;
	if (iLeft > getWinRightSide()) { 
		iLeft = oCoord.x + 2; sDirection = 'west'; 
	}
	iLeft -= oPopupComp.offsetWidth;
	if (iLeft < getWinLeftSide()) {
		iLeft = getWinLeftSide();
	}
	var oParentPopup=((this.parentMenu instanceof PortoszJsMenu)?this.parentMenu.getPopupMenu():this.parentMenu);
	var iZIndex = parseInt(oParentPopup.getComponent().style.zIndex);
	oPopupComp.style.zIndex = iZIndex + 1;
	this._popup.show(iLeft,iTop,sDirection);
	this._isPopupVisible = true;
	this.__selectionManager__.__setFocusedElm__();
}
PortoszJsMenu.prototype._close = function() {
	if (PortoszJsMenuPopup.__timerId__ !== null) {
		window.clearTimeout(PortoszJsMenuPopup.__timerId__);
		PortoszJsMenuPopup.__timerId__ = null;
	}
	with (this._popup.getComponent().style) { 
		visibility = "hidden"; zIndex = PortoszJsMenu._zIndexMin;
		clip = 'rect(auto auto auto auto)'; 
	}
	this._popup.__isReady__ = false;
	this._isPopupVisible = false;
	this.__selectionManager__.__setFocusedElm__();
}
PortoszJsMenu.prototype._pressTopMenu = function() {
	PortoszJsMenu.closeAllOpenMenu();
	this.parentMenu.__idxOpenItem__ = this._getIndex();
	this.__selectionManager__.setSelectedPath([this.parentMenu,this]);
}
PortoszJsMenu.prototype._releaseTopMenu = function() {
	PortoszJsMenu.closeAllOpenMenu();
	this.__selectionManager__.setSelectedPath([this.parentMenu,this]);
}
PortoszJsMenu.prototype._isPressed = function() {
	return this._isPopupVisible;
}
PortoszJsMenu.prototype.setSelected = function(bSelected) {
	if (!this.getComponent()) {
		return;
	}
	this._isPopupVisible = (this.isTopLevelMenu() && bSelected && this.parentMenu.__idxOpenItem__!=-1);
	this._setCssClass(bSelected);
	if (this._selected == bSelected) {
		return;
	}
	this._selected = bSelected;
	if (this.isTopLevelMenu()) {
		if (bSelected) {
			if (this.parentMenu.__idxOpenItem__ != -1) {
				this._openTopMenu();
				this.parentMenu.__idxOpenItem__ = this._getIndex();
			}
		} else {
			this._close();
		}
	} else {
		if (!bSelected) {
			this._close();
		}
	}
}
PortoszJsMenu.prototype.isSelected = function() {
	return this._selected;
}
PortoszJsMenu.prototype.isPopupVisible = function() {
	return this._isPopupVisible;
}
PortoszJsMenu.prototype.menuSelectionChanged = function(bIncluded) {
	this.setSelected(bIncluded);
}
PortoszJsMenu.prototype.setEnabled = function(bEnabled) {
	PortoszJsMenuAbstractButton.prototype.setEnabled.call(this,bEnabled);
	if (!bEnabled && this._isPopupVisible) {
		PortoszJsMenu.closeAllOpenMenu();
	}
}
PortoszJsMenu.prototype.onchange = function(e) {
}
PortoszJsMenu.prototype._highlightFirstChild = function() {
	var i=0, j=this.getItemCount(), oItem=this.getItem(i); 
	while(!oItem && i<j) {
		oItem=this.getItem(++i);
	}
	if (oItem) {
		this.__selectionManager__.pushPathElement(oItem);
	}
}
PortoszJsMenu.prototype._highlightLastChild = function() {
	var i=this.getItemCount()-1, oItem=this.getItem(i); 
	while (!oItem && i >=0) {
		oItem=this.getItem(--i);
	}
	if (oItem) {
		this.__selectionManager__.pushPathElement(oItem);
	}
}
PortoszJsMenu.prototype._process_key_Enter = function(arPath) {
	if (this._isPopupVisible) {
		if (this.isTopLevelMenu()) {
			this._releaseTopMenu();
		} else {
			PortoszJsMenu.closeAllOpenMenu();
		}
	} else {
		if (this.isTopLevelMenu()) {
			this._pressTopMenu(); 
		} else { 
			this._openSubMenu();
		}
		this._highlightFirstChild();
	}
}
PortoszJsMenu.prototype._process_keyup_Enter = function(arPath) {
}
PortoszJsMenu.prototype._process_key_Esc = function(arPath) {
	if (this.isTopLevelMenu()) {
		if (this._isPopupVisible) {
			this._releaseTopMenu();
		} else {
			PortoszJsMenu.closeAllOpenMenu();
		}
	} else {
		if (this._isPopupVisible) {
			this._close();
		} else {
			PortoszJsMenuAbstractButton.prototype._process_key_Esc.call(this,arPath);
		}
	}
}
PortoszJsMenu.prototype._process_key_Left = function(arPath) {
	if (this.isTopLevelMenu()) {
		this._moveToPreviousSibling(true);
	} else {
		if (this._isPopupVisible) {
			this._close();
		} else {
			PortoszJsMenuAbstractButton.prototype._process_key_Left.call(this,arPath);
		}
	}
}
PortoszJsMenu.prototype._process_key_Up = function(arPath) {
	if (this._isPopupVisible) {
		this._highlightLastChild();
	} else if (this.isTopLevelMenu()) {
		this._pressTopMenu();
		this._highlightLastChild();
	} else {
		PortoszJsMenuAbstractButton.prototype._process_key_Up.call(this,arPath);
	}
}
PortoszJsMenu.prototype._process_key_Right = function(arPath) {
	if (this.isTopLevelMenu()) {
		this._moveToNextSibling(true);
	} else {
		if (this._isPopupVisible) {
			PortoszJsMenuAbstractButton.prototype._process_key_Right.call(this,arPath);
		} else {
			this._openSubMenu();
			this._highlightFirstChild();
		}
	}
}
PortoszJsMenu.prototype.__process_key_Right__ = PortoszJsMenu.prototype._process_key_Right;
PortoszJsMenu.prototype._process_key_Down = function(arPath) {
	if (this._isPopupVisible) {
		this._highlightFirstChild();
	} else if (this.isTopLevelMenu()) {
		this._process_key_Enter();
	} else {
		PortoszJsMenuAbstractButton.prototype._process_key_Down.call(this,arPath);
	}
}
PortoszJsMenu.prototype._process_mouseover = function(e) {
	if (!this._isPopupVisible) {
		this.__selectionManager__.processMouseOver(this);
		if (!this.isTopLevelMenu()) {
			this._openSubMenu();
		} else {
			this._openTopMenu();
		}
	}
}
PortoszJsMenu.prototype._process_mouseout = function(e) {
	if (!this._isPopupVisible) {
		this.__selectionManager__.processMouseOut(this);
	}
	this._isArmed = false;
}
PortoszJsMenu.prototype._process_mousedown = function(e) {
	if (!this.isTopLevelMenu()) {
		return;
	}
	if (e.getButton() == 1) {
		if (this.parentMenu.__idxOpenItem__ != this._getIndex()) {
			this._pressTopMenu();
		} else {
			this._isArmed = true;
		}
		e.returnValue = false;
	} else {
		PortoszJsMenu.closeAllOpenMenu();
	}
	e.cancelBubble = true;
}
PortoszJsMenu.prototype._process_mouseup = function(e) {
	if (!this.isTopLevelMenu()) {
		return;
	}
	if (this._isArmed) {
		this._releaseTopMenu();
	}
	this._isArmed = false;
	e.cancelBubble = true;
}
//======================== Checked Menu Item Base ========================/
function PortoszJsMenuCheckedItemAbstract(sText,icon,bSelected) {
	PortoszJsMenuItem.call(this,sText,icon);
	this.setSelected(bSelected==true);
	this.value = '';
	this._checkerSign = null;
}
PortoszJsMenuCheckedItemAbstract.prototype = new PortoszJsMenuItem();
PortoszJsMenuCheckedItemAbstract.prototype._isToggle = true;
PortoszJsMenuCheckedItemAbstract._iconCache = null;
PortoszJsMenuCheckedItemAbstract.prototype._fillIconCell = function() {
	if (this.icon && this._selected) {
		if (!this._iconCache) {
			this._iconCache = document.createElement('DIV');
			this._iconCache.style.display = 'none';
		}
		this._iconCache.appendChild(this.icon);
	}
	var oIconCell = this._component.cells[0];
	while(oIconCell.childNodes.length) {
		oIconCell.removeChild(oIconCell.childNodes[0]);
	}
	if (this._selected) {
		oIconCell.appendChild(this._checkerSign);
	} else {
		this._drawIcon(oIconCell);
	}
}
PortoszJsMenuCheckedItemAbstract.prototype._setItemComponent = function(oComp) {
	PortoszJsMenuItem.prototype._setItemComponent.call(this,oComp);
	if (!this.isTopLevelMenu()) {
		this._fillIconCell();
	}
}
PortoszJsMenuCheckedItemAbstract.prototype.onchange = function(e) {
}
PortoszJsMenuCheckedItemAbstract.prototype._setSelected = function() {
}
PortoszJsMenuCheckedItemAbstract.prototype.setSelected = function(bSelected) {
	var bLastState = this._selected;
	if (this.isTopLevelMenu()) {
		PortoszJsMenuAbstractButton.prototype.setSelected.call(this,bSelected);
	} else {
		if (this._selected == bSelected) {
			return;
		}
		this._selected = bSelected;
		if (this.getComponent()) {
			this._fillIconCell();
		}
	}
	this._setSelected();	
	if (bLastState == this._selected) {
		return;
	}
	var e = {src: this, cancelBubble: false};
	var oMenuElm = this;
	while (!e.cancelBubble && oMenuElm) {
		if (oMenuElm instanceof PortoszJsMenuBar || oMenuElm instanceof PortoszJsMenuPopup) {
			PortoszJsMenu.onchange(e); break;
		}
		oMenuElm.onchange(e);
		oMenuElm = oMenuElm.parentMenu;
	}
}
//======================== Checkbox Menu Item ========================/
function PortoszJsMenuCheckBoxItem(sText,icon,bSelected) {
	PortoszJsMenuRequestParamHolder.call(this);
	PortoszJsMenuCheckedItemAbstract.call(this,sText,icon,bSelected);
	this._checkerSign = PortoszJsMenu.checkSign.cloneNode(true);
}
PortoszJsMenuCheckBoxItem.prototype = new PortoszJsMenuCheckedItemAbstract();
PortoszJsMenuCheckBoxItem.prototype.setInterface(PortoszJsMenuRequestParamHolder);
PortoszJsMenuCheckBoxItem.prototype._setSelected = function() {
	if (this.value === null) {
		this.value = '';
	}
	if (this._selected) {
		this.setRequestParamValue(this.value); 
	} else {
		this.removeRequestParam();
	}
}
PortoszJsMenuCheckBoxItem.prototype._doClick = function() {
	this.setSelected(!this._selected);
}
PortoszJsMenuCheckBoxItem.prototype.setValue = function(val) {
	var bSelected = (val !== null);
	this.setSelected(bSelected);
	this.setRequestParamValue(val);
	this.value = (bSelected ? val : '');
}
PortoszJsMenuCheckBoxItem.prototype.getValue = function() {
	return (this._selected ? this.value : null);
}
//======================== Radio Button Menu Item ========================/
function PortoszJsMenuRadioButtonItem(sText,icon,bSelected,sValue) {
	PortoszJsMenuCheckedItemAbstract.call(this,sText,icon,bSelected);
	this._buttonGroup = null;
	this.value = (sValue+'');
	this._checkerSign = PortoszJsMenu.radioSign.cloneNode(true);
}
PortoszJsMenuRadioButtonItem.prototype = new PortoszJsMenuCheckedItemAbstract();
PortoszJsMenuRadioButtonItem.prototype._doClick = function() {
	this.setSelected(true);
}
PortoszJsMenuRadioButtonItem.prototype._setSelected = function() {
	if (this._buttonGroup) {
		this._buttonGroup.setSelected(this, this._selected);
		this._buttonGroup.setRequestParamValue(this.value);
	}
}
PortoszJsMenuRadioButtonItem.prototype.setGroup = function(oButtonGroup) {
	if (typeof(oButtonGroup) != 'object') {
		return;
	}
	if (oButtonGroup != null) {
		if (!(oButtonGroup instanceof PortoszJsMenuButtonGroup)) {
			return;
		}
	}
	if (this._buttonGroup == oButtonGroup) {
		return;
	}
	if (this._buttonGroup) {
		this._buttonGroup.remove(this);
	}
	this._buttonGroup = oButtonGroup;
	if (oButtonGroup) {
		oButtonGroup.add(this);
	}
}
//======================== Button Group ========================/
function PortoszJsMenuButtonGroup() {
	this._buttons = [];
}
PortoszJsMenuButtonGroup.prototype = new PortoszJsMenuRequestParamHolder();
PortoszJsMenuButtonGroup.prototype._getButtonIndex = function(oRadioButtonMenuItem) {
	var arButtons = this._buttons, iLength = this._buttons.length;
	for (var i=0; i<iLength; i++) {
		if (arButtons[i] === oRadioButtonMenuItem) {
			return i;
		}
	}
	return -1;
}
PortoszJsMenuButtonGroup.prototype._setOnlyOneSelected = function(idx) {
	var arButtons = this._buttons;
	if (arButtons.length == 0) {
		return;
	}
	var arSelectedIdxs = [];
	if (idx >= 0) {
		if (arButtons[idx].isSelected()) {
			arSelectedIdxs[0] = idx;
		}
	}
	for (var i=0; i<arButtons.length; i++) {
		if (arButtons[i].isSelected() && i != idx) {
			arSelectedIdxs[arSelectedIdxs.length] = i;
		}
	}
	if (arSelectedIdxs.length == 0) {
		arButtons[0].setSelected(true);
	} else {
		for (var i=1; i<arSelectedIdxs.length; i++) {
			arButtons[ arSelectedIdxs[i] ].setSelected(false);
		}
	}
}
PortoszJsMenuButtonGroup.prototype.add = function(oRadioButtonMenuItem) {
	var i = this._getButtonIndex(oRadioButtonMenuItem);
	if (i >= 0) {
		return;
	}
	this._buttons[this._buttons.length] = oRadioButtonMenuItem;
	this._setOnlyOneSelected(this._buttons.length-1);
	oRadioButtonMenuItem.setGroup(this);
}
PortoszJsMenuButtonGroup.prototype.remove = function(oRadioButtonMenuItem) {
	var i = this._getButtonIndex(oRadioButtonMenuItem);
	if (i == -1) {
		return;
	}
	var iLength = this._buttons.length - 1;
	while (i < iLength) {
		this._buttons[i] = this._buttons[i+1];
	}
	this._buttons.length = iLength;
	this._setOnlyOneSelected(-1);
	oRadioButtonMenuItem.setGroup(null);
}
PortoszJsMenuButtonGroup.prototype.getButtonCount = function() {
	return this._buttons.length;
}
PortoszJsMenuButtonGroup.prototype.getButtons = function() {
	return this._buttons;
}
PortoszJsMenuButtonGroup.prototype.setSelected = function(oRadioButtonMenuItem,bSelected) {
	var i = this._getButtonIndex(oRadioButtonMenuItem);
	if (i == -1) {
		return;
	}
	if (oRadioButtonMenuItem.isSelected() != bSelected) {
		oRadioButtonMenuItem.setSelected(bSelected);
		return;
	}
	this._setOnlyOneSelected(i);
}
PortoszJsMenuButtonGroup.prototype.setValue = function(val) {
	var arButtons = this._buttons, j = this._buttons.length;
	var oRadioButtonMenuItem = null;
	for (var i=0; i<j; i++) if (arButtons[i].value == val) {
		oRadioButtonMenuItem = arButtons[i];
		break;
	}
	if (oRadioButtonMenuItem == null) {
		return;
	}
	oRadioButtonMenuItem.setSelected(true);
}
PortoszJsMenuButtonGroup.prototype.getValue = function() {
	var arButtons = this._buttons, j = this._buttons.length;
	for (var i=0; i<j; i++) {
		if (arButtons[i].isSelected()) {
			return arButtons[i].value;
		}
	}
	return null;
}
//======================== Global Event handler ========================/
function OnloadManagerbe(){
	document.addEventListener('onmouseover', PortoszJsMenu.closeAllOpenMenu, false);
	document.addEventListener('mousedown', PortoszJsMenu.closeAllOpenMenu, false);
	document.addEventListener('keydown', PortoszJsMenuSelectionManager.processKeyDown, true);
	document.addEventListener('keyup', PortoszJsMenuSelectionManager.processKeyUp, true);
}
womAdd("OnloadManagerbe()");

