var content_shield = null;
var modal_dialog = null;
var picture_count = 26;
var current_picture = 0;

// Gallery images
var pictures = new Array(picture_count);
for (i=0; i<picture_count; i++) {
  pictures[i] = new Object();
}

pictures[0].thumb = '/images/our_product/thumbs/thumb_109.jpg';
pictures[0].fullsize = '/images/our_product/parts/part_109.jpg';
pictures[0].caption = 'Tooling \u2013 Painted';

pictures[1].thumb = '/images/our_product/thumbs/thumb_110.jpg';
pictures[1].fullsize = '/images/our_product/parts/part_110.jpg';
pictures[1].caption = 'Trihub \u2013 Painted';

pictures[2].thumb = '/images/our_product/thumbs/thumb_111.jpg';
pictures[2].fullsize = '/images/our_product/parts/part_111.jpg';
pictures[2].caption = 'Artistic Knot \u2013 Flamed';

pictures[3].thumb = '/images/our_product/thumbs/thumb_112.jpg';
pictures[3].fullsize = '/images/our_product/parts/part_112.jpg';
pictures[3].caption = 'Half-Coupling \u2013 Painted';

pictures[4].thumb = '/images/our_product/thumbs/thumb_100.jpg';
pictures[4].fullsize = '/images/our_product/parts/part_100.jpg';
pictures[4].caption = 'Dragon';

pictures[5].thumb = '/images/our_product/thumbs/thumb_200.jpg';
pictures[5].fullsize = '/images/our_product/parts/part_200.jpg';
pictures[5].caption = 'Harness Buckle \u2013 Functional';

pictures[6].thumb = '/images/our_product/thumbs/thumb_113.jpg';
pictures[6].fullsize = '/images/our_product/parts/part_113.jpg';
pictures[6].caption = 'Rheostat Casing \u2013 Flamed';

pictures[7].thumb = '/images/our_product/thumbs/thumb_115.jpg';
pictures[7].fullsize = '/images/our_product/parts/part_115.jpg';
pictures[7].caption = 'iPhone Case \u2013 Flamed';

pictures[8].thumb = '/images/our_product/thumbs/thumb_63.jpg';
pictures[8].fullsize = '/images/our_product/parts/part_63.jpg';
pictures[8].caption = 'Reindeer';

pictures[9].thumb = '/images/our_product/thumbs/thumb_67.jpg';
pictures[9].fullsize = '/images/our_product/parts/part_67.jpg';
pictures[9].caption = 'Saber Tooth Cat';

pictures[10].thumb = '/images/our_product/thumbs/thumb_79.jpg';
pictures[10].fullsize = '/images/our_product/parts/part_79.jpg';
pictures[10].caption = 'Painted Ducky';

pictures[11].thumb = '/images/our_product/thumbs/thumb_201.jpg';
pictures[11].fullsize = '/images/our_product/parts/part_201.jpg';
pictures[11].caption = 'Toy Train';

pictures[12].thumb = '/images/our_product/thumbs/thumb_96.jpg';
pictures[12].fullsize = '/images/our_product/parts/part_96.jpg';
pictures[12].caption = 'Collage';

pictures[13].thumb = '/images/our_product/thumbs/thumb_71.jpg';
pictures[13].fullsize = '/images/our_product/parts/part_71.jpg';
pictures[13].caption = 'Teakettle';

pictures[14].thumb = '/images/our_product/thumbs/thumb_104.jpg';
pictures[14].fullsize = '/images/our_product/parts/part_104.jpg';
pictures[14].caption = 'Maze';

pictures[15].thumb = '/images/our_product/thumbs/thumb_78.jpg';
pictures[15].fullsize = '/images/our_product/parts/part_78.jpg';
pictures[15].caption = 'Child\'s Block';

pictures[16].thumb = '/images/our_product/thumbs/thumb_108.jpg';
pictures[16].fullsize = '/images/our_product/parts/part_108.jpg';
pictures[16].caption = 'Floating Sphere in Wire Frame Ball';

pictures[17].thumb = '/images/our_product/thumbs/thumb_114.jpg';
pictures[17].fullsize = '/images/our_product/parts/part_114.jpg';
pictures[17].caption = 'Floating Sphere in Wire Frame Ball \u2013 Flamed';

pictures[18].thumb = '/images/our_product/thumbs/thumb_105.jpg';
pictures[18].fullsize = '/images/our_product/parts/part_105.jpg';
pictures[18].caption = 'Drive Train';

pictures[19].thumb = '/images/our_product/thumbs/thumb_107.jpg';
pictures[19].fullsize = '/images/our_product/parts/part_107.jpg';
pictures[19].caption = 'Flexible Compression Spring';

pictures[20].thumb = '/images/our_product/thumbs/thumb_116.jpg';
pictures[20].fullsize = '/images/our_product/parts/part_116.jpg';
pictures[20].caption = 'Buckle Design';

pictures[21].thumb = '/images/our_product/thumbs/thumb_22.jpg';
pictures[21].fullsize = '/images/our_product/parts/part_22.jpg';
pictures[21].caption = 'Lanternfish';

pictures[22].thumb = '/images/our_product/thumbs/thumb_23.jpg';
pictures[22].fullsize = '/images/our_product/parts/part_23.jpg';
pictures[22].caption = 'Scanned Female Pelvis';

pictures[23].thumb = '/images/our_product/thumbs/thumb_24.jpg';
pictures[23].fullsize = '/images/our_product/parts/part_24.jpg';
pictures[23].caption = 'The Stanford Bunny';

pictures[24].thumb = '/images/our_product/thumbs/thumb_202.jpg';
pictures[24].fullsize = '/images/our_product/parts/part_202.jpg';
pictures[24].caption = 'Comical Rabbit';

pictures[25].thumb = '/images/our_product/thumbs/thumb_203.jpg';
pictures[25].fullsize = '/images/our_product/parts/part_203.jpg';
pictures[25].caption = 'Funky Frog';

function getPageSize(){
  var xScroll, yScroll;
  if (window.innerHeight && window.scrollMaxY) {
    xScroll = document.body.scrollWidth;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }

  var windowWidth, windowHeight;
  if (self.innerHeight) { // all except Explorer
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  }

  // for small pages with total height less then height of the viewport
  if (yScroll < windowHeight) {
    pageHeight = windowHeight;
  } else {
    pageHeight = yScroll;
  }

  // for small pages with total width less then width of the viewport
  if (xScroll < windowWidth) {
    pageWidth = windowWidth;
  } else {
    pageWidth = xScroll;
  }

  arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
  return arrayPageSize;
}

function show_gallery(pic_number) {
  current_picture = pic_number;
  show_modal_dialog(pic_number);
}

function show_modal_dialog(pic_number) {
  if (content_shield == null) {
    content_shield = document.createElement("div");
    
    modal_dialog = document.getElementById("splash");

    // calculate top and left offset for the lightbox
    var arrayPageSize = getPageSize();
    var arrayPageScroll = getScrollXY();
    var galleryTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
    var galleryLeft = arrayPageScroll[0] + (arrayPageSize[2] / 10);;
    modal_dialog.style.top = galleryTop + 'px';
    modal_dialog.style.left = galleryLeft + 'px';

    // calculate bottom of the shield
    content_shield.style.width = arrayPageSize[0] + 'px';
    var shield_bottom = (galleryTop + 750 < arrayPageSize[1]) ? arrayPageSize[1] : galleryTop + 750;
    content_shield.style.height = shield_bottom + 'px';

    document.body.appendChild(content_shield);
    content_shield.className = "content_faded";
    window.status="Desktop Factory Gallery";
  }
  modal_dialog.innerHTML = '<img src="/images/lightbox/loading.gif"/>';
  new Ajax.Updater(modal_dialog, '/our_product/gallery_layout.html', {asynchronous:true, evalScripts:true});
  modal_dialog.style.display = "block";
}

function switch_picture(pic_number) {
  current_picture = (pic_number > 0) ? pic_number : 0;
  // Clear all highlighting
  for (i=0; i<picture_count; i++) {
    var this_thumb = document.getElementById('thumb' + i);
    this_thumb.className = 'thumblinks';
  }
  // Highlight the thumbnail
  var selected_thumb = document.getElementById('thumb' + pic_number);
  selected_thumb.className = 'thumblinksactive';
  // Full size image
  var main_picture = document.getElementById('mainimage');
  main_picture.src = pictures[current_picture].fullsize;
  // Caption
  var main_caption = document.getElementById('imagecaption');
  if (main_caption.innerText) {
    main_caption.innerText = pictures[current_picture].caption;
  } else {
    main_caption.textContent = pictures[current_picture].caption;
  }
  // Legend
  var main_legend = document.getElementById('imagenumber');
  current_text = current_picture + 1;
  current_text = current_text + ' of ' + picture_count;
  if (main_legend.innerText) {
    main_legend.innerText = current_text;
  } else {
    main_legend.textContent = current_text;
  }
  // Nav controls
  var prevspan = document.getElementById('prevcontrol');  
  var sepspan = document.getElementById('sepcontrol');  
  var nextspan = document.getElementById('nextcontrol');  
  if (current_picture == picture_count - 1) {
    sepspan.style.visibility = 'hidden';
    nextspan.style.visibility = 'hidden';
  } else if (current_picture == 0) {
    sepspan.style.visibility = 'hidden';
    prevspan.style.visibility = 'hidden';
  } else {
    nextspan.style.visibility = 'inherit';
    prevspan.style.visibility = 'inherit';
    sepspan.style.visibility = 'inherit';
  }
}

function prev_picture() {
  current_picture--;
  if (current_picture < 0) {
    current_picture = 0;
    return;
  }
  switch_picture(current_picture);
}

function next_picture() {
  current_picture++;
  if (current_picture >= picture_count) {
    current_picture = picture_count - 1;
    return;
  }
  switch_picture(current_picture);
}

function hide_modal_dialog() {
  modal_dialog.style.display = "none";
  if (content_shield != null) {
    document.body.removeChild(content_shield);
    content_shield = null;
  }
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if ( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}
