var popup = null;
var gallery = null;

function displayGallery(e, galleryId) {
	popup = new PopupWindow($(galleryId));
	gallery = new GalleryScroll($(galleryId));
	popup.open(e);
}

function displayGallerySansPopUp(galleryId) {
	gallery = new GalleryScroll($(galleryId));
}


var GalleryScroll = Class.create();
GalleryScroll.prototype = {

  domElement: null,
  imageCountBaseZero: 0,
  imageGallery: null,
  currentImagePosition: 0,
  nextImagePosition: 0,

  initialize: function(domElement) {
    this.domElement = domElement;


    var popUpChildElements = Element.childElements(this.domElement);

		var popUpMainBodyDiv = popUpChildElements[1];
		popUpMainBodyDiv.style.textAlign = "center";

		var popUpScroller = popUpChildElements[2];

		if(Element.childElements(popUpMainBodyDiv).length > 1) {
			popUpScroller.style.display = "block";

			var imageGallery = Element.childElements(popUpMainBodyDiv);

			this.setUpImageMap(imageGallery);
			this.addListenersToScrollButtons(popUpScroller);
		}

  },

  setUpImageMap: function(imageGalleryArray) {
		var imageArray = imageGalleryArray;
		var imageHash = new Hash();
    var countthis = 0;
		for(var i = 0; i < imageArray.length; i++) {
		  if(imageArray[i].nodeName != 'DIV') {
			  imageArray[i].id = this.domElement.id + i;
			  imageHash.set(i, imageArray[i]);
			  countthis ++;
			}
		}

		this.imageGallery = imageHash;
		this.imageCountBaseZero = countthis - 1;

  },

  addListenersToScrollButtons: function(scrollerElements){
  	var scrollPrevButton = Element.childElements(scrollerElements)[0];
  	var scrollNextButton = Element.childElements(scrollerElements)[2];

  	scrollPrevButton.id = "scrollprev-" + this.domElement.id;
  	scrollNextButton.id = "scrollnext-" + this.domElement.id;
  	scrollNextButton.name = this.domElement.id;

  	Event.observe(scrollPrevButton.id, 'click', this.scrollPrev);
  	Event.observe(scrollNextButton.id, 'click', this.scrollNext);

  },

	scrollNext: function() {

    var currentImage = gallery.imageGallery.get(gallery.currentImagePosition);
    currentImage.style.display ="none";

    gallery.nextImagePosition = gallery.currentImagePosition + 1;
    gallery.currentImagePosition = gallery.currentImagePosition + 1;

    if(gallery.currentImagePosition > gallery.imageCountBaseZero){
    	gallery.nextImagePosition = 0;
    	gallery.currentImagePosition = 0;
    }

    var nextImage = gallery.imageGallery.get(gallery.nextImagePosition);
    nextImage.style.marginLeft = "auto";
    nextImage.style.marginRight = "auto";
    nextImage.style.display ="block";

	},

	scrollPrev: function() {

    var currentImage = gallery.imageGallery.get(gallery.currentImagePosition);
    currentImage.style.display ="none";

    gallery.nextImagePosition = gallery.currentImagePosition - 1;
    gallery.currentImagePosition = gallery.currentImagePosition - 1;

    if(gallery.nextImagePosition < 0){
    	gallery.nextImagePosition = gallery.imageCountBaseZero;
    	gallery.currentImagePosition = gallery.imageCountBaseZero;
    }

    var prevImage = gallery.imageGallery.get(gallery.nextImagePosition);
    prevImage.style.marginLeft = "auto";
    prevImage.style.marginRight = "auto";
    prevImage.style.display ="block";

	}
}

