/*
	Slides Transition for DIV objects
	Created by ryanzkizen@gmail.com / 2011-Apr-22
	
	DIV structure
	
	<div id="dvContainerName" style="position: relative">
		<div class="jDivSlide"></div>
		<div class="jDivSlide"></div>
		<div class="jDivSlide"></div>
	</div>
*/

function DivSlides(pObjName, pIsCSS3Ani) 
{
	this.Initialize(pObjName, pIsCSS3Ani);
}

(function() 
	{
		DivSlides.prototype = {
			onTransition: function (pPrevSlide, pNextSlide) {},
			onFadeInCallBack: function (pPrevSlide, pNextSlide) {},
			ContainerName: '',
			SlideObjName: 'jDivSlide',
			Interval: 500,
			NoEffects: false,
			IsCSS3Ani: null,
			Initialize: function (pObjName, pIsCSS3Ani) {
				this.ContainerName = pObjName;
				if (typeof(pIsCSS3Ani) == 'undefined') pIsCSS3Ani = null;
				else this.IsCSS3Ani = pIsCSS3Ani;
			},
			Next: function (pIndex, pPlayTransOnly) {
				pIndex = (typeof(pIndex)=='undefined') ? -1 : ((pIndex) ? pIndex : -1);
				pPlayTransOnly = (typeof(pPlayTransOnly)=='undefined') ? false : pPlayTransOnly;
				
				var oDvParent = jQuery('#'+this.ContainerName+' .'+this.SlideObjName+'');
				var tContainerName = this.ContainerName;
				var tSlideObjName = this.SlideObjName;
				var tInterval = this.Interval;
				var tOnTransition = this.onTransition;
				var tOnFadeInCallBack = this.onFadeInCallBack;
				var tNoEffects = this.NoEffects;
				
				/*if (oDvParent.hasClass('jDivSlideOnTrans')) return false;
				else oDvParent.addClass('jDivSlideOnTrans');*/
				
				if (oDvParent.length == 1) return false;
				
				if (!this.IsCSS3Ani) {
					oDvParent.each(
						function (index) {
							var oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+index+')');
							if (oDvItms.css('display') == 'block') {
								if (!pPlayTransOnly) {
									if (!tNoEffects) 
										oDvItms.fadeOut(tInterval);
									else
										oDvItms.hide();
								}
								var oDvItmsPrev = oDvItms;
								var tNextIndex = ((oDvParent.length-1) == (index)) ? 0 : (index+1);
								if (pIndex >= 0) tNextIndex = pIndex;
								oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+tNextIndex+')');
								if (!pPlayTransOnly)
									tOnTransition(oDvItmsPrev, oDvItms);
								else {
									tOnTransition(oDvItmsPrev, oDvItmsPrev);
									//oDvParent.removeClass('jDivSlideOnTrans');
								}
								if (!pPlayTransOnly) {
									if (!tNoEffects)
										oDvItms.fadeIn(tInterval, function () { /*oDvParent.removeClass('jDivSlideOnTrans');*/ tOnFadeInCallBack(oDvItmsPrev, oDvItms); });
									else {
										oDvItms.show();
										//oDvParent.removeClass('jDivSlideOnTrans');
									}
								}
								return false;
							}
						}
					);
				} else {
					//CSS3 Anim not implented yet...
				}
			}
		}
	}
)();
