function DocSizeH() {
	var b=document.body, e=document.documentElement;
	var esh=0, eoh=0, bsh=0, boh=0;
	if (e) { esh = e.scrollHeight; eoh = e.offsetHeight; }
	if (b) { bsh = b.scrollHeight; boh = b.offsetHeight; }
	return Math.max(esh,eoh,bsh,boh);
}

function DocSizeW() {
	var b=document.body, e=document.documentElement;
	var esw=0, eow=0, bsw=0, bow=0;
	if (e) { esw = e.scrollWidth; eow = e.offsetWidth; }
	if (b) { bsw = b.scrollWidth; bow = b.offsetWidth; }
	return Math.max(esw,eow,bsw,bow);
}

dicts = new Hash();

function DictOpen(div)
{
	$('cloak').show();
	$('cloak').style.width = DocSizeW(); 
	$('cloak').style.height = DocSizeH(); 
	mul = ((dicts.get(div)["type"]=="MM")?"&mul=yes":"");
	window.open(
		"?do=edit-dictionary&name="+dicts.get(div)['name']+"&div="+div+mul,"dict",
		"toolbar=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=yes,location=no,width=350,height=400");
}	

function MarkDict(div) {
	var select = $(div+'s');
	var val = $(div+'h').value;
	if (select.options) {
		if ((val == '') && (dicts.get(div)['mandatory'])) {
			if (select.options.length) 
				$(div+'h').value = select.options[0].value;
		}
		for (i = 0; i < select.options.length; i++) {
			if (select.options[i].value == val) select.selectedIndex = i;
		}
	}
}


function SetMarkDict(div, val) {
	$(div+'h').value = val;
}

function SetMarkDictMM() {
	var params = document.location.search.toQueryParams();
	var div = params["div"];
	window.opener.SetMarkDict(div, GroupCheckboxes());
}

function GroupCheckboxes() {
	var chs = $$("input.MLCheckbox");
	var group = new Array();
	chs.each( function chf(i) {
		if (i.checked) group.push(i.value);
	});
	return group.join(";");
}

function GetMarkDict(div) {
	return $(div+'h').value;
}

function UpdateMarkDict(div) {
	s = $(div+"s");
	$(div+'h').value = s.options[s.selectedIndex].value;
}

function SomthGoesWrong(o, w) {
	alert("Wrong: "+w.message);
}

function LoadDict(div)
{
	name = dicts.get(div)['name'];
	func = dicts.get(div)['func'];
	mand = (dicts.get(div)['mandatory']?"&mandatory=yes":"");
	if (dicts.get(div)['type'] == "MM") {
		path = "do=one-dictionary&name="+name+"&id="+$(div+"h").value;
	}
	if (dicts.get(div)['type'] == "O") {
		path = "do=one-dictionary&name="+name+"&id="+$(div+"h").value;
	}
	if (dicts.get(div)['type'] == "T") {
		path = "do=one-dictionary&name="+name+"&id="+$(div+"h").value;
	}
	if (dicts.get(div)['type'] == "S") {
		path = 'do=xml-dictionary&name='+name+mand; 
	}
	var myAjax = new Ajax.Request(
			'index.php', 
			{
				method: 'get', 
				parameters: path,
				onComplete: DictLoaded,
				onException: SomthGoesWrong
			});
	myAjax.origin = div;		
}

function DictLoaded(resp) {
	div = resp.request.origin;
	if (dicts.get(div)['type'] == "MM") {
		$(div+"t").value = resp.responseText;
	}
	if (dicts.get(div)['type'] == "O") {
		$(div+"t").value = resp.responseText;
	}
	if (dicts.get(div)['type'] == "T") {
		$(div).innerHTML = resp.responseText;
	}
	if (dicts.get(div)['type'] == "S") {
		odi = $(div+"d");
		odi.innerHTML = '<select id="'+div+'s" onChange="UpdateMarkDict(\''+div+'\')">'+resp.responseText+'</select>';
		MarkDict(div);
	}
}

function DictClose(div)
{
	LoadDict(div);
	if (dicts.get(div)['type'] == "S") MarkDict(div);
	$('cloak').hide();
}

function WaitReload(div, msec)
{
	setTimeout('DictClose("'+div+'")', msec);
}

function LoadDicts() {
	dicts.each( function(val) {
		LoadDict(val.key);
	} );
}

function DictCreate(name, div, value, mand) {
	document.write('<input type="hidden" name="'+div+'" value="'+value+'" id="'+div+'h"><span id="'+div+'d"><select id="'+div+'s" onChange="UpdateMarkDict(\''+div+'\')"></select></span>'+(ro?'':'<a href="javascript:void(0)" onClick="DictOpen(\''+div+'\')"><img src="/images/folder.gif" width="16" height="16" border="0"></a>'));
	dicts.set(div, { 'name': name, 'mandatory': mand, 'type': 'S' } );   
}

function DictCreateWO(name, div, value, mand)
{
	document.write('<input type="hidden" name="'+div+'" value="'+value+'" id="'+div+'h"><span id="'+div+'d"><select id="'+div+'s" onChange="UpdateMarkDict(\''+div+'\')"></select></span>');
	dicts.set(div, { 'name': name, 'mandatory': mand, 'type': 'S' } );   
}

function DictCreateMM(name, div, value, cla) {
	document.write('<span class=\"'+cla+'\"><input type="hidden" name="'+div+'" value="'+value+'" id="'+div+'h"><input type=text id="'+div+'t" readonly>'+(ro?'':'<a href="javascript:void(0)" onClick="DictOpen(\''+div+'\')"><img src="/images/folder.gif" width="16" height="16" border="0"></a></span>'));
	dicts.set(div, { 'name': name, 'mandatory': false, 'type': 'MM' } );   
}

function DictCreateOne(name, div, value, cla) {
	document.write('<span class=\"'+cla+'\"><input type="hidden" name="'+div+'" value="'+value+'" id="'+div+'h"><input type=text id="'+div+'t" readonly>'+(ro?'':'<a href="javascript:void(0)" onClick="DictOpen(\''+div+'\')"><img src="/images/folder.gif" width="16" height="16" border="0"></a></span>'));
	dicts.set(div, { 'name': name, 'mandatory': false, 'type': 'O' } );   
}

function DictCreateTx(name, div, value, cla) {
	document.write('<span class=\"'+cla+'\"><input type="text" name="'+div+'" value="'+value+'" id="'+div+'h" size="5" readonly><input type=text id="'+div+'t" size="50" readonly>'+(ro?'':'<a href="javascript:void(0)" onClick="DictOpen(\''+div+'\')"><img src="/images/folder.gif" width="16" height="16" border="0"></a></span>'));
	dicts.set(div, { 'name': name, 'mandatory': false, 'type': 'O' } );   
}

function DictCreateT(name, div, value) {
	document.write('<span id="'+div+'"></span><input type="hidden" value="'+value+'" id="'+div+'h">');
	dicts.set(div, { 'name': name, 'mandatory': false, 'type': 'T' } );   
}


function OnParentChange() {
	var pid = this.options[this.selectedIndex].value;
	chcol = $(child).getElementsByTagName("option");		
	$(child).selectedIndex = 0;
	for (i = 0; i < chcol.length; i++) {
		if (parseInt(chcol[i].value)) {
			if ((links[pid] == null) || (links[pid].indexOf(parseInt(chcol[i].value)) == -1)) {
				chcol[i].hide();
			} else {
				chcol[i].show();
			}
		}
	}

}
function OnChildChange() {
}

function LinkDictLoaded (req) {
	links = req.responseText.evalJSON();
}

function LinkDict(par, ch) {
	var dlajax = new Ajax.Request(
			'index.php', 
			{
				method: 'get', 
				parameters: 'do=xml-links&dict='+ch,
				onComplete: LinkDictLoaded 
			});
	child = dicts[ch]["div"];		
	$(dicts[par]["div"]).onchange = OnParentChange; 
}

function InitDictEditor(div, dict, hasparent) {
	var ret = "";
	var params = document.location.search.toQueryParams();
	var update = params["div"];
	var multiple = (params["mul"])?true:false;
	var ids = window.opener.GetMarkDict(update).split(";");
	for (i = 1; i < items.length; i++) {
		if (items[i]["lock"]) {
			del = "<img src=\"/images/lock.gif\" width=\"12\" height=\"12\" border=\"0\" hspace=\"2\" vspace=\"2\">";
		} else {
			del = "<a href=\"javascript:void(0)\" onClick=\"closing=false; document.location.href='?do=del-dictionary&name="+dict+"&div="+update+"&id="+items[i]["id"]+"'\"><img src=\"/images/del-dict.gif\" width=\"16\" height=\"16\" alt=\"Удалить\" border=\"0\"></a>"
		}
		if (multiple)
			ret += "<tr class=\""+((i%2)?"odd":"even")+"\"><td class=\"MLCheckTD\"><input type=\"checkbox\" id=\"c"+i+"\" class=\"MLCheckbox\" value=\""+items[i]["id"]+"\""+(ids.find(function n (n) { return items[i]["id"]==n; })?" CHECKED":"")+"></td><td class=\"MLInfo\">"+items[i]["name"]+(hasparent?(", "+items[i]["par"]):"")+"</td><td class=\"MLButtons\"><a href=\"javascript:void(0)\" onClick=\"closing=false; document.location.href='?do=edit-dictionary&name="+dict+"&div="+update+"&id="+items[i]["id"]+"'\"><img src=\"/images/edit-dict.gif\" width=\"16\" height=\"16\" alt=\"Редактировать\" border=\"0\"></a>"+del+"</td></tr>";
		else
			ret += "<tr class=\""+((i%2)?"odd":"even")+"\"><td class=\"MLInfo\"><a href=\"javascript:void(0)\" onClick=\"window.opener.SetMarkDict('"+update+"', '"+items[i]["id"]+"'); window.close()\">"+items[i]["name"]+(hasparent?(", "+items[i]["par"]):"")+"</a></td><td class=\"MLButtons\"><a href=\"javascript:void(0)\" onClick=\"closing=false; document.location.href='?do=edit-dictionary&name="+dict+"&div="+update+"&id="+items[i]["id"]+"'\"><img src=\"/images/edit-dict.gif\" width=\"16\" height=\"16\" alt=\"Редактировать\" border=\"0\"></a>"+del+"</td></tr>";
	}
	$(div).innerHTML = "<table class=\"MainTable\">"+ret+"</table>";

}

