// auto suggest f. Volltext - Suche 

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
   if (window.XMLHttpRequest) {
			return new XMLHttpRequest();
   } else if(window.ActiveXObject) {
			return new ActiveXObject("Microsoft.XMLHTTP");
   } else {
			alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
   }
}

var av_s ={
	searchReq:getXmlHttpRequestObject(), 
	place_suggest:false, 
	searchinput:"top_volltextsuche", 
	comefrom:"", 
	writekat2:"", 
	Tastencode_alt:0, 
	Tastencode:0, 
	suggestActive:false, 
	suggestStr:'', 
	suggestActiveId:0, 

	searchSuggest:function(mehr) {
		if(mehr != '1') {
			if(window.event) {
				evt = window.event;
				var Taste = evt.keyCode;
			} 
		} else {
			if(mehr) {
				var Taste = mehr.which;
			}
			if(Taste == 40 ||  Taste == 38 || Taste == 13 ) {
				return;
			}
			mehr = '';
		}
		if (!av_s.suggestActive) {
			if (av_s.searchReq.readyState == 4 || av_s.searchReq.readyState == 0) {
			    var str =  (document.getElementById(av_s.searchinput).value);
			    if(str != '') {
				av_s.suggestActive = true;
				av_s.searchReq.open("GET", '/wn05iframe/av_suggest.php?q=' + str +'&more='+mehr, true);
				av_s.searchReq.onreadystatechange = av_s_handleSearchSuggest;
				av_s.searchReq.send(null);
			    } else {
				document.getElementById('avs_search_suggest_rahmen').style.display = "none";
			    }
			  
			}
		}
	}, 
	searchSuggestKey:function(event) {
	       if(window.event) {
        	  var evt = window.event;
	          av_s.Tastencode = evt.keyCode;
	       } else {
	          if(event) {
	              av_s.Tastencode = event.which;
	          }
	       }
	       if(av_s.Tastencode == 40) {
        	  av_s.suggestActiveId = av_s.suggestActiveId + 1;
	       }
	       if(av_s.Tastencode == 38) {
	          if(av_s.suggestActiveId > 0) {
	             av_s.suggestActiveId = av_s.suggestActiveId - 1;
	          }
	       }
	       if(av_s.Tastencode == 13) {
	          if(document.getElementById('avs_suggest_tbody')) {
	             var ch = document.getElementById('avs_suggest_tbody').childNodes
	          } else {
	             return true;
	          }
	          if(ch.length> 0) {
        	     if(ch[av_s.suggestActiveId].firstChild.innerHTML.indexOf('mehr...') >0 ) {
	                av_s.searchSuggest(1);
	                av_s.Tastencode_alt = 0;
	                return false;
	             } else {
        	        var t =  ch[av_s.suggestActiveId].firstChild.innerHTML;
	                var t2 = ch[av_s.suggestActiveId].getAttribute("param");
	                av_s.setSearch(t2,'');
	                var r = av_s.Tastencode_alt == av_s.Tastencode;
	                av_s.Tastencode_alt = 13;
	                return r;
	             }
	          }
	          av_s.Tastencode_alt = 13;
	          return true;
	       } else {
	          av_s.Tastencode_alt = 0;
	       }
	       if(av_s.Tastencode == 38 || av_s.Tastencode == 40) {
	         if(document.getElementById('avs_suggest_tbody')) {
	           var ch = document.getElementById('avs_suggest_tbody').childNodes

	          if(av_s.suggestActiveId >= ch.length) av_s.suggestActiveId = ch.length -1
	          for(var i = 0; i < ch.length; i++) {
	          if(i == av_s.suggestActiveId) {
	             ch[i].className = "suggest_link suggest_aktiv";
	          } else {
	             ch[i].className = "suggest_link";
	          }
	           }
	          ch[av_s.suggestActiveId].scrollIntoView(false);
	              } else {
	          return false;
	         }
	       } else {
	          av_s.suggestActiveId = 0;
	       }
	       return true;
	}, 

	//Called when the AJAX response is returned.

	handleSearchSuggest:function() {
          if (av_s.searchReq.readyState == 4) {
            av_s.suggestActive = false;
            if(av_s.Tastencode != 40 && av_s.Tastencode != 38 && av_s.Tastencode_alt != 13  ) {
	          var ss = document.getElementById('avs_search_suggest')
	          var ssa = document.getElementById('avs_search_suggest_rahmen');
	          var str = av_s.searchReq.responseText.split("\n");
	          ssa.style.display="block";
	          if(isIE() ) {
        	     if(document.FM) {
	        	     document.FM.WAS.style.visibility = 'hidden';
		             document.FM.TYP.style.visibility = 'hidden';
        	     }
        	  }
	          av_s.placesuggest_final();

        	  if(str.length > 22) {
	             ssa.style.overflow='auto';
	             ssa.style.overflowX='hidden';
	             ssa.style.height='400px';
	             ssa.style.width='280px';
	             ssa.style.border='1px solid black';
	             ss.style.border='1px none black';
	          } else {
	             ss.style.border='1px solid black';
	             ssa.style.border='1px none black';
	             ssa.style.overflow='visible';
	          }
	          if(str.length > 22) {
	             var sb = "255px";
	          } else {
	             var sb = "279px";
        	  }
	          var ss_innerHTML ='<table id="avs_suggest_table" cellpadding=0 cellspacing=0 border=0 style="z-index:900;padding:0px; margin:0px;width:'+sb+'" >';
	          ss_innerHTML +='<tbody id="avs_suggest_tbody">';
	          for(i=0; i < str.length - 1; i++) {
        	     //Build our element string.  This is cleaner using the DOM, but
	             //IE doesn't support dynamically added attributes.
	             var data = str[i].split("\t");
			 var suggest ='<tr onmouseover="javascript:av_s.suggestOver(this);" ';
		             suggest += 'onmouseout="javascript:av_s.suggestOut(this);" ';
        		     suggest += 'onclick="javascript:av_s.setSearch(\''+data[0]+'\',\''+'\');" ';
		             var cl = (av_s.suggestActiveId == i) ? cl = "av_s.suggest_aktiv" : cl = '';
		             suggest += 'class="suggest_link '+cl+'" param="'+data[0]+'"><td param="'+data[0]+'">'+data[0]+" "+'</td>';
		             suggest += '</tr>';
		             ss_innerHTML += suggest ;
	          }
        	  if(str.length == 22) {
	             var cl = (av_s.suggestActiveId == i) ? cl = "av_s.suggest_aktiv" : cl = '';
	             ss_innerHTML += '<tr class="suggest_link '+cl+'" ><td colspan=2><a href="#" onclick="av_s.searchSuggest(1); return false;">&nbsp;&nbsp;mehr...</a></td></tr>';
	          }

        	  ss.innerHTML = ss_innerHTML + "</tbody></table>";
	          av_s.suggestActive = false;
            }
       	  }
	}, 
	suggestOver: function (div_value) {
		div_value.className = 'suggest_link_over';
	}, 
	suggestOut: function (div_value) { 
		 div_value.className = 'suggest_link';
	}, 
	setSearch: function(value,idl) {
		// if(writekat2 != "") {
		//	document.getElementById(writekat2).value = idl;
		//	document.getElementById(searchinput).value = value;
		//} else {
		document.getElementById(av_s.searchinput) .value = value;
		//}
		document.getElementById('avs_search_suggest_rahmen').style.display = "none";
		document.getElementById('avs_search_suggest').innerHTML = '';
		av_s.closesuggest();
	}, 

	placesuggest_final: function () {
	     if(av_s.place_suggest) {
		var sg = document.getElementById("avs_search_suggest_rahmen");
		var left = i_getLeft(document.getElementById(av_s.searchinput));
		var top = i_getTop(document.getElementById(av_s.searchinput))+17;
		sg.style.top = top + "px";
		sg.style.left = left + "px";
     	     }
	     av_s.place_suggest = false;
	}, 
	closesuggest: function() {
		if(document.getElementById('avs_search_suggest_rahmen').style.display != "none") {
	          document.getElementById('avs_search_suggest_rahmen').style.display = "none";
	    }
	    if(isIE()) {
	        if(document.FM) {
	          document.FM.WAS.style.visibility = 'visible';
	          document.FM.TYP.style.visibility = 'visible';
	        }
	    }
	}, 
	i_getLeft: function(ireds_l) {
		if (ireds_l.offsetParent) return (ireds_l.offsetLeft + av_s.i_getLeft(ireds_l.offsetParent));
		else return (ireds_l.offsetLeft);
	},
	i_getTop:function (ireds_l) {
		if (ireds_l.offsetParent) return (ireds_l.offsetTop + av_s.i_getTop(ireds_l.offsetParent)); 
		else return (ireds_l.offsetTop);
	}, 
	init: function() {
		if (document.attachEvent) { 
			document.attachEvent("onclick", av_s.closesuggest);
		} else if (document.addEventListener) { // Gecko / W3C
			document.addEventListener("click",av_s.closesuggest,true);
		} else {
			document["on" + evname] = func;
		}
	}
} 


av_s.init(); 

function isIE() {
    return (navigator.appName.indexOf("Microsoft")!=-1);
}

function av_s_handleSearchSuggest() {
	av_s.handleSearchSuggest(); 
}
