(function($) {
	$(document).ready(function() {
		if (typeof ET_Event === 'undefined')
			return;

		trackSearch();
		trackMediaLinks();
		trackDownloadCenter();
	});

	function trackDownloadCenter()
	{
		function getItemInfoData($base)
		{
			function getItemInfoDataByGridItem($base)
			{
				var data = {};
				data.title = $($base).find('h3').text();
				data.fileType = $($base).find('span.filetype').text().toUpperCase();
				data.trackItem = downloadCenter.activeCategory + '%7C' + data.title;

				return data;
			};

			function getItemInfoDataByListItem($base)
			{
				var data = {};
				data.title = $($base).find('span.downloadcenterliste-title').text();
				data.fileType = $($base).find('span.filetype').text().toUpperCase();
				data.trackItem = downloadCenter.activeCategory + '%7C' + data.title;

				return data;
			};

			function getItemInfoDataByCartListItem($base)
			{
				var category = $($base).find('td.info span.category').text();

				var data = {};
				data.title = $($base).find('td.info h3').text();
				data.fileType = $($base).find('td.info span.filetype').text().toUpperCase();
				data.trackItem = category + '%7C' + data.title

				return data;
			};

			if ($($base).get(0).tagName.toUpperCase() === 'TR')
			{
				if ($($base).hasClass('downloadcenter-cart-item'))
					return getItemInfoDataByCartListItem($base);
				else
					return getItemInfoDataByListItem($base);
			}
			else
				return getItemInfoDataByGridItem($base);
		};

		// CartTeaser
		$('#sammelkorbTeaser').each(function() {
			// download-as-zip link
			$(this).find('a.download-as-zip').click(function() {
				$.trackDownloadCenterEvent('', 'Sammelkorb', 'Sammelkorb%20herunterladen', '');
			});
		});

		// DownloadCenter items
		$('div.downloadcenter').each(function() {
			var data = getItemInfoData(this);

			// donwload
			$(this).find('li.download a[class!="fancybox-dc-disclaimer"]').click(function() { $.trackDownloadCenterEvent(data.fileType, data.trackItem, 'DLC', data.title); });
			// add to cart
			$(this).find('li.add a[class!="fancybox-dc-warning"]').click(function() { $.trackDownloadCenterEvent(data.fileType, data.trackItem, 'Sammelkorb%20hinzufuegen', data.title); });
			// remove from cart
			$(this).find('li.remove a').click(function() { $.trackDownloadCenterEvent(data.fileType, data.trackItem, 'Sammelkorb%20entfernen', data.title); });
		});

		// DonwloadCenter items (list-view)
		$('table.downloadcenterliste tr').each(function(num) {
			if (num < 1) return;

			var data = getItemInfoData(this);

			// donwload
			$(this).find('a.download').click(function() { $.trackDownloadCenterEvent(data.fileType, data.trackItem, 'DLC', data.title); });
			// add to cart
			$(this).find('a.add').click(function(e) {
				if ($(e.currentTarget).hasClass('fancybox-dc-warning')) { return; }
				$.trackDownloadCenterEvent(data.fileType, data.trackItem, 'Sammelkorb%20hinzufuegen', data.title);
			});
			// remove from cart
			$(this).find('a.remove ').click(function() { $.trackDownloadCenterEvent(data.fileType, data.trackItem, 'Sammelkorb%20entfernen', data.title); });
		});

		// Cart
		$('div.downloadcenter-cart').each(function() {
			// Download cart
			$(this).find('a.download-cart').click(function() { $.trackDownloadCenterEvent('', 'Sammelkorb', 'Sammelkorb%20herunterladen', ''); });
			// Clear cart
			$(this).find('a.clear-cart').click(function() { $.trackDownloadCenterEvent('', 'Sammelkorb', 'Sammelkorb%20leeren', ''); });

			$(this).find('tr.downloadcenter-cart-item').each(function() {
				var data = getItemInfoData(this);

				// download
				$(this).find('td.action a.download').click(function() { $.trackDownloadCenterEvent(data.fileType, null, 'DLC', data.title); });
				// clear cart
				$(this).find('td.action a.delete').click(function() { $.trackDownloadCenterEvent(data.fileType, trackItem, 'Sammelkorb%20entfernen', data.title); });
			});
		});

		$(document).bind('downloadcenter-downloadcart', function() { $.trackDownloadCenterEvent('', 'Sammelkorb', 'Sammelkorb%20herunterladen', ''); })
		$(document).bind('downloadcenter-download', function(e, downloadCenterItemId) {
			var data = getItemInfoData($('.downloadcenter-item-' + downloadCenterItemId));
			$.trackDownloadCenterEvent(data.fileType, data.trackItem, 'DLC', data.title);
		})
	};

	function trackMediaLinks()
	{
		if (typeof myLr === 'undefined')
			return;

		var fileExtensions = [
			'jpg', 'gif', 'png', 'bmp', 'tif', 'jpeg',
			'wmv', 'mov', 'avi', 'mpg', 'mpeg', 'mkv', 'mp4', 'mp3',
			'doc', 'docx', 'pdf', 'txt', 'xls', 'csv', 'ppt', 'pps',
			'zip', 'rar', '7z'
		];

		for (i=fileExtensions.length; i--; i>=0)
		{
			$('a[href$=".' + fileExtensions[i] + '"]').click(function(e){
				var href = $(this).attr('href');
				if ($(this).text())
					var title = $(this).text();
				else
					var title = href.substr(href.lastIndexOf('/') + 1);

				ET_Event.eventStart(
					'[' + myLr.currentCountry + '] ' + href.substr(href.lastIndexOf('.') + 1).toUpperCase(),
					href,
					'Download',
					title
				);
			});
		}
	};

	function trackSearch()
	{
		if (typeof et_areas === 'undefined')
			var et_areas = window.location.pathname;
		if (typeof et_pagename === 'undefined')
			var et_pagename = document.title;

		$('#tx_indexedsearch, #search form').submit(function(e) {
			var pointer = $(this).find('input[name="tx_indexedsearch[pointer]"]');
			if (pointer.length === 0 || pointer.val() == 0)
			{
				var searchValue = trim($(this).find('input[name="tx_indexedsearch[sword]"]').val());
				if (searchValue.length > 0)
				{
					ET_Event.eventStart(
						et_areas,
						cleanSearchString(searchValue),
						((typeof myLr !== 'undefined')
							? 'Suche Partner'
							: 'Suche'
						),
						et_pagename
					);
				}
			}
		});
	};

	function cleanSearchString(searchValue)
	{
		return encodeURIComponent(searchValue)
			.replace(/!/g, '%21')
			.replace(/'/g, '%27')
			.replace(/\(/g, '%28')
			.replace(/\)/g, '%29')
			.replace(/\*/g, '%2A');
	};

	function trim(str, charlist)
	{
		var whitespace, l = 0, i = 0;
		str += '';

		if (!charlist) {
			whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
		} else {
			charlist += '';
			whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
		}

		l = str.length;
		for (i = 0; i < l; i++) {
			if (whitespace.indexOf(str.charAt(i)) === -1) {
				str = str.substring(i);
				break;
			}
		}

		l = str.length;
		for (i = l - 1; i >= 0; i--) {
			if (whitespace.indexOf(str.charAt(i)) === -1) {
				str = str.substring(0, i + 1);
				break;
			}
		}

		return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
	};
})(jQuery);

