function Ads () {
    this.adUrl = "http://ad.doubleclick.net/adi/";
    this.site = "";
    this.zone = "";
    this.park = null;
    this.page = null;
    this.bannerDimensions = "728x90";
    this.bottomBannerId = "footer-banner"
    this.bottomBannerPosition = "bottomban";
    this.upperBannerId = "header-banner"
    this.upperBannerPosition = "topban";
    this.skyScraperId = "right-column-ad";
    this.skyscraperPosition = "rightcol";
    this.skyscraperDimensions = "160x600";
    this.tile = 1;
    this.parkTypes = {
        "america": "theme",
        "discoverykingdom": "animal",
        "fiestatexas": "theme",
        "greatadventure": "animal",
        "greatamerica": "theme",
        "greatescape": "theme",
        "hurricaneharborla": "water",
        "hurricaneharbornj": "water",
        "hurricaneharbortexas": "water",
        "magicmountain": "theme",
        "national": null,
        "newengland": "theme",
        "overgeorgia": "theme",
        "overtexas": "theme",
        "stlouis": "theme",
        "whitewater": "water"
    };
    
    this._isPage = function __isPage(re) {
        var href = document.location.href;
        return re.test(href);
    };

    this.isHomePage = function _isHomePage() {
        var parkName = this.getParkName();
        var re1 = new RegExp(parkName + '\/index.aspx(\\?.*)?$', 'i');
        var re2 = new RegExp(parkName +'\/(index.aspx)?$', 'i');
        return this._isPage(re1) || this._isPage(re2);
    };
    
    this.isSpanishPage = function _isSpanishPage() {
        var re = /espanol.aspx$/i;
        return this._isPage(re);
    };
    
    
    this.isEventsLandingPage = function _isEventsLandingPage() {
        var re = /events\/CalendarEvents.aspx$/i;
        return this._isPage(re);
    };
    
    this.isTicketsLandingPage = function _isTicketsLandingPage() {
        var re1 = /tickets\/index.aspx$/i;
        var re2 = /tickets\/tickets.aspx$/i;
        return this._isPage(re1) || this._isPage(re2);
    };
    
    this.isSeasonPassPage = function _isSeasonPassPage() {
        var re = /[playpass|seasonpass].aspx$/i;
        return this._isPage(re);
    };
    
    this.isParkInfoPage = function _isParkInfoPage() {
        var re = /info\/parkInfo.aspx$/i;
        return this._isPage(re);
    };
    
    this.isDirectionsPage = function _isDirectionsPage() {
        var re = /info\/directions.aspx/i;
        return this._isPage(re);
    };
    
    this.isFaqPage = function _isFaqPage() {
        var re = /info\/[faq|faqs].aspx$/i;
        return this._isPage(re);
    };
    
    this.getParkName = function _getParkName() {
        var regex = /.com\/(\w+)\//i;
        if (document.location.href.indexOf(".com") == -1) {
            regex = /\/WORKAREA\/(\w+)\//i;
        }
        var matches = regex.exec(window.location);
        var parkName = matches[1] !== undefined ? matches[1] : matches[2];
        return parkName;
    };

    this.getSite = function _getSite() {
        return "six." + this.getParkName().toLowerCase();
    };
    
    this.getZone = function _getZone() {
        if (this.isHomePage()) {
            return "home";
        }
        var regex = new RegExp(this.getParkName() + "\/(\\w+)\/(\\w+.aspx)?$", "i");
        var matches = document.location.href.match(regex);
        if (matches && matches.length && matches.length > 1) {
            return matches[1];
        } else {
            return "home";
        }
        return "";
    };
    
    this.getParkType = function _getParkType() {
        try {
            return this.parkTypes[this.getParkName().toLowerCase()];
        } catch (e){
            return null;
        }
    }
    
    this.getPage = function _getPage() {
        if (this.isHomePage()) {
            return "home";
        } else if (false) {
            return "ticket";
        } else if (this.isTicketsLandingPage()) {
            return "ticketlanding";
        } else if (this.isEventsLandingPage()) {
            return "eventlanding";
        } else if (this.isSpanishPage()) {
            return "spanish";
        } else if (this.isParkInfoPage()) {
            return "parkinfo";
        } else if (this.isDirectionsPage()) {
            return "directions";
        } else if (this.isFaqPage()) {
            return "faq";
        } else if (this.isSeasonPassPage()) {
            return "seasonpass";
        }
        return null;
    };

    this.insertAds = function _insertAds() {
        this.site     = this.getSite();
        this.zone     = this.getZone();
        this.page     = this.getPage();
        this.parkType = this.getParkType();
        this.insertHeaderBanner();
        this.insertFooterBanner();
        this.insertSkyScraper();
    };
    
    this._insertAd = function __insertAd(id, dimensions, position) {
        var el = document.getElementById(id);
        if (el) {
            el.innerHTML = this.generateAd(dimensions, position);
            this.tile++;
        }
    }

    this.insertFooterBanner = function _insertFooterBanner() {
        this._insertAd(
            this.bottomBannerId, 
            this.bannerDimensions, 
            this.bottomBannerPosition
        );
    };

    this.insertHeaderBanner = function _insertHeaderBanner() {
        if (!this.isHomePage() && !this.isTicketsLandingPage()) {
            var topNav = document.getElementById("topNav-bucket");
            topNav.className = topNav.className + " header-tall";
            this._insertAd(
                this.upperBannerId,
                this.bannerDimensions, 
                this.upperBannerPosition
            );
        }
    };
    
    this.insertSkyScraper = function _insertSkyScraper() {
        if (!this.isTicketsLandingPage()) {
            this._insertAd(
                this.skyScraperId,
                this.skyscraperDimensions, 
                this.skyscraperPosition
            );
        }
    };
        
    this.generateUrl = function _generateUrl(size, position) {
        var ord = window.ord || Math.floor(Math.random()*1E16);
        var url = this.adUrl + this.site + "/" + this.zone + ";pos=" + position;
        if (this.page) {
            url += ";page=" + this.page;
        }
        if (this.parkType) {
            url += ";park=" + this.parkType;
        }
        url += ";tile=" + this.tile + ";sz=" + size + ";ord=" + ord + "?";
        return url;
    };

    this.generateAd = function _generateAd(size, position) {
        var url = this.generateUrl(size, position);
        var width = size.split("x")[0];
        var height = size.split("x")[1];
        var html = "<iframe src='" + url + "' width='" + width + 
                   "' height='" + height + "' marginwidth='0' marginheight='0'" + 
                   " frameborder='0' scrolling='no'>";
        if (navigator.userAgent.indexOf("Gecko") == -1)
        {
            html +='<script type="text/javascript" src="' + url + '?"><\/script>';
        }
        html += "</iframe>"
        return html;
    };
}
