var country = '';
var ajaxDebugLevel = 1;
var ajaxEncoderLoaded = false;
var userState = new Object();
userState.isHandled = false;
var voucher = new Object();
voucher.isExisting = false;
voucher.isHandled = false;

var voucherReferenceSites = new Array
(
		'http://www.ausgezeichnet-und-empfohlen.de',
		'http://www.ausgezeichnet-und-empfohlen.com',
		'http://www.ausgezeichnet-und-empfohlen.at',
		'http://www.ausgezeichnet-und-empfohlen.ch',
		'http://catalog.bineo.de'
);

// apply frameborder fix - frameborder was left accidently set to 1
$(document).ready
(
	function()
	{
		// if sticker present
		if ($('#ListBottomUserControl1_m_lnkStickerSmall').length > 0)
		{
			// configure sticker hover
			// if large image not present disable hover
			if ($('#ListBottomUserControl1_m_imgStickerLarge').length == 0 || $('#ListBottomUserControl1_m_imgStickerLarge').attr('src').length == 0)
			{
				$('#ListBottomUserControl1_m_lnkStickerSmall').unbind('mouseover');
				$('#ListBottomUserControl1_m_lnkStickerSmall').unbind('mouseout');
			}
		}
		
	  	// get accessories link...
		$('#ACCESSOIRES').bind
		(
			'click', 
			function()
			{
				$('#buffer_products').load
				(
					function()
					{
						setTimeout('fixFrameBorder()', 0);
					}
				);
			}
		);

		$.getScript
		(	
			'http://cmsviews.ddic.net/krups/js/jquery.json.js', 
			function() 
			{
				ajaxEncoderLoaded = true;
			}
		);

		setTimeout('doGetState()', 1000);
	}
);

function fixFrameBorder()
{
   $('#product_external_view').attr('frameBorder', '0');
   var url = $('#product_external_view').attr('src');
   $('#product_external_view').attr('src', '');
   $('#product_external_view').attr('src', url);
}

/*
	Timer callbacks
*/

function doGetState()
{
	if (ajaxEncoderLoaded)
	{
		getUserState();
		setTimeout('doCheckVoucher()', 500);
	}
	else
	{
		setTimeout('doGetState()', 500);
	}
}

function doCheckVoucher()
{
	if (userState.isHandled)
	{
		var previous_page = document.referrer;
		var article_number = '';
		
		var isReferenceSite = false;
		for (var i = 0; !isReferenceSite && i < voucherReferenceSites.length; i++)
		{
			isReferenceSite = (previous_page.toLowerCase().indexOf(voucherReferenceSites[i]) != -1);
		}

		if (isReferenceSite || userState.alreadySeen)
		{
			// ermittle artikelnummer und land
//			var locationRE = new RegExp('/Products/(.+)/.+', 'i');
			var locationRE = new RegExp('http\://www\.((fr)\.)?krups\.(de|at|ch)/.+/Products/(.+)/.+', 'i');
			var matches = top.location.href.match(locationRE);
	
			if (matches != null && matches.length > 1)
			{
				var lang = matches[2];			
				var dom2nd = matches[3];
				if (lang == undefined || lang.length == 0)
				{
					country = dom2nd + '-' + dom2nd;
				}
				else
				{
					country = dom2nd + '-' + lang;
				}
				var article_number = matches[4].replace(/\+/g, '');
	
				getVoucher('KRUPS', country, article_number, userState.alreadySeen && !isReferenceSite);
				setTimeout('doShowVoucher()', 500);
			}
		}
	}
	else
	{
		setTimeout('doCheckVoucher()', 500);
	}
}

function doShowVoucher()
{
	if (voucher.isHandled)
	{
		if (voucher.isExisting)
		{
	
			var stickerLayer = $('<div id="sticker_layer"><a href="' + voucher.download_url_base + voucher.download_name + '" target="_blank" onclick="return trackVoucherDownload(\'KRUPS\', \'' + country + '\', \'' + voucher.article_number + '\', \'' + voucher.ticketHash + '\')"><img id="sticker" src="' + voucher.sticker_url_base + voucher.sticker_name + '" border="0"></a></div>');
			stickerLayer.css('position', 'absolute');
			stickerLayer.css('left', '511px');
			stickerLayer.css('top', '230px');
			stickerLayer.css('zIndex', 500);
			$('#background_fix').append(stickerLayer);
		}
	}
	else
	{
		setTimeout('doShowVoucher()', 500);
	}
}

/*
	AJAX Wrapper Funktionen
*/
function getUserState()
{
	// encode data
	var encodedData = $.toJSON([]);
	encodedData = 'params=' + escape(encodedData);

	$.ajax
	(
		/*
			Festlegung:
			- Hinter der server script datei wird mit '/' getrennt
			der Funktionsname angegeben
			- Wegen Cross-Domain Call werden Daten / Payload als query param 'params' 
			  JSON encodiert übergen
			- Die Ausgabe des Scripts ist immer JSON encodiert und hat
			  Content-Type text/javascript
		*/
		{
			url: 'http://cmsviews.ddic.net/gutscheine-ajax.php/getUserState',
			type: 'GET',
			async: false,
			data: encodedData,
			dataType: 'jsonp',
			success: function(data, textStatus, XMLHttpRequest)
			{
				if (typeof(data) == 'object' && data.hasOwnProperty('status') && data.hasOwnProperty('state'))
				{
					if (data.status == 'success')
					{
						for (var prop in data.state)
						{
							userState[prop] = data.state[prop];
						}
					}
					else if (data.status == 'error')
					{
						if (ajaxDebugLevel > 0)
						{
							if (data.hasOwnProperty('errmsg') && data.hasOwnProperty('errctx'))
							{
								alert('getUserState - \'' + data.errmsg + '\'\n' + data.errctx);
							}
							else
							{
								alert('getUserState - AJAX Anforderung fehlgeschlagen');
							}
						}
					}
				}

				userState.isHandled = true;
			}
		}
	);
}

/*
	AJAX Wrapper Funktionen
*/
function getVoucher(brand, country, article, use_tracked_referer)
{
	// encode data
	var encodedData = $.toJSON([brand, country, article, use_tracked_referer]);
	encodedData = 'params=' + escape(encodedData);

	$.ajax
	(
		/*
			Festlegung:
			- Hinter der server script datei wird mit '/' getrennt
			der Funktionsname angegeben
			- Wegen Cross-Domain Call werden Daten / Payload als query param 'params' 
			  JSON encodiert übergen
			- Die Ausgabe des Scripts ist immer JSON encodiert und hat
			  Content-Type text/javascript
		*/
		{
			url: 'http://cmsviews.ddic.net/gutscheine-ajax.php/getVoucher',
			type: 'GET',
			async: false,
			data: encodedData,
			dataType: 'jsonp',
			success: function(data, textStatus, XMLHttpRequest)
			{
				if (typeof(data) == 'object' && data.hasOwnProperty('status') && data.hasOwnProperty('isExisting'))
				{
					if (data.status == 'success')
					{
						voucher.isExisting = data.isExisting;

						if (data.hasOwnProperty('ticket'))
						{
							voucher.ticketHash = data.ticket;
						}
						
						// merge voucher
						if (data.hasOwnProperty('voucher'))
						{
							voucher.article_number = data.voucher.ARTICLE_NUM;
							voucher.amount = data.voucher.AMOUNT;
							voucher.sticker_name = data.voucher.STICKER_NAME;
							voucher.sticker_url_base = data.voucher.STICKERURLBASE;
							voucher.download_name = data.voucher.DOWNLOAD_NAME;
							voucher.download_url_base = data.voucher.DOWNLOADURLBASE;
						}
					}
					else if (data.status == 'error')
					{
						if (ajaxDebugLevel > 0)
						{
							if (data.hasOwnProperty('errmsg') && data.hasOwnProperty('errctx'))
							{
								alert('getVoucher - \'' + data.errmsg + '\'\n' + data.errctx);
							}
							else
							{
								alert('getVoucher - AJAX Anforderung fehlgeschlagen');
							}
						}
					}
				}

				voucher.isHandled = true;
			}
		}
	);
}

/*
	AJAX Wrapper Funktionen
*/
function trackVoucherDownload(brand, country, article, ticket)
{
	// encode data
	var encodedData = $.toJSON([brand, country, article, ticket]);
	encodedData = 'params=' + escape(encodedData);

	// bineo tracking
	$.ajax
	(
		/*
			Festlegung:
			- Hinter der server script datei wird mit '/' getrennt
			der Funktionsname angegeben
			- Wegen Cross-Domain Call werden Daten / Payload als query param 'params' 
			  JSON encodiert übergen
			- Die Ausgabe des Scripts ist immer JSON encodiert und hat
			  Content-Type text/javascript
		*/
		{
			url: 'http://cmsviews.ddic.net/gutscheine-ajax.php/trackVoucherDownload',
			type: 'GET',
			data: encodedData,
			dataType: 'jsonp',
			success: function(data, textStatus, XMLHttpRequest)
			{
				if (typeof(data) == 'object' && data.hasOwnProperty('status'))
				{
					if (data.status == 'error')
					{
						if (ajaxDebugLevel > 0)
						{
							if (data.hasOwnProperty('errmsg') && data.hasOwnProperty('errctx'))
							{
								alert('trackVoucherDownload - \'' + data.errmsg + '\'\n' + data.errctx);
							}
							else
							{
								alert('trackVoucherDownload - AJAX Anforderung fehlgeschlagen');
							}
						}
					}
				}
			}
		}
	);
	
	// mindshare tracking
	if (country.toUpperCase() == 'DE-DE')
	{
	var now = new Date();
	
	var trackingUrl = 'http://adsfac.eu/pct_mx.asp';
	var trackParams = new Object();
	trackParams['L'] = '37257';
	trackParams['udp1'] = ticket;
	trackParams['source'] = 'js';
	trackParams['ord'] = Math.round(Math.abs(Math.sin(now.getTime()))*1000000000)%10000000;
	
	//'http://adsfac.eu/pct_mx.asp?L=37257&udp1=' + ticket + '&source=js&ord="' + ord
	$.getScript(trackingUrl + '?' + $.param(trackParams));
	}

	return true;
}

