  //ffx_swap Will add the html to the innerHTML of the defined div
  //http://fdimages.fairfax.com.au/crtvs/code/itwire/ffxutils.js
  //test module added
  //090326 dfinnecy
  
  
  function fixStr(str){
  return str.toUpperCase().replace(/[/\-\&]/gi,"").replace(/[ +]/,"_");
}

function getVal(zMSmyStr,zMStagline)
{
	zMSmyStr = zMSmyStr+"=";
	var zMSind = zMStagline.indexOf(zMSmyStr)+zMSmyStr.length;
	if(zMSind==(zMSmyStr.length-1)) //test for myStr not found
		return "";
	zMStagline += "&";
	return zMStagline.substring(zMSind,zMStagline.indexOf("&",zMSind));
}

// Testmodule - takes query string values for ad testing
function testMods(testTarg,testKey,testSize){
	testSizeMatch = 0;
	testSizeList = 0;
	if(testSize){
		testSize = testSize.split("_");
		testSizeList=1;
		}
	for(i=0;i<testSize.length;i++){
		if(testTarg.match("AAMSZ="+testSize[i])) testSizeMatch=1;
		}
	if(!testSizeList || testSizeMatch){
		testTarg = testTarg.replace(/SITE=[A-Z\.]+\//gi, "SITE=ZZ.ADTEST/");
		if(testTarg.indexOf("/KEYWORD=")!=-1) testTarg = testTarg.replace(/\/KEYWORD=[A-Z\.]+\//gi, "/KEYWORD="+testKey+"/");
		else testTarg = testTarg.replace(/SITE=ZZ.ADTEST\//gi, "SITE=ZZ.ADTEST/KEYWORD="+testKey+"/");
		}
	return(testTarg);
}


runIt=0;
ranIt=false;

  function ffx_swap(elName, html) {
      var d = document;
      if (!d.getElementById) {
          return;
      }
      var el = d.getElementById(elName);
      if (!el) {
          return;
      }
      var remove = false;
      if (typeof ffxAdExclusionList != "undefined") {
        var thisPage = window.location.pathname;
        for (var i=0; i<ffxAdExclusionList.length; i++) {
          var current = ffxAdExclusionList[i];
          if (current == 'remove_all_ads'){
            return;
          }
          else if (current == 'remove_article_ads'){
            if (thisPage.match(/\/news\/[a-zA-Z0-9-]+\/[a-zA-Z0-9-]+\/[0-9]{4}\/[0-9]{2}\/[0-9]{2}\/[0-9]+.html/) || thisPage.match(/\/articles\/.*?/)){
              remove = true;
            }
          }
          else if (current == 'remove_index_ads'){
            if  (thisPage.match(/\/index.html$/) || !thisPage.match(/.html$/)){
              remove = true;
            }
          }
          else if (current == thisPage) {
            return;
          }
        }
      }
      if (remove == true) {return;}
      el.innerHTML = html;
  }

  var currDom = document.domain, match, rootDomain;
  if(match = currDom.match(/([a-z0-9\-\_]+)\.(com|org|net|info|id|asn|biz|name)/i)) {
    rootDomain = currDom.substr(currDom.indexOf(match[1]));
    document.domain = rootDomain;
}

ran = Math.floor(Math.random()*100000000000000000);
var ad, x = 0;

function runAds(){

while(ad = ffxAds[x]) {

if(typeof(ad.height) == "undefined")
	hei = "1";
else
   hei=ad.height;
if(typeof(ad.width) == "undefined")
	wid = "1";
else
   wid=ad.width;

  var call = "http://www.itwire.com/ffxd/intermediatoryV2.html?w="+wid+"&h="+hei+"&ad=http://direct.fairfax.com.au/jserver/acc_random="+ran+"/";
  if(ad.adtype == null || (ad.adtype.toLowerCase()!="panorama" && ad.adtype.toLowerCase()!="doubleisland"))
   call = "http://direct.fairfax.com.au/hserver/acc_random="+ran+"/";

   cat = "";
   if(typeof(ffxpageVars.site) != "undefined" && ffxpageVars.site=="virtualisation")
     ffxpageVars.cat="virtualisation";
   if(typeof(ffxpageVars.cat) == "undefined" || ffxpageVars.cat.length<=0)
    cat = "OTHER";
    else{
    cat = ffxpageVars.cat;
   if(typeof(ffxpageVars.cat1) != "undefined" && ffxpageVars.cat1.length>0)
 	cat += "."+ffxpageVars.cat1;
 }

  var pageString = "SITE=ONL.CH.ITWIRE.TECH/AREA=TECH.ITWIRE."+fixStr(cat)+"/";
  var adString = "";
  for(i in ad)
  if(i!="height"&&i!="width")
    adString += fixStr(i).toUpperCase()+"="+fixStr(ad[i]).toUpperCase()+"/";

//  if(adString.indexOf("adspace")==-1)
  	adString += "AAMSZ="+wid+"X"+hei+"/";
  var adspace = wid+"x"+hei;

  for(i in ffxpageVars){
	pageString+= fixStr(i).toUpperCase()+"="+fixStr(ffxpageVars[i]).toUpperCase()+"/";
	}
  if(adString.length>0)
  	adString = adString.substring(0,adString.length-1);
  var targetString = escape(pageString+adString);
  if(ad.adtype == null || (ad.adtype.toLowerCase()!="panorama" && ad.adtype.toLowerCase()!="doubleisland"))
      targetString=unescape(targetString);
  if(adspace=="468x60"){
  wid="728";
  hei="90";
  }
  
  //test for adtest and modify target if neccessary
  targetString = unescape(targetString.toUpperCase());
  var urlStr = window.location.search.toUpperCase();
  if(urlStr.indexOf("ADTEST=TRUE")!=-1 && urlStr.indexOf("ADTESTKEYWORD=")!=-1){
  	testKeyword = getVal("ADTESTKEYWORD",urlStr);
  	testSizes = getVal("ADTESTSIZE", urlStr);
  	targetString = escape(testMods(targetString,testKeyword,testSizes));
  	}
  
  
  var iFrame = "<iframe id='ffxadiframe"+x+"' name='ffxadiframe"+x+"' allowtransparency='true' width="+wid+" height="+hei+" marginwidth=0 marginheight=0 hspace=0 VSPACE=0 frameborder=0 scrolling=no bordercolor='#000000' src='"+call+targetString+"'></iframe>";
  var holderDivId = "ffxad"+(x + 1);
  ffx_swap(holderDivId, iFrame);
  x++;
}
}

var alreadyrunflag=0 //flag to indicate whether target function has already been run

if (document.addEventListener)
  document.addEventListener("DOMContentLoaded", function(){alreadyrunflag=1; runAds()}, false)
else if (document.all && !window.opera){
  document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
  var contentloadtag=document.getElementById("contentloadtag")
  contentloadtag.onreadystatechange=function(){
    if (this.readyState=="complete"){
      alreadyrunflag=1
      runAds()
    }
  }
}
else if(runIt==0){
try{

var backupOnload = window.onload;
window.onload=function(){
if((typeof(backupOnload) != "undefined") &&(backupOnload != null)&&!ranIt){
ranIt=true;
backupOnload();}
setTimeout("if (!alreadyrunflag) runAds()", 0)
}
}catch(e){}
runIt++;
}