/*
 * jQuery blockslide v 0.01
 * http://www.stalagmitesoftware.com/
 *
 * Copyright © 2010, Stalagmite Software and Cyber Arts
 * Free to use and abuse for non commercial use.
 * 
 * started adding effects 2010/08/21
 */
;(function($)
{
	var container = null;
	var blocks = null;
	var kidsNo = null;
	var nowKid = null;
	var params; // = null
	var effects; // = null
	var bsObjTimeout = null;
	var bsShowPause = false;
	
	$.fn.blockslide = function(settings)
	{
		settings = $.extend({}, $.fn.blockslide.defaults, settings);
		//$.fn.blockslide.settings = $.fn.blockslide.settings;
		params = settings;
		effects= params.arrayEffects;
		//$.fn.blockslide.showMsg(effects.length);
		
		
		container = '#'+ settings.blockContainer;
		blocks = '#'+ settings.blockContainer +' LI.slide';
		kidsNo = $(blocks).length;
		nowKid = 0;
		$.fn.blockslide.prepare();
		if(params.autoStart)
		{
			$.fn.blockslide.runTheShow();
		}
	}
	
	$.fn.blockslide.prepare= function()
	{
		//alert(blocks.length);
		//$.fn.blockslide.showMsg(kidsNo);
		
		//$(container).mouseover( function(){alert('www');} );
		
		$(blocks).hide();
		
		if(params.pauseOnHover)
		{
			$(container).mouseenter( $.fn.blockslide.pause );
			$(container).mouseleave( $.fn.blockslide.play );
		}

		if(params.showSlideIndex)
		{
			//===============
			$.fn.blockslide.slideIndex();
		}
		
		jQuery.noData= {};
		
		$.fn.blockslide.updtPausePlay();
		
		$(blocks + ':eq('+nowKid+')').show();
		//$.fn.blockslide.showKid(nowKid);
	}
	
	
	$.fn.blockslide.slideIndex= function()
	{
		slideIndex = '<ul>';
		styles = params.indexStyles;
		for(loop = 0 ; loop < kidsNo ; loop++ )
		{
			slideIndex += '<li class="'+styles[0]+'" onclick="showPointedSlide('+loop+')"><div id="indexBull" >&nbsp;</div></li>';	
		}
		slideIndex += '</ul>';
		//slideIndex = 'abcd-test';
		
		if(params.slideIndexContainer=='')
		{
			params.slideIndexContainer= params.slideIndexContainerDefault;
			slideIndexBlock = '<div id="'+ params.slideIndexContainer +'">'+slideIndex+'</div>';
			$(container).after(slideIndexBlock);
		}
		else
		{
			slideIndex += '<div align="right" id="bsPausePlay"> <strong id="bsPause" onclick="pauseShow()">||</strong> <strong id="bsPlay" onclick="playShow()">></strong> </div>';
			$('#'+params.slideIndexContainer).append(slideIndex);
		}
	}
	
	$.fn.blockslide.getNextChild= function()
	{
		nowKid++;
		if(nowKid >= kidsNo)
		{
			nowKid = 0	
		}
		return nowKid;
	}
	
	$.fn.blockslide.getPrevChild= function()
	{
		nowKid--;
		if(nowKid < 0)
		{
			nowKid = kidsNo-1;	
		}
		return nowKid;
	}
	
	
	$.fn.blockslide.showNext= function()
	{
		nextKidIn = $.fn.blockslide.getNextChild();	
		$.fn.blockslide.showKid(nextKidIn);
	}

	$.fn.blockslide.showPrev= function()
	{
		nextKidIn = $.fn.blockslide.getPrevChild();	
		$.fn.blockslide.showKid(nextKidIn);
	}
	
	$.fn.blockslide.getEffect= function()
	{
		//selectedEfeect = effects.sort( randOrd )[0];
		randIndex = Math.floor(Math.random() * (effects.length) )
		selectedEfeect = effects[randIndex]; 
		$.fn.blockslide.showMsg(selectedEfeect+' : '+randIndex);
		return selectedEfeect;
	}
	
	$.fn.blockslide.showKid= function(kidindex)
	{
		$.fn.blockslide.showMsg(kidindex); // test code 
		
		visibleSlide = $(blocks +':visible');
		nowEfeect = $.fn.blockslide.getEffect();
		
		//most effect types need no options passed by default
		var options = {};
		//check if it's scale, transfer, or size - they need options explicitly set
		//if(nowEfeect == 'scale'){ options = {percent: 0}; }
		//else if(nowEfeect == 'transfer'){ options = { to: "#button", className: 'ui-effects-transfer' }; }
		//else if(nowEfeect == 'size'){ options = { to: {width: 200,height: 60} }; }
		
		//visibleSlide.hide(nowEfeect,options,params.slideShowSpeed,
//							function()
//							{
//								$(blocks).hide();
//								$(blocks + ':eq('+kidindex+')').show();
//								nowKid = kidindex;
//								$.fn.blockslide.updtSlideIndex();
//							}
//							);
		/*visibleSlide.hide(1000,
							function()
							{
								$(blocks).hide();
								$(blocks + ':eq('+kidindex+')').show(200);
								nowKid = kidindex;
								$.fn.blockslide.updtSlideIndex();
							}
							);*/
		visibleSlide.fadeOut(params.slideShowSpeed,
							function()
							{
								$(blocks).hide();
								$(blocks + ':eq('+kidindex+')').fadeIn(params.slideShowSpeed);
								nowKid = kidindex;
								$.fn.blockslide.updtSlideIndex();
							}
							);
		//params.slideShowSpeed
	}
	/*function show(kidindex)
	{
		$(blocks).hide();
		$(blocks + ':eq('+kidindex+')').show();
	}*/
	
	$.fn.blockslide.updtSlideIndex = function()
	{
		styleNormal = params.indexStyles[0];
		styleSelected = params.indexStyles[1];
		
		slideIndex = '#'+params.slideIndexContainer+' li';
		$(slideIndex).removeClass(styleSelected);
		$(slideIndex + ':eq('+nowKid+')').addClass(styleSelected);
	}
	
	$.fn.blockslide.updtPausePlay = function()
	{
		ppCntnr = '#bsPausePlay';
		if(bsShowPause)
		{
			$(ppCntnr+' #bsPause').hide();	
			$(ppCntnr+' #bsPlay').show();	
		}
		else
		{
			$(ppCntnr+' #bsPause').show();	
			$(ppCntnr+' #bsPlay').hide();	
		}
		
	}
	
	
	$.fn.blockslide.destroyTimeout= function()
	{
		if(bsObjTimeout != null){
           clearTimeout(bsObjTimeout);
           bsObjTimeout = null;
       }	
	}
	
	$.fn.blockslide.pause = function()
	{
	   bsShowPause = true;
	   $.fn.blockslide.destroyTimeout();
	   $.fn.blockslide.updtPausePlay();
	}
	
	$.fn.blockslide.play= function()
	{
		bsShowPause = false;
       	$.fn.blockslide.destroyTimeout();
       	$.fn.blockslide.runTheShow();
		$.fn.blockslide.updtPausePlay();
	}
	
	$.fn.blockslide.runTheShow= function()
	{
		if(!bsShowPause){
		  $.fn.blockslide.showNext();
		  bsObjTimeout = setTimeout('$.fn.blockslide.runTheShow()', params.nextSlideDelay);
		}
	}
	
	
	
	$.fn.blockslide.showMsg= function(msgTxt)
	{
		//document.getElementById('testOut').innerHTML=msgTxt;
	}	
	
	$.fn.blockslide.showAll= function()
	{
		//alert('hello jQuery');
		$(blocks).show();
	}
	
	$.fn.blockslide.forceHide= function()
	{
		//alert('hello jQuery');
		allLIs = '#bstest LI';
		allLIsEle = $(allLIs);
		allLIsEle.hide();
		$(allLIs + ':first').show();
	}
	
	/*  Default Settings  */
	$.fn.blockslide.defaults = {
		blockContainer:             'blockslide'
		,nextSlideDelay:            5000
		,slideShowSpeed:            'slow'
		,fadeOutSpeed:            	100
		,arrayEffects:				["blind" ,"clip" ,"drop" ,"explode" ,"fold" ,"highlight" ,"slide" ]/*,"puff" ,"transfer ,"bounce" ,"pulsate" ,"size" ,"shake" ,"scale" ,"fade"*/
		,autoStart:                 false
		,pauseOnHover:              false
		,showSlideIndex:            false
		,indexStyles:            	["slideIndex" ,"slideIndexSelected" ]
		,slideIndexContainer:       ''
		,slideIndexContainerDefault:'bsIndex'
	};

	$.fn.blockslide.settings = {};
	
})(jQuery);

function showPointedSlide(slideNo)
{
	$(document).blockslide.pause();
	$(document).blockslide.showKid(slideNo);
}

function pauseShow()
{
	$(document).blockslide.pause();
}

function playShow()
{
	
	$(document).blockslide.play();
}

