// $Id: adSwap.js,v 1.3 2005/04/21 06:16:11 jhedley Exp $
// 2006/12/5 AJB Added remove_* behaviour

// into the specified element, place the given html

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));
}
function ffx_swap(elName, html) {
if(html.indexOf("ffxcam")!=-1){
framit = html;
if(typeof(pageid)=="undefined")
 pageid = Math.floor(1000000*Math.random());

framit = framit.replace(/&amp;/gi,"&");
framitbackup = framit;
start1 = framit.indexOf(".ng")+4;
end = framit.indexOf("\"",start1);
end2 = framit.indexOf("'",start1);
end3 = framit.indexOf("?",start1);
wid=0;
hei=0;
if(end==-1)
 end=9999;
if(end2==-1)
 end2=9999;
if(end3==-1)
 end3=9999;
if(end2<end && end2<end3)
 end = end2;
else if(end3<end2 && end3<end)
 end = end3;
target1 = framit.substring(start1,end);
drivevariables = target1.split("&");
var cat,subcat = "";
cat1 = getVal("cat1",target1);
subcat = getVal("subcat",target1);
pos = getVal("loc",target1);
if(pos.length!=0)
  pos = "/POS="+pos.toUpperCase();

if(cat1 == "NEWSREVIEWS"||cat1 == "ARTICLEDETAIL")
{
 temp = subcat;
 subcat = cat1;
 cat1 = temp;
}
if(subcat.length != 0)
 subcat = "."+subcat;

if(cat1.length==0)
 cat1 = "OTHER";
target = "SITE=ONL.MH.STAYZ.TRAVEL/AREA=TRAVEL.STAYZ."+cat1.toUpperCase().replace(/-|\s|%/gi,"")+pos+"/pageid="+pageid+"/";
for(i in drivevariables)
{
if(i!=""&&i.length<30&&drivevariables[i].toString().length<30&&i.indexOf(" ")==-1){
	if(drivevariables[i].toString().indexOf("=")!=drivevariables[i].toString().length-1&&drivevariables[i].toString().indexOf("site=")==-1&&drivevariables[i].toString().indexOf("area=")==-1)
	    target+=unescape(drivevariables[i].toString()).toUpperCase().replace(/\+/gi,"_").replace(/\&|\-|\//gi,"").replace(/areaname/i,"LOCAREA")+"/";
}
}
change=target.match(/ADSPACE=([^\/]*)/);
if(!/\d+x\d+/i.test(change[1]))
{
	if(framit.toLowerCase().indexOf("adspace=networkad")!=-1)
	{
	target +="AAMSZ=1X4/";
	}
		else if(framit.toLowerCase().indexOf("adspace=domaintext")!=-1)
		{
		target +="AAMSZ=0X"+getVal("loc",target1)+"/";
		}else if(framit.toLowerCase().indexOf("adspace=domainresizable")!=-1)
		{
		target +="AAMSZ=2X"+getVal("loc",target1)+"/";
		}else if(framit.toLowerCase().indexOf("adspace=iwos")!=-1)
		{
		target +="AAMSZ=3X"+getVal("loc",target1)+"/";
		}else if(framit.toLowerCase().indexOf("adspace=resizable")!=-1)
		{
		target +="AAMSZ=638X68/";
	}else if(framit.toLowerCase().indexOf("iframe")!=-1){
		wid=framit.match(/\swidth\s?=["'\s]+([^'"\s]+)["'\s]/i)[1];
		hei=framit.match(/\sheight\s?=["'\s]+([^'"\s]+)["'\s]/i)[1];
		target +="AAMSZ="+wid+"X"+hei+"/";}
}
else
{
if(framit.toLowerCase().indexOf("adspace=140x35")!=-1)
 target = target.replace(/ADSPACE=([^/]*)/gi,"ADSPACE=140X25/AAMSZ=140X25");
else
 target = target.replace(/ADSPACE=([^/]*)/gi,"ADSPACE=$1/AAMSZ=$1");
 }
framit = framit.replace(/ffxcam[^/]*\/html\.ng/,"direct.fairfax.com.au/hserver");
framit = framit.replace(/ffxcam[^/]*\/js\.ng/,"direct.fairfax.com.au/jserver");
if(framit.indexOf("direct.fairfax.com.au/hserver")!=-1&&target.indexOf("ADTYPE")!=-1)
{

	framit = framit.replace(/direct.fairfax.com.au\/hserver/gi,"www.stayz.com.au/ffxd/intermediatoryV2.html?ad=http://direct.fairfax.com.au/jserver");
}

html = framit.substring(0,framit.indexOf("direct.fairfax.com.au")+30)+target+framitbackup.substring(end,framitbackup.length).replace(/\?ord=([0-9]*)/gi,"/acc_random=$1");
}
    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;
}

// shuffles a list of html snippets into an element
function ffx_shuffle_swap(elName) { // and a list of html snippets
    // get the array of html from the arguments (not a real array)
    var snippets = new Array();
    for (var i = 1; i < arguments.length; i++) { snippets[i-1] = arguments[i]; } // skip the first el
    ffx_shuffle(snippets);
    var html = snippets.join("<br />"); // maybe should pass in?
    ffx_swap(elName, html);
}



// inline Fisher Yates shuffles the given array of objects
function ffx_shuffle(list) {
    for (var i = list.length -1; i >= 0; --i) {
        var j =  Math.floor(Math.random() * (i + 1));
        if (i == j) continue;
        var temp = list[i];
        list[i] = list[j];
        list[j] = temp;
    }
}


