function resizeMap(id, w, h, nodraw) {
  if (xGetElementById('mapsize') != null) {
    for (var i in sizes) {
      if (sizes[i] == id) xGetElementById(sizes[i] + '_map').className = 'smallbutton y';
      else xGetElementById(sizes[i] + '_map').className = 'smallbutton n';
    }
  }
  var dx = w - xWidth(cvs);
  var dy = h - xHeight(cvs);
  xResizeTo('canvas_border', w+(bdr*2), h+(bdr*2));
  xResizeTo(cvs, w, h);
  if (adv_app) {
    var vp = (xTop('vswiper') + (xHeight('vswiper') / 2)) / xHeight('vswipe_cvs');
    var hp = (xLeft('hswiper') + (xWidth('hswiper') / 2)) / xWidth('hswipe_cvs');
    setSwipeLocation();
    xclip = xWidth('hswipe_cvs') * hp;
    yclip = xHeight('vswipe_cvs') * vp;
    initVSwipe(vp);
    initHSwipe(hp);
    setClip();
  }
  xMoveTo(load, (xWidth(cvs) / 2) - (xWidth(load) / 2), (xHeight(cvs) / 2) - (xHeight(load) / 2));
  xGetElementsByClassName('mapimg', null, null, function(el) { xResizeTo(el, w, h); } );
  xGetElementsByClassName('movex', null, null, function(el) { xLeft(el, xLeft(el) + dx); } );
  xGetElementsByClassName('movey', null, null, function(el) { xTop(el, xTop(el) + dy); } );
  xGetElementsByClassName('resizex', null, null, function(el) { xWidth(el, xWidth(el) + dx); } );
  xGetElementsByClassName('resizey', null, null, function(el) { xHeight(el, xHeight(el) + dy); } );
  mf.msize.value = id;
  if (!nodraw) getMap(false);
}