_xCaptureNightlifeJS = {
  PAGING_BUFFER : 2,
  MAKE_CURRENT_PAGE_CLICKABLE : false,
  IMG_DETAIL_PHOTOROW_EXT : "_sq_thumb.jpg",

  switchDetailViewPicture : function(id, offset, div_image_id, images_array, featured_img, div_title, div_author, div_description, view_count_ajax_url) {
    var img = (id == -1 ? featured_img : images_array[id + offset]);
    var obj = document.getElementById(div_image_id);
    obj.src = img.img + IMG_DETAIL_LARGE_EXT;
    $("#" + div_title).html(img.title);
    $("#" + div_author).html(img.author);
    $("#" + div_description).html(img.description);
    //$("#cpt_view_container").css("height", "auto");
    // increment view count
    $.ajax({
     type: "POST",
     url: view_count_ajax_url,
     data: "updateView=1&id=" + img.id
   });
  },

  loadDetailViewPicture : function(id, offset, div_image_id, total_num_items, photorow_size, obj_image_name, images_array, featured_img, div_title, div_author, div_description, view_count_ajax_url) {
    if (id == -1) {
      id = 0;
      _xCaptureNightlifeJS.switchDetailViewPicture(-1, offset, div_image_id, images_array, featured_img, div_title, div_author, div_description, view_count_ajax_url);
    } else {
      if (!images_array[id + offset]) {
        alert("Returning");
        return;
      }
      _xCaptureNightlifeJS.switchDetailViewPicture(id, offset, div_image_id, images_array, featured_img, div_title, div_author, div_description, view_count_ajax_url);
    }
    _xCaptureNightlifeJS.loadPhotoRow(offset, total_num_items, photorow_size, obj_image_name);
  },

  displayDiv : function(obj_id, display) {
    $("#" + obj_id).css("display", display);
  },

  setPhoto : function(id, img, author, description, isEditorsPick) {
    this.id = id;
    this.img = IMAGE_URL + img;
    this.author = author;
    this.description = description;
    this.isEditorsPick = (isEditorsPick == "Y" ? true : false);
  },

  loadPhotoRow : function(offset, total_num_items, photorow_size, obj_image_name) {
    //alert("Start: " + offset + ". Total: " + total_num_items);
    if (offset >= total_num_items) {
      return false;
    }
    if (offset < 0) { // to rotate:  || offset + photorow_size > total_num_items
      offset = 0;
    }
    for (var i = 0; i < photorow_size; i++) {
      var obj = document.getElementById(obj_image_name + i);
      if (!obj) { // there are less images than photorow_size in this album
        continue;
      }
      if (images[i + offset]) {
        _xCaptureNightlifeJS.displayDiv(obj_image_name + i, "inline"); // ie fix
        obj.src = images[i + offset].img + _xCaptureNightlifeJS.IMG_DETAIL_PHOTOROW_EXT;
      } else {
        _xCaptureNightlifeJS.displayDiv(obj_image_name + i, "none"); // ie fix
        obj.src = "";
      }
    }
  },

  loadGrid : function(page_num, total_num_items, obj_image_name, offset, images_array, paging_div_id, paging_onclickFunctionCall,
                      grid_size, page_grid_size // in case certain pages contain less grid size than other pages (perfect with featured items like in capture's first page
                      ) {
    for (var i = 0; i < grid_size; i++) {
      var obj_name = obj_image_name + i;
      var obj = document.getElementById(obj_name);
      if (!obj) { // there are less images than GRID_SIZE in this album
        continue;
      }
      if (images_array[i + offset] && i < page_grid_size) {
        $("#" + obj_name).parent().show();
        obj.src = images_array[i + offset].img + IMG_GRID_EXT;
        if (images_array[i + offset].isEditorsPick) {
          $("#" + obj_name).siblings().show();
        }
      } else {
        $("#" + obj_name).parent().hide();
        obj.src = "";
      }
    }
    _xCaptureNightlifeJS.setPaging(total_num_items, grid_size, paging_div_id, page_num, paging_onclickFunctionCall, "");
  },

  pageLink : function(paging_current_page, paging_i, paging_onclickFunctionCall, paging_href) {
    var paging_link = '';
    paging_current_page++;
    paging_link += '<td class="page';
    if (paging_current_page == paging_i) {
      paging_link += ' disabled';
    }
    paging_link += '">'; // close td above
    // make a link
    if (paging_current_page != paging_i // if current page is not this page
        || (_xCaptureNightlifeJS.MAKE_CURRENT_PAGE_CLICKABLE && paging_current_page == paging_i) // or current page is the page and linking is allowed for current page
       ) {
      paging_link += '<a onclick="' + paging_onclickFunctionCall + '(' + paging_i + ');" href="' + paging_href + '">' + paging_i + '</a>';
    } else {
      paging_link  += paging_i;
    }
    paging_link += '</td>';
    return paging_link;
  },
  
  setPaging : function(paging_total_num_items, paging_items_per_page, paging_div_id, paging_current_page, paging_onclickFunctionCall, paging_href) {
    var paging_ttl_pages = Math.ceil(paging_total_num_items / paging_items_per_page);
    if (paging_ttl_pages < 2) {
      return;
    }
    if (paging_href == "") {
      paging_href = 'javascript:void(0);';
    }
    var paging_pages_txt = '<table align="center"><tr>';

    // show left arrow
    if (paging_current_page != 0) {
      paging_pages_txt += '<td><div class="back" onclick="' + paging_onclickFunctionCall + '(' + paging_current_page + ');"></div></td>';
    } else {
      paging_pages_txt += '<td><div class="back back_disabled"></div></td>';
    }

    // Designed w/ +/- buffer size approach   Like  1 ... 4 5 [6] 7 8 ... 32
    paging_paging_start_at_page = (paging_current_page <= 1 + _xCaptureNightlifeJS.PAGING_BUFFER) ? 2 : paging_current_page - _xCaptureNightlifeJS.PAGING_BUFFER; // 2: start at page 2 or above
    paging_paging_stop_at_page = (paging_current_page >= paging_ttl_pages - _xCaptureNightlifeJS.PAGING_BUFFER) ? paging_ttl_pages-1 : paging_current_page + _xCaptureNightlifeJS.PAGING_BUFFER;
    // always show first page
    paging_pages_txt += _xCaptureNightlifeJS.pageLink(paging_current_page, 1, paging_onclickFunctionCall, paging_href);

    if (paging_paging_start_at_page > 2) {
      paging_pages_txt += '<td>&hellip;</td>';
    }

    for (i = paging_paging_start_at_page; i <= paging_paging_stop_at_page; i++) {
      paging_pages_txt += _xCaptureNightlifeJS.pageLink(paging_current_page, i, paging_onclickFunctionCall, paging_href);
    }

    if (paging_current_page < paging_ttl_pages - _xCaptureNightlifeJS.PAGING_BUFFER - 1) {
      paging_pages_txt += '<td>&hellip;</td>';
    }
    // always show last page
    paging_pages_txt += _xCaptureNightlifeJS.pageLink(paging_current_page, paging_ttl_pages, paging_onclickFunctionCall, paging_href);

    // show left arrow
    if (paging_current_page + 1 != paging_ttl_pages) {
      paging_pages_txt += '<td><div class="back forward" onclick="' + paging_onclickFunctionCall + '(' + (paging_current_page + 2) + ');"></div></td>';
    } else {
      paging_pages_txt += '<td><div class="back forward forward_disabled"></div></td>';
    }
  
    paging_pages_txt += '</tr></table>';
    $('#' + paging_div_id).html(paging_pages_txt);
  },

  dummyFunction : function() {} // make sure to always separate with a comma
}
