/*
	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, pIsWebKit) 
{
	this.Initialize(pObjName, pIsWebKit);
}

(function() 
	{
		DivSlides.prototype = {
			onTransition: function (pContainerName, pIndex) {},
			ContainerName: '',
			SlideObjName: 'jDivSlide',
			Interval: 500,
			NoEffects: false,
			IsWebKit: null,
			Initialize: function (pObjName, pIsWebKit) {
				this.ContainerName = pObjName;
				if (typeof(pIsWebKit) == 'undefined') pIsWebKit = null;
				else this.IsWebKit = pIsWebKit;
			},
			Next: function (pIndex) {
				pIndex = (typeof(pIndex)=='undefined') ? -1 : pIndex;
				
				var oDvParent = jQuery('#'+this.ContainerName+' .'+this.SlideObjName+'');
				var tContainerName = this.ContainerName;
				var tSlideObjName = this.SlideObjName;
				var tInterval = this.Interval;
				var tOnTransition = this.onTransition;
				var tNoEffects = this.NoEffects;
				
				if (oDvParent.hasClass('jDivSlideOnTrans')) return false;
				else oDvParent.addClass('jDivSlideOnTrans');
				
				if (!this.IsWebKit) this.IsWebKit = jQuery.browser.webkit;
				
				if (!this.IsWebKit) { //if (!jQuery.browser.webkit) {
					oDvParent.each(
						function (index) {
							var oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+index+')');
							if (oDvItms.css('display') == 'block') {
								if (!tNoEffects) 
									oDvItms.fadeOut(tInterval);
								else
									oDvItms.hide();
								var tNextIndex = ((oDvParent.length-1) == (index)) ? 0 : (index+1);
								if (pIndex >= 0) tNextIndex = pIndex;
								oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+tNextIndex+')');
								tOnTransition(tContainerName , tNextIndex);
								if (!tNoEffects)
									oDvItms.fadeIn(tInterval, function () { oDvParent.removeClass('jDivSlideOnTrans'); });
								else {
									oDvItms.show();
									oDvParent.removeClass('jDivSlideOnTrans');
								}
								return false;
							}
						}
					);
				} else {
					oDvParent.each(
						function (index) {
							var oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+index+')');
							if (oDvItms.css('opacity') == 1) {
								if (!tNoEffects) {
									oDvItms.css('opacity', 0);
									oDvItms.css('z-index', 0);
								} else
									oDvItms.hide();
								var tNextIndex = ((oDvParent.length-1) == (index)) ? 0 : (index+1);

								if (pIndex >= 0) tNextIndex = pIndex;
								oDvItms = jQuery('#'+tContainerName+' .'+tSlideObjName+':eq('+tNextIndex+')');
								tOnTransition(tContainerName , tNextIndex);
								if (!tNoEffects) {
									oDvItms.css('opacity', 1);
									oDvItms.css('z-index', 1);
									setTimeout(function () { oDvParent.removeClass('jDivSlideOnTrans');  }, tInterval);
								} else {
									oDvItms.show();
									oDvParent.removeClass('jDivSlideOnTrans');
								}
								return false;
							}
						}
					);
				}
			}
		}
	}
)();
