var GALLERY_REQUEST_URL = '/static/vehicles/responses';

var gallery = {
	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);
			if(oSelectedItem[0] != null){
				oSelectedItem.find('.link').click();	
			}
		}else{
			aCurrentUrlVars =  getUrlVars(aCurrentUrl[0]);
			if(aCurrentUrlVars['item'] != null){
				oSelectedItem = $('#'+aCurrentUrlVars['item']);
				if(oSelectedItem[0] != null){
					oSelectedItem.find('.link').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');
			gallery.activateControls(oGallery, oItem);
			gallery.changeItemURL(oItem.attr('id'));
		}	
		
		displayLoading(oGallery);
		selectItem(oGallery, oItem);
		
		$.ajax({
			type: "GET",
			url: 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';
				}
				
				/*TRACKING*/
				//tracking.event.activate('trackingevent', {EventClass: PAGE_ABBR, Action: "ViewImage", Vehicle: VEHICLE_ABBR, Image: oItem.attr('id'), Section: section, Type: type});

				if(PAGE_ABBR == 'Accessories') {
					var sItemHeader = $('.viewer:visible .figure-box h3').text().replace(/\s/g, '');
					var link = oGallery.find('.viewer .icon-links .toyota a').attr('href');
					oGallery.find('.viewer .icon-links .toyota a').attr('href', link + '?WT.ac=VH'+VEHICLE_CODE+'AccessoriesPRC'+sItemHeader);
					var link = oGallery.find('.viewer .genuine a').attr('href');
					oGallery.find('.viewer .genuine a').attr('href', link + '?WT.ac=VH'+VEHICLE_CODE+'AccessoriesWCG'+sItemHeader);
				}
				
				if ($('body').hasClass('homepage') && $('body').hasClass('yaris')) {
					gallery.activateYarisBlock(oItem);
				}			
			}
		});			
	},
	loadFirstItem: function(oBlock){
		var oFirstItem = oBlock.find('.list .item').filter(":visible:first");
		if(oFirstItem[0] != null){
			gallery.loadItem(oFirstItem);
		}else{
			return false;
		}
	},
	loadLastItem: function(oBlock){
		var oLastItem = oBlock.find('.list .item').filter(":visible:last");
		if(oLastItem[0] != null){
			gallery.loadItem(oLastItem);
		}else{
			return false;
		}
	},
	activateGalleryTabs: function(){
		$('.gallery-header ul.tabs li').click(function(){
			var oCurrentTab = $(this);
			var oCurrentGallery = $('#'+oCurrentTab.attr('id').split('-')[1]);
			
			/* Selecting current tab */
			$('.gallery-header ul.tabs li').removeClass('current');
			oCurrentTab.addClass('current');
			
			/* Displaying current gallery */
			$('.gallery').hide();
			oCurrentGallery.show();
			
			if(oCurrentGallery.find('.block .current')[0] == null){
				gallery.loadFirstItem(oCurrentGallery.find('.block').filter(":visible:first"));
			}
			
			/*TRACKING*/
			var sTabTitle = oCurrentTab.find('a').text();
			switch(sTabTitle) {
			case 'Images':
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR + ' Gallery section', Type: 'Image'});
				break;
			case 'Videos':
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR + ' Gallery section', Type: 'Video'});
				break;
			case 'Video':
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR + ' Gallery section', Type: 'Video'});
				break;
			default:
				tracking.event.activate('trackingevent', {EventClass: "Gallery", Action: "ButtonClick", Vehicle: VEHICLE_ABBR + ' Gallery section', 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});
			/*TRACKING*/
			}
			
			/* Displaying current block */
			$('.gallery .block').hide();
			oCurrentBlock.show();
			if(oCurrentBlock.find('.current')[0] == null){
				gallery.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.prev();
			if(oPreviousItem[0] != null){
				gallery.loadItem(oPreviousItem);
			}else{
				gallery.loadLastItem(oItem.parents('.block'));
			}
		});
		oControls.find('.next').unbind('click').click(function(){
			var oNextItem = oItem.next();
			if(oNextItem[0] != null){
				gallery.loadItem(oNextItem);
			}else{
				gallery.loadFirstItem(oItem.parents('.block'));
			}
		});
	},
	activateThumbnails: function(){	
		$('.gallery .block .list .item .link').click(function(){
			var oCurrentItem = $(this).parents('.item');
			gallery.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");
		gallery.activateControls(oItem.parents('.gallery'), oItem);
	},
	activateYarisBlock: function(oItem){
		/*var oGallery = oItem.parents('.gallery');
		if(oItem.attr('id') == 'images-tab-1-yarisblock'){
			oGallery.find('.media-box').css('height','528px');
			oGallery.find('.viewer').css('height','528px');
			$('#page-container').css('background-image','url(static/vehicles/yaris/images/bg-page-homepage-block.gif)');
		}else{
			oGallery.find('.media-box').css('height','375px');
			oGallery.find('.viewer').css('height','375px');
			$('#page-container').css('background-image','url(static/vehicles/yaris/images/bg-page-homepage.gif)');
		}	*/			
	},
	activateAccordion: function(){
		$('.gallery .viewer .accordion-box').accordion({
			header: 'h4',
			autoHeight: true,
			clearStyle: true
		});
		
		$('.gallery .viewer .accordion-box h4').click(function() {
			if(!$(this).hasClass('current')) {
				var title = $(this).text();
				/*TRACKING*/
				tracking.event.activate('trackingevent', {EventClass:"Accessories",Action:"Expand",Vehicle: VEHICLE_ABBR,Heading: title});
			}
			$('.gallery .viewer .accordion-box h4').removeClass('current');
			$(this).addClass('current');
		});
		
	},
	activateOverlays: function(){
		var sAction = 'not specified';
		
		function showBlock(oBlock){
			oBlock.find('.opened a').click(function(){
				hideBlock(oBlock);
				return false;
			});

			/*tracking*/
			var sItemHeader = $('.viewer:visible .figure-box h3').text();
			tracking.event.activate('trackingevent', {EventClass: "Accessories", Action: sAction, Vehicle: vehicle, Item: sItemHeader});
			
			oBlock.find('.opened').show().click(function(){
				return false;
			});
			$('body').click(function(){
				hideBlock(oBlock);
				return false;
			});
		}
		
		function hideBlock(oBlock){
			oBlock.find('.opened a').unbind('click');
			oBlock.find('.opened').hide().unbind('click');
			$('body').unbind('click');
		}	
		
		$('.gallery .info .applicability .closed a').live('click', function() {
			sAction = 'Applicability';
			showBlock($(this).parents('.applicability'));
			return false;
		});
		
		$('.gallery .figure-box .disclaimers .closed a').live('click', function() {
			sAction = 'Disclaimers';
			showBlock($(this).parents('.disclaimers'));
			return false;
		});
	},
	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;
		});
	}
}
