mapView=false;

gmap_data=[];

function do_unload(){

GUnload();
}

function enter_item(id,click){
	if (mapView) mapView.highlightFromList(id,click);
}

function open_link(marker){
	
	if (marker.data.category && marker.data.category=="hotelsystem"){
		var hotelsystem_win=open(marker.link,"hotel_popup");
	}
	else document.location.href=marker.link;
	
/*	if (jQuery.browser.mozilla) {
		console.log(marker);
		}*/
}

function getItems(category){
if (!gmap_data.categories) return;
var catItems=[];
var allCategories=gmap_data.categories;
	for (var i=0; i<allCategories.length; i++){
		if (allCategories[i].name==category){
                        if (!allCategories[i].items) {
				continue;
                        }
			for (var u=0; u<allCategories[i].items.length; u++){
				catItems.push(allCategories[i].items[u]);
			}
		}
	}
return catItems;
}

function show_category(category){

	var items=getItems(category);
	//console.log(items);
	mapView.addItems(items);
	var ids=[];
	for (var i=0; i<items.length; i++){
		ids.push(items[i].id);
	}
	mapView.showItems(ids);
}

function hide_category(category){
	var items=getItems(category);
	var ids=[];
	for (var i=0; i<items.length; i++){
		ids.push(items[i].id);
	}
	mapView.hideItems(ids);
}

function items_filter(obj){
	var visible=obj.checked;
	var category=obj.value;
	if (visible) show_category(category);
	else hide_category(category);
}

function toggle_filter(){
	var panel=jQuery("#items_filter");
	if (panel){
		if (panel.css("display")=="none") {
			panel.css("display","block");
			jQuery("#showon").css("display","none");
			jQuery("#showoff").css("display", "block");
		}
		else {
			panel.css("display","none");
			jQuery("#showon").css("display","block");
			jQuery("#showoff").css("display", "none");
		}
	}
	
}

function filter_list_items(items){

if (include_ids.length==0) return items;

var filtered_items=[];
	for (var i=0; i<items.length; i++)
	{
		for (var u=0; u<include_ids.length; u++){
			if (items[i].id==include_ids[u]) filtered_items.push(items[i]);
		}
	}
return filtered_items;
}

function get_preselect_categories(){
	var categories=[];
	var checkboxes=jQuery(".kat-google-checked");

	//console.log(checkboxes);
	for (var i=0; i<checkboxes.length; i++){
		if (checkboxes[i].checked){
			var kat=checkboxes[i].value;
			categories.push(kat);
		}
	}
	return categories;
}

function loadData(){

	if (gmap_url && gmap_url!="" && mapView){

				
		//var now=new Date();

		//gmap_url+="&"+now.getMilliseconds();
		
		//console.log(gmap_url);
		
		jQuery.getJSON(gmap_url,function(gdata){
		
				//console.log(gdata.items);				
				
				
				if (!gdata.items || gdata.items.length==0) {
					gdata.items=[infopoint]
					include_ids.push(infopoint.id);
				};
				//console.log(gdata);

				// only for testing
				//data.categories=[{name:'kat1',items:[{id:3,num:0,lat:47.3,lng:15.3,title:'Title3',description:'desc3',hidden:true}]}];


				// consider only items that are shown in the current list
				var filtered_items=filter_list_items(gdata.items);
				
			
				gdata.items=filtered_items;
				
				var sel_categories=get_preselect_categories();

				
				for (var i=0; i<sel_categories.length; i++){
					for (var u=0; u<gdata.categories.length; u++){
						if (gdata.categories[u].name==sel_categories[i]){
							// add to normal items
							for (var x=0; x<gdata.categories[u].items.length; x++){
								// hide all category data initially
								var item=gdata.categories[i].items[x];
								item.category=sel_categories[i];
								gdata.items.push(item);
							}
						}						
					}
				}
				
				gmap_data=gdata;
				mapView.initData(gmap_data);
				
				
				jQuery(window).unload(function(){
				GUnload();
				});
	});
	}
	else {
		//mapView.initData({items:[{icon:'info.png',iconOver:'info.png',id:1,num:false,desc:false,title:'Informationsbüro Graz Tourismus',lat:'47.070193',lng:'15.439449'}]});
	
		mapView.initData({items:[infopoint]});
		
		var categories=get_preselect_categories();
		
		for (var i=0; i<categories.length; i++){
			showCategory(categories[i]);
		}
		
		jQuery(window).unload(function(){
		GUnload();
		});
		}
}



function nopointfound(){
	alert("Leider wurde keine Position zu dieser Adresse gefunden!");
}

searchMarker=null;

function geosearch(){

	if (searchMarker) mapView.map.removeOverlay(searchMarker);
	
	//var grazTopLeft={lat:47.11733618605657,lng:15.365066528320312};
	//var grazTopRight={lat:47.11733618605657,lng:15.499649047851562};
	//var grazBottomRight={lat:47.01069385510927,lng:15.499649047851562};
	//var grazBottomLeft={lat:47.01069385510927,lng:15.365066528320312};
	
	
	// borders of graz
	var latTop=47.11733618605657;
	var latBottom=47.01069385510927;
	var lngLeft=15.365066528320312;
	var lngRight=15.499649047851562;
	

	var input=document.searchform.search.value;
	
	if (input.length<2) {
		alert("Bitte geben Sie mindestens 2 Buchstaben ein!");
		return;
	}
	input+=" ,graz,österreich";
	mapView.geocoder.getLatLng(input,function(point){
		
		if (point==null) {
			nopointfound();
			return;
		}
		if (point.x<lngLeft || point.x>lngRight || point.y>latTop || point.y<latBottom){
			nopointfound();
			return;
		}
		if (point.x>15.44172 && point.x<15.44173 && point.y>47.06791 && point.y<47.06792){ // point when no correct point was found
			nopointfound();
			return;
		}
		
		var icon = new GIcon(G_DEFAULT_ICON);
		icon.image="/georss/geo/marker/_detail.png";
		icon.iconSize=new GSize(23,26);
		icon.iconAnchor=new GPoint(23/2,26);
		icon.shadowSize=new GSize(23*1.5,26);
		searchMarker=new GMarker(point, {
			icon:icon,
			zIndexProcess: function(){
				return 10000;
			}
		});
		mapView.map.addOverlay(searchMarker);
		mapView.map.setCenter(point);
		mapView.map.setZoom(13);
	});
}

jQuery(document).ready(function(){

	jQuery(window).unload(function(){
		GUnload();
		});
		
	jQuery(window).load(function(){
		init_map();
		});	
});

//if (!console.log) console.log = opera.postError