// $Id: adSwap.js,v 1.3 2005/04/21 06:16:11 jhedley Exp $
// 2006/12/5 AJB Added remove_* behaviour
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));
}

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]));
  try{document.domain = rootDomain;}catch(e){}
}
saveDom = rootDomain.replace(/\.com\.au/i,"");
rootDomain = rootDomain.replace(/\.com\.au/i,"").replace(/(the)|(bane)/i,"").toUpperCase();

// into the specified element, place the given html
function ffx_swap(elName, html) {

if(html.indexOf("ffxcam")!=-1){

framit = html;
framit = framit.replace(/&amp;/gi,"&");
framitorig = framit;
start1 = framit.indexOf(".ng")+4;
end = framit.indexOf("\"",start1);
end2 = framit.indexOf("'",start1);
end3 = framit.indexOf("?",start1);
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;
targStr = framit.substring(start1,end);
variablesa= targStr.split("&");

pos = getVal("loc",targStr);
if(pos.length!=0)
  pos = "/POS="+pos.toUpperCase();

cat2 = getVal("cat",targStr).toUpperCase();

if(cat2.length!=0)
 cat2 = "."+cat2;



target = "SITE=ONL.MH.HPG.REALESTATE/AREA=REALESTATE.HOMEPRICEGUIDE"+cat2.toUpperCase()+pos+"/";


for(i in variablesa)
{
	myVar = variablesa[i]+"";
	if(myVar.indexOf("=")!=variablesa[i].length-1&&myVar.length<100&&myVar.length!=0&&myVar.indexOf(" ")==-1&&i!="site")
		target+=myVar.toUpperCase().replace(/\+/gi,"_")+"/";
}


wid=1;
hei=1;
target = target.replace(/ADSPACE=MMMSHOWSPONSOR/gi,"ADSPACE=330X40");
target = target.replace(/ADSPACE=MULTILINK/gi,"ADSPACE=295X60");
change=target.match(/ADSPACE=([^\/]*)/i);

if(change!=null&&!/\d+x\d+/i.test(change[1]))
{
if(change[1]=="TEXTAD")
  target+="AAMSZ=0X"+getVal("loc",targStr);
else if(change[1]=="NETWORKAD"){
  target+="AAMSZ=1X4";
  wid = "300";
  hei = "250";
}
else{
try{
	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+"/";
	}catch(e){target += "/AAMSZ=ERROR";}
}

}
else if(change!=null){
	target += "AAMSZ="+change[1]+"/";
}

framit=framit.replace(/ffxcam[^/]*\/html\.ng/,"direct.fairfax.com.au/hserver");
framit=framit.replace(/ffxcam[^/]*\/js\.ng/,"direct.fairfax.com.au/jserver");
document.write("<!-- "+framit.substring(0,framit.indexOf("direct.fairfax.com.au")+30)+" -->");
document.write("<!-- "+target+" -->");
document.write("<!-- "+framitorig.substring(end,framitorig.length)+" -->");
html = framit.substring(0,framit.indexOf("direct.fairfax.com.au")+30)+target+"/"+framitorig.substring(end,framitorig.length);
if(html.indexOf("hserver")!=-1)
{
 	html = html.replace(/hserver/gi,"jserver");
	html = html.substring(0,html.indexOf("http://direct"))+"http://www.homepriceguide.com.au/ffxd/intermediatoryV2.html?ad="+html.substring(html.indexOf("http://direct"),html.length);
}
html=html.replace(/\?ord=([\d]+)/,"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 snippetsS
    // 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;
    }
}


