/* floatmenu */
function SiteFloatMenuView(descriptor) {
	HTDefaultFloatMenuView.call(this, descriptor);
}
if (typeof(HTDefaultFloatMenuView) != 'undefined') {
	SiteFloatMenuView.prototype = {
		element: HTDefaultFloatMenuView.prototype.element,
		childElements: HTDefaultFloatMenuView.prototype.childElements,
		shdElement: HTDefaultFloatMenuView.prototype.shdElement,
//		show: HTDefaultFloatMenuView.prototype.show,
		show: function(x, y) {
			if(this.element == null) {
				document.body.appendChild(this.element = jsonML(this.jsonMenu()));
			}

			with(this.element.style) {
				left = ( x + ( this.descriptor.dir == 'h' ? 7 : 0 ) ) + 'px';
				top = ( y - 0 ) + 'px';
			}

			return this.element;
		},
		hide: HTDefaultFloatMenuView.prototype.hide,
		isVisible: HTDefaultFloatMenuView.prototype.isVisible,
		getMenuItem: HTDefaultFloatMenuView.prototype.getMenuItem,
		jsonMenuItemList: HTDefaultFloatMenuView.prototype.jsonMenuItemList,
		//jsonMenu: HTDefaultFloatMenuView.prototype.jsonMenu,
		jsonMenu: function() {
			var json = this.jsonMenuItemList();
			json.unshift("div", { 'style': '', 'class' : 'flmenu2' });
			json2 = ( ["div", { 'style': 'position: absolute;', 'class' : 'flmenu' }, json ] );
			return json2;
		},
		jsonMenuItem: function(d) {
			var jd = null;
			if(typeof d.href != 'undefined') {
				if(typeof d.child != 'undefined') {
					jd = [ "DIV", { 'class': 'flmenud1' }, [ "DIV", { 'class': 'flmenud2' }, [ "A", { 'href': d.href, 'class': 'submenu' }, d.title ] ] ];
				} else {
					jd = [ "DIV", { 'class': 'flmenud1' }, [ "DIV", { 'class': 'flmenud2' }, [ "A", { 'href': d.href }, d.title ] ] ];
				}

				if(typeof d.target != 'undefined') jd[1].target = d.target;
			}

			return jd;
		}
	};
}

/* bookmark this page */
function bookmarkPage(title) {
  url = location.href;
  if (window.sidebar) { // firefox
    window.sidebar.addPanel(title, url, '');
  } else if (window.opera && window.print) { // opera
    var e = document.createElement('a');
    e.setAttribute('href', url);
    e.setAttribute('title', title);
    e.setAttribute('rel', 'sidebar');
    e.click();
  } else if (document.all) { // ie
    window.external.AddFavorite(url, title);
  }
  return false;
}

/* print this page */
function printPage() {
  window.print();
  return false;
}

/* order form, auto-disable inputs */
function HTAutoDisableInput(element, descriptor) {
	console.log("HTAutoDisableInput: %o, %o", element, descriptor);
	document.getElementById(descriptor.value).disabled = true;

	function _work() {
		document.getElementById(descriptor.value).disabled = !element.checked
	}

	jgtc.captureEvent(element, "click", _work, false);
	jgtc.captureEvent(element, "change", _work, false);
}

jgtc.captureEvent(window, "load", function() {
	function makeAutoDisableInput(es) {
		for(var i = 0; i < es.length; i++) {
			
			var attr = jgtc.safeGetAttribute(es[i], 'ht:autodisable');
			if(attr != null) {
				var dattr = jgtc.safeGetAttribute(es[i], 'ht:valueDescriptor');
				var descr;
				if(dattr != null) {
					try {
						eval("descr = {" + dattr + "};");
					} catch(err) {
						console.warn("Invalid 'ht:valueDescriptor': %s", dattr);

						descr = { };
					}
				} else {
					descr = { };
				}

				descr.value = attr;
				new HTAutoDisableInput(es[i], descr);
			}
		}
	}

	makeAutoDisableInput(document.getElementsByTagName('INPUT'));

	console.log('auto-disable input');
}, true);




/* admin funkciok START */

/* kapcsolodo-formok tartalmanak kiegeszito funkcioi, elemek cserelgetese */
function jformRead(form, prefix, excludes) {
	if(typeof form == 'string') form = document.forms[form];
	if(typeof excludes != 'object' || !(excludes instanceof Array)) excludes = new Array();

	var jform = null;
	for(var i = 0; i < form.elements.length; i++) {
		var input = form.elements.item(i);
		var id = input.id;

		if(id != null && id.indexOf(prefix) == 0) {
			id = id.substr(prefix.length);
			if(excludes.indexOf(id) != -1) continue;

			var v = null;
			if(input.tagName == 'INPUT') {
				if(input.type == 'text' || input.type == 'hidden') {
					v = input.value;
				} else if(input.type == 'checkbox' || input.type == 'radio') {
					v = input.checked;
				} else {
					alert("FIXME!");
				}
			} else if(input.tagName == 'TEXTAREA') {
				v = input.value;
			} else if(input.tagName == 'SELECT') {
				v = input.value;
			}

			if(jform == null) jform = new Object();
			jform[id] = v;
		}
	}

	return jform;
}

function jformWrite(form, prefix, jform, excludes) {
	if(typeof form == 'string') form = document.forms[form];
	if(typeof excludes != 'object' || !(excludes instanceof Array)) excludes = new Array();

	if(prefix == null) prefix = "";
	for(var i = 0; i < form.elements.length; i++) {
		var input = form.elements.item(i);
		var id = input.id;
		if(id != null && id.indexOf(prefix) == 0) {
			id = id.substr(prefix.length);
			if(excludes.indexOf(id) != -1) continue;

			var v = jform[id];
			if(typeof v == 'function' || typeof v == 'undefined') continue;

			if(input.tagName == 'INPUT') {
				if(input.type == 'text' || input.type == 'hidden') {
					input.value = v == null ? "" : v;
				} else if(input.type == 'checkbox' || input.type == 'radio') {
					input.checked = (new Boolean(v) == true);
				} else {
					alert("FIXME!");
				}
			} else if(input.tagName == 'TEXTAREA') {
				input.value = v;
			} else if(input.tagName == 'SELECT') {
				if(v != null) {
					input.value = v;
				} else {
					input.selectedIndex = -1;
				}
			}
		}
	}
}

function jformXchg(form0, prefix0, form1, prefix1, excludes) {
	var jform0 = jformRead(form0, prefix0, excludes);
	var jform1 = jformRead(form1, prefix1, excludes);

	//console.log("jform: %s %s %s %s", form0, prefix0, form1, prefix1);
	//console.dir(jform0);
	//console.dir(jform1);

	if(jform0 != null && jform1 != null) {
		jformWrite(form1, prefix1, jform0);
		jformWrite(form0, prefix0, jform1);
	}
}

function xchgProperty(form, xchgpropPrefix, idx, delta) {
	var prefix0 = xchgpropPrefix + idx;
	var prefix1 = xchgpropPrefix + (idx + delta);

	jformXchg(form, prefix0, form, prefix1);
}
/* admin funkciok END */

