// JavaScript Document

var popoverlayOpacity = 0.8;	// controls transparency of shadow overlay
var popoverlayDuration = 0.2;

var Popbox = Class.create();

Popbox.prototype = {
	
	actualpopupID: null,
	// initialize()
	// Constructor runs on completion of the DOM loading. Calls updateImageList and then
	// the function inserts html at the bottom of the page which is used to display the shadow 
	// overlay and the image container.
	//
	initialize: function() {	
		
		// Code inserts html at the bottom of the page that looks similar to this:
		//
		//	<div id="overlay"></div>

		var objBody = document.getElementsByTagName("body").item(0);
		
		var objpopOverlay = document.createElement("div");
		objpopOverlay.setAttribute('id','popoverlay');
		objpopOverlay.style.display = 'none';
		objpopOverlay.onclick = function() { myPopbox.end(); }
		objBody.appendChild(objpopOverlay);
	},

	//
	//	start()
	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
	//
	start: function(popupID) {	
		Popbox.prototype['actualpopupID'] = popupID;
		hideSelectBoxes();
		hideFlash();

		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
		Element.setWidth('popoverlay', arrayPageSize[0]);
		Element.setHeight('popoverlay', arrayPageSize[1]);

		new Effect.Appear('popoverlay', { duration: popoverlayDuration, from: 0.0, to: popoverlayOpacity });
		new Effect.Appear('popup_' + popupID, { duration: popoverlayDuration, from: 0.0, to: 1.0, queue: 'end', afterFinish: function() { moveTo('popupcontent_' + popupID, 'popupcontent_1_' + popupID); }});

		x = parseInt(205) + getOffset("x");
		y = parseInt(160) + getOffset("y");

		new Effect.Move ('popup_' + popupID, { x: x, y: y, mode: 'absolute'});			
	},

	end: function() {
		new Effect.Fade('popup_' + Popbox.prototype['actualpopupID'], { duration: popoverlayDuration });
		new Effect.Fade('popoverlay', { duration: popoverlayDuration });
		showSelectBoxes();
		showFlash();
	}
}
function initPopbox() { myPopbox = new Popbox(); }
Event.observe(window, 'load', initPopbox, false);





function moveTo(container, element){
	Position.prepare();
	container_y = Position.cumulativeOffset($(container))[1]
	element_y = Position.cumulativeOffset($(element))[1]
	new Effect.Scroll(container, {x:0, y:(element_y-container_y)});
	return false;
}



Effect.Scroll = Class.create();
Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'absolute'
    } , arguments[1] || {}  );
    this.start(options);
  },
  setup: function() {
    if (this.options.continuous && !this.element._ext ) {
      this.element.cleanWhitespace();
      this.element._ext=true;
      this.element.appendChild(this.element.firstChild);
    }
   
    this.originalLeft=this.element.scrollLeft;
    this.originalTop=this.element.scrollTop;
   
    if(this.options.mode == 'absolute') {
      this.options.x -= this.originalLeft;
      this.options.y -= this.originalTop;
    } else {
   
    }
  },
  update: function(position) {   
    this.element.scrollLeft = this.options.x * position + this.originalLeft;
    this.element.scrollTop  = this.options.y * position + this.originalTop;
  }
});

