var adwire =
{
	orgId: null,
	source: 1,
	creative: null,
	itemId: null,
	item: null,
	click: 0,
	referrerQuery: document.referrer,
	iQuery: [],
	total: 0,
	items: null,
	userJourney: null,
	useLocalStorage: null,
	useCookie: null,
	today: new Date(),

	searchEngines:
	{
		"google":			[10,"q"]
		,"yahoo":			[11,"p"]
		,"bing":			[12,"q"]
		,"msn":				[12,"q"]
		,"eniro":			[13,"search_word"]
		,"aol":				[15,"q"]
		,"lycos":			[16,"query"]
		,"ask":				[17,"q"]
		,"altavista":	[18,"q"]
		,"kvasir": 		[19,"q"]
		,"sesam":			[20,"q"]
		,"baidu":			[21,"wd"]
		,"gigablast":	[23,"q"]
		,"alltheweb":	[24,"q"]
	},

	checkLocalStorage: function()
	{
	  try
	  {
	    return 'localStorage' in window && window['localStorage'] !== null;
	  } catch(e)
		  {
		    return false;
		  }
	},

 	getParam: function( paramName, query )
	{

		if( query.indexOf(paramName) != -1 )
		{
			var param = RegExp( "[\\?&]"+paramName+"=([^&#]*)" ).exec( query );
			return param[1];
		} else
			{
				return null;
			}
	},

	setCookie: function( name, value, domain, expires )
	{
		document.cookie = name + "=" +escape( value ) + ";expires=" + new Date( adwire.today.getTime() + (expires * 60000) ).toGMTString() + ";path=/;domain="+domain+";";
	},

	getCookie: function( name )
	{
		var start = document.cookie.indexOf(name + "=");

		if ( start != -1 )
		{
		  start  += name.length+1;
		  var end = document.cookie.indexOf(";", start);

		  if ( end == -1 )
		  {
		  	end = document.cookie.length;
		  }

		  return unescape( document.cookie.substring(start, end) );
		}
	},

	trackPageview: function( organization )
	{
		var currentTime			= Math.floor(Date.UTC(adwire.today.getFullYear(),adwire.today.getMonth(),adwire.today.getDate(),adwire.today.getHours(),adwire.today.getMinutes(),adwire.today.getSeconds())/1000);
		var timeSinceLast		= null;
		var lastSource			= null;
		var history					= null;
		var profile					= organization.split("-");
		var marketActivity	= false;
		var currentUrl 	 	  = unescape( window.location.host );
		var currentQuery  	= unescape( window.location.search );

		adwire.orgId 					 = profile[0];
		adwire.useLocalStorage = adwire.checkLocalStorage();
		adwire.useCookie			 = navigator.cookieEnabled;

		if( adwire.referrerQuery )
		{
			var tempUrl			= RegExp( "\/\/(.*?)\\/" ).exec( unescape(adwire.referrerQuery) );
			var referrerUrl	= tempUrl[1];
			var internalTraffic = referrerUrl.indexOf(currentUrl);
		} else
			{
				var internalTraffic = -1;
			}

		if( adwire.useLocalStorage )
		{
			lastSource 		= localStorage.getItem('lastSource_' + organization);
			history 	 		= localStorage.getItem('history_' + organization);
			timeSinceLast = localStorage.getItem('visit_' + organization) > 0 ? currentTime - localStorage.getItem('visit_' + organization) : 86400;

			localStorage.setItem('visit_' + organization, ''+currentTime+'');
		} else if ( adwire.useCookie )
			{
				lastSource 		= adwire.getCookie('lastSource_' + organization);
				history 	 		= adwire.getCookie('history_' + organization);
				timeSinceLast = adwire.getCookie('visit_' + organization) > 0 ? currentTime - adwire.getCookie('visit_' + organization) : 86400;

				adwire.setCookie( "visit_" + organization, currentTime, currentUrl, 1440 );
			}
		
		if( timeSinceLast != null )
		{
			if(	currentQuery.indexOf("amt_source") != -1 && currentQuery.indexOf("amt_creative") != -1 )
			{
				marketActivity 	= true;

				adwire.source 	= adwire.getParam("amt_source", currentQuery);
				adwire.creative	= adwire.getParam("amt_creative", currentQuery);
				adwire.itemId		= adwire.getParam("amt_itemId", currentQuery);
				adwire.item 		= adwire.getParam("amt_item", currentQuery);
			} else if( adwire.referrerQuery )
				{
					if( internalTraffic == -1 )
					{
						var splitRef = referrerUrl.split(".");
						var network  = splitRef[splitRef.length-(splitRef[splitRef.length-2] in adwire.searchEngines ? 2 : 3)];

						if( network in adwire.searchEngines )
						{
							adwire.source 	= profile[0] + "" + 3*profile[1];
							adwire.item 		= adwire.getParam( adwire.searchEngines[network][1], adwire.referrerQuery );
							adwire.itemId 	= adwire.today.getTime();
							adwire.creative = adwire.searchEngines[network][0];

							for( i=0; i<adwire.iQuery.length; i++ )
							{
								if( adwire.iQuery[i].toLowerCase() == adwire.item.toLowerCase() )
								{
									adwire.source = profile[0] + "" + 1*profile[1];
								}
							}
						} else
							{
								adwire.source = profile[0] + "" + 2*profile[1];
								adwire.item		= referrerUrl.replace("www.", "");
							}
					} else
						{
							var getSource = lastSource.split("-");

							adwire.source 	= getSource[0];
							adwire.creative	= getSource[1];
							adwire.itemId		= getSource[2];
							adwire.item			= getSource[3];
						}
				} else
					{
						adwire.source = profile[0] + "" + 1*profile[1]; // Direct
					}

			if( lastSource != adwire.source + "-" + adwire.creative + "-" + adwire.itemId + "-" + adwire.item )
			{
				adwire.userJourney = currentTime + "," + adwire.source + "," + adwire.creative + "," + adwire.itemId + (history != null ? "|" + history : "");

				if( adwire.useCookie )
				{
					adwire.setCookie( "history_" + organization, ''+adwire.userJourney+'', currentUrl, 525600 );
					adwire.setCookie( "lastSource_" + organization, ''+adwire.source + '-' + adwire.creative + '-' + adwire.itemId + '-' +adwire.item+'', currentUrl, 525600 );
				}

				if( adwire.useLocalStorage )
				{
					localStorage.setItem('history_' + organization, ''+adwire.userJourney+'');
					localStorage.setItem('lastSource_' + organization, ''+adwire.source + "-" + adwire.creative + "-" + adwire.itemId + '-' +adwire.item+'');
				}
			}
		}

		if( ( internalTraffic == -1 && timeSinceLast >= 1800 && timeSinceLast != null ) || marketActivity == true )
		{
			var img = new Image(1,1).src = encodeURI("http://www.adwire.se/pageview.php?organization=" + adwire.orgId + "&source=" + adwire.source + "&creative=" + adwire.creative + "&itemId=" + adwire.itemId + "&item=" + adwire.item + "&time=" + currentTime + "&timeSinceLast=" + timeSinceLast + "&url=" +currentUrl+ "&ref=" +referrerUrl+ "&rand=" + new String (Math.random()).substring (2, 11));
		}
	},
	
	addItem: function( prodName, category, price, quantity )
	{
		adwire.total += price*quantity;
		adwire.items += (adwire.items.length > 0 ? "|" : "")+prodName+","+category+","+price+","+quantity;
	},

	addEvent: function( eventId, orderId, country, city )
	{
		if( eventId >= 1 && String(orderId).length > 0 )
		{
			if(!city)	city = "";
			if(!country) country = "";
			if(adwire.useLocalStorage) localStorage.removeItem("history_" + organization);
			if(adwire.useCookie) adwire.setCookie( "history_" + organization, "", currentUrl, -1 );

		  var img = new Image(1,1).src = encodeURI("http://www.adwire.se/event.php?organization=" + adwire.orgId + "&source=" + adwire.source + "&eventId=" + eventId + "&orderId=" + orderId + "&total=" + adwire.total + "&country=" + country + "&city=" + city + "&items=" + adwire.items + "&history=" + adwire.userJourney);
		}
	},

	ignoreQuery: function( query )
	{
		adwire.iQuery.push( query );
	},

	ignoreReferrer: function( referrer )
	{
		if( adwire.referrerQuery.indexOf( referrer ) )
		{
			adwire.referrerQuery = undefined;
		}
	},
	
	overrideReferrer: function( referrer )
	{
		adwire.referrerQuery = referrer;
	}
};
