function updateFrame(frameId){
	var frameElement = document.getElementById(frameId);
	var innerBody = frameElement.contentWindow.document.body;
	innerBody.onclick = function(){
		return calcHeight(frameId);
	}
	calcHeight(frameId);
}
function invigioUpdateFrame(elementBody,domain){
	var innerBody = elementBody;
	innerBody.onclick = function(){
		return calcInvigioHeight(elementBody,domain);
	}
	calcInvigioHeight(elementBody,domain);
}

function fix_flash(dd) {
	var embeds = dd.getElementsByTagName('embed');
	for(i=0; i<embeds.length; i++)  {
		embed = embeds[i];
		var new_embed;
		// everything but Firefox & Konqueror
		if(embed.outerHTML) {
			var html = embed.outerHTML;
			// replace an existing wmode parameter
			if(html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
				new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i,"wmode='transparent'");
			// add a new wmode parameter
			else
				new_embed = html.replace(/<embed\s/i,"<embed wmode='transparent' ");
			// replace the old embed object with the fixed version
			embed.insertAdjacentHTML('beforeBegin',new_embed);
			removeChildSafe(embed);
		} else {
			// cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
			new_embed = embed.cloneNode(true);
			if(!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase()=='window')
				new_embed.setAttribute('wmode','transparent');
			embed.parentNode.replaceChild(new_embed,embed);
		}
	}
	// loop through every object tag on the site
	var objects = dd.getElementsByTagName('object');
	for(i=0; i<objects.length; i++) {
		object = objects[i];
		var new_object;
		// object is an IE specific tag so we can use outerHTML here
		if(object.outerHTML) {
			var html = object.outerHTML;
			// replace an existing wmode parameter
			if(html.match(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")[a-zA-Z]+('|")\s*\/?\>/i)){
				new_object = html.replace(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")window('|")\s*\/?\>/i,'<PARAM NAME="wmode" VALUE="transparent">');
			}
			// add a new wmode parameter
			else{
				new_object = html.replace(/<\/object\>/i,"<param name='wmode' value='transparent' />\n</object>");
			}
			// replace the old embed object with the fixed versiony
			object.insertAdjacentHTML('beforeBegin',new_object);
			removeChildSafe(object);
		}
	}
}

function removeChildSafe(el) {
    //before deleting el, recursively delete all of its children.
    while(el.childNodes.length > 0) {
        removeChildSafe(el.childNodes[el.childNodes.length-1]);
    }
    el.parentNode.removeChild(el);
}
function calcInvigioHeight(elementBody,domain){
	//var frameElement = document.getElementById(frameId);
	var innerBody = elementBody;
//	frameElement.width = 0;
	
	var height = innerBody.scrollHeight + 20;
	if (navigator.appName.indexOf ("Microsoft") !=-1)
    {
		var width = innerBody.scrollWidth;
    }
    else
    {
		safari = innerBody.scrollWidth;
    	width = jQuery(innerBody).width();
    	if(width < safari){
    		width = safari;
    	}
    }
	var pipe = document.getElementById('helpframe');
    // Cachebuster a precaution here to stop browser caching interfering
	
    pipe.src = domain + '/helperInvigo.html?height='+height+'&cacheb='+Math.random();
}
function calcHeight(frameId){
	var frameElement = document.getElementById(frameId);
	var innerBody = frameElement.contentWindow.document.body;
	fix_flash(frameElement.contentWindow.document);
	jQuery(innerBody).css('margin', '0');
	jQuery(innerBody).css('padding', '0');
	frameElement.width = 0;
	frameElement.height = innerBody.scrollHeight + 20;
	if (navigator.appName.indexOf ("Microsoft") !=-1)
    {
		frameElement.width = innerBody.scrollWidth;
    }
    else
    {
		safari = innerBody.scrollWidth;
    	frameElement.width = jQuery(innerBody).width();
    	if(frameElement.width < safari){
    		frameElement.width = safari;
    	}
    }
	var links = innerBody.getElementsByTagName('a');
	for(var i=0; i<links.length; i++){
		if(links[i].href.indexOf('http://'+document.domain+'/') != 0){
			links[i].target = '_blank';
		}else{
			links[i].target = '_self';
		}
	}
}

