function MSNadManager(codes){
	this.codes=codes;
	this.encountered_sizes=[];

}

MSNadManager.prototype.refreshAds = function(){ 
	for(var i=0;i<this.encountered_sizes.length;i++){
		var size=this.encountered_sizes[i];
		var adDiv='ad_'+size;
		dapMgr.enableACB(adDiv);
		var ss=size.split(/x/);
		dapMgr.renderAd(adDiv,"&PG="+this.codes[size].code+"&AP="+this.codes[size].ap_code,ss[0],ss[1]);
	}
	if(window.s !== undefined && window.s.t!==undefined && typeof(window.s.t)==='function'){
		s.t();
	}
	if(window.smsn !== undefined && window.smsn.t!==undefined && typeof(window.smsn.t)==='function'){
		smsn.t();
	}

};
MSNadManager.prototype.triggerAd = function(size){
	if(this.codes[size]!==undefined){
		var ss=size.split(/x/);
		var found=false;
		if(this.codes[size].static !== undefined){
			var adDiv='ad_'+size;
			var e=document.getElementById(adDiv);
			if(e){
				var src=this.codes[size].static.src;
				var target='';
				var link='javascript:;';
				if(this.codes[size].static.target !==undefined){
					target='target="'+this.codes[size].static.target+'"';
				}
				if(this.codes[size].static.link !==undefined){
					link=this.codes[size].static.link;
				}
				
				e.innerHTML='<a '+target+' href="'+link+'"><img src="'+src+'"/></a>';
			}
		}
		else{
			var code=this.codes[size].code;
			var ap_code=this.codes[size].ap_code;
			if(arguments[1]!==undefined){
				if(arguments[1].code!==undefined){
					code=arguments[1].code;
				}
				if(arguments[1].ap_code!==undefined){
					ap_code=arguments[1].ap_code;
				}
			}
			dap("&PG="+code+"&AP="+ap_code,ss[0],ss[1]);
			for(var i=0;i<this.encountered_sizes.length;i++){
				if(this.encountered_sizes[i]===size){
					found=true;
					break
				}
			}
			if(!found){
				this.encountered_sizes.push(size);
			}
		}

	}
};
MSNadManager.prototype.displaySmallAd = function(){
	if(!(this.codes['120x30']===undefined || this.codes['120x30'].code===undefined)){
		var small_ad=document.getElementById('micro_ad');
		if(small_ad){
			small_ad.style.display='block';
		}
		
	}
}


function adManager(codes){
	this.sizes=codes['sizes'];
	this.area=codes['code'];
	this.settings=codes['settings'];
	this.initTargeting();
	this.initAds();
}
adManager.prototype.initTargeting = function(){
	var cookie=this.getCookie('sn_nbc_b');
	var tgt=this.getCookie('tgt');
	if(tgt){
		var c=tgt.split(/\|\|/);
		for(var i=0;i<c.length;i++){
			var val=c[i].split(/=/);
			if(val.length==2){
				this.settings[val[0]]=val[1];
			}
		}
	}
	else if(cookie){
		var c=cookie.split(/\|/);
		tgt='';
		for(var i=0;i<c.length;i++){
			if(c[i].match(/^ams-/)){
				var code=c[i].replace(/^ams-/,'');
				if(code.match(/^0/)){
					var age=parseInt(code.replace(/^0/,''));
					tgt+='||age='+age;
					this.settings.age=age;
					continue;
				}
				else if(code.match(/^2/)){
					var gender='female'
					if(code=='201'){
						gender='male';
					}
					this.settings.gender=gender;
					tgt+='||gender='+gender;
				}
			}
		}
	}
	if(tgt!=null && tgt!=''){
		tgt=tgt.replace(/^\|\|/,'');
		var e= new Date()
		e.setTime((e.getTime()+3600000*24*180));
		document.cookie = "tgt="+escape(tgt)+ ";expires="+e.toGMTString();
	}
}
adManager.prototype.getCookie = function(name)
{
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ((!start) && (name!= document.cookie.substring( 0, name.length ))){
		return null;
	}
	if (start==-1){
		return null;
	}
	var end = document.cookie.indexOf( ";", len );
	if (end==-1){end = document.cookie.length;}
	return unescape(document.cookie.substring(len,end));
}
adManager.prototype.initAds = function(){
	for(var i=0;i<this.sizes.length;i++){
		window['AAMB'+(i+1)]=''; //set AAMB variables
	}
	this.loadAdVars();
}
adManager.prototype.refreshAds = function(){
	var self=this;
	var server=this.settings.server;
	var settings=this.getSettings();
	settings+='area='+this.area+'/';
	for(var i=0;i<this.sizes.length;i++){
		var url=server+'hserver/'+settings+'aamsz='+this.sizes[i];
		var id='ad_'+this.sizes[i];
		var w=parseInt(this.sizes[i].replace(/x\d+$/,''));
		var h=parseInt(this.sizes[i].replace(/^\d+x/,''));
		var node=document.getElementById(id);
		if(node){
			node.innerHTML='<iframe class="adframe" id="iframe_'+this.sizes[i]+'"scrolling="no" frameborder="0" src="'+(url)+'" width="'+(w)+'" height="'+(h)+'" allowTransparency="true" marginwidth="0" marginheight="0" margintop="0" marginleft="0"></iframe>';

		}
	}
	if(window.s !== undefined && window.s.t!==undefined && typeof(window.s.t)==='function'){
		s.t();
	}
	if(window.smsn !== undefined && window.smsn.t!==undefined && typeof(window.smsn.t)==='function'){
		smsn.t();
	}
}
adManager.prototype.getSettings = function(){
	var url='';
	var random=Math.round(Math.random() * 10000000000);
	for(var i in this.settings){
		if(i!=='server'){
			url+=i+'=';
			if(this.settings[i]===true){
				url+=random;
			}
			else{
				url+=this.settings[i];
			}
			url+='/';
		}
	}
	return url;
}
adManager.prototype.getAdSourceURL = function(){
	var server=this.settings.server;
	
	var url='AAMALL/';
	url+=this.getSettings();
	url+='area='+this.area+'/';
	for(var i=0;i<this.sizes.length;i++){
		url+='AAMB'+(i+1)+'/aamsz='+this.sizes[i]+'/';
	}
	return server+'bserver/'+url;
}
adManager.prototype.loadAdVars = function(){
	document.write('<SCR' + 'IPT SRC="' + this.getAdSourceURL()  +
	'?" type="text/JavaScript" language="JavaScript">');
	document.write('</SCR' + 'IPT>');
}
adManager.prototype.triggerAds = function(){
	for(var i=0;i<this.sizes.length;i++){
		var id='ad_'+this.sizes[i];
		var ad=document.getElementById(id);
		if(ad){
			ad.style.display='block';
		}
		var wh=this.sizes[i].split(/x/);
		this.renderAd(id,'AAMB'+(i+1),wh);
	}
}
adManager.prototype.renderAd = function(divName, aambTag,wh){
	var invObj = 'INV' + divName;
	try {
		var code = eval(aambTag);
	}
	catch(aamErr){ }

	if (typeof(code) != 'undefined') {
		var node=document.getElementById(divName);
		if(node===null){
			return;
		}
		if(navigator.userAgent.indexOf('MSIE') > -1) {
			document.getElementById(divName).innerHTML +='<div id="TMP' + divName + '"style="display:none">' + escape('<body><div id="adDiv">' + code + '</div>') + '</div><iframe name="' + invObj + '" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" width="'+wh[0]+'" height="'+wh[1]+'" ></iframe>';
			window.frames[invObj].document.location ='javascript:unescape(parent.document.getElementById(\'TMP' +divName + '\').innerHTML)';
		}else{
			document.writeln('<div id="' + invObj + '" style="display:none;width:'+wh[0]+'px;height:'+wh[1]+'px">' + 
			code + '<script type="text/javascript" defer="true">' +
			'document.getElementById(\'' + divName + '\').innerHTML = ' +
			'document.getElementById(\'' + invObj + '\').innerHTML;' +
			'document.getElementById(\'' + invObj + 
			'\').innerHTML = \'\';</scr' + 'ipt></div>');
		}
	}
}

var MSNad=new MSNadManager(AD_CODES);
var MGRad=new adManager(MGR_CODES);


