var icons=[];
var _mSvgEnabled=true;
var _mSvgForced=true;

function GUnload()
{
	;
}

var StartMarker = {
				rusavtobus_name: "start",
				type: "marker",
				visible: true,
				clickable: false,
				draggable: true,
				icon: 'http://resource.rusavtobus.ru/incity/images/nn/images_ru/icons/begpoint.gif',
				infoTitle: "Hello World"
}

var StopMarker = {
				rusavtobus_name: "start",
				type: "marker",
				visible: true,
				clickable: false,
				draggable: true,
				icon: 'http://resource.rusavtobus.ru/incity/images/nn/images_ru/icons/endpoint.gif',
				infoTitle: "Hello World"
}

var player=null;
var ovi_layer;
var StartMarkerObj;
var StopMarkerObj;

function onMapClicked(ev) {
	ev.preventDefault();
	var pt = ev.getData();
	//alert("position");

	var layer  = player.map.createLayer({name: "points"});
	var loc = player.map.pixelToGeo(pt.x,pt.y);
	var o = layer.getMapObjects(true);

	// set start point
	if(o[0].isVisible() == false)
	{
		o[0].show();
		o[0].setPosition(loc);
		o[0].clickable = true;
		gid('aFromText').value = 0;

		pointAaddr=START_POINT;
		pointA=loc;
	}
	// set end point
	else if(o[1].isVisible() == false)
	{
		o[1].show();
		o[1].setPosition(loc);
		o[1].clickable = true;

		gid('bFromText').value = 0;
		pointB=loc;
	}
}

var ovi_player;
var ovi_init_lat;
var ovi_init_lng;
var ovi_init_zoom;

function getAndSet() {

	ovi_layer      = player.map.createLayer({name: "points"});
	StartMarkerObj = ovi_layer.addMapObjects(StartMarker)[0];
	StartMarkerObj.hide();
	StopMarkerObj = ovi_layer.addMapObjects(StopMarker)[0];
	StopMarkerObj.hide();


	player.map.setMapType("normal");
	player.map.moveTo({
		latitude: ovi_init_lat,
		longitude: ovi_init_lng,
		scale: ovi_init_zoom
		//scale: 3082
	});

	//player.map.addEventHandler(nokia.maps.pfw.MapModel.EVENT_POSITION_CHANGED,
                           //onMapPosition);
	player.map.addEventHandler(nokia.maps.pfw.MapModel.EVENT_MAP_CLICKED,
                           onMapClicked);

	var layer = player.map.createLayer({name: "path"});

}

function gmCreateMap(a,b,c,d)
{
	b=b==null?3082:b;
	c=c==null?55.757287:c;
	d=d==null?37.620217:d;


	ovi_init_lat=c;
	ovi_init_lng=d;
	ovi_init_zoom=b;

	// Initialize the Maps Player:
	player = new nokiaMapLoader.getPlayer({
																 "playerDomId": a,
																	 onInitDone: getAndSet, 
																 "jsPlugin":"supported",
																 "token": "680ce1d5b3bd9f0032c2d3f6510af4b5",
																 //"debug": {"console": true, "consoleId": "console"},
																 uiLanguage: "ru"
																 });

	gmInitIcons();

	return player;
};

function gmDrawPolyLine(a,b, col, w)
{
	if(!player.map)
	{
		setTimeout("gmDrawPolyLine({latitude: "+a.latitude+", longitude: "+a.longitude+"},{latitude: "+b.latitude+", longitude: "+b.longitude+"},'"+ col+"',"+ w+")",100);
	}
	else
	{
		var layer  = player.map.createLayer({name: "path"});


		if(!layer)
		{
			setTimeout("gmDrawPolyLine({latitude: "+a.latitude+", longitude: "+a.longitude+"},{latitude: "+b.latitude+", longitude: "+b.longitude+"},'"+ col+"',"+ w+")",100);
		}
		else
		{
				var line = {
									 type: "polyline",
									 points: [{latitude: Number(a.latitude), longitude: Number(a.longitude)},
														 {latitude: Number(b.latitude), longitude: Number(b.longitude)}],
									 visible: true,
									 width: w,
									 color: {red: 180, blue: 20, green: 0, alpha: 255}
								 };
				layer.addMapObjects(line);
		}
	}
}




function gmAddStart(pt)
{
	if(!player.map)
	{
		setTimeout("gmAddStart({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
	}
	else
	{
		var layer  = player.map.createLayer({name: "points"});

		if(!layer)
		{
			setTimeout("gmAddStart({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
		}
		else
		{
			var o = layer.getMapObjects(true);
			if(o.length < 2)
			{
				setTimeout("gmAddStart({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
			}
			else
			{
				loc = {latitude: Number(pt.latitude), longitude: Number(pt.longitude)}
				o[0].show();
				o[0].setPosition(loc);
			}
		}
	}
}

function gmIsMap()
{
	if(player.map)
	{
		var layer  = player.map.createLayer({name: "test"});
		if(layer)
		{
			return true;
		}
	}
	return false;
}

function gmAddStop(pt)
{
	if(!player.map)
	{
		setTimeout("gmAddStop({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
	}
	else
	{
		var layer  = player.map.createLayer({name: "points"});

		if(!layer)
		{
			setTimeout("gmAddStop({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
		}
		else
		{
			var o = layer.getMapObjects(true);
			if(o.length < 2)
			{
				setTimeout("gmAddStop({latitude: "+pt.latitude+", longitude: "+pt.longitude+" })",100);
			}
			else
			{
				loc = {latitude: Number(pt.latitude), longitude: Number(pt.longitude)}
				o[1].show();
				o[1].setPosition(loc);
			}
		}
	}
}

function gmHideA()
{
	var layer  = player.map.createLayer({name: "points"});
	var o = layer.getMapObjects(true);
	o[0].hide();
}

function gmHideB()
{
	var layer  = player.map.createLayer({name: "points"});
	var o = layer.getMapObjects(true);
	o[1].hide();
}

function gmClearStations()
{
	if(player.map)
	{
		var layer  = player.map.createLayer({name: "stations"});
		var mapObj = layer.getMapObjects(true);
		layer.removeMapObjects(mapObj);
		layer  = player.map.createLayer({name: "path"});
		mapObj = layer.getMapObjects(true);
		layer.removeMapObjects(mapObj);
	}
}

function gmDrawCircle(a,b,c,d)
{
};
function gmAddPointCheckUse(a,b,c,d,e,f,g,h,i)
{
	g=g==null?'simple':g;
	if(f==0)
	{
		g='tat-unchecked'
	}
	else
	{
		g='tat'
	}
	h=h==null?false:h;
	if(h==false)
	{
		var j=new GMarker(c,icons[g])
	}
	else
	{
		var j=new GMarker(c,
		{
			icon:icons[g],draggable:true
		}
		);
		j.enableDragging();
		GEvent.addListener(j,'dragend',function()
		{
			gid('newid').value=b;
			gid('newname').value=d;
			gid('newaddr').value=e;
			gid('inuse').value=f;
			gid('newlat').value=j.getPoint().lat();
			gid('newlng').value=j.getPoint().lng();
			gid('checkpointid').value=i
		}
		)
	}
	var k='<b>'+d+'</b>'+'<br/>'+e;
	GEvent.addListener(j,'click',function()
	{
		j.openInfoWindowHtml(k);
		gid('newid').value=b;
		gid('newname').value=d;
		gid('newaddr').value=e;
		gid('inuse').value=f;
		gid('newlat').value=j.getPoint().lat();
		gid('newlng').value=j.getPoint().lng();
		gid('checkpointid').value=i
	}
	);
	return j
};
function gmAddPointSpec(a,b,c,d,e,f,g,h,i)
{
	h=h==null?'simple':h;
	i=i==null?false:i;
	if(i==false)
	{
		var j=new GMarker(c,icons[h])
	}
	else
	{
		var j=new GMarker(c,
		{
			icon:icons[h],draggable:true
		}
		);
		j.enableDragging();
		GEvent.addListener(j,'dragend',function(){
			gid('newid').value=b;
			if(gid('switchid')){
				gid('switchid').value=b;
			}
			gid('newname').value=f;
			gid('newaddr').value=g;
			gid('newlat').value=j.getPoint().lat();
			gid('newlng').value=j.getPoint().lng();
		});
	}
	var k='<b>'+e+': '+d+'</b>'+'<br/>'+f+'<br/>'+g;
	GEvent.addListener(j,'click',function()
	{
		j.openInfoWindowHtml(k);
		gid('newid').value=b;
		if(gid('switchid')){
			gid('switchid').value=b;
		}
		gid('newname').value=f;
		gid('newaddr').value=g;
		gid('newlat').value=j.getPoint().lat();
		gid('newlng').value=j.getPoint().lng()
	}
	);
	return j
};
function gmAddPointSimple(a,b,c,d,e)
{
	d=d==null?'simple':d;
	e=e==null?false:e;
	if(e==false)
	{
		var f=new GMarker(b,icons[d])
	}
	else
	{
		var f=new GMarker(b,
		{
			icon:icons[d],draggable:true
		}
		);
		f.enableDragging()
	}
	var g='<b>'+c+'</b>';
	GEvent.addListener(f,'click',function()
	{
		f.openInfoWindowHtml(g)
	}
	);
	a.addOverlay(f);
	return f
};



function gmAddCheckpoint_set(lat, lng, c, g)
{
	var k = {
					type: "marker",
					visible: true,
					clickable: true,
					longitude: Number(lng),
					latitude: Number(lat),
					infoTitle: c,
					icon: gmCreateIcon(g)
	}

	var layer      = player.map.createLayer({name: "stations"});
	var kObj = layer.addMapObjects(k)[0];
}

function gmAddCheckpoint_set_(lat, lng, c, g)
{
	if(!player.map)
	{
		setTimeout("gmAddCheckpoint_set_("+lat+", "+lng+", '"+c+"', '"+g+"');",100);
	}
	else
	{
		var layer  = player.map.createLayer({name: "stations"});
		if(!layer)
		{
			setTimeout("gmAddCheckpoint_set_("+lat+", "+lng+", '"+c+"', '"+g+"');",100);
		}
		else
		{
			gmAddCheckpoint_set(lat, lng, c, g);
		}
	}
}

function gmAddCheckpoint(a,b,c,d,e,f,g,h,i,showHint)
{
	var lat = b.latitude;
	var lng = b.longitude;

	gmAddCheckpoint_set_(lat, lng, c, g);
};

function gmAddPoint(a,b,c,d,e,f,g,showHint)
{
	//FIXME
	/*
	g=g==null?true:g;
	e=e==null?'simple':e;
	f=f==null?false:f;
	showHint=showHint==null?true:showHint;
	if(f==false)
	{
		var h=new GMarker(b,icons[e])
	}
	else
	{
		var h=new GMarker(b,
		{
			icon:icons[e],draggable:true
		}
		);
		h.enableDragging();
		if(e=='orig'){
			GEvent.addListener(h,'dragend',function(){gid('aFromText').value = 0;});
		}
		else if(e=='dest'){
			GEvent.addListener(h,'dragend',function(){gid('bFromText').value = 0;});
		}
	}
	if(showHint==true)
	{
		var i='<div id="bubble"><strong>'+c+'</strong></div>';
		GEvent.addListener(h,'click',function()
		{
			h.openInfoWindowHtml(i)
		}
		)
	};
	if(g)
	{
		a.addOverlay(h)
	}
	return h
	*/
};
function gmReadMarker(a,b,c)
{
	var d=b.getAttribute("way")+"<br/>"+b.getAttribute("name");
	var e=b.getAttribute("address");
	var f=new GLatLng(parseFloat(b.getAttribute("lat")),parseFloat(b.getAttribute("lng")));
	return gmAddPoint(a,f,d,e,c)
};
function gmReadMarkerSpec(a,b,c,d)
{
	var e=c+"<br/>"+b.getAttribute("name");
	var f=b.getAttribute("address");
	var g=new GLatLng(parseFloat(b.getAttribute("lat")),parseFloat(b.getAttribute("lng")));
	return gmAddPoint(a,g,e,f,d)
};


function gmShowAll()
{

	if(!player.map)
	{
		setTimeout("gmShowAll()",100);
	}
	else
	{
		var layer  = player.map.createLayer({name: "path"});
		if(!layer)
		{
			setTimeout("gmShowAll()",100);
		}
		else
		{
			var o = layer.getMapObjects(true);

			player.map.moveToPoints({points: o});

		}
	}
}

function gmCreateIcon(a)
{
	return RES_ROOT+'images/msk/'+IMAGES_ROOT+'/icons/'+a;
};
function gmInitIcons()
{


	/*
	var a=new GIcon();
	a.image='http://labs.google.com/ridefinder/images/mm_20_blue.png';
	a.shadow='http://labs.google.com/ridefinder/images/mm_20_shadow.png';
	a.iconSize=new GSize(12,20);
	a.shadowSize=new GSize(22,20);
	a.iconAnchor=new GPoint(6,20);
	a.infoWindowAnchor=new GPoint(5,1);
	icons['simple']=a;
	icons['blue']=a;
	var b=new GIcon();
	b.image='http://labs.google.com/ridefinder/images/mm_20_red.png';
	b.shadow='http://labs.google.com/ridefinder/images/mm_20_shadow.png';
	b.iconSize=new GSize(12,20);
	b.shadowSize=new GSize(22,20);
	b.iconAnchor=new GPoint(6,20);
	b.infoWindowAnchor=new GPoint(5,1);
	icons['red']=b;
	var c=new GIcon();
	c.image=RES_ROOT+'images/msk/'+IMAGES_ROOT+'/icons/endpoint.gif';
	c.iconSize=new GSize(30,30);
	c.iconAnchor=new GPoint(15,30);
	c.infoWindowAnchor=new GPoint(5,1);
	icons['dest']=c;
	
	var x=new GIcon();
	x.image='http://labs.google.com/ridefinder/images/mm_20_green.png';
	x.shadow='http://labs.google.com/ridefinder/images/mm_20_shadow.png';
	x.iconSize=new GSize(12,20);
	x.shadowSize=new GSize(22,20);
	x.iconAnchor=new GPoint(6,20);
	x.infoWindowAnchor=new GPoint(5,1);
	icons['green']=x;
	
	var f=new GIcon();
	f.image=RES_ROOT+'images/msk/'+IMAGES_ROOT+'/icons/begpoint.gif';
	f.iconSize=new GSize(30,30);
	f.iconAnchor=new GPoint(15,30);
	f.infoWindowAnchor=new GPoint(5,1);
	icons['orig']=f;
	var d=new GIcon();
	d.image=RES_ROOT+'images/msk/'+IMAGES_ROOT+'/icons/tat.gif';
	d.iconSize=new GSize(20,20);
	d.iconAnchor=new GPoint(6,10);
	d.infoWindowAnchor=new GPoint(5,1);
	icons['tat']=d;
	var e=new GIcon();
	e.image=RES_ROOT+'images/msk/'+IMAGES_ROOT+'/icons/tat-unchecked.gif';
	e.iconSize=new GSize(20,20);
	e.iconAnchor=new GPoint(6,20);
	e.infoWindowAnchor=new GPoint(5,1);
	icons['tat-unchecked']=e
	*/
};
function CDownloadUrl(b,c,d)
{
	var e;
	var f=navigator.appName;
	if(f.indexOf("Microsoft")>-1)e=new ActiveXObject("Microsoft.XMLHTTP");
	else e=new XMLHttpRequest();
	e.open(b,c,true);
	e.setRequestHeader('X-Requested-With','XMLHtpRequest');
	e.setRequestHeader('Accept','txt/html');
	e.onreadystatechange=function()
	{
		if(e.readyState==4)
		{
			if(e.status==200)
			{
				var a=e.getResponseHeader('Content-Type');
				if(a.indexOf('xml')>-1)
				{
					d(e.responseText)
				}
				else
				{
					d(e.responseText)
				}
			}
			else
			{
				d('Error: '+e.status)
			}
		}
	};
	e.send(null)
};
function gid(a)
{
	return document.getElementById(a)
};
function getbyid(a)
{
	return document.getElementById(a)
};
