function AdFrequencyCappingRedirect(moduleId, adType, days, hours, minutes, redirectUrl, dartZone)
{
    this.moduleId = moduleId;
    this.timer = null;
    this.adType = adType;
    this.intDays = days;
    this.intHours = hours;
    this.intMinutes = minutes;
    this.intMStoExpire = (days * 86400000) + (hours * 3600000) + (minutes * 60000);
    this.redirectUrl=redirectUrl
    this.dartZone=dartZone
    
    var currentTime = new Date();
    this.intCurrentTime = currentTime.getTime();
    
    this.tryAdRedirect = tryAdRedirect;
    this.isAdRedirectNeeded = isAdRedirectNeeded;
    this.startAdRedirect = startAdRedirect;
    this.setAdRedirectCookie = setAdRedirectCookie;
    
    // if moduleId is not set, use a generic cookie name (just adType)
    this.cookieName = (this.moduleId) ? this.adType + '_Redirect' + this.moduleId : this.adType + '_Redirect';
}

function startAdRedirect() 
{
	window.location = this.redirectUrl+"?origLocation="+window.location.pathname+"&dartZone="+this.dartZone;
}

function tryAdRedirect() 
{
    if (this.isAdRedirectNeeded()) 
    {
        this.setAdRedirectCookie();
        this.startAdRedirect();
    }
}


function isAdRedirectNeeded() 
{
	if ((typeof (hideAllAds) == 'undefined' || hideAllAds == false) && (document.referrer == null || document.referrer.indexOf('intromessage') == -1))
    {
        var lastRunDate = getCookie(this.cookieName);
        // get generic cookie if module-specific cookie isn't set
        lastRunDate = (lastRunDate == null) ? getCookie(this.adType+'_Redirect') : lastRunDate;
        if (null != lastRunDate) 
        {
            if ((this.intCurrentTime - lastRunDate) > this.intMStoExpire)
                return true;
            else 
                return false;
        } 
        else 
        {
            return true;
        }
    }
    return false;
}


function setAdRedirectCookie()
{
    setCookie(this.cookieName, this.intCurrentTime, 30);
}    