dp = {

	// _____________________________________________________________
	// :::::::::::::::::::::::::::::::::::::::::::::::::::::: PARDIV

	// pardiv_create php fv-hez

	pardiv_get_id : function(parnev, id) {
		var t = document.getElementById(id);
		if (t) {
			return dp.findnode_name(t, parnev, 'erteket');
		} else {
			return false;
		}
	},

	pardiv_set_id : function(parnev, id, ert) {
		var t = document.getElementById(id);
		if (t) {
			var h = dp.findnode_name(t, parnev);
			if (h) {
				dp.node_ertek_set(h, ert);
				return true;
			}
		}
		return false;
	},

	pardiv_get_class : function(parnev, node, classnev) {

	},

	pardiv_set_class : function(parnev, node, classnev, ert) {

	},
	// _____________________________________________________________
	// :::::::::::::::::::::::::::::::::::::::::::::::: TABLE EDITOR

	// r.blokk r.kod r.actual node.value
	te_coll_data : function(node) {
		var r = {};
		// kod
	r.kod = dp.findnode_name_bckwrd(node, 'kod', 'erteket');
	// actual
	var t = (node.className || "").match(/te_a_(\w+)/);
	r.actual = (t == null ? false : t[1]);
	// block
	var t = (node.className || "").match(/te_b_(\w+)/);
	if (t == null) {
		var td = dp.findnode_tagname_backwards(node, 'td', 'tr');
		var t = (td.className || "").match(/te_b_(\w+)/);
		r.blokk = (t == null ? false : t[1]);
	} else {
		r.blokk = t[1];
	}
	//
	return r;
},

// data-ban megkapott több érték beállitása, node alatt lévő, classname-ban
	// megjelölt actual data-nál, beállitja a kapott értékeket
	te_set_data : function(node, data) {
		if (node.getElementsByTagName) {
			var tagnevek = [ "input", "select", "textarea", "span", "div" ];
			for ( var i = 0; i < tagnevek.length; i++) {
				var all = node.getElementsByTagName(tagnevek[i]);
				for ( var j = 0; j < all.length; j++) {
					var t = (all[j].className || "").match(/te_a_(\w+)/);
					if (t != null && data[t[1]]) {
						dp.node_ertek_set(all[j], data[t[1]]);
					}
				}
			}
		}
	},

	// csak 1 érték beállitása, node alatt lévő, classname-ban megjelölt actual
	// data-nál, beállitja a kapott értékeket, vissza: true/false ha sikerül
	te_set_only1 : function(node, nev, ert) {
		if (node.getElementsByTagName) {
			var tagnevek = [ "input", "select", "textarea", "span", "div" ];
			for ( var i = 0; i < tagnevek.length; i++) {
				var all = node.getElementsByTagName(tagnevek[i]);
				for ( var j = 0; j < all.length; j++) {
					var t = (all[j].className || "").match(/te_a_(\w+)/);
					if (t != null && t[1] == nev) {
						dp.node_ertek_set(all[j], ert);
						return true;
					}
				}
			}
		}
		return false;
	},
	//
	te_move_fwd : function(node, r) {
		var rakt = dp.findnode_tagname_backwards(node, 'tr', 'table');
		var rprv = dp.closestSibling(rakt, 0);
		var prv_kod = false;
		if (rprv) {
			prv_kod = dp.findnode_name(rprv, 'kod', 'erteket');
			// minta sor kodja m legyen
			if (prv_kod == 'm') {
				prv_kod = false;
			}
		}
		if (prv_kod) {
			// alert(r.kod+' kodu a '+prv_kod+' elé lett mozgatva')
			rakt.parentNode.insertBefore(rakt, rprv);
			return prv_kod;
		} else {
			// alert('nem tudok feljebb menni');
			return false;
		}
	},
	te_move_bwd : function(node, r) {
		var rakt = dp.findnode_tagname_backwards(node, 'tr', 'table');
		var rnxt = dp.closestSibling(rakt, 1);
		var nxt_kod = false;
		if (rnxt) {
			nxt_kod = dp.findnode_name(rnxt, 'kod', 'erteket');
		}
		if (nxt_kod) {
			// alert(nxt_kod+' kodu a '+r.kod+' elé lett mozgatva')
	rakt.parentNode.insertBefore(rnxt, rakt);
	return nxt_kod;
} else {
	// alert('nem tudok lejjebb menni');
	return false;
}
},
/*
 * ALAP EVENT FUTTATÁS - sajátot is lehet csináni fv: függvény cime ami
 * paraméterezve lefut e: kapott event objekt
 * 
 * node: érintett node (amire kattintottak, ami módosult) block: block neve /
 * false actual: aktuális mező neve / false kod: aktuáls sorhoz tartozó kód /
 * false
 * 
 * te_do_event:function(fv, e){ var node=dp.eN(e); var r=dp.te_coll_data(node);
 * fv(node, r.block, r.actual, r.kod,) return dp.eF(e); },
 */

te_findnode_bckwrd : function(akt, nev, erteket) {
do {
	var t = dp.te_findnode(akt, nev, erteket);
	if (t) {
		return t;
	} else {
		akt = akt.parentNode;
	}
} while (akt.nodeName.toLowerCase() != 'html');
return (false);
},

te_findnode : function(node, nev, erteket) {
// akt node
	if (node.className && (node.className.indexOf(nev) != -1)) {
		return (erteket ? dp.node_ertek_get(node) : node);
	}
	// child node-k
	if (node.getElementsByTagName) {
		var tagnevek = [ "input", "select", "textarea", "span", "div", "table" ];
		for ( var i = 0; i < tagnevek.length; i++) {
			var all = node.getElementsByTagName(tagnevek[i]);
			for ( var j = 0; j < all.length; j++) {
				if (all[j].className.indexOf(nev) != -1) {
					return (erteket ? dp.node_ertek_get(all[j]) : all[j]);
				}
			}
		}
	}
	return (false);
},
// _____________________________________________________________
	// ::::::::::::::::::::::::::::::::::::::: TERM VARIÁCIÓK AKTSEL
	get_aktsel : function(root) {
		var aktsel = {};
		var tagnevek = [ "input", "select" ];
		for ( var i = 0; i < tagnevek.length; i++) {
			var all = root.getElementsByTagName(tagnevek[i]);
			for ( var j = 0; j < all.length; j++) {
				if (all[j].name) {
					var nev = all[j].name.split('_');
					switch (nev[0]) {

					case 'chk':
						var ert = all[j].value.split('_');
						aktsel[nev[1]] = (all[j].checked ? ert[0] : ert[1]);
						break;

					case 'sel':
						aktsel[nev[1]] = all[j].value;
						break;
					default:
						break;
					}
				}
			}
		}
		return aktsel;
	},
	// _____________________________________________________________
	// :::::::::::::::::::::::::::::::::::::::::::::::::::::::: MISC
	isIE : function(mit) {
		return (navigator.appName.indexOf("Microsoft") != -1);
	},

	// event: get node
	eN : function(e) {
		var ev = e || window.event;
		return (dp.isIE() ? ev.srcElement : ev.target);
	},

	// event: finish
	eF : function(e) {
		(e || window.event).cancelBubble = true;
		return false;
	},

	window_open : function(mit) {
		window.open(mit, "a" + new Date().getTime(), 'scrollbars=yes, resizable=yes');
	},
	node_walk : function(root, path) {
		var t = path.split('.');
		for ( var i = 0; i < t.length; i++)
			root = root[t[i]];
		return root;
	},
	sel_kuld : function(cb, cust, mit) {
		if (cb) {
			n = dp.node_walk(window.opener, cb);
			n(mit, cust);
		}
	},

	str_left : function(str, n) {
		if (n <= 0)
			return "";
		else if (n > String(str).length)
			return str;
		else
			return String(str).substring(0, n);
	},
	str_right : function(str, n) {
		if (n <= 0)
			return "";
		else if (n > String(str).length)
			return str;
		else {
			var iLen = String(str).length;
			return String(str).substring(iLen, iLen - n);
		}
	},
	in_array : function(tu, szk) {
		for (h in szk) {
			if (szk[h] == tu) {
				return true;
			}
		}
		return false;
	},
	select_setakt : function(node, ert) {
		var t = 0;
		for ( var i = 1; i < node.options.length; i++) {
			if (node.options[i].value == ert) {
				t = i;
				break;
			}
		}
		node.selectedIndex = t;
	},
	// set
	checkbox_check2ert : function(root, nev, ert) {
		var t = root.getElementsByTagName('input');
		for ( var i = 0; i < t.length; i++) {
			if (t[i].type == 'checkbox' && t[i].name == nev) {
				t[i].checked = t[i].value & ert;
			}
		}
	},

	// get
	checkbox_check4ert : function(root, nev) {
		var t = root.getElementsByTagName('input');
		var s = 0;
		for ( var i = 0; i < t.length; i++) {
			if (t[i].type == 'checkbox' && t[i].name == nev && t[i].checked) {
				s += parseInt(t[i].value);
			}
		}
		return s;
	},

	select_tolt : function(node, adat, def_ert) {
		node.options.length = 0;
		var akt = 0;
		for ( var i = 0; i < adat.length; i++) {
			node.options[i] = new Option(adat[i].nev, adat[i].kod);
			if (adat[i].kod == def_ert) {
				akt = i;
			}
		}
		node.selectedIndex = akt;
	},
	tarolo : {},
	tarolo_set : function(kod, nev, ertek) {
		if (!dp.tarolo[kod]) {
			dp.tarolo[kod] = {};
		}
		dp.tarolo[kod][nev] = ertek;
	},
	tarolo_get : function(kod, nev) {
		// if(tarolo[kod][nev]){
	if (kod in dp.tarolo) {
		if (nev in dp.tarolo[kod]) {
			return dp.tarolo[kod][nev];
		}
	}
	return false;
},
/*
 * tinymce_set_html: function(id, html){ var inst = tinyMCE.getInstanceById(id);
 * inst.startContent = html; inst.isNotDirty = true;
 * tinyMCE.triggerNodeChange(false, true); },
 */
tinymce_set_html : function(id, html) {
	var inst = tinyMCE.get(id);
	inst.setContent((html ? html : ''));
	// inst.isNotDirty = false;

},
// ha multiselect: hm.multiselect_sel: kod1_kod2_kod3 és multiselect_sel elt
	// visszaadja egy objektumban
	// ha nem: választott kódját adja vissza
	hm_select2selobj : function(div) {
		var t = {};
		var kod = "";
		var h = document.getElementById(div);
		if (h) {
			var id = dp.findnode_name_bckwrd(h, 'hierfa_id', 'erteket');
			var o = hm.get(id);

			if (o.multiselect_enabled) {
				t.sel = o.multiselect_sel;
				for ( var adat in t.sel) {
					if (adat != "toJSON") {
						kod += '_' + adat;
					}
				}
				kod = kod.substr(1);
			} else {
				t.sel = (o.li_akt ? hm.get_value(o.li_akt, 'kod') : 0);
				kod = t.sel;
			}
		}
		t.str = (kod ? kod : "0");
		return t;
	},
	// _____________________________________________________________
	// :::::::::::::::::::::::::::::::::::::::::::::::::::::::: AJAX
	ajax_convback : function(valasz) {
		eval("var adatok=" + valasz);
		return adatok;
	},

	// (:url) meghivando php file
	// (:o_tofill) object propertyjai a betöltendo adatok
	// (:f_cb) callback fv cime, meghivodik a valasz adatokkal
	// (:o_cb_param) objektumban lehet küldeni adatokat a callback fv-nek
	ajax_leker : function(url, o_tofill, f_cb, o_cb_param, varjon) {

		//
	var ajax = new sack();
	//
	if (varjon) {
		b = document.createElement("IMG");
		dp.setClass(b, "waitjel", "?");
		b.src = "wait.gif";
		ajax.waitjel = document.body.appendChild(b);
	}

	//

	for ( var adat in o_tofill) {
		if (adat != "toJSON") {
			ajax.setVar(adat, o_tofill[adat]);
		}
	}
	ajax.requestFile = url;
	ajax.onCompletion = function() {
		//

		//
		if (ajax.response) {
			if (f_cb) {
				f_cb(ajax.response, o_cb_param);
			}
		}
		if (varjon) {
			this.waitjel.parentNode.removeChild(this.waitjel);
		}
	};
	ajax.runAJAX(null, (varjon ? false : true));
	// alert("kilép: ajax_leker");
},
// _____________________________________________________________
	// :::::::::::::::::::::::::::::::::::::::::::::::::::: CALENDAR

	/*
	 * 
	 * cal_getdates (0, callback_proba,'multiple');
	 * 
	 * <script type='text/javascript' src='zapatec/zpcal/utils/zapatec.js'></script>
	 * <script type="text/javascript" src="zapatec/zpcal/src/calendar.js"></script>
	 * <script type="text/javascript" src="zapatec/zpcal/lang/calendar-en.js"></script>
	 * <link href="zapatec/zpcal/website/css/zpcal.css" rel="stylesheet"
	 * type="text/css"> <link href="zapatec/zpcal/website/css/template.css"
	 * rel="stylesheet" type="text/css"> <link
	 * href="zapatec/zpcal/themes/maroon.css" rel="stylesheet" type="text/css">
	 * 
	 * for (var i in cal.multiple) { var currentDate = cal.multiple[i]; if
	 * (currentDate) { alert(currentDate.print("%Y-%m-%d")); //MA[MA.length] =
	 * currentDate; } }
	 * 
	 * 
	 */
	cal_save : function(cal) {
		// cal.dp_callback(cal.multiple);

		var t = [];
		if (cal.dp_upd_node) {
			dp.node_ertek_set(cal.dp_upd_node, cal.currentDate.print(cal.ifFormat));
			/*
			 * if(cal.dp_upd_node.onchange) { cal.dp_upd_node.onchange(); }
			 */
			/*
			 * var evt = document.createEvent("HTMLEvents");
			 * evt.initEvent("change", true, true);
			 * cal.dp_upd_node.dispatchEvent(evt);
			 */
			dp.crEvent(cal.dp_upd_node, 'change');
		} else if (cal.dp_multiple) {
			for ( var i in cal.multiple) {

				if (cal.multiple[i] && typeof cal.multiple[i] == 'object') {
					t.push(cal.multiple[i].print(cal.ifFormat));
				}
			}
		} else {
			t.push(cal.currentDate.print(cal.ifFormat));
		}
		dp.cal_close(cal);
		if (cal.dp_callback) {
			cal.dp_callback(t);
		}
	},

	cal_close : function(cal) {
		cal.destroy();
	},

	cal_getdates : function(atnode, callback, multiple, upd_node, kell_time) {
		// var MA = [ new Date(2007, 3, 5), new Date(2007, 3, 18), new
	// Date(2007, 3, 22), new Date(2007, 3, 25) ];
	var myCal = window.calendar = new Zapatec.Calendar(1, null);
	myCal.showsTime = kell_time;
	myCal.ifFormat = "%Y-%m-%d %H:%M:00";
	myCal.numberMonths = 1;
	myCal.firstDay = 1;
	myCal.electric = false;
	myCal.showOthers = true;
	myCal.sortOrder = "desc";
	if (callback) {
		myCal.dp_callback = callback;
	}
	if (multiple) {
		myCal.singleClick = false;
		myCal.multiple = [];
		myCal.dp_multiple = true;
		myCal.onClose = dp.cal_save;
	} else if (kell_time) {
		myCal.dp_multiple = false;
		myCal.singleClick = false;
		// myCal.onSelected=dp.cal_save;
		// myCal.onUpdate=dp.cal_save;
		// myCal.onClose=dp.cal_close;
		myCal.onClose = dp.cal_save;
	} else {
		myCal.dp_multiple = false;
		myCal.singleClick = true;
		myCal.onSelected = dp.cal_save;
		myCal.onClose = dp.cal_close;
		myCal.onClose = dp.cal_save;
	}

	if (upd_node) {
		myCal.dp_upd_node = upd_node;
	}
	myCal.create();
	if (atnode) {
		myCal.showAtElement(atnode, 'bR');
	} else {
		myCal.show();
	}
},

// _____________________________________________________________
	// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DOM
	// fix clonenode-- nem másolja az eventeket ie-ben
	copy_events : function(s, d) {
		var e = [ 'onblur', 'onfocus', 'oncontextmenu', 'onload', 'onresize', 'onscroll', 'onunload', 'onclick', 'ondblclick', 'onmousedown',
				'onmouseup', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseover', 'onmouseout', 'onchange', 'onreset', 'onselect',
				'onsubmit', 'onkeydown', 'onkeyup', 'onkeypress', 'onabort', 'onerror', 'ondragstart', 'onselectstart' ];
		for ( var i = 0; i < e.length; i++) {
			if (s[e[i]]) {
				d[e[i]] = s[e[i]];
			}
		}
		if (d.childNodes) {
			for ( var i = 0; i < d.childNodes.length; i++) {
				dp.copy_events(s.childNodes[i], d.childNodes[i]);
			}
		}
	},

	/*
	 * data: ::text ::class ::events[].n ::events[].v
	 */
	createUL : function(parent, ul_data, li_data) {
		var ul = document.createElement('ul');
		// class
	if (ul_data.css)
		ul.className = ul_data.css;
	// events
	if (ul_data.evnts) {
		for ( var j = 0; j < ul_data.evnts.length; j++) {
			dp.addEvent(ul, ul_data.evnts[j].n, ul_data.evnts[j].v);
		}
	}
	for ( var i = 0; i < li_data.length; i++) {
		var li = document.createElement('li');
		// text
		li.appendChild(document.createTextNode(li_data[i].txt));
		// class
		if (li_data[i].css)
			li.className = li_data[i].css;
		// events
		if (li_data[i].evnts) {
			for ( var j = 0; j < li_data[i].evnts.length; j++) {
				dp.addEvent(li, li_data[i].evnts[j].n, li_data[i].evnts[j].v);
			}
		}
		// append
		ul.appendChild(li);
	}
	return parent.appendChild(ul);
},

closestSibling : function(node, direction) {
	if (direction == 1) {
		while (node.nextSibling != null) {
			node = node.nextSibling;
			if (node.nodeType == 1) {
				return node;
			}
		}
	} else {
		while (node.previousSibling != null) {
			node = node.previousSibling;
			if (node.nodeType == 1) {
				return node;
			}
		}
	}
	return null;
},

/*
 * closestSibling:function(node,direction){ var tempObj; if(direction==-1 &&
 * node.previousSibling!=null){ tempObj=node.previousSibling;
 * while(tempObj.nodeType!=1 && tempObj.previousSibling!=null){
 * tempObj=tempObj.previousSibling; } }else if(direction==1 &&
 * node.nextSibling!=null){ tempObj=node.nextSibling; while(tempObj.nodeType!=1 &&
 * tempObj.nextSibling!=null){ tempObj=tempObj.nextSibling; } } return
 * tempObj.nodeType==1?tempObj:false; },
 */

/* "?" auto */
setClass : function(obj, cl, mode) {
	var c = obj.className || "";
	var mask = new RegExp("(^| )" + cl + "($| )", "gi");
	if (mode == "?")
		mode = !c.match(mask);
	c = mode ? (c.match(mask) ? c : (c + " " + cl)) : c.replace(mask, " ");
	obj.className = c.replace(/ +/g, " ").replace(/(^ *| *$)/g, "");
},

addEvent : function(obj, eventName, eventFunction) {
	if (document.all) {
		obj.setAttribute(eventName, eventFunction);
		obj[eventName] = new Function("", eventFunction);
	} else
		obj.setAttribute(eventName, eventFunction);
},

// on-nélkül
	addEventLis : function(node, event, handler) {
		if (node.addEventListener)
			node.addEventListener(event, handler, false);
		else if (node.attachEvent)
			node.attachEvent("on" + event, handler);
	},

	crEvent : function(node, event_nev) {
		if (node.fireEvent) {
			var evt = document.createEventObject();
			evt.cancelBubble = false;
			node.fireEvent('on' + event_nev, evt);
		} else {
			var evt = document.createEvent('HTMLEvents');
			evt.initEvent(event_nev, true, true);
			node.dispatchEvent(evt);
		}
	},

	// (:cb_value) checkbox only: mit mutasson: value prop értéke(1) /
	// checked(0/semmi)
	node_ertek_get : function(node, cb_value) {
		switch (node.nodeName.toLowerCase()) {
		case 'input':
			if (node.type == 'checkbox') {
				if (cb_value) {
					return node.value;
				} else {
					return (node.checked ? node.value : 0);
				}
			} else {
				return node.value;
			}
			break;
		case 'textarea':
			return node.value;
			break;
		case 'select':
			return (node.selectedIndex == -1 ? 0 : node.options[node.selectedIndex].value);
			break;
		default:
			return false;
		}
	},

	// (:node) node értékét adja vissza
	// (:cb_value) checkbox only: value prop értéke (1 / fix érték)
	node_ertek_set : function(node, ert, cb_value) {
		switch (node.nodeName.toLowerCase()) {

		case 'input':
			if (node.type == 'checkbox') {
				node.checked = (ert ? true : false);
				if (cb_value) {
					node.value = cb_value;
				} else {
					node.value = 1;
				}
			} else {
				node.value = ert;
			}
			break;

		case 'textarea':
			node.value = ert;
			break;

		case 'select':
			dp.select_setakt(node, ert);
			break;

		case 'a':
			var t = dp.find_firsttextnode(node);
			if (t) {
				t.nodeValue = ert;
			}
			break;

		case 'span':
		case 'p':
		case 'div':
			node.innerHTML = ert;
			break;

		default:
			return false;
		}
		return true;
	},

	// (:node)minden parentnode-jat megnézi (tagname)elsö ilyen tagname-ut
	// keresi
	findnode_tagname_backwards : function(node, tagnev, root) {
		if (!root) {
			root = 'body';
		}
		while (node.parentNode && node.nodeName.toLowerCase() != tagnev && node.nodeName.toLowerCase() != root) {
			node = node.parentNode;
		}
		return (node.nodeName.toLowerCase() == tagnev ? node : false);
	},

	// első visszafele: tag.class=xxx, gyorsabb mint a "find_node_" mert nem néz
	// meg minden node-t, de csak akkor jó ha "alatta" van
	findnode_parentsonly_class : function(node, nev, erteket) {
		while (node.nodeName.toLowerCase() != 'body') {
			if (node.className == nev) {
				return (erteket ? dp.node_ertek_get(node) : node);
			}
			node = node.parentNode;
		}
		return false;
	},

	find_firsttextnode : function(node) {
		if (node.childNodes) {
			for ( var i = 0; i < node.childNodes.length; i++) {
				if (node.childNodes[i].nodeType) {
					if (node.childNodes[i].nodeType == 3) {
						return node.childNodes[i];
					}
				}
			}
		}
		return false;
	},

	// FindNODE név alapján --- (:node)node alatt (:nev)node.name==nev
	// (:erteket)talált node erteket/cimet adja vissza
	findnode_name : function(node, nev, erteket) {
		// akt node
		if (node.name == nev) {
			return (erteket ? dp.node_ertek_get(node) : node);
		}
		// child node-k
		if (node.getElementsByTagName) {
			var tagnevek = [ "input", "select", "textarea" ];
			for ( var i = 0; i < tagnevek.length; i++) {
				var all = node.getElementsByTagName(tagnevek[i]);
				for ( var j = 0; j < all.length; j++) {
					if (all[j].name == nev) {
						return (erteket ? dp.node_ertek_get(all[j]) : all[j]);
					}
				}
			}
		}
		return (false);
	},
	// FindNODE class alapján --- (:node)node alatt (:nev)node.name==nev
	// (:erteket)talált node erteket/cimet adja vissza
	findnode_class : function(node, nev, erteket) {
		// akt node
		if (node.className && node.className == nev) {
			return (erteket ? dp.node_ertek_get(node) : node);
		}
		// child node-k
		if (node.getElementsByTagName) {
			var tagnevek = [ "input", "select", "textarea", "span", "div", "table" ];
			for ( var i = 0; i < tagnevek.length; i++) {
				var all = node.getElementsByTagName(tagnevek[i]);
				for ( var j = 0; j < all.length; j++) {
					if (all[j].className == nev) {
						return (erteket ? dp.node_ertek_get(all[j]) : all[j]);
					}
				}
			}
		}
		return (false);
	},
	// fnode_name visszafele is
	findnode_name_bckwrd : function(akt, nev, erteket) {
		do {
			var t = dp.findnode_name(akt, nev, erteket);
			if (t) {
				return t;
			} else {
				akt = akt.parentNode;
			}
		} while (akt.nodeName.toLowerCase() != 'html');
		return (false);
	},
	// fnode_class visszafele is
	findnode_class_bckwrd : function(akt, nev, erteket) {
		do {
			var t = dp.findnode_class(akt, nev, erteket);
			if (t) {
				return t;
			} else {
				akt = akt.parentNode;
			}
		} while (akt.nodeName.toLowerCase() != 'html');
		return (false);
	},
	// FindNODE név és érték alapján alapján --- (:node)node alatt
	// (:nev)node.name==nev (:erteket)talált node erteket/cimet adja vissza
	findnode_name_value : function(node, nev, ert, erteket) {
		// akt node
		if (node.name == nev && node.value == ert) {
			return (erteket ? dp.node_ertek_get(node) : node);
		}
		// child node-k
		var tagnevek = [ "input", "select", "textarea" ];
		for ( var i = 0; i < tagnevek.length; i++) {
			var all = node.getElementsByTagName(tagnevek[i]);
			for ( var j = 0; j < all.length; j++) {
				if (all[j].name == nev && node.value == ert) {
					return (erteket ? dp.node_ertek_get(node) : node);
				}
			}
		}
		return (false);
	},

	row_new : function(thiz) {
		var t = dp.findnode_tagname_backwards(thiz, 'table');
		var b = t.tBodies[0];
		var s = b.rows[0].cloneNode(true);
		s.removeAttribute("style");
		b.appendChild(s);
		return s;
	},

	row_del : function(thiz) {
		var sor = dp.findnode_tagname_backwards(thiz, 'tr');
		sor.parentNode.removeChild(sor);
	},

	// node megváltoztatása (chlog-ok is használják)
	// t: tipus
	// e: ertek
	// r: reconstruct data
	node_update : function(node, ch) {
		switch (parseInt(ch['t'])) {
		// node: setdata
		case 1:
			dp.node_ertek_set(node, ch['e']);
			break;
		// select: reload, setdata
		case 2:
			dp.select_tolt(node, ch['r'], ch['e']);
			break;
		default:
			return false;
		}
	},

	set_value_tagname : function(li, tagnev, ert) {
		for ( var i = 0; i < li.childNodes.length; i++) {
			if (li.childNodes[i].tagName && li.childNodes[i].tagName.toLowerCase() == tagnev.toLowerCase()) {
				dp.node_ertek_set(li.childNodes[i], ert);
				return true;
			}
		}
		return false;
	}
/*
 * // _____________________________________________________________ //
 * :::::::::::::::::::::::::::::::::::::::: DATA REPORT TO OPENER
 * datareport_send:function(t){ for(var i = 0; i < t.length; i++) {
 * window.opener[t[i]['obj']][t[i]['met']](t[i]['kod'], t[i]['ert']); } }
 */
};
