//
// $Id: auto_suggest2.js,v 1.2 2010/03/26 15:29:27 ics Exp $
//

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject2() {
   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?");
   }
}

//Our XmlHttpRequest object to get the auto suggest
var comefrom = "";

as2 = {
	searchinput:'', 
	suggestActive:false, 	// ist es aktiv ? 
	searchReq:0, 
	Tastencode:0, 
	Tastencode_alt:0,
	kat: '', plz:'', ort:'', land:'',
	ss_innerHTML: '', 
	ajax_url: '../ajax/hotels/suggest/?search=', 
	many: false, 
// 	plusid: "adr_many_add", 
	onchang: '', 
	current_kat: '', 
	addliste: 'katliste', 
	init_many: function(o,kat,di,list,land) {
		this.addliste = list;
		this.addliste_div = di; 
		this.many = true;
		this.init(o,kat,'','',land)
	}, 
	init_b: function(o,kat,plz,adr,land) {
		this.onchang ='/fa/ajax/isuche10/setregion/?region='; 
		this.init_many(o,kat,plz,adr,land)
	},
	add: function(di,list) {
		// this.addliste = list;
		// this.addliste_div = di; 
		var list = this.addliste; 
		var di = this.addliste_div; 
		var k = this.current_kat; 
		if(document.getElementById(list).value != '') {
 		  var ar = document.getElementById(list).value.split(/,/); 
		  for(var i = 0; i < ar.length; i++) {
			if(ar[i] == k) { return false;} 
			
		  }
		} else {
  		  var ar = []; 
		}
		ar[ar.length] = k; 
		var c = "<div id='att_add_"+k+"'>"+document.getElementById(this.searchinput).value+" <a href='#' onclick='as2.dela("+k+")'>(-)</a></div>"; 
		document.getElementById(di).innerHTML += c; 
		document.getElementById(list).value = ar.join(','); 
		document.getElementById( this.searchinput).value = ''; 
		this.checke(); 
		if(this.onchang != '') {
			immoslider.show_loader(); 
			ajax_call(this.onchang + ar.join(',') ); 
		}
	},
	dela: function(k) {
		// versucht ein Element zu löschen 
		var e = document.getElementById("att_add_"+k); 
		e.parentNode.removeChild(e); 
		var ar = document.getElementById(this.addliste).value.split(/,/);
		var br = []; 
		for(var i = 0; i < ar.length; i++) {
			if(ar[i] != k) {br[br.length] = ar[i]} 
		}
		document.getElementById(this.addliste).value = br.join(',');
		this.checke(); 
		if(this.onchang != '') {
			immoslider.show_loader(); 
			ajax_call(this.onchang + br.join(',') );
		}
	},
	checke: function() {
		// checkt (-)
		var ar =  document.getElementById(this.addliste).value.split(/,/);		
		if(ar.length == 0) { return ; }
		if(ar.length == 1) {
			document.getElementById("att_add_"+ar[0]).childNodes[1].style.display = "none";
		} else {
			document.getElementById("att_add_"+ar[0]).childNodes[1].style.display = "inline";
		}
	
	}, 
	init: function(o,kat,plz,adr,land) {
		if(kat != 'undefined') {this.kat = kat } else {this.kat = ''} 
		if(plz != 'undefined') {this.plz = plz } else {this.plz = ''}
		if(adr != 'undefined') {this.ort = adr } else {this.ort = ''}
		if(land != 'undefined') {this.land = land } else {this.land = ''}
		this.draw_asbox(); 
		this.searchReq = getXmlHttpRequestObject2(); 
		o.onkeydown = as2.searchSuggestKey; 
		o.onkeyup = as2.searchSuggest;
		this.searchinput = o.id; 
		// alert("init:done"); 
	},  
	draw_asbox: function() {
	   var t = '<div id="search_suggest_rahmen" style="border: 1px none black; overflow: visible; display: none;width:width: 279px;position:absolute;top:0px;left:0px">'; 
	   t=t+ '<div style="border: 1px solid black;" id="search_suggest">'; 
           t=t+ '<table id="suggest_table" style="margin: 0px; padding: 0px; width: 279px;" border="0" cellpadding="0" cellspacing="0">'; 
           t=t+ '<tbody id="suggest_tbody"></tbody></table></div></div>'; 
	   if(document.getElementById("search_suggest_rahmen") ) { 
	   } else {
		var w = document.createElement("div");
		w.innerHTML = t; 
		document.getElementsByTagName("body")[0].appendChild(w);
	   }
	},
	searchSuggestKey:function(evt) {
		if(window.event) {
			evt = window.event;
			var Taste = evt.keyCode;
		} else {
			if(evt) {	var Taste = evt.which; }

		}
		as2.closesuggest(); 
	}, 
	searchSuggest:function(mehr) {
	    if(as2.land != '') {
	      if( document.getElementById(as2.land)) {
		var l = document.getElementById(as2.land).value; 
		if(l != '' && l != 'A') { return ""; }
	      }	
	    }
	    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(as2.many) {
		// document.getElementById(as2.plusid).style.display = "none";
	    }
	    if (!as2.suggestActive) {
       		if (as2.searchReq.readyState == 4 || as2.searchReq.readyState == 0) {
	          var str =  (document.getElementById(as2.searchinput).value);
	          if(str != '') {
	             as2.suggestActive = true;
	             as2.searchReq.open("GET", as2.ajax_url + str +'&more='+mehr+comefrom, true); // CHANGE: /wohnen/
	             as2.searchReq.onreadystatechange = as2.handleSearchSuggest;
	             as2.searchReq.send(null);
	          } else {
	             document.getElementById('search_suggest_rahmen').style.display = "none";
	          }
	       }
	    }
	},
	handleSearchSuggest: function() {
	    var str = ""; 
	    if (as2.searchReq.readyState == 4) {
	          as2.suggestActive = false;
	          if(this.Tastencode != 40 && this.Tastencode != 38 && this.Tastencode_alt != 13  ) {
	            var ss = document.getElementById('search_suggest')
	            var ssa = document.getElementById('search_suggest_rahmen');
	            var str = as2.searchReq.responseText.split("\n");
		    if(str[str.length-1] == '') {str.pop()}
	            ssa.style.display="block";
	            // if(isIE() ) {
	            //    if(document.FM) {
	            //    document.FM.WAS.style.visibility = 'hidden';
	            //    document.FM.TYP.style.visibility = 'hidden';
	            // }
	          }
        	  as2.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";
                  }
     	          ss_innerHTML ='<table id="suggest_table" cellpadding=0 cellspacing=0 border=0 style="padding:0px; margin:0px;width:'+sb+'" >';
                  ss_innerHTML +='<tbody id="suggest_tbody">';
		  var has_mehr = false; 
	          for(i=0; i < str.length ; 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:as2.suggestOver(this);" ';
		     if(data[0].indexOf(" mehr ") > 0) { has_mehr = true }
	             suggest += 'onmouseout="javascript:as2.suggestOut(this);" ';
        	     suggest += 'onclick="javascript:as2.setSearch(\''+data[0]+" "+data[1]+'\',\''+data[2]+'\');" ';
             	     var cl = (as2.suggestActiveId == i) ? cl = "suggest_aktiv" : cl = '';
             	     suggest += 'class="suggest_link '+cl+'" param="'+data[2]+'"><td param="'+data[2]+'">'+data[0]+" "+data[1]+'</td>';
             	     suggest += '</tr>';
             	     ss_innerHTML += suggest ;

          	  }
		  if(str[0].indexOf('eine Daten') == 1) {
				ss_innerHTML = "<tr onclick='as2.closesuggest();'><td><i onclick='as2.closesuggest();'>Keine Daten</i>"; 
		  }
          	  // if(str.length == 20 || 
		  if(has_mehr ) {
	             var cl = (as2.suggestActiveId == i) ? cl = "suggest_aktiv" : cl = '';
	             ss_innerHTML += '<tr class="suggest_link '+cl+'" ><td colspan=2><a href="#" onclick="as2.searchSuggest(1); return false;">&nbsp;&nbsp;mehr...</a></td></tr>';
                  }

		  if(str.length == 1 &&  str[0].indexOf('eine Daten') < 1) {
			  var data = str[0].split("\t");
			  as2.setSearch(data[0]+" "+data[1],data[2]); 
		  } else {
		          ss.innerHTML = ss_innerHTML + "</tbody></table>";
		  }
        	  as2.suggestActive = false;
                // }
            } // searchReq.readyState == 4
	 }, 
	
	 // setzen der Werte in die Inputfelder
	 setSearch: function (value,idl) {
		 if(as2.kat != "") {
			 document.getElementById(as2.kat).value = idl;
			 document.getElementById(as2.searchinput).value = value;
			if(as2.many) {
				// document.getElementById(as2.plusid).style.display = "inline"; 
				as2.current_kat = idl;
				as2.add(); 
			}
		 }
		 else {
			if (as2.searchinput == "i_name") {
				document.getElementById('i_name').value = value;
				set_branche(idl);
			}
			else {
			  if(as2.ort != '') {
				var x = value.split(" ");
				document.getElementById(as2.plz).value = x[0];
				x.shift()
				document.getElementById(as2.ort).value = x.join(" ");
				 
				
			  } else {
			   //   if(wnn_suche != 'undefined') {
			   //	updateError(2,'');
			   //	wnn_suche.setplz_value(idl,value);
			   //   } else {
				document.getElementById(as2.searchinput).value = value;
			   //   } 
			  }
			}
		 }
		document.getElementById('search_suggest_rahmen').style.display = "none";
		document.getElementById('search_suggest').innerHTML = '';
	        as2.closesuggest();
	 },
	 placesuggest_final: function() {
	     as2.place_suggest = true; 
	     if(as2.place_suggest) {
		var sg = document.getElementById("search_suggest_rahmen");
		var left = i_getLeft(document.getElementById(as2.searchinput));
		var top = i_getTop(document.getElementById(as2.searchinput))+28;
		sg.style.top = top + "px";
		sg.style.left = left + "px";
	     }
	 //      as2.place_suggest = false;
	 },
	 closesuggest: function (x) {
		if(document.getElementById('search_suggest_rahmen').style.display != "none") {
	          document.getElementById('search_suggest_rahmen').style.display = "none";
		}
	 }, 

	//Mouse over function
	suggestOver: function (div_value) {
	       div_value.className = 'suggest_link_over';
	}, 

	//Mouse out function
	suggestOut: function (div_value) {
	       div_value.className = 'suggest_link';
	}


}


function i_getLeft(ireds_l) {
       if (ireds_l.offsetParent) return (ireds_l.offsetLeft + i_getLeft(ireds_l.offsetParent));
       else return (ireds_l.offsetLeft);
}

function i_getTop(ireds_l) {
            if (ireds_l.offsetParent) return (ireds_l.offsetTop + i_getTop(ireds_l.offsetParent));
            else return (ireds_l.offsetTop);
}


