var initMap=function(callback)
{
	mUnload();
	if(callback==null)callback='lMap';
	if(callback=='lCode'){var addr=vAddr();if(addr==false)return false;}
	sOb('dMapLoader');sOb('dMapC');
	var scr= document.createElement("script");
	scr.src="http://www.google.com/jsapi?key=ABQIAAAAZxMMB3UiCW4iUMAGKziDdBSRilfJmY1PkvHMBr4StErdkh7NgRSorkG37lg6k4Y6SlSkwViZvSUwWw&callback="+callback+"&hl=pl";scr.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(scr);
	
	lMap=function(){try{google.load("maps","2",{"callback":lMapLoaded});}catch(e){}};
	var lMapLoaded=function(){try{gMapFromValues();}catch(e){}};
	lCode=function(){try{google.load("maps","2",{"callback":lCodeLoaded});}catch(e){}};
	var lCodeLoaded=function(){try{gCode(addr);}catch(e){}};
};

var gMapFromValues=function()
{
	var fAcc=getObjId('fAcc').value;var fLat=getObjId('fLat').value;var fLng=getObjId('fLng').value;
	if(getObjId('fMType')&&getObjId('fMType').value=='static'){sPoint(fLat,fLng,fAcc,true,'static');}
	else{sPoint(fLat, fLng, fAcc);}
};

var vAddr=function()
{
	rqReply=0;
	var swc=getObjId('fShowMap');
	if(swc){if(swc.checked==false){hOb('dMapC');setfLatLng('','');mUnload();return false;}}
	if(getObjId('fCity').value==''){window.alert("Prosimy o podanie miejscowości.");getObjId('fCity').focus();if(swc)swc.checked=false;return false;}
	else if(getObjId('fIdRegion').value==0){window.alert("Prosimy o wybranie województwa / kraju.");getObjId('fIdRegion').focus();if(swc) swc.checked=false;returnfalse;}
	else if(getObjId('fIdDistrict').value==0){window.alert("Prosimy o wybranie powiatu.");getObjId('fIdDistrict').focus();if(swc)swc.checked=false;return false;}
	else if(getObjId('fIdCommune').value==0){window.alert("Prosimy o wybranie gminy.");getObjId('fIdCommune').focus();if(swc)swc.checked=false;return false;}
	var addr=new Array(6);
	addr[0]=getObjId('fStreet').value;
	if(getObjId('fIdQuarter').value!=0&&getObjId('fStreet').value=='') addr[1]=getObjId('fIdQuarter')[getObjId('fIdQuarter').selectedIndex].text;
	else addr[1]='';
	addr[2]=getObjId('fCity').value;
	addr[3]=getObjId('fIdCommune')[getObjId('fIdCommune').selectedIndex].text;
	(getObjId('fIdDistrict')[getObjId('fIdDistrict').selectedIndex].text.match(/^m\. /i)?addr[4]='':addr[4]=getObjId('fIdDistrict')[getObjId('fIdDistrict').selectedIndex].text);
	addr[5]=getObjId('fIdRegion')[getObjId('fIdRegion').selectedIndex].text;
	addr[6]='pl';
	return addr;
};

var rqReply=0;

var gCode=function(addr)
{
	try
	{
		var gC=new GClientGeocoder();
		gC.getLocations(addr.join(","),function(point)
		{
			if(point.Status.code==200)
			{
				var crds;var acc=point.Placemark[0].AddressDetails.Accuracy;
				if(acc>8)acc=4;
				crds=point.Placemark[0].Point.coordinates;sPoint(crds[1],crds[0],acc);
			}
			else{addr[rqReply]=null;addr.shift();if(addr[rqReply]==''){rqReply++; addr.shift();}if(rqReply>5){window.alert("Nie odnaleziono podanej lokalizacji.");return true;}gCode(addr);}
		}
		);
	}catch(e){}
};

var sPoint=function(lat,lng,acc,hideAccLabels,pointType)
{
	try
	{
		var mP=new GMap2(getObjId('dMap'));var mCP=new GLatLng(parseFloat(lat),parseFloat(lng));
		var zoom=acc2zoom(acc);if(pointType=='static')zoom++;mP.setCenter(mCP,zoom);
		
		var ico = new GIcon();
		ico.shadow = STATIC_SERVER+'/gfx/map/icoShadow.png';
		ico.image = STATIC_SERVER+'/gfx/map/marker.png';
		ico.iconSize = new GSize(22, 33);
		ico.iconAnchor = new GPoint(10, 33);
		ico.shadowSize = new GSize(37, 34);
		ico.infoWindowAnchor = new GPoint(45, -25);
		ico.infoShadowAnchor = new GPoint(45, -25);
		var opt={icon:ico};
		if(pointType!='static')opt.draggable=true;else opt.draggable=false;
		var mrk=new GMarker(mCP,opt);
		
		mP.addOverlay(mrk);mP.addControl(new GSmallMapControl());
		if(pointType=='static') mP.addControl(new GOverviewMapControl());
		if(!hideAccLabels)
		{
			var cOk='lMapAcc ok', cF='lMapAcc failed';
			(acc>=2?getObjId('dAccR').className=cOk:getObjId('dAccR').className=cF);
			(acc>=4?getObjId('dAccC').className=cOk:getObjId('dAccC').className=cF);
			(acc>=6?getObjId('dAccS').className=cOk:getObjId('dAccS').className=cF);
		}
		setfLatLng(lat,lng,acc);
		if(pointType!='static')
		{
			GEvent.addListener(mrk,"dragstart",function(){mP.closeInfoWindow();});
    		GEvent.addListener(mrk,"dragend",function() 
   			{
	    		var nLatLng=mrk.getPoint();
	    		if(acc<7||acc==9){mP.setZoom(acc2zoom(6));}
				mP.panTo(nLatLng);setTimeout("setfLatLng("+nLatLng.y+","+nLatLng.x+",8)",100);
    		}
   			);
    		mrk.openInfoWindowHtml("<div style=\"margin: 10px; font-size: 11px;\">Jeżeli chcesz dokładniej określić położenie obiektu przeciągnij<br />i upuść znacznik na mapie.</div>");
		}
		setTimeout("setOpacity('dMapLoader','out',1,5);",2000);
	}
	catch(e){}
};

function setfLatLng(lat,lng,acc){var fLat=getObjId('fLat');var fLng=getObjId('fLng');if(fLat&&fLng){fLat.value=lat;fLng.value=lng;}var fAcc=getObjId('fAcc');if(fAcc&&acc){fAcc.value=acc;}};
function acc2zoom(acc){switch(acc){case 9:return 15;case 8:return 15;case 7:return 15;case 6:return 14;case 5:return 13;case 4:return 12;case 3:return 12;case 2:return 9;case 1:return 6;default:return 12;}}
function initSMap(){setTimeout("initMap()", 2000);}
