var $D = YAHOO.util.Dom;
var $ = $D.get;

cleanWhitespace = function(el) {
	var el = YAHOO.util.Dom.get(el);
	for (var i = 0; i < el.childNodes.length; i++) {
		var node = el.childNodes[i];
		if (node.nodeType === 3 && !/\S/.test(node.nodeValue)) {
			node.parentNode.removeChild(node);
		}
	}
};    

function swfReplacement(hTag) { 
	
	var sizes = [];
	sizes['H1'] = '22';
	sizes['H2'] = '20';
	sizes['H3'] = '18';
	
	var colours = [];
	colours['H1'] = '#ffffff';
	colours['H2'] = '#ffffff';
	colours['H3'] = '#ffffff';
	
	var heights = [];
	heights['H1'] = '22';
	heights['H2'] = '18';
	heights['H3'] = '46';
		
	var widths = [];
	widths['H1'] = 50;
	widths['H2'] = 10;
	widths['H3'] = 0;
	
	//fixed widths for IE
	var widthsIE = [];
	widthsIE['H1'] = 350;
	widthsIE['H2'] = 150;
	widthsIE['H3'] = 160;
		
	cleanWhitespace(hTag); 
		
    forceId(hTag);
	      
	var text = '';
	var link = false;
	
	if(hTag.lastChild.nodeType == 3) {
		 text = hTag.lastChild.nodeValue;   
	} else {
	   //#TODO - make this check that we have a link, don't assume
	   link = hTag.lastChild.href;
	   text = hTag.lastChild.childNodes[0].nodeValue;
	}

	var width = hTag.offsetWidth ? hTag.offsetWidth : hTag.parentNode.offsetWidth;
	//if (navigator.userAgent.indexOf("MSIE")==-1) {
	//	var so = new SWFObject("/cms/front/swf/header.swf", hTag.id, width+widths[hTag.tagName], heights[hTag.tagName], "8");
	//} else {
		//IE here
		var so = new SWFObject("/cms/front/swf/header.swf", hTag.id, widthsIE[hTag.tagName], heights[hTag.tagName], "8");
	//}
	so.addVariable("header", encodeURI(text));	
	
	if(link){
		so.addVariable("href", link);   
	}
	so.addVariable("size", sizes[hTag.tagName]);
	so.addVariable("colour", colours[hTag.tagName]);   							
	so.addParam("wmode", "transparent");							
	so.write(hTag.id);
	
}

var id_counter = 0;	
function forceId(element) {
	if(!element.id) {
		element.id = 'replacement_'+id_counter; 
	}
	id_counter++;
}

function countTagAsChild(element, tag) {
	var tmp;
	var counter = 0;
	for(var i=0; i<element.childNodes.length; i++) {
		if(element.childNodes[i].nodeName == tag) {
			counter++;
		}
		counter += countTagAsChild(element.childNodes[i], tag);
	}
	
	return counter;
}
function findFirstByDepth(element, tag) {
	var tmp;
	for(var i=0; i<element.childNodes.length; i++) {
		if(element.childNodes[i].nodeName == tag) {
			return element.childNodes[i];
		}
		if(tmp = findFirstByDepth(element.childNodes[i], tag)) {
			return tmp;
		}
	}
	
	return false;
}

window.onload = function(){        
	  var swfTargetClass = 'replacer';
	  var replaceable = $D.getElementsByClassName(swfTargetClass);
	  //fails on MSIE5 because it can't cope with finding by class :-(
	  for(var i=0;i<replaceable.length;i++) {
		swfReplacement(replaceable[i]);
	  }
		
	  var bannerHolder = $('banner');
	  if(bannerHolder) {
	  	swfBannerReplacement(bannerHolder);
	  }
	
	  document.getElementsByTagName('body')[0].className = '';
}