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: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:='0'+dec2bin(GetX);
 binY:='0'+dec2bin(GetY);
 binX:=copy(binX,length(binX)-(GetZ-1)+1,GetZ-1);
 binY:=copy(binY,length(binY)-(GetZ-1)+1,GetZ-1);
 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 
     i:=i+1;
     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.