﻿
var MiniGallery = function(options) {
	var _options = $.extend({}, {
		hidPhotos: '#hidPhotos',
		container: '#photogallery',
		thumbsContainer: '#slideshow ul',
		template: '#slideshow ul li:first',
		colorbox: true,
		video: false,
		browseURL: null,
		addURL: null
	}, options);

	var _hid = $(_options.hidPhotos);
	var _container = $(_options.container);
	var _thumbsContainer = $(_options.thumbsContainer);
	var _template = $(_options.template).clone(false);
	
	var _index = 0;
	var _size = 6;
	var _data = [];
	var _span;
	
	var val = _hid.val();
	if(val)
		_data = eval('(' + val + ')');
	
	var e = function(nodeType) {
		return $(document.createElement(nodeType));
	}
	
	var makeColorbox = function(nodes) {
		if(_options.video === true) {
			nodes.colorbox({iframe:true, width:400, height:400});
		} else {
			var callback = function() {
				link = $.fn.colorbox.element().closest('a');
				title = $(link).attr("title");
				$("#cboxTitle").hide();
				$('<div style="margin-top: 10px; margin-bottom: -10px;">'+title+"</div>").insertAfter("img.cboxPhoto"); 
				$.fn.colorbox.resize(); 
			}
			nodes.colorbox({iframe:false, onComplete:callback});
		}
	};
	
	var navigateClick = function() {
		var t = $(this);
		var prior = _index;
		
		if(t.attr('href') == '#next')
			_index += _size;
		else
			_index -= _size;
		
		_index = Math.min(_index, _data.length - _size);
		_index = Math.max(_index, 0);
		
		if(_index != prior)
			updateImages();
		
		return false;
	};
	
	var updateImages = function() {
		_thumbsContainer.empty();
		var m = Math.min(_index + _size, _data.length);
		
		for(var x=_index; x<m; x++) {
			var clone = _template.clone(false);
			$('a', clone).attr('href', _data[x].Link)
				.attr('title', _data[x].Desc);
			$('img', clone).attr('src', _data[x].Path)
				.attr('alt', _data[x].Title)
				.attr('title', _data[x].Title);
			clone.show();
			
			_thumbsContainer.append(clone);
			
			if(_options.colorbox)
				makeColorbox($('a', clone));
		}
		
		var page = Math.ceil(_index / _size) + 1;
		_span.text(page + ' of ' + Math.ceil(_data.length / _size));
	};
	
	var navigation = e('div')
		.addClass('gallerynav')
		.append(e('span').text(' ')) // Fixes weird IE 7 bug.
		.append(
			e('a')
				.attr('href', '#prev')
				.addClass('prev')
				.bind('click', navigateClick)
				.text('<')
		).append(
			_span = e('span')
				.text('1 of ' + Math.ceil(_data.length / _size))
		).append(
			e('a')
				.attr('href', '#next')
				.addClass('next')
				.bind('click', navigateClick)
				.text('>')
		);
	
	if	(_options.colorbox)
		makeColorbox($('a', _thumbsContainer));

	if (_options.browseURL) {
		navigation.append(
			e('a')
				.attr('href', _options.browseURL)
				.addClass('button')
				.text('Browse Photos')
		);
	}
	
	/*if (_options.addURL) {
		navigation.append(
			e('a')
				.attr('href', _options.addURL)
				.addClass('button')
				.text('Add Photo')
		);
	}*/
	
	_hid.after(navigation);
};


