// OG Slider PlugIn, March 2011 //
// Omega Graphic - Antalya / omegagraphic.com //
// Author: Ozgur Gurckaya / gurckaya.com // 

(function($) {
	$.og_gallery = {version: '1.0'};
	$.fn.og_gallery = function(defaults, dynamics){
		
		defaults = $.extend({
			
			object: '#gallery-app',			
			speed: 1500,
			duration: 3000,
			firstActionControlFlag: false,
			container:$('.gallery-app'),
			header:$('.gallery-app-header-container'),
			galleryName:$('.gallery-app-header-gallery-name'),
			btnClose:$('.gallery-app-header-btn-close'),
			pictureContainer:$('.gallery-app-picture-container'),
			progressContainer: $('.gallery-app-header-progress-container'),
			progressBar: $('.gallery-app-header-progress-line'),
			descriptionContainer: $('.gallery-app-picture-container-description'),
			descriptionBg: $('.gallery-app-picture-container-description-bg'),
			descriptionText: $('.gallery-app-picture-container-description-text'),
			thumbContainer: $('.gallery-app-thumb-container'),
			thumbs: $('.gallery-app-thumb-container-thumbs'),
			leftButtons: $('.gallery-up-left-button-container'),
			rightButtons: $('.gallery-up-right-button-container'),
			galleryBg: $('.gallery-app-bg')	
						
		}, defaults);
		
		dynamics = $.extend({
			
			gallery: 0,
			galleryName: '',
			galleryWidth: 0,
			galleryHeight: 0,
			currentPicture: 0,
			slideShowFlag: false,
			loadedImage: 0	,
			pictureCount: 0,
			progressCount: 1,
			menuID:'',
			actionControl:false
						
		}, dynamics);		
		
		var pathArray = new Array();
		var image = new Image();			
		
		var gallery = {
			
			initialize: function() {										
				
				var e = $(defaults.object);
				
				$('#gallery-app').hide().css({opacity:0});
				$(defaults.galleryBg).css({'position':'absolute',top:'0px',left:'0px',width:$(window).width(),height:$(window).height(),'background-color':'#fff',opacity:0,'z-index':'3000'});
				
				$(defaults.galleryBg).show().animate({opacity:0.8},300,"linear");
				$('#gallery-app').show().animate({opacity:1},900,"linear");
				
				$('#gallery-app').mouseover(function() {

					$('#gallery-app').css({left:($(window).width() / 2) - (eval(dynamics.galleryWidth) / 2) + 'px',top:($(window).height() / 2) - (eval(dynamics.galleryHeight) / 2) - 54 + 'px',height:(eval(dynamics.galleryHeight) + 31 + 100) + 'px'});
					$('*[hide=true]').each(function() {
						
						$(this).stop().show().animate({opacity:1}, 300, "linear");
						
					});
					
				}).mouseout(function() {
										
					$('*[hide=true]').stop().animate({opacity:0}, 300, "linear", function() {

						$('#gallery-app').css({left:($(window).width() / 2) - (eval(dynamics.galleryWidth) / 2) + 'px',top:($(window).height() / 2) - (eval(dynamics.galleryHeight) / 2) + 'px',height:(eval(dynamics.galleryHeight)) + 'px'});
						$('*[hide=true]').hide();	
						
					});
					
				});				
	
				$('#gallery-app').css({'overflow':'visible','list-style-type':'none','position':'absolute','z-index':'4000'});								

				$.post('og_gallery_app.asp', {galleryID: '' + dynamics.gallery + '', menuID: '' + dynamics.menuID + ''}, function(data) {

					if (data == 'error') {
						
						$(e).html('An error occured.');
						
					} else {
								
						var feedback = data;	
						pathArray = feedback.split("||");

						dynamics.pictureCount = Math.round(pathArray.length / 4);
						dynamics.galleryWidth = pathArray[2];
						dynamics.galleryHeight = pathArray[3];
												
						//$(defaults.container).css({height:'64px',width:dynamics.galleryWidth + 'px'});
						$('.gallery-app-header-container').css({width:dynamics.galleryWidth + 'px'});
						$('.gallery-app-header-gallery-name').css({'padding':'5px',height:'17px',width:dynamics.galleryWidth - 10 - 45 + 'px','float':'left','background-color':'#000','color':'#fff','font-size':'12px','font-family':'Tahoma, Geneva, sans-serif','line-height':'17px'}).hide();
						$('.gallery-app-header-btn-close').css({'padding-top':'0px','cursor':'pointer','text-align':'center',height:'17px',width:'22px','float':'right','background-color':'#000','line-height':'38px'});							
						
						$('.gallery-app-header-btn-close').click(function() {
														
							$('#gallery-app').animate({opacity:0},500,"linear",function() {
								
								$('#gallery-app').hide();
								
								$('.gallery-app-bg').animate({opacity:0},500,"linear",function() {
									
									$('.gallery-app-bg').hide();
									
									if(defaults.slideShowFlag) {
										
										clearTimeout(timer);
										clearTimeout(timerx);										
										
									};
																		
									defaults.speed =  1500;
									defaults.duration = 5000;
									defaults.firstActionControlFlag = false;
									dynamics.pictureCount = 0;
									dynamics.slideShowFlag =  false;
									dynamics.progressCount = 1;
									dynamics.currentPicture = 0;					
									dynamics.pictureCount = 0;

								});
								
							});
							
						});
						
						$('.gallery-app-header-gallery-name').html(dynamics.galleryName);
						
						$('#gallery-app').css({width:dynamics.galleryWidth + 'px',height:(eval(dynamics.galleryHeight) + 34 + 100) + 'px'});
						$('#gallery-app').css({left:($(window).width() / 2) - (eval(dynamics.galleryWidth) / 2) + 'px',top:($(window).height() / 2) - (eval(dynamics.galleryHeight) / 2) + 'px'});
						
						//$(defaults.pictureContainer).html('<img src="images/galleries/' + dynamics.gallery + '/larges/' + pathArray[0] + '" />');
						
						$(image).load(function() {
							
							$('.gallery-app-picture-container-box').html('').append(image);								
							
						}).attr('src','images/galleries/' + dynamics.gallery + '/larges/' + pathArray[0] + '');						
						
						$('.gallery-app-header-progress-container').css({'float':'left',padding:'3px',width:dynamics.galleryWidth - 6 + 'px',height:'7px','background-color':'#000'});
						$('.gallery-app-header-progress-line').css({width:'0px',height:'1px','background-color':'#13b320'});
						
						$('.gallery-app-picture-container-description').css({'position':'absolute',height:'44px',width:dynamics.galleryWidth + 'px',left:'0px',top:dynamics.galleryHeight + 'px'});
						$('.gallery-app-picture-container-description-bg').css({'position':'absolute','top':'0px','left':'0px','background-color':'#000',height:'44px',width:dynamics.galleryWidth + 'px',opacity:0.5});
						$('.gallery-app-picture-container-description-text').html('[' + pathArray[eval(dynamics.currentPicture) + 1] + '] [' + (eval(dynamics.currentPicture) + 4) / 4 + '/' + dynamics.pictureCount + ']').css({'position':'absolute','top':'0px','left':'0px','padding':'5px',height:'34px','line-height':'34px','color':'#fff','font-size':'11px','font-family':'Tahoma, Geneva, sans-serif'});//'
						
						$('.gallery-app-thumb-container').css({padding:'3px',height:'68px',width:dynamics.galleryWidth - 6 + 'px','background-color':'#000','overflow':'hidden'});
						$('.gallery-app-thumb-container-thumbs').css({'position':'relative','top':'0px','left':'0px',width:(dynamics.pictureCount * 100) + (dynamics.pictureCount * 3) + 'px'});
						
						dynamics.currentPicture = 0;
						
						$('.gallery-app-thumb-container-thumbs').html('');
						
						for(i=-4; i < pathArray.length - 4; i++) {
							
							var pcxName = pathArray[i + 4];
							pcxName = pcxName.replace('.jpg', '_thumb.jpg');							

							$('.gallery-app-thumb-container-thumbs').append('<li class="gallery-app-thumb-li" index="' + (i + 4) + '" style="list-style-type:none;float:left;margin-right:3px;"><img src="images/galleries/' + dynamics.gallery + '/thumbs/' + pcxName + '" style="cursor:pointer;" /></li>');							
							
							i = i + 3;
							
						};
						
						$('.gallery-app-thumb-li').css({opacity:0.5});
						$('.gallery-app-thumb-li[index=' + dynamics.currentPicture + ']').css({opacity:1});
						
						$('.gallery-app-thumb-li').mouseover(function() {

							if (dynamics.currentPicture !== $(this).attr('index')) {

								$(this).stop().animate({opacity:1}, 300, "linear");
								
							};
							
						}).mouseout(function() {
							
							var id= $(this).attr('index');
							
							if (dynamics.currentPicture != id) {
								
								$(this).stop().animate({opacity:0.5}, 300, "linear");
								
							};							
							
						}).click(function() {
							
							if (!dynamics.actionControl) {
								
								dynamics.actionControl = true;
								$('.gallery-app-thumb-li[index=' + dynamics.currentPicture + ']').animate({opacity:0.5},300,"linear");
								$(this).animate({opacity:1},300,"linear");
							
								dynamics.currentPicture = $(this).attr('index');
								
								$('.gallery-app-picture-container-box').append('<div class="gallery-app-loading"><img src="images/gallery-app/loading.gif" /></div>');
								
								$('.gallery-app-loading').css({position:'absolute',left:dynamics.galleryWidth / 2 - 52 + 'px',top:dynamics.galleryHeight / 2 + 38 + 'px'})
								
								$(image).load(function() {

									$('.gallery-app-picture-container-box').html('').append(image);
									$('.gallery-app-picture-container-description-text').html('[' + pathArray[eval(dynamics.currentPicture) + 1] + '] [' + (eval(dynamics.currentPicture) + 4) / 4 + '/' + dynamics.pictureCount + ']');//'
									                       																
									dynamics.actionControl = false;
									
								}).attr('src','images/galleries/' + dynamics.gallery + '/larges/' + pathArray[dynamics.currentPicture] + '');									
								
							};
							
						});
						
						$('.gallery-up-btn-last').click(function() {
							
							var x =(dynamics.pictureCount * 4) - 4;
							$('.gallery-app-thumb-li[index=' + x + ']').click();
							
							
						});
						
						$('.gallery-up-btn-first').click(function() {
							
							var x = 0;
							$('.gallery-app-thumb-li[index=' + x + ']').click();
							
							
						});	
						
						$('body').keydown(function(event) {

							if (event.keyCode==27) {
								
								$('.gallery-app-header-btn-close').click();
								
							};
							
							if (event.keyCode==39) {
								
								$('.gallery-up-btn-next').click();
								
							};
							
							if (event.keyCode==37) {
								
								$('.gallery-up-btn-previous').click();
								
							};														
							
						});
						
						$('.gallery-up-btn-next').click(function() {
							
							var x = (dynamics.pictureCount * 4) - 4;
							
							if(dynamics.currentPicture < x) {
							
								x = (eval(dynamics.currentPicture) + 4);
								$('.gallery-app-thumb-li[index=' + x + ']').click();
								
							} else {
								
								$('.gallery-up-btn-first').click();
								
							};
							
							
						});		
						
						$('.gallery-up-btn-previous').click(function() {
							
							var x =(dynamics.pictureCount * 4);
							
							if(dynamics.currentPicture > 0) {
							
								x = (dynamics.currentPicture - 4);
								$('.gallery-app-thumb-li[index=' + x + ']').click();
								
							} else {
								
								$('.gallery-up-btn-last').click();
								
							};
							
							
						});		

						$('.gallery-up-btn-play').click(function() {												
						
							gallery.start();
						
						});
						
						$('.gallery-up-btn-stop').click(function() {												
						
							clearTimeout(timer);
							clearTimeout(timerx);
							defaults.slideShowFlag = false;	
						
						});						
						
						
						
						$('.gallery-app-thumb-container').mousemove(function(e) {
							
							var containerX = $('#gallery-app').css('left');
							var containerY = $('#gallery-app').css('top');

							containerX = containerX.replace('px','');
							containerY = containerY.replace('px','');						
							
							var mousePositionX = e.pageX - this.offsetLeft - containerX;
							var mousePositionY = e.pageY - this.offsetTop - containerY;							
							
							var containerWidth = $('.gallery-app-thumb-container-thumbs').width();
							
							if (containerWidth > dynamics.galleryWidth) {
							
								var a = (containerWidth - dynamics.galleryWidth) / dynamics.galleryWidth;
																			
								var b = 50 - mousePositionX * a;
								
								$('.gallery-app-thumb-container-thumbs').css({left:b});
								//$(defaults.thumbs).stop().animate({left:b}, 1500, "backout");
								
							};
						
							
						});
						
						$('.gallery-up-left-button-container').css({'position':'absolute',width:'79px',height:'78px',left:'-80px', top:(dynamics.galleryHeight / 2) + 35 + 'px','display':''});
						$('.gallery-up-right-button-container').css({'position':'absolute',width:'79px',height:'78px',left:dynamics.galleryWidth + 'px', top:(dynamics.galleryHeight / 2) + 35 + 'px','display':''});
						
						$('.gallery-up-btn-first,.gallery-up-btn-last,.gallery-up-btn-previous,.gallery-up-btn-next,.gallery-up-btn-stop,.gallery-up-btn-play').css({width:'39px',height:'31px','padding-top':'8px','line-height':'39px','text-align':'center','background-color':'#000','cursor':'pointer'});
						
						$('.gallery-up-btn-first,.gallery-up-btn-next,.gallery-up-btn-stop').css({float:'left'});
						$('.gallery-up-btn-last,.gallery-up-btn-previous,.gallery-up-btn-play').css({float:'right'});						
						
						/*$('*[hide=true]').stop().animate({opacity:0}, 300, "linear", function() {
	
							$('#gallery-app').css({height:(eval(dynamics.galleryHeight)) + 'px'});					
							$('*[hide=true]').hide();	
							
						});	*/					
						
					};
					
				});
				
			},
			
			start: function() {
							
				var nextSlide;
				var image = new Image();
				
				defaults.slideShowFlag = true;
				
				var duration = defaults.duration;
				
				if (!defaults.firstActionControlFlag) {
					
					defaults.firstActionControlFlag = true;
					timer = setTimeout(function(){gallery.getProgress();}, 500);
					
					//duration = 0;
					
				};
					
				$('.gallery-app-picture-container-box').delay(duration).animate({opacity:1}, defaults.speed, "linear",function() {
					
					$('.gallery-up-btn-next').click();
					
					if (dynamics.pictureCount > 1) {
						timer = setTimeout(function(){gallery.getProgress();}, 1);
					} else {
						$('#progress').hide();							
					}					
											
				});

				
			},			
			
			
			getProgress: function() {																		
					
				var totalTime = defaults.duration / 1000;
							
				var percent = (dynamics.progressCount * 100) / totalTime;
				
				var newWidth = Math.round(((dynamics.galleryWidth - 6) * percent) / 100);
				
				$('.gallery-app-header-progress-line').animate({width: newWidth + 'px'}, 999, "easeout", function() {
					
					dynamics.progressCount = dynamics.progressCount + 1;
					
					if (dynamics.progressCount !== (totalTime + 1)) {
						
						timerx = setTimeout(function(){gallery.getProgress();}, 1);
						gallery.start();
						
					} else {
						
						$('.gallery-app-header-progress-line').animate({width:'0px'}, 500, "easeout");
						dynamics.progressCount = 1;
						
					};
					
				});								
					
			
			}
			
		};	

		gallery.initialize();
		
	}
	
})(jQuery);

