/*
	JQUERY  plugIn
	Fire after JQuery
	76Design.com
*/
$(document).ready(function()
{
	//GLOBALS
	var slideSpeed = 500;	
	var opDisabl = 0.3;	
    
	$('.scroll-buttons').css('display','block'); 
	$('.scroll-buttons .scroll-prev').css('opacity',opDisabl);		
	//$('.gallWrapper ul li').hover(function(){$(this).css('opacity', 0.7);},function(){$(this).css('opacity', 1);}); /// EFFECT	
	////END GLOBALS

	/// horizon scroll only
	var elems = $(".scroll-horizon");
	
	//LOOP THROUGHT ALL => to make up width!
	for(var i = 0; i < elems.length; i++)
	{
		var elem = $(elems).eq(i).find('.gallWrapper:first').children().eq(0);	
		var unitsNum = $(elem).children().length;
		var unitWidth = Number($(elem).attr("id").split('/')[1]);
		if($(elem).hasClass('halfWidth'))
		{
			unitsNum = Math.ceil(unitsNum / 2);
		}		
		var totalElemWidth = unitWidth * unitsNum;
		$(elem).css('width', totalElemWidth +'px');
	}	
	////END LOOP

///////////////HORIZON SCROLL BUTTONS	
	
	///////// PREVIOUS BUTTONS
	$(".scroll-horizon .scroll-buttons .scroll-prev").click(function()
	{	
		var papa = 	$(this).parent().parent();							
		var buttons = $(papa).find('.scroll-buttons');		
		$(buttons).find('.scroll-next:first').css('opacity',1); // SHOW THE NEXT BUTTON		
		var elem = $(papa).find('.gallWrapper:first').children().eq(0);		
		
		//$(elem).stop();		
		
		var elemW = $(elem).width();		
		var chldrn =  $(elem).children().length;		
		///IF class => 	halfWidth (double stack) devide by 2			
		if($(elem).hasClass('halfWidth'))
		{
			chldrn = Math.ceil(chldrn / 2);	
		}	
		var childrNum = Number($(elem).attr("id").split('/')[0]);		 
		var unitW = (elemW / chldrn) * childrNum;		
		var currP = $(elem).css('left').split('px')[0];		
		var nextP =  Math.abs((Math.floor((unitW - Math.abs(currP)) / unitW) * unitW));
		
		//// IF NOT AT THE BGINNING 
		if(currP < 0 - unitW)
		{											 											  
			$(elem).animate({left: 0 - nextP+'px'}, slideSpeed, function()
			{				
				/// CALLBACK for the BULLETS					
				handleBulletsMenue($(papa).find('.bullet-menu:first'), nextP / unitW); /// You can FIND this FUNC below				
				/////// CALLBACK for ALPHA
				handleAlpha(elem, $(papa).find('.alpha-legend:first'), nextP, elemW, chldrn);								
			}); 
 		}
 		else
 		{
 			$(buttons).find('.scroll-prev:first').css('opacity',opDisabl); /// HIDE THE PREV BUTTON
 		
  			$(elem).animate({left: '0px'}, slideSpeed, function()
  			{
  				/// CALLBACK for the BULLETS
  				handleBulletsMenue($(papa).find('.bullet-menu:first'), 0);  				
  				/////// CALLBACK for ALPHA
				handleAlpha(elem, $(papa).find('.alpha-legend:first'), 0, elemW, chldrn);	 			 		
  			});  		
		} 
		return false; /// RETURN FALSE is for A tag => DON"T REFRESH the PAGE!
	});
	////////////END PREVIOUS BUTTONS ACTION


	//////////NEXT BUTTONS
	$(".scroll-horizon .scroll-buttons .scroll-next").click(function()
	{	
		var papa = 	$(this).parent().parent();							
		var buttons = $(papa).find('.scroll-buttons');		
		$(buttons).find('.scroll-prev:first').css('opacity',1); // SHOW THE PREV BUTTON												  
		var elem = $(papa).find('.gallWrapper:first').children().eq(0); // ANIMATED ITEMS WRAPPER
				
		$(elem).stop();
		
		var elemW = $(elem).width(); /// WIDTH		
		var chldrn =  $(elem).children().length;
				
		///IF class => 	halfWidth (double stack) devide by 2										 
		if($(elem).hasClass('halfWidth'))
		{
			chldrn = Math.ceil(chldrn / 2);
		};	
		 
		var childrNum = Number($(elem).attr("id").split('/')[0]);		
		var unitW = (elemW / chldrn) * childrNum;		
		var currP = $(elem).css('left').split('px')[0];		 
		var nextP = (Math.ceil((unitW + Math.abs(currP)) / unitW) * unitW); 
		  
		if(nextP < elemW - unitW)
		{		
			$(elem).animate({left: 0-nextP+'px'}, slideSpeed, function()
			{		 											   
				/// CALLBACK for the BULLETS					
				handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), nextP / unitW); /// You can FIND this FUNC below				
				/////// CALLBACK for ALPHA
				handleAlpha(elem, $(this).parent().parent().find('.alpha-legend:first'), nextP, elemW, chldrn);		
			});	
		}
		else
		{
			$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',opDisabl);
		
			$(elem).animate({left: 0-(elemW - unitW)+'px'}, slideSpeed, function()
			{		
				handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), (elemW / unitW) - 1);				
				/////// CALLBACK for ALPHA
				handleAlpha(elem, $(this).parent().parent().find('.alpha-legend:first'), elemW-unitW, elemW, chldrn);
			});
		}
		return false; /// RETURN FALSE is for A tag => DON"T REFRESH the PAGE!
	});
	///////// END NEXT BUTTONS
/// END HORIZON GALLERIES
						 
////////////////////////////////////// VERTICAL SCROLL GALLERIES >>>>>>>>>>>>>>>>>>>>>>>>>> NOT FINISHED !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	
	///  VERTICAL scroll only
	var elems = $(".scroll-vertical");
	
	////////LOOP THROUGH ALL TO MAKE UP HIGHT
	for(var i = 0; i < elems.length; i++)
	{
		var elem = $(elems).eq(i).find('.gallWrapper:first').children().eq(0);				
		var unitsNum = $(elem).children().length;		
		var unitHeight = Number($(elem).attr("id").split('/')[1]);
				
		if($(elem).hasClass('halfWidth'))
		{
			unitsNum = Math.ceil(unitsNum / 2);			
		}
		
		var totalElemHeight = unitHeight * unitsNum;		
		$(elem).css('height', totalElemHeight +'px');
	}				
	////END LOOP
	
	
	////////// VERT PREVIUS BUTTON						 
	$(".scroll-vertical .scroll-buttons .scroll-prev").click(function()
	{ 
		$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',1); // SHOW THE NEXT BUTTON		 
		var elem = $(this).parent().parent().find('.gallWrapper:first').children().eq(0);		  
		var elemH = $(elem).height();		  
		var chldrn =  $(elem).children().length;
		
		///IF class => 	halfWidth (double stack) devide by 2			
		if($(elem).hasClass('halfHeight'))
		{
			chldrn = Math.ceil(chldrn / 2);	
		}
		
		var childrNum = Number($(elem).attr("id").split('/')[0]);		
		var unitH = (elemH / chldrn) * childrNum;		  
		var currP = $(elem).css('top').split('px')[0];		  
		var nextP =  Math.abs((Math.floor((unitH - Math.abs(currP)) / unitH) * unitH)); 
		
		if(currP < 0 - unitH)
		{											 											  
			$(elem).animate({top: 0 - nextP+'px'}, slideSpeed, function()
			{				
				/// CALLBACK for the BULLETS
				if($(elem).parent().parent().find('.bullet-menu'))
				{				
					handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), nextP / unitH); /// You can FIND this FUNC below								 			
				} 
			});						 
		}
		else
		{
			$(this).parent().parent().find('.scroll-buttons .scroll-prev').css('opacity',opDisabl);
			
		  	$(elem).animate({top: '0px'}, slideSpeed, function()
		  	{
  				/// CALLBACK for the BULLETS
  				if($(elem).parent().parent().find('.bullet-menu'))
  				{	 		
	 				handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), 0);
	 			}  		
  			});		  		
		}
		return false; /// RETURN FALSE is for A tag => DON"T REFRESH the PAGE!
	});
	//////////// END VRT PREV BUTTON
	
	
	
	////////// VERT NEXT BUTTON		
	$(".scroll-vertical .scroll-buttons .scroll-next").click(function()
	{	
		$(this).parent().parent().find('.scroll-buttons .scroll-prev').css('opacity',1); // SHOW THE PREV BUTTON																				  
		var elem = $(this).parent().parent().find('.gallWrapper:first').children().eq(0); // ANIMATED ITEMS WRAPPER		
		var elemH = $(elem).height();		
		var chldrn =  $(elem).children().length
		
		///IF class => 	halfWidth (double stack) devide by 2										 
		if($(elem).hasClass('halfHeight'))
		{
			chldrn = Math.ceil(chldrn / 2);
		}
		var childrNum = Number($(elem).attr("id").split('/')[0]);		
		var unitH = (elemH / chldrn) * childrNum;		
		var currP = $(elem).css('top').split('px')[0];		
		var nextP = (Math.ceil((unitH + Math.abs(currP)) / unitH) * unitH); 
		
		if(nextP < elemH - unitH)
		{
		  	$(elem).animate({top: 0-nextP+'px'}, slideSpeed, function()
			{		 											   
				if($(elem).parent().parent().find('.bullet-menu'))
				{
					/// CALLBACK for the BULLETS
					handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), nextP / unitH);/// You can FIND this FUNC below	
				}
			});
		}
		else
		{
			$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',opDisabl);
										
			$(elem).animate({top: 0-(elemH - unitH)+'px'}, slideSpeed, function()
			{		
				if($(elem).parent().parent().find('.bullet-menu'))
				{
					handleBulletsMenue($(elem).parent().parent().find('.bullet-menu:first'), (elemH / unitH) - 1);											 			
				}
			});
		}
		return false; /// RETURN FALSE is for A tag => DON"T REFRESH the PAGE!
	});
///////// END VERT NEXT BUTTONS		

////////////// AND CORE
	
////////////// ADDONS !!!!!!!!!!!!!!!!!!!!!!!!!
	
	///// HANDLE BULETS							
	function handleBulletsMenue(elem,num)
	{
		if(elem.length != 0)
		{
			$(elem).find('.selected:first').removeClass('selected');
			$(elem).children().eq(num).addClass('selected');
		}								
	}
	
	///// BULLETS						
	$('.scroll-horizon .bullet-menu a').click(function()
	{										
		if($(this).attr('class') != 'selected')
		{		
			var num  = Number($(this).html());				
			var elem = $(this).parent().parent().find('.gallWrapper:first .unitsWrapper:first');				
			var unitsNum = Number($(this).parent().parent().find('.gallWrapper:first .unitsWrapper:first').attr('id').split('/')[1]);				
			var chNum = $(elem).children().length-1;				
			$(elem).animate({left: 0 - (unitsNum * num) + 'px'}, slideSpeed);				
			$(this).parent().find('.selected:first').removeClass('selected');				
			$(this).addClass('selected');
							
			if(num <= 0 && chNum !=0)
			{
				$(this).parent().parent().find('.scroll-buttons .scroll-prev').css('opacity',opDisabl);				
				$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',1);
				
			}
			else if (num >= chNum || chNum == 0)
			{
				$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',opDisabl);			
				$(this).parent().parent().find('.scroll-buttons .scroll-prev').css('opacity',1);
			}
			else
			{
				$(this).parent().parent().find('.scroll-buttons .scroll-prev').css('opacity',1);				
				$(this).parent().parent().find('.scroll-buttons .scroll-next').css('opacity',1);
			}
		}
		return false; /// RETURN FALSE is for A tag => DON"T REFRESH the PAGE!
	})	
	////// END BULLETS						
	

	//////////// ALPHAS
	///when the alpha letter clicked we going to move current galery to the corresponding letter
	$('.alpha-legend LI A').click(function()
	{
		var letter = $(this).html();		
		var alphaPar = $(this).parent().parent();		
				
		var elemMain = $(alphaPar).parent();		
		var elemAnim = $(elemMain).find('.gallWrapper:first').children().eq(0);		
		var displayChNum = $(elemAnim).attr('id').split('/')[0];		
		var chNum = $(elemAnim).children().length - 1;
		
		for(var i = 0; i < $(elemAnim).children().length; i++)
		{	
			if($(elemAnim).children().eq(i).attr('title') == letter )
			{	
				$(elemAnim).stop();
				// moving gallery
				if(i >= $(elemAnim).children().length - displayChNum + 1){
					$(elemAnim).animate({left: 0-(($(elemAnim).children().length - displayChNum)*165)+'px'}, slideSpeed);
				}else{
					$(elemAnim).animate({left: 0-(i*165)+'px'}, slideSpeed);
				}
				//select, deselect the letter
				$(alphaPar).find('LI A.selected:first').removeClass('selected');		
				$(this).toggleClass('selected');
				
				//don't forget to change the state of arrows
				if(i <= 0 && chNum != 0){
					 $(elemMain).find('.scroll-buttons .scroll-prev:first').css('opacity',opDisabl);
					 $(elemMain).find('.scroll-buttons .scroll-next').css('opacity',1);
				}else if (i >= chNum || chNum == 0){
					 $(elemMain).find('.scroll-buttons .scroll-next').css('opacity',opDisabl);
					 $(elemMain).find('.scroll-buttons .scroll-prev').css('opacity',1);
				}else{
					 $(elemMain).find('.scroll-buttons .scroll-prev').css('opacity',1);
					 $(elemMain).find('.scroll-buttons  .scroll-next').css('opacity',1);
				}
				break;
			}
		}
		return false;
	})
	
	////////// HANDLE ALPHAS
	//when the arrow pressed this func will fire and switch the letters to the current one
	function handleAlpha(elem, alphaElem, nextP, elemW, chldrn)
	{
		if(alphaElem.length != 0)
		{
			var letter = $(elem).children().eq(Math.abs(nextP)/(elemW / chldrn)).attr('title');
		
		 	$(alphaElem).children().each(function(i)
		 	{
		 		$(this).children().eq(0).removeClass('selected');
		 		
		 		if($(this).children().eq(0).html() == letter)
		 		{
		 			$(this).children().eq(0).addClass('selected');
		 		}
		 	});			
		}
	}			 
});










