var userCookieName = "img";
var pageCookieName = "thresholdPgCount";
var incRegCookieName = "incRegThresholdPgCount";
var pageCountThreshold = 2; //for 3 set as 2
var incPageCountThreshold = 2; //for 3 set 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 = "false";


//vars added 4/14/2009
var sessionCookieName = "sessionCookie";
var sessionLength = 30;
var sessionUnit = "minutes";
var incRegVisitCountCookieName = "incRegVisitCount";
var incRegNoThanksCookieName = "incRegNoThanksCookie";
var quickRegNoThanksCookieName = "quickRegNoThanksCookie";
var incRegErrorCookieName = "incRegErrorCookie";
var incRegVisitCountThreshold = 2;
var redirVersion="AHC1.0";



var imgFound = checkForIMGCookie(userCookieName);

if(!imgFound){
	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){
			if(!isMacintosh()){
				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 setRegPageCookie(name, value, offset, periodType) {
 	writePersistentCookie(name,value,periodType,offset);
}

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){
				if(!isMacintosh()){
					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 redirect(){
	var currentDomain = document.domain;
	var referrerURL = document.referrer;
	index = referrerURL.indexOf(currentDomain);
	if(index>-1){
		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;
		}
	}
	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 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) {
//alert(CookieName + " , " + periodType) ;
	var expireDate = new Date();
	offset = offset / 1;

	var myPeriodType = periodType;
//alert('test' + CookieName + " , " + 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;
}

