function dec2bin(x:integer):string;
var s:string;
begin
  s:='';
  repeat
     s:=chr($30 + x and 1) + s;
     x:=x shr 1;
  until x=0;
  result:=s;
end;

var binX,binY:string;
    i,posSRC,posDATE,posTYPE,posFirstAND,lenbinXY:integer;
begin
 posFirstAND:=pos('&',GetUrlBase)-1;
 if posFirstAND<=0 then begin
   posFirstAND:=length(GetUrlBase);
 end;
 posSRC:=pos('&src=',GetUrlBase);
 posDATE:=pos('&date=',GetUrlBase);
 posTYPE:=pos('&type=',GetUrlBase);

 ResultURL:=copy(GetUrlBase,1,posFirstAND);
 
 if posSRC>0 then begin
   i:=posSRC+5;
   while (GetUrlBase[i]<>'&') do begin 
     i:=i+1;
     if (i>length(GetUrlBase)) then break;
   end;
   ResultURL:=ResultURL+copy(GetUrlBase,posSRC+5,i-(posSRC+5));
 end;

 ResultURL:=ResultURL+'/'+inttostr(GetZ-1)+'/';
 
 if posDATE>0 then begin
   i:=posDATE+6;
   while (GetUrlBase[i]<>'&') do begin 
     i:=i+1;
     if (i>length(GetUrlBase)) then break;
   end;
   if (i-(posDATE+6))>0 then begin
     ResultURL:=ResultURL+copy(GetUrlBase,posDATE+6,i-(posDATE+6))+'/';
   end;
 end;

 binX:=dec2bin(GetX);
 binY:=dec2bin(GetY);
 lenbinXY:=length(binX);
 for i:=1 to ((GetZ-1)-lenbinXY) do begin
   binX:='0'+binX;
 end;
 lenbinXY:=length(binY);
 for i:=1 to ((GetZ-1)-lenbinXY) do begin
   binY:='0'+binY;
 end;

 for i:=7 to GetZ-1 do begin
   ResultURL:=ResultURL+copy(binY,1,i-6)+'-'+copy(binX,1,i-6)+'/';
 end;
 ResultURL:=ResultURL+binY+'-'+binX;

 if posTYPE>0 then begin
   i:=posTYPE+6;
   while (GetUrlBase[i]<>'&') do begin 
     inc(i);
     if (i>length(GetUrlBase)) then break;
   end;
   if (i-(posTYPE+6))>0 then begin
     ResultURL:=ResultURL+'.'+copy(GetUrlBase,posTYPE+6,i-(posTYPE+6));
   end;
 end else begin
   ResultURL:=ResultURL+'.jpg';
 end;
 
end.