function getParent(obj) {
    return obj.parentElement ? obj.parentElement : obj.parentNode;
}
var dependencies = new Array();

function initializeDependencies(formName) {
    if (dependencies[formName]) return;

    dependencies[formName] = new Array();
}

function addDependency(formName, dependent, control, value) {
    if (!dependencies[formName]) initializeDependencies(formName);

    if (!dependencies[formName][control]) dependencies[formName][control] = new Array();
    dependencies[formName][control][dependencies[formName][control].length] = {'dependent':dependent, 'value':value};
}

function findFormElement(elements, name) {
//    for (var i in elements) {
//	for (var j in elements[i]) alert(j);
	for (var j = 0; j < elements.length; j++) if (elements[j].name == name) return elements[j];
//	if (elements[i].name == name) return elements[i];
//    }

    return null;
}

function findParentalTR(item) {
    while (item && item.tagName != "TR") item = getParent(item);

    return item;
}

function checkDependencies(formName, control, value) {
    if (!dependencies[formName][control]) return;
    if (value == -1) {
	var ctrl = findFormElement(document.forms[formName].elements, control);
	if (ctrl) {
	    if (ctrl.tagName == "SELECT") value = ctrl.options[ctrl.selectedIndex].value;
	    if (ctrl.tagName == "INPUT") value = ctrl.value;
	}
    }
    
    for (var i in dependencies[formName][control]) {
	var strDep = dependencies[formName][control][i]['dependent'];
	var ctrl = findFormElement(document.forms[formName].elements, strDep);
	var pTR = findParentalTR(ctrl);

	if (ctrl === null) continue;
	if (dependencies[formName][control][i]['value'] == value) {
	    try { pTR.style.display = "table-row"; }
	    catch (ex) { pTR.style.display = "block"; }
	    ctrl.disabled = false;
	} else {
	    pTR.style.display = "none";
	    ctrl.disabled = true;
	}
    }
}

function checkAllDependencies(formName) {
    if (!dependencies[formName]) return;

    for (var i in dependencies[formName]) {
	checkDependencies(formName, i, -1);
    }
}

function showLingualCtrl(id, short, langs) {
    for(var i in langs) {
	if (i == short) {
	    document.getElementById(id+"_"+i).style.display = i == short ? "block" : "none";
	    document.getElementById("button_"+id+"_"+i).style.backgroundColor = i == short ? "gray" : "white";

	    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Mozilla") {
		var ctrl = document.getElementById(id+"_"+i).getAttribute("ctrlName");
		try {
		    eval(ctrl+".switchDesignMode('on');");
		} catch(e) {
		    alert('Nem lehet átváltani szerkesztő módba!');
		}
	    }
	} else {
	    document.getElementById(id+"_"+i).style.display = i == short ? "block" : "none";
	    document.getElementById("button_"+id+"_"+i).style.backgroundColor = i == short ? "gray" : "white";

	    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Mozilla") {
		var ctrl = document.getElementById(id+"_"+i).getAttribute("ctrlName");
		try {
		    eval(ctrl+".switchDesignMode('off');");
		} catch(e) {
		    alert('Nem lehet átváltani nem-szerkesztő módba!');
		}
	    }
	}
    }
}

function setHTMLParam(ctrlName, param, value) {
    for(var i in sysLangs) {
	eval(ctrlName+sysLangs[i]+"x.setParam('"+param+"', '"+value+"');");
    }
//    alert(ctrlName);
}