jQuery(function($){
    $.fn.extend({
		ikikkokSlider : function($_config){
			var 	$_config = $.extend(
			{
				itemCount : 0,
				activeItem : 0,
				nextItem : 0,
				prevItem : 1,
				duration : 6500,
				height : 60
			}, $_config);
			
			return this.each(function(){
				
				/* Declaer varidbles*/
				var $_interval;
				var $this = $(this);
				var $navigator = $(this).find('div.navigator');
				var $contents = $(this).find('div.contents');

				$_config.itemCount = $contents.children('div').length;

				$contents.css('height',$_config.height);
					
				/* appending navigation buttons */
				$navigator.append('<div class="navi-left"></div><div class="navi-prev"><span></span></div><div class="navi-item"><span></span></div><div class="navi-next"><span></span></div><div class="navi-right"></div>');
				
				/* set navigation buttons position */
				$navigator.css('margin', ($_config.height - 25)+'px auto auto 3px');
								
				/* appending navigation buttons */
				for(var i=0; i<$_config.itemCount; i++){
					$this.find('div.navi-item span').append('<div>' + (i+1) + '</div>');
				}
				
				/* set mose event for anothor buttons */
				$this.find('div.navi-item').find('div').each(function(){
					$(this).mouseover(function(){
						if(!$(this).hasClass('on'))
						$(this).removeClass('out').addClass('over');
					}).mouseout(function(){
						if(!$(this).hasClass('on'))
						$(this).removeClass('over').addClass('out');
					});
				});
				
				/* set mose event for prev button */
				$this.find('div.navi-prev span').mouseover(function(){
					$(this).addClass('over');
				}).mouseout(function(){
					$(this).removeClass('over');
				});
				
				/* set mose event for next button */
				$this.find('div.navi-next span').mouseover(function(){
					$(this).addClass('over');
				}).mouseout(function(){
					$(this).removeClass('over');
				});
				
				/* on next button click */
				$this.find('div.navi-next').click(function(){
					doNext();
				});
				
				/* on prev button click */
				$this.find('div.navi-prev').click(function(){
					doPrev();
				});

				/* on anothor buttons click */
				$this.find('div.navi-item span').find('div').each(function(){
					$(this).click(function(){
						doSlide($(this).index());
					});
				});
				
				/* reset active button item */
				function clearActiveButton(){
					/* set navigation buttons position */
					$this.find('div.navi-item div').removeClass('on').addClass('out');
				}
				
				/* set active button item */
				function setActiveButton($_item){
					$this.find('div.navi-item div').eq($_item).removeClass('out').addClass('on');
				}
				
				/* display next item */
				function doNext(){
					doSlide($_config.nextItem);
				}
				
				/* display prev item */
				function doPrev(){
					doSlide($_config.prevItem);
				}

				/* display prev item */
				function doStart(){
					doSlide($_config.activeItem);
				}
				
				/* sliding to current item */
				function doSlide(item){
					clearActiveButton();
					setActiveButton(item);
					
					/* clear and set interval */
					if($_interval) clearInterval($_interval);
					$_interval = setInterval(doNext, $_config.duration);
					
					$_config.activeItem = item;
					$_config.prevItem = (item == 0)? $_config.itemCount - 1 : item-1;
					$_config.nextItem = (item == $_config.itemCount - 1)? 0 : item+1;
					
					/* set navigation buttons new position if first div inside contents more than height */
					$_items = $contents.children('div');
					
					if($_config.height < $_items.first().height()){
						$_config.height = $_items.first().height();
						$navigator.css('margin', ($_config.height - 26)+'px auto auto 5px');
					}
					
					/* show item if is activeItem and hide item if not activeItem */
					$contents.children('div').each(function(){
						if($(this).index() != item){
							$(this).hide();
						}
					});
					
					/* animate slide */
					$_index = $contents.children('div:visible').index();
					$_active = $_items.eq($_index);
					$_next = $_items.eq(item);
					//alert(item);
					
					$_active	.stop().fadeOut(1000 , function(){
						$_next.fadeIn(2500);
					});

				}
				
				doStart();
							
			});
		}
  	});
});

