
function LovoQueryManager(divId) {
	this.stateBrowser=0;
	this.stateQuery=1;
	this.stateBookmarks=2;
	this.currentState=this.stateQuery;
	
	this.currentQueryTransId="";
	this.currentBrowserTransId="";
	this.currentBookmarksTransId="";
	
	this.divId=divId;
	this.gmarkers = new Array();
	this.currentFacetQuery="";
	this.facetPageSize=20;
	this.currentResultSort="center";
	
	this.icon = new GIcon();
	this.icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	this.icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	this.icon.iconSize = new GSize(12, 20);
	this.icon.shadowSize = new GSize(22, 20);
	this.icon.iconAnchor = new GPoint(6, 20);
	this.icon.infoWindowAnchor = new GPoint(5, 1);
	
	var markers=[];
	this.bookmarksCount = 0;
	this.currentFacetRequest="";
	
} 

LovoQueryManager.prototype.getCurrentIdentifier =  function() {
	if (this.currentState == this.stateBrowser) {
		return "web2";
	} else if (this.currentState == this.stateQuery) {
		return "web";
	} if (this.currentState == this.stateBookmarks) {
		return "web3";
	}
}

LovoQueryManager.prototype.getCurrentTransId =  function() {
	if (this.currentState == this.stateBrowser) {
		return this.currentBrowserTransId;
	} else if (this.currentState == this.stateQuery) {
		return this.currentQueryTransId;
	} if (this.currentState == this.stateBookmarks) {
		return this.currentBookmarksTransId;
	}
}
 
LovoQueryManager.prototype.init =  function(lat,lon,zoom) {
	  this.map = new GMap2(dojo.byId("googlemap"));
    
    this.map.addMapType(G_PHYSICAL_MAP);
    
    this.mapLargeControl = new GLargeMapControl();
    this.mapTypecontrol = new GMapTypeControl();
    
    this.map.addControl(this.mapLargeControl);
    this.map.addControl(this.mapTypecontrol);
    //this.map.addControl(new GOverviewMapControl());
    this.map.setCenter(new GLatLng(lat, lon),zoom);
    this.map.setMapType(G_PHYSICAL_MAP);
    
    this.tooltip = dojo.byId("tooltip");
    this.map.getPane(G_MAP_FLOAT_PANE).appendChild(this.tooltip);
   	this.tooltip.style.visibility="hidden";
   	
  	this.tooltip2 = dojo.byId("tooltip2");
  	//dojo.html.setOpacity(dojo.byId("rightTabContainer"),0.8)
  	var manager = this;
}

LovoQueryManager.prototype.doRequest =  function() {
	var pars = 'moodMsisdn=' + dojo.byId('moods').value + '&lon=' + this.map.getCenter().x + '&lat=' + this.map.getCenter().y;
	var manager = this;	
	dojo.byId('query_input').style.display="none";
	
	dojo.byId('query_result_container').innerHTML = this.getLoadingDiv();
    dojo.io.bind({
    	url: "../request?"+pars,
    	load: function(type, data, evt){
    		if (!manager.currentState == manager.stateQuery) {
    			return;
    		}
  			dojo.byId("query_result_container").innerHTML = data;
  			if (dojo.byId("query_result_meta") == null) {
  				return;
  			}
  			manager.currentQueryTransId = dojo.byId("query_result_meta").getAttribute("tid");
  			var element = dojo.dom.firstElement(dojo.byId("query_result_meta"),"div");
			    while (element != null) {
			    	manager.addMarker(element);
			    	if (dojo.byId("bookmarks_item_"+element.getAttribute("rid")) != null) {
						var t = dojo.byId("query_result_item_check_"+element.getAttribute("rid"));
						t.setAttribute("class","bookmark_checked");
						t.setAttribute("className","bookmark_checked");
					}
			    	element = dojo.dom.nextElement(element,"div");
			    }
    	},
   		error: function(type, error){
   			dojo.debug(error.message);
   			dojo.byId('query_result').innerHTML = "Fehler beim Berechnen der Tipps!<br/><a style=\"cursor:pointer\" onclick=\"queryManager.clearQuery()\">Neue Abfrage</a>";
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.addMarkers =  function(id) {
	this.map.clearOverlays();
	var element = dojo.dom.firstElement(dojo.byId(id),"div");
	var i = 0;
	while (element != null) {
		this.addMarker(element);			
		element = dojo.dom.nextElement(element,"div");
		i++;
	}
	return i;
}

LovoQueryManager.prototype.leftTabChanged =  function(page) {
	this.hideMapControls();
	if (page.widgetId == null) {
		return;
	} else if (page.widgetId == "tab1") {
	   this.initQuery();
	} else if (page.widgetId == "tab2") {
       this.initBrowser();
	} else if (page.widgetId == "tab3") {
       this.initBookmarks();
	}
}

LovoQueryManager.prototype.hideElement =  function(id) {
  if (dojo.byId(id) != null) {
    dojo.byId(id).style.display = "none";
  }
}

LovoQueryManager.prototype.rightTabChanged =  function(page) {
	if (dojo.byId("travel_locate") != null) {
		dojo.byId("travel_locate").style.display = "none";
		dojo.byId("travel_route").style.display = "none";
	}
	
	if (dojo.byId("sendas_input_mms") != null) {
	    dojo.byId("sendas_input_mms").style.display = "none";
	    dojo.byId("sendas_input_sms").style.display = "none";
	    dojo.byId("sendas_input_email").style.display = "none";
	    dojo.byId("sendas_input_comment").style.display = "none";
	}
	
	if (dojo.byId("weatherimg1") != null) {
		  dojo.byId("weather_current").style.display = "none";
	    dojo.byId("weatherimg1").style.display = "none";
	    dojo.byId("weatherimg2").style.display = "none";
	    dojo.byId("weatherimg3").style.display = "none";
	    dojo.byId("weatherimg4").style.display = "none";
	    dojo.byId("weatherimg5").style.display = "none";
	    dojo.byId("weatherimg6").style.display = "none";
	    dojo.byId("weatherimg7").style.display = "none";
	    dojo.byId("weatherimg8").style.display = "none";
	    dojo.byId("weatherimg9").style.display = "none";
	    dojo.byId("weatherimg10").style.display = "none";
	    dojo.byId("weatherimg11").style.display = "none";
	    dojo.byId("weatherimg12").style.display = "none";
	    dojo.byId("weatherimg13").style.display = "none";
	    dojo.byId("weatherimg14").style.display = "none";
	}
	
	var manager=this;
	this.hideForms();
	if (page.widgetId == null) {
		return;
	} else if (page.widgetId == "righttab2") {
		dojo.byId("right_container_images_content").innerHTML = this.getLoadingDiv();
		var as = manager.currentAdId;
        dojo.io.bind({
	    	url: "../images/"+manager.getCurrentTransId()+"/"+manager.getCurrentIdentifier()+"/"+manager.currentRoleId+"/"+as,
	    	load: function(type, data, evt){
	    	  dojo.byId("right_container_images_content").innerHTML = data;
	    	  dojo.byId("right_container_images_content").scrollTop=0;
	    	},
	   		error: function(type, error){
	   		},
	    	mimetype: "text/html"
		});
		if (dojo.byId("right_container_review_content") != null) {
			dojo.byId("right_container_review_content").style.display = "none";
		}
	} else if (page.widgetId == "righttab6") {
     manager.showReview();
  } else if (page.widgetId == "righttab3") {
     this.getTab("right_container_send_content", "sendTip");
  } else if (page.widgetId == "righttab7") {
     manager.showWeather();
  } else if (page.widgetId == "righttab5"){
	   this.currentCountry = "AT";
	   this.travelCurrentType = "public";
	   this.getTab("right_container_travel_content", "travelTip");		
	} else {
		if (dojo.byId("right_container_review_content") != null) {
			dojo.byId("right_container_review_content").style.display = "none";			
		}
	}
}

LovoQueryManager.prototype.hideForms =  function() {
  if (dojo.byId("right_container_travel_content") != null) {
      dojo.byId("right_container_travel_content").innerHTML = "";     
    }
  if (dojo.byId("right_container_travel_content") != null) {
    dojo.byId("right_container_travel_content").innerHTML = "";     
  }
}

LovoQueryManager.prototype.hideMapControls =  function() {
	dojo.byId("map_regions").style.display = "none";
	dojo.byId("map_custom").style.display = "none";
	dojo.byId("crosshairs").style.display = "block";
}
 
LovoQueryManager.prototype.getTab =  function(id, url) {
  if (dojo.byId(id) != null) {
	  dojo.byId(id).innerHTML = this.getLoadingDiv();
  }
  var manager = this;
  dojo.io.bind({
    url: "../generate-tab/" + url + manager.tabquerystring,
    load: function(type, data, evt){
      dojo.byId(id).innerHTML = data; 
    },
    error: function(type, error){
      dojo.byId(id).innerHTML = "Fehler beim Laden des Tabs";
    },
    mimetype: "text/html"
  });  
}

LovoQueryManager.prototype.initQuery =  function(page) {
	 this.currentState=this.stateQuery;
	 dojo.byId('right_detail').style.display='none';
	 dojo.byId('tooltip').style.visibility='hidden';
	 dojo.byId('tooltip2').style.visibility='hidden';
   dojo.byId('right_map').style.display='block';
   dojo.byId("main_right_mapcontrol").style.display="block";
   dojo.byId("crosshairs").style.display="block";
	 this.map.clearOverlays();
	 if (this.map.moveend && this.map.zoomend) {
     GEvent.removeListener(this.map.moveend);
     GEvent.removeListener(this.map.zoomend);
   }  
	 this.map.enableDragging();
   if (dojo.byId("query_result_meta")!=null) {
		 this.addMarkers("query_result_meta");     	
   }
}

LovoQueryManager.prototype.initBrowser =  function(request) {
		this.currentState=this.stateBrowser;
		dojo.byId('right_detail').style.display='none';
	  dojo.byId('right_map').style.display='block';
    dojo.byId("main_right_mapcontrol").style.display="block";
	  dojo.byId("crosshairs").style.display="block";
	  dojo.byId('tooltip').style.visibility='hidden';
    dojo.byId('tooltip2').style.visibility='hidden';
		this.map.clearOverlays();
		
		if (request != null && request == false) {
			return;
		}
		var manager = this;
		dojo.io.bind({
      url: "../ctid",
      load: function(type, data, evt){
        manager.currentBrowserTransId = data.documentElement.getAttribute("tid");
      },
      error: function(type, error){
      },
      mimetype: "text/xml"
    });     
   	this.doFacetRequest(this.currentFacetQuery);
}

LovoQueryManager.prototype.initBookmarks =  function(page) {
	   this.currentState=this.stateBookmarks;
	   dojo.byId('right_detail').style.display='none';
	   dojo.byId('right_map').style.display='block';
     dojo.byId("main_right_mapcontrol").style.display="block";
	   dojo.byId("crosshairs").style.display="block";
	   dojo.byId('tooltip').style.visibility='hidden';
   	 dojo.byId('tooltip2').style.visibility='hidden';
		this.map.clearOverlays();
		if (this.map.moveend && this.map.zoomend) {
      GEvent.removeListener(this.map.moveend);
      GEvent.removeListener(this.map.zoomend);
    }  
		
		var element = dojo.dom.firstElement(dojo.byId("bookmarks_meta"),"div");
		var target = dojo.byId("bookmarks_list");
		var l = target.childNodes.length;
		for (var j=0;j<l;j++) {
			target.removeChild(target.firstChild);
		}
        	
 		var i = 0;       	
		while (element != null) {
			this.addMarker(element);	
			var id = element.getAttribute("rid"); 
      		var tr = target.insertRow(i);
			tr.setAttribute("id","bookmarks_table_item_"+id);
			var td= tr.insertCell(0);
			td.setAttribute("class","row"+ ((i+1) % 2));
			td.setAttribute("className","row"+ ((i+1) % 2));
			td.setAttribute("width","30px");
			td.innerHTML = "<div onclick=\"queryManager.bookmark('"+id+"')\" class='bookmark_checked' title=\"Tipp entfernen\"/>";
			td=tr.insertCell(1);
			var onmouseover = element.getAttribute("lat") + "," + element.getAttribute("lon") + ",\"" + element.getAttribute("rid") + "\",this.innerHTML,\"0\",\"browser\"";
			td.innerHTML = "<a onclick=\"queryManager.requestDetail('"+element.getAttribute("rid")+"',-1,this.innerHTML,"+element.getAttribute("aid")+",'bookmark');\" class='plain' onmouseover='queryManager.showTooltip("+onmouseover+")' onmouseout='queryManager.hideTooltip()'>"+element.getAttribute("label")+"</a>";
			td.setAttribute("class","row"+ ((i+1) % 2));
			td.setAttribute("className","row"+ ((i+1) % 2));
			element = dojo.dom.nextElement(element,"div");
			i++;
        	
		}
		
		this.bookmarksCount=i;
		
	if (this.bookmarksCount == 0) {
			dojo.byId("bookmarks_empty").style.display="block";
			dojo.byId("bookmarks_container").style.display="none";
		} else {
			dojo.byId("bookmarks_empty").style.display="none";
			dojo.byId("bookmarks_container").style.display="block";
			dojo.byId("bookmarks_options_count").innerHTML = this.bookmarksCount;
			dojo.byId("bookmarks_header_count").innerHTML = this.bookmarksCount;	
		}
		
}

LovoQueryManager.prototype.searchInResult =  function(text) {
	this.hideMapControls();
	text = new String(text);
	
	var q = "";
	if (this.currentFacetQuery!="") {
		q+=" AND ";
	}
	
	if (this.checkEmptyText(text)) {
		q += this.getTextSearchString(text);
		this.hideFacet();
		this.doFacetRequest(this.currentFacetQuery + q,0,true);    	
	}
}

LovoQueryManager.prototype.getTextSearchString =  function(text) {
	var t = "";
	/*t+= "(text:\"" + text +"*\"";
	if (!quote) {
		t+= " OR text:"+text+"*";			
	}
	t+=	")";*/
	if (dojo.string.startsWith(text,'"',true)) {
		t = "(text:(\"" + encodeURI(text.replace(/[^a-zA-Z0-9äöüÖÄÜß\s]/g,'')) + "\"))";
	} else {
    var splitstring = text.split(" ");
		  for(i = 0; i < splitstring.length; i++) {
		    var s = splitstring[i].replace(/[^a-zA-Z0-9äöüÖÄÜß]/g,'').toLowerCase();
		    if (s=="") {
		      continue; 
		    }
			  t+= "(text:(" + encodeURI(s) + "*)";
			  if (i < splitstring.length - 1) {
			  	t += ") AND ";
			  }
		  }
	  t+= ")";		
		}
	return t;
}

LovoQueryManager.prototype.doPreviousResultPage =  function() {
	this.doFacetRequest(this.currentFacetQuery,(parseFloat(this.currentFacetResultPage) - 1));    	
}

LovoQueryManager.prototype.doNextResultPage =  function() {
	this.doFacetRequest(this.currentFacetQuery,(parseFloat(this.currentFacetResultPage) + 1));    	
}

LovoQueryManager.prototype.doResultPage =  function(page) {
	this.doFacetRequest(this.currentFacetQuery,page);    	
}

LovoQueryManager.prototype.getLoadingDiv =  function() {
	return "<div><img src='../../lovo-resources/img/roller.gif' style='margin:10px'/></div>";
}

LovoQueryManager.prototype.showGuide =  function(link, label, facets) {
	this.queryMode="guide";
	if (link != "") {
		this.guidequery = " AND " + link;
	}
	this.guidelabel = label;
	this.guidefacets = facets;
	this.doFacetRequest("");
}

LovoQueryManager.prototype.showGuides =  function(facets) {
	this.queryMode="guides"
	this.guidequery = "";
	this.guidefacets = facets;
	this.doFacetRequest("");
}

LovoQueryManager.prototype.doFacetRequest =  function(query,page,noEncoding) {
    this.hideMapControls();
    this.hideFacet();
    var manager = this;
    document.body.style.cursor = 'wait';
    dojo.byId('right_map').style.display='block';
    dojo.byId("main_right_mapcontrol").style.display="block";
	dojo.byId("crosshairs").style.display="block";
	dojo.byId("tooltip").style.visibility="hidden";
	dojo.byId("tooltip2").style.visibility="hidden";
	dojo.byId("right_detail").style.display="none";
    dojo.byId("main2").innerHTML = this.getLoadingDiv();
    this.hideCurrentTooltip();
    
    manager.hideFacet();
    this.map.clearOverlays();
    
  if (manager.map.moveend && manager.map.zoomend) {
		GEvent.removeListener(manager.map.moveend);
		GEvent.removeListener(manager.map.zoomend);
  }  
	
	this.map.disableDragging();
	dojo.byId("zoomblocker").style.display="block";
    
    var geoquery = "";
    geoquery += "latitude:["+ this.map.getBounds().getSouthWest().lat() + " TO " + this.map.getBounds().getNorthEast().lat();
    geoquery += "] AND longitude:[";
    geoquery += this.map.getBounds().getSouthWest().lng() + " TO " + this.map.getBounds().getNorthEast().lng();
    geoquery += "]";
    
    if (this.queryMode=="guides") {
    	dojo.io.bind({
	    	url: "../guides/" + geoquery,
	    	method: "GET",
	    	load: function(type, data, evt){
	    		dojo.byId("main2").innerHTML = data;
	    		var m = manager;
	    		
			    document.body.style.cursor = 'default';
	    		manager.map.enableDragging();
	    		
	    		manager.map.moveend = GEvent.addListener(manager.map, "moveend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		manager.map.zoomend = GEvent.addListener(manager.map, "zoomend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		
	    		dojo.byId("zoomblocker").style.display="none";
	    		manager.toggleDiv(manager.currentGuideToggle);
	    		dojo.html.addClass(dojo.byId(manager.currentGuideToggleHeader), "selected");
	    	},
	   		error: function(type, error){
	   			document.body.style.cursor = 'default';
				dojo.debug(error.message);
				var m = manager;
			    manager.map.enableDragging();
			    manager.map.moveend = GEvent.addListener(manager.map, "moveend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		manager.map.zoomend = GEvent.addListener(manager.map, "zoomend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		dojo.byId("main2").innerHTML="<p>Fehler beim Abfragen der Guides</p>";	
	   		},
	    	mimetype: "text/html"
		});	
    } else {
	    if (page==null) {
	    	page=0;
	    }
	    this.currentFacetResultPage=page; 
	    this.currentFacetQuery=query;
	 
	    var paging = "?pageSize=" + this.facetPageSize + "&start=" + page*this.facetPageSize + 
	    	"&sort="+this.currentResultSort + "&middleLat=" + this.map.getCenter().lat()+ "&middleLon=" + this.map.getCenter().lng();
		var facets = "&fl=" + this.guidefacets; 
	
		dojo.debug(query);   
	    
	    var encodedQuery = query;
		dojo.io.bind({
			url: "../faceted/" + geoquery + manager.guidequery  + "/" + query + paging + facets,
			load: function(type, data, evt){
	    		if (!manager.currentState == manager.stateBrowser) {
	    			return;
	    		}
	    		try {
	    			dojo.byId("main2").innerHTML=data;		    		
	    			dojo.debug("copy of content ok");
	    		} catch (e) {
	    			dojo.debug("copy of content ERROR:"+e.message);
	    		}
	    		
		    	var meta = dojo.byId("browser_result_meta");
		    	var element = dojo.dom.firstElement(meta,"div");
			    while (element != null) {
			    	manager.addMarker(element);
			    	if (dojo.byId("bookmarks_item_"+element.getAttribute("rid")) != null) {
						var t = dojo.byId("browser_result_item_check_"+element.getAttribute("rid"));
						t.setAttribute("class","bookmark_checked");
						t.setAttribute("className","bookmark_checked");
					}
					if (manager.initialRoleId != null && manager.initialRoleId == element.getAttribute("rid")) {
						var initialRole=element;
					}
			    	element = dojo.dom.nextElement(element,"div");
			    }
			    dojo.debug("meta ok");
			    dojo.byId("guide_detail_header").innerHTML=manager.guidelabel;
			    document.body.style.cursor = 'default';
			    var m = manager;
			    
	    		manager.map.enableDragging();
	    		
	    		manager.map.moveend = GEvent.addListener(manager.map, "moveend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		manager.map.zoomend = GEvent.addListener(manager.map, "zoomend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		
	    		
	    		dojo.byId("zoomblocker").style.display="none";
	    		
	    		dojo.debug("layout ok");
			    
			    if (initialRole != null) {
			    	manager.requestDetail(initialRole.getAttribute("rid"),-1,initialRole.getAttribute("label"),initialRole.getAttribute("aid"),"browser");
			    	initialRole = null;
			    	manager.initialRoleId=null;
			    }
			    
			    dojo.debug("initial clearing ok");
			    
			},
			error: function(type, error){
				document.body.style.cursor = 'default';
				dojo.debug(error.message);
				var m = manager;
			    manager.map.enableDragging();
			    manager.map.moveend = GEvent.addListener(manager.map, "moveend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		manager.map.zoomend = GEvent.addListener(manager.map, "zoomend", function() {
					  m.doFacetRequest(m.currentFacetQuery);    		
	    		});
	    		dojo.byId("main2").innerHTML="<p>Fehler beim Abfragen der Tipps</p>";	
	
			},
			mimetype: "text/html"
		});	
    }
}

LovoQueryManager.prototype.removeAllBookmarks = function(element) {
	this.hideMapControls();
	var element = dojo.dom.firstElement(dojo.byId("bookmarks_meta"),"div");
	while (element != null) {
	   	var id = element.getAttribute("rid");
	   	var e1 = dojo.byId("browser_result_item_check_"+id);
		var e2 = dojo.byId("query_result_item_check_"+id);
	   	if (e1 != null) {
			e1.setAttribute("class","bookmark_unchecked");
			e1.setAttribute("className","bookmark_unchecked");
		}
		if (e2 != null) {
			e2.setAttribute("class","bookmark_unchecked");
			e2.setAttribute("className","bookmark_unchecked");
		}
		element = dojo.dom.nextElement(element,"div");
	}
	dojo.byId('bookmarks_meta').innerHTML = '';
	this.initBookmarks();
	this.storeBookmarks();
}

LovoQueryManager.prototype.addMarker = function(element) {
	var point = new GLatLng(element.getAttribute("lat"),element.getAttribute("lon"));
	if (point.lat()==0) {
		return;
	}
	var marker = new GMarker(point,this.icon);
	var manager = this;
	GEvent.addListener(marker,"click",function() {
		//alert(element.getAttribute("mode"));
		//alert(element.getAttribute("rid"));
		manager.requestDetail(element.getAttribute("rid"),-1,element.getAttribute("label"),element.getAttribute("mode"));
	});
	GEvent.addListener(marker,"mouseover",function() {
		manager.showTooltip(element.getAttribute("lat"),element.getAttribute("lon"),element.getAttribute("rid"),element.getAttribute("label"),element.getAttribute("mode"));
	});   
	this.map.addOverlay(marker);
}

LovoQueryManager.prototype.showFacet2 =  function(parent,baseLink) {
	this.hideMapControls();
	var id= parent.getAttribute("fid");
	if (parent == this.currentFacet) {
		this.hideFacet();	
		return;
	}
	
	dojo.byId('right_detail').style.display='none';
  dojo.byId('right_map').style.display='block'
  dojo.byId('main_right_mapcontrol').style.display='block';
	
	this.hideFacet();	
	this.currentFacetBaselink = baseLink;
	this.currentFacetFacetItems = new dojo.collections.ArrayList();
	
	var ret = dojo.html.getAbsolutePosition(parent);
	ret.y = ret.y + 29;
	
	if(dojo.render.html.ie){
		ret.x = ret.x - 1;
		ret.y = ret.y - 1;
	}
	
	parent.setAttribute("class", "facet_selected"); 
    parent.setAttribute("className", "facet_selected"); 
    dojo.byId("browser_facet_current_title").innerHTML = "";
    
   	var source = dojo.byId("browser_facet_content_"+id);
    var box = this.computeBox(parseFloat(source.getAttribute("count")), dojo.string.startsWith(id, "userrating", true), dojo.string.startsWith(id, "textsearch", true));
   	
   	var w = box.width;
   	var h = box.height;
    var scroll = box.scroll;
    	
   	this.currentFacet=parent;
   	dojo.byId("browser_facet_current_submit").innerHTML="";
  	if (id=="textsearch") {
        dojo.byId("browser_facet_current_cloud").innerHTML= 
        	"<div style='" + scroll + "'>"  
        	+ source.innerHTML 
        	+ '<input id="browser_search" onkeydown="if (event.keyCode==13) queryManager.searchInResult(this.value);" width="200"/>'
    		+ '<input onclick="queryManager.searchInResult(this.previousSibling.value)" value="Suchen" type="button"/>'
        	+ "</div>";
        this.setBrowserCurrentStyleText(ret, w, h, scroll, parent);
    		dojo.byId("browser_facet_current").style.display="block";
		    dojo.byId("browser_search").focus();
        return;
	}   	
   	
  this.setBrowserCurrentStyleFacet(ret, w, h, scroll, parent);
	
	if (id=="userrating_min") {
	  dojo.byId("browser_facet_current_cloud").innerHTML="<p>W&#228;hle aus, wieviel Sterne MINDESTENS zutreffen sollen.</p><table id='browser_facet_content_userrating_table' cellpadding='2' cellspacing='0'></table><div style='padding:5px;'></div>";
	  dojo.byId("browser_facet_current_submit").innerHTML="<hr/><a class='button' href='javascript:queryManager.submitReviewFacet()'>Auswahl &#252;bernehmen</a><br/>";
	  this.facetRatingCount = 0; 
	} else {
	  dojo.byId("browser_facet_current_cloud").innerHTML= "<div style='" + scroll + "'>"  + source.innerHTML + "</div>";
	  dojo.byId("browser_facet_current_submit").innerHTML="<hr/><a class='button' href='javascript:queryManager.submitFacet()'>Auswahl &#252;bernehmen</a><br/></div>";
	}
	
	
	dojo.lfx.html.wipeIn("browser_facet_current", 250).play();
}

LovoQueryManager.prototype.computeBox = function(facetcount, isUserrating, isText) {
  
  var width = 270;
  var height = 250;
  var scroll = "";
  
  if (facetcount > 7) {
    height = 350;
  }  
  
  if (facetcount > 10) {
    height = 350;
  }   
    
  if (facetcount > 15) {
    height = 430;
    scroll = "height:360px;overflow-y:scroll";
  } 
  
  if (isUserrating) {
    width = 470;
    height = 350;
  }
  
  if (isText) {
    width = 470;
    height = 450;
  }
  
  var box = {width: width, height: height, scroll: scroll};
  return box;
}

LovoQueryManager.prototype.setBrowserCurrentStyleText =  function(ret, w, h, scroll, parent) {
  var mainpos = dojo.html.getAbsolutePosition(dojo.byId('main'));
  dojo.html.setStyleAttributes(dojo.byId("browser_facet_current"), "position:absolute;top:"+ (ret.y-mainpos.y + 1) +"px;left:"+(ret.x+dojo.html.getElementBox(parent).width-mainpos.x+1)+"px;width:"+w+"px;height:"+h+"px");
}

LovoQueryManager.prototype.setBrowserCurrentStyleFacet =  function(ret, w, h, scroll, parent) {
  var mainpos = dojo.html.getAbsolutePosition(dojo.byId('main'));
  dojo.html.setStyleAttributes(dojo.byId("browser_facet_current"), "position:absolute;top:"+ (ret.y-mainpos.y + 1) +"px;left:"+(ret.x+dojo.html.getElementBox(parent).width-mainpos.x+1)+"px;width:"+w+"px;height:"+h+"px");
}

LovoQueryManager.prototype.toggleCurrentFacetItem =  function(source,link) {
	if (this.currentFacetFacetItems.contains(link)) {
		dojo.html.removeClass(source,"selected"); 
		this.currentFacetFacetItems.remove(link);	
		return;
	}
    dojo.html.addClass(source,"selected"); 
	this.currentFacetFacetItems.add(link);
}

LovoQueryManager.prototype.submitReviewFacet =  function() {
  this.hideMapControls();
  
	var prefix = "";
	if (this.currentFacetBaselink != null && this.currentFacetBaselink!= "" && !dojo.string.endsWith(this.currentFacetBaselink," AND ")) {
		prefix = " AND ";
	}
	var q = this.currentFacetBaselink + prefix;
	var fq =  "(";
	var it = this.currentFacetFacetItems.getIterator();
	while(!it.atEnd()) {
		fq+=it.get();
		if (!it.atEnd()) {
			fq+=" OR ";
		}
	}
	fq+=")";
	if (fq=="()") {
	    if (this.currentFacetBaselink != null && this.currentFacetBaselink!= "" && dojo.string.endsWith(this.currentFacetBaselink," AND ")) {
			this.currentFacetBaselink = this.currentFacetBaselink.substring(0,this.currentFacetBaselink.length-5);
		}
		this.doFacetRequest(this.currentFacetBaselink);
		return;
	}
	queryManager.hideFacet();
	this.doFacetRequest(q + fq);
}

LovoQueryManager.prototype.submitFacet =  function() {
  this.hideMapControls();

	var prefix = "";
	var q = this.currentFacetBaselink;
	
	var facets = dojo.byId('browser_facet_current_cloud').firstChild.getElementsByTagName("div");
	var fq =  "(";
	var first = true;
	for (var i = 0; i < facets.length; i++) {
 		var checkbox = facets[i].getElementsByTagName("input")[0];
 		if (checkbox == null || !checkbox.checked) {
 			continue;
 		}
 		if (!first) {
			fq+=" OR ";
		}
 		fq+=checkbox.getAttribute("link");
 		first = false;
	}
	fq+=")";
	
	queryManager.hideFacet();
	if (fq=="()") {
	    var link = this.currentFacetBaselink;
	    if (dojo.string.endsWith(link," AND ")) {
	    	link = link.substring(0,link.length - 5);
	    }
		this.doFacetRequest(link);
		return;
	}
	if (this.currentFacetBaselink != null && this.currentFacetBaselink!= "" && !dojo.string.endsWith(this.currentFacetBaselink," AND ")) {
		prefix = " AND ";
	}
	this.doFacetRequest(q + prefix + fq);
}

LovoQueryManager.prototype.submitObjectSearch =  function(label,facetstring) {
  this.hideMapControls();

	var facets = dojo.byId('guides_objectsearch').getElementsByTagName("input");
	var fq =  "(";
	var first = true;
	for (var i = 0; i < facets.length; i++) {
 		var checkbox = facets[i];
 		if (checkbox == null || !checkbox.checked) {
 			continue;
 		}
 		if (!first) {
			fq+=" OR ";
		}
 		fq+=checkbox.getAttribute("link");
 		first = false;
	}
	fq+=")";
	
	var q = "";
	if (fq != "()") {
		q = fq;
	}
	var text = dojo.byId('guides_textsearch').value;
	if (text != null && text != '') {
		if (fq != "()") {
			q += " AND ";
		}
		q += this.getTextSearchString(text);
	}
	
	this.queryMode="guide";
	this.guidelabel = label;
	this.guidefacets = facetstring;
	this.doFacetRequest(q);
	
}

LovoQueryManager.prototype.clearFacet =  function() {
	var q = this.currentFacetBaselink;
	this.doFacetRequest(q);
}


LovoQueryManager.prototype.showConfirm =  function(parent,text) {
	this.hideMapControls();
	var ret = dojo.html.getAbsolutePosition(parent);
	ret.y = ret.y + 29;
	if(dojo.render.html.ie){
		ret.x = ret.x - 1;
		ret.y = ret.y - 1;
	}
	
	parent.setAttribute("class", "input_selected"); 
    parent.setAttribute("className", "input_selected"); 
    
    dojo.byId("browser_facet_current_title").innerHTML = parent.innerHTML;
	dojo.byId("browser_facet_current_cloud").innerHTML =  "<div>Alle entfernen?<p/><a href=\"javascript:queryManager.removeAllBookmarks();queryManager.hideFacet()\">Ja</a> <a href=\"javascript:queryManager.hideFacet()\">Nein</a></div>";
	dojo.byId("browser_facet_current_submit").innerHTML="";
	
   //dojo.html.setStyleAttributes(dojo.byId("browser_facet_current"), "position:absolute;top:"+ (ret.y-dojo.html.getAbsolutePosition(dojo.byId('main')).y + 1) +"px;left:"+(ret.x-2)+"px;width:450px;height:200px");
   this.setInputPosition(ret,parent);
	 dojo.lfx.html.wipeIn("browser_facet_current", 250,function(){}).play();
}

LovoQueryManager.prototype.showInput =  function(parent,medium,defaultValue) {
	this.hideMapControls();
	var ret = dojo.html.getAbsolutePosition(parent);
	ret.y = ret.y + 29;
	if(dojo.render.html.ie){
		ret.x = ret.x - 1;
		ret.y = ret.y - 1;
	}
	
	parent.setAttribute("class", "input_selected"); 
  parent.setAttribute("className", "input_selected"); 
    
  dojo.byId("browser_facet_current_title").innerHTML = parent.innerHTML;
	
	if (medium=="email") {
		dojo.byId("browser_facet_current_cloud").innerHTML =  "<div>Email: <input type=\"text\" id=\"bookmarks_send_email\" value=\""+this.defaultEmail+"\"  size=\"30\" /><input type=\"button\" value=\"senden\" onclick=\"queryManager.sendBookmarks('email')\"/></div>";
	} else if (medium=="push") {
		dojo.byId("browser_facet_current_cloud").innerHTML =  "<div>Telefonnummer in der Form +43676123456768 eingeben <p/> Mobiltelefonnummer: <input type=\"text\" id=\"bookmarks_send_push\"  value=\""+this.defaultMsisdn+"\" size=\"30\"/><input type=\"button\" value=\"senden\" onclick=\"queryManager.sendBookmarks('push')\"/></div>";
	}
	dojo.byId("browser_facet_current_submit").innerHTML="";
	
	this.setInputPosition(ret,parent);
	dojo.lfx.html.wipeIn("browser_facet_current", 250,function(){}).play();
}

LovoQueryManager.prototype.setInputPosition =  function(ret, parent) {
  dojo.html.setStyleAttributes(dojo.byId("browser_facet_current"), "position:absolute;top:"+ (ret.y-dojo.html.getAbsolutePosition(dojo.byId('main')).y + 1) +"px;left:"+(ret.x-2)+"px;width:450px;height:200px");
}

LovoQueryManager.prototype.setConfirmPosition =  function(ret) {
  dojo.html.setStyleAttributes(dojo.byId("browser_facet_current"), "position:absolute;top:"+ (ret.y-dojo.html.getAbsolutePosition(dojo.byId('main')).y + 1) +"px;left:"+(ret.x-2)+"px;width:450px;height:200px");
}

LovoQueryManager.prototype.hideFacet =  function() {
	var p = dojo.byId("browser_facets");
	if (p==null) {
		return;
	}
	var element = dojo.dom.firstElement(p,"div");
    while (element != null) {
    	element.setAttribute("class", "facet"); 
    	element.setAttribute("className", "facet"); 
    	element = dojo.dom.nextElement(element,"div");
    }
    
    var text_element = dojo.byId("browser_facet_name_text");
    if (text_element != null) {
		text_element.setAttribute("class", "facet"); 
	    text_element.setAttribute("className", "facet");         	
    }
    dojo.html.setDisplay("browser_facet_current","none");
    this.currentFacet=null;
}

LovoQueryManager.prototype.clearQuery =  function() {
	dojo.byId('query_input').style.display="block";
	dojo.byId('query_result').innerHTML="";
	dojo.byId('right_detail').style.display='none';
	dojo.byId('right_map').style.display='block'
	dojo.byId('main_right_mapcontrol').style.display='block';
	this.map.clearOverlays();
	this.gmarkers = new Array();
}

LovoQueryManager.prototype.addSearchMarker =  function() {
	var icon = new GIcon();
	var icon = new GIcon(G_DEFAULT_ICON, "../../lovo-resources/img/marker.png");
    this.centerMarker = new GMarker(this.map.getCenter(),icon);
    this.map.addOverlay(this.centerMarker);       
   	var manager = this;	
    GEvent.addListener(this.map, "drag", function() {
    	manager.centerMarker.setPoint(manager.map.getCenter());
    });
}

LovoQueryManager.prototype.removeSearchMarker =  function() {
    GEvent.clearListeners(this.map, "drag");
    if (this.centerMarker != null) {
		this.map.removeOverlay(this.centerMarker);    	
    }
    this.centerMarker = null;
}

LovoQueryManager.prototype.setMapTo =  function(target) {
	this.hideMapControls();
	var manager = this;	
	
	var params="";
	
	if (target == '-1') {
		return;
	}
	
	dojo.byId("right_detail").style.display="none";
	dojo.byId("crosshairs").style.display = "block";
	dojo.byId('main_right_mapcontrol').style.display='block';
	
	if (target.slice(0,2) == "p:")  {
		this.map.disableDragging();
	    var strings = dojo.string.splitEscaped(target.substring(2),';');
	    var lat = parseFloat(strings[1]);
        var lon = parseFloat(strings[0]);
        var zoom = parseFloat(strings[2]);
        this.map.setCenter(new GLatLng(lat, lon),zoom);
	  
        this.map.enableDragging(); 
	    return; 
	}
	
	if (target=='custom') {
		if (dojo.string.startsWith(dojo.byId("map_position_custom").value, "Adresse", true)) {
			return;
		}
		params+="searchtext="+encodeURI(document.getElementById("map_position_custom").value) 
			+ "," + encodeURI(document.getElementById("map_position_country").value);
	} 
	
	this.map.disableDragging();
	document.body.style.cursor = 'wait';
	
    dojo.io.bind({
    	url: "../geocode/"+target + params,
    	method: "POST",
    	postContent: params, 
    	load: function(type, data, evt){
    		var xml = data;
    		var point = xml.documentElement.getElementsByTagName("point");
    		var lat = parseFloat(point[0].getAttribute("lat"));
            var lon = parseFloat(point[0].getAttribute("lon"));
            manager.map.setCenter(new GLatLng(lat, lon),12);
            document.body.style.cursor = 'default';
            dojo.byId("right_detail").style.display="none";
    		manager.map.enableDragging();
    	},
   		error: function(type, error){
   			document.body.style.cursor = 'default';
    		manager.map.enableDragging();
   			alert("Adresse nicht gefunden!");
   		},
    	mimetype: "text/xml"
	});			
}

LovoQueryManager.prototype.requestDetail =  function(roleId, index, title, aid, mode) {
	this.hideMapControls();
	if (aid != 0 && aid != 1 && aid != "0" && aid != "1" && aid != "2" && aid != "2") {
		if (mode==null) {
			mode = aid;			
		}
		aid = "0";
	}
	
	this.currentRoleId=roleId;
	this.currentAdId=aid;
	
	dojo.byId("right_detail").style.display="block";
	
	var manager = this;	
	
	dojo.byId("main_right_mapcontrol").style.display="none";
	dojo.byId("crosshairs").style.display="none";
	dojo.byId("tooltip").style.visibility="hidden";
	dojo.byId("tooltip2").style.visibility="hidden";
	dojo.byId("right_detail").style.display="block";
	dojo.byId("rightTabHeaderTitle").innerHTML=title;
	dojo.byId("rightRating").setAttribute("class","stars");
	dojo.byId("rightRating").setAttribute("className","stars");
	dojo.byId("right_container_detail_content").innerHTML=this.getLoadingDiv();
	dojo.byId("right_container_images_content").innerHTML=this.getLoadingDiv();
	
	dojo.widget.byId("rightTabContainer").selectChild("righttab1");

	var bounds = manager.map.getBounds();	
	var query = "";
	query += "trans-id=" + manager.getCurrentTransId();
	query += "&identifier=" + manager.getCurrentIdentifier();
	query += "&role-id=" + roleId ;
	query += "&aid=" + aid;
	
	if (mode == "browser") {
		query += "&facet-query=" + manager.currentFacetQuery;
		query += "&guide-query=" + manager.guidequery;
		query += "&ne-lon=" + bounds.getNorthEast().lng();
		query += "&ne-lat=" + bounds.getNorthEast().lat();
		query += "&sw-lon=" + bounds.getSouthWest().lng();
		query += "&sw-lat=" + bounds.getSouthWest().lat();
	}
 	
    dojo.io.bind({
    	url: "../detail-" + mode,
    	method: "POST",
    	postContent: query,
    	load: function(type, data, evt){
    		var xml = data;
    		var id = xml.documentElement.firstChild.getAttribute("role-id");
    		if (id!=manager.currentRoleId) {
    			return;
    		}
    		//manager.currentAdId = xml.documentElement.firstChild.getAttribute("ad-id");
    		
    		manager.currentRoleLon = xml.documentElement.firstChild.getAttribute("lon");
    		manager.currentRoleLat = xml.documentElement.firstChild.getAttribute("lat");
    		manager.currentRoleName = title;
    		
    		
    		var rating = xml.documentElement.firstChild.getElementsByTagName("rating")[0];
		    if (rating != null) {
		    	dojo.byId("rightRating").setAttribute("class","stars stars_green_" + rating.getAttribute("value"));
		    	dojo.byId("rightRating").setAttribute("className","stars stars_green_" + rating.getAttribute("value"));
		    	var leftRating = dojo.byId("leftRating_" + roleId);
		    	if (leftRating != null) {
			      leftRating.setAttribute("class","stars stars_" + rating.getAttribute("value"));
		    	  leftRating.setAttribute("className","stars stars_" + rating.getAttribute("value"));		    	
		    	}
		    } 
    		
    		var description = xml.documentElement.firstChild.getElementsByTagName("description")[0].firstChild; 
		    var temp_div = document.createElement("div");
		    temp_div.appendChild(xmlToHtml(description,document));
		    dojo.byId("right_container_detail_content").innerHTML=temp_div.innerHTML;
		    
		    /* var images = xml.documentElement.firstChild.getElementsByTagName("images")[0].firstChild; 
		    var temp_div2 = document.createElement("div");
		    temp_div2.appendChild(xmlToHtml(images,document));
		    var c = dojo.byId("right_container_images_content");
		    c.innerHTML=temp_div2.innerHTML;*/
		    
		   /* if (dojo.byId('travel_input') != null) {
		    	dojo.byId('travel_input').style.display='block';
				dojo.byId('travel_result').style.display='none';	
		    }
		    
			if (dojo.byId("right_container_send_content") != null) {
				dojo.byId("right_container_send_content").style.display="block";
  				dojo.byId("right_container_send_status").style.display="none";
			}*/
    	},
   		error: function(type, error){
   			dojo.byId("right_container_detail_content").innerHTML="Keine Details gefunden!";
   			dojo.debug(error.message);
   		},
    	mimetype: "text/xml"
	});			
	
	
	
}

LovoQueryManager.prototype.manageEmail =  function() {
	var manager = this;
	dojo.io.bind({
    	url: "../email/"+manager.getCurrentTransId()+"/"+manager.getCurrentIdentifier()+"/"+manager.currentRoleId,
    	load: function(type, data, evt){
    	},
   		error: function(type, error){
   		},
    	mimetype: "text/xml"
	});
}

LovoQueryManager.prototype.showCustomAddressDialog =  function() {
	this.hideMapControls();
	var manager = this;	
	
	var html = "<table><tr><td>Stadt</td><td> <input id='pos_city'/></td></tr>" ;
	html += "<tr><td>PLZ</td><td> <input id='pos_postalcode'/></td></tr>" ;
	html += "<tr><td>Strasse</td><td> <input id='pos_street'/></td></tr>" ;
	html += "<tr><td>Nummer</td><td> <input id='pos_houseno'/></td></tr></table>" ;
	html += "<a style=\"cursor:pointer\" onclick=\"queryManager.setMapTo('custom')\">Positionieren</a> ";
	
	this.showStatus(html);
}


LovoQueryManager.prototype.showTooltip =  function(lat, lon, id, title, aid, mode) {
	
	if ( dojo.byId('right_detail').style.display=='block') {
		return;		
	}
	
	var bounds = this.map.getBounds();
	
	if (!bounds.contains(new GLatLng(lat,lon))) {
		var tooltip2 = dojo.byId("tooltip2");
		var pos = dojo.html.getAbsolutePosition(dojo.byId('result_table_row_'+id));
		var pos2 = dojo.html.getAbsolutePosition(dojo.byId('main'));
		dojo.html.setStyleAttributes(tooltip2, "position:absolute;top:"+ (pos.y-pos2.y+60) +"px;left:"+ (pos.x-pos2.x+220) + "px;");
		tooltip2.innerHTML = "<div style=\"border:1px solid black; background:white;padding:3px\">Der ausgewählte Tipp befindet sich außerhalb des Kartenausschnitss.<br/> Wähle \"<b>Alle auf Karte zeigen</b>\" um den Tipp auf der Karte anzuzeigen. </div>";
		tooltip2.style.visibility="visible";
		return;
	}

	var point = this.map.fromLatLngToDivPixel(new GLatLng(lat,lon));
	
	var tooltip = dojo.byId("tooltip");
	tooltip.style.visibility="visible";
	var manager = this;
	tooltip.doIt = function(){manager.requestDetail(id,-1,title,aid,mode)};
	dojo.html.setStyleAttributes(tooltip, "position:absolute;top:"+ (point.y - 20) +"px;left:"+ (point.x - 6) + "px;");
	
	var tooltip2 = dojo.byId("tooltip2");
	var pos = dojo.html.getAbsolutePosition(dojo.byId('tooltip'));
	var pos2 = dojo.html.getAbsolutePosition(dojo.byId('main'));
	dojo.html.setStyleAttributes(tooltip2, "position:absolute;top:"+ (pos.y-pos2.y+28) +"px;left:"+ (pos.x-pos2.x) + "px;");
	tooltip2.innerHTML = "<div style=\"border:1px solid black; background:white;padding:3px\"><b>" + title + "</b></div>";
	tooltip2.style.visibility="visible";
}

LovoQueryManager.prototype.showCurrentTooltip =  function(source,text) {
	
	if (this.curretTooltipShown) {
		return;
	}
	
	var pos = dojo.html.getAbsolutePosition(source);
	var pos2 = dojo.html.getAbsolutePosition(dojo.byId('main'));
	
	var tooltip = dojo.byId("current_tooltip");
	dojo.html.setStyleAttributes(tooltip, "position:absolute;top:"+ (pos.y-pos2.y+50) +"px;left:"+ (pos.x-pos2.x+10) + "px;");
	tooltip.innerHTML = text;
	tooltip.style.visibility="visible";
	this.curretTooltipShown=true;
}

LovoQueryManager.prototype.hideCurrentTooltip =  function() {
	var tooltip = dojo.byId("current_tooltip");
	tooltip.innerHTML = "";
	tooltip.style.visibility="hidden";
	this.curretTooltipShown=false;
}

LovoQueryManager.prototype.showAddressTooltip =  function(source,text) {
	
	if (this.curretTooltipShown) {
		return;
	}
	
	var pos = dojo.html.getAbsolutePosition(source);
	var pos2 = dojo.html.getAbsolutePosition(dojo.byId('main'));
	
	var tooltip = dojo.byId("address_tooltip");
	dojo.html.setStyleAttributes(tooltip, "position:absolute;top:"+ (pos.y-pos2.y+50) +"px;left:"+ (pos.x-pos2.x+10) + "px;");
	tooltip.innerHTML = text;
	tooltip.style.visibility="visible";
	this.addressTooltipShown=true;
}

LovoQueryManager.prototype.hideAddressTooltip =  function() {
	var tooltip = dojo.byId("address_tooltip");
	tooltip.innerHTML = "";
	tooltip.style.visibility="hidden";
	this.addressTooltipShown=false;
}

LovoQueryManager.prototype.hideTooltip =  function() {
	dojo.byId("tooltip").style.visibility="hidden";
	dojo.byId("tooltip2").style.visibility="hidden";
}

LovoQueryManager.prototype.showStatus =  function(text) {
    dojo.byId("queryStatus").innerHTML=text;
    dojo.lfx.html.wipeIn("queryStatus", 250).play();
}

LovoQueryManager.prototype.setCloseableStatus =  function(text) {
    var html = text + "<br/><br/>";
    html += "<a style=\"cursor:pointer\" onclick=\"queryManager.hideStatus()\">Schließen</a> ";
    dojo.byId("queryStatus").innerHTML=html;
}

LovoQueryManager.prototype.setStatus =  function(text) {
    dojo.byId("queryStatus").innerHTML=text;
}

LovoQueryManager.prototype.hideStatus =  function() {
    dojo.lfx.html.wipeOut("queryStatus", 250).play();
}

LovoQueryManager.prototype.zoomToAllVisible = function(id) {
  	this.hideMapControls();
  	var bounds = new GLatLngBounds();
  	bounds.extend(this.map.getCenter());
  	var element = dojo.dom.firstElement(dojo.byId(id),"div");
		while (element != null) {
			var p = new GLatLng(element.getAttribute("lat"),element.getAttribute("lon"));
			if (p.lat() != 0) {
				bounds.extend(p);
			}
			element = dojo.dom.nextElement(element,"div");
		}
  	var center_lat = (bounds.getSouthWest().lat() + bounds.getNorthEast().lat()) / 2;
  	var center_lon = (bounds.getSouthWest().lng() + bounds.getNorthEast().lng()) / 2;
  	this.map.setZoom(this.map.getBoundsZoomLevel(bounds));
  	this.map.setCenter(new GLatLng(center_lat, center_lon));
  	this.map.savePosition();
  	dojo.byId("right_detail").style.display="none";
  	dojo.byId('main_right_mapcontrol').style.display='block';
}

LovoQueryManager.prototype.bookmarkCurrent = function() {
	this.bookmark(this.currentRoleId,true);
}

LovoQueryManager.prototype.bookmark = function(id,skipDelete) {
	var b = dojo.byId("bookmarks_item_"+id);
	var e1 = dojo.byId("browser_result_item_check_"+id);
	var e2 = dojo.byId("query_result_item_check_"+id);
	
	if (b != null) {
	   if (skipDelete == null) { 	
			b.parentNode.removeChild(b);
			if (e1 != null) {
				e1.setAttribute("class","bookmark_unchecked");
				e1.setAttribute("className","bookmark_unchecked");
			}
			if (e2 != null) {
				e2.setAttribute("class","bookmark_unchecked");
				e2.setAttribute("className","bookmark_unchecked");
			}
			if (this.currentState == this.stateBookmarks) {
				this.initBookmarks();
			}
			this.storeBookmarks();
	   }
	   return;
	}
	if (e1 != null) {
		e1.setAttribute("class","bookmark_checked");
		e1.setAttribute("className","bookmark_checked");
	}
	if (e2 != null) {
		e2.setAttribute("class","bookmark_checked");
		e2.setAttribute("className","bookmark_checked");
	}
	var n;
	if (dojo.byId("browser_result_item_"+id)!=null) {
		n = dojo.byId("browser_result_item_"+id).cloneNode(true);	
	} else {
		n = dojo.byId("query_result_item_"+id).cloneNode(true);	
	}
	
	n.setAttribute("id","bookmarks_item_"+id);
	n.setAttribute("mode","bookmark");
	dojo.byId("bookmarks_meta").appendChild(n);
	this.storeBookmarks();
	
}

LovoQueryManager.prototype.showSendResult = function(type) {
  
  var manager = this;	
  var address = dojo.byId("sendas_input_"+type).value;
  var comment = "";
  if (type == "email") {
    comment = dojo.byId("sendas_input_comment").value;
  }
  
  dojo.byId("right_container_send_content").innerHTML = this.getLoadingDiv();
  
  dojo.io.bind({
    	url: "../send/"+manager.getCurrentTransId()+"/"+manager.getCurrentIdentifier()+"/"+manager.currentRoleId+"/"+address+"/"+type,
    	method: "POST",
    	postContent: "comment=" + comment,
    	load: function(type, data, evt){
    		dojo.byId("right_container_send_content").innerHTML = data;
    	},
   		error: function(type, error){
   			alert(error.message);
   		},
    	mimetype: "text/html"
	});			
  
}

LovoQueryManager.prototype.showReview = function(type) {
  
  dojo.byId("right_container_review_content").style.display = "block";
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  
  var manager = this;	
  
  dojo.io.bind({
    	url: "../review/" + manager.currentRoleId + manager.tabquerystring,
    	load: function(type, data, evt){
    		dojo.byId("right_container_review_content").innerHTML = data;
    		var rating = dojo.byId("review_userrating");
		    if (rating != null) {
		    	dojo.byId("rightRating").setAttribute("class","stars stars_green_" + rating.getAttribute("value"));
		    	dojo.byId("rightRating").setAttribute("className","stars stars_green_" + rating.getAttribute("value"));
		    	var leftRating = dojo.byId("leftRating_" + rating.getAttribute("roleId"));
		    	if (leftRating != null) {
			      leftRating.setAttribute("class","stars stars_" + rating.getAttribute("value"));
		    	  leftRating.setAttribute("className","stars stars_" + rating.getAttribute("value"));		    	
		    	}
		    }
    		
    	},
   		error: function(type, error){
   			alert(error.message);
   		},
    	mimetype: "text/plain"
	});			
  
}

LovoQueryManager.prototype.showWeather = function() {
  
  dojo.byId("right_container_weather_content").style.display = "block";
  dojo.byId("right_container_weather_content").innerHTML = this.getLoadingDiv();
  
  var manager = this; 
  
  dojo.io.bind({
      url: "../weather/" + manager.getCurrentTransId() + "/" + manager.getCurrentIdentifier()+ "/" + manager.currentRoleLat + "/" + + manager.currentRoleLon,
      load: function(type, data, evt){
        dojo.byId("right_container_weather_content").innerHTML = data;
      },
      error: function(type, error){
        dojo.byId("right_container_weather_content").innerHTML = "Fehler beim Berechnen des Wetters!";
      },
      mimetype: "text/plain"
  });     
  
}

LovoQueryManager.prototype.startTestReview = function() {
	this.testReviewCount=0;
	this.testReview();
}

LovoQueryManager.prototype.testReview = function() {
  
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  
  var manager = this;	
  
  dojo.io.bind({
    	url: "../review/" + manager.currentRoleId,
    	load: function(type, data, evt){
    		dojo.byId("right_container_review_content").innerHTML = data;
    		
    		var rating = dojo.byId("review_userrating");
		    if (rating != null) {
		    	dojo.byId("rightRating").setAttribute("class","stars stars_green_" + rating.getAttribute("value"));
		    	dojo.byId("rightRating").setAttribute("className","stars stars_green_" + rating.getAttribute("value"));
		    	var leftRating = dojo.byId("leftRating_" + rating.getAttribute("roleId"));
		    	if (leftRating != null) {
			      leftRating.setAttribute("class","stars stars_" + rating.getAttribute("roleId"));
		    	  leftRating.setAttribute("className","stars stars_" + rating.getAttribute("roleId"));		    	
		    	}
		    } 
		    dojo.debug("retreived review #" + manager.testReviewCount);
		    manager.testReviewCount++;
    		if (manager.testReviewCount < 1000) {
    			manager.testReview();
    		}
    	},
   		error: function(type, error){
   			alert(error.message);
   		},
    	mimetype: "text/html"
	});			
  
}

LovoQueryManager.prototype.submitReview = function(text,subject,criteria, check,date) {
  
  var ok= true;
  var error="";  
  if (check == false) {
     error += "Bitte bestätige die Richtigkeit Deiner Angaben!\n";
     ok= false;
  }
  
  if (subject.length == 0) {
     error +=  "Die Bewertung benötigt einen Titel!\n";
     ok= false;
  }  
  
  if (criteria.indexOf("=1")==-1 && criteria.indexOf("=2")==-1 && criteria.indexOf("=3")==-1 && criteria.indexOf("=4")==-1 && criteria.indexOf("=5")==-1) {
  	 error += "Bitte mindestens eine Bewertung abgegeben!\n";
     ok= false;
  }

  //var date = dojo.widget.byId("review_date_widget").getDate().getTime()
  
  if (date.getTime() >  new Date().getTime()) {
     error +=  "Kein zukünftiges Datum erlaubt!\n";
     ok= false;
  }
  

  if (ok==false) {
  	alert(error);
  	return;
  }
  

  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "";
  
  q += "text=" + text.replace(/&/g,"xampx");
  q += "&subject=" + subject.replace(/&/g,"xampx");
  q += "&date=" + date.getTime();
  q += criteria;
  
  dojo.io.bind({
    	url: "../review-commit/" + manager.currentRoleId,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Speichern der Bewertung!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
  
}

LovoQueryManager.prototype.updateReview = function(text,subject,criteria, check,id,date) {
  
  var ok= true;
  var error="";  
  if (check == false) {
     error += "Bitte bestätige die Richtigkeit Deiner Angaben!\n";
     ok= false;
  }
  
  if (subject.length == 0) {
     error +=  "Die Bewertung benötigt einen Titel!\n";
     ok= false;
  }  
  
  if (criteria.indexOf("=1")==-1 && criteria.indexOf("=2")==-1 && criteria.indexOf("=3")==-1 && criteria.indexOf("=4")==-1 && criteria.indexOf("=5")==-1) {
  	 error += "Bitte mindestens eine Bewertung abgegeben!\n";
     ok= false;
  }

  //var date = dojo.widget.byId("review_date_widget").getDate().getTime()
  if (date.getTime() >  new Date().getTime()) {
     error +=  "Kein zukünftiges Datum erlaubt!\n";
     ok= false;
  }
  

  if (ok==false) {
  	alert(error);
  	return;
  }
  

  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "";
  
  q += "text=" + text.replace(/&/g,"xampx");
  q += "&subject=" + subject.replace(/&/g,"xampx");
  q += "&date=" + date.getTime();
  q += "&review-id=" + id;
  q += criteria;
  
  dojo.io.bind({
    	url: "../review-update/" + manager.currentRoleId,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Speichern der Bewertung!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
  
}

LovoQueryManager.prototype.commentReview = function(text,id) {
  
  if (text.length == 0) {
     alert("Die Antwort benötigt einen Text!");
     return;
  }  
  
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "comment=" + text.replace(/&/g,"xampx");

  dojo.io.bind({
    	url: "../review-comment/" + manager.currentRoleId + "/" + id,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Erstelen der Antwort!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.commentRole = function(text,subject) {
  
  if (subject.length == 0) {
     alert("Die Nachricht benötigt einen Betreff!");
     return;
  }  
  
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "comment=" + text.replace(/&/g,"");
  q += "&subject=" + subject;
  q += "&roleName=" + dojo.byId("rightTabHeaderTitle").innerHTML;

  dojo.io.bind({
    	url: "../role-comment/" + manager.currentRoleId,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Senden!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.complainReview = function(reviewId,targetId,type,text) {
  
  if (text.length == 0) {
     alert("Die Nachricht benötigt einen Text!");
     return;
  }
  
  
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "text=" + text.replace(/&/g,"");
  q += "&targetId=" + targetId;
  q += "&type=" + type;
  q += "&identifier=" + this.getCurrentIdentifier();

  dojo.io.bind({
    	url: "../review-complain/" + manager.currentRoleId + "/" + reviewId,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Speicher der Meldung!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.rateReview = function(value,id) {
  
  dojo.byId("right_container_review_content").innerHTML = this.getLoadingDiv();
  var manager = this;	
  var q = "value=" + value;

  dojo.io.bind({
    	url: "../review-rate/" + manager.currentRoleId + "/" + id,
    	method: "POST",
    	postContent: q,
    	load: function(type, data, evt){
    		manager.showReview();
    	},
   		error: function(type, error){
   			alert("Fehler beim Reten der Bewertung!");
   			manager.showReview();
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.addFacetRating = function(id,title,counts,initialValue) {
      
      var oTbl = dojo.byId('browser_facet_content_userrating_table');
      
      var  oTR= oTbl.insertRow(this.facetRatingCount);
      var  oTD= oTR.insertCell(0);      
      
      if (this.facetRatingCount > 1) {
        oTD.setAttribute('style','padding-left:15px');
        oTD.innerHTML="oder <b>"+title+"</b>";
      } else {
        oTD.innerHTML="<b>"+title+"</b>";
      }
      var  oTD= oTR.insertCell(1);      
      oTD.innerHTML="<img src='../../lovo-resources/img/review_input_-1.png' usemap='#map_facet_rating_"+id+"' style='border:0px;margin-left:3px' id='facet_rating_"+id+"' name='facet_rating_"+id+"' />";
      oTD.setAttribute('style','background:white'); 
      var  oTD= oTR.insertCell(2);     
      oTD.innerHTML="(<span id='facet_rating_"+id+"_count'>keine Auswahl</span>)";
      var  oTD= oTR.insertCell(3);
      var imageId = "'" + id + "'";
      var zero = "'Keine Auswahl!'";      
      var map = "";
      map += '<map name="map_facet_rating_'+id+'">';
      map += '<area shape="rect" coords="0,0,16,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',-1,'+zero+')" />';
      map += '<area shape="rect" coords="16,0,32,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',1,'+this.getRatingFacetString(counts,0)+')" />';
      map += '<area shape="rect" coords="32,0,48,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',2,'+this.getRatingFacetString(counts,1)+')" />';
      map += '<area shape="rect" coords="48,0,64,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',3,'+this.getRatingFacetString(counts,2)+')" />';
      map += '<area shape="rect" coords="64,0,80,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',4,'+this.getRatingFacetString(counts,3)+')" />';
      map += '<area shape="rect" coords="80,0,96,15" href="javascript:queryManager.facetRatingToggleValue('+imageId+',5,'+this.getRatingFacetString(counts,4)+')" />';
      map += '</map>';
      oTD.innerHTML=map;
      this.facetRatingCount++;
      
      if (this.facetRatingCount == 1) {
        var  oTR= oTbl.insertRow(this.facetRatingCount);
       var  oTD= oTR.insertCell(0);      
       var  oTD= oTR.insertCell(1);  
       oTD.setAttribute('style','background:white');     
      var  oTD= oTR.insertCell(2);     
      oTD.innerHTML="<div style'height:10px'/>";
      var  oTD= oTR.insertCell(3);
        this.facetRatingCount++;
      }
      
      if (initialValue > -1) {
	      this.facetRatingToggleValue(id,initialValue,this.getRatingFacetString(counts,initialValue - 1).replace('\'','').replace('\'',''));
      }
  
}

LovoQueryManager.prototype.getRatingFacetString = function(counts, index) {
  var c = 0
  for (var i = index; i<5; i++) {
    if (counts[i] > 0) {
      c += counts[i];    
    }
  }
  if (c < 1) {
    return "'Keine Tipps gefunden!'"
  }
  if (c == 1) {
    return "'<b>1</b> Tipp gefunden!'"
  }
  return "'<b>" + c +  "</b> Tipps gefunden!'"
}

LovoQueryManager.prototype.facetRatingToggleValue = function(id,value,count) {
      
      if (value < 1) {
        value = -1;
      }
      document.images["facet_rating_"+id].src="../../lovo-resources/img/review_input_" + (value) + ".png";
      dojo.byId("facet_rating_"+id+'_count').innerHTML = count;
      
      var it = this.currentFacetFacetItems.getIterator();
      while(!it.atEnd()) {
        var item = it.get() + "";
        if (item != null && item.indexOf(id) > -1) {
          this.currentFacetFacetItems.remove(item);
        }
      }   
      if (value < 1 || count.indexOf("Keine") > -1) {
        return;
      } 
      var link = id + ":[" + value + "0 TO 50]";
      this.currentFacetFacetItems.add(link);
}

LovoQueryManager.prototype.reviewToggleValue = function(id,value) {
      //dojo.html.setStyle(dojo.byId('review_check_'+id ),'left',((value-1)*28+3)+'px');
      if (value < 1) {
      	value = -1;
      }
      document.images["review_input_star_"+id].src="../../lovo-resources/img/review_input_" + (value) + ".png";
      dojo.byId('review_value_'+id).value=value;
    }
    
LovoQueryManager.prototype.toggleDiv = function(id,hiddenOnes,source,hiddenSourcs) {
      var target = dojo.byId(id);
      if (target == null) {
      	return;
      }
      if (target.style.display == 'none') {
	      target.style.display = 'block'; 
	      dojo.html.addClass(source,"selected"); 	    
      } else {
      	target.style.display = 'none';
      	dojo.html.removeClass(source,"selected"); 	
      }
      if (hiddenOnes == null) {
      	return;
      }
      
      for (var i = 0; i < hiddenOnes.length; ++i) {
        if (dojo.byId(hiddenOnes[i]) != null && dojo.byId(hiddenOnes[i]).style != null) {
      		dojo.byId(hiddenOnes[i]).style.display = 'none';
        }
      }
      if (hiddenSourcs == null) {
      	return;
      }
      
      for (var i = 0; i < hiddenSourcs.length; ++i) {
        if (dojo.byId(hiddenSourcs[i]) != null && dojo.byId(hiddenSourcs[i]).style != null) {
      		dojo.html.removeClass(dojo.byId(hiddenSourcs[i]),"selected"); 	
        }
      }
}    

LovoQueryManager.prototype.toggleMapDiv = function(id,hiddenOnes, toggleCrosshair) {
      var target = dojo.byId(id);
      if (target == null) {
      	return;
      }
      if (target.style.display == 'none') {
	      target.style.display = 'block'; 
	      if(toggleCrosshair) {
	      	dojo.byId("crosshairs").style.display = "none";
	      }
      } else {
      	target.style.display = 'none';
      	 if(toggleCrosshair) {
	      	dojo.byId("crosshairs").style.display = "block";
	      }
      }
      if (hiddenOnes == null) {
      	return;
      }
      
      for (var i = 0; i < hiddenOnes.length; ++i) {
        if (dojo.byId(hiddenOnes[i]) != null && dojo.byId(hiddenOnes[i]).style != null) {
      		dojo.byId(hiddenOnes[i]).style.display = 'none';
        }
      }
}    

LovoQueryManager.prototype.toggleMenu = function(id,hiddenOnes) {
      var target = dojo.byId(id);
      target.style.color="black";
      target.style.fontWeight="bold";
      for (var i = 0; i < hiddenOnes.length; ++i) {
      	dojo.byId(hiddenOnes[i]).style.color="green";
      	dojo.byId(hiddenOnes[i]).style.fontWeight="bold";
      }
}    
    
LovoQueryManager.prototype.reviewDrag = function(event) {
      if (!event) event = window.event;
      if (this.dragging) {
       var offset =  event.clientX - this.startx;
       var w = dojo.html.getElementBox(dojo.byId('box1')).width + offset;
       dojo.byId('box3').style.width = (600-w-40) + "px";;
       dojo.byId('box1').style.width = w + "px";
       this.startx = this.startx+offset;
       dojo.html.scrollIntoView(dojo.byId('anchor'+(Math.round(w / (600/12)+1))));
      }
    }
    
 LovoQueryManager.prototype.reviewDragEnd = function(event) {
 	if (!event) event = window.event;
      if (this.dragging) {  
       this.dragging=false;
       //dojo.byId("deb").innerHTML=dojo.byId("deb").innerHTML+"<br/>"+"end";
       window.onmousemove = null;
       window.onmouseup = null;
       dojo.byId('box2').setAttribute("class", "normal");
       dojo.byId('box2').setAttribute("className", "normal");
      }
    }

LovoQueryManager.prototype.sendBookmarksAsPdf = function() {
	var manager = this;	
  	var queryString = "?ids=";
  
 	var element = dojo.dom.firstElement(dojo.byId("bookmarks_meta"),"div");
  	while (element != null) {
  		queryString+=element.getAttribute("rid")+";";
		element = dojo.dom.nextElement(element,"div");
  	}
  	
  	window.open("../lovo_pdfguide_"+ new Date().getFullYear() + new Date().getMonth() + new Date().getDate() + new Date().getHours() + new Date().getMinutes()+new Date().getSeconds()+".pdf"+ queryString);
}

LovoQueryManager.prototype.sendBookmarks = function(medium) {
  
  var manager = this;	
  var queryString = "?ids=";
  
  var element = dojo.dom.firstElement(dojo.byId("bookmarks_meta"),"div");
  while (element != null) {
  	queryString+=element.getAttribute("rid")+";";
	element = dojo.dom.nextElement(element,"div");
  }
  
  if (medium == "email") {
	 queryString+="&email="+escape(dojo.byId("bookmarks_send_email").value); 	
  } else if (medium == "push") {
	 queryString+="&msisdn="+escape(dojo.byId("bookmarks_send_push").value); 	
  }
  
  dojo.byId("browser_facet_current_cloud").innerHTML = this.getLoadingDiv();
  
  dojo.io.bind({
    	url: "../send-"+medium+queryString,
    	load: function(type, data, evt){
    		dojo.byId("browser_facet_current_cloud").innerHTML = data;
    	},
   		error: function(type, error){
   			alert(error.message);
   		},
    	mimetype: "text/html"
	});			
}

LovoQueryManager.prototype.storeBookmarks = function(medium) {
  
  var manager = this;	
  var queryString = "?ids=";
  
  var element = dojo.dom.firstElement(dojo.byId("bookmarks_meta"),"div");
  while (element != null) {
  	queryString+=element.getAttribute("rid")+";";
	element = dojo.dom.nextElement(element,"div");
  }
  
  dojo.io.bind({
    	url: "../store-bookmarks"+queryString,
    	load: function(type, data, evt){
    		//dojo.debug("bookmarks stored");
    	},
   		error: function(type, error){
   			dojo.debug("error storing bookmarks:"+error.message);
   		},
    	mimetype: "text/html"
	});			
  
}

LovoQueryManager.prototype.showTravelResult = function() {
  var result_div = document.getElementById("travel_result");
  var locate = document.getElementById("travel_locate").value;
  dojo.byId('travel_input').style.display='none';
  dojo.byId('travel_result').style.display='block'
  dojo.byId("travel_result").innerHTML = this.getLoadingDiv();
  
  var queryString = "";
  queryString+="type=" + this.travelCurrentType;
  queryString+="&country=" + this.currentCountry;
  queryString+="&city=" + encodeURI(dojo.byId("travel_city").value);
  queryString+="&postal-code=" + encodeURI(dojo.byId("travel_plz").value);
  queryString+="&street=" + encodeURI(dojo.byId("travel_street").value);
  queryString+="&house-no=" + encodeURI(dojo.byId("travel_house").value);
  
  var manager = this;	
  dojo.io.bind({
    	url: "../travel/" + manager.getCurrentTransId() + "/" + manager.getCurrentIdentifier()+ "/" + locate + "/"+manager.currentRoleId,
    	method: "POST",
    	postContent: queryString, 
    	load: function(type, data, evt){
    		dojo.byId("travel_result").innerHTML = data;
    	},
   		error: function(type, error){
   			dojo.debug(error.message);
   		},
    	mimetype: "text/html"
	});	
 
}

LovoQueryManager.prototype.toggleTravelAddress = function() {
   var value = document.getElementById("travel_locate").value;
   if (value==undefined) {
     return;
   }
   
   if (value==2) {
     document.getElementById("travel_address").style.display="block";  	
   } else {
     document.getElementById("travel_address").style.display="none";  	
   }
   
   if (value==0) {
     document.getElementById("travel_home_display").style.display="block";  	
   } else {
     document.getElementById("travel_home_display").style.display="none";  	
   }
}

LovoQueryManager.prototype.toggleBookmark = function(bool) {
	if (bool) {
		dojo.byId("right_container_detail_bookmark_on").style.display="none";
		dojo.byId("right_container_detail_bookmark_off").style.display="block";
	} else {
		
		dojo.byId("right_container_detail_bookmark_on").style.display="block";
		dojo.byId("right_container_detail_bookmark_off").style.display="none";
	}
}

LovoQueryManager.prototype.showImageTab = function() {
	dojo.widget.byId("rightTabContainer").selectChild(dojo.widget.byId("righttab2"));
}

LovoQueryManager.prototype.checkEmptyText = function(text) {
	if (text == null || text.replace(/[^a-zA-Z0-9äöüÖÄÜß]/g,'') == '') {
		alert('Leere Suche ist nicht möglich!');
		return false;
	}
	
	return true;
}

LovoQueryManager.prototype.showLocationTab = function(target, hide) {
	
	dojo.byId(target).style.display="block";
	dojo.byId(hide).style.display="none";
	
}

LovoQueryManager.prototype.showRegion = function() {
	
	var tree = dojo.widget.byId('treeSelector');
	if (tree.selectedNode != null) {
		this.setMapTo(tree.selectedNode.widgetId);
	}
}

LovoQueryManager.prototype.regionsExpanded = function() {
	
	alert("test");
}

function xmlToHtml(node, targetDoc) {
  var ELEMENT_NODE = 1;
  var ATTRIBUTE_NODE = 2;
  var TEXT_NODE  = 3;
  var CDATA_SECTION_NODE = 4;
    
  switch(node.nodeType) {
	  case ELEMENT_NODE:
	    var element = targetDoc.createElement(node.nodeName);
	    var attrs = node.attributes;
	    for (var i = 0; i < attrs.length; i++) {
	      var attr = attrs[i];
	      element.setAttribute(attr.nodeName, attr.nodeValue);
	    }
	    var children = node.childNodes;
	    for (var j = 0; j < children.length; j++) {
	      var imported = xmlToHtml(children[j], targetDoc);
	      if (imported) element.appendChild(imported);
	    }
	    return element;
	    break;

	  case TEXT_NODE:
	    return targetDoc.createTextNode(node.nodeValue);
	    break;

	  case CDATA_SECTION_NODE:
	    return targetDoc.createTextNode(node.nodeValue);
	    break;
  }  
}

function textCounter(field, countfield, maxlimit) {
if (field.value.length > maxlimit) {
field.value = field.value.substring(0, maxlimit);
field.scrollTop = field.scrollHeight - field.clientHeight;
}
// otherwise, update 'characters left' counter
else 
countfield.innerHTML = maxlimit - field.value.length;
}

function createBeforeAdvice(obj, methodName, callbackFunction) {
	var oldMethod = obj[methodName];
	obj[methodName] = function() {
		callbackFunction.apply(this, arguments);
		oldMethod.apply(this,arguments);
	}
}



 

