/*
version = '0046 2011-10-25'
*/
var JMserverURL ='';
var JMlang ='ru';
var JMserverFrame;
var JMserverDoc;
var JMserverStatus=1;
var JMtimeout1;
var JMtimeout2;
var JMcontrol;
var JMcontextmenu;
var JMcontext_id='';
var JMcontext_tree='';
var JMcontext_parent_id='';
var JMcontext_rootid;
var JMsavesrc;
var JMbuffer_id=0;
var JMbuffer_type='none';
var JMbuffer_tree='';
var JMtext = new Array();
var JMconfConfirm=0;
var JMuserID;
var JMuserName;
var JMclockStart;
var JMclockStop;
var JMtimeid;
var JMfilteradd;
var JMflimit = 9;

/*                        0           1                      2                     3               4                     5               6                     7                     8        9            10             11          12           13               14                                  15        16  17                      18                      19                      20                        21                22               23                                          24                    25                                26            27           28 */
JMtext["ru"] = new Array("Удалить ", "Очистить всю ветвь ", "Открыть всю ветвь ", "Переместить ", "Переместить ветвь ", "Скопировать ", "Скопировать ветвь ", "Не заполнены поля!", "готов", "запрос...", "свойства",    "открыть ", "закрыть ", " все выбранные", "Куда переместить? (родительский)", "Ошибка!", "", "Над каким поставить?", "Под каким поставить?", "По какому параметру?", "Шаблон, стиль, список?", "Образец? (id)",  "параметр(ы) ",  "ДАННАЯ ОПЕРАЦИЯ НЕОБРАТИМА!\nПродолжить?", "Открыть на чтение", "Выйти из режима редактирования?", "Отправить ", "/ корень ", "в Корзину ");
JMtext["en"] = new Array("Delete ",  "Pure Whole Branch ",  "Open Whole Branch ", "Move ",        "Move Branch ",       "Copy ",        "Copy Branch ",       "Not required!",      "ready", "busy...",   "properties",  "open ",    "close ",   " all selected",  "Where to move? (new parent)",      "Error!",  "", "Where to shift?",      "Where to shift?",      "Which parameter?",     "Template, style, cell?", "Example? (id)",  "parameter(s) ", "YOU CANOT RESTORE PARAMETERS!\nContinue?", "Make visible",      "Continue without saving?",        "Send ",      "/ root ",   "in Trash");
JMtext["de"] = JMtext["en"];
var imgMinusSrc = '/comm/images/16/minus.gif';
var imgPlusSrc  = '/comm/images/16/plus.gif';
var imgNullSrc  = '/comm/images/16/folder_null.gif';
var imgStatusBusySrc	= '/comm/images/16/statusbusy.gif';
var imgStatusReadySrc	= '/comm/images/16/statusready.gif';
var JPset=0;

function getServerDoc()
{
	if (!JMserverFrame && document.createElement)
	{
		try
		{
			var tempIFrame=document.createElement('iframe');
			tempIFrame.setAttribute('id','serverIframe');
			tempIFrame.setAttribute('name','serverIframe');
			tempIFrame.style.border='0px';
			tempIFrame.style.width='0px';
			tempIFrame.style.height='0px';
			JMserverFrame = document.body.appendChild(tempIFrame);
			if (document.frames)
				JMserverFrame = document.frames['serverIframe'];
	    }
		catch(exception)
		{
			var iframeHTML = '<iframe id="serverIframe" name="serverIframe" style="border:0px; width:0px; height:0px;"></iframe>';
			document.body.innerHTML += iframeHTML;
			JMserverFrame = new Object();
			JMserverFrame.document = new Object();
			JMserverFrame.document.location = new Object();
			JMserverFrame.document.location.iframe = document.getElementById('serverIframe');
			JMserverFrame.document.location.replace = function(location)
			{
				this.iframe.src = location;
			}
		}
	}
	
	if (navigator.userAgent.indexOf('Gecko') !=-1)
	{
	/* 
		while(!JMserverFrame.contentDocument)
		{
			alert('wait...');
		}
	*/
	}
	if (JMserverFrame.contentDocument)
	{
		JMserverDoc = JMserverFrame.contentDocument;
	}
	else if (JMserverFrame.contentWindow)
	{
		JMserverDoc = JMserverFrame.contentWindow.document;
	}
	else if (JMserverFrame.document)
	{
		JMserverDoc = JMserverFrame.document;
	}
	else
	{
		JMserverDoc = JMserverFrame;
		alert('Loaded. Ok');
	}
}

function serverRequest(URL)
{
	if(JMserverStatus == 1)
	{
		JMtimeout2 = setTimeout('serverRequest("'+URL+'")',500);
		return false;
	}
	clearTimeout(JMtimeout2);
	getServerDoc();
	if(JMserverDoc)
	{
		setServerStatus(1, JMtext[JMlang][9], JMserverURL + URL);
		//JMserverDoc.location.replace(JMserverURL + URL);
		JMserverDoc.location.replace(JMserverURL + URL + '&rand=' + Math.random());
		return true;
	}
	return false;
}


function responseHandler(doc,id,action)
{
	//alert('3');
	var addparams1 = doc.getElementById('addparams');
	if(addparams1 && addpars)
	{
		addpars.innerHTML = addparams1.innerHTML;
	}

	var allparams1 = doc.getElementById('allparams');
	if(allparams1)
	{
		var allparams2 = document.getElementById('allparams');
		if(allparams2)
			allparams2.innerHTML = allparams1.innerHTML;
		
	}

	var mainmenu1 = doc.getElementById('mainmenu');
	if(mainmenu1)
	{
		var mainmenu2 = document.getElementById('mainmenu');
		if(mainmenu2)
			mainmenu2.innerHTML = mainmenu1.innerHTML;
	}

	var addmenu1 = doc.getElementById('addmenu');
	if(addmenu1)
	{
		var addmenu2 = document.getElementById('addmenu');
		if(addmenu2)
			addmenu2.innerHTML = addmenu1.innerHTML;
	}

	var divctrl1 = doc.getElementById('divctrl');
	if(divctrl1)
	{
		var divctrl2 = document.getElementById('divctrl');
		if(divctrl2)
			divctrl2.innerHTML = divctrl1.innerHTML;
	}

	var panels1 = doc.getElementById('panels');
	if(panels1)
	{
		var panels2 = document.getElementById('panels');
		if(panels2)
			panels2.innerHTML = panels1.innerHTML;
	}

	var tpdiv1 = doc.getElementById('tpdiv');
	if(tpdiv1)
	{
		var tpdiv2 = document.getElementById('tpdiv');
		if(tpdiv2)
			tpdiv2.innerHTML = tpdiv1.innerHTML;
		tpdiv2.style.visibility = 'visible';
		tpdiv2.style.display = 'block';
	}


	var spform = doc.getElementById('postform');
	var idiv = document.getElementById('infodiv');
	var pform = document.getElementById('postform');
	var fdiv = document.getElementById('formdiv');

	if(spform)
	{
		if(is_opera)
			pform.innerHTML = spform.innerHTML.replace(/\\"/g,'&quot;');
		else
			pform.innerHTML = spform.innerHTML;
		fdiv.style.visibility = 'visible';
		fdiv.style.display = 'block';
		document.onkeyup = null;

/*
if(typeof Mytiny != 'undefined')
	alert(Mytiny);
alert(spform.innerHTML);
*/
	}
	else
	{
		if(fdiv)
		{
			innerd  = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_id);
			innerdp = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_parent_id);
			if((action != 'open' && action != 'close' && action != 'none') || (!innerd && !innerdp))
			{
				fdiv.style.visibility = 'hidden';
				fdiv.style.display = 'none';
				document.onkeyup = keyhandler;
			}
		}
	}

	var sidiv = doc.getElementById('infodiv');

	if(sidiv && idiv)
	{
		idiv.innerHTML = sidiv.innerHTML;
		idiv.style.visibility = 'visible';
		idiv.style.display = 'block';
	}
	else
	{
		if(idiv)
		{
			innerd  = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_id);
			innerdp = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_parent_id);
			if((action != 'open' && action != 'close' && action != 'none') || (!innerd && !innerdp))
			{
				idiv.style.visibility = 'hidden';
				idiv.style.display = 'none';
			}
		}
	}

	var sourcediv0 = doc.getElementById('subdiv0');
	var targetdiv0 = document.getElementById('subdiv0');
	if(sourcediv0 && targetdiv0)
	{
		targetdiv0.innerHTML = sourcediv0.innerHTML;
		targetdiv0.setAttribute('loaded','yes',0);
	}

	sourcediv0 = doc.getElementById('subdivtreefilter0');
	targetdiv0 = document.getElementById('subdivtreefilter0');
	if(sourcediv0 && targetdiv0)
	{
		targetdiv0.innerHTML = sourcediv0.innerHTML;
		targetdiv0.setAttribute('loaded','yes',0);
	}

	sourcediv0 = doc.getElementById('subdivtreejparams0');
	targetdiv0 = document.getElementById('subdivtreejparams0');
	if(sourcediv0 && targetdiv0)
	{
		targetdiv0.innerHTML = sourcediv0.innerHTML;
		targetdiv0.setAttribute('loaded','yes',0);
	}

	highlightFolder();

	switch(action)
	{
		case 'func':
		case 'view':
		case 'setfilter':
		case 'update':
		case 'update_par':
		case 'update_any':
		case 'updatelist':
		case 'updateexport':
		case 'updatelistresize':
		case 'sendmsgsubmit':
		case 'sort':
		case 'open':
		case 'openbranch':
		case 'openparents':
		case 'add':
		case 'chtreeheight':
		case 'chtreewidth':
		case 'import':
		case 'editpar':
		case 'clone':
		case 'dubl':
		case 'del':

			var sourcediv = doc.getElementById('maindiv' + JMcontext_tree + id);
			var targetdiv = document.getElementById('maindiv' + JMcontext_tree + id);
			if(sourcediv && targetdiv)
			{
				targetdiv.innerHTML = sourcediv.innerHTML;
				var subdiv = document.getElementById('subdiv' + JMcontext_tree + id);
				if(subdiv)
				{
					subdiv.setAttribute('loaded','yes','0');
					var im = document.getElementById('img' + JMcontext_tree + id);
					if(im)
					{
						if(im.innerHTML) im.innerHTML = '&#151;';
						if(!is_gecko)
							im.alt = im.title = JMtext[JMlang][12] + JMtext[JMlang][27] + id; // close
						im.src = imgMinusSrc;
						if(im.parentNode) im.parentNode.className = 'tree';
					}
				}
			}
			highlightFolder();
		case 'goto':
		case 'move':
		case 'shift':
		case 'close':
		case 'closebranch':
		case 'branch':
		case 'edit':
		case 'icon':
		case 'export':
		case 'exporttoimport':
		case 'resizelist':
		case 'editor':
		case 'createdoc':
			add_all_params();
		case 'walk':
		case 'chrootid':
		break;
	}
	highlightPanel();
	setServerStatus(0, JMtext[JMlang][8], '');
}

function manager_stop()
{
	setServerStatus(0, JMtext[JMlang][8], '');
	if(JMserverDoc)
	{
		JMserverDoc.location.replace(JMserverURL);
		//return false;
		return true;
	}
	return false;
}

function serverOpen(id,tree)
{
	//return serverRequest('&tmp=' + id + '&tree=' + tree);
	return serverRequest('&open=' + id + '&tree=' + tree);
}

function serverClose(id,tree)
{
	targetdiv = document.getElementById('subdiv' + tree + id);
	targetdiv.innerHTML='';
	targetdiv.setAttribute('loaded','false',0);
	return serverRequest('&close=' + id + '&tree=' + tree);
}

function toggle(id,tree)
{
	if(tree!=JMcontext_tree)
		new_context(id,tree);

    div = document.getElementById('subdiv' + tree + id);
    im = document.getElementById('img' + tree + id);

	if(!im) return false;
	if((im.src && im.src.indexOf(imgNullSrc) != -1) || (im.innerHTML=='&nbsp;')) return false;

	if(div && div.getAttribute('loaded')=='yes' && im)
	{
		if (div.style.display == 'none')
		{
			if(im.innerHTML) im.innerHTML = '&#151;';
			if(im.parentNode) im.parentNode.className = 'tree';
			im.src = imgMinusSrc;
			im.alt = im.title = JMtext[JMlang][12] + JMtext[JMlang][27] + id; // close
			div.style.display = 'block';
			div.style.visibility = 'visible';
		}
		else
		{
			if(im.innerHTML) im.innerHTML = '+';
			im.src = imgPlusSrc;
			im.alt = im.title = JMtext[JMlang][11] + JMtext[JMlang][27] + id; // open
			div.style.display = 'none';
			div.style.visibility = 'hidden';
			foldertd = document.getElementById('foldertd' + tree + id);
			if(foldertd && foldertd.background)
				foldertd.background = foldertd.background.replace('tr_back4','tr_back5');
			return serverClose(id,tree);
		}
		return false;
	}
	return serverOpen(id,tree);
}

function exploredPage(id,tree,page)
{
	if(tree != JMcontext_tree)
		new_context(id,tree);
	return serverRequest('&open=' + id + '&tree=' + tree + '&page=' + page);
}


//
// универсальная
//
function manager_func(func,id, tree, par1, par2)
{
	var addstr = '';
	if(!id) id = JMcontext_id;
	if(!tree) tree = JMcontext_tree;
	menu_hide();
	toggle_conf(0);
	if(func=='noneinfo')
	{
		highlightFolder();
		highlightPanel();
		return false;
	}
	else if(func=='pure')
	{
		if(!confirm(JMtext[JMlang][1] + id + "?"))
			return false;
		restoreFolder(JMbuffer_id,JMcontext_tree,0);
		JMbuffer_type='none';
		JMbuffer_id=0;
		JMbuffer_tree='';
	}
	else if(func=='del_file')
	{
		var conf = (id=='treefilter') ? JMtext[JMlang][13] : '/' + id + '/';
		if(!confirm(JMtext[JMlang][0] + conf + '\n ' + par1 + '?'))
			return false;
	}
	else if(func=='showerrors' && par2=='2')
	{
		if(!confirm(JMtext[JMlang][23]))
			return false;
	}
	
	if(typeof(par1)!='undefined') addstr += '&par1=' + par1;
	if(typeof(par2)!='undefined') addstr += '&par2=' + par2;
	return serverRequest('&func=' + func + '&cur_id=' + id +  '&tree=' + tree + addstr);
}


function manager_changeid()
{
	document.onkeyup = null;
	menu_hide();
	var to_id = prompt('New id?','');
	if(to_id)
	{
	 	if(allDigits(to_id) && to_id > 0)
			return serverRequest('&func=changeid&cur_id=' + JMcontext_id +  '&tree=' + JMcontext_tree + '&par1=' + to_id);
		else
			alert(JMtext[JMlang][15]);
	}
	document.onkeyup = keyhandler;
	return false;
}

function manager_openbranch()
{
	menu_hide();
	if(confirm(JMtext[JMlang][2] + JMcontext_id + "?"))
		return serverRequest('&openbranch=' + JMcontext_id + '&tree=' + JMcontext_tree);
	return false;
}

function manager_openparents(old_cur_id)
{
	if(!JMcontext_id)
		return false;
	menu_hide();
	var old = (typeof(old_cur_id)!='undefined') ? '&old_cur_id=' + old_cur_id : '';
	return serverRequest('&openparents=' + JMcontext_id + old + '&tree=' + JMcontext_tree);
}

function manager_closebranch()
{
	menu_hide();
	toggle(JMcontext_id,JMcontext_tree);
	return serverRequest('&closebranch=' + JMcontext_id + '&close=' + JMcontext_id + '&tree=' + JMcontext_tree);
}

function manager_edit(old_cur_id)
{
	//Раскомментировал 13.03.2008
	//if(!check_ctrl('edit')) return false;

    clearTimeout(JMtimeout1);
	menu_hide();
	var old = (typeof(old_cur_id)!='undefined') ? '&old_cur_id=' + old_cur_id : '';

	//JMeditstatus = JMuserName + ' (' + JMuserID + ')';	
	//alert(JMeditstatus);
	
	return serverRequest('&action=edit&cur_id=' + JMcontext_id + old + '&tree=' + JMcontext_tree);
}

function manager_move()
{
	document.onkeyup = null;
	menu_hide();
	var to_id = prompt(JMtext[JMlang][14],'');
	if(to_id)
	{
	 	if(JPset || JMcontext_tree=='treejparams' || allDigits(to_id))
			return serverRequest('&action=move&cur_id=' + JMcontext_id +'&to_id=' + to_id + '&tree=' + JMcontext_tree);
		else
			alert(JMtext[JMlang][15]);
	}
	document.onkeyup = keyhandler;
	return false;
}

function manager_shift(direct)
{
	document.onkeyup = null;
	menu_hide();
	var txt = (direct==1) ? JMtext[JMlang][17] : JMtext[JMlang][18];
	var to_id = prompt(txt,'');
	if(to_id)
	{
	 	if(JPset || JMcontext_tree=='treejparams' || allDigits(to_id))
			return serverRequest('&action=shift&cur_id=' + JMcontext_id + '&to_id=' + to_id + '&direct=' + direct + '&tree=' + JMcontext_tree);
		else
			alert(JMtext[JMlang][15]);
	}
	document.onkeyup = keyhandler;
	return false;
}

function manager_editpar(editpar,ask)
{
    clearTimeout(JMtimeout1);
	menu_hide();

	if(!ask)
		return serverRequest('&action=editpar&cur_id=' + JMcontext_id + '&to_id=-1&editpar=' + editpar + '&tree=' + JMcontext_tree);

	if(editpar=='del_a')
	{
		if(confirm(JMtext[JMlang][0] + JMtext[JMlang][22] + "?"))
			return serverRequest('&action=editpar&cur_id=' + JMcontext_id + '&editpar=' + editpar + '&tree=' + JMcontext_tree);
	}
	else
	{
		document.onkeyup = null;
		var to_id = prompt(JMtext[JMlang][21],'');
		if(to_id)
		{
		 	if(allDigits(to_id))
				return serverRequest('&action=editpar&cur_id=' + JMcontext_id +'&to_id=' + to_id + '&editpar=' + editpar + '&tree=' + JMcontext_tree);
			else
				alert(JMtext[JMlang][15]);
		}
		document.onkeyup = keyhandler;
	}
	return false;
}

/*
function manager_editpar(editpar,ask)
{
    clearTimeout(JMtimeout1);
	menu_hide();

	if(!ask)
		return serverRequest('&action=editpar&cur_id=' + JMcontext_id + '&to_id=-1&editpar=' + editpar + '&tree=' + JMcontext_tree);

	if(editpar=='del')
	{
		if(confirm(JMtext[JMlang][0] + JMtext[JMlang][22] + "?"))
			if(confirm(JMtext[JMlang][23]))
				return serverRequest('&action=editpar&cur_id=' + JMcontext_id + '&editpar=' + editpar + '&tree=' + JMcontext_tree);
	}
	else
	{
		document.onkeyup = null;
		var to_id = prompt(JMtext[JMlang][21],'');
		if(to_id)
		{
		 	if(allDigits(to_id))
		 	{
				if(editpar=='add' || (editpar=='replace' && confirm(JMtext[JMlang][23])))
					return serverRequest('&action=editpar&cur_id=' + JMcontext_id +'&to_id=' + to_id + '&editpar=' + editpar + '&tree=' + JMcontext_tree);
			}
			else
				alert(JMtext[JMlang][15]);
		}
		document.onkeyup = keyhandler;
	}
	return false;
}
*/

function manager_icon(interactiv,imageinp,imageout,afterfunc)
{
    clearTimeout(JMtimeout1);
	menu_hide();
	if(interactiv > 0)
	{
		if(JMcontext_id == 'treefilter')
		{
			return serverRequest('&action=resizelist&imageout=' + imageout);
		}
		else
		{
			window.open(JMserverURL + '&action=resizer&cur_id=' + JMcontext_id + '&image=' + imageinp + '&imageout=' + imageout + '&afterfunc=' + afterfunc,'','toolbar=no,directories=no,location=no,status=no,resizable=yes,copyhistory=no,menubar=no,width=980,height=780,scrollbars=yes');
			return false;
		}
	}
	else
		return serverRequest('&action=icon&cur_id=' + JMcontext_id + '&image=' + imageinp + '&imageout=' + imageout + '&afterfunc=' + afterfunc);
}

function manager_resize()
{
    clearTimeout(JMtimeout1);
	menu_hide();
	if(JMcontext_id == 'treefilter')
	{
		return serverRequest('&action=resizelist');
	}
	else
	{
		window.open(JMserverURL + '&action=resizer&cur_id=' + JMcontext_id + '&image=icon&afterfunc=showinfo','','toolbar=no,directories=no,location=no,status=no,resizable=yes,copyhistory=no,menubar=no,width=980,height=780,scrollbars=yes');
		return false;
	}
}


function manager_sort(order)
{
	document.onkeyup = null;
	menu_hide();
	if(order == 'ask')
	{
		order = prompt(JMtext[JMlang][19],'');
		if(!order)
		{
			document.onkeyup = keyhandler;
			return false;
		}
	}
	return serverRequest('&action=sort&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree + '&order='+order);
}

function manager_goto()
{
	document.location.href='/?id=' + JMcontext_id;
}

function manager_view_real(nologin,templatecomb)
{
	if(JMserverStatus)
		return false;

	menu_hide();
	if(templatecomb == 'ask')
	{
		document.onkeyup = null;
		templatecomb = prompt(JMtext[JMlang][20],'');
		if(!templatecomb)
		{
			document.onkeyup = keyhandler;
			return false;
		}
	}
	return serverRequest('&action=view&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree + '&nologin=' + nologin + '&templatecomb=' + templatecomb);
}

function manager_view(nologin,templatecomb)
{
	if(!JMserverStatus)
		JMtimeout1=setTimeout("manager_view_real('" + nologin + "','" + templatecomb + "')",300);
	return false;
}

function manager_info_real(id,tree)
{
	if(JMserverStatus)
		return false;

	JMcontext_id=id;
	JMcontext_tree=tree;
	serverRequest('&func=showinfo&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree);
}

function manager_info(id,tree)
{
	if(!JMserverStatus)
	{
		new_context(id,tree);
		JMtimeout1=setTimeout("manager_info_real('" + id + "','" + tree + "')",300);
	}
	return false;
}

function manager_setimport(id)
{
	if(id)
	{
		t = document.getElementById('i_param_import_to');
		if(t) t.value = id;
	}
	return false;
}

function manager_copyid(id)
{
	if(id && window.clipboardData) window.clipboardData.setData('Text', id);
	return false;
}

function manager_addfilter(id,what,fpad)
{
	var qsql = '';
	var limit = 0;
	var lim = 0;
	var tabl;
	var user;
	var grou;
	var order;
	var ordert;
	var spar;
	var trsh;
	var ocnt;
	var t;
	if(!id)
		id = JMcontext_id;
	t = document.getElementById('f_tabl');	if(t) tabl = t.value;
	t = document.getElementById('f_user');	if(t) user = t.value;
	t = document.getElementById('f_grou');	if(t) grou = t.value;
	t = document.getElementById('f_order');	if(t) order = t.value;
	t = document.getElementById('f_ordert');if(t) ordert = t.value;
	t = document.getElementById('f_spar');	if(t) spar = t.value;
	t = document.getElementById('f_trsh');	if(t) trsh = t.checked;
	t = document.getElementById('f_ocnt');	if(t) ocnt = t.checked;

	var mtable = (tabl!=0 && tabl!='') ? tabl + '.' : '';
	
	var comma = (id==1) ? '' : '%,';
	t = document.getElementById('f_qsql');

	if(!t.value)
	{
		var tlist = document.getElementById('tree_filter_list');
		if(tlist.value)
		{
			t.value = mtable + 'id in (' + tlist.value + ')';
		}
	}
	if(t.value)
	{
		qsql = "(" + t.value + ")";
		if(what == 0)
			qsql += " or (" + mtable + "id=" + id + ")";
		else if(what == 1)
			qsql += " or (" + mtable + "parent_id=" + id + ")";
		else if(what == 2)
			qsql += " or (" + mtable + "parents like '" + comma + id + ",%')";
		else if(what == 3)
			qsql += " and (" + mtable + "id<>" + id + ")";
	}
	else if(what == 0)
		qsql = mtable + "id=" + id;
	else if(what == 1)
		qsql = mtable + "parent_id=" + id;
	else if(what == 2)
		qsql = mtable + "parents like '" + comma + id + ",%'";

	if(t = document.getElementById('f_limit'))
		lim = t.value;
	limit = (qsql && !lim) ? JMflimit : lim;


	return manager_setfilter(0,qsql,tabl,user,grou,limit,order,ordert,spar,trsh,ocnt,fpad);
}

function manager_setfilter(text,qsql,tabl,user,grou,limi,orde,ordt,spar,trsh,ocnt,fpad)
{
	var url = '&action=setfilter';

	var ttext = document.getElementById('f_text');
	var tqsql = document.getElementById('f_qsql');	
	var ttabl = document.getElementById('f_tabl');	
	var tuser = document.getElementById('f_user');	
	var tgrou = document.getElementById('f_grou');	
	var tlimi = document.getElementById('f_limit');	
	var torde = document.getElementById('f_order');	
	var tordt = document.getElementById('f_ordert');	
	var tspar = document.getElementById('f_spar');	
	var ttrsh = document.getElementById('f_trsh');	
	var tocnt = document.getElementById('f_ocnt');	
	
	if(ttext && text!='0')	ttext.value = trim(text);
	if(tqsql && qsql!='0')	tqsql.value = qsql;
	if(ttabl && tabl!='0')	ttabl.value = (tabl=='') ? 0 : tabl; 
	if(tuser && user!='0')	tuser.value = (user=='') ? 0 : user;
	if(tgrou && grou!='0')	tgrou.value = (grou=='') ? 0 : grou;
	if(tlimi && limi!='0')	tlimi.value = limi;
	if(torde && orde!='0')	torde.value = (orde=='') ? 0 : orde;
	if(tordt && ordt!='0')	tordt.value = ordt;
	if(tspar && spar!='0')	tspar.value = spar;
	if(ttrsh && trsh!='0')	ttrsh.checked = (trsh=='false') ? false : trsh;
	if(tocnt && ocnt!='0')	tocnt.checked = (ocnt=='false') ? false : ocnt;

	if((tlimi && (ttext.value || tqsql.value || tuser.value>0 || tgrou.value>0) && !tlimi.value))
		tlimi.value = JMflimit;
	
	if(tqsql)
	{
		var qsql2 = tqsql.value.replace(/%/g,'%25').replace(/\+/g,'%2B');
		url = url + '&f_qsql='  + qsql2;
	}
	if(ttext)	url = url + '&f_text='  + trim(ttext.value);
	if(ttabl)	url = url + '&f_tabl='  + ttabl.value;
	if(tuser)	url = url + '&f_user='  + tuser.value;
	if(tgrou)	url = url + '&f_grou='  + tgrou.value;
	if(tlimi)	url = url + '&f_limit=' + tlimi.value;
	if(torde)	url = url + '&f_order=' + torde.value;  
	if(tordt)	url = url + '&f_ordert='+ tordt.value;  
	if(tspar)	url = url + '&f_spar='  + tspar.value;  
	if(ttrsh)	url = url + '&f_trsh='  + ttrsh.checked;
	if(tocnt)	url = url + '&f_ocnt='  + tocnt.checked;

	//2010-12-16
	if(fpad)
	{
	    tmp = fpad.split(',');
	    for(var i=0; i<tmp.length; i++)
	    {
	    	p = trim(tmp[i]);
			if(p!='')
			{
				if(fd = document.getElementById('fp_' + p))
					url = url + '&fp_' + p + '=' + fd.value;
				if(fd1 = document.getElementById('fp1_' + p))
					url = url + '&fp1_' + p + '=' + fd1.value;
				if(fd2 = document.getElementById('fp2_' + p))
					url = url + '&fp2_' + p + '=' + fd2.value;
			}
	    }
	}
		


	new_context('treefilter','treefilter');

	url = url.replace(/\n/g,'');
	url = url.replace(/\r/g,'');
	url = url.replace(/"/g,'%22');
	switch_treediv('treefiltera','visible');

	return serverRequest(url);
}

function manager_flimitcorr(act,fpad)
{
	if(flimit=document.getElementById('f_limit'))
	{
		savevalue = flimit.value;
		if(filtersqlallo=document.getElementById('filtersqlall'))
			realmax = parseInt(filtersqlallo.value);

		icomma=flimit.value.indexOf(',');
		if(icomma>=0)
		{
			start=parseInt(flimit.value.substr(0,icomma));
			limit=parseInt(flimit.value.substr(icomma+1));
		}
		else
		{
			start=0;
			limit=(flimit.value)?parseInt(flimit.value):0;
		}
		if(act>0)
		{
			if(realmax>0 && start+limit <realmax)
				start += limit;
		}
		else
		{
			start -= limit;
		}
		if(!start && !limit) limit = 10;
		flimit.value = ((start>0) ? start + ',' : '') + limit;
		if(savevalue!=flimit.value && (form=document.getElementById('postformfilter')))
		{
			manager_setfilter(0,0,0,0,0,0,0,0,0,0,0,fpad);
			form.submit();
		}
	}
}

function manager_setwidth(width)
{
	tw = document.getElementById('treewidth');
	twi = document.getElementById('config_width');
	if(tw && twi)
	{
		if(width)
		{
			if(width < 10) width = 10;
			if(width > 90) width = 90;
		}
		else
		{
			width = 50;
		}
		twi.value = width;
		tw.width = String(width) + '%';
	}
	return false;
}

function manager_setheight(height)
{
	twi = document.getElementById('config_height');
	tw1 = document.getElementById('treeheight1');
	tw2 = document.getElementById('treeheight2');
	tw3 = document.getElementById('treeheight3');
	if(height)
	{
		if(height < 100) height = 100;
		if(height > 1200) height = 1200;
		if(twi) twi.value = height;
	}
	else
	{
		height = '';
	}
	if(tw1)	tw1.style.height = height;
	if(tw2)	tw2.style.height = height;
	if(tw3)	tw3.style.height = height;
	return false;
}


function manager_dubl(shift)
{
	hcheck = document.getElementById('config_hidden');
	hidden = (hcheck && hcheck.checked==true) ? '1' : 0;
	menu_hide();
	return serverRequest('&action=dubl&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree + '&hidden=' + hidden + '&shift=' + shift);
}

function manager_cut()
{
	menu_hide();
	restoreFolder(JMbuffer_id,JMcontext_tree,0);
	JMbuffer_type='cut';
	JMbuffer_id=JMcontext_id;
	JMbuffer_tree=JMcontext_tree;
	highlightFolder();
	highlightPanel();
	return false;
}

function manager_copy()
{
	menu_hide();
	restoreFolder(JMbuffer_id,JMcontext_tree,0);
	JMbuffer_type='copy';
	JMbuffer_id=JMcontext_id;
	JMbuffer_tree=JMcontext_tree;
	highlightFolder();
	highlightPanel();
	return false;
}

function manager_paste()
{
	if(JMbuffer_type=='cut')
	{
		txt = (JMbuffer_id=='treefilter') ? JMtext[JMlang][3] + JMtext[JMlang][13] + " => " + JMcontext_id + "?" : JMtext[JMlang][3] + JMbuffer_id + " => " + JMcontext_id + "?";
		if(JPset || JMcontext_tree=='treejparams' || confirm(txt))
		{
			menu_hide();
			return serverRequest('&action=paste&buffer_type=' + JMbuffer_type + '&to_id=' + JMcontext_id + '&buffer_id=' + JMbuffer_id + '&tree=' + JMcontext_tree);
		}
	}
	if(JMbuffer_type=='copy')
	{
		txt = (JMbuffer_id=='treefilter') ? JMtext[JMlang][5] + JMtext[JMlang][13] + " => " + JMcontext_id + "?" : JMtext[JMlang][5] + JMbuffer_id + " => " + JMcontext_id + "?";
		if(JPset || JMcontext_tree=='treejparams' || confirm(txt))
		{
			hcheck = document.getElementById('config_hidden');
			hidden = (hcheck && hcheck.checked==true) ? '1' : 0;
			menu_hide();
			return serverRequest('&action=paste&buffer_type=' + JMbuffer_type + '&to_id=' + JMcontext_id + '&buffer_id=' + JMbuffer_id + '&hidden='+hidden + '&tree=' + JMcontext_tree);
		}
	}
	return false;
}

function manager_pastebranch()
{
	txt = (JMbuffer_id=='treefilter') ? JMtext[JMlang][3] + JMtext[JMlang][13] + " => " + JMcontext_id + "?" : JMtext[JMlang][4] + JMbuffer_id + " => " + JMcontext_id + "?";
	if(JMbuffer_type=='cut' && confirm(txt))
	{
		menu_hide();
		return serverRequest('&action=pastebranch&buffer_type=' + JMbuffer_type + '&to_id=' + JMcontext_id + '&buffer_id=' + JMbuffer_id + '&tree=' + JMcontext_tree);
	}
	txt = (JMbuffer_id=='treefilter') ? JMtext[JMlang][5] + JMtext[JMlang][13] + " => " + JMcontext_id + "?" : JMtext[JMlang][6] + JMbuffer_id + " => " + JMcontext_id + "?";
	if(JMbuffer_type=='copy' && confirm(txt))
	{
		menu_hide();
		return serverRequest('&action=pastebranch&buffer_type=' + JMbuffer_type + '&to_id=' + JMcontext_id + '&buffer_id=' + JMbuffer_id + '&tree=' + JMcontext_tree);
	}
	return false;
}

function manager_clear()
{
	menu_hide();
	restoreFolder(JMbuffer_id,JMcontext_tree,0);
	JMbuffer_type='none';
	JMbuffer_id=0;
	JMbuffer_tree='';
	highlightPanel();
	return false;
}

function manager_del(notrash)
{
	var txttrash = (notrash==1 || JMcontext_tree=='treefilter') ? '' : JMtext[JMlang][28];
	var txt = (JMcontext_id=='treefilter') ? JMtext[JMlang][0] + txttrash + JMtext[JMlang][13] + "?" : JMtext[JMlang][0] + txttrash + JMcontext_id + "?";
	if(confirm(txt))
	{
		menu_hide();
		restoreFolder(JMbuffer_id,JMcontext_tree,0);
		JMbuffer_type='none';
		JMbuffer_id=0;
		JMbuffer_tree='';
		cid = JMcontext_id;
		ctree = JMcontext_tree;
		JMcontext_id='';
		JMcontext_tree='';
		return serverRequest('&action=del&del_id=' + cid + '&tree=' + ctree + '&notrash=' + notrash);
	}
	return false;
}

function manager_export()
{
	var addstr;
    clearTimeout(JMtimeout1);
	menu_hide();
	return serverRequest('&action=export&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree);
}

function manager_walk(w)
{
	if(w=='R')
	{
    	div = document.getElementById('subdiv' + JMcontext_tree + JMcontext_id);
		if(div && div.getAttribute('loaded')!='yes' && div.getAttribute('cnt')>0)
			return toggle(JMcontext_id,JMcontext_tree);
	}
	if(w=='L')
	{
    	div = document.getElementById('subdiv' + JMcontext_tree + JMcontext_id);
		if(div && div.getAttribute('loaded')=='yes' && div.getAttribute('cnt')>0)
			return toggle(JMcontext_id,JMcontext_tree);
	}
	return serverRequest('&action=walk&walk=' + w + '&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree);
}

function manager_switchtree()
{
	menu_hide();
	new_context(JMcontext_id, JMcontext_tree ? '' : 'treefilter');
	manager_focus();
	return false;
}

function manager_chrootid(rootid)
{
	var b = document.getElementById('ctrl_rootid');
	if(b)
	{
		var id = b.value;
		menu_hide();
		//new_context('','');
		var curid = JMcontext_rootid;
		JMcontext_rootid = (rootid) ? rootid : id;
		return serverRequest('&action=chrootid&rootid=' + JMcontext_rootid + '&cur_id=' + curid + '&tree=' + JMcontext_tree);
	}
	return false;
}


function manager_cheditid()
{
	var b = document.getElementById('ctrl_id');
	if(b)
	{
		var id = b.value;
		var r = document.getElementById('ctrl_rootid');
		if(r && r.value != JMcontext_rootid)
			manager_chrootid();
		var old_cur_id = JMcontext_id;

		id = id.replace(/"/g,"'");

		var tree = (JMcontext_tree=='treefilter') ? '' : JMcontext_tree;
		new_context(id,tree);
		if(id)
		{
			manager_openparents(old_cur_id);
			manager_edit(old_cur_id);
		}
	}
	return false;
}

function manager_focus()
{
	control = document.getElementById('control' + JMcontext_tree + JMcontext_id);
	if(control)
		control.focus();
}


function switch_treediv(divid,vis)
{
	a = document.getElementById(divid);
	if(a)
	{
		obj = a.parentNode.nextSibling;
		while (obj.tagName!='DIV')
			obj = obj.nextSibling;

		if(obj && obj.style.visibility != vis)
		{
			toggle_div(a);
		}
	}
}

function manager_add(id,event)
{
	var	addget = '';
	menu_hide();

	if(JPset || JMcontext_tree == 'treejparams')
		return serverRequest('&action=add&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree);

	event.cancelBubble = true;
	event.returnValue=false;
	JMcontrol = document.getElementById('control' + JMcontext_tree + JMcontext_id);
	if(id == 'ask')
	{
		document.onkeyup = null;
		id = prompt(JMtext[JMlang][21],'');
		if(!id || !allDigits(id))
		{
			document.onkeyup = keyhandler;
			return false;
		}
		addget = '&ask=1';
	}
	ex_id = (JMcontrol && id == -1) ? JMcontrol.getAttribute('example') : id;
	hcheck = document.getElementById('config_hidden');
	hidden = (hcheck && hcheck.checked==true) ? '1' : 0;

	return serverRequest('&action=add&cur_id=' + JMcontext_id + '&ex_id=' + ex_id + '&hidden=' + hidden + addget + '&tree=' + JMcontext_tree);
}

function param_add()
{
	menu_hide();
	return serverRequest('&action=add&cur_id=' + JMcontext_id + '&tree=' + JMcontext_tree);
}

function manager_setqsql(num)
{
	var qsql = document.getElementById('qsql_' + num);
	var f_qsql = document.getElementById('f_qsql');
	if(qsql && f_qsql)
		f_qsql.innerHTML = qsql.innerHTML;
}

/*
function manager_setctrls(num)
{
	var ctrl = document.getElementById('import_ctrls_' + num);
	var data = document.getElementById('import_datas_' + num);
	var import_ctrl = document.getElementById('p__import_ctrl');
	var import_data = document.getElementById('p__import_data');
	if(ctrl && data && import_ctrl && import_data)
	{
		import_ctrl.value = ctrl.innerHTML;
		import_data.value = data.innerHTML;
	}
}
*/

function manager_context(event)
{
    e = event || window.event;
	menu_show(JMcontext_id,e,JMcontext_tree);
	e.cancelBubble=true;
	e.returnValue=false;
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

function menu_show(id,event,tree)
{
	if(id != JMcontext_id || tree != JMcontext_tree);
		new_context(id,tree);
	menu_hide();

	var idiv = document.getElementById('infodiv');
	if(idiv) idiv.innerHTML='';

	JMcontext_id=id;
	JMcontext_tree=tree;

	JMcontextmenu = document.getElementById('mainmenu');
	JMcontrol = document.getElementById('control' + JMcontext_tree + JMcontext_id);
	if(!JMcontrol)
		return false;

	var divs = document.getElementsByTagName('div');
	var itemsvis = 0;
	var vis;

	for(i=0;i < divs.length; ++i)
	{
       	tdiv = divs[i];
       	vis = 0;
       	if(tdiv.className=='jm_menuitems' && tdiv.parentNode == JMcontextmenu)
       	{
       		if(JMcontrol.getAttribute(tdiv.id)=='yes' && !((tdiv.id=='paste' || tdiv.id=='pastebranch' || tdiv.id=='clear') && JMbuffer_id==0))
       		{
				if(tdiv.id=='paste' || tdiv.id=='pastebranch' || tdiv.id=='clear')
				{				
					if(JMbuffer_tree==JMcontext_tree || (JMbuffer_tree=='' && JMcontext_tree=='treefilter') || (JMbuffer_tree=='treefilter' && JMcontext_tree==''))
					{
						vis = 1;
					}
       			}
       			else
       			{
					vis = 1;
       			}
       		}
			tdiv.style.display    = (vis) ? 'block' : 'none';
			tdiv.style.visibility = (vis) ? 'visible' : 'hidden';
			itemsvis += vis;
       	}
    }
	if(!itemsvis)
		return false;

	exdiv = document.getElementById('add_' + JMcontrol.getAttribute('example'));
	if(exdiv)
	{
		exdiv.style.fontWeight = "bold";
		//exdivctrl = document.getElementById('addctrl_' + JMcontrol.getAttribute('example'));
		//if(exdivctrl) exdivctrl.innerHTML = "Insert";
	}

	var idiv = document.getElementById('infodiv');
	var fdiv = document.getElementById('formdiv');
	if(idiv) idiv.style.display = 'none';
	if(fdiv) fdiv.style.display = 'none';

	JMcontextmenu.style.display = 'block';

	/*
	var rightedge = document.body.clientWidth - event.clientX;
	var bottomedge = document.body.clientHeight - event.clientY;

	var scrolltop  = (document.body.scrollTop)  ? document.body.scrollTop  : document.documentElement.scrollTop;
	var scrollleft = (document.body.scrollLeft) ? document.body.scrollLeft : document.documentElement.scrollLeft;

	if (bottomedge<JMcontextmenu.offsetHeight)
	{
		topY = scrolltop + event.clientY - JMcontextmenu.offsetHeight;
		JMcontextmenu.style.top = (topY < 0) ? 0 : topY + 'px';
	}
	else
		JMcontextmenu.style.top = scrolltop + event.clientY + 'px';

	if (rightedge<JMcontextmenu.offsetWidth)
	{
		leftX = scrollleft + event.clientX - JMcontextmenu.offsetWidth;
		JMcontextmenu.style.left = (leftX < 0) ? 0 : leftX + 'px';
	}
	else
		JMcontextmenu.style.left = scrollleft + event.clientX + 'px';
	*/


	//2010-11-10
	/*
	var bodydiv = get_elem_offset(document.getElementById('bodydiv'));
	JMcontextmenu.style.top  = event.clientY - bodydiv.top  + 'px';
	JMcontextmenu.style.left = event.clientX - bodydiv.left + 'px';
	*/

	var bodydiv = get_elem_offset(document.getElementById('bodydiv'));

	var scrolltop  = (document.body.scrollTop)  ? document.body.scrollTop  : document.documentElement.scrollTop;
	var scrollleft = (document.body.scrollLeft) ? document.body.scrollLeft : document.documentElement.scrollLeft;

	JMcontextmenu.style.top  = scrolltop  + event.clientY - bodydiv.top  + 'px';
	JMcontextmenu.style.left = scrollleft + event.clientX - bodydiv.left + 'px';



	var filteradd = document.getElementById('filteradd');
	if(filteradd && filteradd.style.visibility == 'visible')
	{
		filteradd.style.visibility = 'hidden';
		JMfilteradd = 1;
	}

	JMcontextmenu.style.visibility = 'visible';
	return false;
}

function menu_hide()
{
	if(JMcontextmenu && JMcontextmenu.style.visibility == 'visible')
	{
		JMcontextmenu.style.visibility = 'hidden';
		JMcontextmenu.style.display = 'none';

		divs = document.getElementsByTagName('div');
		for(i=0;i < divs.length; ++i)
		{
			tdiv = divs[i];
			if(tdiv.className=='jm_menuitems')
			{
				tdiv.style.backgroundColor="";
				tdiv.style.color="black";
				tdiv.style.fontWeight = "normal";
			}
		}
		/*
    	if(JMcontrol)
    	{
	    	exdivctrl = document.getElementById('addctrl_' + JMcontrol.getAttribute('example'));
    		if(exdivctrl) exdivctrl.innerHTML = "";
    	}
    	*/
	}

	var filteradd = document.getElementById('filteradd');
	if(JMfilteradd && filteradd)
	{
		filteradd.style.visibility = 'visible';
		JMfilteradd = 0;
	}

	return false;
}


function menu_high(div,event)
{
	//var menuitem=is_ie5up? event.srcElement : event.target;
	var menuitem = (event.srcElement) ? event.srcElement : event.target;
	
	if(menuitem.className=='jm_menuitems' || (is_nav6up && menuitem.parentNode.className=='jm_menuitems'))
	{
		if(is_nav6up && menuitem.parentNode.className == 'jm_menuitems') menuitem = menuitem.parentNode;

		brothers = menuitem.parentNode.childNodes;
		for(i=0;i < brothers.length; ++i)
		{
			brother = brothers[i];
			if(brother.className!='jm_menuitems') continue;

			if(menuitem.id == brother.id)
			{
				brother.style.backgroundColor="highlight";
				brother.style.color="white";
				/*show submenus*/
				for(j=0;j<brother.childNodes.length;++j)
				{
					submenu = brother.childNodes[j];
					if(submenu.className!='jm_contextmenu') continue;
	        		submenu.style.visibility = 'visible';
					submenu.style.display = 'block';
	        		w = brother.offsetWidth;
	        		submenu.style.left = w + 'px';
	        	}
			}
			else
			{
				brothers[i].style.backgroundColor="";
				brothers[i].style.color="black";
				/*hide submenus*/
				for(j=0;j<brother.childNodes.length;++j)
				{
					submenu = brother.childNodes[j];
					if(submenu.className!='jm_contextmenu') continue;
	        		submenu.style.visibility = 'hidden';
	        		submenu.style.display = 'none';
	        	}
			}
		}
	}
	return false;
}

document.onclick = function ()
{
	menu_hide();
}

document.onkeyup = keyhandler;
function keyhandler(e)
{
	ctrl=shiftk=alt=0;
	var oEvent = window.event ? window.event : e;
	var k =  oEvent.keyCode ? oEvent.keyCode : oEvent.which ? oEvent.which : void 0;
	if(!k)
		return false;
	if(oEvent.ctrlKey) ctrl=1;
	if(oEvent.shiftKey) shiftk=1;
	if(oEvent.altKey) alt=1;
	ch = String.fromCharCode(k);

	if(JMcontext_id)
	{
		if(check_ctrl('walk'))
		{
			//if(k==9 && !alt && !ctrl)			// Tab
			//	manager_switchtree();
			if(ctrl && k==37)				// Ctrl-Left
				manager_closebranch();
			else if(ctrl && k==39)				// Ctrl-Right
				manager_openbranch();
			else if((shiftk) && k==37)			// Shift-Left
				toggle(JMcontext_id,JMcontext_tree);
			else if((shiftk) && k==39)			// Shift-Right
				toggle(JMcontext_id,JMcontext_tree);
			else if((alt || shiftk) && k==38)	// Alt-Up
				manager_func('up');
			else if((alt || shiftk) && k==40)	// Alt-Down
				manager_func('down');
			else if((alt || shiftk) && k==33)	// Alt-PgUp
				manager_func('top');
			else if((alt || shiftk) && k==34)	// Alt-PgDown
				manager_func('bot');

			else if((alt || shiftk) && k==36)	// Alt-Home
				manager_shift(1);
			else if((alt || shiftk) && k==35)	// Alt-End
				manager_shift(0);

			//else if(k==35)				 		// End
			//	manager_walk('E');
			//else if(k==36)				 		// Home
			//	manager_walk('H');
			else if(k==37)				 		// Left
				manager_walk('L');
			else if(k==38)				 		// Up
				manager_walk('U');
			else if(k==39)				 		// Right
				manager_walk('R');
			else if(k==40)				 		// Down
				manager_walk('D');
		}

		if(ch==' ')												// Space
			manager_focus();
		else if(k==27 && check_ctrl('menu'))					// Esc
			if(JMcontextmenu && JMcontextmenu.style.visibility == 'visible')
				menu_hide();
			else
				manager_context(event);
		else if(k==46 && check_ctrl('del'))						// Delete
			manager_del(shiftk);
		else if(k==13 && check_ctrl('edit'))					// Enter
			manager_edit();
		else if(ctrl && ch=='G' && check_ctrl('goto'))			// Ctrl-G
			manager_goto();
		else if(ctrl && ch=='Q' && check_ctrl('view'))			// Ctrl-Q
			manager_view(0,'');
		else if(ctrl && ch=='C' && check_ctrl('copy'))			// Ctrl-C
			manager_copy();
		else if(ctrl && ch=='X' && check_ctrl('cut'))			// Ctrl-X
			manager_cut();
		else if(ctrl && ch=='V' && check_ctrl('paste'))			// Ctrl-V
			manager_paste();
		//else if(ctrl && ch=='T' && check_ctrl('pastebranch'))	// Ctrl-T
		//	manager_pastebranch();
		else if(ctrl && ch=='J' && check_ctrl('icon'))			// Ctrl-J
			manager_icon(1,'icon','view_icon_photo','showinfo');
		else if(ctrl && ch=='M' && check_ctrl('move'))			// Ctrl-M
			manager_move();
		else if(ctrl && ch=='U' && check_ctrl('dubl'))			// Ctrl-U
			manager_dubl(0);
		else if(k==45 && check_ctrl('adddef'))					// Insert
			manager_add(-1,event);
	}
	return false;
}

function check_ctrl(id)
{
	JMcontrol = document.getElementById('control' + JMcontext_tree + JMcontext_id);
	return (JMcontrol && JMcontrol.getAttribute(id)=='yes') ? true : false;
}

function setServerStatus(sstatus,stext,saction)
{
	JMserverStatus = sstatus;
	if(s = document.getElementById('serverStatus'))
	{
		s.className = (sstatus) ? 'tree ter' : 'tree';
		s.title = (sstatus) ? JMtext[JMlang][9] : JMtext[JMlang][8];
		if(saction && JMuserID==1) s.href = saction;
		if(JMctrl_text==0)
		{
			var im = document.getElementById('serverStatusImg');
			if(im)
			{
				im.src = (sstatus) ? imgStatusBusySrc : imgStatusReadySrc;
				im.title = (sstatus) ? JMtext[JMlang][9] : JMtext[JMlang][8];
			}
		}
		else
		{
			s.firstChild.data = stext;
		}
	}
	lmscroll_stand();

	if(s = document.getElementById('loadinfo'))
	{
		if(sstatus)
		{
			var scrolltop  = (document.body.scrollTop)  ? document.body.scrollTop  : document.documentElement.scrollTop;
			var scrollleft = (document.body.scrollLeft) ? document.body.scrollLeft : document.documentElement.scrollLeft;

			s.style.top = parseInt(document.body.clientHeight/5*2) + scrolltop  - 100 + 'px';
			s.style.left = parseInt(document.body.clientWidth/5*3) + scrollleft - 90 + 'px';
			s.style.visibility = 'visible';
			JMclockStart = 0;
			loadinfotext();
		}
		else
		{
			s.style.visibility = 'hidden';
			clearTimeout(JMtimeid);
			JMtimeid = null;
		}
	}
}

function loadinfotext()
{
	if(s = document.getElementById('loadinfotext'))
	{
		s.innerHTML = JMclockStart ? JMclockStart : '';
		if(JMclockStart < parseInt(JMclockStop))
		{
			JMclockStart += 1;
			JMtimeid = setTimeout('loadinfotext()',1000);
		}
		else
		{
			s.innerHTML = 'STOP!';
			clearTimeout(JMtimeid);
		}
	}
}


function setServerBusy()
{
	setServerStatus(1,JMtext[JMlang][9],'');
}


function restoreFolder(id,tree,showcopyfiler)
{
	if(div = document.getElementById('maindiv' + tree + id))
	{
		if(showcopyfiler==0 || tree!='treefilter' || JMbuffer_id!='treefilter')
			div.className = 'tree';
	}
	if(showcopyfiler==0 && tree!='treefilter' && JMbuffer_id=='treefilter')
	{
		if(div = document.getElementById('maindiv' + 'treefilter' + id))
			div.className = 'tree';
	}
	c = document.getElementById('ctrl_paste');
	if(c) c.style.visibility = 'hidden';
}

function new_context(id,tree,parent_id)
{
	if(id==0)
		id='';

	if(tree=='current')
		tree=JMcontext_tree;
		
	innerd = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_id)
	if(innerd)	innerd.className = '';
	
	restoreFolder(JMbuffer_id,JMcontext_tree,1);
	clrCurFolder();

	//27.05.2008
	if(JMcontext_parent_id && (innerd = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_parent_id)))
		innerd.className = 'tree';

	JMcontext_id = id;
	JMcontext_tree = tree;

	//27.05.2008
	JMcontext_parent_id = (parent_id && typeof(parent_id)!='undefined') ? parent_id : '';
	if(JMcontext_parent_id && (innerd = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_parent_id)))
		innerd.className = 'tree mcurpar';
	
	highlightFolder();
	if(JMcontext_id)
		switch_treediv((tree) ? tree + 'a' : 'treea', 'visible');
	highlightPanel();
	return false;
}

function bold_div_all()
{
	if(a = document.getElementById('treea'))
		a.className = (JMcontext_tree == '') ? 'tree' : 'tree legend';
	if(a = document.getElementById('treefiltera'))
		a.className = (JMcontext_tree == 'treefilter') ? 'tree' : 'tree legend';
	if(a = document.getElementById('treejparamsa'))
		a.className = (JMcontext_tree == 'treejparams') ? 'tree' : 'tree legend';
	if(a = document.getElementById('treefilesa'))
		a.className = (JMcontext_tree == 'treefiles') ? 'tree' : 'tree legend';
	if(a = document.getElementById('treestatsa'))
		a.className = (JMcontext_tree == 'treestats') ? 'tree' : 'tree legend';
		
}

function highlightFolder()
{
	div = document.getElementById('maindiv' + JMcontext_tree + JMbuffer_id);
	if(div)
	{
		if(JMbuffer_id!=0 && JMbuffer_type=='copy')
			div.className='tree mcopy';
		else if(JMbuffer_id!=0 && JMbuffer_type=='cut')
			div.className='tree mcut';
		else
			div.className='tree';

		if(JMcontext_id)
		{
			JMcontrol = document.getElementById('control' + JMcontext_tree + JMcontext_id);
			c = document.getElementById('ctrl_paste');
			if(c && JMcontrol) c.style.visibility = (JMcontrol.getAttribute('paste') == 'yes') ? 'visible' : 'hidden';
		}
	}
	bold_div_all();
}

function highlightPanel()
{
	innerd = document.getElementById('innerdiv' + JMcontext_tree + JMcontext_id);
	if(innerd)
	{
		innerd.className = 'tree mcur';
		treecurid = JMcontext_id;
	}
	else
	{
		treecurid = '';
	}

	b = document.getElementById('ctrl_id');
	if(b) b.value = (treecurid == 'treefilter') ? 'all' : treecurid;
	setCurFolder();

	c = document.getElementById('ctrl_panel');
	if(c)
	{
		if(treecurid)
		{
			c.style.visibility = 'visible';
			c.style.display = 'block';

			JMcontrol = document.getElementById('control' + JMcontext_tree + treecurid);
			if(JMcontrol)
			{
				divs = document.getElementsByTagName('div');
				for(i=0;i < divs.length; ++i)
				{
			       	c = divs[i];
					if(c.className=='ctrl')
					{
						attrname = c.id.replace('ctrl_','');
						attr = JMcontrol.getAttribute(attrname);
						if(attrname=='paste' || attrname=='pastebranch' || attrname=='clear')
							c.style.visibility = (attr=='yes' && JMbuffer_id!=0 && (JMbuffer_tree==JMcontext_tree || (JMbuffer_tree=='' && JMcontext_tree=='treefilter') || (JMbuffer_tree=='treefilter' && JMcontext_tree==''))) ? 'visible' : 'hidden';
						else
							c.style.visibility = (attr=='yes') ? 'visible' : 'hidden';
			       	}
			    }
			}
		}
		else
		{
			c.style.visibility = 'hidden';
			c.style.display = 'none';
			if(img_min = document.getElementById('ctrl_minus')) img_min.style.visibility = 'hidden';
			if(img_plu = document.getElementById('ctrl_plus'))	img_plu.style.visibility = 'hidden';
		}
	}
}

function setCurFolder()
{
	folder = document.getElementById('folder' + JMcontext_tree + JMcontext_id);
	if(folder && folder.lowsrc && !folder.low)
	{
		if(folder.className=='pnghack' && folder.runtimeStyle)
		{
			src = folder.lowsrc;
			folder.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale');";

		}
		else
		{
			save = folder.src;
			folder.src = folder.lowsrc;
			folder.lowsrc = save;
		}
		folder.low = !folder.low;
	}
}

function clrCurFolder()
{
	folder = document.getElementById('folder' + JMcontext_tree + JMcontext_id);
	if(folder && folder.lowsrc && folder.low)
	{
		if(folder.className=='pnghack' && folder.runtimeStyle)
		{
			//src = folder.savesrc;
			src = (folder.savesrc && folder.savesrc!='undefined') ? folder.savesrc : folder.src;
			folder.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale');";
		}
		else
		{
			save = folder.src;
			folder.src = folder.lowsrc;
			folder.lowsrc = save;
		}
		folder.low = !folder.low;
	}
}

function add_all_params()
{
	newp = document.getElementById('newparams');
	if(newp && addpars)
	{
		newp.innerHTML = addpars.innerHTML;
		sts = document.getElementsByTagName('set');
		for(i=0;i<sts.length;++i)
		{
			newelem = document.getElementById('a_param_'+sts[i].getAttribute('param'));
			if(newelem)
			{
				newelem.style.visibility='hidden';
				newelem.style.display='none';
			}
		}
	}
}

function show_all_params()
{
	newp = document.getElementById('newparams');
	if(newp)
	{
		if(newp.style.visibility=='hidden')
		{
			newp.style.visibility='visible';
			newp.style.display='block';
		}
		else
		{
			newp.style.visibility='hidden';
			newp.style.display='none';
		}
	}
}

function add_param_group(group)
{
	n = document.getElementById('x_group_' + group);
	if(n)
	{
		pars = n.childNodes;
		for(i=0;i < pars.length; ++i)
		{
			if(pars[i].id)
			{
				parname = pars[i].id.replace('a_param_','');
				if(!document.getElementById('c_param_' + parname))
					add_param(parname);
			}
		}
	}
}

function add_param(id)
{
	n = document.getElementById('n_param_'+id);
	if(n)
	{
		cgroup = document.getElementById('c_paramgroup_'+n.getAttribute('forgroup'));
		cfset  = cgroup.parentNode;

		newparam = n.cloneNode(true);
		newparam.setAttribute('id','c_param_'+id,0);
		
		//07.07.2008
		tags = newparam.getElementsByTagName('td');
		for(i=0; i<tags.length; i++)
			if(tags[i].getAttribute('id') == 'n_fe_'+id)
				tags[i].setAttribute('id','c_fe_'+id,0);
		//

		//08.08.2008
		tags = newparam.getElementsByTagName('textarea');
		if(tags && tags.length)
			for(i=0; i<tags.length; i++)
				if(tags[i].getAttribute('id') == 'n__'+id)
					tags[i].setAttribute('id','c__'+id,0);

		//03.04.2009
		tags = newparam.getElementsByTagName('select');
		if(tags && tags.length)
			for(i=0; i<tags.length; i++)
				if(tags[i].getAttribute('id') == 'n__'+id)
					tags[i].setAttribute('id','c__'+id,0);

		//

		cgroup.appendChild(newparam);
		

		cfset.style.visibility = 'visible';
		cfset.style.display = 'block';

		a = document.getElementById('a_param_'+id);
		a.style.visibility = 'hidden';
		a.style.display = 'none';
	}
}

function del_param(id)
{
	c = document.getElementById('c_param_'+id);
	if(c)
	{
		if(!JMconfConfirm || confirm(JMtext[JMlang][0] + JMtext[JMlang][22] + id + "?"))
		{
			cgroup = c.parentNode;
			cfset  = cgroup.parentNode;
			cgroup.removeChild(c);
			if(!cgroup.hasChildNodes())
			{
				cfset.style.visibility = 'hidden';
				cfset.style.display = 'none';
			}

			a = document.getElementById('a_param_'+id);
			a.style.visibility = 'visible';
			a.style.display = 'block';
		}
	}
}
/*
function toggle_div(a)
{
	obj = a.parentNode.nextSibling;
	while (obj.tagName!='DIV')
		obj = obj.nextSibling;
	if(obj)
	{
		if(obj.style.visibility=='visible')
		{
			obj.style.visibility='hidden';
			obj.style.display='none';
			a.setAttribute('title',JMtext[JMlang][11],0); // open
			a.firstChild.data +='...';
			if(a.firstChild.data.substring(0,1) == '-')
				a.firstChild.data = a.firstChild.data.replace('--','+');
			savevalue = "h";
		}
		else
		{
			obj.style.visibility='visible';
			obj.style.display='block';
			a.setAttribute('title',JMtext[JMlang][12],0); // close
			if(a.firstChild.data.substring(a.firstChild.data.length-3) == '...')
				a.firstChild.data = a.firstChild.data.substring(0, a.firstChild.data.length-3);
			if(a.firstChild.data.substring(0,1) == '+')
				a.firstChild.data = a.firstChild.data.replace('+','--');
			savevalue = "v";
		}
		inp = document.getElementById('f_div_' + obj.id);
		if(inp)
			inp.value = savevalue;
		lmscroll_stand();
	}
	return false;
}

function autotoggle_div(divattr,showact)
{
	if(legends = document.getElementsByTagName('legend'))
	{
		for(j=0; j < legends.length; j++)
		{
			cur = legends[j];
			if(cur.getAttribute(divattr)=='yes')
			{
				if (showact==0 || (showact==1 && cur.nextSibling.style.visibility=='hidden') || (showact==2 && cur.nextSibling.style.visibility=='visible'))
					toggle_div(cur.firstChild);
			}
		}
	}
}
*/

function check_form(f)
{
	if(!formcheck(f))
		return false;

	imageout = document.getElementById('imageout');
	if(imageout && imageout.value=='')
	{
		var chfile = 0;
		for(j=0; j<f.elements.length;++j)
			if(f.elements[j].type == 'file' && f.elements[j].name != 'e_file')
				chfile = 1;
		if(!chfile)
		{
			alert(JMtext[JMlang][7]);
			return false;
		}
	}


	newp = document.getElementById('newparams');
	if(newp)
	{
		par = newp.parentNode;
		par.removeChild(newp);
	}
	return true;
}

function trim(inputString)
{
	if (typeof inputString != "string")
	{
		return inputString;
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ")
	{
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ")
	{
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	return retValue;
}

function CutFormField(formfield)
{
	a = document.getElementById(formfield);
	if(a && window.clipboardData)
	{
		//window.clipboardData.setData('Text', a.innerText);
		//a.innerText = '';
		window.clipboardData.setData('Text', objtext(a));
		objtext(a,'');
	}
}

function CopyFormField(formfield)
{
	a = document.getElementById(formfield);
	if(a && window.clipboardData)
	{
		//window.clipboardData.setData('Text', a.innerText);
		window.clipboardData.setData('Text', objtext(a));
	}
}

function ClearFormField(formfield)
{
	a = document.getElementById(formfield);
	objtext(a,'');
	//if(a)
	//	a.innerText = a.textContent = '';
}

function PasteFormField(formfield)
{
	a = document.getElementById(formfield);
	if(a && window.clipboardData)
	{
		//a.innerText = window.clipboardData.getData('Text');
		objtext(a,window.clipboardData.getData('Text'));
	}
}
function manager_unload(id)
{
	if(typeof(id)=='undefined')
		id = 1;
	return serverRequest('&action=chrootid&rootid=' + id + '&tree=' + JMcontext_tree);
}

function toggle_conf(act)
{
	var t = document.getElementById('divconfig');
	if(t)
	{
		if(act == 0)
			t.style.visibility = 'hidden';
		else if(act == 1)
			t.style.visibility = 'visible';
		else
			t.style.visibility = (t.style.visibility!='visible') ? 'visible' : 'hidden';
	}
	return false;
}


function get_elem_offset(elem)
{
	var top=0, left=0;
	if(elem.getBoundingClientRect)
	{
		var box = elem.getBoundingClientRect();
		var body = document.body;
		var docElem = document.documentElement;
		var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
		var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
		var clientTop = docElem.clientTop || body.clientTop || 0;
		var clientLeft = docElem.clientLeft || body.clientLeft || 0;
		top  = box.top +  scrollTop - clientTop;
		left = box.left + scrollLeft - clientLeft;
		return { top: Math.round(top), left: Math.round(left) }
	}
	else
	{
		while(elem)
		{
			top = top + parseInt(elem.offsetTop);
			left = left + parseInt(elem.offsetLeft);
			elem = elem.offsetParent;
		}
		return {top: top, left: left}
	}
}

//2011-09-01
function img_preview(obj)
{
	p = document.getElementById('divpreview');
	if(!p) return;
	if(!obj)
	{
		p.style.visibility = 'hidden';
		p.innerHTML = '';
		return;
	}
	var bodydiv = get_elem_offset(document.getElementById('bodydiv'));
	var scrolltop  = (document.body.scrollTop)  ? document.body.scrollTop  : document.documentElement.scrollTop;
	var scrollleft = (document.body.scrollLeft) ? document.body.scrollLeft : document.documentElement.scrollLeft;
	p.style.top  = scrolltop  + event.clientY - bodydiv.top  + 12 + 'px';
	p.style.left = scrollleft + event.clientX - bodydiv.left + 16 + 'px';
	p.style.visibility = 'visible';
	if(p.innerHTML == '')
	{
		p.innerHTML = '<img src="' + obj.href + '"/>';
	}
}

