
/********* ZEIT ************/


        var a=0;

        var begin = new Date();
        var startzeit;
        var begin_neu = new Date();
        var startzeit_neu;


        var dauer=0;

        var timer_2_startpunkt=0;
        var timer_3_startpunkt=0;
        var timer_4_startpunkt=0;
        var timer_5_startpunkt=0;

        var timer_3_dauer=0;

        var phase=120000;

           var startzeit=0;

        startzeit=begin.getTime();


        var m= 1;

/********/
var universaltimer_start = begin.getTime();


function jetztzeit()
{
var now = new Date();
jetzt = now.getTime();
}


/************/

var meta3_reihe = new Array();
meta3_reihe[0] = "Text('Kadmos');";




/*********** R A U M ************/

        var xMaus=0;
        var yMaus=0;

        var xMaus_alt = 0;
        var yMaus_alt = 0;

        var long_distance = new Number;

        var mousestatus = 0;

/*****************/

        function tachometer ()
        {
        short_distanceX = Math.abs (xMaus - xMaus_alt);
        short_distanceY = Math.abs (yMaus - yMaus_alt);
        short_distance = (short_distanceX + short_distanceY)/2;
        long_distance = long_distance + short_distance;

        xMaus_alt= xMaus;
        yMaus_alt= yMaus;
        }

//////////////

        var xMaus_old = 0;
        var yMaus_old = 0;

        var tempoAbs = 0;
        var geschwindigkeit = 0;
        vkl = new Array(0,0,0,0,0,0,0,0,0,0);
        vehikelCount = 0;

        function tachometer2 ()
        {
        wegX = Math.abs (xMaus - xMaus_old);
        wegY = Math.abs (yMaus - yMaus_old);
        geschwindigkeit = (wegX + wegY);
        vehikelCount++;

        if (vehikelCount >20)
           {
           vehikelCount = 0;
           }
        vkl[vehikelCount] = geschwindigkeit;

        for (i=0; i<vkl.length; i++ )
                  {
                  tempoAbs = tempoAbs + vkl[i];
                  }

        tempoAbs = Math.floor(tempoAbs/vkl.length);

        xMaus_old = xMaus;
        yMaus_old = yMaus;
        }

///////////////

mtr    = new Array();
mtr[0] = new Array();
mtr[0].status = new Boolean(false);  // wenn false, ist der Array in Bearbeitung
mtr[0].final  = new Boolean(false);

mtrC     = 0; // ist der Index für die Buffer
mtrCount = 0; // Zählt die Items



function mousetracer(laenge, bufferzahl, loop)
{
if (mtr[0].final == false)
  {
  if (mtrCount >(laenge*2)-2)
     {
     mtrCount = 0;
     window.status = "BUFFER VOLL" + mtrC;
     mtr[mtrC].status = true;

     mtrC++;
   if (mtrC>bufferzahl-1)
      {
      mtrC = 0;
      mtr[0].final = true;
      if (loop == 1)
         {
         mtrC = -1;
         }
      }

   if (mtr[mtrC] != -1)
      {
      mtr[mtrC] = new Array();
      mtr[mtrC].status = new Boolean(false);
      }
    }

   if (mtr[0].final == false)
      {
      mtr[mtrC][mtrCount] = xMaus;
      mtrCount++;
      mtr[mtrC][mtrCount] = yMaus;
      mtrCount++;
      }
   }
else {window.status = "werden keine neuen Buffer geschrieben  " + mtr[0]; }
}




/*************/

function metaobjekt (typ, startbedingung, lifetime, looptyp, absorber, absorber_typ, absorber_takt,event_typ,
                     event_takt, modulator_typ, modulator_lifetime, schwankungsfaktor, aktion, subobjekt)
{


this.typ                    = typ;

this.subobjekt              = subobjekt;


this.aufruf                 = aufruf;

//////////////////

this.on                     = (false);
this.over                   = (false);


this.zeitflag               = (true);
this.raumflag               = (true);                                                              this.zeit                   = zeit;
this.objekttacho            = objekttacho;

this.initial                = initial;

this.looptyp                = looptyp;

this.startzeit              = 0;
this.dauer                  = 0;

this.langstrecke            = 0;

this.startbedingung         = startbedingung;
this.lifetime               = lifetime;

this.raum_conditio          = 0;
this.zeit_conditio          = 0;
this.energie_conditio       = 0;

this.raum_lifetime          = 0;
this.zeit_lifetime          = 0;
this.energie_lifetime       = 0;

this.absorber               = absorber;
this.absorber_typ           = absorber_typ;
this.absorber_takt          = absorber_takt;

this.event_typ              = event_typ;
this.event_takt             = event_takt;

this.event_counter          = this.event_takt;

this.subtimer               = subtimer;
this.microcounter           = 0;
this.rhythm                 = rhythm;


this.abbuchungsmoment       = this.absorber_takt;
this.raum_abbuchung         = raum_abbuchung;

this.energiekonto           = 0;
this.aktion                 = aktion;

////Methoden //////////

this.abbuchung              = abbuchung;                //  hier wird abgebucht
this.event_trigger          = event_trigger;                // sucht die Events auf
this.event_write            = event_write;


//// Zum Modulator /////

this.callMod                = callMod;
this.modifikator            = 1;
this.mod_step               = 1;
this.counter                = 0;

this.modulator_typ          = modulator_typ;
this.modulator_lifetime     = modulator_lifetime;
this.schwankungsfaktor      = schwankungsfaktor;


///////////

this.long_distance        = null;

this.metaobjekttest         = metaobjekttest;
}

/////////
/*******/




function subtimer()
{
this.microcounter = this.event_takt+(this.dauer-this.event_counter);
}

function rhythm(dauer,layerindex)
{
mlayers_list();
this.subtimer();
if (this.microcounter > dauer)
   {mlayers[layerindex].style.visibility = "hidden";}
   else  {mlayers[layerindex].style.visibility = "visible";}
}



////////////////////
function event_write()
{
if (this.aktion == 1)
   {
   }
}



/////////////////
function event_trigger()
{
if (this.event_typ == 0)
        {

        if (this.langstrecke >= this.event_counter)
                {
                this.event_write();
                this.event_counter = this.langstrecke + this.event_takt;
                }

        }


if (this.event_typ == 1)
        {
        if (this.dauer >= this.event_counter)
                {
                this.event_write();

                this.event_counter = this.dauer + (this.event_takt*this.modifikator);

                if (this.typ == 1 && this.event_counter > this.lifetime)
                        {
                        this.event_counter = this.event_takt;
                        }
                }

        }


if (this.event_typ == 2)
        {

        if (this.energiekonto >= this.event_counter)
                {
                this.event_write();
                this.event_counter = this.energiekonto + this.event_takt;
                }
        }

if (this.event_typ == 3)
        {
        window.status = "Ich bin Distanz";
        }


}


//////////////

function callMod()
{

if (this.modulator_typ == 0)
        {
        this.mod_step = 180/this.modulator_lifetime;
        this.modifikator = 1 + ((Math.sin(this.counter))*this.schwankungsfaktor);
        this.counter = this.langstrecke * this.mod_step;

        }

if (this.modulator_typ == 1)
        {

        this.mod_step = 180/this.modulator_lifetime;
        this.modifikator = 1 + ((Math.sin(this.counter))*this.schwankungsfaktor);

        this.counter = this.counter + this.mod_step;
        }
}



///////////////

function initial ()
{
var now = new Date();
var jetzt = now.getTime();
this.startzeit = jetzt;
}

///////////////

function aufruf()
{
jetztzeit();


if (this.typ == 0)
        {
        this.raum_conditio = this.startbedingung;
        this.raum_lifetime = this.lifetime;

        if (long_distance > this.raum_conditio)
                {
                this.on = (true);

                if (this.langstrecke <= this.raum_lifetime)
                        {
                        this.objekttacho();
                        this.zeit();
                        this.abbuchung();
                        this.callMod();
                        this.event_trigger();
                        }
                else         {
                        this.over = (true);
                        }
                }
        }

if (this.typ == 1)
        {
        this.zeit_conditio = this.startbedingung;

        if (jetzt - universaltimer_start >= this.zeit_conditio)
                {
                this.on = (true);

                if (this.dauer>0) this.objekttacho();
                this.zeit();
                this.abbuchung();
                 this.callMod();
                this.event_trigger();
                }

        }

if (this.typ == 2)
        {
        this.energie_conditio = this.startbedingung;
        this.energie_lifetime = this.lifetime;

        if (this.energiekonto >= this.energie_conditio)
                {
                this.on = (true);

                if (this.energiekonto <= this.energie_lifetime)
                        {
                        this.objekttacho();
                        this.zeit();
                        this.abbuchung();
                        this.callMod();
                        this.event_trigger();
                        }
                }
          }

}





/*************/

function objekttacho ()
        {
        if (this.on == true)
                {
                this.langstrecke = long_distance - this.raum_conditio;
                }

        }


/////////////
function zeit ()
{

if (this.on == true)

        {
        if (this.zeitflag == true)
                {
                this.initial();
                this.zeitflag = (false);
                }
        else
                {
                this.dauer= (jetzt - this.startzeit);

                if (this.typ == 1)
                        {
                        if (this.dauer > this.lifetime)
                                {

                                if (this.looptyp == 0)
                                        {
                                        this.dauer = 0;
                                        this.on = (false);
                                        this.over = (true);
                                        }

                                if (this.looptyp == 1)
                                        {
                                        this.startzeit = this.startzeit + this.dauer;
                                        this.abbuchungsmoment        = this.absorber_takt;

                                        }
                                }
                        }
                }
        }
}


/*****************/

function abbuchung()
{


if (this.absorber_typ == 0)
        {
        if (this.langstrecke > this.abbuchungsmoment)
                {
                this.abbuchungsmoment = this.abbuchungsmoment + this.absorber_takt;
                this.energiekonto = this.energiekonto + this.absorber;
                }
        }


if (this.absorber_typ == 1)
        {
        if (this.dauer > this.abbuchungsmoment)
                {
                this.abbuchungsmoment = this.abbuchungsmoment + this.absorber_takt;
                this.energiekonto = this.energiekonto + this.absorber;
                }
        }



if (this.absorber_typ == 2)
        {
        alert ("Hallo, das ist ein Energie-Absorber");
        }
}

/////////////

function raum_abbuchung()
{
}


function metaobjekttest()
{
}


function do_nothing()
{
}


/********** Testdateien ************/

function TextZeigertest()
{
}


function entropietest()
{
}

function Farbtester()
{
}



///// User deklariert //////

function User (aktion)
{
this.typ                    = 1;

this.startbedingung         = 0;
this.lifetime               = 3600000;
this.looptyp                = 1;

this.absorber               = 1;
this.absorber_typ           = 1;
this.absorber_takt          = 1000;

this.event_typ              = 1;
this.event_takt             = 10;
this.event_counter          = this.event_takt;    // das wird sonderbarerweise nicht vererbt

this.abbuchungsmoment       = this.absorber_takt;


this.modulator_typ          = 1;
this.modulator_lifetime     = 60000;
this.schwankungsfaktor      = 1;
this.aktion                 = aktion;
this.ID                     = 0;

this.sessiondauer           = 0;
this.sessionlangstrecke     = 0;
this.sessionenergie         = 0;

this.userdump               = userdump;
this.init                   = init;
this.exit                   = exit;
}


function userdump()
{
document.USER.UserZeit.value = this.sessiondauer;
document.USER.UserRaum.value = this.sessionlangstrecke;
document.USER.UserEnergie.value = this.sessionenergie;
alert (location.href);
}


function init()
{
Wert = location.href;
suche1 = /zzz/g;
suche2 = /rrr/g;
suche3 = /eee/g;

probe = suche1.test(Wert);
if (probe == false)
   {
   location.search = "zzz" + 0 + "rrr" + 0 + "eee" + 0;
   metaobjekttest();
   }
else
    {
    // ergebnis1 = suche1.exec(Wert);
    // loc1 = ergebnis1.index;

    // ergebnis2 = suche2.exec(Wert);
    // loc2 = ergebnis2.index ;

    // ergebnis3 = suche3.exec(Wert);
    // loc3 = ergebnis3.index;

    loc1 = Wert.search(suche1);
    loc2 = Wert.search(suche2);
    loc3 = Wert.search(suche3);

    loc4 = Wert.length;
    /***********************/

    extract1 = Wert.slice(loc1+3, loc2);
    extract2 = Wert.slice(loc2+3, loc3);
    extract3 = Wert.slice(loc3+3, loc4);


    if (extract1 == 0)
       {

       }
    document.USER.UserZeit.value = extract1;
    document.USER.UserRaum.value = extract2;
    document.USER.UserEnergie.value = extract3;

    this.sessiondauer = extract1;
    this.sessionlangstrecke = extract2;
    this.sessionenergie = extract3;

    }

metaobjekttest();
}



function exit(eingabe)
{

this.sessiondauer = parseInt(this.dauer) + parseInt(this.sessiondauer);
this.sessionlangstrecke = parseInt(this.langstrecke) + parseInt(this.sessionlangstrecke);
this.sessionenergie = parseInt(this.sessionenergie) + parseInt(this.energiekonto);
a = "?zzz" + this.sessiondauer + "rrr" + this.sessionlangstrecke + "eee" + this.sessionenergie;
window.location.href = eingabe + a;
}




/********************* Edit - Objekt **************/



solo = new Boolean(true);


function Editobjekt(identify, index)
{
this.testme   = testme;

this.dragProzess   = new Boolean (false);
this.resizeProzess = new Boolean (false);
this.transform     = transform;


this.dragndrop    = dragndrop;
this.formatiere   = formatiere;
this.resize       = resize;

this.resize_sub   = resize_sub;

this.cleanpx       = cleanpx;

this.transform     = transform;

this.ready         = (false);
this.id           = "Hans";
this.identify     = identify;
this.index        = index;

}


function testme(eingabe)
{
}

/****************/


function transform(objekt, eingabe)
{

if (editstate == 102)
   {
   this.formatiere(objekt, eingabe)
   }

if (editstate == 114)
   {
   resize(objekt, eingabe)
   }

   if (editstate == 100)
   {
   this.dragndrop(objekt, eingabe)
   }

}


/************/

function dragndrop(objekt, eingabe)
{
}


/******/

function formatiere(objekt, eingabe)
{
}

/*****/


function resize(objekt, eingabe)
{
}

/*******/

function resize_sub(objekt, xCo, yCo, breit, hoch)
{
}




/**********/

function cleanpx(eingabe, number)   // bei number == 1 errechnet er Breite/Höhe, bei 2 left und top
{
   suche = /px/g;
   probe = suche.test(eingabe);
   ergebnis = suche.exec(eingabe);

   loc = eingabe.search(/px/g);

   // loc = ergebnis.index;


   extract = eingabe.slice(0, loc);



   if (number == 1)
      {
      eingabe = extract/2;
      }

   if (number == 2)
      {
      eingabe = extract;
      }

   return eingabe;
}



/***********/

function callme(objekt,eingabe)
{
temp = objekt;
DIV_Liste();
ind = div_Check(objekt);


if (eingabe == 1)
{
eval(Code[ind][0]);
}

if (eingabe == 2)
{
eval(Code[ind][1]);
}


if (eingabe == 3)
   {
   eval(Code[ind][2]);
   }

if (eingabe == 4)
   {
   eval(Code[ind][3]);
   }

if (eingabe == 5)
   {
   eval(Code[ind][4]);
   }

}

/******** Nachbearbeiten der Datei *********/

divWert = false;


function DIV_Liste()
{
if (divWert == false)
   {
   divArray = new Array();
   divWert = true;
   }

j = 0;
for (i=0; i<document.all.length; i++ )
     {

          if (document.all[i].tagName == "DIV")
          {
          divArray[j] = document.all[i].id;
          j++;
          }
     }
}


function div_Check(objekt)
{

for (i=0; i<divArray.length; i++ )
    {
    if (divArray[i] == objekt.id)
       {
       index = i;
       return index;
       }

    }


}


/*********************/

initWert = false;

function bildnameClean()
{
DIV_Liste();
search = /this.bildname/g;

for (i=0 && initWert == false; i<Code.length; i++ )
    {

    for (j=0; j<5; j++ )
        {
        ergebnis = search.test(Code[i][j]);

        if (ergebnis == true)
           {
           nova = " " +divArray[i] + "Bild";


                 for (k=0; k<document.images.length; k++ )
                          {
                          temp = document.images[k].name;

                          if (nova == temp)
                             {
                             substitut = "document.images[" + k +"]";
                             Code[i][j] = Code[i][j].replace(/this.bildname/, substitut);
                             }
                          }

           }

        }

    }
initWert = true;
}



function Zeilenende()
{
}


function donothing()
{
}