$(window).load(function() {
//  setHandlers();
  $(window).trigger( 'hashchange' );
//  setTimeout(function() { preload(images) }, 1000);
});

$(window).bind('hashchange', function(event) {
  var href = window.location.href;
  href = href.replace('#', '/');
  loadPage(href);
});

function preload(images) {
  var cache = [];
  var args_len = images.length;
  for (var i = 0; i < args_len; i++) {
    var cacheImage = document.createElement('img');
    cacheImage.src = images[i];
    cache.push(cacheImage);
  }  
}

function setHandlers() {
//  console.log("setHandlers");
  hrefToFragment($('#previous'));
  hrefToFragment($('#next'));
  hrefToFragment($('#next_media'));
  hrefToFragment($('#next_media'), 'data-previous');  
  $('#media_navigation a').each(function(i, ele) {
    hrefToFragment($(ele));
  });
  $('#next_media').click(imageClick) //.mousemove(imageMove);
}

function imageMove(event) {
  var ele = $('#next_media');

  if (event.layerX < 324) {
    ele.css('cursor', 'w-resize');
  } else {
    ele.css('cursor', 'e-resize');    
  }
}

function imageClick(event) {
  event.preventDefault();

  var ele = $('#next_media');
  var href = ele[0].baseURI;

  if (event.layerX < 324) {
    href += ele.attr('data-previous');
  } else {
    href += ele.attr('href');    
  }
  
  window.location.href = href;
  
}

function hrefToFragment(ele, attr) {
  if (!attr) attr = 'href'
  
  if (!ele) return;
  var href = ele.attr(attr);
  
  if (!href) return;
  
//  var re = /(.*)\/([^\/]*)$/;
  var re = /(.*)\/([^\/\d]{1}[^\/]*(\/\d+)?)$/
  
  var m = href.match(re);
  ele.attr(attr, m[1] + "#" + m[2]);
}

function pageClick(event, ele) {
  event.preventDefault();
  loadPage(ele.attr('href'));
}

var oldItem;
var newItem;

function loadPage(url) {
  $('.spinner').show();
  $.ajax({ url: url, cache: false, success: function(data) {
    oldItem = $('.item').first();
    newItem = $('.content').prepend(data);

    if (oldItem.length == 0) {
      newItem.hide();
    }
      
    $('.item #image').load(function(){
      $('.spinner').hide();
      // 
      if (oldItem.length == 0) {
        setHandlers();
        newItem.fadeIn();
      }
      oldItem.fadeOut(function() {
        oldItem.remove();
        setHandlers();
      });
      //
    });
  }});
}

