if (navigator.appName.indexOf("Explorer")>-1) {
    var maxx = screen.availWidth;
    var maxy = screen.availHeight-100;
}
else {
    var maxx = this.window.innerWidth; 
    var maxy = this.window.innerHeight;
}

/**maus-objekt das wichtige variablen enthält.  beim mouseDown-Event sollte das "activeObjekt" auf das angeklickte Objekt verweisen */
var maus = {
    //felder
    div: null,
    x: 0,
    y: 0,
    x_alt: 0,
    y_alt: 0,
    activeObjekt: null,
    oldColor: "white",
    statusText: "",
    renameBit: false, //true, wenn absatz geändert wird, damit body-doubleclick nicht ausgeführt wird (event wird durch alle höherliegenden ebenen durchgeschleift
    z: null,    //z-index; wird gesetzt, wenn div verschoben wird
    key: new Array(),  //enthält ein array aus tasten (index), dessen zustand als wert gespeichert wird (0=nicht gedrückt)
    
    //bereitet das ziehen eines objekts vor und (wichtig!!) verbiegt die MouseMove-Funktion auf move()
    armMove: function(element) {
        element.style.cursor = "move";
        maus.activeObjekt = element;
        document.onmousemove = maus.move;
        document.onmouseover = null;  //eventhandler von mouseover löschen, damit beim überfahren eines anderen objekts beim verschieben nicht die farbe wechselt
        colorify(element, 2);
        document.onmouseup = maus.disarm;    //biegt die mausbewegung um auf eine standartfunktion, z.B. showXY
    },
    
    //biegt die MouseMove-Funktion zurück zu showXY
    disarm: function(Ereignis) {
        var Ereignis = Ereignis || window.event;
        document.onmousemove = maus.showXY;
        document.onmouseup = null;
        if (maus.activeObjekt) {
            maus.activeObjekt.style.cursor = "default";
            colorify(maus.activeObjekt, 3);
            abs = new absatz(maus.activeObjekt.id, maus.activeObjekt.style.left.slice(0,-2), maus.activeObjekt.style.top.slice(0,-2), maus.activeObjekt.firstChild.nodeValue);
            abs.writeCookie();
        }
        //maus.activeObjekt = null;
    },
    
    //verschiebt ein angeklicktes objekt per änderung der css-eigenschaft: top, left
    move: function(Ereignis) {
        var Ereignis = Ereignis || window.event;
        maus.x_alt = maus.x;
        maus.y_alt = maus.y;
        maus.x = Ereignis.clientX;
        maus.y = Ereignis.clientY;
        divX = maus.x - maus.x_alt;
        divY = 0;  //vertikales verschieben momentan deaktiviert.  abschaltbar machen?
        //divY = maus.y - maus.y_alt;
        boxX = parseInt(maus.activeObjekt.style.left.slice(0,-2));
        boxY = parseInt(maus.activeObjekt.style.top.slice(0,-2))   
        if (!boxX) boxX = 0; //falls top + left nicht gesetzt ist, wert auf 0 setzen
        if (!boxY) boxY = 0;
        maus.activeObjekt.style.left = boxX + divX  + "px";  //boxX + divX  + "px";
        maus.activeObjekt.style.top = boxY + divY + "px";   //boxY + divY + "px";
        window.status = maus.statusText + " position: " + Ereignis.clientX + "@" + 
            Ereignis.clientY + "element: " + maus.activeObjekt.style.left + "@" + maus.activeObjekt.style.top;
        
    },
    
    //wird aufgerufen, wenn die maus bewegt wird und klein objekt angeklickt worden ist
    showXY: function(Ereignis) {
        var Ereignis = Ereignis || window.event;
        maus.x = Ereignis.clientX;
        maus.y = Ereignis.clientY;
        window.status = maus.statusText + "position: " + Ereignis.clientX + "@" + Ereignis.clientY;
        //if (document.getElementsByTagName("body")[0].onDblClick == null)  document.getElementsByTagName("body")[0].onDblClick =insert();
        //maus.renameBit = false;
        if (maus.div!=null) {
            x = maus.x -40;
            if (x<=1) {
                x = 1;
                //alert("hier");
            }
            if (x+180>maxx) x=maxx-180;
            maus.div.style.left = x  + "px";
        }
    },
    
    rename: function(element) { //statt body, müßte stattdessen der "strophen-div" genommen werden!
        document.getElementsByTagName("body")[0].onDblClick = null;  //geht das noch, wenn nach dem umbenennen wieder auf den body geclickt wird?
        eingabe = window.prompt("Bitte geben Sie den neuen Text ein!", element.firstChild.nodeValue);
        if (eingabe == null) return; //falls auf abbrechen gedrückt wurde, funktion beenden
        orgText = element.firstChild.nodeValue;
        
        if (eingabe.length>0) {
            element.firstChild.nodeValue = eingabe;
            abs = new absatz(element.id, element.style.left.slice(0,-2), element.style.top.slice(0,-2), eingabe);
            abs.writeCookie(); //neue werte setzen.  wie überschreibt man den selben cookie?
        }
        else {  //absatz löschen
            deleteDiv(element.id);
        }
        maus.renameBit = true;
    }
};

function showDiv(id, y) {
    var div = document.getElementById(id);
    //alert(id);
    maus.div = div; //maus-funktion aktuellen absatz übergeben
    
    var x = maus.x -40;
    if (x<1) x = 1;
    if (x+180>maxx) {
        x=x-180;
    }
    //if (x+200)
    if (y == null) {
        y =70; //70
    }
    div.style.left = x + "px";
    div.style.top = y + "px";
    div.style.visibility = "visible";
}
function hideDiv(id) {
    var div = document.getElementById(id);
    maus.div = null;
    //alert(div);
    //div.style.left = maus.x + "px";
    //div.style.top = maus.y + "px";
    div.style.top = 0 + "px";
    div.style.visibility = "hidden";
}

document.onmousemove = maus.showXY;
