// The purpose of this code is to fix the height of overflow: auto blocks, because some browsers can't figure it out for themselves.
function smf_codeBoxFix(){
var codeFix = document.getElementsByTagName('code'),
i;
for(i = codeFix.length - 1; i >= 0; i--){
if(is_webkit && codeFix[i].offsetHeight < 20){
codeFix[i].style.height = (codeFix[i].offsetHeight + 20) + 'px';
}else if(is_ff && (codeFix[i].scrollWidth > codeFix[i].clientWidth || codeFix[i].clientWidth === 0)){
codeFix[i].style.overflow = 'scroll';
}else if('currentStyle' in codeFix[i] && codeFix[i].currentStyle.overflow == 'auto' && (codeFix[i].currentStyle.height === '' || codeFix[i].currentStyle.height == 'auto') && (codeFix[i].scrollWidth > codeFix[i].clientWidth || codeFix[i].clientWidth === 0) && (codeFix[i].offsetHeight !== 0)){
codeFix[i].style.height = (codeFix[i].offsetHeight + 24) + 'px';
}
}
}
// Add a fix for code stuff?
if((is_ie && !is_ie4) || is_webkit || is_ff){
addLoadEvent(smf_codeBoxFix);
}
// Toggles the element height and width styles of an image.
function smc_toggleImageDimensions(){
var oImages = document.getElementsByTagName('IMG'),
oImage,
onclick = function(){
this.style.width = this.style.height = this.style.width == 'auto' ? null : 'auto';
};
for(oImage in oImages){
// Not a resized image? Skip it.
if(oImages[oImage].className === undefined || oImages[oImage].className.indexOf('bbc_img resized') == -1){
continue;
}
oImages[oImage].style.cursor = 'pointer';
oImages[oImage].onclick = onclick;
}
}
// Add a load event for the function above.
addLoadEvent(smc_toggleImageDimensions);
// Adds a button to a certain button strip.
function smf_addButton(sButtonStripId, bUseImage, oOptions){
var oButtonStrip = document.getElementById(sButtonStripId),
aItems = oButtonStrip.getElementsByTagName('span'),
oLastSpan,
oButtonStripList,
oNewButton;
// Remove the 'last' class from the last item.
if(aItems.length > 0){
oLastSpan = aItems[aItems.length - 1];
oLastSpan.className = oLastSpan.className.replace(/\s*last/, 'position_holder');
}
// Add the button.
oButtonStripList = oButtonStrip.getElementsByTagName('ul')[0];
oNewButton = document.createElement('li');
setInnerHTML(oNewButton, '' + oOptions.sText + '');
oButtonStripList.appendChild(oNewButton);
}
// Adds hover events to list items. Used for a versions of IE that don't support this by default.
// Add hover events to list items if the browser requires it.
if (is_ie7down && 'attachEvent' in window){
window.attachEvent('onload',function(){
var cssRule,
newSelector,
iStyleSheet,
iRule,
oListItems,
oListItem,
onmouseover = function(){
this.className += ' iehover';
},
onmouseout = function(){
this.className = this.className.replace(new RegExp(' iehover\\b'), '');
};
// Add a rule for the list item hover event to every stylesheet.
for(iStyleSheet = 0; iStyleSheet < document.styleSheets.length; iStyleSheet ++){
for(iRule = 0; iRule < document.styleSheets[iStyleSheet].rules.length; iRule ++){
oCssRule = document.styleSheets[iStyleSheet].rules[iRule];
if(oCssRule.selectorText.indexOf('LI:hover') != -1){
sNewSelector = oCssRule.selectorText.replace(/LI:hover/gi, 'LI.iehover');
document.styleSheets[iStyleSheet].addRule(sNewSelector, oCssRule.style.cssText);
}
}
}
// Now add handling for these hover events.
oListItems = document.getElementsByTagName('LI');
for(oListItem in oListItems){
oListItems[oListItem].onmouseover = onmouseover;
oListItems[oListItem].onmouseout = onmouseout;
}
});
}
// automatic responsive image resizing
$(function(){
if($('.poster').length > 0){ // inside of a normal topic
var $sheet = $('