var last_EventId = false;
var event_mapping = Array();

// erstellt EventHandler auf DOM Objekt
function addListener(eventname, tag_id, callback)
{
    obj = document.getElementById(tag_id);

    if(!obj){
    	return false;
    	debug(eventname+'##'+tag_id);
    }
    
	if(document.all && document.attachEvent){
        obj.attachEvent ('on' + eventname, handleEvent);
	}else{
     	obj.addEventListener(eventname, handleEvent, true);
	}
	event_mapping[obj.id + '_' + eventname] = callback;
	return true;
}

// löscht einen EventHandler von einem DOM Objekt
function removeListener(eventname, tag_id){
    event_mapping[obj.id + '_' + eventname] = false;
}


var mouseX = 0;
var mouseY = 0;

//speichert die MousePosition
function saveMousePosition(e){
   
    if(document.all){
        mouseX = window.event.clientX + ((document.documentElement.scrollLeft > document.body.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft);
	    mouseY = window.event.clientY + ((document.documentElement.scrollTop > document.body.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop);  
    }
    else{
    	mouseX = e.pageX;
    	mouseY = e.pageY;
    }
}


/** holt die Id eines Objectes sollte dieses Object keine ID haben dann
    wird die Id des Elternelements geholt 
*/
function getObjectId(object){
    
    var id = object.id;
    if(id.length == 0)
        return getObjectId(object.parentNode);
    else
        return id;
}

// ruft gemappte CallbackFunktion auf
function handleEvent(event)
{   
    //gespeicherte Prozedur aufrufen
    id = getObjectId(ObjectFromEvent(event));
    
    //event id speichern
    last_EventId = id;
       
	eval(event_mapping[id + '_' + event.type]);
	return false;
}


// 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;
}



/**initialisiert dei Eventhändler
*/
function init()
{
    
    //Vor und Zurück Button
    addListener('mouseover', 'button_prev', "changeButton('button_prev',true)");
    addListener('mouseout', 'button_prev', "changeButton('button_prev',false)");
    addListener('click', 'button_prev', "historyBack()");
    addListener('mouseover', 'button_next', "changeButton('button_next',true)");
	addListener('mouseout', 'button_next', "changeButton('button_next',false)");
	addListener('click', 'button_next', "historyForward()");
    
	
	
	
	//schritt3 Sende Button
	addListener('mouseover', 'button_print_send', "changeButton('button_print_send',true)");
	addListener('mouseout', 'button_print_send', "changeButton('button_print_send',false)");
	
	addListener('mouseover', 'button_post_send', "changeButton('button_post_send',true)");
	addListener('mouseout', 'button_post_send', "changeButton('button_post_send',false)");
	
	//PrintButton 
	addListener('mouseover', 'ct_button_print', "changeButton('ct_button_print',true)");
	addListener('mouseout', 'ct_button_print', "changeButton('ct_button_print',false)");
	
	
	//drucken
	addListener('click','ct_button_print',"myPrint()");
	
	//Bilder laden
	//imageInit()
	
	return true;
}


var debugwin = false;

function debug(str,color){
         if(!debugwin || debugwin.closed){
                 debugwin = window.open("","","width=600,heigth=500,scrollbars,resizable");
                 debugwin.document.write('<font style="font-size:10px;">');
         }
                 
         debugwin.document.write('<font color="'+((color)?color:'#000')+'">'+str+'</font><br>');
         debugwin.focus();
         debugwin.scrollBy(0,20);
}


