var MEDIA_GALLERY_REQUEST_URL = '/service/widgets/mediagalleries/item';

$(function(){
	if ($('body').hasClass('media-gallery')) {
		mediaGallery.activateGalleryTabs();
		mediaGallery.activateFirstItem();
		mediaGallery.activateThumbnails();
		mediaGallery.activateItemDeepLinking();
	}
});

var mediaGallery = {
	changeItemURL: function(sItemId){
		var sCurrentUrl = location.href;
		var aCurrentUrlHash = sCurrentUrl.split('#');		
		location.href = aCurrentUrlHash[0]+'#item-'+sItemId;	
	},	
	activateItemDeepLinking: function(){
		var sCurrentUrl = location.href;
		var aCurrentUrl = sCurrentUrl.split('#');

		function getUrlVars(sUrl){
			var vars = [];
			var hash = '';
			var hashes = sUrl.slice(sUrl.indexOf('?') + 1).split('&');
			for(var i = 0; i < hashes.length; i++){
				hash = hashes[i].split('=');
				vars.push(hash[0]);
				vars[hash[0]] = hash[1];
			}
			return vars;
		}		
		
		if((aCurrentUrl[1] != null) && (aCurrentUrl[1] != '')){
			var sSelectedItem = aCurrentUrl[1].replace("item-", "");
			oSelectedItem = $('#'+sSelectedItem).find('.item');
			if(oSelectedItem[0] != null){
				oSelectedItem.find('.link').click();	
			} else {
				oSelectedGallery = $('#tab-'+aCurrentUrl[1]);
				if(oSelectedGallery[0] != null){
					oCurrentBlock = oSelectedGallery.parents('li').click();
				}				
			}
		}
	},		
	loadItem: function(oItem){
		var oGallery = oItem.parents('.gallery');
		var aItemId = oItem.attr('id').split('-');
				
		function displayLoading(oGallery){
			oGallery.find('.viewer').html('<div class="text-box"><img src="/static/global/images/toyota-loader.gif" width="100" height="100"></div>');
			$.scrollTo($('body'));
		}		
		function displayError(oGallery){
			oGallery.find('.viewer').html('<div class="text-box">Server error. Please try again.</div>');
			$.scrollTo($('body'));
		}	
		function selectItem(oGallery, oItem){
			$('.gallery .block .list .item').removeClass('current');
			oItem.addClass('current');
			mediaGallery.activateControls(oGallery, oItem);
			mediaGallery.changeItemURL(oItem.parents('.item-id').attr('id'));
		}	
		
		displayLoading(oGallery);
		selectItem(oGallery, oItem);
		
		$.ajax({
			type: "GET",
			url: MEDIA_GALLERY_REQUEST_URL+'/'+aItemId[0]+'/'+aItemId[3]+'.html',
			error: function(data, textStatus, errorThrown) {
				displayError(oGallery);
			},
			success: function(data){
				oGallery.find('.viewer').html(data);
				video.elementSearch();		

				var section = $('.gallery .tabs li.current a').text();
				if(!section) {
					section = $('.gallery-header .tabs li.current a').text();
				}
				if(!section) {
					section = 'unspecified section';
				}
				
				var type = 'Image';
				if($('.gallery-header .tabs li.current a').text() == 'Videos') {
					type = 'Video';
				}
						
			}
		});												
	},
	loadFirstItem: function(oBlock){
		var oFirstItem = oBlock.find('.list .item').filter(":visible:first");
		if(oFirstItem[0] != null){
			oFirstItem.find('.link').click();
		}else{
			return false;
		}
	},
	loadLastItem: function(oBlock){
		var oLastItem = oBlock.find('.list .item').filter(":visible:last");
		if(oLastItem[0] != null){
			oLastItem.find('.link').click();
		}else{
			return false;
		}
	},
	activateGalleryTabs: function(){
		$('.gallery-header ul.tabs li').click(function(){
			var oCurrentTab = $(this);
			var oCurrentGallery = $('#'+oCurrentTab.attr('id').replace('tab-', ''));
			
			/* Selecting current tab */
			$('.gallery-header ul.tabs li').removeClass('current');
			oCurrentTab.addClass('current');
			
			/* Displaying current gallery */
			$('.gallery').hide();
			oCurrentGallery.show();
			
			var oCurrentBlock = oCurrentGallery.find('.block').filter(':visible:first');
			if(oCurrentBlock[0] != null){
				mediaGallery.loadFirstItem(oCurrentBlock);
			}
			
			/*TRACKING*/
			var sTabTitle = oCurrentTab.find('a').text();
	
			switch(sTabTitle) {
			case 'Images':
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR, Type: 'Image'});
				break;
			case 'Videos':
			case 'Video':
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR, Type: 'Video'});
				break;
			default:
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR, Type: sTabTitle});
				break;
			}
			
			return false;
		}); 		
	},
	activatePageTabs: function(){
		var sCurrentUrl = location.href;
		var aCurrentUrl = sCurrentUrl.split('#');
		
		$('.page-header ul.tabs li').click(function(){
			var oCurrentTab = $(this);
			var sCurrentTab = oCurrentTab.attr('id').split('-')[1];
			var oCurrentPage = $('#'+sCurrentTab);
			
			/* Selecting current tab */
			$('.page-header ul.tabs li').removeClass('current');
			oCurrentTab.addClass('current');
			
			/* Displaying current gallery */
			$('.page').hide();
			oCurrentPage.show();
			$.scrollTo($('body'));

			
			/* Changing URL */
			location.href = aCurrentUrl[0]+'#block-'+sCurrentTab;
			
			return false;
		}); 
		
		/* Activating deep linking */
		if(aCurrentUrl[1] != null){
			var sSelectedTab = aCurrentUrl[1].split('-')[1];
			if(sSelectedTab != null){
			var oSelectedTab = $('#tab-'+sSelectedTab);
				if(oSelectedTab[0] != null){
					oSelectedTab.click();
				}
			}
		}
	},
	activateTabs : function(){
		$('.gallery ul.tabs li').click(function(){
			var oCurrentTab = $(this);
			var oCurrentBlock = $('#'+oCurrentTab.attr('id')+'-block');
			
			/* Selecting current tab */
			$('.gallery ul.tabs li').removeClass('current');
			oCurrentTab.addClass('current');
			
			var sCategory = oCurrentTab.find('a').text();
			
			if($('body').hasClass('accessories')) {
			/*TRACKING*/
				tracking.event.activate('trackingevent', {EventClass:"Accessories", Action:"Category", Vehicle: VEHICLE_CODE, Category: sCategory});
			}
			
			/* Displaying current block */
			$('.gallery .block').hide();
			oCurrentBlock.show();
			if(oCurrentBlock.find('.current')[0] == null){
				mediaGallery.loadFirstItem(oCurrentBlock);
			}
			return false;
		}); 
	},
	activateControls: function(oGallery, oItem){
		var oControls = oGallery.find('.controls');
		oControls.show();
		oControls.find('.previous').unbind('click').click(function(){
			var oPreviousItem = oItem.parents('.item-id').prev();
			if(oPreviousItem[0] != null){
				mediaGallery.loadItem(oPreviousItem.find('.item'));
			}else{
				mediaGallery.loadLastItem(oItem.parents('.block'));
			}
		});
		oControls.find('.next').unbind('click').click(function(){
			var oNextItem = oItem.parents('.item-id').next();
			if(oNextItem[0] != null){
				mediaGallery.loadItem(oNextItem.find('.item'));
			}else{
				mediaGallery.loadFirstItem(oItem.parents('.block'));
			}
		});
	},
	activateThumbnails: function(){	
		$('.gallery .block .list .item .link').click(function(){
			var oCurrentItem = $(this).parents('.item');
			mediaGallery.loadItem(oCurrentItem);
			
			if(oCurrentItem.parents('.gallery').filter(':visible')[0] == null){
				var sCurrentGalleryTab = 'tab-'+oCurrentItem.parents('.gallery').attr('id');
				$('#'+sCurrentGalleryTab).click();
			}
			
			if(oCurrentItem.parents('.block').filter(':visible')[0] == null){
				var sCurrentBlock = oCurrentItem.parents('.block').attr('id');
				var sCurrentTab = sCurrentBlock.replace('-block','');
				$('#'+sCurrentTab).click();
			}
			
			return false;
		});
	},
	activateFirstItem: function(){
		var oItem= $('.gallery .block .list .current').filter(":visible:first");
		mediaGallery.activateControls(oItem.parents('.gallery'), oItem);
	},
	activateSlideshow: function(){
		$('.gallery .media-box .slideshow-controls ul li').live('click', function() {
			var oThumbnail = $(this);
			var aThumbnailId = oThumbnail.attr('id').split('-');
			$('.gallery .media-box .slideshow-controls ul li').removeClass('current');
			oThumbnail.addClass('current');
			
			oThumbnail.parents('.media-box').find('.slideshow img').removeClass('current');
			$('#'+aThumbnailId[1]+'-'+aThumbnailId[2]).addClass('current');
			
			return false;
		});
	}
}
