
var Address_Request = null;

function query_address(address)
{
    if(Address_Request)
    {
	if(Address_Request.readyState < 4)
	    return;
	Address_Request.abort();
	delete Address_Request;
    }
    Address_Request = getXMLHTTPRequest();
    
    var query = "address.php" + "?a=" + address + "&kontor_id=" + kontor_id;
        
    Address_Request.open("GET", query , true);
    
    Address_Request.onreadystatechange = got_address;

    Address_Request.send(null);
}

var lastaddr = null;
function got_address()
{
    try {
    if(Address_Request && Address_Request.readyState == 4 && Address_Request.status == 200 && Address_Request.responseText)
    {
	lastaddr=Address_Request.responseText;
	set_addr(Address_Request.responseText);
	query_ort_by_addr(Address_Request.responseText)
    }
    } catch(e) {}
}

function set_addr(text)
{
	var obj = document.getElementById("txtdata");
	// change /;/gi to "," ??
	var txt = obj.value.replace(/;/gi, ",");
	elm = txt.split(",");
	txt = elm.pop();
	txt = txt.replace(/^\s*/, "");

	if (txt.length == 0)
	{
	    return;
	}

	var ini = "";
	if (obj.createTextRange)
	{
   	    var rng = document.selection.createRange();
  	    if (rng.parentElement() == obj)
	    {
   		elm = rng.text;
  		ini = obj.value.lastIndexOf(elm);
  	    }
	}
	else if (obj.setSelectionRange)
	{
  	    ini = obj.selectionStart;
	}


  	if (text.toLowerCase().indexOf(txt.toLowerCase()) == 0)
	{
   	    obj.value += text.substring(txt.length, text.length);
	}

	if (obj.createTextRange)
	{
	    rng = obj.createTextRange();
  	    rng.moveStart("character", ini);
  	    rng.moveEnd("character", obj.value.length);
  	    rng.select();
	}
	else if (obj.setSelectionRange)
	{
	    // Marks from and to, that will be marked.
	    obj.setSelectionRange(ini, obj.value.length);
	}
}

//var elm;
// Example: <input type="text" name="anyName" onKeyUp="Complete(this, event)">
function CompleteAddress(obj, evt)
{
    if ((!obj) || (!evt))
    {
 	return;
    }

    if (obj.value.length == 0)
    {
  	return;
    }


    // Get the keycode
    var elm = (obj.setSelectionRange) ? evt.which : evt.keyCode;

    // If not a valid char.
    if ((elm < 32) || (elm >= 33 && elm <= 46) || (elm >= 112 && elm <= 123))
    {
  	return;
    }

    if (lastaddr && lastaddr.toLowerCase().indexOf(obj.value.toLowerCase()) == 0)
    {
	set_addr(lastaddr);
	return;
    }
    lastaddr=null;

    if (obj.value.length > 2)
    {
	query_address(obj.value);
    }
}

var Ort_Request = null;

function query_ort(ort)
{
    if(Ort_Request)
    {
	if(Ort_Request.readyState < 4)
	    return;
	Ort_Request.abort();
	delete Ort_Request;
    }
    Ort_Request = getXMLHTTPRequest();
    
    var query = "ort.php" + "?o=" + ort + "&kontor_id="+kontor_id;
        
    Ort_Request.open("GET", query , true);
    
    Ort_Request.onreadystatechange = got_ort;

    Ort_Request.send(null);
}

function query_ort_by_addr(addr)
{
    var obj = document.getElementById("txtort");
    obj.value="";
    lastort=null;
    
    if(Ort_Request)
    {
	Ort_Request.abort();
	delete Ort_Request;
    }
    Ort_Request = getXMLHTTPRequest();
    
    var query = "ort.php" + "?a=" + addr+"&kontor_id="+kontor_id;
        
    Ort_Request.open("GET", query , true);
    
    Ort_Request.onreadystatechange = got_ort_by_addr;

    Ort_Request.send(null);
}

function got_ort_by_addr()
{
    try {
    if(Ort_Request && Ort_Request.readyState == 4 && Ort_Request.status == 200 && Ort_Request.responseText)
    {
	var obj = document.getElementById("txtort");
	obj.value=Ort_Request.responseText;
	lastort=Ort_Request.responseText;
    }
    } catch(e) {}
}

var lastort= null;
function got_ort()
{
    try {
    if(Ort_Request && Ort_Request.readyState == 4 && Ort_Request.status == 200 && Ort_Request.responseText)
    {
	lastort=Ort_Request.responseText;
	set_ort(Ort_Request.responseText);
    }
    } catch(e) {}
    
}

function set_ort(text)
{
	var obj = document.getElementById("txtort");

	// change /;/gi to "," ??
	var txt = obj.value.replace(/;/gi, ",");
	elm = txt.split(",");
	txt = elm.pop();
	txt = txt.replace(/^\s*/, "");

	if (txt.length == 0)
	{
	    obj.value=text;
	    return;
	}

	var ini = "";
	if (obj.createTextRange)
	{
   	    var rng = document.selection.createRange();
  	    if (rng.parentElement() == obj)
	    {
   		elm = rng.text;
  		ini = obj.value.lastIndexOf(elm);
  	    }
	}
	else if (obj.setSelectionRange)
	{
  	    ini = obj.selectionStart;
	}

  	if (text.toLowerCase().indexOf(txt.toLowerCase()) == 0)
	{
   	    obj.value += text.substring(txt.length, text.length);
	}

	if (obj.createTextRange)
	{
	    rng = obj.createTextRange();
  	    rng.moveStart("character", ini);
  	    rng.moveEnd("character", obj.value.length);
  	    rng.select();
	}
	else if (obj.setSelectionRange)
	{
	    // Marks from and to, that will be marked.
	    obj.setSelectionRange(ini, obj.value.length);
	}
}

function CompleteOrt(obj, evt)
{
    if ((!obj) || (!evt))
    {
 	return;
    }

    if (obj.value.length == 0)
    {
  	return;
    }


    // Get the keycode
    var elm = (obj.setSelectionRange) ? evt.which : evt.keyCode;

    // If not a valid char.
    if ((elm < 32) || (elm >= 33 && elm <= 46) || (elm >= 112 && elm <= 123))
    {
  	return;
    }
    
    if (lastort && lastort.toLowerCase().indexOf(obj.value.toLowerCase()) == 0)
    {
	set_ort(lastort);
	return;
    }
    lastort=null;
	
    if (obj.value.length > 2)
    {
	query_ort(obj.value);
    }
}
