function switchimage(src, href) {
  var img = document.getElementById('image');
  img.onclick = function() {window.open(href);};
  img.src = src;
  img.style.display = 'inline';
  loadmeta(src);
};

function _clear_meta(img) {
  if (img.nextSibling.nodeType == 1 && 
          img.nextSibling.nodeName.toLowerCase() == 'div') {
      img.parentNode.removeChild(img.nextSibling);
  };
};

function _set_meta(img, data) {
  _clear_meta(img);
  var div = document.createElement('div');
  div.className = 'meta';
  var lines = data.split('\n');
  for (var i=0; i < lines.length; i++) {
    if (!string.strip(lines[i])) {
      continue;
    };
    var linedata = lines[i].split(':');
    var linediv = document.createElement('div');
    
    var titlespan = document.createElement('span');
    titlespan.className = 'metatitle';
    titlespan.appendChild(
      document.createTextNode(
        string.strip(linedata[0]) + ': '
      )
    );
    var valuespan = document.createElement('span');
    valuespan.className = 'metavalue';
    valuespan.appendChild(
      document.createTextNode(
        string.strip(linedata[1])
      )
    );
    
    linediv.appendChild(titlespan);
    linediv.appendChild(valuespan);
    div.appendChild(linediv);
  };
  img.parentNode.insertBefore(div, img.nextSibling);
};

function loadmeta(imgsrc) {
  var img = document.getElementById('image');
  var handler = function(status, data) {
      _set_meta(img, data);
  };
  var errhandler = function(status) {
      // we ignore errors, but do clear the old metadata
      _clear_meta(img);
  };
  var chunks = imgsrc.split('.');
  chunks.pop();
  var path = chunks.join('.') + '.meta';
  server.load_async(path, handler, errhandler);
};

function loadfirst() {
  var a = document.getElementById('imagebar'
                      ).getElementsByTagName('a')[0];
  switchimage(a.href, a.getAttribute('hugehref'));
};

