/**
 * @author Justin Evans
 * Cyberworks Media Group
 */

// extends mootools-1.11.js

window.addEvent('domready', function() {
	// AJAX/DOM functions
	
	// Initialize custom scroll bars
	// usage with options: 
	// newScrollbar({ScrollBarContainer, ScrollBarHandle, ContainerDiv, ContentDiv});
	
	// Product Detail thumb scroller
	var ProductThumbScroller = new Scrollbar({
		objScroller: $('productThumbScroller'), 
		objHandle: $('productThumbHandle'), 
		divUp: 'productScrollUp',
		divDown: 'productScrollDown',
		objContainer: $('productImagePagerContainer'), 
		objContent: $('productImagePager')
	});
	
	// Initialize slide togglers
	
	var StoreSlideTogglerTop = new SlideToggler({
		objToggler: $('heading1'), // required
		objToggleArea: $('shopLeftNav1'), // required
		objArrow: $('arrow1'),
		strArrowUp: 'icon_leftnav_arrow_up.gif',
		strArrowDown: 'icon_leftnav_arrow_down.gif'
		// optional - boolHideList: true/false
	});
	
	var StoreSlideTogglerBottom = new SlideToggler({
		objToggler: $('heading2'),
		objToggleArea: $('shopLeftNav2'),
		objArrow: $('arrow2'),
		strArrowUp: 'icon_leftnav_arrow_up.gif',
		strArrowDown: 'icon_leftnav_arrow_down.gif'
	});

	var StoreSortByDropDown = new SlideToggler({
		objToggler: $('sortBy'),
		objToggleArea: $('sortByList'),
		boolHideList: true
	});
	
	var StoreItemsPerPageDropDown = new SlideToggler({
		objToggler: $('itemsPerPage'),
		objToggleArea: $('itemsPerPageList'),
		boolHideList: true
	})
});

var Scrollbar = new Class({
	options: {
		objScroller: null,
		objHandle: null,
		divUp: '',
		divDown: '',
		objContainer: null,
		objContent: null
	},
	initialize: function(options)
	{
		this.setOptions(options);
		this.createScroller(
			this.options.objScroller,
			this.options.objHandle,
			this.options.divUp,
			this.options.divDown,
			this.options.objContainer,
			this.options.objContent
		);
	},
	createScroller: function(objScroller, objHandle, divUp, divDown, objContainer, objContent)
	{
	    if(objScroller && objHandle && divUp !='' && divDown != '' && objContainer && objContent)
	    {
			// retrieve container area height
			var containerHeight = objContainer.offsetHeight;
			if(containerHeight <= parseInt(objContent.offsetHeight))
			{
		        // attach Slider FX to scroller elements
		        new MooScroller(objContainer, objHandle, {
					mode: 'vertical', 
					scrollLinks: {
						forward: divDown, 
						back: divUp
					}
				});
			}
			else
			{
				objScroller.style.display = 'none';
				objHandle.style.display = 'none';
			}
		}
	}
});

Scrollbar.implement(new Options, new Events);

// Element slide toggler class

var SlideToggler = new Class({
	options: {
		objToggler: null,
		objToggleArea: null,
		objArrow: null,
		strArrowUp: '',
		strArrowDown: '',
		boolHideList: false
	},
	initialize: function(options)
	{
		this.setOptions(options);
		this.createSlideToggler(
			this.options.objToggler,
			this.options.objToggleArea,
			this.options.objArrow,
			this.options.strArrowUp,
			this.options.strArrowDown,
			this.options.boolHideList
		);
	},
	createSlideToggler: function(objToggler, objToggleArea, objArrow, strArrowUp, strArrowDown, boolHideList)
	{
		if(objToggler && objToggleArea)
		{
			var objSlide = new Fx.Slide(objToggleArea);
			if(boolHideList){ objSlide.hide(); }
			var strArrowPath = "";
			var strImgPath = "";
			var arrImgPath = new Array();
			
			if(objArrow)
			{
				strImgPath = objArrow.src;
				arrImgPath = strImgPath.split('/');
				
				for(var i=0; i<(arrImgPath.length - 1); i++)
				{
					strArrowPath += arrImgPath[i] + "/"
				}
			}
			
			objToggler.addEvent('click', function(e){
				if(objArrow)
				{
					if(objArrow.src==strArrowPath + strArrowDown)
					{
						objArrow.src=strArrowPath + strArrowUp;
					}
					else
					{
						objArrow.src=strArrowPath + strArrowDown;
					}
				}
				
				e = new Event(e);
				objSlide.toggle();
				e.stop();
			});
		}
	}
});

SlideToggler.implement(new Options, new Events);

var ImageTransition = new Class({
	options: {
		objControl: null,
		objThumb: null,
		objDetail: null,
		strNewImage: '',
		objStatus: null
	},
	initialize: function(options)
	{
		this.setOptions(options);
		this.StartTransition(
			this.options.objControl,
			this.options.objThumb,
			this.options.objDetail,
			this.options.strNewImage,
			this.options.objStatus
		);
	},
	StartTransition: function(objControl, objThumb, objDetail, strNewImage, objStatus){
		if(objControl && objThumb && objDetail && strNewImage != '')
		{
			strImgPath = objDetail.src;
			arrImgPath = strImgPath.split('/');
			strImgPath = "";
			
			for(var i=0; i<(arrImgPath.length - 1); i++)
			{
				strImgPath += arrImgPath[i] + "/"
			}
			var arrImages = [strImgPath + strNewImage];
			
			objControl.addEvent('click', function(e){
				// set classes
				
				// first find objects with "current" class
				$$('#productImagePager img.current')[0].className = '';
				$$('#productImagePager div.productThumbLeftCurrent')[0].className = 'productThumbLeft';
				
				// now set the current classes
				objThumb.className = "current";
				objStatus.className = "productThumbLeftCurrent";
				
				// Load new image
				new Asset.images(arrImages, {
					onComplete: function(){
						// create new Fx
						var fadeFx = new Fx.Style(objDetail.id, 'opacity', {
							duration: 200, 
							transition: Fx.Transitions.Quart.easeInOut,
							onComplete: function(){objDetail.src = strImgPath + strNewImage;}
						});
						
						// fade out
						fadeFx.start(1,0);
						// fade in
						fadeFx.start.pass([0,1], fadeFx).delay(500);
					}
				});
			});
		}
	}
});

ImageTransition.implement(new Options, new Events);

var CachedImages = new Class({
	options: {
		arrImages: ''
	},
	initialize: function(options){
		this.setOptions(options);
		this.CachedImages(this.options.arrImages);
	},
	CachedImages: function(arrImages){
		if(arrImages.length > 0)
		{
			// Preload images
			new Asset.images(arrImages, {

			});
		}
	}
});

CachedImages.implement(new Options, new Events);

window.onload = function()
{
	// initialization functions
	var arrImages = new Array(
    /*
		"../images/navigation/nav_aboutus_on.gif",
		"../images/navigation/nav_atriumevents_on.gif",
		"../images/navigation/nav_contactus_on.gif",
		"../images/navigation/nav_customerservice_on.gif",
		"../images/navigation/nav_mediacoverage_on.gif",
		"../images/navigation/nav_museum_on.gif",
		"../images/navigation/nav_newsandtravels_on.gif",
		"../images/navigation/nav_store_on.gif",
		"../images/icons/icon_leftnav_arrow_up.gif",
		"../images/bg_product_thumb_arrow.gif"
    */
	);
	
	new CachedImages({ arrImages: arrImages });
}
