// Copyright (c) Position s.r.o.
// All rights reserved.

var ngPlacesVer=1,ngPlacesSubVer=0,ngPlacesAPIVersion=ngPlacesVer+"."+ngPlacesSubVer,ngPlacesByID=[],ngPlacesLastID=0,errPlacesNotFound=-1,errPlacesNotAvailable=-2;function pl_ProcessUrl(a){this.rpc.sendRequest(a)}function pl_addParams(a,b,c){if(typeof b=="string")return"&"+a+"="+ng_URLEncode(b,c);else if(typeof b=="number")return"&"+a+"="+b;return""}
function pl_Search(a,b){if(a!=""){this.Reset();this.SearchParams="&F=L";this.SearchParams+="&T="+ng_URLEncode(a,true);this.SearchParams+=pl_addParams("CRY",b);this.DoSearch()}}function pl_SearchCity(a,b){if(a!=""){this.Reset();this.SearchParams="&F=C";this.SearchParams+=pl_addParams("C",a,true);this.SearchParams+=pl_addParams("CRY",b);this.DoSearch()}}
function pl_SearchStreet(a,b,c){if(!(a==""&&b=="")){this.Reset();this.SearchParams="&F=S";this.SearchParams+=pl_addParams("C",a,true);this.SearchParams+=pl_addParams("S",b,true);this.SearchParams+=pl_addParams("CRY",c);this.DoSearch()}}
function pl_SearchAddress(a,b,c,d,e){if(!(a==""&&b==""&&c==""&&d=="")){this.Reset();this.SearchParams="&F=A";this.SearchParams+=pl_addParams("C",a,true);this.SearchParams+=pl_addParams("S",b,true);this.SearchParams+=pl_addParams("CP",c);this.SearchParams+=pl_addParams("CO",d);this.SearchParams+=pl_addParams("CRY",e);this.DoSearch()}}
function pl_SearchCoords(a,b){if(a!=""){this.Reset();this.SearchParams="&F=D";this.SearchParams+="&POS="+ng_URLEncode(a);this.SearchParams+=pl_addParams("CRY",b);this.DoSearch()}}function pl_SearchZips(a,b){if(a!=""){this.Reset();this.SearchParams="&F=Z";this.SearchParams+=pl_addParams("psc",a);this.SearchParams+=pl_addParams("CRY",b);this.DoSearch()}}
function pl_URLStateParams(){var a="";if(this.SearchParams!=""){var b=this.Params;a+="PL="+this.PlacesID+"&CI="+this.CmdID;if(this.IsCounter){a+="&O="+b.Offset;if(this.MaxCounter>0)a+="&MC="+this.MaxCounter}else a+="&P="+b.Page;if(this.PageSize>0)a+="&PS="+this.PageSize;if(this.APIKey!="")a+="&KEY="+this.APIKey;a+=this.SearchParams}return a}
function pl_DoSearch(){if(this.SearchParams!="")if(!this.OnSearch||this.OnSearch(this)){this.CmdID++;if(this.CmdID>99)this.CmdID=0;url=ng_AddURLParam(this.SearchURL,this.URLStateParams());this.ProcessUrl(url)}}
function pl_setParamsSearch(a,b){var c="";c+=pl_addParams("F",a.ResultType);c+=pl_addParams("O",a.Offset);c+=pl_addParams("C",b.City,true);c+=pl_addParams("S",b.Street,true);c+=pl_addParams("CP",b.Cp);c+=pl_addParams("CO",b.Co);c+=pl_addParams("cn",b.Cn);c+=pl_addParams("psc",b.Psc);c+=pl_addParams("CRY",a.Country);return c}
function pl_DoParamsSearch(){this.SearchParams=pl_setParamsSearch(this.Params,this.Adr);if(this.SearchParams!="")if(!this.OnSearch||this.OnSearch(this)){this.CmdID++;if(this.CmdID>99)this.CmdID=0;url=ng_AddURLParam(this.SearchURL,this.URLStateParams());this.ProcessUrl(url)}}function pl_CancelSearch(){this.CmdID++;if(this.CmdID>99)this.CmdID=0}
function pl_SearchFinished(a){if(typeof a=="object"){if(typeof a.Results=="object")this.Results=a.Results;if(typeof a.Params=="object")this.Params=a.Params;if(typeof a.Adr=="object")this.Adr=a.Adr}this.OnSearchResults&&this.OnSearchResults(this)}function pl_Error(a){this.OnSearchError&&this.OnSearchError(this,a)}function pl_FirstPage(){if(this.Params.Page>0){this.Params.Page=0;this.Params.Offset=0;this.DoParamsSearch()}}
function pl_NextPage(){if(this.Params.NextVisible){this.Params.Page++;this.Params.Offset=this.Params.PageTo;this.DoParamsSearch()}}function pl_PrevPage(){if(this.Params.Page>0){this.Params.Page--;this.Params.Offset-=this.Params.PageSize;if(this.Params.Offset<0)this.Params.Offset=0;this.DoParamsSearch()}}function pl_FindItemByID(a){for(var b=Results.length,c=0;c<b;c++)if(Results[c]&&Results[c].id==a)return c;return-1}function pl_DefaultItemPopupMenu(a,b){return a.CreatePopupHTML(b.descr)}
function pl_DisplayItem(a){if(!this.Map||a<0||a>=this.Results.length)return false;var b=null;if(this.OnDisplayItem)b=this.OnDisplayItem(this,a);if(!b){a=this.Results[a];if(typeof a.pos=="undefined"||a.pos=="")return null;b=this.Map.AddPopupIcon(this.LocateIconId+"_"+a.id,this.LocateIcon,a.pos,a.descr,this.LocateIconHotSpot);b.onpopup=this.OnItemPopupMenu}return b}function pl_DisplayItemByID(a){if(this.Map)return this.DisplayItem(this.FindItemByID(a));return false}
function pl_LocateItem(a,b,c){if(!this.Map||a<0||a>=this.Results.length)return false;if(this.OnLocateItem&&!this.OnLocateItem(this,a))return false;var d=this.Results[a],e=this.LocateIconId+"_"+d.id;if(!this.Map.PopupIconExists(e)){e=this.LocateIconId+"_Search";this.Map.RemovePopupIconByID(e);var f=null;if(this.OnDisplayItem)f=this.OnDisplayItem(this,a);if(!f){if(typeof d.pos=="undefined"||d.pos=="")return false;f=this.Map.AddPopupIcon(e,this.LocateIcon,d.pos,d.descr,this.LocateIconHotSpot);f.onpopup=
this.OnItemPopupMenu}}if(typeof b=="undefined")b=d.scale;return this.Map.LocatePopupIcon(e,b,c)}function pl_LocateItemByID(a,b){if(this.Map)return this.LocateItem(this.FindItemByID(a),undefined,b);return false}function pl_LocateItems(a){this.Map&&this.Map.LocatePopupIcons(this.LocateIconId+"_*",a)}function pl_RemoveItem(a){if(!this.Map||a<0||a>=this.Results.length)return false;if(a=this.Results[a]){this.Map.RemovePopupIconByID(this.LocateIconId+"_"+a.id);return true}return false}
function pl_RemoveItemByID(a){if(this.Map)return this.RemoveItem(this.FindItemByID(a));return false}function pl_DisplayAllItems(){for(var a=this.Results.length,b=0;b<a;b++)this.DisplayItem(b)}function pl_ClearDisplayedItems(){this.Map&&this.Map.RemovePopupIconsByID(this.LocateIconId+"_")}function getPlacesByID(a){if(ngPlacesByID)return ngPlacesByID[a];return null}
function pl_Reset(){this.SearchParams="";this.Results=[];this.Params=new ngPlaces_params;this.Adr=new ngPlaces_adr;this.ClearDisplayedItems()}function ngPlaces_params(){this.Offset=0;this.ResultType=this.SearchType="";this.CntResults=0;this.Country="";this.PageSize=this.PageTo=this.PageFrom=this.Page=0;this.PrevVisible=this.NextVisible=false}function ngPlaces_adr(){this.Psc=this.Cn=this.Co=this.Cp=this.Street=this.City=""}
function ngPlaces(a){ngPlacesLastID++;this.PlacesID="ngPlaces"+ngPlacesLastID;this.rpc=new ngRPC(this.PlacesID);ngPlacesByID[this.PlacesID]=this;this.APIKey=typeof ngMapAPIKey=="undefined"?"":ngMapAPIKey;this.Map=typeof a!="undefined"?a:null;this.SearchURL=ngMapAPIURL+"/search.php";this.SearchParams="";this.IsCounter=0;this.MaxCounter=-1;this.PageSize=0;this.Country="";this.LocateIcon=ngMapAPIURL+"/locate.png";this.LocateIconHotSpot=new ScreenPt(15,15);this.LocateIconId="Plc"+ngPlacesLastID;ng_PreloadImage(this.LocateIcon);
this.CmdID=0;this.Results=[];this.Params=new ngPlaces_params;this.Adr=new ngPlaces_adr;this.ProcessUrl=pl_ProcessUrl;this.DoSearch=pl_DoSearch;this.DoParamsSearch=pl_DoParamsSearch;this.URLStateParams=pl_URLStateParams;this.SearchFinished=pl_SearchFinished;this.Error=pl_Error;this.DefaultItemPopupMenu=pl_DefaultItemPopupMenu;this.Reset=pl_Reset;this.Search=pl_Search;this.SearchCity=pl_SearchCity;this.SearchStreet=pl_SearchStreet;this.SearchAddress=pl_SearchAddress;this.SearchCoords=pl_SearchCoords;
this.SearchZips=pl_SearchZips;this.CancelSearch=pl_CancelSearch;this.FirstPage=pl_FirstPage;this.NextPage=pl_NextPage;this.PrevPage=pl_PrevPage;this.FindItemByID=pl_FindItemByID;this.DisplayItem=pl_DisplayItem;this.DisplayItemByID=pl_DisplayItemByID;this.LocateItem=pl_LocateItem;this.LocateItemByID=pl_LocateItemByID;this.LocateItems=pl_LocateItems;this.RemoveItem=pl_RemoveItem;this.RemoveItemByID=pl_RemoveItemByID;this.DisplayAllItems=pl_DisplayAllItems;this.ClearDisplayedItems=pl_ClearDisplayedItems;
this.OnSearchError=this.OnSearchCancel=this.OnSearchResults=this.OnSearch=null;this.OnItemPopupMenu=this.DefaultItemPopupMenu;this.OnLocateItem=this.OnDisplayItem=null};
