

/* iFrame SSI IV - iframe auto-resize height script
 * ©2008 John Davenport Scheuer
 * This notice must remain for legal use. */

(function($){
function sizeFrame(){
if(document.getElementsByTagName('frameset').length||!document.getElementsByTagName('iframe').length)
return;
var frEls=this==window? document.getElementsByTagName('iframe') : [this], s='scrollHeight',
frObs=this==window? this.frames : sizeFrame.ff(this), o='offsetHeight', b='body', de='documentElement';
for (var brd=0, st, cs, hb, hd, d='document', i = frEls.length-1; i > -1; --i){
if(this!=window||sizeFrame.chk(frEls[i])){
if(/^style /.test(frEls[i].className)){
st=frObs[i][d].createElement('link');
st.rel='stylesheet';
st.type='text/css';
st.href=frEls[i].className.replace(/^style ([^ ]+).*/, '$1');
frObs[i][d].getElementsByTagName('head')[0].appendChild(st);
}
if(frEls[i].currentStyle&&/^\d+(px){0,1}$/.test(frEls[i].currentStyle.borderWidth))
brd=isNaN(brd=parseInt(frEls[i].currentStyle.borderWidth)*2)? 0 : brd;
if(frObs[i][d][b].style.overflow)
cs=frObs[i][d][b].style.overflow;
frObs[i][d][b].style.overflow='hidden';
frEls[i].height=10;
frEls[i].height=sizeFrame.ie55? frObs[i][d][b][s]+20 : Math.max(Math.max(frObs[i][d][b][o], frObs[i][d][de][o]), Math.max(frObs[i][d][b][s], frObs[i][d][de][s]))+20;
frObs[i][d][b].style.overflow=typeof cs=='string'? cs : '';
}};
if(!sizeFrame.setup){
for (var i = frEls.length-1; i > -1; --i)
if(sizeFrame.chk(frEls[i]))
sizeFrame.loadup(frEls[i]);
sizeFrame.setup=true;
}};

sizeFrame.ff=function(f){
var frEls=document.getElementsByTagName('iframe'), frObs=window.frames;
for (var i = frEls.length-1; i > -1; --i) if(frEls[i]==f) return [frObs[i]];
return null;
}

sizeFrame.chk=function(f){
var re=new RegExp('( '+f.id+' )|( '+f.name+' )|( '+f.className.split(' ').join(' )|( ')+' )');
return !re.test(' '+sizeFrame.excluded.join(' ')+' ');
}

sizeFrame.loadFrame=function(el,t){
if(!document.layers&&document.getElementById&&typeof window.frames[t].location.href=='string'){
window.open(el.href,t);
return false;
}
return true;
}

sizeFrame.loadup=function(o){
if(!sizeFrame.apply)
return;
if ( typeof o.addEventListener != "undefined" )
o.addEventListener( "load", function(){sizeFrame.apply(o);}, false );
else if ( typeof o.attachEvent != "undefined" )
o.attachEvent( "onload", function(){sizeFrame.apply(o);} );
else {
if ( o.onload != null ) {
var oldOnload = o.onload;
o.onload = function(e) {
oldOnload(e);
sizeFrame.apply(o);
};
}
else
o.onload = function(){sizeFrame.apply(o);};
}};

if(document.getElementsByTagName&&window.frames)
sizeFrame.loadup(window);

sizeFrame.killIframes=function(){
var d=document, w=window;
if (d.layers) return;
if((w=w.frames)&&(w=w.frames[0])&&(!d.getElementById||typeof w.location.href!='string'))
if((d=d.all)&&(d=d.tags)&&(d=d('iframe')))
for(var i=0;i<d.length;++i)
d[i].style.display='none';
}

sizeFrame.excluded=['bob', 'carol', 'ted', 'alice']; // set iframe ID's, names, or class names to exclude


<!--[if IE 5.5]>



sizeFrame.ie55=true;



<![endif]-->
})(jQuery);