var hat = null;
var map = null;
var geoCoder = null;
var lastPoint = null;
var beginPoint = null;
var endPoint = null;
var currentPoint = null;
var directions = null;
var directionsPanel = null;
var directionsArray = null;
var directionsPoint = null;
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.iconSize = new GSize(18, 18);
baseIcon.iconAnchor = new GPoint(9, 9);
baseIcon.shadow = "";

function $E(e) {
	return document.getElementById(e);
}

function isNumber(v) {
	var d = "0123456789";
	for (var i = 0; i < v.length; i++)
	if (d.indexOf(v.charAt(i)) == -1) return false;
	return true;
}

function isEmail(v) {
	if (v.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true;
	else return false;
}

function repString(v, s, r) {
	var re = eval("/\\" + s + "/g");
	return v.replace(re, r);
}

function toUpper(v) {
	return repString(v, "i", "İ").toUpperCase();
}

function toLower(v) {
	return repString(v, "I", "ı").toLowerCase();
}

function divShowHide(o, f) {
	o.style.visibility = ((f == "Show") ? "visible" : "hidden");
	o.style.display = ((f == "Show") ? "block" : "none");
}

function pageInit() {
	map = new GMap2($E("Map"));
	map.setCenter(new GLatLng(39.92077, 32.85411), 15);
	var customUI = map.getDefaultUI();
	customUI.maptypes.hybrid = true;
	map.setUI(customUI);
	geoCoder = new GClientGeocoder();
	directionsPanel = $E("MapInfo");
	$E("MapInfo").style.height = "0px";
	directions = new GDirections(map, directionsPanel);
	var myEventListener = GEvent.bind(map, "dblclick", this, function (overlay, latlng) {
		if (latlng) {
			map.clearOverlays();
			showBeginEnd();
			map.setCenter(latlng, 15);
			lastPoint = latlng;
			selectPoint(lastPoint.lat(), lastPoint.lng());
			var marker = new GMarker(lastPoint)
			map.addOverlay(marker);
			getAddress(lastPoint, 0);
			GEvent.addListener(marker, "click", function () {
				marker.openInfoWindowHtml(addInfo("(P)"));
			});
		}
	});
	Sql = "[x4] b.KODU as BOLGE_KODU, b.ADI as BOLGE_ADI, h.ID as HAT_ID, h.KODU as HAT_KODU, h.ADI as HAT_ADI " + 
		"From MAP_HAT h, MAP_HAREKET_NOKTASI n, MAP_BOLGE b " + 
		"Where h.HAREKET_NOKTASI_ID = n.ID " + 
		"and n.BOLGE_ID = b.ID " + 
		"and h.DURUMU = 'AK' " + 
		"Order By b.KODU, h.KODU";
	hat = [];
	if (ajaxSelect(Sql)) {
		if (ajaxRowCount > 0) {
			for (var r = 0; r < ajaxRowCount; r++) {
				fld = ajaxRow[r].split("{Col}");
				hat.push([fld[0], fld[1], fld[2], fld[3], fld[4]]);
			}
		}
	}
	TabInit("Tab");
}

function addAddressToMap(response) {
	map.clearOverlays();
	showBeginEnd();
	lastPoint = null;
	if (!response || response.Status.code != 200) alert("Aranılan adres bulunamadı !");
	else {
		place = response.Placemark[0];
		if (place.address.indexOf("Ankara") == -1) {
			alert("Aranan konum bilgisi Ankara İl sınırları içinde değildir !\n" + place.address);
			return;
		}
		point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
		var marker = new GMarker(point);
		map.addOverlay(marker);
		map.setCenter(point, 15);
		marker.openInfoWindowHtml("Aranılan Yer<br /><br />Adres : " + place.address);
		lastPoint = point;
		selectPoint(lastPoint.lat(), lastPoint.lng());
	}
}

var address = ["", "", ""];

function getAddress(point, n) {
	try {
		geoCoder.getLocations(point, function (response) {
			var place = response.Placemark[0];
			address[n] = "Adres : " + place.address;
		});
	}
	catch (err) {
		address[n] = "";
	}
}

function showLocation() {
	var address = $E("txtAdres").value + " Ankara";
	geoCoder.getLocations(address, addAddressToMap);
}

function showHat() {
	TabClick(null, "Tab", 1);	
	$E("hidHatKodu").value = "";
	$E("txtHatAdi").innerHTML = "";
	$E("txtHatKalkisYeri").innerHTML = "";
	$E("txtHatVarisYeri").innerHTML = "";
	$E("txtHatMesafesi").innerHTML = "";
	$E("txtHatSuresi").innerHTML = "";
	$E("txtHatAciklama").value = "";
	$E("txtHatHareketSaatleri").innerHTML = "";
	$E("txtHatDurakBilgileri").innerHTML = "";
	$E("txtHatGuzergahBilgileri").innerHTML = "";
	$E("MapInfo").innerHTML = "";
	$E("MapInfo").style.height = "0px";
	map.clearOverlays();
	showBeginEnd();
	Sql = "[x4] b.ID, b.ADI, b.YERI, n.ID, n.ADI, n.YERI," + 
		"h.KODU, h.ADI, h.KALKIS_YERI, h.VARIS_YERI, h.MESAFESI, h.SURESI," + 
		"h.KALKIS_SURESI_1, h.KALKIS_SURESI_2, h.KALKIS_SURESI_3, h.DETAYI " + 
		"From MAP_HAT h, MAP_HAREKET_NOKTASI n, MAP_BOLGE b " + 
		"Where h.ID = " + $E("txtHat").value + " " + 
		"and n.ID = h.HAREKET_NOKTASI_ID " + 
		"and b.ID = n.BOLGE_ID " + 
		"and h.DURUMU = 'AK'";
	if (ajaxSelect(Sql)) {
		if (ajaxRowCount > 0) {
			fld = ajaxRow[0].split("{Col}");
			$E("hidHatKodu").value = fld[6];
			$E("txtHatAdi").innerHTML = fld[6] + " - " + fld[7];
			$E("txtHatKalkisYeri").innerHTML = fld[8];
			$E("txtHatVarisYeri").innerHTML = fld[9];
			$E("txtHatMesafesi").innerHTML = fld[10] + " Km";
			$E("txtHatSuresi").innerHTML = fld[11] + " Dakika";
			$E("txtHatAciklama").value = toUpper(fld[15]);
			html = "<div style='width:100%;overflow:none;overflow-y:scroll;'>";
			html += "<table width='100%' cellspacing='0' cellpading='0' style='table-layout:fixed;'>";
			html += "<col width='34%'>";
			html += "<col width='33%'>";
			html += "<col width='33%'>";
			html += "<tr valign='top'>";
			for (var d = 0; d < 3; d++) {
				ary = fld[12 + d].split("|");
				var htmlt = "<table width='100%' border='1' bordercolor='#FFFFFF'>";
				htmlt += "<col width='50%'>";
				htmlt += "<col width='50%'>";
				if (d == 0) htmlt += "<tr height='20px' bgcolor='#CCCCCC'><th colspan='2'>Hafta İçi</th></tr>";
				if (d == 1) htmlt += "<tr height='20px' bgcolor='#CCCCCC'><th colspan='2'>Cumartesi</th></tr>";
				if (d == 2) htmlt += "<tr height='20px' bgcolor='#CCCCCC'><th colspan='2'>Pazar</th></tr>";
				for (var r = 0; r < ary.length; r++) {
					var f = ary[r].split(";");
					if (f.length < 1) f[0] = "";
					if (f.length < 2) f[1] = "";
					htmlt += "<tr height='20px'>";
					htmlt += "<td align='center'>" + f[0] + "</td>";
					htmlt += "<td>" + toUpper(f[1]) + "</td>";
					htmlt += "</tr>";
				}
				htmlt += "</table>";
				html += "<td>" + htmlt + "</td>";
			}
			html += "</tr>";
			html += "</table>";
			html += "</div>";
			$E("txtHatHareketSaatleri").innerHTML = html;
		}
	}
	var guz = new Array();
	Sql = "[x4] d.ID, d.SIRASI, d.KODU, d.ADI, d.YERI, d.DETAYI, d.PX, d.PY " + 
		"From MAP_DURAK d " + 
		"Where d.HAT_ID = " + $E("txtHat").value + " " + 
		"Order By d.SIRASI";
	currentPoint = new Array(3);
	directionsArray = new Array();
	directionsPoint = new Array();
	html = "<div style='width:100%;overflow:none;overflow-y:scroll;'>";
	html += "<table width='100%' border='1' bordercolor='#FFFFFF'>";
	html += "<col width='20%'>";
	html += "<col width='80%'>";
	html += "<tr height='20px' bgcolor='#CCCCCC'>";
	html += "<th>Durak Numarası</th>";
	html += "<th>Durak Adı</th>";
	html += "</tr>";
	if (ajaxSelect(Sql)) {
		if (ajaxRowCount > 0) {
			var array = new Array();
			var prc = ajaxRowCount / 25;
			var sir = 0;
			if (ajaxRowCount < 25) prc = 1
			for (var r = 0; r < ajaxRowCount; r++) {
				fld = ajaxRow[r].split("{Col}");
				var xx = parseFloat(repString(fld[6], ",", "."));
				var yy = parseFloat(repString(fld[7], ",", "."));
				fld[6] = xx;
				fld[7] = yy;
				var lt = fld[1];
				var point = new GLatLng(xx, yy);
				var icon = "/map/icons/numeric/red" + ((r + 1) < 10 ? "0" + (r + 1) : (r + 1)) + ".png";
				map.addOverlay(createMarker(point, icon, fld[1], "P", fld));
				if (r == 0) {
					currentPoint[0] = point;
					map.setCenter(point, 15);
				}
				if (r <= (ajaxRowCount / 2)) currentPoint[1] = point;
				array.push(point);
				sir++;
				if ((r == 0) || (r == ajaxRowCount - 1)) {
					directionsArray.push(point);
				} else {
					if (sir >= prc) {
						sir = 0;
						directionsArray.push(point);
					}
				}
				directionsPoint.push(point);
				var act = "style='cursor:pointer' onclick='map.setCenter(new GLatLng(" + xx + "," + yy + "))'";
				html += "<tr height='20px'>";
				html += "<td align='center' " + act + "><b>" + fld[1] + "</b></td>";
				html += "<td " + act + ">" + fld[4] + "</td>";
				html += "</tr>";
				if (guz.length > 0) {
					if (guz[guz.length - 1][0] != fld[4]) {
						guz.push([fld[4], act]);
					}
				} else guz.push([fld[4], act]);
			}
 		currentPoint[2] = point;

   var geoXml = new GGeoXml("http://www.ego.gov.tr/map/mapKml.asp?ID=" + $E("txtHat").value);
			map.addOverlay(geoXml);	

			/*
			directions = new GDirections(map, directionsPanel);
			directions.loadFromWaypoints(directionsArray,
				{ locale: "TR",
					getPolyline:false, 
					getSteps:false
				});
			yuk = 0;
			GEvent.addListener(directions, 'load',
				function () {
					if (yuk == 0) {
						map.setCenter(currentPoint[0], 15);
				 	$E("MapInfo").style.height = "340px";
					}
					yuk = 1;
				});
			*/
			
		}
		else {
			map.setCenter(new GLatLng(39.92077, 32.85411), 15);
		}
	}
	html += "</table>";
	html += "</div>";
	$E("txtHatDurakBilgileri").innerHTML = html;
	html = "<div style='width:100%;overflow:none;overflow-y:scroll;'>";
	html += "<table width='100%' border='1' bordercolor='#FFFFFF'>";
	html += "<col width='100%'>";
	html += "<tr height='20px' bgcolor='#CCCCCC'><th>Hattın Geçtiği Güzergahlar</th></tr>";
	for (var r = 0; r < guz.length; r++) {
		html += "<tr height='20px'><td " + guz[r][1] + ">" + guz[r][0] + "</td></tr>";
	}
	html += "</table>";
	html += "</div>";
	$E("txtHatGuzergahBilgileri").innerHTML = html;
	if ($E("txtBolge").value == "8") {
		try {
			var marker = new GMarker(lastPoint)
			map.addOverlay(marker);
			map.setCenter(lastPoint, 15);
			getAddress(lastPoint, 0);
			GEvent.addListener(marker, "click", function () {
				marker.openInfoWindowHtml(addInfo("(P)"));
			});
		}
		catch (err) {}
	}
}

var yuk = 0;
var dpz = 0;
var pth = "";
function updateDirections() {
	directionsArray = new Array();
	for (var r = dpz; r < directionsPoint.length; r++) {
		directionsArray.push(directionsPoint[r]);
		if (directionsArray.length == 25) {
			break;
		}
	}
	if (directionsArray.length > 0) {
		directions = new GDirections(map, directionsPanel);
		directions.loadFromWaypoints(directionsArray,
			{ locale: "TR",
				getPolyline:true, 
				getSteps:false
			});
		yuk = 0;
		GEvent.addListener(directions, 'load',
			function () {
					if (yuk == 0) {
						for (var r = 0; r < directions.getPolyline().getVertexCount(); r++) {
							var marker = directions.getPolyline().getVertex(r);
							pth += (Math.round(marker.lng() * 100000) / 100000) + "," + (Math.round(marker.lat() * 100000) / 100000) + ",0 ";
						}
						dpz = dpz + 25;
						setTimeout("updateDirections()", 5000);
					}
					yuk = 1;
			});
	} else {
		var Sql = "["+"x2"+"] MAP_HAT Set " +
			"yol_ = '" + pth + "' " +
			"Where id = " + $E("txtHat").value;
		ajaxExecute(Sql);
		alert("Yol Bilgisi Güncellendi...");
	}
}

function searchHat(id) {
	document.getElementById("txtBolge").selectedIndex = 8;
	var n = 0;
	var s = selectClear($E("txtHat"));
	for (var r = 0; r < hat.length; r++) {
		if ((("x" + hat[r][3]).indexOf(("x" + $E("txtHattinKodu").value)) != -1 && $E("txtHattinKodu").value.length > 0) || (toUpper(hat[r][4]).indexOf(toUpper($E("txtHattinAdi").value)) != -1 && $E("txtHattinAdi").value.length > 0)) {
			s.options[n] = new Option("(" + hat[r][3] + ") - " + hat[r][4], hat[r][2]);
			s.options[n].className = ((n % 2 == 0) ? "odd" : "even");
			n++;
		}
	}
	if (n == 0)	alert("Uygun Hat Bulunamadı !");
	showHat();
}

function goHat(id, si, aid) {
	document.getElementById("txtBolge").selectedIndex = si;
	var n = 0;
	var s = selectClear($E("txtHat"));
	for (var r = 0; r < hat.length; r++) {
		if ((hat[r][2] == id) || ((aid != null) && (hat[r][2] == aid))) {
			s.options[n] = new Option("(" + hat[r][3] + ") - " + hat[r][4], hat[r][2]);
			s.options[n].className = ((n % 2 == 0) ? "odd" : "even");
			if (hat[r][2] == id) s.options[n].selected = true;
			n++;
		}
	}
	showHat();
	if (aid != null) {
		Sql = "[x4] d.ID, d.SIRASI, d.KODU, d.ADI, d.YERI, d.DETAYI, d.PX, d.PY " + 
			"From MAP_DURAK d " + 
			"Where d.HAT_ID = " + aid + " " + 
			"Order By d.SIRASI";
		if (ajaxSelect(Sql)) {
			if (ajaxRowCount > 0) {
				var array = new Array();
				for (var r = 0; r < ajaxRowCount; r++) {
					fld = ajaxRow[r].split("{Col}");
					var xx = parseFloat(repString(fld[6], ",", "."));
					var yy = parseFloat(repString(fld[7], ",", "."));
					fld[6] = xx;
					fld[7] = yy;
					var lt = fld[1];
					var point = new GLatLng(xx, yy);
					var icon = "/map/icons/numeric/blu" + ((r + 1) < 10 ? "0" + (r + 1) : (r + 1)) + ".png";
					map.addOverlay(createMarker(point, icon, fld[1], "P"));
					array.push(point);
				}
				var geoXml = new GGeoXml("http://www.ego.gov.tr/map/mapKml.asp?ID=" + aid);
				map.addOverlay(geoXml);	
			}
		}
		map.setCenter(beginPoint, 15);
	}
}

function addInfo(text) {
	if (text == "(P)") text = "İşaretli Nokta<br /><br />" + address[0];
	if (text.indexOf(" (A)") != -1) text += "<br /><br />" + address[1];
	if (text.indexOf(" (B)") != -1) text += "<br /><br />" + address[2];
	return text;
}

function createMarker(point, icon, text, type, hat) {
	var customIcon = new GIcon(baseIcon);
	customIcon.image = icon;
	if ((type == "A") || (type == "B")) {
		customIcon.iconSize = new GSize(24, 36);
		customIcon.iconAnchor = new GPoint(10, 35);
	}
	var marker = new GMarker(point, {
		draggable: true,
		icon: customIcon
	});
  if ((myIp == "10.10.4.205") || (myIp.indexOf("10.12.") != -1)) {
		if (myUp == "true") {
			GEvent.addListener(marker, "dragend", function() {
				if (fld != null) {
					var flg = false;
					var Sql = "["+"x2"+"] MAP_DURAK Set " +
						"px = " + marker.getPoint().lat() + ", " +
						"py = " + marker.getPoint().lng() + " " +
						"Where id = " + hat[0];
					ajaxExecute(Sql);
					var point = new GLatLng(marker.getPoint().lat(), marker.getPoint().lng()); 
					geoCoder.getLocations(point, function (response) {
						try {
							var place = response.Placemark[0];
							if (place.address > "") {
								var Sql = "["+"x2"+"] MAP_DURAK Set " +
									"yeri = '" + place.address + "' " +
									"Where id = " + hat[0];
								ajaxExecute(Sql);
								marker.openInfoWindowHtml(
									"Durak : " + hat[1] + " - " + hat[3] + "<br />" +
									"Adres : " + place.address + "<br />" +
									"Enlem : " + marker.getPoint().lng() + "<br />" +
									"Boylam : " + marker.getPoint().lat());
							}
						} catch (err) { }
					});
					marker.openInfoWindowHtml(
						"Durak : " + hat[1] + " - " + hat[3] + "<br />" +
						"Enlem : " + marker.getPoint().lng() + "<br />" +
						"Boylam : " + marker.getPoint().lat());
				}
			});
		}
	}
	if (text > "") {
		if (myUp != "true") {
			if (type == null) {
				GEvent.addListener(marker, "click", function () {
					marker.openInfoWindowHtml(addInfo(text));
				});
			}
			if (type == "P") {
				GEvent.addListener(marker, "click", function () {
					var point = marker.getPoint();
					selectPoint(point.lat(), point.lng());
					lastPoint = point;
				});
			}
		}
	}
	return marker;
}

function drawCircle(lat, lng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity) {
	var circlePoints = Array();
	var rLat = (radius / 3963.189) * (180 / Math.PI);
	var rLng = rLat / Math.cos(lat * (Math.PI / 180));
	for (var a = 0; a < 361; a++) {
		var aRad = a * (Math.PI / 180);
		var x = lng + (rLng * Math.cos(aRad));
		var y = lat + (rLat * Math.sin(aRad));
		var point = new GLatLng(parseFloat(y), parseFloat(x), true);
		circlePoints.push(point);
	}
	var polygon = new GPolygon(circlePoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
	map.addOverlay(polygon);
}

function showBeginEnd() {
	map.clearOverlays();
	try {
		getAddress(beginPoint, 1);
		map.addOverlay(createMarker(beginPoint, "/map/icons/icons/icon_greenA.png", "Kalkış Noktası (A)", "A"));
		drawCircle(beginPoint.lat(), beginPoint.lng(), 0.175, "#0000FF", 1, 1, "#0000FF", 0.150);
	}
	catch (err) {}
	try {
		getAddress(endPoint, 2);
		map.addOverlay(createMarker(endPoint, "/map/icons/icons/icon_greenB.png", "Varış Noktası (B)", "B"));
		drawCircle(endPoint.lat(), endPoint.lng(), 0.175, "#0000FF", 1, 1, "#0000FF", 0.150);
	}
	catch (err) {}
}

function selectPoint(lat, lng) {
	try {
		for(var msf = 0; msf < 10; msf++) {
		var lat1 = parseFloat(lat) - parseFloat(0.00250 + (msf * 0.00250));
		var lat2 = parseFloat(lat) + parseFloat(0.00250 + (msf * 0.00250));
		var lng1 = parseFloat(lng) - parseFloat(0.00250 + (msf * 0.00250));
		var lng2 = parseFloat(lng) + parseFloat(0.00250 + (msf * 0.00250));
		Sql = "[x4] d.X, d.Y, d.PX, d.PY, h.ID as HAT_ID, h.KODU as HAT_KODU, h.ADI as HAT_ADI, 0 as DURUM " + 
			"From MAP_DURAK d, MAP_HAT h " + 
			"Where d.PX <= " + lat2 + " " + 
			"and d.PX >= " + lat1 + " " + 
			"and d.PY <= " + lng2 + " " + 
			"and d.PY >= " + lng1 + " " + 
			"and d.DURUMU = 'AK' " + 
			"and h.ID = d.HAT_ID " + 
			"and h.DURUMU = 'AK' " + 
			"Order By h.KODU";
		if (ajaxSelect(Sql)) {
			if (ajaxRowCount > 0) {
				var array = new Array();
				for (var r = 0; r < ajaxRowCount; r++) {
					fld = ajaxRow[r].split("{Col}");
					var xx = parseFloat(repString(fld[2], ",", "."));
					var yy = parseFloat(repString(fld[3], ",", "."));
					fld[2] = xx;
					fld[3] = yy;
					array.push(fld);
				}
				for (var r1 = 0; r1 < array.length; r1++) {
					var text = "";
					if (array[r1][7] == "0") {
						text = "<b>Seçilen Noktadan Geçen Hatlar</b>";
						text += "<table class='infoTable' cellpadding='1' cellspacing='1'>";
						text += "<tr><th bgcolor='#DDDDDD' width='100px'>Hattın Numarası</th>" + 
							"<th bgcolor='#DDDDDD' width='250px'>Hattın Adı</th>" +
							"</tr>";
						text += "<tr><th style='cursor:pointer' onclick='goHat(" + array[r1][4] + ", 6)'>" + array[r1][5] + "</th>" + 
							"<td style='cursor:pointer' onclick='goHat(" + array[r1][4] + ", 6)'>" + array[r1][6] + "</td>" +
							"</tr>";
						for (var r2 = r1 + 1; r2 < array.length; r2++) {
							if ((Math.abs(array[r1][2] - array[r2][2]) < 0.0005) && (Math.abs(array[r1][3] - array[r2][3]) < 0.0005)) {
								array[r2][7] = "1";
								if (text.indexOf(">" + array[r2][5] + "<") == -1) {
									text += "<tr><th style='cursor:pointer' onclick='goHat(" + array[r2][4] + ", 6)'>" + array[r2][5] + "</th>" + 
										"<td style='cursor:pointer' onclick='goHat(" + array[r2][4] + ", 6)'>" + array[r2][6] + "</td>" + 
										"</tr>";
								}
							}
						}
						text += "</table>";
						text += "<br /><i>Listeden Bir Hat Seçebilirsiniz...</li>";
					}
					if (text > "") {
						var point = new GLatLng(array[r1][2], array[r1][3]);
						map.addOverlay(createMarker(point, "/map/icons/icons/bus.png", text));
					}
				}
				drawCircle(lat, lng, 0.175, "#0000FF", 1, 1, "#0000FF", 0.150);
				break;
			}
		}
		}
	}
	catch (err) {}
}

function selectClear(o) {
	o.options.length = 0;
	return o;
}

function selectChange(o) {
	if (o.id == "txtBolge") {
		selectClear($E("txtHat"));
		if (o.value != "8" && o.value != "9") {
			var s = selectClear($E("txtHat"));
			var n = 0;
			for (var r = 0; r < hat.length; r++) {
				if (o.value == "0" || o.value == hat[r][0]) {
					s.options[n] = new Option("(" + hat[r][3] + ") - " + hat[r][4], hat[r][2]);
					s.options[n].className = ((n % 2 == 0) ? "odd" : "even");
					n++;
				}
			}
		}
		showHat();
	}
	if (o.id == "txtYardim") {
		if (o.value != "") {
			if (o.value == "harita_yardim") window.open("/swf/video.asp?url=/map/video/" + o.value, "VIDEO", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, left=0, top=0, width=820, height=768")
			if (o.value == "harita_kilavuz") window.open("/filelib/guzergah_bilgi_sistemi_kilavuzu.pdf", "KILAVUZ", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=yes, left=0, top=0, width=820, height=620")
		}
	}
}

function inputKeyPress(o, e) {
	var kc = e.keyCode;
	if (o.id == "txtAdres") if (kc == 13) showLocation();
	if (o.id == "txtHattinKodu") {
		if (kc > 32 && $E("txtHattinAdi").value.length > 0) $E("txtHattinAdi").value = "";
		if (kc == 13) searchHat();
	}
	if (o.id == "txtHattinAdi") {
		if (kc > 32 && $E("txtHattinKodu").value.length > 0) $E("txtHattinKodu").value = "";
		if (kc == 13) searchHat();
	}
	return true;
}

function sqlPoint(point, mesafe) {
	var m = parseFloat($E("txtMesafe").value);
	if (mesafe != null) m = mesafe;
	var lat1 = parseFloat(point.lat()) - m;
	var lat2 = parseFloat(point.lat()) + m;
	var lng1 = parseFloat(point.lng()) - m;
	var lng2 = parseFloat(point.lng()) + m;
	return "[x4] h.ID, h.KODU " + 
		"From MAP_DURAK d, MAP_HAT h " + 
		"Where d.PX <= " + lat2 + " " + 
		"and d.PX >= " + lat1 + " " + 
		"and d.PY <= " + lng2 + " " + 
		"and d.PY >= " + lng1 + " " + 
		"and d.DURUMU = 'AK' " + 
		"and h.ID = d.HAT_ID " + 
		"and h.DURUMU = 'AK' " + 
		"Group By h.ID, h.KODU Order By h.KODU";
}

function runAction(t) {
	if (t == 'YakınHatlar') {
		document.getElementById("txtBolge").selectedIndex = 7;
		try {
			Sql = sqlPoint(lastPoint);
			var n = 0;
			var s = selectClear($E("txtHat"));
			if (ajaxSelect(Sql)) {
				if (ajaxRowCount > 0) {
					for (var r = 0; r < ajaxRowCount; r++) {
						fld = ajaxRow[r].split("{Col}");
						for (var r1 = 0; r1 < hat.length; r1++) {
							if (hat[r1][2] == fld[0]) {
								s.options[n] = new Option("(" + hat[r1][3] + ") - " + hat[r1][4], hat[r1][2]);
								s.options[n].className = ((n % 2 == 0) ? "odd" : "even");
								n++;
							}
						}
					}
				}
			}
			if (n > 0) {
				alert("Seçilen Bölgede ( " + n + " ) Adet Uygun Hat Var");
				showHat();
			}
			else alert("Seçilen Bölgede Uygun Hat Yok !");
		}
		catch (err) {
			alert("Harita Üzerinde Bir Nokta Seçiniz !");
		}
	}
	if (t == 'BaşlangıçNoktası') {
		beginPoint = lastPoint;
		showBeginEnd();
	}
	if (t == 'BaşlangıçNoktasıGöster') {
		try {
			map.setCenter(beginPoint, 15);
		}
		catch (err) {}
	}
	if (t == 'BitişNoktası') {
		endPoint = lastPoint;
		showBeginEnd();
	}
	if (t == 'BitişNoktasıGöster') {
		try {
			map.setCenter(endPoint, 15);
		}
		catch (err) {}
	}
	if (t == 'UygunHatlar') {
		if ($E("Wait").style.display != "block") {
			divShowHide($E("Wait"), "Show");
			setTimeout("runAction('UygunHatlar')", 1000);
			return;
		}
		document.getElementById("txtBolge").selectedIndex = 8;
		var s = selectClear($E("txtHat"));
		var n = 0;
		var n1 = 0, n2 = 0;
		var a1 = [], a2 = [];
	
		var hatlar = "";
		var text = "";
		var tabs = [];
		
		try {
			Sql = sqlPoint(beginPoint);
			if (ajaxSelect(Sql)) {
				if (ajaxRowCount > 0) {
					for (var r = 0; r < ajaxRowCount; r++) {
						fld = ajaxRow[r].split("{Col}");
						a1[n1] = fld[0];
						n1++;
					}
				}
			}
			Sql = sqlPoint(endPoint);
			if (ajaxSelect(Sql)) {
				if (ajaxRowCount > 0) {
					for (var r = 0; r < ajaxRowCount; r++) {
						fld = ajaxRow[r].split("{Col}");
						for (var r1 = 0; r1 < a1.length; r1++) {
							if (a1[r1] == fld[0]) {
								a2[n2] = fld[0];
								n2++;
								for (var r2 = 0; r2 < hat.length; r2++) {
									if (hat[r2][2] == fld[0]) {
										s.options[n] = new Option("(" + hat[r2][3] + ") - " + hat[r2][4], hat[r2][2]);
										s.options[n].className = ((n % 2 == 0) ? "odd" : "even");
										n++;
									}
								}
							}
						}
					}
				}
			}
		}
		catch (err) {}
		if (n > 0) {
			alert("Seçilen Kalkış ve Varış Noktaları Arasında ( " + n + " ) Adet Uygun Hat Var");
			showHat();
			map.setCenter(beginPoint, 15);
		}
		else {
			var n = 0;
			var n1 = 0, n2 = 0;
			var a1 = [], a2 = [];
			var id1 = "", id2 = "";
			var mesafe = parseFloat($E("txtMesafe").value);
			// mesafe = 0.0020;
			try {
				Sql = sqlPoint(beginPoint, mesafe);
				if (ajaxSelect(Sql)) {
					if (ajaxRowCount > 0) {
						for (var r = 0; r < ajaxRowCount; r++) {
							fld = ajaxRow[r].split("{Col}");
							a1[n1] = fld[0];
							n1++;
							if (id1 != "") id1 += ",";
							id1 += fld[0];
						}
					}
				}
				Sql = sqlPoint(endPoint, mesafe);
				if (ajaxSelect(Sql)) {
					if (ajaxRowCount > 0) {
						for (var r = 0; r < ajaxRowCount; r++) {
							fld = ajaxRow[r].split("{Col}");
							a2[n2] = fld[0];
							n2++;
							if (id2 != "") id2 += ",";
							id2 += fld[0];
						}
					}
				}
				if ((n1 != 0) && (n2 != 0)) {
					var tab = -1;
					var tabBar = [];
					var tabText = [];
					var flag = true;
					var a4 = new Array();
					for (var r1 = 0; r1 < a1.length; r1++) {
						Sql = "[x4] d.PX, d.PY, h.ID as HAT_ID, h.KODU as HAT_KODU, h.ADI as HAT_ADI, d.SIRASI " + 
							"From MAP_DURAK d, MAP_HAT h " + 
							"Where h.ID = " + a1[r1] + " " +
							"and d.DURUMU = 'AK' " + 
							"and h.ID = d.HAT_ID " + 
							"and h.DURUMU = 'AK' " + 
							"Order By d.SIRASI";
						if (ajaxSelect(Sql)) {
							if (ajaxRowCount > 0) {
								var a3 = new Array();
								for (var r = 0; r < ajaxRowCount; r++) {
									fld = ajaxRow[r].split("{Col}");
									fld[0] = parseFloat(repString(fld[0], ",", "."));
									fld[1] = parseFloat(repString(fld[1], ",", "."));
									a3.push(fld);
									if (ajaxRowCount >= 24) {
										alert("Kalkış Noktasında Çok Fazla Hat Var !\nİlk ( 25 ) Tanesi Gösterilecek");
										break;
									}
								}
								if (flag) { 
									flag = false;
									Sql = "[x4] d.PX, d.PY, h.ID as HAT_ID, h.KODU as HAT_KODU, h.ADI as HAT_ADI, d.SIRASI " + 
										"From MAP_DURAK d, MAP_HAT h " + 
										"Where h.ID not in (" + id1 + ") " +
										"and h.ID in (" + id2 + ") " +
										"and d.DURUMU = 'AK' " + 
										"and h.ID = d.HAT_ID " + 
										"and h.DURUMU = 'AK' " + 
										"Order By h.KODU, d.SIRASI";
									if (ajaxSelect(Sql)) {
										if (ajaxRowCount > 0) {
											for (var r = 0; r < ajaxRowCount; r++) {
												fld = ajaxRow[r].split("{Col}");
												fld[0] = parseFloat(repString(fld[0], ",", "."));
												fld[1] = parseFloat(repString(fld[1], ",", "."));
												a4.push(fld);
											}
										}
									}
								}
								for (var r = 0; r < a4.length; r++) {
									for (var r2 = 0; r2 < a3.length; r2++) {
										if ((Math.abs(a4[r][0] - a3[r2][0]) < mesafe) && 
												(Math.abs(a4[r][1] - a3[r2][1]) < mesafe)) {
											if (hatlar.indexOf(a3[r2][2] + "/" + a4[r][2] + ";") == -1) {
												if (hatlar.indexOf(a3[r2][2] + "/") == -1) {
													tab++;
													tabBar[tab] = a3[r2][3];
													tabText[tab] = "<table class='infoTable' cellpadding='1' cellspacing='1'>";
													tabText[tab] += "<tr><th bgcolor='#DDDDDD' width='100px'>Hattın Numarası</th>" +
														"<th bgcolor='#DDDDDD' width='300px'>Hattın Adı</th>" + 
														"<th bgcolor='#DDDDDD' width='125px'>İnilecek Durak</th>" + 
														"<th bgcolor='#DDDDDD' width='125px'>Binilecek Durak</th>" +
														"</tr>";
													tabText[tab] += "<tr><th style='cursor:pointer;color:blue' onclick='goHat(" + a3[r2][2] + ", 7)'>" + a3[r2][3] + "</th>" +
														"<td style='cursor:pointer;color:blue' onclick='goHat(" + a3[r2][2] + ", 7)'>" + a3[r2][4] + "</td>" +
														"<td>&nbsp;</td>" +
														"<td>&nbsp;</td>" +
														"</tr>";
												}
												tabText[tab] += "<tr><th style='cursor:pointer;color:red' onclick='goHat(" + a4[r][2] + ", 7, " + a3[r2][2] + ")'>" + a4[r][3] + "</th>" + 
													"<td style='cursor:pointer;color:red' onclick='goHat(" + a4[r][2] + ", 7, " + a3[r2][2] + ")'>" + a4[r][4] + "</td>" +
													"<td align='center' style='cursor:pointer;color:blue' onclick='goHat(" + a4[r][2] + ", 7, " + a3[r2][2] + ")'>" + a3[r2][5] + "</td>" +
													"<td align='center' style='cursor:pointer;color:red' onclick='goHat(" + a4[r][2] + ", 7, " + a3[r2][2] + ")'>" + a4[r][5] + "</td>" +
													"</tr>";
												hatlar += a3[r2][2] + "/" + a4[r][2] + ";"
												n++;
											}
										}
									}
								}
							}
						}
					}
					for (var r = 0; r < tabText.length; r++) {
						tabText[r] += "</table>";
						tabText[r] += "<br /><i>Listeden Bir Hat Seçebilirsiniz...</li>";
						tabs[r] = new MaxContentTab(tabBar[r], tabText[r]);
					}
				}
			}
			catch (err) {}
			if (n > 0) {
				if (hatlar != "") {
					map.setCenter(beginPoint, 15);
					map.openMaxContentTabsHtml(beginPoint, 
						"Seçilen Kalkış ve Varış Noktaları Arasında ( " + tabText.length + " ) Adet Uygun Hat Var<br /><br />" +
						"Aktarmalı Hatları Görmek İçin ( + )'yı Tıklayınız...",
						"Aktarmalı Hatların Listesi", 
						tabs, 
						{ maxTitle: "Aktarmalı Hatlar", maximized: true });
				} 
				else {
					alert("Seçilen Kalkış ve Varış Noktaları Arasında ( " + n + " ) Adet Uygun Hat Var");
					showHat();
					map.setCenter(beginPoint, 15);
				}
			}
			else alert("Seçilen Kalkış ve Varış Noktası Arasında Uygun Hat Yok !");
		}
		
		divShowHide($E("Wait"), "Hide");
	}
	if (t == 'YolTarifi') {
		$E("MapInfo").style.height = "0px";
		map.clearOverlays();
	 directions = new GDirections(map, directionsPanel);
		try {
			var wp = new Array(2);
			wp[0] = beginPoint;
			wp[1] = endPoint;
			directions.loadFromWaypoints(wp, {
				getPolyline: true,
				getSteps: true
			});
			$E("MapInfo").style.height = "340px";
		}
		catch (err) {
			try {
				directions.loadFromWaypoints(currentPoint, {
					getPolyline: true,
					getSteps: true
				});
				$E("MapInfo").style.height = "340px";
			}
			catch (err) {}
		}
	}
	if (t == 'Öneriniz') {
		window.open("http://alo153.ankara.bel.tr/form_select.php?module=inc&parameter=&action=2&rtype=normal&birim=EGO", "ALO_153", "width=1024, height=768, status=no, menubar=no, resizable=no, scrollbars=yes, toolbar=no, location=no, directories=no");
		/*
		if ($E("OneriPage").style.display == "none") {
			$("#OneriPage").show(250);
			$E("SECURE_CODE_IMAGE").src = "/map/image/blank.gif";
			setTimeout("$E('SECURE_CODE_IMAGE').src='/map/inc/secureCode.asp';", 1000);
		}
		else {
			$("#OneriPage").hide(250);
		}
		*/
	}
	if (t == 'HaritayıTemizle') {
		window.location.reload();
	}
}

function oneriGonder() {
	var msg = "";
	$E("txtOneriAdi").value = $.trim($E("txtOneriAdi").value);
	$E("txtOneriSoyadi").value = $.trim($E("txtOneriSoyadi").value);
	$E("txtOneriEMail").value = $.trim($E("txtOneriEMail").value);
	$E("txtOneriTelefonu").value = $.trim($E("txtOneriTelefonu").value);
	$E("txtOneriKonusu").value = $.trim($E("txtOneriKonusu").value);
	if (!isNumber($E("SECURE_CODE").value)) msg = "Güvenlik Kodu'nu Sayı Giriniz !";
	if ((msg == "") && ($E("SECURE_CODE").value.length != 4)) msg = "Güvenlik Kodu'nu 8 Rakam Giriniz !";
	if ((msg == "") && ($E("txtTCKN").value == "")) msg = "T.C.Kimlik Numarasını Giriniz !";
	if ((msg == "") && ($E("txtTCKN").value.length != 11)) msg = "T.C.Kimlik Numarasını 11 Rakam Giriniz !";
	if ((msg == "") && (!isNumber($E("txtTCKN").value))) msg = "T.C.Kimlik Numarası Hatalı !";
	if ((msg == "") && ($E("txtOneriAdi").value == "")) msg = "Adınızı Giriniz !";
	if ((msg == "") && ($E("txtOneriSoyadi").value == "")) msg = "Soyadınızı Giriniz !";
	if ((msg == "") && ($E("txtOneriEMail").value == "")) msg = "Mail Adresinizi Giriniz !";
	if ((msg == "") && (!isEmail($E("txtOneriEMail").value))) msg = "Mail Adresiniz Geçersiz !";
	if ((msg == "") && ($E("txtOneriKonusu").value == "")) msg = "Mesajınızın Konusunu Giriniz !";
	if (msg != "") {
		alert(msg);
		return false;
	}
	var Sql = "[" + "x1" + "] MAP_ONERI (ISLEM_TARIHI,CLIENT_IP,ADI,SOYADI,EMAIL,TELEFONU,KONUSU,MESAJI,DETAYI,DURUMU) " + 
		"Values (" + "Now()," + "'" + myIp + "'," + 
		"'" + $E("txtOneriAdi").value + "'," + 
		"'" + $E("txtOneriSoyadi").value + "'," + 
		"'" + $E("txtOneriEMail").value + "'," + 
		"'" + $E("txtOneriTelefonu").value + "'," + 
		"'" + $E("txtOneriKonusu").value + "'," + 
		"'" + $E("txtOneriMesaji").value + "'," + 
		"'" + $E("txtTCKN").value + "'," +
		"'" + "AK" + "')";
	if (ajaxCall("/map/mapOneri.asp?SECURE_CODE=" + $E("SECURE_CODE").value + "&TCKNO=" + $E("txtTCKN").value, Sql)) {
		if (ajaxRowCount > 0) {
			fld = ajaxRow[0].split("{Col}");
			if (fld[0] == "SECURE_CODE_FALSE") {
				alert("Güvenlik Kodunu Hatalı Girdiniz !");
			} else {
				if (fld[0] == "TCKNO_CODE_FALSE") {
					alert(fld[1]);
				} else {
					if (fld[0] != "0") {
						alert("Mesajınız Gönderilemedi !");
					}	else {
						alert("Mesajınız Bize Ulaştı. İlginize Teşekkür Ederiz...");
						$E("txtTCKN").value = "";
						$E("txtOneriAdi").value = "";
						$E("txtOneriSoyadi").value = "";
						$E("txtOneriEMail").value = "";
						$E("txtOneriTelefonu").value = "";
						$E("txtOneriKonusu").value = "";
						$E("txtOneriMesaji").value = "";
					}
				}
			}
		}	else {
			alert("Mesajınız Gönderilemedi !");
		}
	}
	$E("SECURE_CODE").value = "";
	$E("SECURE_CODE_IMAGE").src = "/map/image/blank.gif";
	setTimeout("$E('SECURE_CODE_IMAGE').src='/map/inc/secureCode.asp';", 1000);
	runAction("Öneriniz");
}

var TabCurrent = "";

function TabInit(tabId) {
	var e = $E(tabId).getElementsByTagName("ul")[0].getElementsByTagName("li");
	for (var i = 0; i < e.length; i++) {
		e[i].onmouseover = function () {
			TabCurrent = this.className;
			this.className = "TabOver";
		};
		e[i].onmouseout = function () {
			this.className = TabCurrent;
			TabCurrent = "";
		};
	}
	TabShow($E(tabId));
}

function TabClick(o, t, n) {
	if (o == null) {
		var e = $E(t).getElementsByTagName("ul")[0].getElementsByTagName("li");
		o = e[n - 1].getElementsByTagName("span");
		o = o[0];
	}
	var e = o.parentNode.parentNode.getElementsByTagName("li");
	for (var i = 0; i < e.length; i++)
	e[i].className = "";
	TabCurrent = o.parentNode.className = "TabCurrent";
	TabShow(o);
}

function TabShow(o) {
	var e = o;
	while (e.className != "Tab")
	e = e.parentNode;
	var tabId = e.id;
	var e = $E(tabId).getElementsByTagName("ul")[0].getElementsByTagName("li");
	var tabCurrentId = -1;
	for (var i = 0; i < e.length; i++)
	if (e[i].className == "TabCurrent") tabCurrentId = i;
	var e = $E(tabId + "Body").getElementsByTagName("div");
	var n = 0;
	for (var i = 0; i < e.length; i++) {
		if (e[i].className == "TabBodyDiv") {
			if (n == tabCurrentId) $(e[i]).show();
			else $(e[i]).hide();
			n++;
		}
	}
}

function mapLogin(btn) {
	if (btn=="Open") {
		$("#divLogin").show(250);
	}
	if (btn=="Close") {
		$("#divLogin").hide(250);
		return;
	}
	if (btn=="Login") {
		var msg="";
		if ((msg=="")&&($E("txtKullaniciKodu").value=="")) msg="Kullanıcı Kodunu Giriniz !";
		if ((msg=="")&&($E("txtKullaniciParola").value=="")) msg="Kullanıcı Parolasını Giriniz !";
		if (msg!="") {
			alert(msg);
			return false;
		}
		Sql="[x4] KODU, PAROLA, BOLGE_ID, DURUMU From MAP_USER Where KODU='"+$E("txtKullaniciKodu").value+"'";
		if (ajaxSelect(Sql)) {
			if (ajaxRowCount>0) {
				fld=ajaxRow[0].split("{Col}");
				if (fld[3]!="AK") {
					alert("Kullanıcı Aktif Değil !");
					return false;
				}
				if (fld[1]!=$E("txtKullaniciParola").value) {
					alert("Kullanıcı Parolası Hatalı !");
					return false;
				}
				ajaxCall("/map/inc/ajaxCall.asp?SK=KK|KB|KD&SV="+
					fld[1]+"|"+
					fld[2]+"|"+
					fld[3], "");
				mapLogin("Close");			
				return true;
			} else {
				alert("Kullanıcı Kayıtlı Değil !");
				return false;
			}
		} else {
			alert("Kullanıcı Girişi Yapılamadı !");
			return false;
		}
	}
}

function hatEdit() {
	if ($E("hidHatKodu").value>"") {
		ajaxCall("/map/inc/ajaxCall.asp?SK=HN&SV="+$E("hidHatKodu").value, "");
		window.open("/map/mapEdit.asp","HARITA_HAT","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=yes, width=770, height=710");
	}
}
