﻿// Check if jquery is loaded, if not load jquery
if (typeof jQuery == 'undefined') 
{ 
	var head = document.getElementsByTagName("head")[0];
	script = document.createElement('script');
	script.id = 'jQuery';
	script.type = 'text/javascript';
	script.src = '/js/libs/jquery-1.5.1.min.js';
	head.appendChild(script);
}

function position(_pos)
{
	return _pos;
}

function promoted(_promoted)
{
	return _promoted;
}

/* Start of to be moved to page source */
Vn.Account 							= new Object();
Vn.Account.Main 					= 'UA-6532569-1';
Vn.Account.Destination1 			= 'UA-26309339-1';
Vn.Account.Destination2 			= 'UA-26297582-1';

Vn.PageTypeId 						= new Object();
Vn.PageTypeId.Map 					= '91'; // MapFullScreen
Vn.PageTypeId.ExternalProvider 		= '23'; // External provider of content
Vn.PageTypeId.Product	 			= '69'; // Product page
Vn.PageTypeId.Search 				= '10'; // Search page
Vn.PageTypeId.StandardArticle 		= '6'; // Standard article  page
Vn.PageTypeId.Story 				= '5'; // Story page
Vn.PageTypeId.SponsorArticle		= '16'; // Sponsor article page
Vn.PageTypeId.CorporateArticle 		= '15'; // Corporate article page
Vn.PageTypeId.CategoryOverview 		= '37'; // Category overview page
Vn.PageTypeId.Frontpage 			= '28'; // Front page
Vn.PageTypeId.Newsletter 			= '39'; // Newsletter page
Vn.PageTypeId.Listing 				= '19'; // Directory page
Vn.PageTypeId.ProductDescription 	= '38'; // Product description page
Vn.PageTypeId.Iframe 				= '29'; // Iframe page

Vn.Page.Owner 						= 0;


if(jQuery('meta[name="DCSext.parentid"]').length)
{
	Vn.Page.Owner = parseInt(jQuery('meta[name="DCSext.parentid"]').attr('content'));
}
/* End of to be moved to page source */

vnTracking = new VnTracking();

function VnTracking()
{
	// #1# Attach tracking to elements
	this.TrackExitClick 			= TrackExitClick;
	this.TrackToolbarClick 			= TrackToolbarClick;
	this.TrackCountryDropdownClick 	= TrackCountryDropdownClick;
	this.TrackSmallMapClick 		= TrackSmallMapClick;
	this.TrackChangeFontClick 		= TrackChangeFontClick;
	this.TrackPrintPageClick 		= TrackPrintPageClick;
	this.TrackSendToFriendClick 	= TrackSendToFriendClick;
	this.TrackSocialBookmarkClick 	= TrackSocialBookmarkClick;
	this.TrackArticleOpenCloseClick = TrackArticleOpenCloseClick;
	this.TrackNewsletterSubscribe 	= TrackNewsletterSubscribe;
	this.TrackSearchPage 			= TrackSearchPage;
	this.TrackBookingSearch 		= TrackBookingSearch;
	this.TrackListingBoxClick		= TrackListingBoxClick;
	this.TrackTopicClick 			= TrackTopicClick;
	this.TrackProductContactClick 	= TrackProductContactClick;
	this.TrackAutocomplete			= TrackAutocomplete;
	this.TrackPreviewsClick         = TrackPreviewsClick;
		
	// #2# Tracking functions
	this.FunctionClick 			= FunctionClick;
	this.ExitClick 				= ExitClick;
	this.ExitClickNewWindow     = ExitClickNewWindow;
	this.ToolbarClick 			= ToolbarClick;
	this.CountryDropdownClick 	= CountryDropdownClick;
	this.SmallMapClick 			= SmallMapClick;	
	this.NewsletterSubscribe 	= NewsletterSubscribe;
	this.SearchPageNoHit 		= SearchPageNoHit;
	this.SearchPageResultClick 	= SearchPageResultClick;
	this.SearchPageExitClick 	= SearchPageExitClick;
	this.BookingSearch          = BookingSearch;
	this.ProductContactClick    = ProductContactClick;
	this.PreviewClick           = PreviewClick;
	
	// #3#  General functions
	this.Event                  = Event;
	this.TrackEvent             = TrackEvent;
	this.TrackLinker            = TrackLinker;
	this.TrackLinkerNewWindow   = TrackLinkerNewWindow;
	this.TrackLinkByPost        = TrackLinkByPost;
	
	/* #4# Private functions
	
	End of private functions  */
	
	// Variables
	this.BookingSearchRetries = 0;
	
	// #1# Add tracking
	function TrackExitClick()
	{
	    jQuery('a').filter(function () {
	        return this.hostname && this.hostname !== location.hostname && this.href.indexOf('http') == 0;
	    }).click(function () {
	        if (jQuery(this).attr('target') == '_blank')
            {
	            return vnTracking.ExitClickNewWindow(window.location.pathname, jQuery(this).attr('href'));
	        }
	        else
            {
	            vnTracking.ExitClick(window.location.pathname, jQuery(this).attr('href'));
	        }
	    });
	}
	
	function TrackToolbarClick()
	{
		jQuery('div.c_globallinks a').click(function() {
			vnTracking.ToolbarClick(jQuery(this).attr('href')); 
		});
	}
	
	function TrackCountryDropdownClick()
	{
		jQuery('div[id*=_SiteSelector_divSiteList]').children('a').click(function() {
			vnTracking.CountryDropdownClick(jQuery(this).attr('title')); 
		});
	}
	
	function TrackSmallMapClick()
	{
		if (jQuery('div.c_mapsmall').length) {
			var smallmap_pagetype = 'Product';
			
			if (jQuery('a[id*=_ctrMapSmall_linkMap]').length) {
				smallmap_pagetype = 'Article';
			}
			
			if (jQuery('a[id*=_linkOpenForecast]').length) { 
				smallmap_weather = 'yes';
				jQuery('a[id*=_linkOpenForecast]').click(function() { 
					vnTracking.SmallMapClick('Weather link ' + smallmap_pagetype );
				});
			}
			
			if (jQuery('a[id*=_hlWeatherSymbol]').length) { 
				smallmap_weather = 'yes';
				jQuery('a[id*=_hlWeatherSymbol]').click(function() {
					vnTracking.SmallMapClick('Weather icon ' + smallmap_pagetype);
				});
			}
			
			if (jQuery('a[id*=_linkOpenSnowReport]').length) { 
				smallmap_snow = 'yes';
				jQuery('a[id*=_linkOpenSnowReport]').click(function() { 
					vnTracking.SmallMapClick('Snow report ' + smallmap_pagetype);
				});
			}
			
			if (jQuery('a[id*=_linkMap]').length) { 
				jQuery('a[id*=_linkMap]').click(function() { 
					vnTracking.SmallMapClick('Map image ' + smallmap_pagetype);
				});
			}
			
			if (jQuery('a[id*=_btnMapLink_linkBlueArrowButton]').length) { 
				jQuery('a[id*=_btnMapLink_linkBlueArrowButton]').click(function() { 
					vnTracking.SmallMapClick('Map button ' + smallmap_pagetype);
				});
			}
		}
	}
	
	function TrackChangeFontClick()
	{
		jQuery('div.c_footerfontlinks').children('a').click(function() {
			vnTracking.FunctionClick('Font', jQuery(this).attr('title')); 
		});
	}
	
	function TrackPrintPageClick()
	{
		if (jQuery('a[id*=_hlPrint]').length) { 
			jQuery('a[id*=_hlPrint]').click(function() { 
				vnTracking.FunctionClick('Print', window.location.pathname);				           
			});
		}
	}
	
	function TrackSendToFriendClick()
	{
	    if (jQuery('a[id*=_lbuSendMailToFriend]').length) { 
			jQuery('a[id*=_lbuSendMailToFriend]').click(function() { 
					vnTracking.FunctionClick('Send to friend', window.location.pathname);
			});
		}
	}
	
	function TrackSocialBookmarkClick()
	{
		if (jQuery('a[id*=_lbSocialBookmarker]').length) { 
			jQuery('a[id*=_lbSocialBookmarker]').click(function() { 
				if(jQuery(this).attr('id').indexOf('ctrActionList') != -1)
				{
					vnTracking.FunctionClick('Social Bookmark', 'Open/Close Article');
				}
				else
				{
					vnTracking.FunctionClick('Social Bookmark', 'Open/Close Product');
				} 
			});
		}
			
		jQuery('ul.socialbookmarks').children('li').children('a').click(function() {
			vnTracking.FunctionClick('Social Bookmark', jQuery(this).attr('title') + '#' + window.location.pathname);
		});
	}
	
	function TrackArticleOpenCloseClick()
	{
		if (jQuery('a.collapsearticle').length) {
			jQuery('a.collapsearticle').click(function() {
				if(jQuery('#collapsearticleopen').is(':visible'))
				{
					vnTracking.FunctionClick('Open/close article', 'Close');
				}
				else
				{
					vnTracking.FunctionClick('Open/close article', 'Open');
				}
			});
		}
	}
	
	function TrackNewsletterSubscribe()
	{
		if (jQuery('input[id*=_btnNewsletterSubscribe]').length) { 
				jQuery('input[id*=_btnNewsletterSubscribe]').click(function() { 
				var newsletter_name = 'Empty';
				var newsletter_email = 'Empty';
				
				if (jQuery('input[id*=_NewsletterName]').val().length) {
					newsletter_name = 'OK';
				}
				
				if (jQuery('input[id*=_NewsletterEmai]').val().length) {
					newsletter_email = 'OK';
				}
				
				if(jQuery(this).attr('id').indexOf('_newsletter_') != -1)
				{
					vnTracking.NewsletterSubscribe('Footer', newsletter_name, newsletter_email);
				}
				else
				{
					vnTracking.NewsletterSubscribe('Page', newsletter_name, newsletter_email);
				}
			});
		}
	}
	
	function TrackSearchPage()
	{
		if(Vn.Page.SearchQuery == '')
		{
			Vn.Page.SearchQuery = '[empty]';
		}
	
		// Track searches that gives 0 hits
		if(jQuery('span[id=ctl00_mainContentRegion_leftContentRegion_lblMessage]').length && jQuery('div[id=ctl00_mainContentRegion_leftContentRegion_divSearchNavigators]').children().size() == 0)
		{
			vnTracking.SearchPageNoHit(Vn.Page.LanguageCode, Vn.Page.SearchQuery);
		}
		else
		{
			var searchType = 'not set';
			var searchConfiguration = urlParams['configuration'];
			var searchNavigator = urlParams['navigators'];
			var searchOffset = parseInt(urlParams['offset']);
			
			if(searchNavigator == undefined)
			{
				searchNavigator = '';
			}
			
			// Track search frontpage
			if(searchConfiguration == 'multi' && searchNavigator == undefined || searchConfiguration == 'multi' && searchNavigator.indexOf('article') == -1 && searchNavigator.indexOf('traveloffer') == -1 && searchNavigator.indexOf('vnisgreentravel') == -1)
			{
				// Track search frontpage articles
				jQuery.each(jQuery('div.c_resultlist div.c_searchitem').not('div.listingsresults div.c_searchitem'), function(index, searchItem)
				{
					var resultNumber = (searchOffset + (index + 1))
				
					jQuery(searchItem).find('a').click(function() {

						if(this.hostname && this.hostname !== location.hostname && this.href.indexOf('http') == 0)
						{
							// Go directly to partner from search
							vnTracking.SearchPageExitClick(Vn.Page.LanguageCode, 'Frontpage Article', Vn.Page.SearchQuery, jQuery(this).attr('href'));
						}
						else
						{
							var navigators = 'no';
							if(searchNavigator.indexOf('taxonomy') != -1 || searchNavigator.indexOf('vnregion') != -1 || searchNavigator.indexOf('vnspecialplaces') != -1)
							{
								navigators = 'yes';
							}
							
							vnTracking.SearchPageResultClick(Vn.Page.LanguageCode, 'Frontpage Article', navigators, Vn.Page.SearchQuery, resultNumber, true)
						}
					});					
				
				});	
				
				// Track search frontpage products
				jQuery.each(jQuery('div.listingsresults div.c_searchitem'), function(index, searchItem)
				{
					var resultNumber = (searchOffset + (index + 1))
				
					jQuery(searchItem).find('a').click(function() {
					
						if(this.hostname && this.hostname !== location.hostname && this.href.indexOf('http') == 0)
						{
							// Go directly to partner from search
							vnTracking.SearchPageExitClick(Vn.Page.LanguageCode, 'Frontpage Product', Vn.Page.SearchQuery, jQuery(this).attr('href'));
						}
						else
						{
							var navigators = 'no';
							if(searchNavigator.indexOf('taxonomy') != -1 || searchNavigator.indexOf('vnregion') != -1 || searchNavigator.indexOf('vnspecialplaces') != -1)
							{
								navigators = 'yes';
							}
							
							vnTracking.SearchPageResultClick(Vn.Page.LanguageCode, 'Frontpage Product', navigators, Vn.Page.SearchQuery, resultNumber, true)
						}
					});					
				
				});					
			}
			else
			{
				// Track article results
				if(searchConfiguration == 'article' || searchConfiguration == 'multi' && searchNavigator.indexOf('article') != -1)
				{
					searchType = 'Article';
				}
				
				// Track product results
				if(searchConfiguration == 'traveloffer' || searchConfiguration == 'multi' && searchNavigator.indexOf('traveloffer') != -1)
				{
					searchType = 'Product';
				}
				
				// Track Green travel filtered results
				if(searchConfiguration == 'traveloffer' && searchNavigator.indexOf('vnisgreentravel') != -1 || searchConfiguration == 'multi' && searchNavigator.indexOf('vnisgreentravel') != -1)
				{
					searchType = 'Green travel';
				}

				jQuery.each(jQuery('div.c_searchitem'), function(index, searchItem)
				{
					var resultNumber = (searchOffset + (index + 1))
				
					jQuery(searchItem).find('a').click(function() {
					
						if(this.hostname && this.hostname !== location.hostname && this.href.indexOf('http') == 0)
						{
							// Go directly to partner from search
							vnTracking.SearchPageExitClick(Vn.Page.LanguageCode, searchType, Vn.Page.SearchQuery, jQuery(this).attr('href'));
						}
						else
						{
							var navigators = 'no';
							if(searchNavigator.indexOf('taxonomy') != -1 || searchNavigator.indexOf('vnregion') != -1 || searchNavigator.indexOf('vnspecialplaces') != -1)
							{
								navigators = 'yes';
							}
							
							vnTracking.SearchPageResultClick(Vn.Page.LanguageCode, searchType, navigators, Vn.Page.SearchQuery, resultNumber)
						}
					});					
				
				});				
			}
		}		
	}
	
	function TrackBookingSearch()
	{
		if(jQuery('a[id=CB_SearchButton]').length)
		{
			var accommodationDefaultPlace = 'Not set';
			
			if(jQuery('input[id=cb_ac_searchfield]').length)
			{
				accommodationDefaultPlace = jQuery('input[id=cb_ac_searchfield]').val();
			}
			
			// Track Book Norway Accommodation search
			jQuery('a[id=CB_SearchButton]').click(function() {
				var bookingDetails 							= new BookingDetails();
				bookingDetails.Category 					= 'Accommodation';
				bookingDetails.IsAccommodation 				= true;
				bookingDetails.AccommodationTypeId 			= jQuery('select[id=cb_accommodationtype] option:selected').val();
				bookingDetails.AccommodationPlace 			= jQuery('input[id=cb_ac_searchfield]').val();
				bookingDetails.AccommodationDefaultPlace 	= accommodationDefaultPlace;
				
				if(bookingDetails.AccommodationTypeId == '5437' || bookingDetails.AccommodationTypeId == '5438')
				{
					bookingDetails.DateType = jQuery('input:radio[name=cb_acc_typeofdatesearch]:checked').val();
				}
				
				if(bookingDetails.DateType == 'week')
				{
					bookingDetails.Week 		= jQuery('select[id=cb_acc_weekpicker_week] option:selected').val();
					bookingDetails.WeekLength 	= jQuery('select[id=cb_acc_weekpicker_period] option:selected').val();
					
					if(bookingDetails.WeekLength == '1:1:7' || bookingDetails.WeekLength == '1:2:7')
					{					
						bookingDetails.WeekDays = parseInt(jQuery('select[id=cb_acc_weekpicker_weeklength] option:selected').val());
					}
				}
				else
				{
					bookingDetails.DateFrom = jQuery('input[id=cb_form_datefrom]').val();
					bookingDetails.DateTo 	= jQuery('input[id=cb_form_dateto]').val();
				}
				
				if(bookingDetails.AccommodationTypeId == '5435' || bookingDetails.AccommodationTypeId == '5439' || bookingDetails.AccommodationTypeId == '5441' || bookingDetails.AccommodationTypeId == '5442')
				{
					if(bookingDetails.AccommodationTypeId != '5437' && bookingDetails.AccommodationTypeId != '5438' && bookingDetails.AccommodationTypeId != '5440')
					{
						if(bookingDetails.AccommodationTypeId == '5439' && jQuery('input:radio[name=cb_acc_typeofguestsearch]:checked').val() == 'beds')
						{
							bookingDetails.AccommodationBeds = true;
							bookingDetails.Adults 				= parseInt(jQuery('select[id=cb_bed_numadults] option:selected').val());
							bookingDetails.Children 			= parseInt(jQuery('select[id=cb_bed_numchild] option:selected').val());
						}
						else
						{
							bookingDetails.AccommodationRooms = parseInt(jQuery('select[id=cb_numrooms] option:selected').val());
							
							bookingDetails.Adults 				= parseInt(jQuery('select[id=cb_numadults1] option:selected').val());
							bookingDetails.Children 			= parseInt(jQuery('select[id=cb_numchild1] option:selected').val());
						}
					}
				}
				else {
					bookingDetails.Adults 				= parseInt(jQuery('select[id=cb_numadults1] option:selected').val());
					bookingDetails.Children 			= parseInt(jQuery('select[id=cb_numchild1] option:selected').val());
				}
			
				vnTracking.BookingSearch(bookingDetails);
			});
			
			// Track Book Norway Flight search
			jQuery('a[id=cb_flight_searchbutton]').click(function() {
				var bookingDetails = new BookingDetails();
				bookingDetails.Category 	= 'Flight';
				bookingDetails.IsFlight 	= true;
				bookingDetails.FlightType 	= jQuery('input:radio[name=cb_triptype]:checked').val();
				bookingDetails.FlightFrom 	= jQuery('input[id=cb_flight_ac_leavingfrom]').val();
				bookingDetails.FlightTo 	= jQuery('input[id=cb_flight_ac_goingto]').val();
				bookingDetails.DateFrom 	= jQuery('input[id=cb_flight_datefrom]').val();
				
				if(bookingDetails.FlightType != 'oneway')
				{
					bookingDetails.DateTo = jQuery('input[id=cb_flight_dateto]').val();
					
					if(jQuery('input[id=Citybreak_flexibledates]').is(':checked'))
					{
						// Flexible date is only available for roundtrips.
						bookingDetails.FlightFlexibleDate = true;
					}
				}
				
				bookingDetails.Adults 	= parseInt(jQuery('select[id=cb_flight_numAdults] option:selected').val());
				bookingDetails.Children = parseInt(jQuery('select[id=cb_flight_numChild] option:selected').val());
				
				vnTracking.BookingSearch(bookingDetails);
			});
			
			// Track Book Norway Car Rental search
			jQuery('a[id=cb_carrental_searchbutton]').click(function() {
				var bookingDetails = new BookingDetails();
				bookingDetails.Category 	= 'Car Rental';
				bookingDetails.IsRental 	= true;
				bookingDetails.RentalPickup = jQuery('input[id=cb_ac_carrental_pickup_searchfield]').val();
				bookingDetails.DateFrom 	= jQuery('input[id=CB_form_carrental_datefrom]').val();
				bookingDetails.TimeFrom 	= parseInt(jQuery('select[id=cb_form_carrental_pickUpHour] option:selected').val());
				bookingDetails.DateTo 		= jQuery('input[id=CB_form_carrental_dateto]').val();
				bookingDetails.TimeTo 		= parseInt(jQuery('select[id=cb_form_carrental_dropOffHour] option:selected').val());
				
				if(jQuery('input[id=cb_ac_carrental_differentDropOff]').is(':checked'))
				{
					bookingDetails.RentalDropoffDifferent 	= true;
					bookingDetails.RentalDropoff 			= jQuery('input[id=cb_ac_carrental_dropOff_searchfield]').val();
				}
				
				vnTracking.BookingSearch(bookingDetails);
			});
			
			// Track Book Norway Ferry search
			jQuery('a[id=cb_ferry_searchbutton]').click(function() {
				var bookingDetails = new BookingDetails();
				bookingDetails.Category 		= 'Ferry';
				bookingDetails.IsFerry 			= true;
				bookingDetails.FerryRouteType 	= jQuery('input:radio[name=cb_ferry_triptype]:checked').val();
				bookingDetails.DateFrom 		= jQuery('input[id=cb_ferry_datefrom]').val();
				
				if(bookingDetails.FerryRouteType != 'oneway')
				{
					bookingDetails.FerryRoute 		= jQuery('select[id=cb_ferry_roundtrip] option:selected').val();
					bookingDetails.DateTo 					= jQuery('input[id=cb_ferry_dateto]').val();
				}
				else
				{
					bookingDetails.FerryRoute 		= jQuery('select[id=cb_ferry_onewaytrip] option:selected').val();
				}
				
				bookingDetails.Adults 	= parseInt(jQuery('select[id=cb_ferry_numAdults] option:selected').val());
				bookingDetails.Children = parseInt(jQuery('select[id=cb_ferry_numChild] option:selected').val());

				bookingDetails.FerryVehicle = jQuery('select[name=cb_ferry_vehicle] option:selected').val();
				
				vnTracking.BookingSearch(bookingDetails);			
			});
		}
		else if(vnTracking.BookingSearchRetries < 15)
		{
			setTimeout('vnTracking.TrackBookingSearch()', 1000);
			vnTracking.BookingSearchRetries++;
		}
	}
	
	function TrackListingBoxClick()
	{
		if(jQuery('div.vn_listings').length)
		{
			var actionName = 'Listing';
			
			// Related Category links
			jQuery.each(jQuery('ul.currentcats'), function(index, item)
			{
				jQuery(item).find('a').click(function() {
					vnTracking.FunctionClick(actionName, 'Current category');
				});
			});	
			
			// Other categories links
			jQuery.each(jQuery('ul.othercats'), function(index, item)
			{
				jQuery(item).find('a').click(function() {
					vnTracking.FunctionClick(actionName, 'Other category');
				});
			});	
		
			// All listings
			jQuery('div.vn_listings p a').click(function() {
				vnTracking.FunctionClick(actionName, 'All listings');
			});
			
			// Eco listings
			jQuery('div.ecolabellink a').click(function() {
				vnTracking.FunctionClick(actionName, 'Eco-certified listings');
			});
		}		
	}
	
	function TrackTopicClick()
	{
		if(jQuery('h2.c_interest').length)
		{
			jQuery('h2.c_interest a').click(function() {
				vnTracking.FunctionClick('Topic click', this.title + '_i:' + Vn.Page.Id + '_l:' + Vn.Page.LanguageCode );
			});
		}
	}
	
	function TrackProductContactClick()
	{
		if(jQuery("input[id*=btnSendMail]").length)
		{
			jQuery("input[id*=btnSendMail]").click(function() {
				vnTracking.ProductContactClick(jQuery("select[id*=ddlCategory] option:selected").text(), jQuery("select[id*=ddlCategory]").val());
			}); 
		 } 
	}

	function TrackAutocomplete(_position, _promoted)
	{
		if(_promoted && _promoted == true)
		{
				this.TrackEvent(new Event('Search', 'Autocomplete', 'Promoted'));
		}
		else
		{
				this.TrackEvent(new Event('Search', 'Autocomplete', 'Pos#' + _position));
		}
	}

	function TrackPreviewsClick() {
	    jQuery('div.c_articlepreviewitem, div.c_campaignpreview').each(function () {
	        var $this = jQuery(this);
	        $this.find('.frame a').click(function () {
	            vnTracking.PreviewClick('ClickImage', getPreviewClickLabel($this));
	        });
	        $this.find('.subheading_large a').click(function () {
	            vnTracking.PreviewClick('ClickHeader', getPreviewClickLabel($this));
	        });
	        $this.find('.listitemlinks a').click(function () {
	            var imgsrc = jQuery(this).find('img').attr('src'),
                    actionName = 'ClickInternal';

	            if (!imgsrc)
	                actionName = 'ClickBooking';
	            else if (imgsrc.indexOf('external') != -1)
	                actionName = 'ClickExternal';

	            vnTracking.PreviewClick(actionName, getPreviewClickLabel($this));
	        });
	        $this.find('div.iconline a').click(function () {
	            var imgsrc = jQuery(this).find('img').attr('src'),
                    actionName = 'ClickSkiIcon';

	            if (imgsrc.indexOf('map') != -1)
	                actionName = 'ClickMapIcon';
	            else if (imgsrc.indexOf('slideshow') != -1)
	                actionName = 'ClickSlideshowIcon';
	            else if (imgsrc.indexOf('film') != -1)
	                actionName = 'ClickVideoIcon';

	            vnTracking.PreviewClick(actionName, getPreviewClickLabel($this));
	        });
	        $this.find('.searchitemlinks a').click(function () {
	            vnTracking.PreviewClick('ClickMap', getPreviewClickLabel($this));
	        });
	        $this.find('a.price').click(function () {
	            vnTracking.PreviewClick('ClickPrice', getPreviewClickLabel($this));
	        });
	    });
		
		jQuery('div.c_tenpctlist, div.c_tenpctlistrelated, div.articlepreviewpopup').each(function () {
			jQuery(this).find('a.pop_trigger').click(function() {
				vnTracking.PreviewClick('ClickListLink', 'Article' + '_' + Vn.Page.TypeId + '_' + Vn.Page.LanguageCode);
			});
		});
		
		jQuery('div.c_campaignlist').each(function () {
			jQuery(this).find('a.pop_trigger').click(function() {
				vnTracking.PreviewClick('ClickListLink', 'Product' + '_' + Vn.Page.TypeId + '_' + Vn.Page.LanguageCode);
			});
		});
		
	    function getPreviewClickLabel($el) {
	        var previewType = $el.hasClass('c_articlepreviewitem') ? 'Article' : 'Product',
                externalLinks = 'ExternalLinks' + $el.find('.listitemlinks img[src*="external"]').length,
                column = $el.parents('#frontpageleft, #c_leftmaincontent').length ? 'MainCol' : 'RightCol';
            return previewType
                + '_' + externalLinks
                + '_' + column
                + '_' + Vn.Page.TypeId
                + '_' + Vn.Page.LanguageCode;
	    }
	}
	
	// #2# Tracking functions
	function FunctionClick(_action, _label)
	{
		if(_action && _label)
		{
			this.TrackEvent(new Event('Function', _action, _label));
		}
		else if(_action)
		{
			this.TrackEvent(new Event('Function', _action));
		}
	}

	function ExitClick(_fromUrl, _toUrl, _skipBn)
	{
	    if (!_skipBn && _toUrl.indexOf('booking.visitnorway.com') != -1)
		{
			this.TrackLinker(_toUrl);
		}
		
		this.TrackEvent(new Event('Exit Click', _fromUrl, _toUrl), true);
		this.TrackEvent(new Event('Exit Click To', _toUrl, _fromUrl), true);
	}

	function ExitClickNewWindow(_fromUrl, _toUrl)
    {
	    this.ExitClick(_fromUrl, _toUrl, 1);

	    if (_toUrl.indexOf('booking.visitnorway.com') != -1)
        {
            this.TrackLinkerNewWindow(_toUrl);
            return false;
	    }

	    return true;
	}
	
	function ToolbarClick(_toUrl)
	{
		this.TrackEvent(new Event('Toolbar', _toUrl, ''));
	}
	
	function CountryDropdownClick(_edition)
	{
		this.TrackEvent(new Event('Country', _edition));
	}
	
	function SmallMapClick(_clickInfo)
	{
		this.TrackEvent(new Event('Function', 'Small Map', _clickInfo));
	}
	
	function NewsletterSubscribe(_placement, _nameStatus, _emailStatus)
	{
		this.TrackEvent(new Event('Newsletter', _placement, _nameStatus + '/' + _emailStatus));
	}
	
	function SearchPageNoHit(_languageEdition, _searchPhrase)
	{
		this.TrackEvent(new Event('Search', 'No hit', _searchPhrase + '_l:' + _languageEdition));
	}
	
	function SearchPageResultClick(_languageEdition, _type, _navigators, _searchPhrase, _resultNumber, _isFrontpage)
	{
		isFrontpage = false;
		if(_isFrontpage)
		{
			isFrontpage = _isFrontpage;
		}
	
		this.TrackEvent(new Event('Search', 'Click Internal', _searchPhrase + '_l:' + _languageEdition + '_' + _navigators + '_' + _type + '_#:' + _resultNumber));
		this.TrackEvent(new Event('Search', 'Navigators', _navigators + '_l:' + _languageEdition));
		
		if(!isFrontpage)
		{
			this.TrackEvent(new Event('Search', 'Result number', _resultNumber));
		}
	}
	
	function SearchPageExitClick(_languageEdition, _type, _searchPhrase, _toUrl)
	{
		this.TrackEvent(new Event('Search', 'Click External', _searchPhrase + '_l:' + _languageEdition + '_' + _type + '_url:' + _toUrl));
	}
	
	function BookingSearch(_bookingDetails)
	{
		var stringBookingSearch = 'Booking search';
		
		var eventPages = new Event(stringBookingSearch, 'Pages', 't:' + Vn.Page.TypeId  +'_i:' + Vn.Page.Id + '_l:' + Vn.Page.LanguageCode + '_bn:' + _bookingDetails.Category);
		
		if(_bookingDetails.IsAccommodation)
		{
			var eventAccommodation = new Event(stringBookingSearch, _bookingDetails.Category);
			
			eventAccommodation.Label = _bookingDetails.AccommodationPlace + '_';
			eventAccommodation.Label += _bookingDetails.AccommodationDefaultPlace + '_';
			eventAccommodation.Label += _bookingDetails.AccommodationTypeId + '_';
			eventAccommodation.Label += _bookingDetails.DateType + '_';
			eventAccommodation.Label += _bookingDetails.DateFrom + '_';
			eventAccommodation.Label += _bookingDetails.DateTo + '_';
			eventAccommodation.Label += _bookingDetails.Week + '_';
			eventAccommodation.Label += _bookingDetails.WeekLength + '_';
			eventAccommodation.Label += _bookingDetails.WeekDays + '_';
			eventAccommodation.Label += _bookingDetails.AccommodationBed + '_';
			eventAccommodation.Label += _bookingDetails.AccommodationRooms + '_';
			eventAccommodation.Label += _bookingDetails.Adults + '_';
			eventAccommodation.Label += _bookingDetails.Children;			
			
			this.TrackEvent(eventAccommodation);
		}
		
		if(_bookingDetails.IsFlight)
		{
			var eventFlight = new Event(stringBookingSearch, _bookingDetails.Category);
			
			eventFlight.Label = _bookingDetails.FlightType + '_';
			eventFlight.Label += _bookingDetails.FlightFrom + '_';
			eventFlight.Label += _bookingDetails.FlightTo + '_';
			eventFlight.Label += _bookingDetails.DateFrom + '_';
			eventFlight.Label += _bookingDetails.DateTo + '_';
			eventFlight.Label += _bookingDetails.FlightFlexibleDate + '_';
			eventFlight.Label += _bookingDetails.Adults + '_';
			eventFlight.Label += _bookingDetails.Children;
			
			this.TrackEvent(eventFlight);
		}
		
		if(_bookingDetails.IsRental)
		{
			var eventRental = new Event(stringBookingSearch, _bookingDetails.Category);
			
			eventRental.Label = _bookingDetails.RentalPickup + '_';
			eventRental.Label += _bookingDetails.DateFrom + '_';
			eventRental.Label += _bookingDetails.TimeFrom + '_';
			eventRental.Label += _bookingDetails.RentalDropoffDifferent + '_';
			eventRental.Label += _bookingDetails.RentalDropoff + '_';
			eventRental.Label += _bookingDetails.DateTo + '_';
			eventRental.Label += _bookingDetails.TimeTo;
			
			this.TrackEvent(eventRental);
		}
		
		if(_bookingDetails.IsFerry)
		{
			var eventFerry = new Event(stringBookingSearch, _bookingDetails.Category);
			
			eventFerry.Label = _bookingDetails.FerryRouteType + '_';
			eventFerry.Label += _bookingDetails.FerryRoute + '_';
			eventFerry.Label += _bookingDetails.FerryVehicle + '_';
			eventFerry.Label += _bookingDetails.DateFrom + '_';
			eventFerry.Label += _bookingDetails.DateTo + '_';
			eventFerry.Label += _bookingDetails.Adults + '_';
			eventFerry.Label += _bookingDetails.Children;			
			
			this.TrackEvent(eventFerry);
		}

		this.TrackEvent(eventPages);
		
		// Give Google Analytics information about which page sent traffic to book norway.
		if(jQuery('#form0').length)
		{
			this.TrackLinkByPost(jQuery('#form0'));
		}				
	}
	
	function ProductContactClick(_gaCategory, _wtCategory)
	{
		dcsMultiTrack('DCS.dcssip','','DCS.dcsqry','','DCS.dcsuri','Kontaktskjema','WT.ti','JavaScript:Contact_' + _wtCategory,'WT.dl','22');
		this.TrackEvent(new Event('Contact', _gaCategory));
	}

	function PreviewClick(_action, _label) {
	    if (_action && _label) {
            //console.log('Previews', _action, _label);
	        this.TrackEvent(new Event('Previews', _action, _label));
	    }
	}

	// #3# 
	function Event(_category, _action, _label, _value)
	{
		this.Category 	= '';
		this.Action 	= '';
		this.Label 		= '';
		this.Value 		= 0;
		
		if(_category)
		{
			this.Category = _category;
		}
		
		if(_action)
		{
			this.Action = _action;
		}
		
		if(_label)
		{
			this.Label = _label;
		}
		
		if(_value)
		{
			this.Value = _value;
		}
	}
	
	function TrackEvent(_event, _destProfiles)
	{
		_gaq.push(
			['_setAccount', Vn.Account.Main],
			['_trackEvent', _event.Category, _event.Action, _event.Label, _event.Value]
		);
	
		if(_destProfiles)
		{
			_gaq.push(
				['dest1._setAccount', Vn.Account.Destination1],
				['dest1._trackEvent', _event.Category, _event.Action, _event.Label, _event.Value]
			);
			
			_gaq.push(
				['dest2._setAccount', Vn.Account.Destination2],
				['dest2._trackEvent', _event.Category, _event.Action, _event.Label, _event.Value]
			);
		}
	}
	
	function TrackLinker(_toUrl)
	{
		_gaq.push(
			['_setAccount', Vn.Account.Main],
			['_link', _toUrl]
		);
	}

	function TrackLinkerNewWindow(_toUrl) {
	    _gaq.push(
			['_setAccount', Vn.Account.Main],
            function () {
	            var tracker = _gaq._getAsyncTracker();
	            window.open(tracker._getLinkerUrl(_toUrl));
	        }
        );
	}
	
	function TrackLinkByPost(_formObject)
	{
		_gaq.push(
			['_setAccount', Vn.Account.Main],
			['_linkByPost', _formObject]
		);
	}
	
	function BookingDetails()
	{
		this.Category 					= '';
		this.IsAccommodation 			= false;
		this.IsFlight 					= false;
		this.IsRental 					= false;
		this.IsFerry 					= false;
		this.AccommodationTypeId		= '';
		this.AccommodationPlace 		= '';
		this.AccommodationDefaultPlace 	= '';
		this.AccommodationRooms 		= 0;
		this.AccommodationBeds 			= false;
		this.DateType 					= '';
		this.DateFrom 					= '';
		this.DateTo 					= '';
		this.TimeFrom 					= 0;
		this.TimeTo 					= 0;
		this.Week 						= '';
		this.WeekLength					= '';
		this.WeekDays					= 0;
		this.Adults 					= 0;
		this.Children 					= 0;
		this.FlightType 				= '';
		this.FlightFrom 				= '';
		this.FlightTo 					= '';
		this.FlightFlexibleDate 		= false;
		this.RentalPickup 				= '';
		this.RentalDropoff 				= '';
		this.RentalDropoffDifferent 	= '';
		this.FerryRoute 				= '';
		this.FerryRouteType				= '';
		this.FerryVehicle 				= '';
	}
}

/* Start Google Analytics script */
	var filterParams = '';
	filterParams += '_i:' + Vn.Page.Id;
	filterParams += '_t:' + Vn.Page.TypeId;

	if(Vn.Page.Product.Id != '0')
	{
		filterParams += '_p:' + Vn.Page.Product.Id;
		filterParams += '_pt:' + Vn.Page.Product.Type;
	}

	if(Vn.Page.Owner > 0)
	{
		filterParams += '_o:' + Vn.Page.Owner;
	}
	filterParams += '_g:' + Vn.Page.Product.GreenTravel;
	filterParams += '_l:' + Vn.Page.LanguageCode;
	
	var _gaq = _gaq || [];
	_gaq.push(
		['_setAccount', Vn.Account.Main],
		['_setDomainName', 'visitnorway.com'],
		['_addIgnoredRef', 'visitnorway.com'],
		['_setAllowHash', false],
		['_setAllowLinker', true],
		['_trackPageview']
	);
	
	if(Vn.Page.Owner > 0)
	{
		var destinationUrl = '/#owner' + Vn.Page.Owner + window.location.pathname + window.location.search + window.location.hash;
	
		_gaq.push(
			['dest1._setAccount', Vn.Account.Destination1],
			['dest1._setDomainName', 'visitnorway.com'],
			['dest1._addIgnoredRef', 'visitnorway.com'],
			['dest1._setAllowHash', false],
			['dest1._setAllowLinker', true],
			['dest1._trackPageview', destinationUrl]	
		);
		
		_gaq.push(
			['dest2._setAccount', Vn.Account.Destination2],
			['dest2._setDomainName', 'visitnorway.com'],
			['dest2._addIgnoredRef', 'visitnorway.com'],
			['dest2._setAllowHash', false],
			['dest2._setAllowLinker', true],
			['dest2._trackPageview', destinationUrl]	
		);
	}
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
  
/* End Google Analytics script */

jQuery(document).ready(function(){ 
	vnTracking.TrackExitClick();
	vnTracking.TrackToolbarClick();
	vnTracking.TrackCountryDropdownClick();
	vnTracking.TrackSmallMapClick();
	vnTracking.TrackChangeFontClick();
	vnTracking.TrackPrintPageClick();
	vnTracking.TrackSendToFriendClick();
	vnTracking.TrackSocialBookmarkClick();
	vnTracking.TrackArticleOpenCloseClick();
	vnTracking.TrackNewsletterSubscribe();
	vnTracking.TrackBookingSearch();
	vnTracking.TrackTopicClick();
	vnTracking.TrackPreviewsClick();
	
	if(Vn.Page.TypeId == Vn.PageTypeId.StandardArticle || Vn.Page.TypeId == Vn.PageTypeId.Story || Vn.Page.TypeId == Vn.PageTypeId.Product || Vn.Page.TypeId == Vn.PageTypeId.ProductDescription || Vn.Page.TypeId == Vn.PageTypeId.ExternalProvider || Vn.Page.TypeId == Vn.PageTypeId.CategoryOverview || Vn.Page.TypeId == Vn.PageTypeId.SponsorArticle)
	{
		vnTracking.TrackListingBoxClick();
	}
	
	if(Vn.Page.TypeId == Vn.PageTypeId.Search)
	{
		vnTracking.TrackSearchPage();
	}
	
	if(Vn.Page.TypeId == Vn.PageTypeId.Product)
	{
		vnTracking.TrackProductContactClick();
	}
});
