var originalPageName = '';

$(document).ready(function() {	
	
	ClickTracker.init();
});

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,
		
	init:function( target )
	{
		if( typeof( target ) == 'undefined' )
		{
			var target = 'a';
		}
		
		var $links = $(target); //  links that should be tracked
		
		$links.click(function(e)
		{

			var $this = $(this);
			
			var out_link = $this.attr('href');
						
			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
				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\/(.*)_(.*)/i;
		
		var product_name = regEx.exec( out_link ); // Get product name;
		
		if ( product_name && product_name[1] )
		{
			ClickTracker.product_name = product_name[1];
		}
		else
		{
			ClickTracker.product_name = '';
		}
		
	},
	
	goto_page:function(out_link)
	{
		if ( ClickTracker.popup == true )
		{
			window.open(out_link);
		}
		else
		{
			window.location = href;
		}

	},
	
	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';

		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,events,products';

		//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];
		s.eVar11 = s.pageName;

		/* 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;

		/* 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.eVar11 = '';
		s.events = '';
		s.products= '';

		/* 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://mbox12e.offermatica.com/m2/function/ubox/page?mbox=tracker-casinotop10-' + test_name + '&mboxSession=' +sessID +'&mboxDefault=http://' + domain + href;

		ClickTracker.popup = false;

		ClickTracker.goto_page( href );
		
		return false;

	}
}

