var _cancel = "Cancel";
var _ok = "OK";

function checkMany(element)
{
	this.element = element;
	this.counter = 0;
	this.nchoices = 0;
	this.topitem = "";
	this.string = ""
	this.textInput = null;
	element.style.position = "relative";
	element.style.borderStyle = "solid";
	element.style.borderWidth = "1px";
	element.style.borderTopColor = "#888888";
	element.style.borderRightColor = "#ffffff";
	element.style.borderBottomColor = "#ffffff";
	element.style.borderLeftColor = "#888888";
	element.style.padding = "0px";
	element.style.margin = "0px";
	//element.id = "Elmnt";
	this.scrollArea = document.createElement("div");
	this.scrollArea.id = "scra";
	this.scrollArea.style.position = "absolute";
	this.scrollArea.top = "0px";
	this.scrollArea.left = "0px";
	this.scrollArea.style.width = "348px";
	this.scrollArea.style.height = "328px";
	this.scrollArea.style.overflow = "auto";
	this.checkArea = document.createElement("div");
	this.checkArea.id = "chka";
	this.checkArea.style.position = "relative";
	this.checkArea.style.top = "1px";
	this.checkArea.style.left = "1px";
	//this.checkArea.style.width = Math.max(1, element.offsetWidth - 3) + "px";
	this.checkArea.style.backgroundColor = "white";
	//this.checkArea.style.overflow = "scroll";
	this.checkArea.style.margin = "0px";
	this.fillArea = document.createElement("div");
	this.fillArea.style.padding = "10px";
	this.checkArea.appendChild(this.fillArea);
	//this.checkArea.style.backgroundColor = "yellow";
	this.form = document.createElement("form");
	this.form.appendChild(this.scrollArea);
	this.scrollArea.appendChild(this.checkArea);
	this.element.appendChild(this.form);
	this.choices = new Object();
	this.curChoice = null;
	this.checkArea.style.height = Math.max(1, element.offsetHeight - this.checkArea.offsetTop - 2) + "px";
}

checkMany.prototype.setInput = function(input)
{
	this.textInput = input;
}

checkMany.prototype.check = function(value)
{
	for(var e in this.choices)
	{
		var chs = this.choices[e];
		for(var m in chs)
		{
			if(chs[m].value == value)
			{
				chs[m].checked = true;
				chs[m].box.checked = true;
				return;
			}
		}
	}
}

checkMany.prototype.setSelection = function(string)
{
	this.string = string;
	
	for(var e in this.choices)
	{
		var chs = this.choices[e];
		for(var m in chs)
		{
			chs[m].checked = false;
		}
	}

	var a = string.split(/#/);
	if(a)
	{
		for(var i = 0; i < a.length; i++)
		{
			if(a[i])
			{
				this.check(a[i]);
			}
		}
	}
}

checkMany.prototype.getSelection = function()
{
	var res = "";
	for(var e in this.choices)
	{
		var chs = this.choices[e];
		for(var m in chs)
		{
			if(chs[m].checked)
			{
				res += chs[m].value + "#";
			}
		}
	}
	return res;
}

checkMany.choose = function()
{
	this.celem.choose(this.options[this.options.selectedIndex].value);
}

checkMany.prototype.add = function(choice, name, value)
{
	if(!this.topItem)
	{
		this.topItem = choice;
	}
	var chs = this.choices[choice];
	if(!chs)
	{
		if(this.nchoices == 1)
		{
			this.chooseArea = document.createElement("div");
			this.chooseArea.style.backgroundColor = "#dddddd";
			this.chooseArea.style.padding = "10px 10px 0px 10px";
			this.chooseArea.style.borderBottomStyle = "solid";
			this.chooseArea.style.borderBottomWidth = "1px";
			this.chooseArea.style.borderBottomColor = "#888888";
			this.chooseArea.style.height = "33px";
			this.chooseArea.style.margin = "0px";
			this.element.insertBefore(this.chooseArea, this.element.firstChild);
			this.chooser = document.createElement("select");
			var w = this.element.offsetWidth - 20;
			if(w > 40)
			{
				this.chooser.style.width = w + "px";
			}
			this.chooser.celem = this;
			this.chooser.onchange = checkMany.choose;
			this.chooseArea.appendChild(this.chooser);
			for(var e in this.choices)
			{
				this.chooser.options[0] = new Option(e, e, true, false);
			}
			//this.checkArea.style.top = "44px";
			var h = this.element.offsetHeight - 44 - 2;
			if(h > 40)
			{
				this.checkArea.style.height = h + "px";
			}
		}
		if(this.nchoices)
		{
			this.chooser.options[this.chooser.options.length] = new Option(choice, choice, false, false);
		}
		chs  = new Object();
		this.choices[choice] = chs;
		this.nchoices++;
	}
	var id = "_cm_" + this.counter++;
	var bdiv = document.createElement("div");
	var box = document.createElement("input");
	box.type = "checkbox";
	box.name = id;
	box.id = id;
	box.value = value;
	box.onclick = checkMany.click;
	var lbl = document.createElement("label");
	lbl.htmlFor = id;
	lbl.innerHTML = name;
	lbl.style.paddingLeft = "10px";
	bdiv.appendChild(box);
	bdiv.appendChild(lbl);
	mitem = new Object();
	box.mitem = mitem;
	mitem.box = box;
	chs[name] = mitem;
	mitem.div = bdiv;
	mitem.multi = this;
	mitem.value = value;
	mitem.checked = false;
	mitem.id = id;
}

var _e;

checkMany.click = function()
{
	this.mitem.checked = this.checked;
}

checkMany.prototype.choose = function(choice)
{
	if(!choice)
	{
		choice = this.topItem;
	}
	while(this.fillArea.firstChild)
	{
		this.fillArea.removeChild(this.fillArea.firstChild);
	}
	var chs = this.choices[choice];
	for(var c in chs)
	{
		this.fillArea.appendChild(chs[c].div);
		this.form.elements[chs[c].id].checked = chs[c].checked;
	}
}

checkMany.create = function(div, text)
{
	div.innerHTML = "";
	var hname = "__" + text.name;
	var hidden = document.getElementById(hname);
	var cmulti = new checkMany(div);
	var txt = hidden.value;
	eval(txt);
	for(var cls in values)
	{
		var val = values[cls];
		for(var name in val)
		{
			cmulti.add(cls, name, val[name]);
		}
	}
	var sel = text.value;
	cmulti.setSelection(sel);
	cmulti.choose();
	cmulti.setInput(text);
	return cmulti;
}

checkMany.ok = function()
{
	if(this.mitem.textInput)
	{
		this.mitem.textInput.value = this.mitem.getSelection();
		if(this.mitem.textInput.onkeyup)
		{
			this.mitem.textInput.onkeyup()
		}
		// this.mitem.textInput.style.color = "black";
	}
	checkMany.cancel();
}

checkMany.scroll = function()
{
	var mask = document.getElementById("mask");
	mask.style.top = (document.documentElement.scrollTop) + "px";
}

checkMany.cancel = function()
{
	var mask = document.getElementById("mask");
	while(mask.firstChild)
	{
		mask.removeChild(mask.firstChild);
	}
	mask.style.visibility = "hidden";
/*
	var ihfr = document.getElementById("ihfr");
	if(ihfr)
	{
		ihfr.parentNode.removeChild(ihfr);
		document.body.appendChild(ihfr);
		ihfr.style.visibility = "hidden";
	}
 */
}

checkMany.popuppop = function(elem)
{
	var x = checkMany.getpopDialog(elem, "auto");
	x.style.left = "0px";
	x.style.top = "16px";
	x.style.width = "350px";
	//var f1 = x.firstChild;
	//f1.style.width = "auto";
	//var forms = f1.getElementsByTagName("form");
	//var f2 = forms.item(0);
	//f2.style.width = "auto";
	//var f3 = f2.firstChild;
	// f3.style.width = "450px";
	// f3.style.height = "auto";
	// f3.style.overflow = "auto";
	var p = popdialog.getDialog("_chm", "", "", 40, 40, true, null, false, false, popdialog.hide);
	p.setBody(x);
	p.title.style.width = x.offsetWidth + "px";
	elem.blur();
}

checkMany.popup = function(elem)
{
	var top = 10;
	var width = 350;
	var mask = document.getElementById("mask");
	while(mask.firstChild)
	{
		mask.removeChild(mask.firstChild);
	}
	var ihfr = document.getElementById("ihfr");
	if(ihfr)
	{
		ihfr = document.createElement("iframe");
		ihfr.src = "popframe.html";
		ihfr.style.position = "absolute";
		ihfr.style.zIndex = 7;
		mask.appendChild(ihfr);
		ihfr.style.width = (width + 24) + "px";
		ihfr.style.left = "150px";
		ihfr.style.top = (top + 2) + "px";
	}

	var div = checkMany.getDialog(elem)
	mask.appendChild(div);
	mask.style.visibility = "visible";
	mask.style.width = document.body.offsetWidth + "px";
	mask.style.height = document.body.offsetHeight + "px";
	checkMany.scroll();
	window.onscroll = checkMany.scroll;
	if(ihfr)
	{
		ihfr.style.height = div.offsetHeight + "px";
	}
	elem.blur();
}

checkMany.getDialog = function(elem)
{
	var top = 10;
	var width = 350;
	var div = document.createElement("div");
	div.style.position = "absolute";
	div.style.width = width + "px";
	div.style.left = "150px";
	div.style.top = top + "px";
	div.style.padding = "10px";
	div.style.borderWidth = "2px";
	div.style.borderStyle = "solid";
	div.style.borderColor = "white #888888 #888888 white";
	div.style.backgroundColor = "#eeeeee";
	div.style.zIndex = 30;
	var mck = document.createElement("div");
	mck.id = "__mck";
	mck.style.width = (width + 6) + "px";
	var h = document.body.parentNode.clientHeight;
	var hgt = 370;
	if(h - top > hgt + 65)
	{
		mck.style.height = hgt + "px";
	}
	else
	{
		mck.style.height = (h - top - 65) + "px";
	}
	div.appendChild(mck);
	var ctl = document.createElement("div");
	ctl.style.height = "30px";
	ctl.style.paddingTop = "5px";
	ctl.style.width = "250px";
	div.appendChild(ctl);
	var tbl = document.createElement("table");
	tbl.width = "100%";
	var tbody = document.createElement("tbody");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.align = "right";
	var ok = document.createElement("input");
	ok.type = "button";
	ok.name = "OK";
	ok.value = _ok;
	ok.onclick = checkMany.ok;
	td.appendChild(ok);
	var cancel = document.createElement("input");
	cancel.type = "button";
	cancel.name = "cancel";
	cancel.value = _cancel
	cancel.onclick = checkMany.cancel;
	td.appendChild(cancel);
	tr.appendChild(td);
	tbody.appendChild(tr);
	tbl.appendChild(tbody);
	ctl.appendChild(tbl);
	ok.mitem = checkMany.create(mck, elem);
	return div;
}

checkMany.getpopDialog = function(elem, width)
{
	var top = 10;
	var div = document.createElement("div");
	div.id = "div1";
	div.style.position = "absolute";
	div.style.width = "auto"
	div.style.left = "150px";
	div.style.top = top + "px";
	div.style.padding = "10px";
	
	div.style.borderWidth = "2px";
	div.style.borderStyle = "solid";
	div.style.borderColor = "white #888888 #888888 white";
	div.style.backgroundColor = "#eeeeee";
	div.style.zIndex = 30;
	var mck = document.createElement("div");
	mck.id = "__mck";
	var h = document.body.parentNode.clientHeight;
	var hgt = 370;
	if(h - top < hgt + 65)
	{
		hgt = h - top - 65;
	}
	mck.style.height = hgt + "px";
	mck.style.width = width;
	//mck.style.overflow = "scroll";
	div.appendChild(mck);
	var ctl = document.createElement("div");
	ctl.id = "ctl1";
	ctl.style.height = "30px";
	ctl.style.paddingTop = "5px";
	ctl.style.width = "250px";
	div.appendChild(ctl);
	var tbl = document.createElement("table");
	tbl.width = "100%";
	var tbody = document.createElement("tbody");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.align = "right";
	var ok = document.createElement("input");
	ok.type = "button";
	ok.name = "OK";
	ok.value = _ok;
	ok.onclick = checkMany.popok;
	td.appendChild(ok);
	var cancel = document.createElement("input");
	cancel.type = "button";
	cancel.name = "cancel";
	cancel.value = _cancel;
	cancel.onclick = checkMany.pophide;
	td.appendChild(cancel);
	tr.appendChild(td);
	tbody.appendChild(tr);
	tbl.appendChild(tbody);
	ctl.appendChild(tbl);
	ok.mitem = checkMany.create(mck, elem);
	return div;
}

checkMany.popok = function()
{
	if(this.mitem.textInput)
	{
		this.mitem.textInput.value = this.mitem.getSelection();
		if(this.mitem.textInput.onkeyup)
		{
			this.mitem.textInput.onkeyup()
		}
		// this.mitem.textInput.style.color = "black";
	}
	popdialog.hide();
}

checkMany.pophide = function()
{
	popdialog.hide();
}

