var http=false, f=false, wort=[];

function XMLHTTPObject(){
    var xmlHttp = false;
            
    // try to create a new instance of the xmlhttprequest object        
    try
    {
        // Internet Explorer
        if( window.ActiveXObject )
        {
            for( var i = 5; i; i-- )
            {
                try
                {
                    // loading of a newer version of msxml dll (msxml3 - msxml5) failed
                    // use fallback solution
                    // old style msxml version independent, deprecated
                    if( i == 2 )
                    {
                        xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );    
                    }
                    // try to use the latest msxml dll
                    else
                    {
                        
                        xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                    }
                    break;
                }
                catch( excNotLoadable )
                {                        
                    xmlHttp = false;
                }
            }
        }
        // Mozilla, Opera und Safari
        else if( window.XMLHttpRequest )
        {
            xmlHttp = new XMLHttpRequest();
        }
    }
    // loading of xmlhttp object failed
    catch( excNotLoadable )
    {
        xmlHttp = false;
    }
    return xmlHttp ;
}

function displayTags(){

 if(document.forms.umfrageformular.titel.value.length<1){
  alert('Bitte "Titel der Umfrage" eingeben!');
  setTimeout('document.forms.umfrageformular.titel.focus()',100);
  return;
 }
 if(document.forms.umfrageformular.frage.value.length<1){
  alert('Bitte "Ihre Frage" eingeben!');
  setTimeout('document.forms.umfrageformular.frage.focus()',100);
  return;
 }

 http=XMLHTTPObject();//Create the XMLHttpRequest Object.
 var para=document.getElementById('findTags');//or whatever ID you gave your element.
 para.innerHTML='<label>Vorschlag:</label> Moment bitte ...';
 setTimeout("sndPostReq('tags.php','umfrageformular')",0);
}

function sndPostReq(url,formname){
 if(!f&&http){
  var fields=[];
  if(formname){
   var ajax=formname;
  }
  for(var x=0;x<eval("document."+ajax+".elements.length");x++){//loop through form elements and retrieve field NAMEs and Values
   eval("fields.push(document."+ajax+".elements[x].name+'='+document."+ajax+".elements[x].value)");//join them into a string.
  }
  elem='errors';
  var sendf=fields.join('&');//sendf looks like "username=myusername&password=mypass"
  http.open("POST",url,true);
  http.onreadystatechange=processResponse;
  http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  http.send(sendf);
  f=true;
 }
}

function processResponse(){
 if(http.readyState==4){
  if(http.status==200){
   document.onkeyup=updateTags;
   var xmldoc=http.responseXML;
   tags=http.responseXML.getElementsByTagName('tag');
   wort=[];
   for(var i=0;i<tags.length;i++){
	wort[i]=tags[i].firstChild.nodeValue;
   }
   updateTags();
   f=false;//reactivate the AJAX function
  }else{
   var results="Leider ist ein Fehler aufgetreten, bitte benachrichtigen Sie den Webmaster.";
   var para=document.getElementById('findTags');
   para.innerHTML=results;
  }
 }
}

String.prototype.trim=function(){ return this.replace(/^\s+|\s+$/g,'') };

function swap(tag){
 myForm=document.umfrageformular;
 var tagArray=myForm.tags.value.trim().split(' '),present=false,t,tl=tag.toLowerCase();
 if(tagArray[0].trim()=='') tagArray.splice(0,1);
 for(t=0;t<tagArray.length;t++){
  if(tagArray[t].toLowerCase()==tl){tagArray.splice(t,1);present=true;t-=1}
 }
 if(!present){tagArray.push(tag)}
 var content=tagArray.join(' ');
 myForm.tags.value=(content.length>1)?content+' ':content;
 updateTags();
 focusTo(myForm.tags);
}

var range=0;
function focusTo(obj,selectFrom){
	if(typeof selectFrom=='undefined') selectFrom=obj.value.length;
	if(obj.createTextRange){//ie+opera
		if(range==0) range=obj.createTextRange();
		range.moveEnd("character",obj.value.length);
		range.moveStart("character",selectFrom);
		//obj.select();
		//range.select();
		setTimeout('range.select()',10);
	}else if(obj.setSelectionRange){//fifo
		obj.select();
		obj.setSelectionRange(selectFrom,obj.value.length);
	}else{//safari
		obj.blur();
	}
}

function updateTags(){
 var tagArray=document.umfrageformular.tags.value.toLowerCase().split(' ');
 if(tagArray[0].trim()=='') tagArray.splice(0,1);
 var vorschlag='<label>Vorschlag:</label> <span id="suggest">';
 if(wort.length<1){
  vorschlag+='??? ';
 }else if(wort.length<2){
  vorschlag+='<strong>'+wort[0]+'</strong> ';
 }else{
  for(var i=1;i<wort.length;i++){
   for(var j=0;j<tagArray.length;j++){
    var present=false;
    if(tagArray[j]==wort[i]){
     vorschlag+='<a class="hl" href="javascript:swap(\''+wort[i].replace(/"/g,'\\"')+'\')" title="Suchwort l&ouml;schmen">'+wort[i]+'</a> ';
     j=tagArray.length;
     present=true;
    }
   }
   if(!present){
    vorschlag+='<a href="javascript:swap(\''+wort[i].replace(/"/g,'\\"')+'\')" title="Suchwort &uuml;bernehmen">'+wort[i]+'</a> ';
   }
  }
 }
 if(!f){
  vorschlag+='<a href="javascript:displayTags()" title="Suchworte vorschlagen">?</a>';
 }
 vorschlag+='</span>&nbsp;';
 var para=document.getElementById('findTags');//or whatever ID you gave your element.
 para.innerHTML=vorschlag;
}


