﻿var mArray = Array();
var map;
var test=1;
var geo;
var markerGroups = {"1": [], "2": [],"3": [],"4": [],"5": [],"6": [],"7": []};
var page = 1;
var show = 0;
var showlng;
var showlat;
var place="";

 // ГОРОДА
  var city = [
          {
      name: "Россия",
      x:55,
      y:70,
      zoom:3
    } ,
    {
      name: "Москва",
      x:55.75363659,
      y:37.61984825,
      zoom:10
    },
    {
      name: "Санкт-Петербург",
      x:59.910975970796784,
      y:30.2783203125,
      zoom:10
    }

  ];

  function findCity(which) {
    if (which != 0) {
      var point = new GLatLng(city[which - 1].x,city[which - 1].y);
      map.setCenter(point, city[which - 1].zoom);
    }
  }


function load() {
	doLoad();
	ShowPoints();
}


function ShowPoints() {
	PushMarkersLevel(0,50,0);
}


function PushMarkersLevel(skip,count,level){
		
	url = "./marker3.php?skip="+skip+"&count="+count + "&min_lat=" + map.getBounds().getSouthWest().y+"&max_lat="+map.getBounds().getNorthEast().y+"&min_lng="+map.getBounds().getSouthWest().x+"&max_lng="+map.getBounds().getNorthEast().x;

	for (n=1 ; n <= 7 ; n++ ) {
        	if (document.getElementById('c'+n).checked || document.getElementById('c0').checked){url = url + "&type"+n+"="+1;}
		else{url = url + "&type"+n+"="+0;}
	}

	GDownloadUrl(url, function(data) {		

	for (var i = 1; i <= 7; i++) {
	 	var marker = markerGroups[i].shift();
		while (marker) {
			map.removeOverlay(marker);
			marker = markerGroups[i].shift();
		}
	}

	row = mArray.shift();
	while(row){row = mArray.shift();}

	var markerlevel = [];		
        	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName("marker");
	       
        	 for (var i = 0; i < markers.length; i++) {
		var row = {lat:'',lon:'',description:'',phone:'',email:'',type:'',ts:'',id:'',zoom:'',place:''};
		row.lat = markers[i].getAttribute("lat");
		row.lng = markers[i].getAttribute("lng");
	            	row.ts = markers[i].getAttribute("ts");
		row.id = markers[i].getAttribute("id");
		row.type = markers[i].getAttribute("type");
	                	row.bold = markers[i].getAttribute("bold");
		row.place =  markers[i].getElementsByTagName("place")[0].firstChild.nodeValue;
	                	row.zoom = markers[i].getAttribute("zoom");
		row.description = markers[i].getElementsByTagName("description")[0].firstChild.nodeValue;
		row.email = markers[i].getElementsByTagName("email")[0].firstChild.nodeValue;
		row.phone = markers[i].getElementsByTagName("phone")[0].firstChild.nodeValue;

		mArray.push(row);

		var point = new GLatLng(row.lat,row.lng);
		var marker = createMarker(point, row.description,row.email,row.phone,row.type,row.ts,row.id,row.bold);
		markerGroups[row.type].push(marker);
		map.addOverlay(marker);
        	  }
 	
	page = 1;
		
	if (show==1){
		for (var i = 1; i <= 7; i++) {
   			for (var j = 0; j<=markerGroups[i].length-1;j++){ 
				if(markerGroups[i][j].getLatLng().lat() == showlat && markerGroups[i][j].getLatLng().lng() == showlng ){ GEvent.trigger(markerGroups[i][j],"click");}
			}
	        	}	
		show=0;

	}
	else {
		showTable();
		showNav();
	}
        });


}
 

function doLoad() {
	if (GBrowserIsCompatible()) {
		var centerPoint = new GLatLng(startlat,startlon);
		map = new GMap2(document.getElementById("map"));
	
		map.setCenter(centerPoint, startzoom);
	//	map.addControl(new ExtLargeMapControl());
		map.setUIToDefault();  
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.enableScrollWheelZoom();

		GEvent.addListener(map, "dragend", ShowPoints);
		GEvent.addListener(map, "zoomend", ShowPoints);

		geo = new GClientGeocoder();	

		GEvent.addListener(map,"click", function(overlay,latlng) {
	        		if (latlng) {
				geo.getLocations(latlng, function(addresses){   
					if(addresses.Status.code != 200){map.openInfoWindow(latlng, makeinfohtml(latlng,'')); }
					else{
						if (addresses.Placemark[0].AddressDetails.Country.CountryNameCode != 'RU') map.openInfoWindow(latlng, makeinfohtml(latlng,addresses.Placemark[0].AddressDetails.Country.CountryName));
						else { 
							if (addresses.Placemark[0].AddressDetails.Accuracy> 2){
								if ('AdministrativeArea' in addresses.Placemark[0].AddressDetails.Country){
									if ('Locality' in addresses.Placemark[0].AddressDetails.Country.AdministrativeArea) map.openInfoWindow(latlng, makeinfohtml(latlng,addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.LocalityName));
										else map.openInfoWindow(latlng, makeinfohtml(latlng,addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName));
								}
								else{map.openInfoWindow(latlng, makeinfohtml(latlng,''));}
							}
							else{map.openInfoWindow(latlng, makeinfohtml(latlng,''));}
					   	} 
					}
				});
			  }
	  	      });
	}
}

function makeinfohtml(latlng,pl){
	var myHtml = '<form style="margin:0px" method="POST"><input Type="Hidden" id="zoom" name="zoom" value='
       	+ map.getZoom() + '><input Type="Hidden" id="lat" name="lat" value="'
	+ latlng.y + '"><input Type="Hidden" id="place" name="place" value="'
	+ pl + '"><input Type="Hidden" id="lon" name="lon" value= '
       	+ latlng.x + '><table  cellspacing="0" cellpadding="2">'
	+'<tr><td>Тип</td>'
	+'<td><select id="type"'
       	+' name="type"><option value=1>Поиск людей</option><option value=2>Ищу свидетелей ДТП</option>'
       	+ '<option value=3>Угнан автомобиль</option><option value=4>Петерялся любимец</option><option value=5>Утеряны документы</option><option value=6>Обращение</option><option value=7>Находки</option></select></td></tr>'
	+'<tr><td colspan=2><center>Текст объявления</center></td></tr>'
	+'<tr><td colspan=2><TEXTAREA ROWS="4" COLS="30"  id="desc" name="desc"></TEXTAREA></td></tr>'
	+'<tr><td>E-mail</td><td><input id="email" name="email" MAXLENGTH="255"></td></tr>'
	+'<tr><td>Телефон</td><td><input id="phone" name="phone" MAXLENGTH="255"></td></tr>'
	+'<tr><td>Хранить</td><td><select id="expire" name="expire"><option value=1>3 дня</option><option value=2>Неделю</option><option value=3>Месяц</option><option value=4 SELECTED>Год</option><option value=5 >Удалю сам</option></select></td></tr>'
	+'<tr><td>Место</td><td>'+pl+'</td></tr>'
	+'<tr><td colspan="2" align="center"><input type="submit" value="Добавить на карту"></td></tr></table></form>';
	return myHtml;
}


function showAddress(address) {
	if (geo) {
		geo.getLatLng(address, function(point) {
			if (!point) {alert("Адрес " + address + " не найден!");} 
			else {map.setCenter(point,8);ShowPoints();}
      		 });
	}
}

function showPoint(Lat,Lng,zoom) {
	var point = new GLatLng(Lat,Lng);
	showlat = Lat;
	showlng = Lng;
	show=1;
	map.setCenter(point, zoom);
}

function showNav() {
	var count=1;
	var curpage=1;
	var navstr = '&nbsp Страница&nbsp&nbsp<font color=blue>';

	var GChecked = Array();
	
	for (n=0 ; n <= 7 ; n++ ) {
        	if (document.getElementById('c'+n).checked || document.getElementById('c0').checked){GChecked[n]=1;}
		else{GChecked[n]=0;}

	}

	if (mArray.length) {
		for (n=0 ; n < mArray.length ; n++ ) {
			if (GChecked[mArray[n].type]==1)  {
				if (count==1){count=1;
	
					if (curpage>page-5 && curpage<page+5){								
						if (curpage==page){navstr = navstr +' <span><b>'+curpage+'</b></span>'}
						else{navstr = navstr +' <span STYLE="cursor:hand;cursor:pointer;" onclick="ShowPage('+curpage+')"><u>'+curpage+'</u></span>';}
					}
					else if (curpage==page-5){								
						navstr = navstr +' <span STYLE="cursor:hand;cursor:pointer;" onclick="ShowPage('+curpage+')"><<<</span>';
					} 
					else if (curpage==page+5){								
						navstr = navstr +' <span STYLE="cursor:hand;cursor:pointer;" onclick="ShowPage('+curpage+')">>>></span>';
					} 

				}	
				count ++;
				if (count==20){count=1;curpage++}	
			  		
		                	}
	 	
		  }

	}
	navstr = navstr+ '</font>'
	document.getElementById("topnav").innerHTML = navstr;
}


function showTable() {
	var str;
	var GChecked = Array();
	
	for (n=0 ; n <= 7 ; n++ ) {
        		if (document.getElementById('c'+n).checked || document.getElementById('c0').checked){GChecked[n]=1;}
		else{GChecked[n]=0;}
	}

	str = '<table border=0 cellpadding=0 cellspacing=5>';
	if (mArray.length) {
		if (mArray.length<20){
			 end = mArray.length;
			 start = (page-1)*20;
		}
		else{
			 end = page*20-1;
			 if (end > (mArray.length-1)){end = mArray.length;} 	
			 start = (page-1)*20;
		}
		
		for (n=start ; n < end ; n++ ) {
			if (GChecked[mArray[n].type]==1)  {

        	 		     	str = str + '<tr><td colspan =2><b> № '+mArray[n].id+' от '+mArray[n].ts;

     	        	    		if (mArray[n].type=='1') {str = str +' Поиск людей';	}
      				else if (mArray[n].type=='2'){str = str +' Ищу свидетелей ДТП';}
	       			else if (mArray[n].type=='3'){str = str +' Угнан автомобиль';}
       				else if (mArray[n].type=='4'){str = str +' Петерялся любимец';}
	         			else if (mArray[n].type=='5'){str = str +' Утеряны документы';}
     	   			else if (mArray[n].type=='6'){str = str +' Обращение';}
     	   			else if (mArray[n].type=='7'){str = str +' Находка';}

	     	          		str = str +	' </b></td></tr><tr><td rowspan=2><img  STYLE="cursor:hand;cursor:pointer;width:20px;height:34px;"  onClick="showPoint('+mArray[n].lat+','+mArray[n].lng+','+mArray[n].zoom+'); return false" border="0" id="im'+mArray[n].id+'"src=\'/marker/'+mArray[n].type;
				if (mArray[n].bold ==1) str = str +'b.png\'></td>';		
				else str = str +'.png\'></td>';
				if (mArray[n].bold=='1'){str = str +'<td><font size=2>'+mArray[n].description+'</font></td></tr>';}
     			          	else{str = str +'<td>'+mArray[n].description+'</td></tr>';}		
        			       	str = str + '<tr><td>';

				if (mArray[n].phone!=''){str = str +' телефон '+mArray[n].phone;}
				if (mArray[n].email!=''){str = str +' e-mail '+mArray[n].email;}
				if (mArray[n].place!=''){str = str +' место '+mArray[n].place;}
	       		       	str = str + '</td></tr>';
                			}
			else if (end == mArray.length) {}
			else {end = end+1;}
	 	
		  }

	}

	str = str + '</table>';
	document.getElementById("Mtable").innerHTML = str;

	showNav();

}


function createMarker(point, title,email,phone,type, ts,id,bold) {
	
	if (bold==1) var icon  = new GIcon(G_DEFAULT_ICON, '../marker/'+type+'b.png');
	else var icon  = new GIcon(G_DEFAULT_ICON, '../marker/'+type+'.png');
	markerOptions = {icon:icon, title:title};
	var marker = new GMarker(point,markerOptions);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml('<div style="width:300px">' +  title + '<hr>Телефон: ' + phone  + '<br>E-mail: ' + email+ '<br>Опубликовано: ' + ts + '<br>Номер: ' + id + ' <br><hr><form style="margin:0px" action="http://find.org.ru/send.php" method="POST"><input Type="Hidden" id="id" name="id" value='+id+'><input type="submit" value="Удалить"></form></div>');
 	});
	return marker;
}

function toggleGroup() {
	ShowPoints();
}

function ShowPage(cpage) {
	page = cpage;
	showTable();
}

