/**
*	@name NetSups Fader Gallery
*	@type jQuery
*	@author Kaveh Ahmadi (kavehahmadi.com) for NetSups CO. (netsups.com)
*	@version 2.0
*	@copyright 2010 NetSups CO.
*	Licensed under GNU General Public and the MIT license
**/
jQuery.fn.NS_FaderGallery = function(settings)  {
	return this.each(function() {
		settings = jQuery.extend({
			timeout: 5000,
			imgPlace: '.imageContainer',
			previous: '.previous',
			next: '.next',
			currItemClass: 'selected',
			listType: 'numinal',
			listMargin: 2
		}, settings);

		var parentID = this.id;
		var parent = $(this);
		var totalItems = $('li', parent).length;
		var imageObj = new Array;
		var imageLink = new Array;
		var curImage = 0;

		//get images
		$('li', parent).each(function(i) {
			imageObj[i] = new Image();
			imageObj[i].src = $(this).attr('rel');

			if ($(this).attr('title') != '') {
				imageLink[i] = $(this).attr('title');
			} else {
				imageLink[i] = '#';
			}

			if (settings.listType == 'numinal') {
				$(this).text(i+1);
			}
			$(this).css({'cursor': 'pointer'});
			i++
		});

		//first image load
		loadImage();

		function loadImage() {

			if (curImage <= settings.listMargin) {
				var s = 0;
				var se = (settings.listMargin * 2)
			} else if (curImage >= totalItems - settings.listMargin) {
				var s = totalItems - (settings.listMargin * 2) - 1;
				var se = totalItems;
			} else {
				var s = curImage - settings.listMargin;
				var se = curImage + settings.listMargin;
			}

			$('#' + parentID + ' li').hide().removeClass(settings.currItemClass).eq(curImage).addClass(settings.currItemClass);
			for (s; s <= se; s++) {
				$('#' + parentID + ' li').eq(s).show();
			}

			$('div', settings.imgPlace).fadeOut('slow', function(){
					$('div', settings.imgPlace)
						.html(imageObj[curImage])
						.fadeIn('slow')
					;
					if(imageLink[curImage] != '#') {
						$('div', settings.imgPlace)
							.click(function() { window.location = imageLink[curImage]; })
							.css({ 'cursor': 'pointer' })
						;
					} else {
						$('div', settings.imgPlace).css({ 'cursor': 'default' });
					}
			});
		};

		function goNext() {
			if(curImage < totalItems - 1) {
				curImage++;
			} else {
				curImage = 0
			}
			loadImage();
		}
		
		function goPrv() {
			if(curImage > 0) {
				curImage--;
			} else {
				curImage = totalItems - 1
			}
			loadImage();
		}

		//Events
		$(settings.previous, parent).click(function(e) {
			clearInterval(FaderGalleryR);
			goPrv();
			FaderGalleryR = setInterval(goNext, settings.timeout);
		});

		$(settings.next, parent).click(function(e) {
			clearInterval(FaderGalleryR);
			goNext();
			FaderGalleryR = setInterval(goNext, settings.timeout);
		});

		$("li", parent).click(function(e) {
			e.preventDefault();
			curImage = $('li', this.parentNode).index(this);
			clearInterval(FaderGalleryR);
			loadImage();
			FaderGalleryR = setInterval(goNext, settings.timeout);
		});

		FaderGalleryR = setInterval(goNext, settings.timeout);
	});
};
