 function puffText() {

}
function undoeffect() {
    Effect.Appear(this, {to:.5});
}
function doeffect() {

    Effect.BigPuff(this, {duration:1.5});
}

var imageCache = new Array();
function loadText() {
	var delay=0;
  currentClick = 0;
  currentHover = 0;
  lastHover = 0;  	
  words.each(function(e) {
	  delay = delay + 200;
	  e.setOpacity(0);
    setTimeout(undoeffect.bind(e), delay);

  });
  setTimeout("new Effect.Appear(words[0], {duration: navEffectDuration, from: .5, to: 1.0}); showImage(0); navEffectLocked = false;", delay + 2000);
}
  
Effect.BigPuff = function(element) {
  element = $(element);
  var oldStyle = { 
    opacity: element.getInlineOpacity(), 
    position: element.getStyle('position'),
    top:  element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height
  };
  return new Effect.Parallel(
   //[ new Effect.Scale(element, 1600, 
   [ new Effect.Scale(element, 600, 
      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
     Object.extend({ duration: 1.0, 
      beforeSetupInternal: function(effect) {
        Position.absolutize(effect.effects[0].element);
        effect.effects[0].element.setStyle({zIndex:"1000"});
      },
      afterFinishInternal: function(effect) {
         effect.effects[0].element.hide().setStyle(oldStyle); }
     }, arguments[1] || { })
   );
};
  
Event.observe(window, "load", init);
var currentPage = "work";

var words;
var images;
function init() {
  //fadeInHeader(); 
  words = $$(".fp_word img  ");
  images = $$("#image_container div");
  loadText();
  registerMouseEvents();
  //load "large" image
  words.each(function(e) {
    var img = new Image();
    img.src = e.getAttribute("large");
    imageCache.push(img);
    var smallImg = new Image();
    smallImg.src = e.src;
    imageCache.push(smallImg);
  });
}

function registerMouseEvents() {
  //register hover events
  var index = 0;
  $$(".fp_word img").each(function (e) {
    Event.observe(e, "mouseover", handleMouseOver.bindAsEventListener(e, index));    
    Event.observe(e, "mouseout", handleMouseOut.bindAsEventListener(e, index));
    index ++;
  }
  );
  var index = 0;
  $$(".im_nav img").each(function (e) {
    Event.observe(e, "click", handleMouseClick.bindAsEventListener(e, index));
    index ++;
  }
  );
}    
  


var currentClick = 0;
var currentHover = 0;
var lastHover = 0;

var navEffectDuration = .28;
//var navEffectDuration = .4;
var navEffectLocked = true;

var currentImage = -1;

function showImage(index) {
  if (currentImage > -1 ) {
    new Effect.Fade(images[currentImage], {duration:.5, afterFinish: 
      function() {
          new Effect.Appear(images[index], {duration:.5});
        }
    }
    );
  }
  else {
    new Effect.Appear( images[index], {duration:.5} );
  }
  currentImage = index;
}


function updateNav() {
  if (lastHover != currentHover) {
    new Effect.Fade(words[lastHover], {duration: navEffectDuration, from:1.0, to:.5, 
      afterFinish:
      function() {
        new Effect.Appear(words[currentHover], {duration: navEffectDuration, from: .5, to:1.0, afterFinish: function() { navEffectLocked = false} } );
        lastHover = currentHover;
      }  
    });  
  }
  else {
    navEffectLocked = false;  
  }
}

function resetNav() {
  navEffectLocked = true;
  if (lastHover != currentClick) {
    new Effect.Fade(words[lastHover], {duration: navEffectDuration, from:1.0, to:.5, 
      afterFinish:
      function() {
        new Effect.Appear(words[currentClick], {duration: navEffectDuration, from: .5, to:1.0, afterFinish: function() { navEffectLocked = false} } );
        lastHover = currentClick;
      }  
    });  
  }
  else {
    navEffectLocked = false;  
  }
}


function handleMouseOver(e, index) {
  clearTimeout(resetNavTimeout);
  if (! navEffectLocked ) {
    currentHover = index;
    navEffectLocked = true;
    //new Effect.Appear(this, {duration: navEffectDuration, from:.5, to:1.0, afterFinish:updateNav});
    updateNav();
    lastHover = index;
  }
  else {
    currentHover = index;    
  }
}

var resetNavTimeout;
function handleMouseOut(e, index) {
  if (! navEffectLocked ) {
    resetNavTimeout = setTimeout(resetNav, 750);
  }
  
}

function handleMouseClick(e, index) {
   currentClick = index;
   showImage(index);  
}
function goHome() {
  if (currentPage != "work") {
    hide_section(currentPage); 
  }
}


function hide_section(section) {
  new Effect.Fade(section + "_copy", 
    { duration:.5, afterFinish: 
      function() { 
        new Effect.Fade(section + "_img", 
          { duration:.5, afterFinish: 
            function() { 
              $("image_container").show();
              $("word_container").show();
              currentClick = 0;
              words.each(function(e) {
                e.src=e.getAttribute("small");
              });	              
              loadText();
              currentPage = "work";
            }
          });
      }
    }
  );
}

function show_section(section) {
	var delay = 1;
  navEffectLocked = true;
  if (currentPage == "work") {
    words.each(function(e) {
      e.setAttribute("small", e.src);
      e.src=e.getAttribute("large");
    });	
    $$(".fp_word img").each(function(e) {
  		delay = delay + 150;
   		setTimeout(doeffect.bind(e), delay);
  	});
	}
	else {
    new Effect.Fade(currentPage + "_copy", 
      { duration:.5, afterFinish: 
        function() { 
          new Effect.Fade(currentPage + "_img")
        }
      });
	}
	setTimeout(function() {
  new Effect.Fade("word_container", 
    { duration:.5, afterFinish: 
      function() { 
        new Effect.Fade("image_container", 
          { duration:.5, afterFinish: 
            function() { 
              //hide currently selected image
              images[currentClick].hide();
              new Effect.Appear(section + "_img", 
                { duration:.5, afterFinish: 
                  function() { 
                    new Effect.Appear(section + "_copy", {duration:.5})
                    currentPage = section;
                  }
                });
            }
          });
      }
    }
  );
	}, delay+1000);
}




function hideBio() {
  new Effect.Fade("bio_copy", 
    { duration:.5, afterFinish: 
      function() { 
        new Effect.Fade("bio_img", 
          { duration:.5, afterFinish: 
            function() { 
              $("image_container").show();
              $("word_container").show();
              currentClick = 0;
              words.each(function(e) {
                e.src=e.getAttribute("small");
              });	              
              loadText();
            }
          });
      }
    }
  );
} 
  

function showBio() {
	var delay = 1;
  navEffectLocked = true;
  words.each(function(e) {
    e.setAttribute("small", e.src);
    e.src=e.getAttribute("large");
  });	
  $$(".fp_word img").each(function(e) {
		delay = delay + 150;
 		setTimeout(doeffect.bind(e), delay);
	});
	setTimeout(function() {
  new Effect.Fade("word_container", 
    { duration:.5, afterFinish: 
      function() { 
        new Effect.Fade("image_container", 
          { duration:.5, afterFinish: 
            function() { 
              //hide currently selected image
              images[currentClick].hide();
              new Effect.Appear("bio_img", 
                { duration:.5, afterFinish: 
                  function() { 
                    new Effect.Appear("bio_copy", {duration:.5})
                    currentPage = "BIO";
                  }
                });
            }
          });
      }
    }
  );
	}, delay+1000);
}

