var DEBUG = false;	// SHOW REAL BANNERS
//var DEBUG = true;	// SHOW GREY TABLE

var DISABLE_BANNERS = false;

var DISABLE_DART = false;	// DART banners
//var DISABLE_DART = true;  // Falk banners 

//Variables
// list of urls that don't show the banners, but just a gray rectangular.
// 0=url, 1=isRedactieUrl, 2=showTopBanner.
var redactieUrls = new Array(
        new Array(new RegExp("http://int.www.overgeld.nl"),true, false), 
	new Array(new RegExp("http://www.overgeld.nl.acc"),true, true), 
        new Array(new RegExp("http://localhost"),true, true)
    );

//is url a page we want without banners
function isRedactieUrl(url) {
    if (url.lastIndexOf(":") > 4) {
        url = url.substring(0, url.lastIndexOf(":"));
    }
    if (url.lastIndexOf("/") > 6) {
        url = url.substring(0, url.lastIndexOf("/"));
    }
    for (i=0; i<redactieUrls.length; i++) {
        if (url.match (redactieUrls[i][0])) {
            return i;
        }
    }
    return -1;
}

//Print the banner div
function showBanner(size) {
	
	if (DISABLE_BANNERS == true)
	{
		return;
	}
	

	var size=size.toLowerCase();

	var currentUrl = location.href;

    var bannerUrlIndex = isRedactieUrl(currentUrl);
	if( bannerUrlIndex!=-1) {
	    var bannerUrl = redactieUrls[bannerUrlIndex];
	    if (bannerUrl[1]) {
    		var dimension = size.split("x");
		    if(dimension[0]==728 && dimension[1]==90 && bannerUrl[2]) {
			    document.write("<div style=\"width: 0px; height: 0px; align: center; valign: center; border: 1px solid black; background-color: #cccccc; color: #777777; font-family:Arial; font-size: 7pt; text-align: center;\">(banner)</div>");
			    return;
		    }
		    document.write("<div style=\"width: "+(dimension[0]-2)+"px; height: "+(dimension[1]-2)+"px; align: center; vAlign: center; border: 1px solid black; background-color: #cccccc; color: #777777; font-family:Arial; font-size: 7pt; text-align: center;\">(banner)</div>");
		    return;
		}
	}

	if (DISABLE_DART == false)
	{
		 showDartBanner(size);
		 return;
	}

	var path = document.location.pathname;

	var article = isArticle(path);
	var section="";

	var sectionPath;
	if(article) {
		path = stripArticle(path);
		if (path.substring(0,8) == "/rubriek") {
			path = path.replace("/rubriek",""); 
		}
		sectionPath = getSection(path);
	} else {
		if (path.substring(0,8) == "/rubriek") {
			path = path.replace("/rubriek",""); 
		}
		sectionPath = getSection(path);
	}

	var section = normalizeSection(sectionPath);
	var ad = getAd(section, article, size);

	printBanner(ad);
}

//Get the bannerId
function showBannerId(id) {
	var ad = tsAds2[id];
	if(ad != null) {
		printBanner(ad);
	} else {
		//alert('not found: '+id);
	}
}

//Get all bannerIds
function showBannerIds(ids) {
	fisherYates(ids);
	for(var i=0; i<ids.length; i++) {
		showBannerId(ids[i]);
	}
}

//Randomize bannerIds
function fisherYates ( myArray ) {
	var i = myArray.length;
	if ( i == 0 ) return false;
	while ( --i ) {
		var j = Math.floor( Math.random() * ( i + 1 ) );
		var tempi = myArray[i];
		var tempj = myArray[j];
		myArray[i] = tempj;
		myArray[j] = tempi;
	}
}

//Print the actual banner
function printBanner(ad) {
	var addesc = ad["id"];	
	var adfalk = ad["falk"].toString();
	var kid = ad["kid"];
	var bid = ad0["bid"];
	var xl = ad["xl"];
	var yl = ad["yl"];
	var adfalk1 = adfalk.substring(0,2);
	var adfalk2 = adfalk.substring(2,4);
	var adfalk3 = adfalk.substring(4,6);
	
	//document.write(adfalk1+" "+adfalk2+" "+adfalk3);

	var now = Math.round((new Date()).getTime()/1000);

	var rep = /_/g;
	var X = addesc.replace(rep, " ");
	
	document.write('<!-- '+X+'  '+ + '/'+ adfalk1 + '/'+ adfalk2 + '/'+ adfalk3 +' -->');
	document.write('<!-- BEGIN: AdSolution-Website-Tag 4.3 : Telegraaf.nl / '+addesc+' -->');
	document.write('<scr'+'ipt language="javascript" type="text/javascript">');
	document.write('Ads_kid='+kid+';Ads_bid='+bid+';Ads_xl='+xl+';Ads_yl='+yl+';');
	document.write('</scr'+'ipt>');
	document.write('<scr'+'ipt type="text/javascript" language="javascript" src="http://a.as-eu.falkag.net/dat/cjf/00/'+adfalk1+'/'+adfalk2+'/'+adfalk3+'.js"></scr'+'ipt>');
	document.write('<noscr'+'ipt>');
	document.write('<a href="http://sel.as-eu.falkag.net/sel?cmd=lnk&dat='+adfalk+'&opt=0&rdm='+now+'" target="_blank"><img src="http://sel.as-eu.falkag.net/sel?cmd=ban&dat='+adfalk+'&opt=0&rdm=[timestamp]" alt="Please click here." border="0"/></a>');
	document.write('</noscr'+'ipt>');
	document.write('<!-- END:AdSolution-Tag 4.3 -->');

}

//Get banner from bernard-shakey-db
function getAd(section, article, size) {
	var i;
	var fallback;
	
	for(i=0; i<tsAds.length;i++) {
		var ad = tsAds[i];

		if(ad["id"] == section+"_"+size) {
			if(article) {
				fallback = tsAds[i];
			} else {
				return tsAds[i];
			}
		}
		if(ad["id"] == section+"_Artikel_"+size) {
			if(article) {
				return tsAds[i];
			} else {
				fallback = tsAds[i];
			}
		}
	}

	if(fallback) {
		return fallback;
	}
}

//get section with the path
function getSection(path) {
	if(path == null || path == "") {
		return "";
	}

	var sectionRE = /\/([^\/]*)/;
	var results = sectionRE.exec(path);

	if(results.length > 1 && results[1] != "") {
		//document.write("$$$"+results[1]);
		return results[1];
	} else {
		return "";
	}
}

//Create prefix to find banner in bernard_shakey_db
function normalizeSection(path) {
	var prefix = "Telegraaf_overGeld";

	if(path == null || path == "") {
		return prefix;
	}
	//	document.write("\n path" + path + " -- prefix = " + prefix);

	switch(path) {
		case "lenen":
			return prefix+"_Lenen";
		case "hypotheken":
			return prefix+"_Hypotheken";
		case "verzekeringen":
			return prefix+"_Verzekeringen";
		case "sparen":
			return prefix+"_Sparen";
		case "belasting":
			return prefix+"_Belastingen";
		case "pensioen":
			return prefix+"_Pensioen";
		case "news":
			return prefix+"_Nieuws";
		case "expert":
			return prefix+"_Experts";
		default:
			return prefix+"";

	}

}

//Check is path is article
function isArticle(path) {
	if(path == null || path == "")  {
		return 0;
	}

	var articleRE = /\/(.*)\.(html|ece)/;
	var results = articleRE.exec(path);

	if(results != null) {
		if(results.length > 0) {
			return 1;
		}
	}
	return 0;
}

//Strip article from special characters to prevent from breaking
function stripArticle(path) {
	if(path == null || path == "") {
		return "/";
	}

	if(path.substr(path.length-3, 3)=="ece") {
		var articleRE = /(.*)\/([A-z0-9]*\.ece$)/;
		var results = articleRE.exec(path);
		var result;
		if(results[1] == "") {
			result = "/";
		} else {
			result = results[1];
		}
	} else
	if(path.substr(path.length-4, 4)=="html") {
		var articleRE = /(.*)\/[0-9]*\/([A-z0-9_\-\.]*\.html$)/;
		var results = articleRE.exec(path);
		var result;
		if(results[1] == "") {
			result = "/";
		} else {
			result = results[1];
		}
	}
	return result;
}


/*-----------------------DART------------------------------------*/


var tilecounter = 0;
var random = Math.round(Math.random()*100000000);
function showDartBanner(size) {

    var prefix = "http://ad.doubleclick.net/";
    //var domain = "P4219.test.overgeld.nl/"; // for test
    var domain = "P3851.overgeld.nl/"; // for live
    // var random = Math.round(Math.random()*100000000);
    var zone = getZoneFromPath(location.pathname);
    if (typeof(segQS) == "undefined")
    {
    	segQS="";
    } 
    var specific = zone + ";sz=" + size + ";segQS="  + segQS + ";tile=" + (++tilecounter) + ";ord=" + random + "?";
    
	size = size.toLowerCase();

    var xIndex = size ? size.indexOf("x") : '';
    var imgSize = '';
    var width;
    var height;
    if(size &&  xIndex != -1) {
        width = size.substr(0, xIndex);
        height = size.substr(xIndex+1, size.length);
        imgSize = 'width="' + width + '" height="' + height + '"';
    }

    if (DEBUG == false) {
		var tag = '<script language="JavaScript" src="' + prefix + 'adj/' + domain + specific + '" type="text/javascript"></script>\n';
		document.write(tag);
		document.write("<!--" + prefix + 'adj/' + domain + specific+"-->");
    } else {
		var mytag = 'zone=' + zone ;
		document.write("<div style=\"width: "+width+"px; height: "+height
			+"px; border: 1px solid black; background-color: #cccccc; color: #777777; font-family:Arial; text-align: center;\">"
		  +mytag+"</div>");
    }
	
	
}

function stringEndsWith(str, strmatch) {
	return str.lastIndexOf(strmatch)==str.length-strmatch.length;
}

// translate the current path to a configured zone
function getZoneFromPath(path) {

	var zone = 'other';
	var originalPath = path;
	
	if (path.indexOf(".html") != -1){
		xIndex = (path.substring(1, path.length)).lastIndexOf("/");
		path = path.substring(0, xIndex);
	}
    xIndex = (path.substring(1, path.length)).lastIndexOf("/");
	path = path.substring(0, xIndex+2);

	zone = matchZoneWithPath(path);
	
	while (path!="/" && zone=="other") {
		 xIndex = path.substring(0, path.length-1).lastIndexOf("/");
		path = path.substring(0, xIndex+1);
		zone = matchZoneWithPath(path);
		if (path=="/")
		{
			zone='other';
		}
	} 

	if (originalPath.indexOf(".html") != -1 || originalPath.indexOf(".ece") != -1 ) {
		zone = zone + '_artikel';  	
	} 
	
	return zone;
}

//match the path with the corresponding zone
function matchZoneWithPath(newPath) {
	var zone = 'other';
	/*
		<!--  begin ad tag: P4219.test.overgeld.nl/belastingen (120x600) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/pensioen (336x280) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/verzerkeringen (120x600) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/hypotheken (121x173) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/sparen (468x60) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/nieuws (468x60) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/homepage (468x60) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/lenen (121x173) -->
	<!--  begin ad tag: P4219.test.overgeld.nl/experts (468x60) -->

	*/
	switch(newPath) {
			case '/':					        zone = 'homepage';  break; //homepage
			case '/rubriek/belastingen/':       zone = 'belastingen';  break;
			case '/rubriek/pensioen/':	        zone = 'pensioen';  break;
			case '/rubriek/verzekeringen/':     zone = 'verzekeringen';  break;
			case '/rubriek/zorgverzekering/':     zone = 'zorgverzekering';  break;
			case '/rubriek/hypotheken/':        zone = 'hypotheken';  break;
			case '/rubriek/sparenenbeleggen/':	zone = 'sparen';  break;
			case '/nieuws/':		            zone = 'nieuws';  break;
			case '/rubriek/lenen/':		        zone = 'lenen';  break;
			case '/expert/':                    zone = 'experts';  break;
			
	}
	return zone;
}
