// Fireworks stuff
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
// End Fireworks stuff

PRELOAD = new Array();
IMAGES_SO_FAR = 0;
TOTAL_IMAGES = 0;

function imageLoaded() {
  if (++IMAGES_SO_FAR == TOTAL_IMAGES) {
    if (doneLoading) {
      doneLoading();
    }
  }
}

function preloadImage(img, src) {
  img.onload = imageLoaded;
  img.onerror = imageLoaded;
  img.onabort = imageLoaded;
  PRELOAD.push([img, src]);
  ++TOTAL_IMAGES;
}

function preloadImages() {
  var a = preloadImages.arguments;
  for (var i = 0; i < a.length; i++) {
    if (a[i].indexOf("#")!=0) {
      var img = new Image();
      preloadImage(img, a[i]);
    }
  }
}

function getArg(arg) {
  var params = document.URL.split("?").pop().split("&");
  for (var i = 0; i < params.length; i++) {
    var p = params[i].split("=");
    if (p[0] == arg)
      return p[1];
  }
  return null;
}

function getSelectedImage() {
  var a = getArg("img");
  return (a ? parseInt(a) : 0);
}

var SCROLL_SPEED = 20;
var SCROLL_PIXELS = 4;

var SCROLL_TIMEOUT_ID = null;

var SCROLL_ID = null;
var SCROLL_MIN_OFFSET = -1000;
var SCROLL_MAX_OFFSET = 0;


function scroll_stop() {
  if (SCROLL_TIMEOUT_ID) {
    window.clearTimeout(SCROLL_TIMEOUT_ID);
    SCROLL_TIMEOUT_ID = null;
  }
}

function scroll_left() {
  scroll_stop();
  SCROLL_TIMEOUT_ID = window.setTimeout("scroll(" + SCROLL_PIXELS + ")", SCROLL_SPEED);
}

function scroll_right() {
  scroll_stop();
  SCROLL_TIMEOUT_ID = window.setTimeout("scroll(-" + SCROLL_PIXELS + ")", SCROLL_SPEED);
}

function scroll_up() {
  scroll_stop();
  SCROLL_TIMEOUT_ID = window.setTimeout("vscroll(" + SCROLL_PIXELS + ")", SCROLL_SPEED);
}

function scroll_down() {
  scroll_stop();
  SCROLL_TIMEOUT_ID = window.setTimeout("vscroll(-" + SCROLL_PIXELS + ")", SCROLL_SPEED);
}

function scroll(delta) {
  var style = document.getElementById(SCROLL_ID).style;
  var offset = parseInt(style.left);
  if ((offset <= SCROLL_MIN_OFFSET && delta < 0) ||
      (offset >= SCROLL_MAX_OFFSET && delta > 0)) {
    SCROLL_TIMEOUT_ID = null;
    return;
  }
  offset += delta;
  style.left = offset + "px";
  SCROLL_TIMEOUT_ID = window.setTimeout("scroll(" + delta + ")", SCROLL_SPEED);
}

function vscroll(delta) {
  var style = document.getElementById(SCROLL_ID).style;
  var offset = parseInt(style.top);
  if ((offset <= SCROLL_MIN_OFFSET && delta < 0) ||
      (offset >= SCROLL_MAX_OFFSET && delta > 0)) {
    SCROLL_TIMEOUT_ID = null;
    return;
  }
  offset += delta;
  style.top = offset + "px";
  SCROLL_TIMEOUT_ID = window.setTimeout("vscroll(" + delta + ")", SCROLL_SPEED);
}

function makeGallery(parent_id, preview_regex, selected) {
  SCROLL_ID = parent_id;
  var p = document.getElementById(parent_id);
  var parent_width = p.parentNode.clientWidth;
  var images = p.getElementsByTagName("img");
  var width_so_far = 0;
  var shift_width = parent_width / 2;
  var count = 0;
  for (var i = 0; i < images.length; i++) {
    var img = images[i];
    var fn = img.src;
    if (!fn.match(preview_regex))
      continue;
    if (selected == count)
      shift_width -= (width_so_far + img.width / 2);
    ++count;
    width_so_far += img.width + 14;
  }
  SCROLL_MIN_OFFSET = -(width_so_far - parent_width);
  if (shift_width > 0)
    shift_width = 0;
  else if (shift_width < SCROLL_MIN_OFFSET)
    shift_width = SCROLL_MIN_OFFSET; 
  p.style.left = shift_width + "px";
}

function makeVscroll(parent_id) {
  SCROLL_ID = parent_id;
  var p = document.getElementById(parent_id);
  var parent_height = p.parentNode.clientHeight;
  var actual_height = p.offsetHeight;
  SCROLL_MIN_OFFSET = -(actual_height - parent_height);
  p.style.top = "0px";
}

function setBlurb(blurb, blurb_text) {
  var b = document.getElementById(blurb);
  if (b.hasChildNodes())
    b.removeChild(b.childNodes[0]);
  if (blurb_text) {  
    var tn = document.createTextNode(blurb_text);
    b.appendChild(tn);
  }
}

function swapImage(target, src, n, blurb, blurb_text) {
  var e = document.getElementById(target);
  var img = null;
  var a = null;
  if (e.childNodes.length == 0) {
    a = document.createElement("a");
    img = document.createElement("img");
    a.appendChild(img);
    e.appendChild(a);
  } else {
    a = e.childNodes[0];
    img = a.childNodes[0];
  }
  a.target = "_blank";
  a.href = "preview.html?img=" + n;
  img.border = "0";
  img.src = src;
  setBlurb(blurb, blurb_text);
}

function loadImages(index, images, selected) {
  var count = 0;
  var nodes = document.getElementsByTagName("div");
  for (var i = 0; i < nodes.length && count < images.length; i++) {
    if (!nodes[i].className || nodes[i].className != "imgholder")
      continue;
    var name = images[count][0];
    var small_name = name.replace(/\.(gif|png|jpg)$/, "_small.$1");
    var preview_name = name.replace(/\.(gif|png|jpg)$/, "_412.$1");

    var img = document.createElement("img");
    preloadImage(img, small_name);
    img.border = "0";
    if (index) {
      var a = document.createElement("a");
      a.href = "art.html?img=" + count;
      a.appendChild(img);
      nodes[i].appendChild(a);
    } else {
      var blurb = images[count][1];
      var blurb_escaped = blurb.replace(/'/g, "\\'");
      nodes[i].appendChild(img);
      // IE workaround; setAttribute should work, but doesn't
      var cmd = "swapImage('inner_rectangle', '" + preview_name + "', " + count + ", 'blurb', '" + blurb_escaped + "');";
      eval("nodes[i].onclick = function() { " + cmd + " }");
      if (selected == count)
        swapImage('inner_rectangle', preview_name, count, 'blurb', blurb);
    }
    ++count;
  }
}

var LOADING_TIMEOUT_ID = null;

function loadingProgress() {
  window.clearTimeout(LOADING_TIMEOUT_ID);
  var r = 0;
  if (TOTAL_IMAGES) 
    r = Math.round(100 * IMAGES_SO_FAR / TOTAL_IMAGES);
  
  document.getElementById("loading").childNodes[0].data = "Loading (" + r + "%)";
  LOADING_TIMEOUT_ID = window.setTimeout("loadingProgress();", 50);
}

function stopLoadingProgress() {
  if (LOADING_TIMEOUT_ID) {
    window.clearTimeout(LOADING_TIMEOUT_ID);
    document.getElementById("preload").style.visibility = "hidden";
  }
}

var ART = null;
function doneLoading() {
  stopLoadingProgress();
  if (ART != null)
    makeGallery("gallery_inner", new RegExp(/images\//), ART);
}

function doStartLoading() {
  for (var i = 0; i < PRELOAD.length; i++) {
    PRELOAD[i][0].src = PRELOAD[i][1];
  }
}

function startLoading() {
  setTimeout("doStartLoading();", 1);
}

function startLoadingProgress() {
  stopLoadingProgress();
  LOADING_TIMEOUT_ID = window.setTimeout("loadingProgress();", 200);
}

IMAGES = 
    [["images/alcologo.gif", "Logo designed for the Alameda County Regional Call Center."],
     ["images/h2glo_logo2.gif", "One of two possible logo designs created for a fictional aquarium light bulb company."],
     ["images/h2glo_logo1.jpg", "One of two possible logo designs created for a fictional aquarium light bulb company."],
     ["images/h2glo_package.gif", "Package design for an aquarium light bulb."],
     ["images/damaya_jumps.gif", "Logo design created for \"Damaya Jumps,\" a party supply rental company."],
     ["images/jm_logo.gif", "Study in typeface, emphasis on logo design."],
     ["images/geo_pod_logo.gif", "T-shirt graphic created for the Geo Support team at Google."],
     ["images/oakland-moon.jpg", "\"Oakland Moon\" A photographic interpretation of Georgia O'Keeffe's \"New York Moon.\""],
     ["images/book_page1.gif", "\"Loving You\" Page 14 from my artist book \"Closure.\""],
     ["images/book_page2.gif", "\"Inside Me\" Page 16 from my artist book \"Closure.\""],
     ["images/grad_invite.gif", "Informal graduation party invitation."],
     ["images/grad_thankyou.gif", "Graduation party thank you card."],
     ["images/red-thanks.gif", "Thank you card."],
     ["images/tanks.gif", "Thank you card."],
     ["images/nayture.jpg", "\"Nayture\" Digital manipulation of scanned objects."],
     ["images/woman-sedated.jpg", "\"Woman Sedated\" Digital manipulation of scanned images and objects."]];

function loadAllImages(index, selected) {
  loadImages(index, IMAGES, selected);
}

function loadArtPage() {
  var s = getSelectedImage();
  loadAllImages(0, s);
  ART=s;
  startLoading();
}

function setImage() {
  var img = document.createElement("img");
  var n = getSelectedImage();
  img.src = IMAGES[n][0];
  document.getElementById("image").appendChild(img);
  setBlurb("pblurb", IMAGES[n][1]);
}
