var userCookieName = "img";
var pageCookieName = "thresholdPgCount";
var incRegCookieName = "incRegThresholdPgCount";
var pageCountThreshold = 4; //for 5 set it as 4
var incPageCountThreshold = 2; //for 3 set it as 2
var pageCookieExpireLength = 30;
var pageCookieExpireUnit = "minutes";
var incRegPageCookieExpireLength = 30;
var incRegPageCookieExpireUnit = "minutes";
var incRegErrorCookieExpireLength = 31;
var incRegErrorCookieExpireUnit = "days";
//for BLC sites set this true, for AHC set to false
var skipRegistration = "true";

var removeFromBICookieName = "removeIMGfromBI";
var removeCookieFromBIURL = "http://secure.belointeractive.com/sharedcontent/membership/SSO/deleteCookie.jsp";

var getCookieURL = "https://secure.belointeractive.com/sharedcontent/membership/SSO/getCookie.jsp?redir=http://"  + getDomain() + "/sharedcontent/membership/SSO/setCookie.jsp";
var checkedSWLFlag = "checkedSWLFlag";

//vars added 4/14/2009
var sessionCookieName = "sessionCookie";
var sessionLength = 30;
var sessionUnit = "minutes";
var incRegVisitCountCookieName = "incRegVisitCount";
var incRegNoThanksCookieName = "incRegNoThanksCookie";
var incRegNoThanksCookieExpireLength = 31;
var incRegNoThanksCookieExpireUnit = "days";
var quickRegNoThanksCookieName = "quickRegNoThanksCookie";
var incRegErrorCookieName = "incRegErrorCookie";
var incRegVisitCountThreshold = 2;
var redirVersion="BLC1.0";


var imgFound = checkForIMGCookie(userCookieName);

if(!imgFound){
	if (readCookie(quickRegNoThanksCookieName) == null)
	{	
		pageThresholdCheck(pageCookieName, pageCountThreshold);
	}
}

function pageThresholdCheck(cookieName, thresholdCount){
	var pagesLeft = checkRemainingPagesCookie(cookieName);
	if(pagesLeft == null){
		setRegPageCookie(cookieName, thresholdCount, pageCookieExpireLength, pageCookieExpireUnit);
	}
	else{
		if(pagesLeft>0){
			if( !document.DoNeRaN )
			{
				pagesLeft = pagesLeft - 1;

				//Set var in DOM to handle multiple instaces of redir.js being included
				document.DoNeRaN = new Number(0);

				setRegPageCookie(cookieName, pagesLeft, pageCookieExpireLength, pageCookieExpireUnit);	
			}
		}
		else if(pagesLeft<1){
			redirect();
		}
	}

}

function getUserID(){
        var userCookie = readCookie(userCookieName);
        var imgValues = userCookie.split("|");
        //currently the last but one token is set for this
        //consult campaignAPI.jar owner for questions
        return (imgValues[imgValues.length - 2]);
}

function skipIncrReg(){
	var userCookie = readCookie(userCookieName);
	var imgValues = userCookie.split("|");
	//currently the last token is set for this
	//consult campaignAPI.jar owner for questions
	return (imgValues[imgValues.length - 1]);
}

if(imgFound && !checkForIMGCookie("imgINC")){
   var skip = skipIncrReg();
	var errorCookieExists = readCookie(incRegErrorCookieName);
   //alert(skip);
   if(skip != "SKIP_INC_REGISTRATION" && errorCookieExists == null)
   {
      if(isNewSession(sessionCookieName))
      {
         incrementIncRegVisitCount();
      }	
      createSessionCookie(sessionCookieName, sessionUnit, sessionLength);
      var visitCount = readCookieInt(incRegVisitCountCookieName);
      if (visitCount > incRegVisitCountThreshold) 
      {
         if (readCookie(incRegNoThanksCookieName) == null) 
         {
            incRegPageThresholdCheck(incRegCookieName, incPageCountThreshold);
         }
      }
   }
}

function incRegPageThresholdCheck(incCookieName, incCountThreshold) {
	var pagesLeft = checkRemainingPagesCookie(incCookieName);
	if(pagesLeft == null){
		setRegPageCookie(incCookieName, incCountThreshold, incRegPageCookieExpireLength, incRegPageCookieExpireUnit);
	}
	else{
		if(pagesLeft>0){
			if( !document.DoNeRaN )
			{
				pagesLeft = pagesLeft - 1;

				//Set var in DOM to handle multiple instaces of redir.js being included
				document.DoNeRaN = new Number(0);

				setRegPageCookie(incCookieName, pagesLeft, incRegPageCookieExpireLength, incRegPageCookieExpireUnit);
			}
		}
		else if(pagesLeft<1){
			var currentDomain = document.domain;
			var referrerURL = document.referrer;
			var documentURL = document.URL;
			var userID = getUserID();
			var cookieID = null;
			if (!validUserID(userID)) {
				cookieID = getCookieID();
				if(cookieID == null || cookieID.length == 0 || cookieID == undefined){
					setRegPageCookie(incRegErrorCookieName,'true',incRegErrorCookieExpireLength,incRegErrorCookieExpireUnit);
					return;
				}
			}

			index = referrerURL.indexOf(currentDomain);
			if(index>-1){
            writePersistentCookie(incRegNoThanksCookieName, "true", incRegNoThanksCookieExpireUnit, incRegNoThanksCookieExpireLength);
				window.location.replace("/sharedcontent/membership/incrindex.jsp?fw=" + documentURL + "&userID=" + userID + "&bCookie=" + cookieID);
			}
		}
	}
}

function getCookieID(){
	var userCookie = readCookie(userCookieName);
	var imgValues = userCookie.split("|");
	//currently the first token is set for this
	//consult campaignAPI.jar owner for questions
	return (imgValues[0]);
}

function validUserID(userID){
	var valid = true;
	if (userID == null || userID.length == 0 || isNaN(userID) || userID == undefined) {
		valid = false;
	}
	return valid;
}

function setRegPageCookie(name, value, offset, periodType) {
 	writePersistentCookie(name,value,periodType,offset);
}

function redirect(){
	var currentDomain = document.domain;
	var referrerURL = document.referrer;
	index = referrerURL.indexOf(currentDomain);
	if(index>-1 || referrerURL == null || referrerURL == ""){
		window.location.replace("/sharedcontent/registration/index.jsp?fw=" + document.URL + "&skipReg=" + skipRegistration);
	}
}

function checkRemainingPagesCookie(cookieName){
	var pageCount = readCookieInt(cookieName);
	if(pageCount == null){
		return null;
	}
	if(!isNaN(pageCount)){
		return pageCount;		
	}
	else{
		return -1;
	}
}

function checkForIMGCookie(cookieName){
	if (document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(cookieName);
		if (offset != -1) 
		{ 
			return true;
		}
	}
	
	//getIMGCookieFromSWL();
		
	return false;
}

function createCookie(name,value,days) {
	if (days) {
   	var date = new Date();
    	date.setTime(date.getTime()+(days*24*60*60*1000));
    	var expires = '; expires='+date.toGMTString();
  	}
  	else{
  		expires = '';
  	}
  	document.cookie = name+'='+value+expires+'; path=/';
}


function readCookieInt(name) {
	var nameEQ = name + '=';
  	var ca = document.cookie.split(';');
  	for(var i=0;i < ca.length;i++) {
   	var c = ca[i];
   	while (c.charAt(0)==' '){ 
    		c = c.substring(1,c.length);
    	}
    	if (c.indexOf(nameEQ) == 0) {
    		str = c.substring(nameEQ.length,c.length);
    		return parseInt(str);
    	}	
  	}
  	return null;
}

function readCookie(name) {
	var nameEQ = name + '=';
  	var ca = document.cookie.split(';');
  	for(var i=0;i < ca.length;i++) {
   	var c = ca[i];
   	while (c.charAt(0)==' '){ 
    		c = c.substring(1,c.length);
    	}
    	if (c.indexOf(nameEQ) == 0) {
    		str = c.substring(nameEQ.length,c.length);
    		return str;
    	}	
  	}
  	return null;
}


function checkForCookie(cookieName){
	if (document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(cookieName);
		if (offset != -1) 
		{ 
			return true;
		}
	}
	return false;
}

/*
function removeFromBI(cookieName){
	try {
		var cookieFound = checkForCookie(cookieName);
		if(cookieFound){
			var cookievalue = readCookie(cookieName);
			if(cookievalue == "true"){
				document.write('<iframe id="removeFromBI" style="position:absolute; visibility:hidden;"></iframe>');
				ifrmPop = document.getElementById('removeFromBI');
				ifrmPop.src = removeCookieFromBIURL;

				dotComIndex = document.domain.lastIndexOf(".com");
				domainIndex = document.domain.lastIndexOf(".", dotComIndex-1);
				document.cookie=cookieName+"=delete; domain=" + document.domain.substr(domainIndex) + ";path=/";
			}
		}
	} catch (e) {
	       //     alert("An exception occurred in removeFromBI. Error name: " + e.name + ". Error message: " + e.message);
	}
		
}

function getIMGCookieFromSWL(){
	var cookieFound = checkForCookie(checkedSWLFlag);
	if(!cookieFound){
		document.write('<iframe id="sendFrame" style="position:absolute; visibility:hidden;"></iframe>');
		ifrmPop = document.getElementById('sendFrame');
		ifrmPop.src = getCookieURL;
		document.cookie=checkedSWLFlag+'='+checkedSWLFlag;
	}
	else{
		//alert("SWL already checked. Don't check again");
	}
}
*/

function getDomain(){ 
	var oldUrl = location.href; 
	var fIndex = oldUrl.indexOf("/"); 
	var newStr = oldUrl.replace(oldUrl.substring(0,fIndex+2),""); 
	var sIndex = newStr.indexOf("/"); 
	return newStr.substring(0,sIndex); 
}

//function added 4/14/2009
function isNewSession(cookieName) {
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(cookieName);
		if (offset != -1) {
			return false;
		}
	}
	return true;
}

// function added 4/14/2009
function createSessionCookie(cookieName, periodType, offset) {
	writePersistentCookie(cookieName, "true", periodType, offset);
}

// function added 4/14/2009
function writePersistentCookie(CookieName, CookieValue, periodType, offset) {

	var expireDate = new Date();
	offset = offset / 1;

	var myPeriodType = periodType;
	switch (myPeriodType.toLowerCase()) {
	case "years":
		var year = expireDate.getYear();
		// Note some browsers give only the years since 1900, and some since 0.
		if (year < 1000)
			year = year + 1900;
		expireDate.setYear(year + offset);
		break;
	case "months":
		expireDate.setMonth(expireDate.getMonth() + offset);
		break;
	case "days":
		expireDate.setDate(expireDate.getDate() + offset);
		break;
	case "hours":
		expireDate.setHours(expireDate.getHours() + offset);
		break;
	case "minutes":
		expireDate.setMinutes(expireDate.getMinutes() + offset);
		break;
	default:
		alert("Invalid periodType parameter for writePersistentCookie()");
		break;
	}

	document.cookie = escape(CookieName) + "=" + escape(CookieValue)
			+ "; expires=" + expireDate.toGMTString() + "; path=/";
}

// function added 4/14/2009
function incrementIncRegVisitCount() {
	return incrementPersistentCookie(incRegVisitCountCookieName, "years", 1);
}

// function added 4/14/2009
function incrementPersistentCookie(cookieName, periodType, offset) {
	var newValue = 1;
	if (readCookie(cookieName) != null) {
		newValue = parseInt(readCookie(cookieName));
		newValue = newValue + 1;
	}

	writePersistentCookie(cookieName, newValue, periodType, offset);
	return newValue;
}

function isMacintosh() {
	//var operSys = "macintosh";
	//var tempStr = navigator.userAgent.toLowerCase();
	//var pos = tempStr.indexOf(operSys);
	//var isMacintosh = (pos != -1);
	//return isMacintosh;
   return false;
}
