var ord = Math.random() * 10000000000000000;
if (typeof( window[ 'advertising_site' ] ) == "undefined") var advertising_site = null;
if (typeof( window[ 'advertising_zone' ] ) == "undefined") var advertising_zone = null;
if (typeof( window[ 'advertising_section' ] ) == "undefined") var advertising_section = null;
if (typeof( window[ 'advertising_category' ] ) == "undefined") var advertising_category = null;
if (typeof( window[ 'advertising_page_type' ] ) == "undefined") var advertising_page_type = null;
if (typeof( window[ 'advertising_content_category' ] ) == "undefined") var advertising_content_category = null;
if (typeof( window[ 'advertising_keyword' ] ) == "undefined") var advertising_keyword = "";
if (typeof( window[ 'advertising_dcopt' ] ) == "undefined") var advertising_dcopt = "dcopt=ist;"; else var advertising_dcopt="";
var Ads = function(){

	//default ad_zones and ad_sections for each site (listed as specific url -> generic url) 
	var cbc = ['/programguide/', '/contact/', '/video/', '/nozone/'];
	var sports = ['/olympics/', '/hockey/', '/football/', '/alpineskiing/', '/curling/', '/figureskating/', '/basketball/', '/baseball/', '/soccer/', '/amateur/', '/livevideo/', '/sports/', '/tennis/', '/golf/', '/racing/'];
	var news = ['/bc/', '/calgary/', '/edmonton/', '/sask/', '/manitoba/', '/toronto/', '/ottawa/', '/montreal/', '/ns/', '/pei/', '/newfoundland/', '/nb/', '/north/', '/sudbury/', '/windsor/', '/thunderbay/', '/canada/', '/world/', '/arts/books/', '/arts/film/', '/arts/tv/', '/arts/music/', '/arts/artdesign/', '/arts/theatre/', '/arts/media/','/arts/', '/consumer/', '/diversions/', '/news/'];
	var money = ['/money/'];
	var health = ['/health/'];
	var technology = ['/technology/'];
	var ent = ['/thehour/', '/littlemosque/', '/tudors/', '/coronation/', '/dragonsden/', '/stevenandchris/', '/mercerreport/', '/airfarce/', '/22minutes/', '/justforlaughs/', '/beingerica/', '/entertainment/'];
	var tv = ['/television/', '/national/', '/fifth/', '/jeopardy/', '/wheeloffortune/', '/marketplace/', '/natureofthings/', '/heartland/', '/documentaries/'];
	var radio = ['/radioone/', '/radio2/', '/radio3/', '/podcasting/', '/sirius/', '/frequency/','/radio/'];
	var weather = ['/weather/'];
	var kids = ['/kids/', '/kidscbc/'];
	var sites = ['cbc.news.ca','cbc.money.ca', 'cbc.health.ca', 'cbc.technology.ca', 'cbc.sports.ca', 'cbc.ent.ca', 'cbc.tv.ca', 'cbc.src.ca', 'cbc.weather.ca', 'cbc.kids.ca', 'cbc.ca'];
	var mapping = [news, money, health, technology, sports, ent, tv, radio, weather, kids, cbc]; //order matters (listed as specific url -> generic url) (last element is the default ad_site & last element of default ad_site is the default ad_zone)
	return{
		init : function(){
			this.parseUrl(document.location.href);
		},
		parseUrl : function(uri){
			var path = uri;
			var ad_tag_flags = {};
			var ad_tags = {};
			//check if any advertising tags have already been manually set
			ad_tags.ad_site = (typeof( window[ 'advertising_site' ] ) != "undefined")?advertising_site:null;
			ad_tags.ad_zone = (typeof( window[ 'advertising_zone' ] ) != "undefined")?advertising_zone:null;
			ad_tags.ad_page_type = (typeof( window[ 'advertising_page_type' ] ) != "undefined")?advertising_page_type:null;
			ad_tags.ad_section = (typeof( window[ 'advertising_section' ] ) != "undefined")?advertising_section:null;
			ad_tags.ad_category = (typeof( window[ 'advertising_category' ] ) != "undefined")?advertising_category:null;
			ad_tags.content_category = (typeof( window[ 'advertising_content_category' ] ) != "undefined")?advertising_content_category:null;
			
			if (ad_tags.ad_section == null && ad_tags.ad_zone != null) ad_tags.ad_section = ad_tags.ad_zone;
			
			//flags to indicate that variables were set manually
			ad_tag_flags.site_is_set = (ad_tags.ad_site == null)?false:true;
			ad_tag_flags.zone_is_set = (ad_tags.ad_zone == null)?false:true;
			ad_tag_flags.page_type_is_set = (ad_tags.ad_page_type == null)?false:true;
			ad_tag_flags.section_is_set = (ad_tags.ad_section == null)?false:true;
			ad_tag_flags.category_is_set = (ad_tags.ad_category == null)?false:true;
			ad_tag_flags.content_category_is_set = (ad_tags.content_category == null)?false:true;

			//check if on a search results page before chopping off query string
			var keywords = path.match(/.cbc.ca\/search\/(.*)q=([^&]*)/);
			if (keywords != null) {
				advertising_keyword = 'kw='+keywords[2]+';';
				advertising_keyword = advertising_keyword.replace(/@/g,"%40"); //ie doesn't escape this unsafe character
			}

			//parse path for page_type if not already manually set
			if (ad_tag_flags.page_type_is_set == false) {
				ad_tags.ad_page_type = 'story'; //default page type to story
				if (path.match('index.html') || path.substr((path.length-1),1)=='/') {
					ad_tags.ad_page_type = 'index';
				}
			}
			
			//search for hash and remove
			var hsh = path.indexOf("#");
			if (hsh != -1) path = path.substring(0, hsh);

			//search for query string and remove
			var qs = path.indexOf("?");
			if (qs != -1) path = path.substring(0, qs);
			
			//parse path for ad site and ad zone		
			if (ad_tags.ad_site == null || ad_tags.ad_zone == null || ad_tags.ad_section == null){
				var tagz = this.findAdTags({path:path, tagz:ad_tags, flags:ad_tag_flags});
				ad_tags.ad_site = tagz.ad_site;
				ad_tags.ad_zone = tagz.ad_zone;
				ad_tags.ad_section = tagz.ad_section;
			}
			
			//parse path for cbc wide ad categories
			if (ad_tag_flags.category_is_set == false){
				var category_matches;
				if (path.match(/\/stanleycup([0-9]*)\//) != null){
					category_matches = path.match(/\/stanleycup([0-9]*)\//);
					ad_tags.ad_category = 'stanleycup' + category_matches[1];
				}else if (path.indexOf('/hockeynightincanada/') != -1){
					ad_tags.ad_category = 'hockeynightincanada';
				}else if (path.match(/\/([A-Za-z-]+)votes([0-9]*)\//) != null){
					category_matches = path.match(/\/([A-Za-z-]+)votes([0-9]*)\//);
					ad_tags.ad_category = category_matches[1] + 'votes' + category_matches[2];
				}else if (path.match(/\/greycup([0-9]+)\//) != null){
					category_matches = path.match(/\/greycup([0-9]+)\//);
					ad_tags.ad_category = 'greycup' + category_matches[1];
				}else if (path.indexOf('/olympics/') != -1) ad_tags.ad_category = 'olympics';
				else if (path.indexOf('/ourgame/') != -1) ad_tags.ad_category = 'ourgame';
				else if (path.indexOf('/testthenation/') != -1) ad_tags.ad_category = 'testthenation';
				else if (path.indexOf('/forums/') != -1) ad_tags.ad_category = 'forums';
				else if (path.indexOf('/photogallery/') != -1 || path.indexOf('/photogalleries/') != -1) ad_tags.ad_category = 'photogallery';
				else if (path.indexOf('/blogs/') != -1) ad_tags.ad_category = 'blogs';
			}
			//check if ad_zone starts with number or contains a number following a slash or contains whitespace (not allowed)
			if (ad_tags.ad_zone != null){
				ad_tags.ad_zone = ad_tags.ad_zone.replace(/\s+/g,'');
				if (ad_tags.ad_zone.match(/^[0-9]|\/[0-9]/) != null) {ad_tags.ad_zone = null; ad_tag_flags.zone_is_set=false;}
			}
			//check if values in key value pairs contain spaces and replace with %20
			if (ad_tags.ad_section != null) ad_tags.ad_section = ad_tags.ad_section.replace(/\s+/g,'%20');
			if (ad_tags.ad_category != null) ad_tags.ad_category = ad_tags.ad_category.replace(/\s+/g,'%20');
			if (ad_tags.ad_page_type != null) ad_tags.ad_page_type = ad_tags.ad_page_type.replace(/\s+/g,'%20');
			if (ad_tags.content_category != null) ad_tags.content_category = ad_tags.content_category.replace(/\s+/g,'%20');
			
			//set defaults if still null
			ad_tags.ad_site =(ad_tags.ad_site==null && ad_tag_flags.site_is_set==false)?sites[sites.length-1]:ad_tags.ad_site;
			ad_tags.ad_zone =(ad_tags.ad_zone==null && ad_tag_flags.zone_is_set==false)?mapping[mapping.length-1][mapping[mapping.length-1].length-1]:ad_tags.ad_zone;
			
			//format ad_zone and ad_section to drop into ad tag
			if (ad_tags.ad_zone != null) {
				ad_tags.ad_zone = ad_tags.ad_zone.replace(/^\//,'');
				ad_tags.ad_zone = ad_tags.ad_zone.replace(/\/$/,'');
			}
			if (ad_tags.ad_section != null) {
				ad_tags.ad_section = ad_tags.ad_section.replace(/^\//,'');
				ad_tags.ad_section = ad_tags.ad_section.replace(/\/$/,'');
			}
			
			//set ad variables
			advertising_site = ad_tags.ad_site;
			advertising_zone = ad_tags.ad_zone;
			advertising_section = ad_tags.ad_section;
			advertising_page_type = ad_tags.ad_page_type;
			advertising_category = ad_tags.ad_category;
			advertising_content_category = ad_tags.content_category;
		},
		findAdTags : function(o){
			var flags = o.flags;
			var path = o.path;
			var tagz = o.tagz;
			for (var i=0; i < mapping.length; i++){
				for (var j=0; j < mapping[i].length; j++){
					if (path.indexOf(mapping[i][j]) != -1){
						tagz.ad_site = (flags.site_is_set == false)?sites[i]:tagz.ad_site; 
						tagz.ad_zone = (flags.zone_is_set == false)?mapping[i][j]:tagz.ad_zone;
						tagz.ad_section = (flags.section_is_set == false)?tagz.ad_zone.replace(/\//g, ""):tagz.ad_section;
						return tagz;
					}
				}
			}
			return tagz;
		}
	};
}();
Ads.init();
document.write('<script language="JavaScript" src="http://ad.doubleclick.net/adj/'+ advertising_site + '/' + advertising_zone + ';pos=topleader;' + advertising_dcopt + 'tile=1;sz=728x90;page='+ advertising_page_type +';section='+advertising_section+';category='+advertising_category+';contcat='+advertising_content_category+';'+advertising_keyword+'ord=' + ord + '?" type="text/javascript"><\/script>');