/*	Dart banner 
	Author: mike foskett
	Version: 2.1 - 07/04/2009
*/
/* author: Simon Willisons - http://simon.incutio.com/archive/2004/05/26/addLoadEvent */
function addLoadEvent(func){
	if(!document.getElementById || !document.getElementsByTagName)return;
	var oldonload=window.onload;
	if(typeof window.onload!='function')window.onload=func
	else window.onload=function(){oldonload();func()}
};

/* author: Robert Nyman - http://www.robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/ */
var getElementsByClassName2=function(className,tag,elm){
	/* if(document.getElementsByClassName){
		getElementsByClassName=function(className,tag,elm){
			elm=elm||document;
			var elements=elm.getElementsByClassName(className),nodeName=(tag)? new RegExp("\\b"+tag+"\\b","i"):null,returnElements=[],current;
			for(var i=0,il=elements.length;i<il;i+=1){
				current=elements[i];
				if(!nodeName||nodeName.test(current.nodeName)){returnElements.push(current)}
			}
			return returnElements;
		};
	}else*/ if(document.evaluate){
		getElementsByClassName2=function(className,tag,elm){
			tag=tag||"*";
			elm=elm||document;
			var classes=className.split(" "),classesToCheck="",xhtmlNamespace="http://www.w3.org/1999/xhtml",namespaceResolver=(document.documentElement.namespaceURI===xhtmlNamespace)? xhtmlNamespace:null,returnElements=[],elements,node;
			for(var j=0,jl=classes.length;j<jl;j+=1){classesToCheck+="[contains(concat(' ',@class,' '),' "+classes[j]+" ')]";}
			try	{elements=document.evaluate(".//"+tag+classesToCheck,elm,namespaceResolver,0,null);}
			catch (e){elements=document.evaluate(".//"+tag+classesToCheck,elm,null,0,null);}
			while ((node=elements.iterateNext())){returnElements.push(node);}
			return returnElements;
		};
	}else {
		getElementsByClassName2=function(className,tag,elm){
			tag=tag||"*";
			elm=elm||document;
			var classes=className.split(" "),classesToCheck=[],elements=(tag==="*"&&elm.all)?elm.all:elm.getElementsByTagName(tag),current,returnElements=[],match;
			for(var k=0,kl=classes.length;k<kl;k+=1){classesToCheck.push(new RegExp("(^|\\s)"+classes[k]+"(\\s|$)"));}
			for(var l=0,ll=elements.length;l<ll; l+=1){
				current=elements[l];
				match=false;
				for(var m=0,ml=classesToCheck.length; m<ml; m+=1){
					match=classesToCheck[m].test(current.className);
					if (!match){break}
				}
				if (match){returnElements.push(current)}
			}
			return returnElements;
	};	}
	return getElementsByClassName2(className,tag,elm);
};

/* author: mike foskett - http://webSemantics.co.uk/ */
function $id(id){return(document.getElementById(id)?document.getElementById(id):false);}
function idExists(id){return($id(id)?true:false);}
function replaceContent(id,content){if(idExists(id)){$id(id).innerHTML=content;}}

function advertCode(id){
	var values=id.split("_");
	if (values.length==6){
		// there should always be 6 items

		// Check for branding collision
		var tile=values[2]; // == unique tile number (1==left,2==centre,3==right)
		var show=true;
		if (tile==1 && idExists('brandLeft')){$id(id).style.display="none";show=false;}
		if (tile==2 && idExists('brandHeaderBottom')){$id(id).style.display="none";show=false;}
		if (tile==3 && idExists('brandRight')){$id(id).style.display="none";show=false;}

		if (show){

			var sitename='tesco.direct.com';

			var zonename=values[0]; // == category
			var type=(values[1]=="all")?"":";kw="+values[1]; // == subcategory
			tile=";tile="+tile; // == unique tile number (1==left,2==centre,3==right)

			// dcopt=ist may only appear once on a single page
			var dcopt="";
			if (dcoptIST){
				dcopt=";dcopt="+values[3];
			}

			// get the size sets, and width and height. Note: There may be more than one.
			var sz=";sz=160x600";
			var width="160";
			var height="600";
			switch(values[4]){
				case "s1":
				  sz=";sz=160x600";
				  sz+=",120x600";
				  break;    
				case "s2":
				  sz=";sz=300x250";
				  width="300";
				  height="250";
				  break;  
				case "s3":
				  sz=";sz=180x150";
				  width="180";
				  height="150";
				  break;
				case "s4":
				  sz=";sz=120x600";
				  width="120";
				  height="600";
				  break;
			}

			// ordering of banners
			var ord=";ord=123456789";
			switch(values[5]){
				case "o1":
				  ord=";ord="+randomNumber;
				  break;    
				case "o2":
				  ord=";ord=123456789";
				  break;
				case "o3":
				  ord=";ord=[timestamp]"; // not implemented as yet
				  break;
			}

			var str="";
			str+='<iframe src="http:\/\/ad.uk.doubleclick.net\/adi\/tesco.com.direct\/'+zonename+type+tile+sz+dcopt+ord+'?" width="'+width+'" height="'+height+'" title="Advertising" frameborder="0" style="margin:0; border:0 solid; padding:0" scrolling="no">';
			str+='<script type="text\/javascript" src="http:\/\/ad.uk.doubleclick.net\/adj\/tesco.com.direct\/'+zonename+type+tile+sz+dcopt+ord+'?"><\/script>';
			str+='<\/iframe>';
			replaceContent(id,str);
}	}	}


function installDart(){
	// is there anything with a class="brand" ?
	var brands=getElementsByClassName2('brand');
	if (!brands.length){
		
		// get all objects with a class="dart"
		var darts=getElementsByClassName2('dart');
		if (darts){
			for (var i=0;i<darts.length;i+=1){
				advertCode(darts[i].id);
				dcoptIST=false;
}	}	}	}



// Use same random number on all Dart banners on a single page.
var randomNumber=Math.random()*10000000000000000;

// dcopt=ist is set only once on a single page.
var dcoptIST=true;

addLoadEvent(installDart);