var event_mapping = Array();

// erstellt EventHandler auf DOM Objekt
function addListener(eventname, tag_id, callback)
{
    if(typeof tag_id == "string") 
		{
		    obj = document.getElementById(tag_id);
		} else {
		    obj = tag_id;
		}

    if(!obj){
    	return false;
    }

	if(document.all){
        obj.attachEvent ('on' + eventname, handleEvent);
	}else{
     	obj.addEventListener(eventname, handleEvent, true);
	}
//	alert(obj.name + '_' + obj.id + '_' + eventname);
	event_mapping[obj.name + '_' + obj.id + '_' + eventname] = callback;
	return true;
}

// ruft gemappte CallbackFunktion auf
function handleEvent(event)
{
		obj = ObjectFromEvent(event);
		return eval(event_mapping[obj.name + '_' + obj.id + '_' + event.type]);
}


// gibt SrcDOMObjekt eines Events zurück
function ObjectFromEvent(event)
{
    if(event.target)
        return event.target;
    else if(event.srcElement)
	      return event.srcElement;
	return false;
}


// setzt für DOM Objekt einen CSS Klassenname
function applyClass(tag_id, classname)
{
    document.getElementById(tag_id).className = classname;
}

function applyVisibility(tag_id, flag)
{
		document.getElementById(tag_id).style.visibility = (flag == "true" || flag == true) ? "visible" : "hidden";
}
function applyDisplay(tag_id, flag)
{
		applyDisplayByEventCheckbox(flag, tag_id)
}

function applyDisplayByEventCheckbox(flag, target)
{
		document.getElementById(target).style.display = (flag == "true" || flag == true) ? "block" : "none";
}

// Ab hier beginnen extra Funktionen

function addCheckboxEventDisplay(quelle, target)
{
    addListener('click', quelle, "applyDisplayByEventCheckbox(ObjectFromEvent(event).checked, '" + target + "');");
    if(document.getElementById(quelle).type == "checkbox")
		{
				applyDisplayByEventCheckbox(document.getElementById(quelle).checked, target);
		} else {
		    applyDisplayByEventCheckbox(document.getElementById(quelle).value == "true" ? true : false, target);
		}
}

function addListener_ToFormElements(form, callback)
{
    var i = 0;
		while(form.elements[i])
		{
				if(form.elements[i].type=="textarea" || form.elements[i].type=="checkbox")
				{
				    addListener("click", form.elements[i], callback);
				} 
				else if(form.elements[i].type=="select-one") 
				{
				    addListener("change", form.elements[i], callback);
				}
				else if(form.elements[i].type=="text") 
				{
				    addListener("change", form.elements[i], callback);
				    addListener("click", form.elements[i], callback);
				}
		    i++;
		}
}

