function ta_getPaywallDomain(keepSubDomain){
	var domain = location.hostname;
	
	if (!keepSubDomain){
		//remove subdomain
		var parts = domain.split(".");
	
		if (parts.length > 1){
			var mainDomain = "."+parts[parts.length-2]+"."+parts[parts.length-1];
		}else{
			mainDomain = "."+domain;
		}
		
		domain = mainDomain;
	}
	
	return domain;
}

function ta_isMachineIdValid(machineId){
	var toRet = false;
	
	if ((machineId != null) && (machineId != "")){
		if (machineId.match(/^[0-9a-zA-Z-]{32}$/g)){
			toRet = true;
		}
	}
	
	return toRet;
}

function ta_createCookie(name, value, days) {
	ta_createCookieInDomain(name, value, days, null);
}

function ta_createCookieInDomain(name, value, days, domain) {
    var expires = '';
    var date = new Date();
    if (days) {
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = '; expires=' + date.toGMTString();
    }
    var domainString = '';
    if (domain){
    	domainString = '; domain=' + domain;
    }
    document.cookie = name + '=' + value + expires + domainString +'; path=/';
}
 
function ta_readCookie(name) {
    var cookies = document.cookie.split(';'),
        length = cookies.length,
        i,
        cookie,
        nameEQ = name + '=';
    for (i = 0; i < length; i += 1) {
        cookie = cookies[i];
        while (cookie.charAt(0) === ' ') {
            cookie = cookie.substring(1, cookie.length);
        }
        if (cookie.indexOf(nameEQ) === 0) {
            return cookie.substring(nameEQ.length, cookie.length);
        }
    }
    return null;
}

function ta_eraseCookie(name) {
	ta_createCookie(name, "", -1);
}
 
function ta_eraseCookieInDomain(name, domain) {
     ta_createCookieInDomain(name, "", -1, domain);
}

function ta_checkCookie(name) {
    var r = false;
        
    if (ta_readCookie(name) != null) {
        r = true;
    }
    
    return r;
}

function ta_setValue(string, key) {
   var result = '';
   var date = new Date();
   var time = date.getTime()+""; 
   string = time.substring(0,10)+string;
   for(var i=0; i<string.length; i++) {
     var ch = string.substr(i, 1);
     var keychar = key.substr((i % key.length)-1, 1);
     ch = String.fromCharCode(ch.charCodeAt(0) + keychar.charCodeAt(0));
     result+=ch;
   }
   
   var encodedResult = encodeURIComponent(result);
   
  return encodedResult;
}

function ta_getValue(string, key) {
    var result = '';
    var string = decodeURIComponent(string);
   for(var i=0; i<string.length; i++) {
     var ch = string.substr(i, 1);
     var keychar = key.substr((i % key.length)-1, 1);
     ch = String.fromCharCode(ch.charCodeAt(0) - keychar.charCodeAt(0));
     result+=ch;
   }
   return result.substring(10);
}

function ta_getCookiesByMatch(regex) {
  var cs=document.cookie.split(/;\s*/), ret=[], i;
  for (i=0; i<cs.length; i++) {
    if (cs[i].match(regex)) {
      ret.push(cs[i]);
    }
  }
  return ret;
}

var ta_mac_id = "d1a56e988ba51d408aeb7af28163d348";
var keepSubDomainInCookiesDomain = "0";
keepSubDomainInCookiesDomain = parseInt(keepSubDomainInCookiesDomain);

if (!ta_checkCookie("ta_MACHINE_ID")){
	ta_createCookie("ta_nmid","",1);
}else{
	
	//read machine id from eEdition cookie, if valid use this
	var ta_mac_id_cookie = ta_readCookie("MACHINEID");
	
	if (ta_isMachineIdValid(ta_mac_id_cookie)){
		ta_mac_id = ta_mac_id_cookie;	
	}else{
		//read machine id from paywall cookie, if valid use this
	    ta_mac_id_cookie = ta_readCookie("ta_MACHINE_ID");
	    if (ta_isMachineIdValid(ta_mac_id_cookie)){
			ta_mac_id = ta_mac_id_cookie;	
		}
	}
	
	//erase the cookie before regenerating it do not provide the domain so that the cookie from the subdomain will be erased (if exists)
	ta_eraseCookie("ta_MACHINE_ID"); 
}

//create the cookie or regenerate it 
ta_createCookieInDomain("ta_MACHINE_ID",ta_mac_id,365, ta_getPaywallDomain(keepSubDomainInCookiesDomain));

var ta_mscript = document.createElement('script');
ta_mscript.type = "text/javascript";
var paywallScriptSrc = "https://crossville-chronicle-cnhi-pw.newsmemory.com/?meter&ta_MACHINE_ID="+ta_mac_id;

    paywallScriptSrc += "&v=4";

//ensure that the cache can be programmatically refreshed 
var ta_rnd = "6824";

if (ta_checkCookie("ta_rnd")){
	ta_rnd = ta_readCookie("ta_rnd");
}

paywallScriptSrc += "&r="+ta_rnd;

ta_mscript.src = paywallScriptSrc;

var body = document.getElementsByTagName('body')[0];
body.appendChild(ta_mscript);
