_mSvgEnabled = true;
_mSvgForced  = true;

var center ;
var circle ;
var radius ;
var marker=[];
var point=[];
var poly=[];
var line=[];
var map ;
var icon;

function findSmsPos()
{
	var nLat = 0;
	var nLng = 0;
	
	str = document.getElementById("smsfind").value;
	str = str.toUpperCase();
	
	//распознаём формат 'E03738.1791,N5545.8960' или 'N5545.8960,E03738.1791'
	if (nLat == 0 && nLng == 0)
	{
		//проверяем правильность введённого выражения
		var pattern = new RegExp("^[EWSN][0-9]{4,5}[.][0-9]{1,6},[EWSN][0-9]{4,5}[.][0-9]{1,6}$", "i");
		var result = pattern.exec(str);
		if (!result || result == 'null')
		{
			result = '';
	//		alert ("Заданная строка не соответствует формату. Строка должна иметь вид: 'E03738.1791,N5545.8960' или 'N5545.8960,E03738.1791'.");
		}
		else
		{
			str = result.toString();
			pos = str.indexOf(',');
			
			if (str.substring(0, 1) == "W" || str.substring(0, 1) == "E")
			{
				sLng = str.substring (0, pos);
				sLat = str.substring (pos+1, str.length);
			}
			else
			{
				sLat = str.substring (0, pos);
				sLng = str.substring (pos+1, str.length);
			}
			
			//Longitude
			//Вычисляем градусы
			npoint = sLng.length - sLng.indexOf(".") + 1;
			ss = sLng.substring(1, sLng.length - npoint - 1);
			nLng = parseFloat(ss);              
			//Добавляем доли градусов
			npoint = sLng.indexOf(".");
			ss = sLng.substring(npoint - 2);
			nLng = nLng + (parseFloat(ss)) / 60;   
			//Определяем знак
			if (sLng.substring(0, 1) == "W")
			{
				nLng = nLng * (-1);
			}
			nLng = nLng.toString();
			nLng = nLng.replace(",", ".");
			
			//Latitude
			//Вычисляем градусы
			npoint = sLat.length - sLat.indexOf(".") + 1;
			ss = sLat.substring(1, sLat.length - npoint - 1);
			nLat = parseFloat(ss);               
			//Добавляем доли градусов
			npoint = sLat.indexOf(".");
			ss = sLat.substring(npoint - 2);
			nLat = nLat + (parseFloat(ss)) / 60;  
			//Определяем знак
			if (sLat.substring(0, 1) == "S")
			{
				nLat = nLat * (-1);
			}
			nLat = nLat.toString();
			nLat = nLat.replace(",", ".");
			
		//	alert (npoint + "; " + sLng + "; " + nLng+ "; " + sLat + "; " + nLat);
		}
	}
	
	//распознаём формат 55.99472,37.437300
	if (nLat == 0 && nLng == 0)
	{
		var pattern = new RegExp("^[0-9]{1,2}[.][0-9]{1,6},[0-9]{1,3}[.][0-9]{1,6}$", "i");
		var result = pattern.exec(str);
		if (!result || result == 'null')
		{
			result = '';
	//		alert ("Заданная строка не соответствует формату. Строка должна иметь вид: '55.99472,37.437300'.");
		}
		else
		{
			str = result.toString();
			pos = str.indexOf(',');
			
			sLat = str.substring (0, pos);
			sLng = str.substring (pos+1, str.length);
			
			//Longitude
			//Вычисляем градусы
			nLng = parseFloat(sLng);              
			nLng = nLng.toString();
			nLng = nLng.replace(",", ".");
			
			//Latitude
			//Вычисляем градусы
			nLat = parseFloat(sLat);               
			nLat = nLat.toString();
			nLat = nLat.replace(",", ".");
		}
	}

	if (nLat != 0 && nLng != 0)
	{
		smspoint = new GLatLng(nLat,nLng);
		smsmarker = new GMarker(smspoint, {icon:icon, draggable: false});
		map.addOverlay(smsmarker);
		map.panTo(smspoint);
	}
	else
	{
		alert ("Заданная строка не соответствует формату. Строка должна иметь вид: '55.745666,37.606201', 'E03738.1791,N5545.8960' или 'N5545.8960,E03738.1791'.");
	}
	
}

function refreshSmsString()
{
	for (var i=0; i<document.smsform.smsradio.length; i++)
	{
		if (document.smsform.smsradio[i].checked)
		{
	//		alert (i);
	//		alert (document.smsform.smsradio[i].value);
			switch (document.smsform.smsradio[i].value) 
			{ 
				 case "drawRectangle()" : 
						redrawRectangle(); 
						break; 
				 case "drawCircle()" : 
						redrawCircle(); 
						break; 
				 default : 
						document.smsform.smsradio[i].click(); 
			}		
		}
	}
}

function standbyMode()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smshide";
	document.getElementById("divsmsnumber").className = "smshide";
	document.getElementById("divsmsformat").className = "smshide";
	document.getElementById("divsmsphone").className = "smsshow";
	
	var ss = "";
	ss += "?2";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function immediateSmsReport()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smshide";
	document.getElementById("divsmsnumber").className = "smshide";
	document.getElementById("divsmsformat").className = "smsshow";
	document.getElementById("divsmsphone").className = "smsshow";

	var ss = "";
	ss += "?0";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	ss += "," + document.getElementById("smsformat").value; //",1";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function periodicalSmsReport()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smsshow";
	document.getElementById("divsmsnumber").className = "smsshow";
	document.getElementById("divsmsformat").className = "smsshow";
	document.getElementById("divsmsphone").className = "smsshow";

	var ss = "";
	ss += "?1";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	ss += "," + document.getElementById("smsperiod").value; //",30";
	ss += "," + document.getElementById("smsnumber").value; //",2";
	ss += "," + document.getElementById("smsformat").value; //",1";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function immediateGprsReport()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smshide";
	document.getElementById("divsmsnumber").className = "smshide";
	document.getElementById("divsmsformat").className = "smshide";
	document.getElementById("divsmsphone").className = "smsshow";

	var ss = "";
	ss += "?8";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function periodicalGprsReport()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smsshow";
	document.getElementById("divsmsnumber").className = "smshide";
	document.getElementById("divsmsformat").className = "smshide";
	document.getElementById("divsmsphone").className = "smsshow";

	var ss = "";
	ss += "?9";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	ss += "," + document.getElementById("smsperiod").value; //",30";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function voiceMonitor()
{
	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smshide";
	document.getElementById("divsmsinout").className = "smshide";
	document.getElementById("divsmsperiod").className = "smshide";
	document.getElementById("divsmsnumber").className = "smshide";
	document.getElementById("divsmsformat").className = "smshide";
	document.getElementById("divsmsphone").className = "smsshow";

	var ss = "";
	ss += "?6";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
}

function load()
{
	map = new GMap2(document.getElementById("smsmap"));
//	map.addControl(new GScaleControl()) ;
//	map.addControl(new GLargeMapControl());
//	map.addControl(new GMapTypeControl());
//	map.addControl(new GOverviewMapControl()) ;
//	map.enableDoubleClickZoom();
//	map.enableScrollWheelZoom();
	map.setUIToDefault();
	map.enableContinuousZoom();

	map.setCenter(new GLatLng(55.757645,37.614441), 10);
	// для избежания прокрутки страницы при вращении колеса над картой
	GEvent.addDomListener(map.getContainer(), "DOMMouseScroll", wheelevent);
	map.getContainer().onmousewheel = wheelevent; 
	
	icon = new GIcon();
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
}

//функция для избежания прокрутки страницы при вращении колеса над картой
function wheelevent(e)
{
	if (!e)
	{
		e = window.event
	}
	if (e.preventDefault)
	{
		e.preventDefault()
	}
	e.returnValue = false;
}

function clearMap()
{
	map.clearOverlays();
}

function drawCircle()
{
//	clearMap();
//	if(center)
//	{
//		map.removeOverlay(center) ;
//	}
//	if(radius)
//	{
//		map.removeOverlay(radius) ;
//	}

	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smsshow";
	document.getElementById("divsmsinout").className = "smsshow";
	document.getElementById("divsmsperiod").className = "smsshow";
	document.getElementById("divsmsnumber").className = "smsshow";
	document.getElementById("divsmsformat").className = "smsshow";
	document.getElementById("divsmsphone").className = "smsshow";

	mapCenter = map.getCenter();
	mapBounds = map.getBounds();
	sw = mapBounds.getSouthWest();
	ne = mapBounds.getNorthEast();
	
	var lng1 = (mapCenter.lng() - sw.lng())/2 + sw.lng();
	
//	center = new GMarker(new GLatLng(55.751849,37.620621), {icon:icon, draggable: true});
	center = new GMarker(mapCenter, {icon:icon, draggable: true});
	map.addOverlay(center);
	center.enableDragging();
	GEvent.addListener(center,'dragend',function() {redrawCircle()});
	oldpoint = center.getPoint() ;
	
//	radius = new GMarker(new GLatLng(55.751849,37.665253), {icon:icon, draggable: true});
	radius = new GMarker(new GLatLng(mapCenter.lat(),lng1), {icon:icon, draggable: true});
	map.addOverlay(radius);
	radius.enableDragging();
	GEvent.addListener(radius,'dragend',function() {redrawCircle()});

	redrawCircle();
}

function redrawCircle()
{
	var point = center.getLatLng() ;
	var lat = point.lat() ;
	var lng = point.lng() ;
	if (center.oldpoint)			// Move radius when center is moved
	{
		var p = radius.getPoint() ;
		var x = point.lat() - center.oldpoint.lat() ;
		var y = point.lng() - center.oldpoint.lng() ;
		radius.setPoint( new GLatLng( p.lat() + x, p.lng() + y) ) ;
	}
	center.oldpoint = point ;

	var Cradius = point.distanceFrom(radius.getLatLng());
	var Ccolor = '#0000ff' ;		// color blue
	var Cwidth = 3 ;			// width pixels
	var d2r = Math.PI/180 ;		// degrees to radians
	var r2d = 180/Math.PI ;		// radians to degrees
	var Clat = ((Cradius* 0.000621371192)/3963) * r2d ;	//  using 3963 as earth's radius

	var Clng = Clat/Math.cos(lat*d2r);
	var Cpoints = [] ;
	for (var i = 0 ; i < 27 ; i++)
	{
		var theta = Math.PI * (i/12) ;
		Cx = lng + (Clng * Math.cos(theta)) ;
		Cy = lat + (Clat * Math.sin(theta)) ;
		Cpoints.push(new GPoint(Cx,Cy)) ;
	}
	if (circle)
	{
		map.removeOverlay(circle) ;
	}

	circle = new GPolyline(Cpoints,Ccolor,Cwidth) ;
	map.addOverlay(circle);
	
	var ss = "";
	ss += "?" + document.getElementById("smscanal").value; //"11";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	ss += ",C";
	ss += ",E" + dd2ddmm(point.lng(), true);
	ss += ",N" + dd2ddmm(point.lat(), false);
	ss += "," + Math.round(Cradius);
	ss += "," + document.getElementById("smsinout").value; //",out";
	ss += "," + document.getElementById("smsperiod").value; //",30";
	ss += "," + document.getElementById("smsnumber").value; //",2";
	ss += "," + document.getElementById("smsformat").value; //",1";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
} 

function drawRectangle()
{
//	clearMap();
//	for(var i = 0 ; i <= marker.length ;i++)
//	{
//		if(marker[i])
//		{
//			 map.removeOverlay(marker[i]) ;
//		}
//		if(line[i])
//		{
//			 map.removeOverlay(line[i]) ;
//		}
//	}

	document.getElementById("divsmsimei").className = "smsshow";
	document.getElementById("divsmscanal").className = "smsshow";
	document.getElementById("divsmsinout").className = "smsshow";
	document.getElementById("divsmsperiod").className = "smsshow";
	document.getElementById("divsmsnumber").className = "smsshow";
	document.getElementById("divsmsformat").className = "smsshow";
	document.getElementById("divsmsphone").className = "smsshow";

	marker.length=0;
	point.length=0;

	mapCenter = map.getCenter();
	mapBounds = map.getBounds();
	sw = mapBounds.getSouthWest();
	ne = mapBounds.getNorthEast();
	
	var lat1 = (mapCenter.lat() - sw.lat())/2 + sw.lat();
	var lng1 = (mapCenter.lng() - sw.lng())/2 + sw.lng();
	var lat2 = (mapCenter.lat() - ne.lat())/2 + ne.lat();
	var lng2 = (mapCenter.lng() - ne.lng())/2 + ne.lng();
	
	point.push(new GLatLng(lat1,lng1));
	point.push(new GLatLng(lat1,lng2));
	point.push(new GLatLng(lat2,lng2));
	point.push(new GLatLng(lat2,lng1));
 
	for(var n = 0 ; n < point.length ; n++)
	{
		marker[n] = new GMarker(point[n], {icon:icon, draggable: true});
		if (n == 0 || n == 2)
		{
			map.addOverlay(marker[n]);
			marker[n].enableDragging();
			GEvent.addListener(marker[n],'dragend',function() {redrawRectangle()});
		}
	}
	
	redrawRectangle( ) ;
}

function redrawRectangle()
{
	var lat1 = marker[0].getLatLng().lat();
	var lng1 = marker[0].getLatLng().lng();
	var lat2 = marker[2].getLatLng().lat();
	var lng2 = marker[2].getLatLng().lng();
	
	poly.length=0; 
	
	poly.push(new GLatLng(lat1,lng1));
	poly.push(new GLatLng(lat1,lng2));
	poly.push(new GLatLng(lat2,lng2));
	poly.push(new GLatLng(lat2,lng1));
	poly.push(new GLatLng(lat1,lng1));
	
	for(var i = 0 ; i <= marker.length ;i++)
	{
		if(line[i])
		{
			 map.removeOverlay(line[i]) ;
		}
		line[i]=new GPolyline(poly,'#FF0000', 3, 1);
		map.addOverlay(line[i]);
	}
	
	if (lat1 <= lat2)
	{
		minlat = lat1;
		maxlat = lat2;
	}
	else
	{
		minlat = lat2;
		maxlat = lat1;
	}

	if (lng1 <= lng2)
	{
		minlng = lng1;
		maxlng = lng2;
	}
	else
	{
		minlng = lng2;
		maxlng = lng1;
	}

	var ss = "";
	ss += "?" + document.getElementById("smscanal").value; //"11";
	if (document.getElementById("smsimei").value.length == 0)
		ss += ",<font color='red'>[IMEI]</font>"
	else
		ss += "," + document.getElementById("smsimei").value; //",[IMEI]";
	ss += ",R";
	ss += ",E" + dd2ddmm(minlng, true);
	ss += ",N" + dd2ddmm(minlat, false);
	ss += ",E" + dd2ddmm(maxlng, true);
	ss += ",N" + dd2ddmm(maxlat, false);
	ss += "," + document.getElementById("smsinout").value; //",out";
	ss += "," + document.getElementById("smsperiod").value; //",30";
	ss += "," + document.getElementById("smsnumber").value; //",2";
	ss += "," + document.getElementById("smsformat").value; //",1";
	if (document.getElementById("smsphone").value != "")
		ss += "," + document.getElementById("smsphone").value; //",+79161112233";
	ss += "!";
	document.getElementById("message").innerHTML = ss;
};

function dd2ddmm (dd, addzero)
{
	//вычисляем целые градусы
	deg = Math.floor(Math.abs(dd));
	//вычисляем дробные части
	fr = Math.abs(dd)-deg;
	//вычисляем минуты
	fr = (fr*60).toFixed(4);
	//добавим лидирующий 0, если нужно
	if (addzero == true)
		deg = add0 (deg);
	str = deg + fr;
	return str;
}

//функция для добавления лидирующих нулей
function add0(str)
{
	str = str.toString();
	if (str.length == 2)
		 str ="0" + str;
	return str;
}	

