var Veranda = (function () {
  var preload_queue = [];

  /*********************/
  /* private functions */
  /*********************/
  var get = function(id) {
    document.getElementById(id);
  };

  var selected = function(sel) {
    sel.options[sel.selectedIndex].value
  };

  var get_links = function() {
    return document.getElementsByTagName('a');
  };

  var preload_queue = [], 
      preload, 
      preload_complete,
      preload_init;

  preload = function() {
    var img, src = preload_queue[0];

    if (!preload_queue.length || !src)
      return;

    // create image
    img = document.createElement('img');

    // set image handlers
    img.onload = preload_complete;
    img.onerror = preload_complete;

    // start image loader
    img.src = src;

    // debug
    console.log('preload_queue = ' + preload_queue.join(', '));
  };

  preload_complete = function() {
    preload_queue.shift(); 
    preload();
  };

  preload_init = function() {
    // disable preloader
    return;

    var i, els = get_links(), l = els.length,
        skip_restart = false;

    // clear all but the first element of the preload queue
    if (preload_queue.length) {
      preload_queue = [preload_queue[0]];
      skip_restart = true;
    }

    // refill preload queue
    for (i = 0; i < l; i++)
      preload_queue.push(els[i].href);

    // start preloading images
    if (!skip_restart)
      preload();
  };

  return {
    update_sizes: function() {
      var i, p, els = get_links(), l = els.length, 
          sel = get('res'), res = selected(sel);

      for (i = 0; i < l; i++) {
        p = els[i].href.replace(location.href, '').split(/\//);
        p[0] = res;
        els[i].href = './' + p.join('/');
      }

      // re-init preloader
      preload_init();
    },

    init: function() {
      preload_init();
    }
  };
})();

