ensurePackage("guardian.r2.revsci");


// Reduced region sets
var northAmericaCode = "usa";
var northAmericaArray = ['usa', 'can'];

var europeanUnionCode = "eur";
var europeanUnionArray = ['bel', 'fra', 'deu', 'ita', 'lux', 'nld', 'dnk', 'irl', 'grc',
			'prt', 'esp', 'aut', 'fin', 'swe', 'cyp', 'cze', 'est', 'hun',
			'lva', 'ltu', 'mlt', 'pol', 'svk', 'svn', 'bgr', 'rou'];

var restOfWorldCode = "Other";


function rs_decode_media() {
	var ck = document.cookie + ';';
	var ret = "";
	var x = ck.indexOf('GU_revsci_media=');

	if (x > -1) {
		var media_data = ck.substring(x + 16, ck.indexOf(';', x));
		ret = unescape(media_data);
	}

	return ret;
}

function rs_process_media() {
	var rs_cook = rs_decode_media();
	if (rs_cook !== "") {
		rs_cook = rs_cook.split(';');
		for (var i = 0; i < rs_cook.length; i++) {
			var data = rs_cook[i].split('=');
			DM_addToLoc(data[0], data[1]);
		}
	}
}

function existsInArray(item, array) {
	for (var x = 0; x < array.length; x++) {
		if (item === array[x]) {
			return true;
		}
	}
	return false;
}

function rs_matchToTargettedRegions(countryCode) {
	if (existsInArray(countryCode, northAmericaArray)) {
		return northAmericaCode;
	}
	if (existsInArray(countryCode, europeanUnionArray)) {
		return europeanUnionCode;
	}
	if ("gbr" === countryCode) {
		return "gbr";
	}
	return restOfWorldCode;
}

function rs_deduceCountry(actualCountry) {
	// append the Country code to page variable
	DM_addToLoc('country', rs_matchToTargettedRegions(actualCountry));
}

// --- Revenue Science cookie creation logic start ---

function rs_setCookie(jscookie, value, expires, path, domain, secure) {
	document.cookie = jscookie + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function rs_fixdate(date) {
	var base = new Date(0);
	var skew = base.getTime();
	if (skew > 0) {
		date.setTime(date.getTime() - skew);
	}
}

var rs_maxSegments = 50;

function rs_assembleSegments(segsArray) {
	if (!segsArray || segsArray.length === 0) {
		return "";
	}
	if (segsArray.length > rs_maxSegments) {
		segsArray = segsArray.slice(0, rs_maxSegments);
	}

	return "'" + segsArray.join("','") + "'";
}

function DM_onSegsAvailable(rsinetsegs, code) {
	// set dates
	var rs_now = new Date();
	rs_fixdate(rs_now);
	rs_now.setTime(rs_now.getTime() + 12 * 60 * 60 * 1000);

	// assemble the segments
	var rs_segsAsString = rs_assembleSegments(rsinetsegs);

	// set the current domain
	var rs_currentDomain = guardian.r2.revsci.cookieDomain;

	// set the DART cookie
	rs_setCookie("GU_revsci", rs_segsAsString, rs_now, "/", rs_currentDomain);
}

// --- Revenue Science cookie creation logic end ---


// set up page information for pixel server
function rs_initTracking() {
	rs_deduceCountry(guardian.r2.revsci.gu_geo_country);
	DM_addToLoc('siteName', guardian.r2.revsci.siteName);
	DM_addToLoc('comFolder', guardian.r2.revsci.commercialFolder);
	rs_process_media();
	DM_tag();
}

