/*

  coded by Imagician / BionFX for knuddels.com

  http://www.bionfx.de

*/

var dreiundachtzig = false;
var gimmick = true;
var showed = false;

var hexChar = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');

var tage   = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
var monate = new Array('Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
var daytimes = new Array('Nacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend')

var fontn = new Array(
"Verdana,Geneva,Arial,Helvetica",
"Arial,Helvetica",
"Comic Sans MS",
"Courier New",
"Times New Roman");

var crazyActive = false;
var buntActive = false;
var DYCPActive = false;

var tags = new Array('wochentag', 'daytime', 'datum', 'monat', 'herz');

var DYCPPos = 0;

var DYCPTagOpen = new Array('','<sup>','<sup>','','<sub>','<sub>')
var DYCPTagClose = new Array('','</sup>','</sup>','','</sub>','</sub>')

function crazy(c)
{
  var op = '';
  var cl = '';

  op = ((op == '')? ((Math.random() < 0.2) ? '<b>':'') : op);
  op = ((op == '')? ((Math.random() < 0.2) ? '<i>':'') : op);
  op = ((op == '')? ((Math.random() < 0.33) ? '<sup>':'') : op);
  op = ((op == '')? ((Math.random() < 0.33) ? '<sub>':'') : op);
  op = ((op == '')? ((Math.random() < 0.2) ? '<big>':'') : op);
  op = ((op == '')? ((Math.random() < 0.2) ? '<small>':'') : op);

  cl = (op != '') ? '</' + op.substring(1, op.length):'';

  c2 = (Math.random() < 0.2) ? c.toUpperCase() : c.toLowerCase();

  result = '<FoNt fAcE="' + fontn[Math.round(Math.random()*(fontn.length-1))] + '"' + ((buntActive) ? bunt(): '') +'>' + op + c2 + cl + '</FoNt>';

  return result;
}

function hex2Dec(hex)
{
  dec = (String(hexChar).toLowerCase().indexOf(hex.substring(0,1).toLowerCase()))*8 + (String(hexChar).toLowerCase().indexOf(hex.substring(1,2).toLowerCase()))*0.5;
  return dec;
}

function colorDifference(c0,c1)
{
  if ((c0 == '') || (c1 == ''))
    result = 0
  else
    result = Math.abs( hex2Dec(c0.substring(0,2)) - hex2Dec(c1.substring(0,2)) ) + Math.abs( hex2Dec(c0.substring(2,4)) - hex2Dec(c1.substring(2,4)) ) + Math.abs( hex2Dec(c0.substring(4,6)) - hex2Dec(c1.substring(4,6)) );
  return result;
}

function dye()
{
  var result = '';

  var bgCol = document.bgColor; if (bgCol.substring(0,1) == '#') bgCol = bgCol.substring(1,7);

  while (colorDifference(result,bgCol) < 120)
  {
    result = '';
    for (o = 0; o < 6; o ++)
      result += hexChar[Math.round(Math.random()*15)];
  }

  return result;

}

function bunt()
{
  result = ' Color="#' + dye() + '"';

  return result;
}

function wochentag()
{
  now = new Date();
  result = tage[now.getDay()];

  return result;
}

function daytime()
{
  now = new Date()
  result = now.getHours();

  if ((result > 21) || (result < 5)) result = daytimes[0];
  else if (result <  9) result = daytimes[1];
  else if (result < 11) result = daytimes[2];
  else if (result < 14) result = daytimes[3];
  else if (result < 18) result = daytimes[4];
  else result = daytimes[5];

  return result;
}

function datum()
{
  now = new Date();
  year = now.getYear();
  if (year < 600) year += 1900;

  result = now.getDate() + '.&nbsp;' + (now.getMonth()+1) + '.&nbsp;' + year;

  return result;
}

function monat()
{
  now = new Date();
  result = monate[now.getMonth()];

  return result;
}

function herz()
{
  result = '<img src="http://www.knuddelsweb.de/images/bumpheart.gif" width=19 height=16>';
  return result;
}

function markup(c)
{
  var result = '';

  if (crazyActive)
  {
    result = crazy(c);
  }
  else if (buntActive)
    result = '<Font' + bunt()+ '>' + c + '</Font>';
  else
    result = c;

  if (DYCPActive)
  {
    DYCPPos ++;
    result = '<span style="font-size:21px">&nbsp;' + DYCPTagOpen[(DYCPPos % DYCPTagOpen.length)] + result + DYCPTagClose[(DYCPPos % DYCPTagOpen.length)] + '</span>';
  }

  return result;
}

function writeTag(s)
// s ist 'wochentag', 'daytime', 'datum', 'monat' oder 'herz'
{
  s = s.substring(1,s.length - 1);

  eval('document.write('+ s.toLowerCase() + '());');
}

function evalTags(s)
{
  result = s;

  for (n = 0; n < tags.length; n ++)
  {
    i = result.toLowerCase().lastIndexOf('<'+tags[n]+'>');

    while (i != -1)
    {
      rest = result.toLowerCase().substring((i+tags[n].length+2), result.length);
      result = result.toLowerCase().substring(0,i) + eval(tags[n]+'()') + rest;

      i = result.toLowerCase().lastIndexOf('<'+tags[n]+'>');
    }
  }

  return result;
}

function writeMarked(s)
{

  if ((s.length > 2000) && (!showed))
  {
    showed = true;
    // alert('\nACHTUNG: Der Ersteller dieser Homepage\nhat extensiven Gebrauch von einem oder\nmehreren KGML-Tags gemacht (mehr als 2000\nZeichen).\n\nDer Aufbau der Seite kann daher nach der\nÜbertragung einige Zeit in Anspruch\nnehmen.\n\n(Dieser Hinweis wurde skriptgeneriert)\n');
  }

  var tagOpen = false;
  var tagClosed = false;
  var ampOpen = false;
  var ampClosed = false;

  crazyActive = false;
  buntActive = false;

  evaluated = evalTags(s);
  result = '';

  n = 0;

  while (n < evaluated.length)
  {
    c = evaluated.charAt(n)
    while ((c == '<') && (!tagOpen))
    {
      if (evaluated.substring(n,n+7).toLowerCase() == '<crazy>') { crazyActive = true; n+= 7;}
      else if (evaluated.substring(n,n+8).toLowerCase() == '</crazy>') { crazyActive = false; n+= 8;}
      else if (evaluated.substring(n,n+6).toLowerCase() == '<bunt>') { buntActive = true; n+= 6;}
      else if (evaluated.substring(n,n+7).toLowerCase() == '</bunt>') { buntActive = false; n+= 7;}
      else if (evaluated.substring(n,n+6).toLowerCase() == '<dycp>') { DYCPActive = true; n+= 6;}
      else if (evaluated.substring(n,n+7).toLowerCase() == '</dycp>') { DYCPActive = false; n+= 7;}
      else tagOpen = true;

      c = evaluated.charAt(n)
    }

    if (c == '>') tagClosed = true;

    if (c == '&') ampOpen = true;
    if (c == ';') ampClosed = true;

    result += ( ((tagOpen) || (ampOpen) || (tagClosed) || (ampClosed)) ? c : markup(c) );

    if (tagClosed) tagOpen = false;
    tagClosed = false;

    if (ampClosed) ampOpen = false;
    ampClosed = false;

    n++;
  }
  document.write(result);
}

function init()
{

}
