private final String encodechars(String urldir)
{
  // System.out.println("Encode in="+urldir);
  /* get protocol if any */
  int i=urldir.indexOf("://",0);
  if(i!=-1)
   {
    String proto=urldir.substring(0,i);
    urldir=urldir.substring(i+3); //cut of protocol
    /* odstranit http:// if any */
    if(!proto.equalsIgnoreCase("http"))
     {
      /* ftp://ftp.debian.org/* -> ftp.debian.org^ftp/* */
      /* ftp://ftp.lamer* -> ftp.lamer*^ftp/*           */
      /* *://www.debian.org/* -> www.debian.org(*)/     */

      i=urldir.indexOf('/',0);
      if(proto.equals("*"))
      {
	  urldir=urldir.substring(0,i)+"*"+urldir.substring(i);
      } else
      {
	  if(i==-1)  urldir+='^'+proto+"/*";
	    else
	  urldir=urldir.substring(0,i)+'^'+proto+urldir.substring(i);
      }
     }
   }
  // if(urldir.startsWith("http://")) urldir=urldir.substring(7);

  /* nahrazujeme nepratelske znaky */
  urldir=urldir.replace(':','_');
  // urldir=urldir.replace('~','-');
  if(cacheobject.end_dot==false)
  {
    urldir=urldir.replace('>','}');
    urldir=urldir.replace('<','{');
    urldir=urldir.replace('|','!');
  }
  
  if(File.separatorChar!='/') urldir=urldir.replace('/',File.separatorChar);
  // System.out.println("encode out debug="+urldir);
  return urldir;
}