
/**
 * ???
 */
Navigo2.UI.Pois = function(/*HTMLElement*/element) 
{
	if(element!=undefined) {
		var panel = $(element).cloneNode(false);
	}
	else {
		var panel = {};
	}
	
	var scroller =  undefined;
	
	var defaultPoiId = undefined;
	var	geometry = { layer: ['poi-r','poi-s'], POIs: [], points: true,	hist: false, radius: false, POIs: {} };
	var last_addr = undefined;
	var last_pois = undefined;
	
	var mvaID = undefined;
	this.setMvaID = function(mva_id) {
		mvaID = mva_id;
	}
	
	var component_name = undefined;
	this.setComponentName = function(cname) {
		component_name = cname;
	}
	
	var defaultPoiId = undefined;
	this.setDefaultPoiId = function(id) {
		defaultPoiId = id;
	}
	
	var defPoisFilter = {};
	this.setDefPoisFilter = function(filter) {
		defPoisFilter = filter;
	}
	
	var poiDataSchema = {};
	this.setPoiDataSchema = function(schema) {
		poiDataSchema = schema;
	}
	
	var poisPerPage = 10;

	var events = {
		simple: {
			'mva_center': { event: 'flash:center' },
			'pm_poi_move': { event: 'pois:poiMove' },
			'pm_mouse_over': { event: 'flash:poiMouseOver'}, 
			'pm_mouse_out': { event: 'flash:poiMouseOut'},
			'tree_node_selected': { event: 'flash:treeNodeViewSelected'},
			'pm_poi_renumber': { event: 'flash:poiRenumber'}
			//'pm_update_cb':{event:'flash:refresh'}
		},
		menu: {
			'menu1': { event: 'flash:newAddress', layer: 'poi-r', description: 'Pokaż adres' }		
		},
		point: {
		},
		pois: {event:'flash:refresh'}
	};

	/**
	 * ???
	 */
	var validAddressFields = function() 
	{
		/*if(panel.category != undefined && panel.category.value != -1) {
			panel.address.removeClassName("error");
			return true;
		}*/
		if(panel.address.value == "") {
			panel.address.addClassName("error");
			return false;
		} else {
			panel.address.removeClassName("error");
			return true;
		}
	}
	
	/**
	 * ???
	 */
	var validTokenFields = function() 
	{
		if(panel.poisToken.value == "") {
			panel.address.addClassName("error");
			return false;
		} else {
			panel.address.removeClassName("error");
			return true;
		}
	}
	
	/**
	 * ???
	 */
	Event.observe(document, 'pois:show', function(event) 
	{
		if(!panel.initialised) {
			var cname = "component.pois";
			if(component_name != undefined && component_name != '') {
				cname = 'component.' + component_name;
			}
			Navigo2.DAO.getComponent(cname, function(html) {
				panel.update(html);
				panel.address = panel.select("input[elementType='address']")[0];
				panel.radius = panel.select("input[elementType='radius']");
				panel.token = panel.select("input[elementType='token']")[0];
				panel.category = panel.select("select[elementType='category']")[0];
				//panel.category.update(Navigo2.unescape('&lt;option value="0"&gt;Hotele&lt;/option&gt;\n&lt;option value="1"&gt;**** czterogwiazdkowe&lt;/option&gt;'));
				panel.hint = panel.address.adjacent("input[hintType='address']")[0];
				panel.address.value = "";
				
				
				var catTmpl = new Template('&lt;option value="#{id}"&gt;#{spaces}#{name}&lt;/option&gt;');
				var catTmpl1 = '&lt;option value="#{id}"&gt;'
				var catTmpl2 = '#{name}&lt;/option&gt;'
				var text = '';
				Navigo2.DAO.getPoisCategories(function (data) {
				
					function eval(categories, level) {
						categories.each(function(category) {
							var tabs = '';
							for(var i = 0; i < level; i++) {
								tabs += '-&nbsp;&nbsp;';
							}
							catTmpl = new Template(catTmpl1 + tabs + catTmpl2);
							text = text + catTmpl.evaluate(category) + '\n';
							if(category.categories != undefined) {
								eval(category.categories, level + 1);
							}
						});
					}	
				
					if(data.categories) {
						eval(data.categories, 0);
					//	data.categories.each(function(category) {
					//		text = text + catTmpl.evaluate(category) + '\n';
					//	});
						if(panel.category!=undefined) {
							panel.category.update(Navigo2.unescape(text));
						}
					}
				});
		
				var url = Navigo2.normalisedURL("getCityHints.do");
				Navigo2.Hint.decorate(panel.address, panel.hint, url, 
				{ 
					method: 'get', 
					paramName: "address", 
					minChars: 2 
				});
				panel.address.observe("keypress", function(e) {
					if(e.which == Event.KEY_RETURN) Navigo2.emitById("pois:findPoisNearTo", event.memo.id);
				});
				panel.info = panel.select("div[sectionType='info']")[0];
				panel.list = panel.select("div[sectionType='list']")[0];
				panel.multi = panel.select("div[panelType='multiresult']")[0];
				
				panel.poisList = panel.select("div[panelType='multiresult']")[0];
				panel.poisList.hide();
					
				panel.initialised = true;
			});
		}

		$(panel.id).replace(panel.show());
		//Navigo2.emit("pois:visible");

		Navigo2.emitById('map:flash', event.memo.id, geometry, events);
        if(last_pois != undefined && last_pois.pois != undefined) {
            Navigo2.emitById('map:clear_last_pois', event.memo.id);
            //Navigo2.emitById('map:cancel_pois_updates', event.memo.id, 'poi-1');
            Navigo2.emitById('map:setPOIs', event.memo.id, last_pois.pois, last_pois.layer);
            if(last_pois.zoomMap) {
                Navigo2.emitById('map:boundBox', event.memo.id, {	left:last_pois.bbox[0],
				    		    					right:last_pois.bbox[1],
				        							top:last_pois.bbox[2],
				        							bottom:last_pois.bbox[3]});
            }
                    Navigo2.emitById('map:save_last_pois_search', event.memo.id, last_pois.filter);
					Navigo2.emitById('map:save_last_pois_paging', event.memo.id, last_pois.pagingFilter);
					if(last_pois.layer == 'poi-1') {
						Navigo2.emitById('map:request_pois_updates', event.memo.id, 'poi-1', 2.0, 0.8);
					}
        }
		Navigo2.emitById('map:route', event.memo.id);
		Navigo2.emitById('menu:switch', event.memo.id, 2);
	});

	/**
	 * ???
	 */
	/* 
	Event.observe(document, 'pois:visible', function(event) 
	{
		
		var qry = document.location.href.toQueryParams();
		if(qry.x && qry.y && qry.s) {
			geometry.coords = [qry.x, qry.y];
			geometry.scale = qry.s;

			var poiX = Object.isArray(qry.px) ? qry.px : [qry.px].compact();
			var poiY = Object.isArray(qry.py) ? qry.py : [qry.py].compact();
		
			if(poiX.length > 0 && poiY.length > 0) {				
				Navigo2.emit('pois:locate', 'start', 0, [poiX[0], poiY[0]], qry.s);
			}

			if(qry.ex == "true") Navigo2.toggleMap();
		}
		Navigo2.emit('map:flash', geometry, events);
	});	
	*/

	/**
	 * ???
	 */
	Event.observe(document, 'pois:locate', function(event) 
	{
		if(!isNaN(event.memo.args[1]) && event.memo.args[2] != undefined) {
			Navigo2.DAO.findAddress(event.memo.args[0], event.memo.args[1], event.memo.args[2], function(data) 
			{
				if(data.address) {
					Navigo2.info(false);
					panel.address.value = data.address.address_full;
	
					Navigo2.emitById("map:POIs", event.memo.id, [[data.x92, data.y92, "0", 0, panel.address.value]]);
					var scale = event.memo.args[3] || -1;
					Navigo2.emitById("map:viewport", event.memo.id, [data.x92, data.y92], scale);
					Navigo2.emitById("map:home", event.memo.id, [data.x92, data.y92], scale);
				}
			})
		}
	});
	
	/**
	 * Handler wywolywany w momencie zmiany skali na mapie
	 * (gdy zachodzi potrzeba dociagniecia niewyswietlanych dotad punnktow poi)
	 */
	Event.observe(document, "flash:refresh", function(/*Event*/event) {
		//if(last_addr != undefined) {
		var flash_id = event.memo.args[event.memo.args.length-1];
		if(event.memo.id != undefined ) {
			flash_id = event.memo.id;
		}
			var token = (panel.token != undefined) ? panel.token.value : undefined;
			var categories = (panel.category != undefined) ? panel.category.value : undefined;
			Navigo2.emitById('map:refresh', flash_id, event, last_addr, token, categories);
		//}
	});

	/**
	 * Zmiana numeracji punktu POI
	 */
	Event.observe(document, 'flash:poiRenumber', function(event) {
		//alert('flash:poiRenumber');
	});
	
	/**
	 * ???
	 */
	Event.observe(document, 'flash:center', function(event) {
		Navigo2.emitById('map:home', event.memo.id);
	});

	/**
	 * ???
	 */
	Event.observe(document, 'pois:poiMove', function(event) {
		Navigo2.emitById('pois:locate', event.memo.id, 'start', 0, event.memo.args[3], -1);
	});
	
	/**
	 * ???
	 */
	Event.observe(document, 'flash:poiMouseOver', function(event) {
		var poi_id = event.memo.args[2];
		if($('iPoisMultiresultItem_'+poi_id) != undefined) {
			$('iPoisMultiresultItem_'+poi_id).setAttribute("class", "cPoisMultiresultItem_sel");
			var cbox = $('iPoisMultiresultItem_'+poi_id);
			scroller.makeVisibleYPart(cbox.offsetTop-cbox.parentNode.offsetTop,cbox.offsetHeight);
		}
	});
	
	/**
	 * ???
	 */
	Event.observe(document, 'flash:poiMouseOut', function(event) {
		var poi_id = event.memo.args[2];
		if($('iPoisMultiresultItem_'+poi_id)!=undefined) {
			//console.log('flash:poiMouseOut, poi id: ' + event.memo.args[1]);
			$('iPoisMultiresultItem_'+poi_id).setAttribute("class", "cPoisMultiresultItem");
		}
	});
	
	/**
	 * ???
	 */
	Event.observe(document, 'flash:treeNodeViewSelected', function(event) {
        if(event.memo.args[1] != undefined) {
            Navigo2.emitById('map:poisSearchWithScale', event.memo.args[event.memo.args.length-1], undefined, event.memo.args[1], 0, true, false);
        } else {
            Navigo2.emitById('map:setDefaultView', event.memo.args[event.memo.args.length-1]);
        }
		//Navigo2.emitById('pois:findByExtId', event.memo.args[event.memo.args.length-1], undefined, event.memo.args[1], 0, true, true);
	});
	
	/**
	 * ???
	 */
	Event.observe(document, 'flash:newAddress', function(event) {
		Navigo2.emitById('pois:locate', event.memo.id, 'start', 0, event.memo.args[1], -1);
	});

	/**
	 * ???
	 */
	Event.observe(document, 'map:ready', function(event) 
	{
		if($(panel.id) == $(panel)) {
			Navigo2.emitById('map:flash', event.memo.id, geometry, events);
		}
	});
	
	Event.observe(document, 'pois:list_item_mouse_over', function(event) {
		var poi_id = event.memo.args[0];
		Navigo2.emitById('map:simulate_poi_mouse_over', mvaID, 'poi-s', poi_id);	
	});
	
	Event.observe(document, 'pois:list_item_mouse_out', function(event) {
		var poi_id = event.memo.args[0];
		Navigo2.emitById('map:simulate_poi_mouse_out', mvaID, 'poi-s', poi_id);	
	});
	
	Event.observe(document, 'pois:list_item_mouse_click', function(event) {
		var poi_id = event.memo.args[0];
		Navigo2.emitById('map:simulate_poi_mouse_click', mvaID, 'poi-s', poi_id);
	});
	
	Event.observe(document, 'pois:center_on_poi', function(event) {
		var poi_id = event.memo.args[0];
		Navigo2.emitById('map:center_to_poi', mvaID, 'poi-s', poi_id); 
	});
	
	Event.observe(document, 'pois:send_poi_in_email', function(event) {
		//alert('email');
		var poi_id = event.memo.args[0];
		Navigo2.emitById('map:pois_mailto', mvaID, poi_id);
	});
	
	Event.observe(document, 'pois:findByExtId', function(/*Event*/event) {
		var extId = event.memo.args[0];
		var extCategories = event.memo.args[1];
		var flag = event.memo.args[2];
		var showOnMap = event.memo.args[3];
		var zoomMap = event.memo.args[4];
		var callback = event.memo.args[5];
        var scale = event.memo.args[6];
        var bbox = event.memo.args[7];
		Navigo2.info("javascript.info.dataReading");
		Navigo2.emitById('map:clear_last_pois', event.memo.id);        
		Navigo2.DAO.findPoisByExtId(extId, extCategories, flag, scale, bbox, function(data) {
			Navigo2.info(false);
			if(data.pois != undefined) {
				Navigo2.emitById('map:save_last_pois_by_ext', event.memo.id, event);
				if(zoomMap) {
					if(data.pois.length == 1) {
						var scale = 9;
						if(data.pois[0].visibility.from>=scale) {
							scale = data.pois[0].visibility.from;
						}
						if(data.pois[0].visibility.to<=scale) {
							scale = data.pois[0].visibility.to;
						}
						Navigo2.emitById('map:viewport', event.memo.id, [data.bbox[0], data.bbox[2]], scale);
	        		}
					else {
						var bbox = data.bbox;
						Navigo2.emitById('map:boundBox', event.memo.id, {	left:bbox[0],
			    		    					right:bbox[1],
			        							top:bbox[2],
			        							bottom:bbox[3]});
					}
				}
				if(showOnMap) {
					//Navigo2.emit('map:request_pois_updates', 'poi-1', 2.0, 1.75);
					//Navigo2.emit('map:flash',{ layer: 'poi-1', points: true,	hist: false, radius: false });
					//Navigo2.emit('pois:present', { poisDetails: data });

					Navigo2.emitById('map:setPOIs', event.memo.id, data.pois, 'poi-1');
					Navigo2.emitById('map:request_pois_updates', event.memo.id, 'poi-1', 1.0, 0.8);
				}
			}
			else {
				Navigo2.emitById('map:setPOIs', event.memo.id, [], 'poi-1');
			}
			if(callback!=undefined) {
				callback.apply(this, [data]);
			}
		});
	});
	
	/**
	 * @Deprecated nowa metoda to pois:search
	 */
	Event.observe(document, 'pois:findPois', function(/*Event*/event) {
		var token = event.memo.args[0];
		var categories = event.memo.args[1];
		var selectsIds = event.memo.args[2];
		var defaultValue = event.memo.args[3];
		var flag = event.memo.args[4];
		var callback = event.memo.args[5];
      
		Navigo2.DAO.findPois(token, categories, flag, undefined, undefined, function(data) {
			if(data.pois != undefined) {
				last_pois = data.pois;
				Navigo2.emitById('map:save_last_pois', event.memo.id, event);
				if(selectsIds != undefined) {
					$H(selectsIds).each(function(pair) {
						var t = new Template(pair.value.normal);
						var ts = new Template(pair.value.selected);
						var html = '';
						data.pois.each(function(poi, index) {
							if(defaultValue!=null && defaultValue == poi.id) {
								html = html + ts.evaluate(poi);
							}
							else {
								html = html + t.evaluate(poi);
							}
						});
						$(pair.key).update(html);
					});
				
				}
			}
			if(callback!=undefined) {
				callback.apply(this, [data]);
			}
			//Navigo2.emitById('map:request_pois_updates', event.memo.id, 'poi-1', 2.0, 1.75);
		});
	});
	
	Event.observe(document, 'pois:getById', function(/*Event*/event) {
		var id = defaultPoiId;
		var showPoi = event.memo.args[0];
		if(event.memo.args[1]!=undefined) {
			id = event.memo.args[1];
		}
		var callback = event.memo.args[2];
		var params = poiDataSchema;
		Navigo2.DAO.getPoi(id, function(data) {
			var bbox = data.bbox;
			var poi = data.pois[0];
			if (poi.address.zipCode != undefined && poi.address.zipCode.length > 0) {                                                  
				poi.address.zipCode = poi.address.zipCode + " ";                                                               
			}   
			//Navigo2.emit('pois:present', { poisDetails: data });
			if(showPoi) {
				var tooltip_brief_tmpl = new Template(tooltip_brief_body);
				var tooltip_detailed_tmpl = new Template(tooltip_detailed_body);
				//Navigo2.emitById('map:flash', event.memo.id, { layer: 'poi-s', points: true,	hist: false, radius: false });
				//Navigo2.emitById("map:setPOIs", event.memo.id, [[poi.x, poi.y, "0", 0, poi.info.name, tooltip_brief_tmpl.evaluate(poi), tooltip_detailed_tmpl.evaluate(poi), undefined, Navigo2.normalisedPoisImgURL(poi.icon.url)]], 'poi-s');
				Navigo2.emitById("map:setPOIs", event.memo.id, data.pois, 'poi-s');
				Navigo2.emitById('map:viewport', event.memo.id, [poi.x, poi.y], 7000);
				$H(params).each(function(pair) {
					if($(pair.key) != null){
                        var template = new Template(pair.value);
                        $(pair.key).update(template.evaluate(poi));
                    }
				});
			}
			if(callback!=undefined) {
				callback.apply(this, [poi]);
			}
		});	
	});
	
	/**
	 * Ogolna metoda wyszukujaca punkty POI, wyszukuje po tych kryteriach, ktore sa podane
	 * 
	 * atrybuty:
	 *  args[0] - filter - obiekt JSON z parametrami {
	 *		keyword - slowo kluczowe, szukane w nazwie punktu (ew moze w nazwie kategorii, do sprawdzenia)
	 *		id - id punktu 
	 *		categories - lista id kategorii (np: '3,4,128')
	 *  	extIds - lista zewnetrznych id (np: '3gshdj,SD4,1DF2a8') 
	 *		extCategories - lista zewnetrznych id (np: '3gshdj,SD4,1DF2a8')
	 *		flag - flaga 
	 *		addr - obiekt JSON zawierajacy wspolrzedne adresu wokol ktorego maja byc szukane punkty {x, y, sys}
	 *  } 
	 *  args[1] - pagingFilter - obiekt JSON z parametrami stronnicowania { page, perPage }
	 *  args[2] - showOnMap - flaga decydujaca czy punkty maja byc pokazane na mapie (true - tak, false - nie)
	 *  args[3] - zoomMap - flaga decydujaca czy na mapie ma byc zrobiony automatyczny zoom (true - tak, false - nie)
	 *  args[4] - showList - flaga decydujaca czy ma sie wyswietlic lista ze znalezionymi punktami w elementci ehtml o clasie .pagination_boty
	 *  args[5] - typ jaki zostanie przekazyany kontrolce flash np 'poi-r', 'poi-s', 'poi-1'
	 *  args[6] - scale - skala
	 *  args[7] - bbox - bounding box [left, top, right, bottom]
	 *  args[args.length-1] - callback - funkcja, ktora zostanie wywolana po znalezieniu punktow, jako argument zostanie przekazany JSON { pois, bbox }
	 */
	Event.observe(document, 'pois:search', function(/*Event*/event) {
		var filter = event.memo.args[0];
		var pagingFilter = event.memo.args[1];
		var showOnMap = event.memo.args[2];
		var zoomMap = event.memo.args[3];
		var showList = event.memo.args[4];
		var layer = event.memo.args[5];
		var scale = event.memo.args[6];
		var bbox = event.memo.args[7];
		var callback = event.memo.args[8];
		
			
		if(filter == undefined) {
			filter = defPoisFilter;
		}
			
		Navigo2.info("javascript.info.dataReading");
		Navigo2.emitById('map:clear_last_pois', event.memo.id);
		//Navigo2.emitById('map:cancel_pois_updates', event.memo.id, 'poi-1');
		Navigo2.DAO.searchPOIs( filter, pagingFilter, scale, bbox, function(data) {
			Navigo2.info(false);
			if(data.pois != undefined) {
                if(showOnMap) {
					if(zoomMap) {
						if(data.pois.length == 1 && filter.addr == undefined) {
							var scale = 9;
							if(data.pois[0].visibility.from>=scale) {
								scale = data.pois[0].visibility.from;
							}
							if(data.pois[0].visibility.to<=scale) {
								scale = data.pois[0].visibility.to;
							}
							Navigo2.emitById('map:viewport', event.memo.id, [data.bbox[0], data.bbox[2]], scale);
		        		}
						else {
							var bbox = data.bbox;
							Navigo2.emitById('map:boundBox', event.memo.id, {	left:bbox[0],
				    		    					right:bbox[1],
				        							top:bbox[2],
				        							bottom:bbox[3]});
						}
					}
					Navigo2.emitById('map:setPOIs', event.memo.id, data.pois, layer);
					if(layer == 'poi-1') {
						Navigo2.emitById('map:save_last_pois_search', event.memo.id, filter);
						Navigo2.emitById('map:request_pois_updates', event.memo.id, 'poi-1', 2.0, 0.8);
					}
                    if(filter.type != undefined && filter.type == 'findPoisNearTo') {
                        last_pois = { pois: data.pois,
                                      layer: layer,
                                      zoomMap : zoomMap,
                                      bbox : data.bbox,
                                      pagingFilter : pagingFilter,
                                      filter : filter
                                      };
                    }
				}
				if(showList) {
					Navigo2.info(false);
					Navigo2.emitById('map:save_last_pois_paging', event.memo.id, pagingFilter);
					var body = panel.poisList.select('.pagination_body')[0];
					var tmpl = "<div id=\"iPoisMultiresultItem_#{id}\" class=\"cPoisMultiresultItem\"" + 
								"onclick=\"return Navigo2.emit('pois:list_item_mouse_click', #{id});\"" +
								"onMouseOver=\"return Navigo2.emit('pois:list_item_mouse_over', #{id});\"" + 
								"onMouseOut=\"return Navigo2.emit('pois:list_item_mouse_out', #{id});\">" +
									"<span class=\"cPoisMultiresultItem_NAME\" style=\"float: left;\"><b>#{info.name}</b></span><br/>" +
									"<span class=\"cPoisMultiresultItem_ADDRESS\" style=\"float: left;\">#{address.city}, #{address.street}, #{address.no}</span><br/>" +
									"<span class=\"cPoisMultiresultItem_BUTTONS\" style=\"float: left;\">" +
										"<a class=\"cShowOnMapButton\" href=\"\" onclick=\"return Navigo2.emit('pois:center_on_poi', #{id});\">pokaz na mapie</a>" + 
									"</span><br/>" +
								"</div>";
					scroller = new Navigo2.ResultsBoxScroller(body);
					var pageCurrent = 0;
					if(pagingFilter!=undefined) {
						pageCurrent = pagingFilter.page-1;
					}
					Navigo2.Pagination.decorate(panel.poisList, data.pois, 
					{ 
						pageSize: poisPerPage,
						pageCurrent: pageCurrent,
						template: tmpl,
						filtered: {},
						filter: filter,
						mvaId: event.memo.id
					});
					panel.poisList.show();
					Navigo2.emitById("map:panelBoxResize", event.memo.id);
					body.style.visibility = 'visible';
					
					var count = data.total;
					//panel.list.update(Navigo2.unescape(data.hints));
					panel.info.select("span[elementType='count']")[0].update(' ' + count + ' ');
					//panel.multi[count > 1 ? "show" : "hide"]();
				}
			}
			else {
				Navigo2.info('javascript.warning.poiNotFound');
				if(panel.poisList!=undefined) {
					panel.poisList.hide();
				}
				Navigo2.emitById('map:setPOIs', event.memo.id, [], layer);
				geometry.POIs = [];
				Navigo2.emitById('map:save_last_pois_paging', event.memo.id, pagingFilter);
				if(layer == 'poi-1') {
					Navigo2.emitById('map:save_last_pois_search', event.memo.id, filter);
					Navigo2.emitById('map:request_pois_updates', event.memo.id, 'poi-1', 2.0, 0.8);
				}
                last_pois = undefined;
			}
			/*if(layer != 'poi-1') {
				
			}*/
			if(callback!=undefined) {
				callback.apply(this, [data]);
			}
		});
		
	});
	
	/**
	 * Pokazanie poi
	 * Zdarzenie klikniecia na panelu przycisku 'Pokaz punkty poi'
	 */
	Event.observe(document, 'pois:findPoisNearTo', function(/*Event*/event) {
		if(validAddressFields()) {
			var objectId = (event.memo.args[0] != undefined) ? event.memo.args[0] : 0;
			var addr = (event.memo.args[1] != undefined) ? event.memo.args[1] : panel.address.value;
			var token = (panel.token != undefined ) ? panel.token.value : undefined;
			var category = (panel.category != undefined) ? panel.category.value : undefined;
			if(addr != undefined && addr != '') {
				Navigo2.info("javascript.info.addressSearch");
				Navigo2.DAO.getAddressData(addr, objectId, function(data)
				{
					if(data.address) {
						Navigo2.info(false);
						last_addr = data.address;
						//geometry.layer = 'poi-r';
						Navigo2.emitById('map:flash', event.memo.id, geometry, events);
						//Navigo2.emitById("map:POIs", event.memo.id, [[last_addr.x92, last_addr.y92, "-2", -2, last_addr.full, undefined, undefined, undefined, Navigo2.normalisedURL('image/address.gif')]], 'poi-r');
						Navigo2.emitById("map:POIs", event.memo.id, [[last_addr.x92, last_addr.y92, "-2", -2, last_addr.full]], 'poi-r');
						//Navigo2.emitById('map:save_last_addr_pois', event.memo.id, last_addr);
						/*if(last_addr.xMin != "") {
							Navigo2.emitById("map:boundBox", event.memo.id, {left: last_addr.xMin, right: last_addr.xMax, top: last_addr.yMin, bottom: last_addr.yMax});
						} else {
							Navigo2.emitById("map:viewport", event.memo.id, [last_addr.x92, last_addr.y92], 1);
						}
						Navigo2.emitById("map:home", event.memo.id, [last_addr.x92, last_addr.y92], undefined);
	
						if(data.address.level == "street") {
							Navigo2.emitById("map:street", event.memo.id, data.address.objectId);
						}*/
						var radius = 5000;
						panel.radius.each(function(rad) {
							if(rad.checked) {
								radius = rad.value;
							}
						});
						var address = {x:last_addr.x92, y:last_addr.y92, sys: 'S92', radius: radius};
						var filter = {
                                type : 'findPoisNearTo',
								addr : address,
								categories : category
						};
						var pagingFilter = {
								page: 1,
								perPage: poisPerPage
						};
						Navigo2.emitById("map:panelBoxResize", event.memo.id);
						//geometry.layer = 'poi-s';
						Navigo2.emitById('pois:search', event.memo.id, filter, pagingFilter, true, true, true, 'poi-s');
					}
					if(data.message.length > 0) {
						Navigo2.warning(data.message);
					}
				});
			}
			else {
				var filter = {
						categories : category
				};
				Navigo2.emitById("map:POIs", event.memo.id, []);
				Navigo2.emitById('pois:search', event.memo.id, filter, undefined, true, true, true, 'poi-s');
			}
		} else {
			Navigo2.warning("javascript.warning.fillNecessaryFields");
		}
	});	
}

