var uid1282938542166_sid        = '@sid@';
var uid1282938542166_level      = 'lnamelesslevelbd';
var uid1282938542166_map        = new Object();
var uid1282938542166_anz_player = 1;
var uid1282938542166_sound_on   = true;
var uid1282938542166_keysshow   = false;
var uid1282938542166_profilshow = false;
var uid1282938542166_keyid      = null;
function uid1282938542166_oscar_request() {
  var anfrage = null;
  try {
    anfrage = new XMLHttpRequest();
  } catch (versuchmicrosoft) {
    try {
      anfrage = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (anderesmicrosoft) {
      try {
	anfrage = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (fehlschlag) {
	anfrage = null;
      }
    }
  }
  if (anfrage == null)
    alert("Fehler beim Erzeugen des Anfrage-Objekts!");
  return anfrage;
}

function uid1282938542166_getId(obj,id)
{
  if(obj == null) return null;
  if(obj.id == id) return obj;
  if(obj.childNodes)
    {
      for(var i = 0;i < obj.childNodes.length;i++)
	{
	  var c = uid1282938542166_getId(obj.childNodes[i],id); 
	  if(c != null) return c;
	}
    }
  return null;
}

function uid1282938542166_getElementById(id)
{
  var start = id.substring(0,4);
  
  if(start != 'bomb' 
     && start != 'gimi')
    if(uid1282938542166_map['cache_'+id]) return uid1282938542166_map['cache_'+id];
  
  for(var i = 0;i < uid1282938542166_map['rootcnt'];i++)
    {
      var root = uid1282938542166_map['root'+i];
      var o = uid1282938542166_getId(root,id);
      if(o != null) 
	{
	  uid1282938542166_map['cache_'+id] = o;
	  return o;
	}
    }
  uid1282938542166_alarm(id+' not found');
}


function uid1282938542166_oscar_get(type,zus)
{
  var anfrage = uid1282938542166_oscar_request();
  var url = "/"+type+".xml?sid="+uid1282938542166_sid+"&level="+uid1282938542166_level+"&dummy="+new Date().getTime();
  if(zus != null)
    url += zus;
  anfrage.open("GET", url, true);
  anfrage.onreadystatechange = function () { uid1282938542166_oscar_recv(anfrage) };
  anfrage.send(null);
}



function uid1282938542166_createObject(obj)
{
  var name = obj.nodeName;
  var val  = obj.nodeValue;
  var id   = null;
  if(name == '#text')
    {
      //create text
      return document.createTextNode(val);
    }

  var o = document.createElement(name);
  
  //append Attributtes
  var attr = obj.attributes;
  if(attr)
    for(var x = 0;x < attr.length;x++)
      {
	try
	  {
	    var aname = attr[x].nodeName;
	    var aval  = attr[x].nodeValue;
	    if(aname == 'onclick')
	      {
		if(aval == 'toogle') o.onclick = uid1282938542166_callToogle; 
		else if(aval == 'loadgame')  o.onclick = uid1282938542166_loadGame; 
		else if(aval == 'nextlevel') o.onclick = uid1282938542166_nextLevel;
		else if(aval == 'givestar')  o.onclick = uid1282938542166_giveStar;
		else if(aval == 'changekey')  o.onclick = uid1282938542166_changeKey;
		else
		  alert(' onclick = '+aval);
	      }
	    else if(aname == 'style')
	      {
		//because the inet-explorer cannot process style
		
		var opt = aval.split(";");
		for(var y = 0;y < opt.length;y++)
		  {
		    try
		      {
			var p = opt[y].split(":");
			if(p[0] == 'position')        o.style.position       = p[1];
			if(p[0] == 'top')             o.style.top            = p[1];
			if(p[0] == 'width')           o.style.width          = p[1];
			if(p[0] == 'height')          o.style.height         = p[1];
			if(p[0] == 'left')            o.style.left           = p[1];
			if(p[0] == 'border')          o.style.border         = p[1];
			if(p[0] == 'z-index')         o.style.zIndex         = p[1];
			if(p[0] == 'text-indent')     o.style.textIndent     = p[1];
			if(p[0] == 'list-style')      o.style.listStyle      = p[1];
			if(p[0] == 'display')         o.style.display        = p[1];
			if(p[0] == 'margin')          o.style.margin         = p[1];
			if(p[0] == 'background')      o.style.background     = p[1];
			if(p[0] == 'text-decoration') o.style.textDecoration = p[1];
			if(p[0] == 'font-size')       o.style.fontSize       = p[1];
			if(p[0] == 'text-align')      o.style.textAlign      = p[1];
		      }
		    catch(sexc)
		      {
			alarm(sexc+' '+p[0] + ' ' +p[1])
		      }
		  }
	      }
	    else
	      {
		if(aname == 'id')
		  id = aval;
		var oattr = document.createAttribute(aname);
		oattr.value = aval;    
		o.setAttributeNode(oattr);   
	      }
	  }
	catch(exc)
	  {
	    alert(aname+ ' ' + aval+' '+exc);
	  }
      }

  if(obj.childNodes)
    {
      for(var i = 0;i < obj.childNodes.length;i++)
	{
	  var c = uid1282938542166_createObject(obj.childNodes[i]);
	  o.appendChild(c);
	}
    }
  return o;
}
function uid1282938542166_toogleImage(obj,ipath)
{
  while(obj.firstChild)
    obj.removeChild(obj.firstChild);

  var img = new Image();
  img.src = ipath;
  obj.appendChild(img);
}

function uid1282938542166_loadGame()
{
  if(uid1282938542166_map['load']) return;
  uid1282938542166_map['load'] = true;
  if(!this.href) return;
  var i = this.href.indexOf("#");
  if(i < 0) return;
  uid1282938542166_level = this.href.substring(i+1);
  uid1282938542166_oscar_get('game',null);
}

function uid1282938542166_giveStar()
{
  var rang = parseInt(this.parentNode.id.substring(4));
  uid1282938542166_oscar_get('usersetting','&rang='+rang);
}

function uid1282938542166_setKey(id,kc)
{
  var a = uid1282938542166_getElementById(id);
  var div = a.parentNode;
  div.style.background = "#eeeeee";
  
  uid1282938542166_oscar_get('usersetting','&key='+escape(id+':'+kc));
  uid1282938542166_keyid = null;
}
function uid1282938542166_changeKey()
{
  uid1282938542166_keyid = this.id;
  while(this.firstChild)
    this.removeChild(this.firstChild);
  var div = this.parentNode;
  div.style.background = "#a40000";
  document.onkeyup       = uid1282938542166_keyUp;
}

function uid1282938542166_setStar(r)
{

  var rang = parseInt(r); 
  var weight = uid1282938542166_getElementById('weight');
  

  if(rang > 0)
    weight.style.display = "none";
  
  for(var i = 1;i <= 5;i++)
    {
      var li = uid1282938542166_getElementById('star'+i);

      if(i <= rang)
	li.style.background = "transparent url(/skin/frame/star_full.gif) no-repeat 0 0";
      else
	li.style.background = "transparent url(/skin/frame/star.gif) no-repeat 0 0";
    }
}


function uid1282938542166_setAnzPlayer(anz)
{
  var obj = uid1282938542166_getElementById('toogleplayer');
  uid1282938542166_anz_player = parseInt(anz);
  uid1282938542166_toogleImage(obj,"/skin/frame/player"+uid1282938542166_anz_player+".gif");
}
function uid1282938542166_setSound(sound)
{
  var obj = uid1282938542166_getElementById('tooglesound');
  
  if(sound == 'on')
    {
      uid1282938542166_sound_on = true;
      uid1282938542166_toogleImage(obj,"/skin/frame/soundon.gif");
    }
  else
    {
      uid1282938542166_sound_on = false;
      uid1282938542166_toogleImage(obj,"/skin/frame/soundoff.gif");

    }
}

function uid1282938542166_callToogle()
{
  if(this)
    {
      if(this.id == 'toogleplayer')
	{
	  uid1282938542166_anz_player = uid1282938542166_anz_player + 1;
	  if(uid1282938542166_anz_player > 4) uid1282938542166_anz_player = 1;
	  uid1282938542166_oscar_get('usersetting','&anzplayer='+uid1282938542166_anz_player);
	  //uid1282938542166_toogleImage(this,"/skin/frame/player"+uid1282938542166_anz_player+".gif");
	}
      if(this.id == 'tooglesound')
	{
	  if(uid1282938542166_sound_on)
	    {
	      uid1282938542166_sound_on = false;
	      //uid1282938542166_toogleImage(this,"/skin/frame/soundoff.gif");
	    }
	  else
	    {
	      uid1282938542166_sound_on = true;
	      //uid1282938542166_toogleImage(this,"/skin/frame/soundon.gif");
	    }
	  uid1282938542166_oscar_get('usersetting','&sound='+(uid1282938542166_sound_on?'on':'off'));
	}

      var tk =  uid1282938542166_getElementById('keysframe');
      
      var tp =  uid1282938542166_getElementById('profilframe');

      if(this.id == 'tooglekeys')
	{
          if(uid1282938542166_keysshow)
	    {
	      uid1282938542166_keysshow = false;
	      tk.style.display = "none";
	    }
	  else
	    {
	      if(uid1282938542166_profilshow)
		{
		  uid1282938542166_aktnames();
		  uid1282938542166_profilshow = false;
		  tp.style.display = "none";
		}
	      uid1282938542166_keysshow = true;
	      tk.style.display = "block";
	    }
	}
      if(this.id == 'toogleprofil')
	{
          if(uid1282938542166_profilshow)
	    {
	      uid1282938542166_profilshow = false;
	      tp.style.display = "none";
	      uid1282938542166_aktnames();
	    }
	  else
	    {
	      uid1282938542166_keysshow = false;
	      tk.style.display = "none";
	      uid1282938542166_profilshow = true;
	      tp.style.display = "block";
	    }
	}
    }
}

function uid1282938542166_setProfil(k,v)
{
  if(k == 'name1') uid1282938542166_getElementById('nameplayer1').value = v;
  if(k == 'name2') uid1282938542166_getElementById('nameplayer2').value = v;
  if(k == 'name3') uid1282938542166_getElementById('nameplayer3').value = v;
  if(k == 'name4') uid1282938542166_getElementById('nameplayer4').value = v;
  if(k == 'email') uid1282938542166_getElementById('email').value = v;
}

function uid1282938542166_aktnames()
{
  var name1 = uid1282938542166_getElementById('nameplayer1').value;
  var name2 = uid1282938542166_getElementById('nameplayer2').value;
  var name3 = uid1282938542166_getElementById('nameplayer3').value;
  var name4 = uid1282938542166_getElementById('nameplayer4').value;
  var email = uid1282938542166_getElementById('email').value;
  
  uid1282938542166_oscar_get('usersetting','&name1='+name1+'&name2='+name2+'&name3='+name3+'&name4='+name4+'&email='+email);
}

function uid1282938542166_loadSound(k,v)
{
  if(soundManagerLoaded)
    soundManager.createSound(k,v);
  else
    setTimeout("uid1282938542166_loadSound("+k+","+v+")",10);
}


function uid1282938542166_oscar_recv(anfrage)
{
  if (anfrage.readyState == 4) {
    var xmldoc = anfrage.responseXML;
    if(xmldoc && xmldoc.childNodes.length)
      {
	var data = xmldoc.getElementsByTagName("data")[0];

	for(var i = 0;i < data.childNodes.length;i++)
	  {
	    var o = data.childNodes[i];
	    var n = o.nodeName;
	    var v = o.nodeValue;
	    if(o.firstChild)
	      {
		if(o.firstChild.nodeName == '#text')
		  v = o.firstChild.nodeValue;
	      }
	    if(n == 'iobject')
	      {
		if(!uid1282938542166_map['buf_cnt'])
		  {
		    uid1282938542166_map['buf_cnt'] = 0;
		    uid1282938542166_map['buf_i'] = 0;
		  }
		uid1282938542166_map['buf_'+(uid1282938542166_map['buf_cnt']++)] = o;
	      }
	    else if(n == 'object')
	      {
		uid1282938542166_build(o);
	      }
	    else if(n == 'autocommand')
	      {
		uid1282938542166_oscar_get(v,null);
	      }
	    else if(n == '#text')
	      {

	      }
	    else if(n == 'map')
	      {
		var id = o.getAttribute('id');
		if(v == '1:00:1') uid1282938542166_alarm(id);
		uid1282938542166_map[id] = v;
	     } 
	    else if(n == 'music')
	      {
		var id = o.getAttribute('id');
		uid1282938542166_loadSound(id,v);
	      }
	    else if(n == 'call')
	      {
		if(v == 'startgame') uid1282938542166_load();
	      }
	    else if(n == 'rang')
	      {
		uid1282938542166_setStar(v);
	      }
	    else if(n == 'anzplayer')
	      {
		uid1282938542166_setAnzPlayer(v);
	      }
	    else if(n == 'sound')
	      {
		uid1282938542166_setSound(v);
	      }
	    else if(n == 'profil')
	      {
		var p = v.split(":");
		if(p.length == 2)
		  {
		    uid1282938542166_setProfil(p[0],p[1]);
		  }
	      }
	    else if(n == 'key')
	      {
		var p = v.split(":");
		if(p.length == 2)
		  {
		    var a = uid1282938542166_getElementById(p[0]);
		    if(a)
		      {
			var s = 'err';
			var c = parseInt(p[1]);
			switch(c)
			  {
			  case 16:
			    s = 'Shift';
			    break;
			  default:
			    s = String.fromCharCode(c);
			    break;
			  }
			var tn = document.createTextNode(s);
			while(a.firstChild)
			  a.removeChild(a.firstChild);
			a.appendChild(tn);
		      }
		  }
	      }
	    else
	      {
		uid1282938542166_alarm('test '+n+' '+v);
	      }
	  }
      }
  }
}
function uid1282938542166_build(o)
{
  var target = o.getAttribute('target');
  
  for(var x = 0;x < o.childNodes.length;x++)
    {
      var no = uid1282938542166_createObject(o.childNodes[x]);
      if(target == 'main')
	{
	  var scriptElements = document.getElementsByTagName("script");

	  for(var i = 0;i < scriptElements.length;i++)
	    {
	      var thisScript = scriptElements[i];
	      if(!thisScript.src) continue;
	      var myown = thisScript.src.indexOf('kriegstal');
	      if(myown < 0) continue;
	      var li = thisScript.src.indexOf('level=');
	      if(li > 0)
		{
		  thislevel = thisScript.src.substring(li+6);
		  li = thislevel.indexOf('&');
		  if(li > 0) thislevel = thislevel.substring(0,li);
		  //uid1282938542166_alarm(thislevel+' != '+uid1282938542166_level);
		  if(thislevel != uid1282938542166_level) continue;
		}
	      thisScript.parentNode.insertBefore(no,thisScript);
	      if(!uid1282938542166_map['rootcnt']) uid1282938542166_map['rootcnt'] = 0;;
	      uid1282938542166_map['root'+(uid1282938542166_map['rootcnt']++)]  = no;
	      //uid1282938542166_alarm(no.id+' '+no.childNodes.length+' '+no.nodeName);
	     
	    }
	}
      else
	{
	  var t =  uid1282938542166_getElementById(target);
	  t.appendChild(no);
	}
    }
}

function uid1282938542166_BildLoaded (max) {
  var s = 0;
  for (i = 0; i < document.images.length; ++i) {
    if (document.images[i].complete == true) {
      s++;
    }
  }
  if(max < document.images.length) max = document.images.length;
  return (s * 100)/max;
}

function uid1282938542166_load()
{

  if(!uid1282938542166_map['buf_cnt']) return;
  var cnt = 0;

  while(uid1282938542166_map['buf_i'] < uid1282938542166_map['buf_cnt'])
    {
      var o = uid1282938542166_map['buf_'+uid1282938542166_map['buf_i']];
      
      if(++cnt > 10)
	{
	  setTimeout("uid1282938542166_load()",10);
	  uid1282938542166_setStatus(uid1282938542166_BildLoaded(uid1282938542166_map['buf_cnt']),0);
	  return;
	}
      uid1282938542166_map['buf_i']++;
      uid1282938542166_build(o);
    }
  uid1282938542166_buildFSM(-1);
}
function uid1282938542166_setStatus(x,y)
{
  var status = uid1282938542166_getElementById('status');
  if(status == null) return;
  
  status.style.width = x + y;
  
}

function uid1282938542166_buildFSM(cnt)
{
  var h = uid1282938542166_map['height'];
  if(cnt < 0)
    {
      uid1282938542166_buildClean('loadref');
      uid1282938542166_buildBG();
      uid1282938542166_buildFSM(0);
      return;
    }
  else if(cnt < h)
    {
      uid1282938542166_buildRow(cnt);
      setTimeout('uid1282938542166_buildFSM('+(cnt+1)+')',10);
      uid1282938542166_setStatus(100,((cnt + 1) * 100)/h);
      return;
    } 
  else 
    {
      uid1282938542166_buildEnemy();
      uid1282938542166_buildPlayer();
      document.onkeydown     = uid1282938542166_keyDown;
      document.onkeyup       = uid1282938542166_keyUp;
      uid1282938542166_map['starttime'] = new Date().getTime();
      uid1282938542166_buildClean('statusframe');
      uid1282938542166_startSound();
      uid1282938542166_cyclGame();
    }
}

function uid1282938542166_removeCell(id)
{
  if(id == null) return;
  var container = uid1282938542166_getElementById('imagecontainer');
  var div       = uid1282938542166_getElementById(id); 
  if(div != null) 
    {
      //getimage
      if(div.childNodes)
	{
	  for(var i = 0;i < div.childNodes.length;i++)
	    {
	      if(div.childNodes[i].nodeName == 'img' ||
		 div.childNodes[i].nodeName == 'IMG')
		{
		  if(div.childNodes[i].className.charAt(0) == 'F')
		    container.insertBefore(div.childNodes[i],container.firstChild);
		  else
		    container.appendChild(div.childNodes[i]);
		}
	    }
	}
      div.parentNode.removeChild(div);
    } 
}
function uid1282938542166_setMapCell(x,y,t,id,w,h,z)
{
  if(t == null) return;
 
  
  var game      = uid1282938542166_getElementById('game');
  var container = uid1282938542166_getElementById('imagecontainer');
  var div = document.createElement('div');
  div.style.position    = "absolute";
  div.style.top         = (y*w)+"px";
  div.style.left        = (x*h)+"px";
  div.style.zIndex      = z;
  div.id                = id;
  uid1282938542166_map['cache_'+id] = div;

  for(var i = 0;i < container.childNodes.length;i++)
    {
      var bild = container.childNodes[i];
      if(bild.nodeName != 'IMG' && bild.nodeName != 'img') continue;
      var cl = bild.className;
      //if(i < 10) alert(cl+' '+t+" "+(cl != t));
      if(cl != t) continue;
      div.appendChild(bild);
      break;
    }
  game.appendChild(div);
}

function uid1282938542166_moveMapCell(x,y,id,w,h)
{
  var div       = uid1282938542166_getElementById(id); 
  if(div == null) 
    {
      uid1282938542166_alarm(id + ' not found');
      return;
    }
  div.style.top      = (y*w)+"px";
  div.style.left     = (x*h)+"px";
}

 

function uid1282938542166_buildClean(id)
{
  var o = uid1282938542166_getElementById(id);
  if(o == null) return;
  o.parentNode.removeChild(o);
}
function uid1282938542166_buildBG()
{
  uid1282938542166_setMapCell(0,0,"background",uid1282938542166_map['size'] * uid1282938542166_map['width'],
	     uid1282938542166_map['size']*uid1282938542166_map['height'],1);
}
function uid1282938542166_buildRow(y)
{
  var w = uid1282938542166_map['width'];
  for(var x = 0;x < w;x++)
    {
      var t = uid1282938542166_map[x+"_"+y];
      if(t.charAt(0) == 'b') continue;
      if(t.charAt(0) == '.') continue;
      uid1282938542166_setMapCell(x,y,t,x+"_"+y,uid1282938542166_map['size'],uid1282938542166_map['size'],2);
    }
}
function uid1282938542166_buildEnemy()
{
  for(var e = 0;e < uid1282938542166_map['enemy_cnt'];e++)
    uid1282938542166_setMapCell(uid1282938542166_map['ex_'+e],uid1282938542166_map['ey_'+e],uid1282938542166_map['etype_'+e],'enemy_'+e,uid1282938542166_map['size'],uid1282938542166_map['size'],5);
}
function uid1282938542166_buildPlayer()
{
  for(var p = 0;p < uid1282938542166_anz_player;p++)
    {
      uid1282938542166_setMapCell(uid1282938542166_map['playerx_'+p],uid1282938542166_map['playery_'+p],'player'+p,'player_'+p,uid1282938542166_map['size'],uid1282938542166_map['size'],4);
    }
}

/* Ki for ghost */

function uid1282938542166_nextDirection()
{
  return Math.round(4 * Math.random() + 0.5);
}

function uid1282938542166_getNextXPos(x,dir)
{
  switch(dir)
    {
    case 1:
      return parseInt(x) + 1;
    case 2:
      return parseInt(x) - 1;
    default:
      return x;
    }
}
function uid1282938542166_getNextYPos(y,dir)
{
  switch(dir)
    {
    case 3:
      return parseInt(y) + 1;
    case 4:
      return parseInt(y) - 1;
    default:
      return y;
    }
}
var raised = 0;

function uid1282938542166_alarm(txt)
{
  if(++raised < 10)
    alert(txt);
}
function uid1282938542166_isValidRange(x,y)
{
 if(parseInt(x) < 0) 
    {
      //uid1282938542166_alarm('x = '+x);
      return false;
    }
  if(parseInt(y) < 0) 
    {
      //uid1282938542166_alarm('y = '+y );
      return false;
    }
  if(parseInt(x) >= parseInt(uid1282938542166_map['width']))
    {
      //uid1282938542166_alarm('x = '+x+' '+uid1282938542166_map['width']);
      return false;
    }
  if(parseInt(y) >= parseInt(uid1282938542166_map['height']))
    {
      //uid1282938542166_alarm('y = '+y+' '+uid1282938542166_map['height']);
      return false;
    }
  return true;

}
function uid1282938542166_isBomb(x,y,r)
{
  if(!uid1282938542166_isValidRange(x,y)) return false;
  if(uid1282938542166_map[x+"_"+y].charAt(0) == 'B') 
    {
        var range = uid1282938542166_map[x+'_'+y+'bombrange'];
	if(r <= range) return true;
    }
  return false;
}

function uid1282938542166_isBombFree(x,y,range)
{
  if(!uid1282938542166_isValidRange(x,y)) return false;
  var ctype = uid1282938542166_map[x+'_'+y];
  if(uid1282938542166_map[x+'_'+y].charAt(0) == 'F') return false;
  for(var r = 1;r <= range;r++)
    {
      if(uid1282938542166_isBomb(x+r,y,r)) return false;
      if(uid1282938542166_isBomb(x-r,y,r)) return false;
      if(uid1282938542166_isBomb(x,y+r,r)) return false;
      if(uid1282938542166_isBomb(x,y-r,r)) return false;
    }
  return true;
}


function uid1282938542166_isValidCell(x,y)
{
  if(!uid1282938542166_isValidRange(x,y)) return false;
  
  var ctype = uid1282938542166_map[x+'_'+y];

  try
    {
      switch(ctype.charAt(0))
	{
	case 'c':
	case 'b':
	case 'B':
	  return false;
	default:
	  return true;
	}
    }
  catch(exc)
    {
      uid1282938542166_alarm(exc +' '+ctype+' = '+x+'x'+y);
    }
}

function uid1282938542166_calc_flucht(nr)
{
  if(!uid1282938542166_isBombFree(uid1282938542166_map['ex_'+nr],uid1282938542166_map['ey_'+nr],1))
    {
      for(var dur = 0;dur < 4;dur++)
	{
	  uid1282938542166_map['dir_'+nr] = uid1282938542166_nextDirection();
	  var x = uid1282938542166_getNextXPos(uid1282938542166_map['ex_'+nr],uid1282938542166_map['dir_'+nr]);
	  var y = uid1282938542166_getNextYPos(uid1282938542166_map['ey_'+nr],uid1282938542166_map['dir_'+nr]);
      	  if(uid1282938542166_isValidCell(x,y))
	    { 
	      uid1282938542166_map['ex_'+nr] = x;
	      uid1282938542166_map['ey_'+nr] = y;
	      break;
	    } 
	}
    }
}


function uid1282938542166_calc_ghost(nr)
{
  if(!uid1282938542166_map['dir_'+nr] || (Math.random() * 4 < 1))
    {
      /* direction */
      uid1282938542166_map['dir_'+nr] = uid1282938542166_nextDirection();
    }

  var x = uid1282938542166_getNextXPos(uid1282938542166_map['ex_'+nr],uid1282938542166_map['dir_'+nr]);
  var y = uid1282938542166_getNextYPos(uid1282938542166_map['ey_'+nr],uid1282938542166_map['dir_'+nr]);
  

  if(uid1282938542166_isValidCell(x,y))
    {
      uid1282938542166_map['ex_'+nr] = x;
      uid1282938542166_map['ey_'+nr] = y;
    }
  else
    {
      /* uid1282938542166_alarm(nr+' = '+x+'x'+y+' old:'+uid1282938542166_map['ex_'+nr]+'x'+uid1282938542166_map['ey_'+nr]+
	 ' type:'+uid1282938542166_map[x+'_'+y]+' c:'+uid1282938542166_map[x+'_'+y].charAt(0)); */
      uid1282938542166_map['dir_'+nr] = null;
    }
}




function uid1282938542166_calc_cloud(nr)
{
  if(!uid1282938542166_map['dir_'+nr] || (Math.random() * 4 < 1))
    {
      /* direction */
      uid1282938542166_map['dir_'+nr] = uid1282938542166_nextDirection();
    }



  for(var dur = 0;dur < 4;dur++)
    {
      var x = uid1282938542166_getNextXPos(uid1282938542166_map['ex_'+nr],uid1282938542166_map['dir_'+nr]);
      var y = uid1282938542166_getNextYPos(uid1282938542166_map['ey_'+nr],uid1282938542166_map['dir_'+nr]);
      
      if(uid1282938542166_isValidCell(x,y)  && uid1282938542166_isBombFree(x,y,2))
	{ 
	  uid1282938542166_map['ex_'+nr] = x;
	  uid1282938542166_map['ey_'+nr] = y;
	  break;
	} 
      else
	{
	  uid1282938542166_map['dir_'+nr] = uid1282938542166_nextDirection();
	}
    }
}

var uid1282938542166_cachemap;
function uid1282938542166_findPlayer(x,y,deep,tiefe,nextpos,direction)
{
  if(!uid1282938542166_isValidCell(x,y)) return -1;
  if(!uid1282938542166_isBombFree(x,y,2)) return -1;
  if(uid1282938542166_cachemap[x+'_'+y])
    {
      if(uid1282938542166_cachemap[x+'_'+y] <= tiefe) return -1;
    }
  if(deep < 0) 
    {
      var i = 0;
      if(nextpos['i'])
	i = nextpos['i'];
      nextpos['x_'+i] = x;
      nextpos['y_'+i] = y;
      nextpos['dir_'+i] = direction;
      nextpos['i']    = i + 1;
      return -1;
    }
  uid1282938542166_cachemap[x+'_'+y] = tiefe;

  for(var p = 0;p < uid1282938542166_anz_player;p++)
    {
      var px = uid1282938542166_map['playerx_'+p];
      var py = uid1282938542166_map['playery_'+p];
      if(x == px && y == py) return 0;
    }
  var d;
  for(d = 1;d <= 4;d++)
    {
      var nx  = uid1282938542166_getNextXPos(x,d);
      var ny  = uid1282938542166_getNextYPos(y,d);
      var dir = uid1282938542166_findPlayer(nx,ny,deep - 1,tiefe+1,nextpos,direction==0?d:direction);
      if(dir != -1) return d;
    }
  return -1;
}


function uid1282938542166_calc_skeleton(nr)
{
  try
    {
      var sx = uid1282938542166_map['ex_'+nr];
      var sy = uid1282938542166_map['ey_'+nr];
      
      var aktpos = new Object();
      var nextpos;
      
      aktpos['x_0'] = sx;
      aktpos['y_0'] = sy;
      aktpos['dir_0'] = 0;
      var maxdeep = 1;
      switch(uid1282938542166_map['anzskeleton'])
	{
	case 1: maxdeep = 10; break;
	case 2: maxdeep = 7; break;
	case 3: maxdeep = 5; break;
	case 4: maxdeep = 3; break;
	case 5: maxdeep = 2; break;
	case 6: maxdeep = 2; break;
	}
      
      uid1282938542166_cachemap = new Object();
      for(var deep = 0;deep < maxdeep;deep++)
	{
	  nextpos = new Object();
	  for(i = 0;aktpos['x_'+i];i++)
	    {
	      var dir = uid1282938542166_findPlayer(aktpos['x_'+i],aktpos['y_'+i],1,0,nextpos,aktpos['dir_'+i]);
	      if(dir != -1)
		{ 
		  if(deep != 0)
		    dir = aktpos['dir_'+i];
		  break;
		}
	    }
	  if(dir != -1) break;
	  aktpos = nextpos;
	}
      
      if(dir != -1)
	{
	  uid1282938542166_map['dir_'+nr] = dir;
	}
      else if(!uid1282938542166_map['dir_'+nr] || (Math.random() * 4 < 1))
	{
	  uid1282938542166_map['dir_'+nr] = uid1282938542166_nextDirection();
	}
      var ex = uid1282938542166_getNextXPos(uid1282938542166_map['ex_'+nr],uid1282938542166_map['dir_'+nr]);
      var ey = uid1282938542166_getNextYPos(uid1282938542166_map['ey_'+nr],uid1282938542166_map['dir_'+nr]);
      if(uid1282938542166_isValidCell(ex,ey)  && uid1282938542166_isBombFree(ex,ey,2))
	{
	  uid1282938542166_map['ex_'+nr]  = ex;
	  uid1282938542166_map['ey_'+nr]  = ey;
	}
      else
	{
	  uid1282938542166_map['dir_'+nr] = null;
	}
      uid1282938542166_calc_flucht(nr);
    }
  catch(exc)
    {
      uid1282938542166_alarm(exc +' calc_skeleton');
    }
}





function uid1282938542166_movePlayer(pl,x,y,func)
{
  if(func == 0)
    {
      var nx = parseInt(uid1282938542166_map['playerx_'+pl]) + parseInt(x);
      var ny = parseInt(uid1282938542166_map['playery_'+pl]) + parseInt(y);
 
      //uid1282938542166_alarm(uid1282938542166_map['playerx_'+pl]+'x'+uid1282938542166_map['playery_'+pl]+' => '+x+'x'+y);
      
      if(uid1282938542166_isValidCell(nx,ny))
	{
	  uid1282938542166_map['playerx_'+pl] = nx;
	  uid1282938542166_map['playery_'+pl] = ny;
	  uid1282938542166_moveMapCell(uid1282938542166_map['playerx_'+pl],uid1282938542166_map['playery_'+pl],'player_'+pl,uid1282938542166_map['size'],uid1282938542166_map['size']);
	  
	  uid1282938542166_calculateConflicts('moveplayer');
	}
    }
  else if(func == 1)
    {
      //bomb
      var x  = uid1282938542166_map['playerx_'+pl];
      var y  = uid1282938542166_map['playery_'+pl];
	  
      if(uid1282938542166_map[x+"_"+y].charAt(0) == 'B') return;
      
      if(uid1282938542166_map['playerbomb_'+pl] > 0)
	{
	  uid1282938542166_map['playerbomb_'+pl]--;
	  
	  uid1282938542166_setMapCell(x,y,"B",'bomb'+x+'_'+y,uid1282938542166_map['size'],uid1282938542166_map['size'],3);
	  uid1282938542166_map[x+"_"+y] = 'B';
	  uid1282938542166_map[x+"_"+y+'bombid']      = 'bomb'+x+'_'+y;
	  uid1282938542166_map[x+"_"+y+'bombrange']   = uid1282938542166_map['playerrange_'+pl];
	  uid1282938542166_map[x+"_"+y+'bombcounter'] = 'playerbomb_'+pl;
	  uid1282938542166_map[x+"_"+y+'bombcountdown'] = 10;
	  uid1282938542166_cyclBomb(x,y)
	}
    }
}

function uid1282938542166_cyclBomb(x,y)
{
  if(uid1282938542166_map[x+'_'+y].charAt(0) != 'B') 
    {
      if(uid1282938542166_map[x+"_"+y+'bombcountdown'] > 0)
	uid1282938542166_alarm(x+'_'+y+' Bomb cnt: '+uid1282938542166_map[x+"_"+y+'bombcountdown']);
      return;
    }
  if(uid1282938542166_map[x+"_"+y+'bombcountdown'] > 0)
    {
      uid1282938542166_map[x+"_"+y+'bombcountdown']--;
      setTimeout("uid1282938542166_cyclBomb("+x+","+y+")",500);
    }
  else
    {
      uid1282938542166_explosion(x,y);
    }
}

function uid1282938542166_explosion(x,y)
{
  //change2flame
  uid1282938542166_map[x+'_'+y] = '.';
  uid1282938542166_map[x+"_"+y+'bombcountdown'] = 0;
  var plc = uid1282938542166_map[x+"_"+y+'bombcounter'];
  uid1282938542166_map[plc]++;
  uid1282938542166_removeCell(uid1282938542166_map[x+'_'+y+'bombid']);
  
  uid1282938542166_makesound();

  var range = uid1282938542166_map[x+'_'+y+'bombrange'];
  uid1282938542166_setFireball(x,y,0,0,0);
  uid1282938542166_setFireball(x+1,y,1,0,range-1);
  uid1282938542166_setFireball(x-1,y,-1,0,range-1);
  uid1282938542166_setFireball(x,y+1,0,1,range-1);
  uid1282938542166_setFireball(x,y-1,0,-1,range-1);
  
  setTimeout("uid1282938542166_putoutFire("+x+","+y+")",1500);
  uid1282938542166_calculateConflicts('explosion');
}

function uid1282938542166_putoutFire(x,y)
{
  if(!uid1282938542166_isValidRange(x,y)) return;
  if(uid1282938542166_map[x+'_'+y].charAt(0) == 'F')
    {
      //clean fire
      uid1282938542166_map[x+'_'+y] = '.';
      uid1282938542166_removeCell('fire'+x+'_'+y);
      //put gimic
      if(uid1282938542166_map[x+'_'+y+'gimic'])
	{
	  uid1282938542166_setMapCell(x,y,uid1282938542166_map[x+'_'+y+'gimic'],'gimic'+x+'_'+y,uid1282938542166_map['size'],uid1282938542166_map['size'],3);
	  uid1282938542166_map[x+'_'+y] = uid1282938542166_map[x+'_'+y+'gimic'];
	  uid1282938542166_map[x+'_'+y+'gimic'] = null;
	}
      uid1282938542166_putoutFire(x+1,y);
      uid1282938542166_putoutFire(x-1,y);
      uid1282938542166_putoutFire(x,y+1);
      uid1282938542166_putoutFire(x,y-1);
    }
}

function uid1282938542166_getGimic()
{
  
  var i = Math.round(100 * Math.random() + 0.5);
  var off = 0;
  if(off <= i && i < off + parseInt(uid1282938542166_map['gimicbomb'])) return 'Gb';
  off += parseInt(uid1282938542166_map['gimicbomb']);
  if(off <= i && i < off + parseInt(uid1282938542166_map['gimicfire'])) return 'Gf';
  off += parseInt(uid1282938542166_map['gimicfire']);
  if(off <= i && i < off + parseInt(uid1282938542166_map['gimic10point'])) return 'GP';
  off += parseInt(uid1282938542166_map['gimic10point']);
  if(off <= i && i < off + parseInt(uid1282938542166_map['gimic1point'])) return 'Gp';
  return null;
}

// function _setFireball(x,y,dx,dy,r)
// {
//   setTimeout("_setFireball("+x+","+y+","+dx+","+dy+","+r+")",10);
// }
function uid1282938542166_setFireball(x,y,dx,dy,r)
{
  if(!uid1282938542166_isValidRange(x,y)) return;
  var ctype = uid1282938542166_map[x+'_'+y];
  
  switch(ctype.charAt(0))
    {
    case 'b':
      return;
    case 'c':
      uid1282938542166_removeCell(x+'_'+y);
      //gimic
      var gimic = uid1282938542166_getGimic();
      if(gimic != null)
	uid1282938542166_map[x+'_'+y+'gimic'] = gimic;
      r = 0;
      break;
    case 'F':
      //change to kreuzung
      return;
    case 'G':
      //burst the gimic
      uid1282938542166_removeCell('gimic'+x+'_'+y);
      uid1282938542166_map[x+'_'+y] = '.';
      break;
    case 'B':
      //burst this bomb
      uid1282938542166_explosion(x,y);
      return;
    default:
      break;
    }
  uid1282938542166_map[x+'_'+y] = 'F';
  uid1282938542166_setMapCell(x,y,"F",'fire'+x+'_'+y,uid1282938542166_map['size'],uid1282938542166_map['size'],7);
  if(r > 0)
    uid1282938542166_setFireball(x+dx,y+dy,dx,dy,r-1);
}

var cyc = 0;
function uid1282938542166_cyclGame()
{
  if(uid1282938542166_map['gameover']) return;
  cyc++;
  /* bombs */
  
  /* emeny */
  for(var e = 0;e < uid1282938542166_map['enemy_cnt'];e++)
    {
      if(uid1282938542166_map['ego_'+e]) continue;
      var type = uid1282938542166_map['etype_'+e];
      if(type == 'skeleton' && (cyc % 5) == 0)
	uid1282938542166_calc_skeleton(e);
      if(type == 'ghost' && (cyc % 5) == 0)
	uid1282938542166_calc_ghost(e);
      if(type == 'cloud' && (cyc % 7) == 0)
	uid1282938542166_calc_cloud(e);

      uid1282938542166_moveMapCell(uid1282938542166_map['ex_'+e],uid1282938542166_map['ey_'+e],'enemy_'+e,uid1282938542166_map['size'],uid1282938542166_map['size']);
    }
  /* calc conflicts */
  uid1282938542166_calculateConflicts('cyclgame');
  setTimeout("uid1282938542166_cyclGame()",100);
}

function uid1282938542166_calculateConflicts(loc)
{
  if(uid1282938542166_map['gameover']) return;
  var panz = 0;
  var ganz = 0;
  for(var pl = 0;pl < uid1282938542166_anz_player;pl++)
    {
      if(uid1282938542166_map['pgo_'+pl]) continue;
      panz++;
      var x  = uid1282938542166_map['playerx_'+pl];
      var y  = uid1282938542166_map['playery_'+pl];
      switch(uid1282938542166_map[x+'_'+y].charAt(0))
	{
	case 'F':
	  //kill the player
	  uid1282938542166_map['pgo_'+pl] = 1;
	  uid1282938542166_removeCell('player_'+pl);
	  //uid1282938542166_alarm('Game over for player '+pl);
	  break;
	case 'G':
	  //put player gimics
	  switch(uid1282938542166_map[x+'_'+y].charAt(1))
	    {
	    case 'b':uid1282938542166_map['playerbomb_'+pl]++; break;
	    case 'f':uid1282938542166_map['playerrange_'+pl]++; break;
	    case 'P':uid1282938542166_map['playerpoint_'+pl] = parseInt(uid1282938542166_map['playerpoint_'+pl]) + 10; break;
	    case 'p':uid1282938542166_map['playerpoint_'+pl] = parseInt(uid1282938542166_map['playerpoint_'+pl]) + 1;break;
	    }
	  uid1282938542166_map[x+'_'+y] = '.';
	  uid1282938542166_removeCell('gimic'+x+'_'+y);
	  break;
	}
    }
  if(panz == 0)
    {
      uid1282938542166_map['gameover'] = true;
      uid1282938542166_GameOver();
      return;
    }
  
  uid1282938542166_map['anzskeleton'] = 0;
  for(var e = 0;e < uid1282938542166_map['enemy_cnt'];e++)
    {
      if(uid1282938542166_map['ego_'+e]) continue;
      if(uid1282938542166_map['etype_'+e] == 'skeleton') 
	uid1282938542166_map['anzskeleton'] = uid1282938542166_map['anzskeleton'] + 1;
      
      ganz++;
      var x = uid1282938542166_map['ex_'+e];
      var y = uid1282938542166_map['ey_'+e];
      switch(uid1282938542166_map[x+'_'+y].charAt(0))
	{
	case 'F':
	  //kill the player
	  uid1282938542166_map['ego_'+e] = 1;
	  uid1282938542166_removeCell('enemy_'+e);
	  //uid1282938542166_alarm('Game over for ghost '+e);
	  break;
	case 'G':
	  //remove gimics
	  uid1282938542166_removeCell('gimic'+x+'_'+y);
	  uid1282938542166_map[x+'_'+y] = '.';
	  break;
	}
      var type = uid1282938542166_map['etype_'+e];
      for(var pl = 0;pl < uid1282938542166_anz_player;pl++)
	{
	  if(uid1282938542166_map['pgo_'+pl]) continue;
	  var px  = uid1282938542166_map['playerx_'+pl];
	  var py  = uid1282938542166_map['playery_'+pl];
	  if(x != px) continue;
	  if(y != py) continue;
	  //   if(type == 'ghost'
	  // 	   || type == 'cloud')
	  //   {
	  uid1282938542166_map['pgo_'+pl] = 1;
	  uid1282938542166_removeCell('player_'+pl);
	  // } 
	}
    }
  if(ganz == 0)
    {
      for(var pl = 0;pl < uid1282938542166_anz_player;pl++)
	{
	  if(uid1282938542166_map['pgo_'+pl]) continue;
	  uid1282938542166_map['gameover'] = true;
	  uid1282938542166_GameOver();
	  return;
	}
    }
}
function uid1282938542166_GameOver()
{
  //status senden
  var zus = '';
  for(var pl = 0;pl < uid1282938542166_anz_player;pl++)
    {
      var stat = 'death';
      if(!uid1282938542166_map['pgo_'+pl]) 
	stat = ''+uid1282938542166_map['playerpoint_'+pl];
      zus += '&player'+pl+'='+stat;
    }
  zus += '&duration='+(new Date().getTime() - uid1282938542166_map['starttime']);

  if(!uid1282938542166_map['cksum']) //nur das erste mal berechnen
    {
      uid1282938542166_map['cksum'] =  uid1282938542166_map['starttime']%999999;
    }  
  zus += '&cksum='+ uid1282938542166_map['cksum'];
  uid1282938542166_oscar_get('gameover',zus);
  uid1282938542166_stopSound();
}

function uid1282938542166_nextLevel()
{
  //level = l;
  var main = uid1282938542166_getElementById('main');
  if(main != null)
    main.parentNode.removeChild(main);
  uid1282938542166_map = new Object();
  keyevent = new Object();
  uid1282938542166_oscar_get('frame',null);
}

function uid1282938542166_keyDown(evt)
{  
  var kc = -1;
  try
    {
      if(!evt)
	evt = window.event;
      kc = evt.keyCode != 0 ? evt.keyCode : evt.charCode;
    } 
  catch(exc)
    {
      uid1282938542166_alarm("keyPress"+exc);
    } 
  if(kc > 0)
    uid1282938542166_keyEvent('down',kc);
}

function uid1282938542166_keyUp(evt)
{  
  var kc = -1;
  try
    {
      if(!evt)
	evt = window.event;
      kc = evt.keyCode != 0 ? evt.keyCode : evt.charCode;
    } 
  catch(exc)
    {
      uid1282938542166_alarm("keyPress"+exc);
    } 
  if(kc > 0)
    {
      if(uid1282938542166_keyid)
	{
	  uid1282938542166_setKey(uid1282938542166_keyid,kc);
	}
      else
	{
	  uid1282938542166_keyEvent('up',kc);
	}
    }
}

function uid1282938542166_cyclKey(id,kc)
{
  if(keyevent[kc] != id) return;
  uid1282938542166_keyAction(kc);
  setTimeout("uid1282938542166_cyclKey("+id+","+kc+")",80);
}
var keycnt = 0; 
var keyevent = new Object();
function uid1282938542166_keyEvent(type,kc)
{
  if(uid1282938542166_map['gameover']) return;
  if(type == 'down')
    {
      //start new keypresslistener
      if(!keyevent[kc]) keyevent[kc] = 0;
      if(keyevent[kc] != 0) return;
      keycnt++;
      keyevent[kc] = keycnt;
      uid1282938542166_keyAction(kc);
      setTimeout("uid1282938542166_cyclKey("+keycnt+","+kc+")",130);
    }
  if(type == 'up')
    {
      keyevent[kc] = 0;
    }
}



function uid1282938542166_keyAction(kc)
{
  var xd   = 0;
  var yd   = 0;
  var pl   = 99;
  var func = 0;

  var key = uid1282938542166_map['key_'+kc];
  if(!key)
    {
      //uid1282938542166_alarm("keyAction "+kc);
      uid1282938542166_map['key_'+kc] = "99:0:0:0";
      return;
    }
  else
    {
      var p = key.split(':');
      if(p.length == 4)
	{
	  pl   = parseInt(p[0]);
	  func = parseInt(p[1]);
	  xd   = parseInt(p[2]);
	  yd   = parseInt(p[3]);
	}
      else
	{
	  alarm(key);
	}
    }
  
  if(0 <= pl && pl < uid1282938542166_anz_player)
    {
      if(uid1282938542166_map['pgo'+pl]) return;
      uid1282938542166_movePlayer(pl,xd,yd,func);
    }
}


//Sound
function uid1282938542166_startSound()
{
  
  if(!uid1282938542166_sound_on) return;

  soundManager.play('musik');
}
function uid1282938542166_stopSound()
{
  soundManager.stopAll();
}



function uid1282938542166_makesound()
{
  
  if(!uid1282938542166_sound_on) return;

//   var soundstr = "/sound/emff_standard.swf?src=/sound/explosion.mp3";
//   soundstr = soundstr+"&amp;autostart=yes";
  
//   var flashplayer = uid1282938542166_getElementById("player");
//   var obj=
//     "<object type='application/x-shockwave-flash' " +
//     " data='" + soundstr + "'" +
//     " width='1' height='1'>" +
//     " <param name='movie'   value='"+ soundstr + "'>" +
//     " <param name='quality' value='high'>" +
//     "</object>";
//   flashplayer.innerHTML = obj;
  soundManager.play('explosion');

}

//Start
uid1282938542166_oscar_get('frame',null);
