/*
* $Id: browser.js 178 2010-08-10 19:33:41Z victor $
*/

tdWorld = {};

tdWorld.browser = {

    init: function()
    {
        document.onkeydown = function(e) { return tdWorld.browser.keyHandler(e); };
        document.onkeyup   = function()  { tdWorld.browser.inKeyHandler = false; };
    },
    
    keyHandlers: [],
    inKeyHandler: false,
    
    addKeyHandler: function(func,obj)
    {
        this.keyHandlers.push( { f: func, o: obj } );
    },
    
    removeKeyHandler: function(func)
    {
        var khs = this.keyHandlers;
        
        for( var i = 0; i < khs.length; i++ )
        {
            var kh = khs[i];
            
            if( func == kh.f )
            {
                khs.splice(i,1);
                return;
            }
        }
    },
    
    keyHandler: function(e)
    {
        var keynum;        
        
        if( this.inKeyHandler )
            return true;
        
        if(window.event) // some browers
        {
            keynum = e.keyCode
        }
        else if(e.which) // other browsers
        {
            keynum = e.which
        }
        
        var khs = this.keyHandlers,
            ev = { keyCode: keynum };
        
        var ret = true;
        for( var i = 0; i < khs.length; i++ )
        {
            var kh = khs[i],
                obj = kh.o || document;
                
            ret = kh.f.apply( obj, [ev] ) && ret;
        }
        
        return ret;
    },
    
    fetchScript: function(url,onload,obj)
    {
        var headID = document.getElementsByTagName("head")[0];         
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.onload = function() { onload.apply(obj) };
        newScript.src = url;
        headID.appendChild(newScript);        
    }
};
