/*
	Zicht jQuery Tools
*/

;(function($){

	$.prefetch = function () {
		for (var i=0; i<arguments.length; i++)  {
			$('<img>').attr('src', arguments[i]);
		}
	}

	$.fn.imghover = function () {
		return this.each (function () {
			$(this).data('__img__original', this.src);
			$.prefetch($(this).attr('data-hover'));
		}).hover(function(){
			this.src = $(this).attr('data-hover');
		},function(){
			this.src = $(this).data('__img__original');
		});
	};

	$.fn.inputPlaceholder = function () {
		return this.each(function(){
			if ($(this).val() == '' || $(this).val() == $(this).attr('data-placeholder')) {
				$(this).val($(this).attr('data-placeholder'))
					.addClass('init');
			}
			$(this).focus(function(){
				if ($(this).val() == $(this).attr('data-placeholder'))
					$(this).val('').removeClass('init');
			}).blur(function(){
				if ($(this).val() == '') {
					$(this).val($(this).attr('data-placeholder'))
						.addClass('init');
				}
			});
		});
	};

	$.fn.slideselect = function (options) {

		var opt = {
			visibleItems: 1,
			itemWidth: 440,
			animSpeed: 400
		};

		if (options) $.extend(opt, options);

		return this.each (function () {

			var self = $(this).find('>div:first');
			var navprev = $(this).find('.slideselect_prev');
			var navnext = $(this).find('.slideselect_next');
			var ind = $(this).find('.slideselect_indicator');
			var slidediv = $('>ul:first',self);
			var elements = $('>li',slidediv);
			var elementCount = elements.length;
			var currentElement = 1;

			if (elementCount <= opt.visibleItems) {
				ind.hide();
				return;
			} else {
				navprev.show();
				navnext.show();
				for (var i=0; i<elementCount; i++) {
					$('<span'+(i==0?' class="active"':'')+'/>').appendTo(ind);
				}
			}

			slidediv.css('width',elementCount*opt.itemWidth);

			// bind events to specified buttons
			navprev.click(movePrev);
			navnext.click(moveNext);

			// update active indicator
			function updateIndicator() {
				ind.find('span').removeClass('active');
				ind.find('span:eq('+(currentElement-1)+')').addClass('active');
			}

			// Move handling
			var _moveRunning = false;

			function movePrev() {
				if (_moveRunning) return false;
				_moveRunning = true;

				$('>li:last',slidediv).prependTo(slidediv);
				slidediv.css('left','-'+opt.itemWidth+'px');
				slidediv.animate({left:'+='+opt.itemWidth+'px'},opt.animSpeed,'swing',function(){
					currentElement = (currentElement == 1) ? elementCount : currentElement - 1;
					updateIndicator();
					_moveRunning = false;
				});

				return false;
			};

			function moveNext() {
				if (_moveRunning) return false;
				_moveRunning = true;

				slidediv.animate({left:'-='+opt.itemWidth+'px'},opt.animSpeed,'swing',function(){
					$('>li:first',slidediv).appendTo(slidediv);
					slidediv.css('left',0);
					currentElement = (currentElement == elementCount) ? 1 : currentElement + 1;
					updateIndicator();
					_moveRunning = false;
				});

				return false;
			};

		});
	};

})(jQuery);
