function wz_tooltip_Menu(ulid, isAdmin, isOwner) {
	
	var wz_tooltip_Menu = cssDragDropMenu(ulid, {
						draggableclass:   		'draggableclass',
						irrelevantclass:		'irrelevant',
						draghandleclass:		'draghandle',
						folderclass:      		'folder',
						overclass: 				'over',
						draggedclass:     		'draggedclass',
						dragoverclass:			'dragoverclass',
						openedclass:     		'openedclass',
						newsubmenudummyclass:	'newsubmenudummyclass', 
						irrelevantfolderclass:	'irrelevantfolderclass',
						irrelevantoverclass:	'irrelevantoverclass',
						newsubmenudummytext:  	'<div class="div_menu_item_outer">Drop here</div>', 
						onStartDragging: function (lie, ule) {
																wz_tooltip_Menu.realyHideToolTip();
																	if (wz_tooltip_Menu.menuInPlaceEditor) 
																		wz_tooltip_Menu.menuInPlaceEditor.handleFormCancellation();
																	if (wz_tooltip_Menu.editedliid) 
																		wz_tooltip_Menu.hideMenuAddForm(wz_tooltip_Menu.editedliid);
																	wz_tooltip_Menu.realyHideToolTip();
																	},
						onEndDragging:	function(lie, ule, index) {
									new Ajax.Request(
												 '/menu/a_move.php?menu_id=' + 
															lie.id.replace(/li_/,'') + '&menu_position='+index+'&menu_parent_id=' + 
															ule.id.replace(/ul_/,'') + '&rand=' + Math.random(),
													{
													method: 'GET',
													onSuccess: function(transport) {
														
														},
													onFailure: function() {
														alert('server error');
														}
													 }
												 );
									},
//						isDropable: 	this.isMenuItemDropable,
						onChange:	function (lie) {
											if ($('add_item_li_0').nextSibling)
												wz_tooltip_Menu.insertBefore($('add_item_li_0').nextSibling, $('add_item_li_0'));
											},
						timeout: 200
						});

	wz_tooltip_Menu.menuInPlaceEditor = null;
	wz_tooltip_Menu.menuOldSpanValue = '';
	wz_tooltip_Menu.isAdmin = isAdmin;
	wz_tooltip_Menu.isOwner = isOwner;
	wz_tooltip_Menu.showntooltipid = 0;
	wz_tooltip_Menu.editmenuwin = null;
	wz_tooltip_Menu.editmenuwinopened = false;

	wz_tooltip_Menu.getURL = function (l) {
		if (!this.frozeditem && l)
			document.location.href = l;
		}
	
	wz_tooltip_Menu.isMenuItemDropable = function(element,parentelement,prevelement,nextelement,def) {
	return def;
	}

	wz_tooltip_Menu.createAddItemLI = function(ule) {
	ule = $(ule);
	if (!ule) return;
	tmpid = ule.id.replace(/ul_/,'');
		ule.insert({'bottom': '<li class="'+wz_tooltip_Menu.options.irrelevantfolderclass + ' ' + wz_tooltip_Menu.options.irrelevantoverclass +'" id="add_item_li_'+tmpid+'"><div id="div_menu_add_'+tmpid+'" class="adddiv"><img src="/img/0.png" width="15" height="15"><a '
		+'href="#" id="a_menu_add_'+tmpid+'" onClick="return menuAddForm(\''+tmpid+'\');"><span>Add menu item</span></a></div></li>'
		});
	}
//??
wz_tooltip_Menu.higlightActive = function(lie) { 
	lie = $(lie);
	var tmpid = lie.id.replace(/li_/,'');
	var tmpactive = ((lie.readAttribute('active')=='1')?'1':0);
	if (!tmpactive) 
		lie.down('span').addClassName('inactiveitem');
	else 
		lie.down('span').removeClassName('inactiveitem');
	}

	

wz_tooltip_Menu.realyShowToolTip = function(e,liel) {
	this.tooltiptimer = null;
	this.tooltipplanedid = 0;
	this.openedtooltipli = liel;
	var tmpis = liel.id.replace(/li_/,'');
	psh = liel.cumulativeOffset();
	var stt = false;
	if (liel.readAttribute('activable')=='1') 
		{
		$('menutooltip').down('img',1).src = '/img/active_' + liel.readAttribute('active')  + '.png';
		$('menutooltip').down('img',1).show();
		stt = true;
		}
	else 
		$('menutooltip').down('img',1).hide();

	if (liel.readAttribute('lockable')=='1') {
		$('menutooltip').down('img',2).src = '/img/locked_' + liel.readAttribute('locked')  + '.png';
		$('menutooltip').down('img',2).show();
		stt = true;
		}
	else 
		$('menutooltip').down('img',2).hide();
		
	if (liel.readAttribute('editable')=='1') {
		$('menutooltip').down('img',0).show();
		stt = true;
		}
	else 
		$('menutooltip').down('img',0).hide();

	if (liel.readAttribute('deletable')=='1') {
		$('menutooltip').down('img',3).show();
		stt = true;
		}
	else 
		$('menutooltip').down('img',3).hide();

	if (!stt)
		return this.realyHideToolTip();
		
	if ($('menutooltip_' + tmpis)) 
		$('menutooltip_' + tmpis).innerHTML = $('menutooltip').innerHTML;
	else 
		this.openedtooltipli.insert({'bottom': '<div id="menutooltip_'+ tmpis +'" class="menutooltipclass">'+$('menutooltip').innerHTML+'</div>'});
	$('menutooltip_' + tmpis).show();
	}

wz_tooltip_Menu.realyHideToolTip = function() {
	if (this.tooltiptimer) {
		this.tooltipplanedid = 0;
		clearTimeout(this.tooltiptimer);
		this.tooltiptimer = null;
		}
	if (this.openedtooltipli && $(this.openedtooltipli.id.replace(/li_/,'menutooltip_')))
		$(this.openedtooltipli.id.replace(/li_/,'menutooltip_')).hide();
	this.openedtooltipli = null;
	}
	
wz_tooltip_Menu.showToolTip = function(e,id) {
	if (this.frozeditem) return false;
	if (this.dragging) return false;
	if (e) Event.stop(e);
	liel = $('li_' + id);
	if (Event.findElement(e,'li')!=liel) return false;
	if (this.openedtooltipli && (this.openedtooltipli==liel)) return;
	if (this.openedtooltipli) this.hideToolTip();
	_self = this;
	if (this.tooltiptimer) {
		this.tooltipplanedid = 0;
		clearTimeout(this.tooltiptimer);
		}
	this.tooltipplanedid = id;
	this.tooltiptimer = setTimeout(function () {_self.realyShowToolTip(e,liel)},250);
	}

wz_tooltip_Menu.cancelToolTip = function(e) {
	if (this.tooltiptimer && !this.openedtooltipli) {
		clearTimeout(this.tooltiptimer);
		_self = this;
		liel = $('li_' + this.tooltipplanedid);
		this.tooltiptimer = setTimeout(function () {_self.realyShowToolTip(e,liel)},250);
		}
	}

wz_tooltip_Menu.hideToolTip = function(e) {
	if (this.tooltiptimer) 
		clearTimeout(this.tooltiptimer);
	if (e) Event.stop(e);
	else return;
	if (!e || !e.relatedTarget || (e.relatedTarget.tagName=='LI') || (e.relatedTarget.up('li')!=this.openedtooltipli)) 
			this.realyHideToolTip();;
	}


wz_tooltip_Menu.switchMenuItem = function(img) {
	var tmpid = img.up('li').id.replace(/li_/,'');
	var setto = ($('li_' + tmpid).readAttribute('active')=='1'?'0':'1');
	new Ajax.Request(
				 '/menu/a_active.php?menu_id=' + tmpid + '&menu_active=' + setto + '&rand=' + Math.random(),
				 	{
					method: 'get',
					onSuccess: function(transport) {
						if (transport.responseText.match(/^[\d]+:(1|0)$/))  {
							var newval = transport.responseText.replace(/[\d]+:/,'');
							var newvar = transport.responseText.replace(/:(1|0)$/,'');
							if ($('li_' + newvar)) {
								$('li_' + newvar).writeAttribute({active: newval});
								wz_tooltip_Menu.higlightActive($('li_' + newvar));
								$('menutooltip_' + newvar).down('img',1).src = '/img/active_' + newval + '.png';
								}
							}
						else
							alert('server error: ' + transport.responseText);
						},
					onFailure: function() {
							alert('server error');
						}
					 }
				 );
	}
	
wz_tooltip_Menu.lockMenuItem = function(img) {
	var tmpid = img.up('li').id.replace(/li_/,'');
	if ($('li_'+tmpid).readAttribute('lockable')!='1')  return;
	var setto = ($('li_' + tmpid).readAttribute('locked')=='1'?'0':'1');
	new Ajax.Request(
				 '/menu/a_lock.php?menu_id=' + tmpid + '&menu_locked=' + setto + '&rand=' + Math.random(),
				 	{
					method: 'get',
					onSuccess: function(transport) {
						if (transport.responseText.match(/^[\d]+:(1|0)$/))  {
							var newval = transport.responseText.replace(/[\d]+:/,'');
							var newvar = transport.responseText.replace(/:(1|0)$/,'');
							if ($('li_' + newvar)) {
								$('li_' + newvar).writeAttribute({locked: newval});
								wz_tooltip_Menu.higlightActive($('li_' + newvar));
								$('menutooltip_' + newvar).down('img',2).src = '/img/locked_' + newval + '.png';
								}
							}
						else
							alert('server error: ' + transport.responseText);
						},
					onFailure: function() {
							alert('server error');
						}
					 }
				 );
	}
	
wz_tooltip_Menu.removeMenuItem = function(img) {
	this.frozeItem(img.up('li'));
	var tmpid = img.up('li').id.replace(/li_/,'');
		if (confirmLink('Are you sure? You want remove menu item `' + $('li_' + tmpid).down('span').innerHTML + '`?')) {
			if ( $('ul_' + tmpid).select('li').any( function (lie) {return ( !lie.hasClassName(wz_tooltip_Menu.options.irrelevantfolderclass) )} ) &&
					!confirmLink('Thes menu item has submenu items. If you sure you want remove please press OK') )
					return this.unfrozedelayedItem();
			new Ajax.Request(
				 '/menu/a_remove.php?menu_id=' + tmpid + '&rand=' + Math.random(),
				 	{
					method: 'get',
					onSuccess: function(transport) {
						if (transport.responseText.match(/^([\d]+:)+$/)) {
							var nevar = transport.responseText.replace(/^([\d]+).*$/,"$1");
							if ($('li_' + nevar))
								wz_tooltip_Menu.removeItem('li_' + nevar);
							}
						else
							alert('server error: ' + transport.responseText);
						wz_tooltip_Menu.unfrozedelayedItem();
						},
					onFailure: function() {
							alert('server error');
							wz_tooltip_Menu.unfrozedelayedItem();
						}
					 }
				 );
			}
		else {
			this.unfrozedelayedItem();
			}
		}

wz_tooltip_Menu.unfrozedelayedItem = function() {
	if (this.frozeditem) this.frozeditem.removeClassName(this.options.draggedclass);
	this.onmousemove = function (event) {
		wz_tooltip_Menu.onmousemove = null;
		wz_tooltip_Menu.frozeItem(null);
		}
	return false;
	}
		
wz_tooltip_Menu.frozeItem = function(lie) {
		if (this.openedtooltipli)
			this.realyHideToolTip(this.openedtooltipli);
		if (lie) {
			this.up('.cssMENU').addClassName('tmpcssMENU');
			this.up('.cssMENU').removeClassName('cssMENU');
			lie.ancestors().find(function (ae) {
				if (!ae.descendantOf(wz_tooltip_Menu)) return true;
				if (ae.nodeName=='UL') ae.addClassName('forceopened');
				return false;
				} );
			lie.addClassName(this.options.draggedclass);
			}
		else 
			{
			if (this.frozeditem) {
				this.frozeditem.removeClassName(this.options.draggedclass);
				this.frozeditem.ancestors().find(function (ae) {
				if (!ae.descendantOf(wz_tooltip_Menu)) return true;
				if (ae.nodeName=='UL') ae.removeClassName('forceopened');
				return false;
				} );
				}
			this.up('.tmpcssMENU').addClassName('cssMENU');
			this.up('.tmpcssMENU').removeClassName('tmpcssMENU');
			}
		this.frozeditem = lie;
		}
		
	
wz_tooltip_Menu.showMenuUpdateForm = function(img) {
	var liel = this.openedtooltipli;
	if (!liel) return;
	this.realyHideToolTip();
	this.frozeItem(liel);
	var editid = liel.id.replace(/li_/,'');
	var spanelement = liel.down('span');
	if (this.menuInPlaceEditor) {
			this.menuInPlaceEditor.handleFormCancellation(null);
			};
	spanelement.hide();
	this.menuInPlaceEditor = new Ajax.InPlaceEditor(spanelement,'/menu/a_update.php', {
			okControl:				false,
			cancelControl:			false,
			externalControlOnly:	true,
			submitOnBlur:			false,
			highlightcolor:			'',
			highlightendcolor:		'',
			formId:					'inplaceeditorform_id',
			callback:				function(form, value) {
										return 'menu_id='+ editid +'&menu_title=' +Url.encode(value);
										},
			onFormCustomization: function (inplaceeditor, form) {
				Event.observe(form.down('input'),'keydown',inplaceeditor.checkForEscapeOrReturn.bind(inplaceeditor));
				},
			onComplete: 			function (transport,spanelement) {
										wz_tooltip_Menu.menuInPlaceEditor.destroy();
										wz_tooltip_Menu.menuInPlaceEditor = null;
										wz_tooltip_Menu.unfrozedelayedItem();
										if (transport) 
											wz_tooltip_Menu.updateLI(transport,spanelement);
										else
											wz_tooltip_Menu.restoreFailedLI(transport,spanelement); 
										},
			onFailure: 				function (transport,spanelement) {
										wz_tooltip_Menu.menuInPlaceEditor.destroy();
										wz_tooltip_Menu.menuInPlaceEditor = null;
										alert('failed editor');
										wz_tooltip_Menu.unfrozedelayedItem();
										wz_tooltip_Menu.restoreFailedLI(transport,spanelement); 
										}
			});
		this.menuInPlaceEditor.getText = function() {
				return this.element.innerHTML;
				},
		spanelement.writeAttribute('oldvalue',spanelement.innerHTML);
		this.menuInPlaceEditor.enterEditMode();
	}
		
wz_tooltip_Menu.updateLI = function(transport,spanelement) {
	if (transport && transport.responseText.match(/^[\d]+:.*$/)) {
		var newval = Url.decode(transport.responseText.replace(/^[\d]+:/,''));
		var newvar = transport.responseText.replace(/^([\d]+):.*$/,"$1");
		if ($('li_' + newvar)) {
			$('li_' + newvar).down('span').innerHTML = newval;
			}
		}
	else {
		wz_tooltip_Menu.restoreFailedLI(transport,spanelement);
		}
	}

wz_tooltip_Menu.restoreFailedLI = function(transport,spanelement) {
	if (spanelement) {
		spanelement.innerHTML = spanelement.readAttribute('oldvalue');
		spanelement.writeAttribute('oldvalue','');
		}
	if (transport) {
		alert("Error communicating with the server: " + transport.responseText.stripTags());
		}
	}
	
wz_tooltip_Menu.showMenuAddForm = function(id) {
		if (this.frozeditem) return false;
		var pn = $('add_item_li_' + id);
		if (!pn) return false;
		this.frozeItem(pn);
		this.editedliid = id;
		pn.down('span').hide(); 
		pn.down('.divforaddform').innerHTML = $('addform').innerHTML;
		pn.down('input').focus(); 
		pn.down('input.menu_parent_id').value = id;
		pn.down('input.cancelbutton').onclick = function (event) {
			wz_tooltip_Menu.hideMenuAddForm(id);
			};
		pn.down('form').onsubmit = function () {
			$('add_item_li_'+ id).down('input.savingbutton').value = 'saving';
			this.down('input.savingbutton').disabled = true;
			this.request({
			onComplete: function(transport) {
				if (transport.responseText.match(/^[\d]+:.*/gi))  {
							var newval = transport.responseText.replace(/[\d]+:/gi,'');
							var newvar = transport.responseText.replace(/:.*$/gi,'');
							wz_tooltip_Menu.addItem(newval,pn,'top');
							}
						else{
							alert('server error!!!:' + transport.responseText);
							}
					wz_tooltip_Menu.hideMenuAddForm(id);
				},
			onFailure: function() {
				alert('server error');
				wz_tooltip_Menu.hideMenuAddForm(id);
				}
				});
			return false;
			}
		pn.down('.divforaddform').show();
		return false;
	}
	
	
wz_tooltip_Menu.hideMenuAddForm = function(id) {
		$('add_item_li_'+ id).down('.divforaddform').hide();
		$('add_item_li_'+ id).down('.divforaddform').innerHTML = '';
		$('add_item_li_'+ id).down('span').show();
		this.unfrozedelayedItem();
		this.editedliid = 0;
	}
	
	
return wz_tooltip_Menu;

}