Galleries = {

	Galleries: {},	

	HasGalleries: false

};



Gallery = function (galleryContainer, timeDelay) {

	this.AutoRotate = false;

	this.Active = false;

	this.DisplayInterval = timeDelay || 5000;

	this.DisplayTimeout = null;

	this.NextViewIndex = 0;	

	this.SlideClassSelector = '.slideContainer';

	this.NavContainer = null;

	this.GalleryContainer = galleryContainer;

	this.Slides = null;

	this.BaseId = this.GalleryContainer.attr('id');

	this.SlideNavButtons = null;

	this.SlideNavContainer = null;

	this.Init();

};



Gallery.prototype = {

	Init: function () {

		var me = this;

		me.Slides = me.GalleryContainer.find(me.SlideClassSelector);

		me.InitNav();

		if (!Galleries.HasGalleries) {

			me.Active = me.AutoRotate = true;

			Galleries.HasGalleries = true;

			me.ActivateGallery();

		} else {

			me.DeActivateGallery();

		}

		Galleries.Galleries[me.BaseId] = me;

		

	},

	GetButtonIndex: function(button) {

		var me = this;

		var index = 0;

		me.SlideNavButtons.each(function(i, o){

			if ($(this).attr('id') == $(button).attr('id')) index = i;

		});

		return index;

	},

	InitNav: function () {

		var me = this,

			navLinkTemplate = '<li><a href="#" class="slideNavLink"></a></li>';

		me.SlideNavContainer = $('<ul class="slideNavContainer clr"></ul>').appendTo('#gallery');

		if (me.Slides.length > 1) {

			me.Slides.each(function (i,o) {

				var newLink = $(navLinkTemplate).appendTo(me.SlideNavContainer);

				newLink.find('a').html(i+1).attr('id','slideNavLink' + i);

			});

		}

		me.SlideNavButtons = me.SlideNavContainer.find('.slideNavLink'); 

		me.SlideNavButtons.click(function(e){

			e.preventDefault();

			me.NextViewIndex = me.GetButtonIndex(e.target);

			me.AutoRotate = false;

			clearTimeout(me.DisplayTimeout);

			me.ShowSlide();	

		});

	},

	ActivateGallery: function(){

		var me = this;

		me.SlideNavContainer.find('ul:first').removeClass('hidden');

		me.GalleryContainer.removeClass('hidden');

		me.NextViewIndex = 0;

		me.AutoRotate = me.Active = true;

		me.ShowSlide();

		$.each(Galleries.Galleries, function(){

			if (this.BaseId != me.BaseId) this.DeActivateGallery();

		});

	},

	DeActivateGallery: function(){

		var me = this;

		me.SlideNavContainer.find('ul:first').addClass('hidden');

		me.GalleryContainer.addClass('hidden');

		if (me.DisplayTimeout) clearTimeout(me.DisplayTimeout);

		me.AutoRotate = me.Active = false;

	},

	ShowSlide: function () {

		var me = this;

		var $currentButton = $(me.SlideNavButtons[me.NextViewIndex]),

		$currentSlide = $(me.Slides[me.NextViewIndex]);

		me.Slides.removeClass('active').addClass('hidden');

		me.SlideNavButtons.removeClass('active');

		$currentSlide.add($currentButton).addClass('active').removeClass('hidden');

		$currentSlide.click(function(){

			clearTimeout(me.DisplayTimeout);

			me.AutoRotate = false;

		});

		me.NextViewIndex++;

		if (me.NextViewIndex >= (me.SlideNavButtons.length)){

			me.NextViewIndex = 0;

		}



		var showNext = function () {me.ShowSlide();};

		if (me.AutoRotate) {

			me.DisplayTimeout = setTimeout(showNext, me.DisplayInterval);

		}

	}

};





GalleryNav = function () {

};



$(document).ready(		

	function(){

		var me = this;

		$('#gallery').each(function () {

			new Gallery($(this), 7000);

		});

	}

);
