var IMG_GRID_EXT = "_sq_thumb.jpg";
var IMG_DETAIL_LARGE_EXT = "_large_slide.jpg";
var IMG_DETAIL_PHOTOROW_EXT = "_sq_thumb.jpg";
var GRID_SIZE = 12;
var PHOTOROW_SIZE = 7;
var images = Array();
var nl_detailview_photorow_offset = 0;
var nl_page = 1;
var nl_gridview_effects = Array("slow", "explode", "slide"); // , "fold", "puff", "scale"

function nl_photo(img, title, author, description) {
  this.img = img;
  this.title = title;
  this.author = author;
  this.description = description;
}

function nl_loadPhotoRow() {
  //alert("Start: " + nl_detailview_photorow_offset + ". Total: " + nl_detailview_photo_count_ttl);
  if (nl_detailview_photorow_offset >= nl_detailview_photo_count_ttl) {
    return false;
  } else if (nl_detailview_photorow_offset < 0) {
    nl_detailview_photorow_offset = 0;
  }
  for (var i = 0; i < PHOTOROW_SIZE; i++) {
    var obj = document.getElementById("img_photorow_" + i);
    if (!obj) { // there are less images than PHOTOROW_SIZE in this album
      continue;
    }
    if (images[i + nl_detailview_photorow_offset]) {
      nl_display_div("img_photorow_" + i, "inline");
      obj.src = images[i + nl_detailview_photorow_offset].img + IMG_DETAIL_PHOTOROW_EXT;
    } else {
      nl_display_div("img_photorow_" + i, "none");
      obj.src = "";
    }
  }
  return true;
}

function nl_loadGrid(page) {
  nl_page = page - 1;
  nl_detailview_photorow_offset = (nl_page * GRID_SIZE);
  for (var i = 0; i < GRID_SIZE; i++) {
    var obj_name = "img_grid_" + i;
    var obj = document.getElementById(obj_name);
    if (!obj) { // there are less images than GRID_SIZE in this album
      continue;
    }
    if (images[i + nl_detailview_photorow_offset]) {
      $("#" + obj_name).css("display", "inline");
      obj.src = images[i + nl_detailview_photorow_offset].img + IMG_GRID_EXT;
    } else {
      $("#" + obj_name).css("display", "none");
      obj.src = "";
    }
  }
}

function nl_switchViewMode(mode) {
  if (mode == "grid") {
    //nl_display_div('nl_menu_gridview_button', "none");
    nl_display_div('nl_gridview_paging', "block");

    //nl_display_div('nl_gridview', "block");
    //nl_display_div('nl_detailview_photorow_container', "none");
    nl_display_div('nl_detailview', "none");
  } else if (mode == "detail") {
    nl_display_div('nl_menu_gridview_button', "block");
    nl_display_div('nl_gridview_paging', "none");
    nl_display_div('nl_detailview', "block");
    nl_display_div('nl_gridview', "none");
    nl_display_div('nl_detailview_photorow_container', "block");
    $('#nl_gridview').hide(nl_gridview_effects[Math.floor(Math.random() * nl_gridview_effects.length)]);
    $('#nl_detailview').show("slow");
    $('.pagination').hide("slow");
    $('#nl_menu_gridview_button').show("slow");
    $('#nl_detailview_photorow').show("slow");
  }
}

function nl_display_div(obj_id, display) {
  $("#" + obj_id).css("display", display);
  /*
  var obj = document.getElementById(obj_id);
  obj.style['display'] = display;
  */
}

// TODO
function nl_PhotorowCenter(photorow_start) {
  alert("Calculate Photorow Offset: Current: " + nl_detailview_photorow_offset + " Photorow_start = " + photorow_start + "\nTotal: " + nl_detailview_photo_count_ttl);
  if (nl_detailview_photo_count_ttl <= PHOTOROW_SIZE) {
    return;
  }
  nl_detailview_photorow_offset += photorow_start;
  if (nl_detailview_photorow_offset - 3 - 1 >= 0) {
    nl_detailview_photorow_offset = nl_detailview_photorow_offset - 3 - 1; // center the thumbnail
  }
  if (nl_detailview_photorow_offset >= nl_detailview_photo_count_ttl) {
    nl_detailview_photorow_offset = nl_detailview_photo_count_ttl - PHOTOROW_SIZE; // push this thumbnail to right
  }
  alert("Requesting to start at: " + nl_detailview_photorow_offset);
}

function nl_switchDetailViewPicture(photorow_start) {
  if (!images[photorow_start + nl_detailview_photorow_offset]) {
    return;
  }
  //nl_PhotorowCenter(photorow_start);
  nl_loadPhotoRow();
  var obj = document.getElementById("nl_detailview_main_image");
  obj.src = images[photorow_start + nl_detailview_photorow_offset].img + IMG_DETAIL_LARGE_EXT;
  $("#nl_detailview_title").html(images[photorow_start + nl_detailview_photorow_offset].title);
  $("#nl_detailview_author").html(images[photorow_start + nl_detailview_photorow_offset].author);
  $("#nl_detailview_description").html(images[photorow_start + nl_detailview_photorow_offset].description);
  $("#nl_view_container").css("height", "auto");

  nl_page = parseInt((photorow_start + nl_detailview_photorow_offset) / GRID_SIZE, 10);
}

function nl_go(slug) {
  if (slug != "") {
    slug += "/";
  }
  document.location="/nightlife/" + slug;
}

$(document).ready(function() {

  nl_loadGrid(1);
  if (nl_detailview_photo_count_ttl <= PHOTOROW_SIZE) {
    $('#nl_detailview_photorow_container_left').hide();
    $('#nl_detailview_photorow_container_right').hide();
  }

  $('#nl_menu_event').click(function(){
    $('#nl_menu_event_dropdown').slideToggle(400);
	$('#nl_menu_event').toggleClass('arrow_flip');
  });

  $('#nl_menu_gridview_button').click(function(event){
    $('#nl_gridview').show(nl_gridview_effects[Math.floor(Math.random() * nl_gridview_effects.length)]);
    $('#nl_detailview').hide('slow');
    nl_switchViewMode("grid", '');
    $('.pagination').show("slow");
    $('#nl_menu_gridview_button').hide("slow");
    $('#nl_detailview_photorow_container').hide("slow");
    $("#nl_view_container").css("height", "auto");
    nl_loadGrid(nl_page + 1);
  });

  $('#nl_detailview_photorow_container_left').click(function() {
    //alert("nl_detailview_photorow_offset = " + nl_detailview_photorow_offset);
    if (nl_detailview_photorow_offset >= 0) {
      if (nl_detailview_photorow_offset > 0) {
        nl_detailview_photorow_offset -= PHOTOROW_SIZE;
        nl_page = parseInt(nl_detailview_photorow_offset / GRID_SIZE, 10);
      }
      nl_loadPhotoRow();
    }
  });
  $('#nl_detailview_photorow_container_right').click(function() {
    //alert("nl_detailview_photorow_offset = " + nl_detailview_photorow_offset);
    if (nl_detailview_photorow_offset + PHOTOROW_SIZE <= nl_detailview_photo_count_ttl) {
      if (nl_detailview_photorow_offset < nl_detailview_photo_count_ttl) {
        nl_detailview_photorow_offset += PHOTOROW_SIZE;
        nl_page = parseInt(nl_detailview_photorow_offset / GRID_SIZE, 10);
      }
      nl_loadPhotoRow();
    }
  });
});
