engine.input.mouseposEvent=function(event,ob)
{
	 //    console.info('if ob',event,ob); 
	var pos=engine.object.getPos($(ob)); 

    engine.input.mousepos(event,pos[0],pos[1]);
}
engine.input.mousepos=function(event,xadd,yadd)
{
   
  var x,y=0;
  if (!event)
  {
  event=window.event;	
  }	
  if(!event)
    return;
  if (engine.info.browser=='IE')                     /* MSIE: ------- */
  {

    engine.input.mouse['x']=event.clientX;
    engine.input.mouse['y']=event.clientY;
    if (document.documentElement && document.documentElement.scrollTop)
  	// Explorer 6 Strict
    {
    	x = document.documentElement.scrollLeft;
    	y = document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
    	x = document.body.scrollLeft;
    	y = document.body.scrollTop;
    }  
  engine.input.mouse['x']+=x;
  engine.input.mouse['y']+=y;      
  } 
  else                                    /* Netscape: --- */
  {
   engine.input.mouse['x']=event.pageX;
   engine.input.mouse['y']=event.pageY;
   
  } 
engine.input.mouse['x']+=xadd || 0;
engine.input.mouse['y']+=yadd || 0;   
/*
engine.input.point.style.left=engine.input.mouse['x']-4+'px';
engine.input.point.style.top =engine.input.mouse['y']-4+'px';
*/
if(engine.draganddrop2.mousemove)
    engine.draganddrop2.mousemove();
}
engine.input.updateMoveMouse=function(event)
{
  engine.input.mousepos(event);
  
}

engine.input.updateKeyUp=function(event)
{
  if (!event)
  {
  event=window.event;	
  }	
  if(event)
  {
    engine.input.key[event.keyCode]=0;
  }
  engine.input.doCombinations();
}
engine.input.updateKeyDown=function(event)
{
  if (!event)
  {
  event=window.event;	
  }	
  if(event)
  {
    engine.input.key[event.keyCode]=1;
  }
  engine.input.doCombinations();
}
engine.input.updateClickMouse= function(event)
{

}
engine.input.combinations=new Array();
engine.input.removeCombination=function(id)
{
  engine.input.combinations.splice(id,1);
}
engine.input.doCombinations=function()
{
  for(var i=0;i<engine.input.combinations.length;i++)
  {
    var comb=engine.input.combinations[i];
    var cTrue=1;
    for(var k=0;k<comb.keys.length;k++)
    {
      if(!engine.input.key[comb.keys[k]])
      {
        cTrue=0;
        break;
      }
    }
    if(!cTrue)
      comb.done=0;
    else
    if(comb.done==0)
    {
      comb.func();
      comb.done=1;    
    }
  }
}
engine.input.getAscii=function(value)
{
  if(value.length==1)
  {
    return value.toUpperCase().charCodeAt(0);
  }
  else
  {
    switch(value)
    {
      case 'strg':
        return  17;
      break;
    }
  }
}
engine.input.addCombination=function(keys,func)
{
  var buttons=new Array();
    for(var k=0;k<keys.length;k++)
    {
      buttons[k]=engine.input.getAscii(keys[k]);
    }
    
  var id=engine.input.combinations.length;
  engine.input.combinations[id]=new Array();
  engine.input.combinations[id].keys=buttons;
  engine.input.combinations[id].func=func;
  engine.input.combinations[id].done=0;
  return id;  
}

engine.input.updateDownMouse= function(event)
{
  if (!event)
  {
  event=window.event;	
  }	
  engine.input.mouse.mousekey[event.button-(engine.info.browser=='IE'?1:0)]=1;
engine.input.mouse.pressed=1;
}
engine.input.updateUpMouse= function(event)
{
  if (!event)
  {
  event=window.event;	
  }	
  engine.input.mouse.mousekey[0]=0;
  engine.input.mouse.mousekey[1]=0;
engine.input.mouse.pressed=0;

}
engine.input.Frames=new Array();
engine.input.checkFrame=function() //fertig machen
{
      /*
var frames=document.getElementsByTagName('iframe');
      console.info('num frames',frames.length);
for(var i=0;i<frames.length;i++)
{
    
  if( !engine.input.Frames.isIn(frames[i]))
  {
    var id=engine.input.Frames.length; 
    engine.input.Frames[id]=frames[i];
    engine.object.addEvent(frames[i].contentWindow,'mousemove',function(event){var pos=engine.object.getPos(engine.input.Frames[id]); engine.input.mousepos(event,pos[0],pos[1]); });
  }
}
var frames=document.getElementsByTagName('frame');

for(var i=0;i<frames.length;i++)
{
  if(!engine.input.Frames.isIn(frames[i]))
  {
    var id=engine.input.Frames.length;
    engine.input.Frames[id]=frames[i];
    engine.object.addEvent(frames[i].contentWindow,'mousemove',function(event){ var pos=engine.object.getPos(engine.input.Frames[id]); engine.input.mousepos(event,pos[0],pos[1]); });
  
  }
}
setTimeout('engine.input.checkFrame()',1000);*/
}
engine.input.init=function()
{/*
engine.input.point=document.createElement('div');
engine.input.point.style.border='2px solid red';
engine.input.point.style.position='absolute';
engine.input.point.style.width='6px';
engine.input.point.style.height='6px';
document.body.insertBefore(engine.input.point,document.body.childNodes[0]);
*/

  if (document.all)         // IE, Konqueror, Opera
  {
        document.onmousemove=engine.input.updateMoveMouse;
	      document.onkeydown   =engine.input.updateKeyDown;
	      document.onkeyup     =engine.input.updateKeyUp;
	      document.onmousedown =engine.input.updateDownMouse;
	      document.onmouseup   =engine.input.updateUpMouse;	      

  }
  else               
  {	
    if (typeof(document.addEventListener)=="function")
	  {

      document.addEventListener("mousemove",engine.input.updateMoveMouse,true);
      document.addEventListener("click",engine.input.updateClickMouse,true);
      document.addEventListener("mouseup",engine.input.updateUpMouse,true);      
      document.addEventListener("mousedown",engine.input.updateDownMouse,true);           
      document.addEventListener("keydown",engine.input.updateKeyDown,true);
      document.addEventListener("keyup",engine.input.updateKeyUp,true);
    }
    else
    {
	    if (document.leer)            
	    {
	      window.captureEvents(Event.MOUSEMOVE);
	      window.captureEvents(Event.KEYUP);
	      window.captureEvents(Event.KEYDOWN);
	      window.captureEvents(Event.MOUSEUP);
	      window.captureEvents(Event.MOUSEDOWN); 	
                        	      
	      window.onmousemove =engine.input.updateMoveMouse;
	      window.onkeydown   =engine.input.updateKeyDown;
	      window.onkeyup     =engine.input.updateKeyUp;
	      window.onmousedown =engine.input.updateDownMouse;
	      window.onmouseup   =engine.input.updateUpMouse;	      

                      	      
	    }
	    else                  // browser kanns nicht
	      return false;
    } 
  }

   

}
engine.input.start=function()
{
      engine.input.removeSelectionObject=document.createElement('input');
  engine.input.removeSelectionObject.style.position='absolute';
  engine.input.removeSelectionObject.style.left='-300px';
  engine.input.removeSelectionObject.style.top='0px';  
  document.body.insertBefore(engine.input.removeSelectionObject, document.body.childNodes[0]);
}

engine.input.removeSelection=function()
{
     var sel = null;
  		if(window.getSelection)
      {
  			sel = window.getSelection();
  		}
  		else if (document.getSelection) 
      {
  			sel = document.getSelection();
  		}
  		else if (document.selection) 
      {
  			sel = document.selection;
  		}
   
  	if(sel.removeAllRanges)	
    sel.removeAllRanges();
    else
    {
    	if(engine.input.removeSelectionObject)
    	{
	    	engine.input.removeSelectionObject.style.top=engine.input.mouse.y+'px';    
	        engine.input.removeSelectionObject.focus();      
    	}
    } 

    
}
engine.input.mouse=new Array();
engine.input.mouse.mousekey=new Array();
engine.input.key=new Array();
engine.start.addFunc(engine.input.init);
engine.input.init();

