
function initiate() {
  constructSearchArray() ;
  var adr = document.location.toString().match(/#!\/([0-9]{3})/i);
  var a = (adr) ? "t"+adr[1] : TMBS[0];
  $('#navwrap').hide().fadeIn();
  loadImg(a);
}	

function ltrt(a){
  o = $(".current").attr("id") ;
  op = findIndex(TMBS,o) ;
  np = op + a ;
  loadImg(TMBS[mod(np,TMBS.length)]);
}

/*function updn(a) {
    var o = findIndex(TMBS,TMB) / NT >> 1;
    loadImg(TMBS[(mod(o+a,NT))*NT]) ;	
}*/

function updn(a) {
  var tp = TMBS.length / NT ; 
  var p = findIndex(TMBS,TMB) / NT + a ;
  loadImg(TMBS[p*NT]) ; 
}

function constructSearchArray() {
  TMBS = [] ;
  $("#imgnav img").each( function() {
      TMBS.push($(this).attr("id")) ; 
  });
}

function loadImg(tmb) {
  $("#viewimage img").fadeOut().html("") ;
  $('#imgtitle').fadeOut().html('&nbsp;');
  var img = new Image() ;
  $(img).attr('src', PHOTOROOT + tmb.replace("t","") + ".jpg").load(function(){
    $("#viewimage").hide().html(this).fadeIn() ;
    TMB = tmb;
    var tags = $('#'+tmb).attr('tags');
    var hbang = "#!/"+tmb.replace("t","")+"/";
    var title = $('#'+tmb).attr('title');
    var imgurl = 'http://inconvergent.net/photo/' + hbang;
    $('#imgtitle').hide().html('<a href="'+imgurl+'">'+title+'</a>'+'&nbsp;/'+tags+'/').fadeIn();
    window.location = hbang;
    setScrollHeight()
    hilite() ;
  });
}

function hilite() {
  $(".current").removeClass("current").addClass("thumb") ;
  $("#"+TMB).removeClass("thumb").addClass("current") ;
}

function setScrollHeight() {
  var d = document ;		
  var o = exists($(".current")) 
    ? d.getElementById($(".current").attr("id")).offsetTop 
    : 0 ;
  var n = d.getElementById(TMB).offsetTop ;
  var ns = n - mod(n,NH) ;
  var os = o - mod(o,NH) ; 
  $("#imgnav").stop(true,true).animate( {"scrollTop": ns+"px"},SS ) ;
}

/* Disable Selection (because it looks terrible) */

function disableSelection(target){
  if (typeof target.onselectstart!="undefined") //IE route
    target.onselectstart=function(){return false}
  else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
    target.style.MozUserSelect="none"
  else //All other route (ie: Opera)
  target.onmousedown=function(){return false}
}

/* (Somewhat more) General functions */

function exists(a) { return (a.length) ? true : false ; }

function mod(n,m) { return ( (n % m) + m) % m ; }

function findIndex(arr,a) {
  for (var i = 0 ; i < arr.length ; i++) {
    if (arr[i] == a) {return i ; }
  }
  return -1 ;
}


