/*
 *function ueberwacht die Tasten eingabe im Fall 
 *von tasten enter und down wird der Naechste Element fokussiert
 *
 **/
function lookup(id,whatKind,evt) {
   	var keycode=evt.wich || evt.keyCode;
    if(keycode==13 || keycode==40){
        focusNextIn(40);
        return false;
    }else{
        if(keycode==40||keycode==38){
            setTimeout("focusNextIn('"+keycode+"')",50);
        }else{
            setTimeout("lookupIn('"+id+"','"+whatKind+"')",50);
        }        
     return false;
    }
} // lookup

function lookupIn(id,whatKind){
    //id ist wichtig da sonst alle elemente uebergeben werden
    var inputField=document.getElementById(id);
    var inputString=inputField.value;
    if(inputString.length == 0) {
        $("#containerForRpc").html('');
    }else{
        var a=function(data){
        if(data.length >0) {
            $("#containerForRpc").html(data);
            var rpc=document.getElementById("rpc");
            rpc.style.width = inputField.style.width;
            rpc.onchange    = function(){fill(inputField);};
            rpc.onkeypress  = function(event){
    
            fillOnEnter(event,rpc);};
            rpc.onclick = function(){
                fill(inputField); 
                $("#containerForRpc").html('');
            };
        }else{
            $("#containerForRpc").html('');
        }
       };
       var rpcFile;
       if(whatKind.search(/admin/)!=-1){
          rpcFile="../utilities/rpc.php";
       }else{
          rpcFile="./utilities/rpc.php";
       }
       
        $.post(rpcFile, {what: whatKind, queryString: ""+inputString+""}, a);
      }
}

function focusNext(evt){
	var keycode=evt.wich || evt.keyCode;
    setTimeout("focusNextIn('"+keycode+"')",50);
    return false;


}
function focusNextIn(keycode){
    var m=document.activeElement;
    if(keycode==40||keycode==13){
        for(i=0;i<document.forms[1].elements.length;i++){
            if(document.forms[1].elements[i]==m){
                document.forms[1].elements[i+1].focus();
            }
        }
    }
	if(keycode==38){
        for(i=0;i<document.forms[1].elements.length;i++){
            if(document.forms[1].elements[i]==m){
                document.forms[1].elements[i-1].focus();
            }
        }
    }
}

function fill(inputElementToFill){
     var rpc=document.getElementById("rpc");
     inputElementToFill.value=rpc.options[rpc.selectedIndex].value;     
 }

function fillOnEnter(event,rpc){
    
   	var keycode=event.wich || event.keyCode;
    if(keycode==13){
        rpc.click();
    }
    
}


function doContainer(el){
    var cont;
    if(document.getElementById('containerForRpc')==null){
        cont=document.createElement('div');
        cont.setAttribute("id", "containerForRpc");
        cont.innerHTML="";
        el.parentNode.appendChild(cont);
    }else{
        
        cont=document.getElementById("containerForRpc");
        cont.innerHTML="";
        el.parentNode.appendChild(cont);
    }
}

/*
 * Funktion betrifft alle inputfelder die als classe autoSuggest haben
 **/
$(function(){
    var a=$('input.autoSuggest');
    a.bind("focus", function(){doContainer(this);} );
    a.bind("keyup", 
        function(e){
            lookup(this.getAttribute('id'),this.getAttribute("class"),e);
        }
    );
});


/*funktonen mit fallback fuer IE
 **/
function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() {obj["e"+type+fn]( window.event );}
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

/*funktonen mit fallback fuer IE
 **/
function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}


