var originalPageName = '';

var ActiveTests =
{
	tests:new Array(),
	/*
	 * name, the name or ID of the test
	 * selector, the css selector to find the element
	 * link_type, one of int, ext or all. ( Internal, External or All )
	 */
	add_test:function( name, selector, link_type )
	{
		var test = new Array();
		test['name'] = name;
		test['selector'] = selector;
		test['link_type'] = link_type;
		ActiveTests.tests.push( test );
	}
}

var ClickTracker =
{
	product_name:'',
	click_type:1,
	popup:true,
	test_name:false,
	transaction_id:false,

	init:function( target )
	{
		if( typeof( target ) == 'undefined' )
		{
			var target = "a";
		}
		var $links = $(target);

		$('#Liveperson-Container').find('a').attr('href', 'javascript::return false;');
		
		$links.live( 'click', function(e)
		{
			var $this = $(this);

			var out_link = $this.attr('href');

			if( typeof(out_link) == 'undefined' || out_link.indexOf('#') !== -1 )
			{
				return true;
			}

			ClickTracker.set_product_name( out_link );

			ClickTracker.check_for_test( $this );

			// Its a test but not an exit link
			if( ClickTracker.product_name == '' && ClickTracker.test_name != false )
			{
				ClickTracker.track_internal_mbox( $this ); // Track internal link
			}
			else if( ClickTracker.product_name != '' )
			{
				// The promotions uses another click_type
				if( /promotion\/(.*)/i.exec( out_link ) ) {
					ClickTracker.click_type = 4;
				}
				
				ClickTracker.track( $this );

				if( ClickTracker.transaction_id != false )
				{
					if( out_link.indexOf( '?' ) != false ) {
						out_link = out_link + '&';
					} else {
						out_link = out_link + '?';
					}
					
					out_link = out_link + 'transactionid=' + ClickTracker.transaction_id;
					
					ClickTracker.transaction_id = false;
				}

				ClickTracker.goto_page( out_link ); // Got to page				
			}
			else
			{
				//nothing to track
				return true;
			}
			return false;
		});
	},

	check_for_test:function(obj){

		var tests = ActiveTests.tests;

		ClickTracker.test_name = false;

		if( tests.length > 0 )
		{
			for ( var i in tests ){

				if( obj.parents( tests[i].selector ).length > 0  )
				{
					if( ClickTracker.product_name == '' && tests[i].link_type != 'ext' )
					{
						ClickTracker.test_name = tests[i].name;
					}
					else if ( ClickTracker.product_name != '' && tests[i].link_type != 'int' )
					{
						ClickTracker.test_name = tests[i].name;
					}
				}
			}
		}
	},

	set_product_name:function(out_link)
	{
		var regEx = /(goto|promotion)\/(.*)\.(.*)/i;		
		var product_name = regEx.exec( out_link ); // Get product name;

		if ( product_name && product_name[2] )
		{
			ClickTracker.product_name = product_name[2];
		}
		else
		{
			ClickTracker.product_name = '';
		}

	},

	goto_page:function(out_link)
	{
		if ( ClickTracker.popup == true )
		{
			window.open(out_link);
		}
		else
		{
			window.location = out_link;
		}

	},

	track:function(obj)
	{
		var product 	= ClickTracker.product_name;
		var type 		= ClickTracker.click_type;
		var test_name	= ClickTracker.test_name; //Test&Target name

		var tt = new Array();
		tt[0] = 'Other Site Click';
		tt[1] = 'Casino Room Click';
		tt[2] = 'Download Click';
		tt[3] = 'Flash Click';
		tt[4] = 'Promo Spot Click';
		tt[5] = 'Scrolling Ad Click';

		var tranIdOn = new Array();

		//US
		tranIdOn['wcasinotop10us'] = 35;

		//DE
		tranIdOn['wcasinotop10de'] = 47;

		//DK
		tranIdOn['wcasinotop10dk'] = 32;

		//ES
		tranIdOn['wcasinotop10es'] = 143;

		//FI
		tranIdOn['wcasinotop10fi'] = 40;

		//FR
		tranIdOn['wcasinotop10fr'] = 41;

		//IT
		tranIdOn['wcasinotop10it'] = 68;

		//NL
		tranIdOn['wcasinotop10nl'] = 33;

		//NO
		tranIdOn['wcasinotop10no'] = 109;

		//SE
		tranIdOn['wcasinotop10se'] = 147;

		//JP
		tranIdOn['wcasinotop10jp'] = 69;

		//BR
		tranIdOn['wcasinotop10br'] = 162;

		var score = "1.00";
		var s=s_gi(s_account);

		if( originalPageName != '' )
		{
			s.pageName = originalPageName;
		}

		/* Set referrer to the page the clicks is from */
		s.referrer=document.location.href;

		s.linkTrackVars = 'eVar1,eVar2,eVar7,eVar8,eVar9,eVar10,eVar11,eVar14,eVar16,prop16,channel,events,products,transactionID';

		//Flash tracking
		if( type == 3 )
		{
			s.linkTrackEvents="event9";
			s.events="event9";
		}
		else
		{
			s.linkTrackEvents="purchase,event1";
			s.events="purchase,event1";
		}

		s.eVar1 = s_level;
		s.eVar2 = tt[type];

		/* Keeps track of mbox_version for one day */
		if( pageNameAdded )
		{
			s.eVar7 = s.getAndPersistValue(null,'mbox_prop',1);
		}

		s.products="" + tt[type] + ";" + product + ";1;" + score;

		/* TransactionID */
		unixTs = new Date();
		ts = unixTs.getTime();

		transactionId = 's2l' + tranIdOn[ s_account ] + 't' + ts + product.replace(/\W|casino/g,'');

		if( type == 2 )
		{
			transactionId = transactionId + 'd'; //Download
		}
		else if( type == 3 )
		{
			transactionId = transactionId + 'f'; //Flash
		}
		ClickTracker.transaction_id = transactionId;
		s.transactionID = transactionId;
		s.eVar16 = transactionId;
		s.prop16 = transactionId;

		var rowNr = '';

		if( typeof( obj ) == 'object' && obj.parents('div#extraContent').length > 0 )
		{
			startRow = 0;
			pageNr = $('p.paging strong').text();

			if( pageNr )
			{
				startRow = ( pageNr-1 ) * 10;
			}

			rowNr = obj.parents('tr')[0].rowIndex + startRow;
		}
		
		s.eVar11 = s.pageName;
		s.eVar14 = rowNr;

		/* Track Custom Link */
		s.tl(obj,'e',product);

		/* Track mbox click */
		if ( mboxFactoryDefault.getCookieManager().getCookie('PC') != null )
		{
			tempVal = s.prop1;
			if( test_name ){
				s.prop1 = "Conversion: casinotop10-" + test_name;
			}
			ClickTracker.track_sc_mbox( s );
			s.prop1 = tempVal;
		}

		/*Reset purchase variables*/
		s.linkTrackVars = '';
		s.linkTrackEvents = '';
		s.eVar1 = '';
		s.eVar2 = '';
		s.eVar7 = '';
		s.eVar14 = '';
		s.eVar16 = '';
		s.prop16 = '';
		s.events = '';
		s.products= '';
		s.transactionID = '';

		/* Save original page name */
		originalPageName = s.pageName;

		/* Transition page name */
		s.pageName = '/landing-page/' + product;

		/* Keeps track of mbox_version for one day */
		if( pageNameAdded )
		{
			s.prop7 = s.getAndPersistValue(null,'mbox_prop',1) + s.pageName;
		}
		/* Track transition page */
		void(s.t());

	},

	track_sc_mbox:function( sc ) {
		var s = sc;
		var tc = s.events && s.events.indexOf('purchase') != -1;
		var T = 'SiteCatalyst: ' + (tc ? 'purchase' : 'event');
		var pb = document.createElement('DIV');
		Q = mboxFactoryDefault.create(T, new Array(), pb );
		Q.setFetcher( new mboxAjaxScPluginFetcher('function', s ) );
		Q.load();
	},

	track_internal_mbox:function( obj )
	{
		href 		= obj.attr('href');
		test_name	= ClickTracker.test_name;

		if( typeof( href ) === 'undefined' )
		{
			return true;
		}

		if( typeof( obj.pathname ) != 'undefined' )
		{
			href = href.substr( href.indexOf( obj.pathname ) );
		}

		var domain=location.href.split("/");

		if(domain.length>0)
		{
			domain=domain[2];
			domain=domain.toLowerCase();
			if( typeof( obj.pathname ) == 'undefined' )
			{
				href = href.replace( 'http://' + domain, '' );
			}
		}

		if( href.substr( 0, 1 ) != '/' )
		{
			href = '/' + href;
		}

		var sessID = mboxFactoryDefault.getSessionId().getId();
		href = 'http://function.tt.omtrdc.net/m2/function/ubox/page?mbox=tracker-casinotop10-' + test_name + '&mboxSession=' +sessID + '&mboxHost=' + domain  + '&mboxDefault=http://' + domain + href;

		ClickTracker.popup = false;

		ClickTracker.goto_page( href );

		return false;

	}
}

$(document).ready(function() {
	ClickTracker.init();
});

