	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 =
{
	floating_banner: false,
	product_name:'',
	click_type:1,
	popup:true,
	test_name:false,
	transaction_id:false,

	init:function( findScope )
	{
		findScope = findScope || document;
		$links = $(findScope).find('a'); //  links that should be tracked

		$links.click(function(e)
		{
			var $this = $(this);
			var link_id = $this.attr('id');
			var out_link = $this.attr('href');

			if( typeof( out_link ) == 'undefined' )
			{
				return false;
			}

			if( 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 != '' )
			{
				ClickTracker.track( $this );		// Track it

				if( ClickTracker.transaction_id != false )
				{
					out_link = out_link + '?tid=' + 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|download|featured)\/(.*)/i;

		var product_name = regEx.exec( out_link ); // Get product name;
		if ( product_name && product_name[2] )
		{
			ClickTracker.product_name = product_name[2];
			if( product_name[1] == 'featured' )
			{
				ClickTracker.click_type = 3;
			}else if( product_name[1] == 'download' )
			{
				ClickTracker.click_type = 2;
			}else {
				if(ClickTracker.floating_banner == true){
					ClickTracker.click_type = 5;
					ClickTracker.floating_banner = false;
				}else{
					ClickTracker.click_type = 1;
				}
			}
		}
		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] = 'Featured Content';
		tt[4] = 'Flash Click';
		tt[5] = 'Scrolling Ad Click';

		var langId = new Array();

		//US
		langId['wcasinotoplistsus'] = 35;

		//DE
		langId['wcasinotoplistsde'] = 47;

		//DK
		langId['wcasinotoplistsdk'] = 32;

		//ES
		langId['wcasinotoplistses'] = 143;

		//FI
		langId['wcasinotoplistsfi'] = 40;

		//FR
		langId['wcasinotoplistsfr'] = 41;

		//IT
		langId['wcasinotoplistsit'] = 68;

		//NL
		langId['wcasinotoplistsnl'] = 33;

		//NO
		langId['wcasinotoplistsno'] = 109;

		//SE
		langId['wcasinotoplistsse'] = 147;

		//JP
		langId['wcasinotoplistsjp'] = 69;

		//RU
		langId['wcasinotoplistsru'] = 128;
		
		//BG
		langId['wcasinotoplistsbg'] = 20;

		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 == 4 )
		{
			s.linkTrackEvents="event9";
			s.events="event9";
		}
		else
		{
			s.linkTrackEvents="purchase,event1";
			s.events="purchase,event1";
		}

		var rowNr = '';
		if( typeof( obj ) == 'object' && obj.parents('div.toplist').length > 0 )
		{
			startRow = 0;
			pageNr = location.search.split('start=');

			if( pageNr && pageNr[1] )
			{
				startRow = ( pageNr[1]-1 ) * 10;
			}

			rowNr = obj.parent().parent()[0].rowIndex + startRow;
		}

		//s.eVar1 = s_level;
		s.eVar2 = tt[type];
		s.eVar11 = s.pageName;
		s.eVar14 = rowNr;

		/* 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 = 's7l' + langId[ s_account ] + 't' + ts + product.replace(/\W|casino/g,'');

		if( type == 2 )
		{
			transactionId = transactionId + 'd'; //Download
		}
		else if( type == 3 )
		{
			transactionId = transactionId + 'm'; //Casino of the month
		}
		else if( type == 4 )
		{
			transactionId = transactionId + 'f'; //Flash
		}

		ClickTracker.transaction_id = transactionId;
		s.transactionID = transactionId;
		s.eVar16 = transactionId;
		s.prop16 = transactionId;

		/* Track Custom Link */
		s.tl(obj,'e',product);

		/* Track mbox click */
		if ( typeof( mboxFactoryDefault ) !== 'undefined' && mboxFactoryDefault.getCookieManager().getCookie('PC') != null )
		{
			tempVal = s.prop1;
			if( test_name ){
				s.prop1 = "Conversion: casinotoplist-" + test_name;
			}
			ClickTracker.track_sc_mbox( s );
			s.prop1 = tempVal;
		}

		/*Reset purchase variables*/
		s.linkTrackVars = '';
		s.linkTrackEvents = '';
		s.eVar1 = '';
		s.eVar2 = '';
		s.eVar7 = '';
		s.eVar11 = '';
		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-casinotoplist-' + test_name + '&mboxHost='+domain+'&mboxSession=' +sessID +'&mboxDefault=http://' + domain + href;

		ClickTracker.popup = false;

		ClickTracker.goto_page( href );

		return false;

	}
}
ClickTracker.init();

