var map;
var domen=1;
var vonalak=[];
var vonalszin=[];
var markerek=[];
var csoportok=[];
var ikonok=[];
var ikonnevek=[];
var jelolo_marker;

var obj_id=0;

var kozeppont = new GLatLng();
var objpont = new GLatLng();
var terulet = new GLatLngBounds();
var minlat=0;
var maxlat=0;
var minlng=0;
var maxlng=0;
var rminlat=0;
var rmaxlat=0;
var rminlng=0;
var rmaxlng=0;
var zoomszint;

function load_map(lat0,lng0,zoom0) { if (GBrowserIsCompatible()) {
load_icons();
map = new GMap2(document.getElementById('terkep'));
map.enableContinuousZoom();
map.enableDoubleClickZoom();
map.setCenter(new GLatLng(lat0,lng0),zoom0,G_NORMAL_MAP);
zoomszint=zoom0;
if (obj_id>0) {
 jelolo_marker = new GMarker(new GPoint(lng0,lat0),{icon:ikonok['jelolo'],clickable:false});
 map.addOverlay(jelolo_marker);
 objpont = new GLatLng(lat0,lng0);
 load_markers(0);
// load_and_jump_to_objpont(obj_id);
} else {
 jelolo_marker = new GMarker(new GPoint(0,0),{icon:ikonok['jelolo'],clickable:false});
 map.addOverlay(jelolo_marker);
 load_markers(0);
}
GEvent.addListener(map,'zoomend',function(regi,uj) {
 if (uj<10) map.setZoom(10);
 if (uj>17) map.setZoom(17);
 load_markers(0);
});
GEvent.addListener(map,'moveend',function() {
 load_markers(0);
});
} }

function clear_markers() {
 map.clearOverlays();map.addOverlay(jelolo_marker);
 var hanymark=markerek.length;for (var i=0;i<hanymark;i++) markerek.pop();
 var hanycsop=csoportok.length;for (var i=0;i<hanycsop;i++) csoportok.pop();
}

function load_markers(klir) {
if (klir>0) {
 clear_markers();
 minlat=0;maxlat=0;
 minlng=0;maxlng=0;
}
rminlat=minlat;rmaxlat=maxlat;
rminlng=minlng;rmaxlng=maxlng;
terulet=map.getBounds();
minlat=terulet.getSouthWest().lat();
maxlat=terulet.getNorthEast().lat();
minlng=terulet.getSouthWest().lng();
maxlng=terulet.getNorthEast().lng();
kozeppont=map.getCenter();
var z=map.getZoom()-10;if (z<0) z=0;
var oszto=1;for(var i=0;i<z;i++) oszto*=2;
var deltalat=1/32/oszto;
var deltalng=1/22/oszto;
var kminlat=Math.floor(minlat/deltalat/2)*2;if (kminlat*deltalat>minlat) minlat=kminlat-2;else minlat=kminlat;
var kmaxlat=Math.floor(maxlat/deltalat/2)*2;if (kmaxlat*deltalat<maxlat) maxlat=kmaxlat+2;else maxlat=kmaxlat;
var kminlng=Math.floor(minlng/deltalng/2)*2;if (kminlng*deltalng>minlng) minlng=kminlng-2;else minlng=kminlng;
var kmaxlng=Math.floor(maxlng/deltalng/2)*2;if (kmaxlng*deltalng<maxlng) maxlng=kmaxlng+2;else maxlng=kmaxlng;
terulet=new GLatLngBounds(new GLatLng(minlat*deltalat,minlng*deltalng),new GLatLng(maxlat*deltalat,maxlng*deltalng));

if (zoomszint==map.getZoom()) {
 for (var i=0;i<markerek.length;i++) {
  if (!terulet.contains(markerek[i].getPoint())) {
   map.removeOverlay(markerek[i]);
   markerek[i]=markerek[markerek.length-1];markerek.pop();
   i--;
  }
 }
 for (var i=0;i<csoportok.length;i++) {
  if (!terulet.contains(csoportok[i].getPoint())) {
   map.removeOverlay(csoportok[i]);
   csoportok[i]=csoportok[csoportok.length-1];csoportok.pop();
   i--;
  }
 }
} else {
 clear_markers();
}
zoomszint=map.getZoom();

//document.getElementById('terkepdirektlink').href='.?lat='+kozeppont.lat()+'&lng='+kozeppont.lng()+'&zoom='+zoomszint;

var kveri='objektumok.php?domen='+domen+'&zoom='+zoomszint+'&minlat='+minlat+'&maxlat='+maxlat+'&minlng='+minlng+'&maxlng='+maxlng;
if (map.getCurrentMapType()==G_NORMAL_MAP) kveri+='&maptype=1';
if (map.getCurrentMapType()==G_SATELLITE_MAP) kveri+='&maptype=2';
if (map.getCurrentMapType()==G_HYBRID_MAP) kveri+='&maptype=3';
kveri+='&rminlat='+rminlat+'&rmaxlat='+rmaxlat+'&rminlng='+rminlng+'&rmaxlng='+rmaxlng;
kveri+='&mi='+encodeURIComponent(document.getElementById('keresomezo').value)+'&a='+document.getElementById('keresoarkat').value+'&min='+document.getElementById('keresoszinvonal').value+'&nyitvanap='+document.getElementById('keresonyitvanap').value+'&nyitvaora='+document.getElementById('keresonyitvaora').value;

document.getElementById('maploader').style.visibility='visible';
var request = GXmlHttp.create();
request.open('GET',kveri,true);request.send(null);
request.onreadystatechange = function() {if (request.readyState == 4) {
 var xmlsource = request.responseXML;
 var markerlist = xmlsource.documentElement.getElementsByTagName('o');
 for (var i=0;i<markerlist.length;i++) {
  addmarker(
   1,
   parseInt(markerlist[i].getAttribute('id')),
   parseFloat(markerlist[i].getAttribute('lng')),
   parseFloat(markerlist[i].getAttribute('lat')),
   markerlist[i].getAttribute('nev'),
   markerlist[i].getAttribute('ikon'),
   parseInt(markerlist[i].getAttribute('jo')),
   parseInt(markerlist[i].getAttribute('rossz')),
   parseInt(markerlist[i].getAttribute('latszik'))
  );
 }
 var grouplist = xmlsource.documentElement.getElementsByTagName('g');
 for (var i=0;i<grouplist.length;i++) {
  addmarker(
   1,
   0,
   parseFloat(grouplist[i].getAttribute('lng')),
   parseFloat(grouplist[i].getAttribute('lat')),
   grouplist[i].getAttribute('nev'),
   grouplist[i].getAttribute('ikon'),
   0,
   0,
   0
  );
 }
 document.getElementById('maploader').style.visibility='hidden';
}}
}


function addmarker(dome,id,x,y,nev,ikon,jo,rossz,latszik) {
 var point = new GPoint(parseFloat(x),parseFloat(y));
 var tajtl=nev;
 if (id>0) {//egyedi
 if (dome==2) {
 } else {
  if (jo+rossz>0) tajtl=tajtl+' ('+Math.round(jo/(jo+rossz)*100)+'%)';
  if (latszik==1) {
  if (ikonok[ikon]) {
   var marker = new GMarker(point,{title:tajtl,icon:ikonok[ikon]});
  } else {
   var marker = new GMarker(point,{title:tajtl});
  }
  } else {
   if (ikonok[ikon]) var marker = new GMarker(point,{title:nev,icon:ikonok[ikon],clickable:false});
   else var marker = new GMarker(point,{title:nev,clickable:false});
  }
  GEvent.addListener(marker,'click',function() {
   load_obj(id);
  });
 }
  markerek.push(marker);
 } else {//csop
  var marker = new GMarker(point,{title:tajtl,icon:ikonok[ikon]});
  GEvent.addListener(marker,'click',function() {
   if (map.getZoom()<14) map.setCenter(this.getPoint(),map.getZoom()+3);
   else map.setCenter(this.getPoint(),17);
  });
  csoportok.push(marker);
 }
 map.addOverlay(marker);
}

function load_obj(id) {
 if (id==0) {
  var aktivnev='';
  var fulek = document.getElementById('fulek').getElementsByTagName('li');
  for (var i=0;i<fulek.length;i++) if (fulek[i].className=='aktiv_ful') aktivnev=fulek[i].id.substr(4);
  switch(aktivnev) {
   case 'searchcont':dhtmlHistory.add('search',{dom:0,id:aktivnev});break;
   case 'tagpanel':dhtmlHistory.add('tagcloud',{dom:0,id:aktivnev});break;
   case 'toppanel':dhtmlHistory.add('toplists',{dom:0,id:aktivnev});break;
   case 'kommentekpanel':dhtmlHistory.add('comments',{dom:0,id:aktivnev});break;
  }
  if (obj_id!=0) jelolo_marker.setPoint(new GLatLng(0,0));
  obj_id=id;
  document.title='Budapest Explorer';
  document.getElementById('objpanel').style.display='none';document.getElementById('objpanel').innerHTML='';
  show_selects();
 } else {
  if (indulas==0) dhtmlHistory.add('obj'+id,{dom:1,id:id});
  document.getElementById('objpanel').innerHTML='<center><img src="img/ajax-loader.gif" alt="Betöltés..." /></center>';
  hide_selects();document.getElementById('objpanel').style.display='block';
  var request = GXmlHttp.create();
  request.open('GET','obj.php?id='+id,true);request.send(null);
  request.onreadystatechange = function() {if (request.readyState == 4) {
   obj_id=id;
   if (request.responseText.length<10) return load_obj(0);
   document.getElementById('objpanel').innerHTML = request.responseText;
   atmeret();
   load_and_jump_to_objpont(id);
  }}
 }
 return false;
}

function load_and_jump_to_objpont(id) {
 var request = GXmlHttp.create();
 request.open('GET','objpont.php?id='+id,true);request.send(null);
 request.onreadystatechange = function() {if (request.readyState == 4) {
  var xmlsource = request.responseXML;
  var objlist = xmlsource.documentElement.getElementsByTagName('o');
  objpont = new GLatLng(parseFloat(objlist[0].getAttribute('lat')),parseFloat(objlist[0].getAttribute('lng')));
  document.title = objlist[0].getAttribute('nev')+' :: Budapest Explorer';
  jelolo_marker.setPoint(objpont);
  jump_to_objpont();
 }}
 return false;
}

function reload_obj() {
 if (obj_id>0) return load_obj(obj_id);
 return false;
}

function jump_to_objpont() {
 if (objpont.lat()>0) {
  if (map.getZoom()==17) map.panTo(objpont);
  else map.setCenter(objpont,17);
  load_markers(0);
 }
 return false;
}

function load_icons() {
 var i=0;
 ikonnevek[i++]='burger_king';
 ikonnevek[i++]='casino';
 ikonnevek[i++]='don_pepe';
 ikonnevek[i++]='grp';
 ikonnevek[i++]='grp_nagy';
 ikonnevek[i++]='haz';
 ikonnevek[i++]='image';
 ikonnevek[i++]='jelolo';
 ikonnevek[i++]='kaja';
 ikonnevek[i++]='kave';
 ikonnevek[i++]='kfc';
 ikonnevek[i++]='m1';
 ikonnevek[i++]='m2';
 ikonnevek[i++]='m3';
 ikonnevek[i++]='m123';
 ikonnevek[i++]='mcdonalds';
 ikonnevek[i++]='mozi';
 ikonnevek[i++]='pizza_hut';
 ikonnevek[i++]='pub';
 ikonnevek[i++]='subway';
 ikonnevek[i++]='suti';
 ikonnevek[i++]='zene';
 ikonnevek[i++]='muzeum';
 ikonnevek[i++]='szallas';
 ikonnevek[i++]='szobor';
 ikonnevek[i++]='patika';
 for(var j=0;j<i;j++) {
  ikonok[ikonnevek[j]] = new GIcon();
  ikonok[ikonnevek[j]].image='icons/'+ikonnevek[j]+'.gif';
  if (ikonnevek[j]=='grp') {
  ikonok[ikonnevek[j]].iconSize=new GSize(24,24);
  ikonok[ikonnevek[j]].iconAnchor=new GPoint(12,12);
  } else if (ikonnevek[j]=='grp_nagy') {
  ikonok[ikonnevek[j]].iconSize=new GSize(48,48);
  ikonok[ikonnevek[j]].iconAnchor=new GPoint(24,24);
  } else if (ikonnevek[j]=='jelolo') {
  ikonok[ikonnevek[j]].iconSize=new GSize(24,24);
  ikonok[ikonnevek[j]].iconAnchor=new GPoint(12,12);
  } else {
  ikonok[ikonnevek[j]].iconSize=new GSize(16,16);
  ikonok[ikonnevek[j]].iconAnchor=new GPoint(8,8);
  //ff
  ikonok[ikonnevek[j]+'-ff'] = new GIcon();
  ikonok[ikonnevek[j]+'-ff'].image='icons/'+ikonnevek[j]+'-ff.gif';
  ikonok[ikonnevek[j]+'-ff'].iconSize=new GSize(16,16);
  ikonok[ikonnevek[j]+'-ff'].iconAnchor=new GPoint(8,8);
  }
 }
}

