if (document.layout.ad1.value.length == 0) {
	document.layout.ad1.value = default_ad_layout;
}

var show_ad_format_flags = new Object;

// Get the appropriate ad for the section
function getTargetAd(v_weights) {
	var adArray = new Array;

	var tainted_weight = 0;

	// This should never change!
	var v_adList = ["336x800","336x600","336x280","160x600"];
	var adList = new Array;
	var weights = new Array;

	var unitCtr = 0;
	if (document.layout.ad1.value.length > 0) { unitCtr++; }
	if (document.layout.ad2.value.length > 0) { unitCtr++; }
	if (document.layout.ad3.value.length > 0) { unitCtr++; }
	if (document.layout.ad4.value.length > 0) { unitCtr++; }

	if (unitCtr < 4) {
		for (ctr = 0; ctr < v_adList.length; ctr++) {
			if ((document.layout.ad1.value.match(v_adList[ctr])) ||
				(document.layout.ad2.value.match(v_adList[ctr])) ||
				(document.layout.ad3.value.match(v_adList[ctr])) ||
				(document.layout.ad4.value.match(v_adList[ctr]))) {
				adList.push(v_adList[ctr]);
				weights.push(v_weights[ctr]);
			}
		}

		var currentweight = 0;
		for (ctr = 0; ctr < weights.length; ctr++) {
			currentweight += weights[ctr];
		}
		tainted_weight = Math.round((100-currentweight)/unitCtr);
	} else {
		adList = v_adList;
		weights = v_weights;
	}

	// Random number generator
	var rand_unrounded=Math.random()*100;
	var rand_number=Math.round(rand_unrounded);

	var endrange = -1;

	var target;

	// Match against ad ranges
	for (ctr = 0; ctr < weights.length; ctr++) {
		startrange = endrange + 1;
		endrange = endrange + weights[ctr] + tainted_weight;

		// If the random number falls within the weighted range
		if ((rand_number >= startrange) && (rand_number < endrange)) {
			target = adList[ctr];
		}
	}

	// Export the appropriate ad list
	if (document.layout.ad1.value.match(target)) {
		adArray = document.layout.ad1.value.split(",");
	} else if (document.layout.ad2.value.match(target)) {
		adArray = document.layout.ad2.value.split(",");
	} else if (document.layout.ad3.value.match(target)) {
		adArray = document.layout.ad3.value.split(",");
	} else if (document.layout.ad4.value.match(target)) {
		adArray = document.layout.ad4.value.split(",");
	} else { // Failsafe
		adArray = document.layout.ad1.value.split(",");
	}

	// replacing tower ads with default layouts (rectangles) in order to
	// prevent "right column animation"
	if (fixed_right_column && adArray[0].match("160x600") &&
		!document.body.className.match("ad-column-180")) {
		adArray = default_ad_layout.split(",");
	}

	return adArray;
}

function setShowAdFormatFlags(adArray) {
	if (adArray[0].length <= 0) {
		show_ad_format_flags["336x280"] = true;
		adArray[0] = "336x280";
	} else {
		for (ctr = 0; ctr < adArray.length; ctr++) {
			if (adArray[ctr].match(/^\d+x\d+$/)) {
				show_ad_format_flags[adArray[ctr]] = true;
			}
		}
	}

	// temp display double-rectangle unit
	if (double_rectangles && show_ad_format_flags["336x280"]) {
		show_ad_format_flags["336x280_2"] = true;
	}
}

// Get the ad and show the appropriate units
var adArray = getTargetAd(adWeights);

// Populate Falk sub-section based on destination URL
// This overrides all previous rules defined
var fixed_targeting = false;
var targetAdStr;
var currenturl = parent.location.href;

for (var i=0; i < fixedtarget.length; i++) {
	var pattern = fixedtarget[i][0];

	if (!fixed_targeting && currenturl.match(pattern)) {
		targetAdStr = fixedtarget[i][1];
		fixed_targeting = true;     
	}       
}

if (fixed_targeting) {
 	var strictAdArray = new Array;
 	strictAdArray = targetAdStr.split(",");
	adArray = strictAdArray;
}

setShowAdFormatFlags(adArray);
