////
//// support code for Early Summer Design site
////

//
// required:
//   jquery.js (version 1.2.6+) (see jquery.com)
//

//
// constants
//

// time for fades
var imgFadeTime = 200;
var pageFadeTime = 400;


//
// variables
//

// current page
var pageCurrent = 'home';
// list of ids of images in collection
var imgList = [];
// id of currently displayed image in collection
var imgCurrent = '';
// flag indicating whether we're currently in a fade
var nowPageFading = false;
var nowImgFading = false;


$(document).ready(function(){

  ////
  //// page change function
  ////
  var pageFade = function (pageTo) {
    if (!nowPageFading && pageCurrent != pageTo) {
      nowPageFading = true;
      var offtext = '#div'+pageCurrent+'text';
      var offdisplay = '#div'+pageCurrent+'display';
      var ontext = '#div'+pageTo+'text';
      var ondisplay = '#div'+pageTo+'display';
      $(offtext).fadeOut(pageFadeTime, function() { $(ontext).fadeIn(pageFadeTime, function() {  }); });
      $(offdisplay).fadeOut(pageFadeTime, function() { $(ondisplay).fadeIn(pageFadeTime, function() { nowPageFading = false; }); });
      pageCurrent = pageTo;
    }
  };

  ////
  //// functions to show collection images
  ////
  //
  // fade to an image
  //
  var imgFade = function (imgTo) {
    if (!nowImgFading && imgCurrent != imgTo) {
      nowImgFading = true;
      var offimg = '#'+imgCurrent;
      var onimg = '#'+imgTo;
      $(offimg).fadeOut(imgFadeTime, function() { $(onimg).fadeIn(imgFadeTime, function() { nowImgFading = false; }); });
      imgCurrent = imgTo;
    }
  };
  //
  // fade to previous/next image
  //
  var imgFadePrev = function () {
    var imgNew = imgCurrent;
    // find the previous image
    for (var i = 0; i < imgList.length; i++) {
      if (imgList[i] == imgCurrent) {
        imgNew = (i > 0 ? imgList[i-1] : imgList[imgList.length-1]);
        break;
      }
    }
    // call fade function
    imgFade(imgNew);
  };
  var imgFadeNext = function () {
    var imgNew = imgCurrent;
    // find the next image
    for (var i = 0; i < imgList.length; i++) {
      if (imgList[i] == imgCurrent) {
        imgNew = (i < imgList.length-1 ? imgList[i+1] : imgList[0]);
        break;
      }
    }
    // call fade function
    imgFade(imgNew);
  };
  //
  // immediately change to an image
  //
  var imgChange = function (imgTo) {
    // turn off all images
    $('#divcollectionphoto img').hide();
    // show this image
    $('#'+imgTo).show();
    // save
    imgCurrent = imgTo;
  };



  //
  // connect primary links to page change function
  //
  $('p.nav a')
    .click( function() {
      var href = this.href;
      var hashpos = href.lastIndexOf("#");
      if (hashpos >= 0) {
        var newpage = href.substr(hashpos+1);
        pageFade(newpage);
      }
      $(this).trigger('blur');
      return false;
    });


  //
  // move photos from holder div into display
  //
  $('#divcollectionphotolist img')
    .each( function() {
      imgList[imgList.length] = this.id;     // add to array
      $(this).hide();                        // hide
      $('#divcollectionphoto').append(this); // move into display
    });

  //
  // show the first image
  //
  imgChange(imgList[0]);

  //
  // attach previous/next buttons to functions
  //
  $("#divcollectiondisplay a[href='#previous']")
    .click( function() {
      imgFadePrev();
      $(this).trigger("blur");
      return false;
    });
  $("#divcollectiondisplay a[href='#next']")
    .click( function() {
      imgFadeNext();
      $(this).trigger('blur');
      return false;
    });

  //
  // assign images from the home page to change the image and show the gallery page
  //
  if (jQuery.browser.msie) {
    // IE can't handle this...
    $('#divhomedisplay a').removeAttr('href');
    $('#divhomedisplay a').removeAttr('title');

  }
  else {
    $('#divhomedisplay a')
      .click( function() {
        var href = this.href;
        var hashpos = href.lastIndexOf("#");
        if (hashpos >= 0) {
          var newimg = href.substr(hashpos+1);
          imgChange(newimg);                    // change immediately to the image
          pageFade('collection');               // fade to the page
        }
        $(this).trigger('blur');
        return false;
      });
  }


});

