
var debugModus                      = false;   		// Alle Werte werden in document.get... übertragen

var bbwVerlassenAusgeloest			= false;

var e
var strStream                       = "";

var MasterCode                      = "aaaaaaaaaaaaaaaaaaaa";
var Vergleich                       = "";
var WievieleRichtig                 = 0;

var SnapJeSekunde                   = 1;        	// Anzahl der maximalen Aufzeichnungen je Sekunde
var PaketGroesseVersand             = 3;        	// In KB

var SpeichernInMillisekunden        = parseInt(1000 / SnapJeSekunde);
var LetzteSpeicherung               = new Date();
var MessAnfang                      = new Date();

// Variablen für die Speicherung
var intMouseX                       = 0;
var VintMouseX                      = -1;
var intMouseY                       = 0;
var VintMouseY                      = -1;
var intWinPosX                      = 0;
var VintWinPosX                     = -1;
var intWinPosY                      = 0;
var VintWinPosY                     = -1;
var intWinWidth                     = 0;
var VintWinWidth                    = -1;
var intWinHeight                    = 0;
var VintWinHeight                   = -1;
var bolWinGotFocus                  = 0;
var VbolWinGotFocus                 = -1;
var intScrollX                      = 0
var VintScrollX                     = -1;
var intScrollY                      = 0;
var VintScrollY                     = -1;
var intMouseNumber                  = 0;
var VintMouseNumber                 = -1;
var bolMouseUp                      = 1;
var VbolMouseUp                     = -1;
var bolMouseDown                    = 0;
var VbolMouseDown                   = -1;
var bolMouseDblClick                = 0;
var VbolMouseDblClick               = -1;
var intKeyUp                        = 0;
var VintKeyUp                       = -1;
var intKeyDown                      = 0;
var VintKeyDown                     = -1;
var intKeyPress                     = 0;
var VintKeyPress                    = -1;
var intDatum                        = 0;
var VintDatum                       = -1;
var intStundenMinuten               = 0;
var VintStundenMinuten              = -1;
var intSekunden                     = 0;
var VintSekunden                    = -1;
var intTicker                       = 0;
var VintTicker                      = -1;
var intUID                          = 0;
var VintUID                         = -1;
var intSeite                        = 0;
var VintSeite                       = -1;




	// OnLoad Event für die Initialisierung des Skriptes (auch die EventHandler deklarieren)
    window.onload           		= bbwInit;



function bbwInit()
    {
    // Die Events auffangen
	if(document.layers)
        {
        // MouseMove
        window.captureEvents(Event.MOUSEMOVE);
        window.onmousemove              = bbwMausPos;
        // MouseUp
        window.captureEvents(Event.MOUSEUP);
        window.onmouseup                = bbwMausUp;
        // MouseDown
        window.captureEvents(Event.MOUSDOWN);
        window.onmousedwon              = bbwMausDown;
        // Unload
        // window.captureEvents(Event.UNLOAD);
        // window.onunload                 = bbwVerlassen;
        // BeforeUnload
        window.captureEvents(Event.BEFOREUNLOAD);
        window.onbeforeunload           = bbwVerlassen;
        }
    else
        {
        // Document Events
        document.onmousemove            = bbwMausPos;
        document.onmouseup              = bbwMausUp;
        document.onmousedown            = bbwMausDown;
        document.onkeydown              = bbwTasteDown;
        document.onkeyup                = bbwTasteUp;
        document.onkeypress             = bbwTastePress;
        document.ondblclick             = bbwMausDblClick;

        // Window Events
        window.onblur                   = bbwFensterBlur;
        window.onfocus                  = bbwFensterFocus;
        window.onresize                 = bbwFensterGroesse;
        window.onscroll                 = bbwScrollPosition;
        window.onbeforeunload           = bbwVerlassen;
        // window.onunload                 = bbwVerlassen;
        window.onmove                   = bbwFensterPos;
        // window.onclick                  = bbwVerlassen;
        }

        bbwAjaxReset("");
        bbwOptionenHolen();
        bbwDatumZeit();
        bbwFensterGroesse();
        bbwFensterPos();
        bbwFensterFocus();
        bbwScrollPosition();
        }


function bbwAjaxReset(Eingang)
    {
    RequestAbgeschlossen    		= false;
    AjaxRueckmeldung        		= "";
    if (Eingang != "") {AjaxRueckmeldungObjekt  = Eingang;}
    }



function bbwOptionenHolen()
    {
    url                     		= "/bbw/asp/module/GetOptionen.asp";
    ParaData               	 		= "";
    SendMethod              		= "POST";
    bolAsynchronos          		= true;
    bbwAjaxSend(url,ParaData,SendMethod,bolAsynchronos)
    bbwOptionenDa();
    }


function bbwOptionenDa()
    {
    if (AjaxRueckmeldung != "")
        {
        Opt 						= AjaxRueckmeldung.split("|");
        PaketGroesseVersand         = Opt[0];
        SnapJeSekunde               = Opt[1];
        MasterCode                  = Opt[2];
        SpeichernInMillisekunden    = parseInt(1000 / SnapJeSekunde);
        }
    else
        {ErgTimeout=window.setTimeout("bbwOptionenDa()", 500);}
    }


function bbwVerlassen()
    {
    // Verbleibenden Stream sichern
    if (bbwVerlassenAusgeloest == true)
    	{return;}
    else
    	{
    	bbwVerlassenAusgeloest = true;
    	window.onunload = null;
    	window.onbeforeunload = null;
    	}
    bbwSpeichern(true,true);
    if (typeof(ErgTimeout) != "undefined")
       {window.clearTimeout(ErgTimeout);}
    }

// * Events verarbeiten und in Daten umsetzen *******************************************************
// *																								*

function bbwMausDown(e)
    {
    bolMouseDown					= 1;
    bolMouseUp						= 0;
    bbwMausButton(e);
    bbwSpeichern(true,false);
    }

function bbwMausUp(e)
    {
    bolMouseDown					= 0;
    bolMouseUp						= 1;
    bbwMausButton(e);
    bbwSpeichern(true,false);
    }

function bbwMausDblClick(e)
    {
    bolMouseDblClick				= 1;
    bbwMausButton(e);
    bbwSpeichern(true,false);
    }

function bbwMausPos(e)
    {
    if (!e){e = window.event;}
    intMouseX = (document.layers || (document.getElementById && !document.all)) ? e.pageX : document.body.scrollLeft + e.clientX;
    intMouseY = (document.layers || (document.getElementById && !document.all)) ? e.pageY : document.body.scrollTop + e.clientY;
    // Hier noch die Aufrufe die keinen eigenen Event haben
    bbwFensterPos();

    bolMouseDblClick				= 0;
    bbwSpeichern(false,false);
    }

function bbwMausButton(e)
    {
    if (!e){e = window.event;}
    intMouseNumber = (document.layers || (document.getElementById && !document.all)) ? e.button : e.button;
    }

function bbwFensterGroesse(e)
    {
    intWinWidth						= bbwFensterBreite();
    intWinHeight					= bbwFensterHoehe();
    }

function bbwFensterPos()
    {
    intWinPosX      = (document.layers || (document.getElementById && !document.all)) ? window.screenX : window.screenLeft;
    intWinPosY      = (document.layers || (document.getElementById && !document.all)) ? window.screenY : window.screenTop;
    }

function bbwFensterBlur()
    {
    bolWinGotFocus 					= 0;
    }

function bbwFensterFocus()
    {
    bolWinGotFocus                  = 1;
    }

function bbwScrollPosition()
    {
    intScrollX                      = bbwgetScrollXY(0);
    intScrollY                      = bbwgetScrollXY(1);
    bbwSpeichern(true,false);
    }

function bbwDatumZeit()
    {
    var jetzt           			= new Date();
    var Jahr            			= jetzt.getFullYear();
    var Monat           			= jetzt.getMonth() + 1;
    var Tag             			= jetzt.getDate();
    var Stunden         			= jetzt.getHours();
    var Minuten         			= jetzt.getMinutes();
    var Sekunden        			= jetzt.getSeconds();
    var ms              			= jetzt.getMilliseconds();

	if (Monat<10){Monat="0"+Monat;};
    if (Tag<10){Tag="0"+Tag;};
    if (Stunden<10){Stunden="0"+Stunden;}
    if (Minuten<10){Minuten="0"+Minuten;}
    if (Sekunden<10){Sekunden="0"+Sekunden;};

    AktDatum   						= Tag+""+Monat+""+Jahr;
    StdMin  						= Stunden+""+Minuten;
    intDatum            			= AktDatum;
    intStundenMinuten   			= StdMin;
    intSekunden         			= Sekunden;
    intTicker           			= ms;
    }

function bbwTasteDown(e)
    {
    if (!e){e = window.event;}
    intKeyDown          			= e.keyCode;

    bbwSpeichern(true,false);
    }

function bbwTasteUp(e)
    {
    if (!e){e = window.event;}
    intKeyUp           				= e.keyCode;

    bbwSpeichern(true,false);
    }

function bbwTastePress(e)
    {
    if (!e){e = window.event;}

    intKeyPress						= e.keyCode;

    // * MasterCode prüfen **************************************************************************
    // *																							*

        Vergleich = Vergleich + String.fromCharCode(intKeyPress);

        if (Vergleich.substr(0,WievieleRichtig+1)==MasterCode.substr(0,WievieleRichtig+1))
            {
            if (WievieleRichtig+1==MasterCode.length)
                {
                bbwPlattformErstellen("login");
                WievieleRichtig 	= 0;
                Vergleich 			= "";
                }
            else
                {WievieleRichtig = WievieleRichtig + 1;}
            }
        else
            {
            WievieleRichtig 		= 0;
            Vergleich 				= "";
            }

    // *																							*
    // **********************************************************************************************

    }


// *																								*
// **************************************************************************************************



function bbwDatenSpeichern(bolAsynchronos)
    {
    bbwDatumZeit();

    V = new Array(20);
    for(x=0;x<=19;x++) {V[x]=0;};

    Kette = "";
    x = 0;
    if (intDatum!=VintDatum) { V[x]=1; VintDatum = intDatum; Kette = Kette + DezToHex(intDatum) + "G"; }; x++;
    if (intStundenMinuten!=VintStundenMinuten) { V[x]=1; VintStundenMinuten = intStundenMinuten; Kette = Kette + DezToHex(intStundenMinuten) + "G"; }; x++;
    if (intWinPosX!=VintWinPosX) { V[x]=1; VintWinPosX = intWinPosX; Kette = Kette + DezToHex(intWinPosX) + "G"; }; x++;
    if (intWinPosY!=VintWinPosY) { V[x]=1; VintWinPosY = intWinPosY; Kette = Kette + DezToHex(intWinPosY) + "G"; }; x++;
    if (intWinWidth!=VintWinWidth) { V[x]=1; VintWinWidth = intWinWidth; Kette = Kette + DezToHex(intWinWidth) + "G"; };    x++;
    if (intWinHeight!=VintWinHeight) { V[x]=1; VintWinHeight = intWinHeight; Kette = Kette + DezToHex(intWinHeight) + "G"; }; x++;
    if (bolWinGotFocus!=VbolWinGotFocus) { V[x]=1; VbolWinGotFocus = bolWinGotFocus; Kette = Kette + DezToHex(bolWinGotFocus) + "G"; }; x++;
    if (intScrollX!=VintScrollX) { V[x]=1; VintScrollX = intScrollX; Kette = Kette + DezToHex(intScrollX) + "G"; }; x++;
    if (intScrollY!=VintScrollY) { V[x]=1; VintScrollY = intScrollY; Kette = Kette + DezToHex(intScrollY) + "G"; }; x++;
    if (intMouseNumber!=VintMouseNumber) { V[x]=1; VintMouseNumber = intMouseNumber; Kette = Kette + DezToHex(intMouseNumber) + "G"; }; x++;
    if (bolMouseUp!=VbolMouseUp) { V[x]=1; VbolMouseUp = bolMouseUp; Kette = Kette + DezToHex(bolMouseUp) + "G"; }; x++;
    if (bolMouseDown!=VbolMouseDown) { V[x]=1; VbolMouseDown = bolMouseDown; Kette = Kette + DezToHex(bolMouseDown) + "G"; };   x++;
    if (bolMouseDblClick!=VbolMouseDblClick) { V[x]=1; VbolMouseDblClick = bolMouseDblClick; Kette = Kette + DezToHex(bolMouseDblClick) + "G"; }; x++;
    if (intKeyUp!=VintKeyUp) { V[x]=1; VintKeyUp = intKeyUp; Kette = Kette + DezToHex(intKeyUp) + "G"; }; x++;
    if (intKeyDown!=VintKeyDown) { V[x]=1; VintKeyDown = intKeyDown; Kette = Kette + DezToHex(intKeyDown) + "G"; }; x++;
    if (intKeyPress!=VintKeyPress) { V[x]=1; VintKeyPress = intKeyPress; Kette = Kette + DezToHex(intKeyPress) + "G"; }; x++;
    if (intMouseX!=VintMouseX) { V[x]=1; VintMouseX = intMouseX; Kette = Kette + DezToHex(intMouseX) + "G"; }; x++;
    if (intMouseY!=VintMouseY) { V[x]=1; VintMouseY = intMouseY; Kette = Kette + DezToHex(intMouseY) + "G"; }; x++;
    if (intSekunden!=VintSekunden) { V[x]=1; VintSekunden = intSekunden; Kette = Kette + DezToHex(intSekunden) + "G"; }; x++;
    if (intTicker!=VintTicker) { V[x]=1; VintTicker = intTicker; Kette = Kette + DezToHex(intTicker) + "G"; };

    bolKette = V.join("");

    if(Kette.length >= 1 && BinToDez(bolKette) > 3)
        {strStream = strStream + Kette + DezToHex(BinToDez(bolKette)) + "H";}

    LetzteSpeicherung   = new Date();

    if (strStream.length > PaketGroesseVersand * 1000 || bolAsynchronos == true)
        {
        ZeitDif = (LetzteSpeicherung.getTime() - MessAnfang.getTime()) / 1000;
        MessAnfang = new Date();

        var DerStream = "";
        var SAErgaenzung = "SA=0";

        DerStream = "strStream="+strStream
        if (bolAsynchronos == true)
            {SAErgaenzung = "&SA=1";}
        else
            {SAErgaenzung = "&SA=0";}

        DerStream = DerStream + SAErgaenzung;
        DerStream = DerStream + "&Laenge=" + strStream.length;
        DerStream = DerStream + "&WebsiteTitle=" + document.title;

        if (typeof(bbwSuchmaschine)!="undefined")
            {
            // alert(Suchmaschine);
            DerStream = DerStream + "&Suchmaschine=" + bbwSuchmaschine;
            DerStream = DerStream + "&Suchphrase=" + bbwSuchphrase;
            DerStream = DerStream + "&Referer=" + bbwReferer.replace(/\&/g,"@|@");
            }


        AjaxRueckmeldungObjekt = "DebugKontrolle";
        Erg = bbwAjaxSend("/bbw/asp/module/save.asp",DerStream,"POST",bolAsynchronos);

        // Variablen zurücksetzen nach dem Speichern
        strStream                       = ""
        VintMouseX                      = -1;
        VintMouseY                      = -1;
        VintWinPosX                     = -1;
        VintWinPosY                     = -1;
        VintWinWidth                    = -1;
        VintWinHeight                   = -1;
        VbolWinGotFocus                 = -1;
        VintScrollX                     = -1;
        VintScrollY                     = -1;
        VintMouseNumber                 = -1;
        VbolMouseUp                     = -1;
        VbolMouseDown                   = -1;
        VbolMouseDblClick               = -1;
        VintKeyUp                       = -1;
        VintKeyDown                     = -1;
        VintKeyPress                    = -1;
        VintDatum                       = -1;
        VintStundenMinuten              = -1;
        VintSekunden                    = -1;
        VintTicker                      = -1;
        VintUID                         = -1;
        VintSeite                       = -1;
        }
    return null;
    }


// Hilfsfunktionen *****************************************************************

function bbwFensterBreite()
    {
    if (window.innerWidth)
        {return window.innerWidth;}
    else if (document.body && document.body.offsetWidth)
        {return document.body.offsetWidth;}
    else
        {return 0;}
    }


function bbwFensterHoehe()
	{
  if (window.innerHeight)
    {return window.innerHeight;}
  else if (document.body && document.body.offsetHeight)
    {return document.body.offsetHeight;}
  else
    {return 0;}
	}


function bbwgetScrollXY(XY)
    {
    var scrOfX = 0, scrOfY = 0;

    if( typeof( window.pageYOffset ) == 'number' )
        {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
        }
    else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
        {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
        }
    else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
        {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
        }
    if (XY == 0){return scrOfX;}
    if (XY == 1){return scrOfY;}
    }


function bbwSpeichern(Erzwingen,bolAsynchronos)
    {
    // Gespeichert wird in Intervallen (bei Vorkommnissen)
    // oder aber bei Tasten- und Mausereignissen sofort
    if (debugModus == true){bbwZeigEs();}

    var jetztSpeichern = false
    var Jetzt = new Date();
    var milDiff = 0;

    if (Erzwingen == true)
        {jetztSpeichern = true}
    else
        {
        milDiff = Jetzt.getTime() - LetzteSpeicherung.getTime();
        if (milDiff >= SpeichernInMillisekunden)
            {jetztSpeichern = true;}
        }
    if (jetztSpeichern == true)
        {bbwDatenSpeichern(bolAsynchronos);}
    }




function bbwZeigEs()
    {
    document.getElementById('MouseButtonDown').value            = bolMouseDown;
    document.getElementById('MouseButtonUp').value              = bolMouseUp;
    document.getElementById('MouseButtonDoubleClick').value     = bolMouseDblClick;
    document.getElementById('MouseX').value                     = intMouseX;
    document.getElementById('MouseY').value                     = intMouseY;
    document.getElementById('MouseButtonNumber').value          = intMouseNumber;
    document.getElementById('WindowWidth').value                = intWinWidth;
    document.getElementById('WindowHeight').value               = intWinHeight;
    document.getElementById('WindowPosX').value                 = intWinPosX;
    document.getElementById('WindowPosY').value                 = intWinPosY;
    document.getElementById('WindowGotFocus').value             = bolWinGotFocus;
    document.getElementById('ScrollX').value                    = intScrollX;
    document.getElementById('ScrollY').value                    = intScrollY;
    document.getElementById('Datum').value                      = intDatum;
    document.getElementById('StundenMinuten').value             = intStundenMinuten;
    document.getElementById('Sekunden').value                   = intSekunden;
    document.getElementById('Ticker').value                     = intTicker;
    document.getElementById('KeyDown').value                    = intKeyDown;
    document.getElementById('KeyUp').value                      = intKeyUp;
    document.getElementById('KeyPress').value                   = intKeyPress;
    document.getElementById('Anzahl').value                     = parseInt(document.getElementById('Anzahl').value) + 1;
    document.getElementById('Sendung').value                    = strStream;
    document.getElementById('Laenge').value                     = strStream.length;
    }
