//##############################################################################
//# YaBB.js #
//##############################################################################
//# YaBB: Yet another Bulletin Board #
//# Open-Source Community Software for Webmasters #
//# Version: YaBB 2.3.1 #
//# Packaged: January 04, 2009 #
//# Distributed by: http://www.yabbforum.com #
//# ===========================================================================#
//# Copyright (c) 2000-2009 YaBB (www.yabbforum.com) - All Rights Reserved. #
//# Software by: The YaBB Development Team #
//# with assistance from the YaBB community. #
//# Sponsored by: Xnull Internet Media, Inc. - http://www.ximinc.com #
//# Your source for web hosting, web design, and domains. #
//##############################################################################
//YaBB 2.3.1 $Revision: 1.1.2.10 $
//scroll fix for IE
window.onload = function () {
if (document.all) {
var codeFix = document.all.tags("div");
for (var codeI = 0; codeI < codeFix.length; codeI++) {
if (codeFix[codeI].className == "scroll" && (codeFix[codeI].scrollWidth > codeFix[codeI].clientWidth || codeFix[codeI].clientWidth == 0))
codeFix[codeI].style.height = (codeFix[codeI].clientHeight + 34) + "px";
}
}
}
// for email decoding
function SpamInator(title,v1,v2,adr,subbody) {
v2 = unescape(v2); var v3 = '';
for(var v4 = 0; v4 < v1.length; v4++) { v3 += String.fromCharCode(v1.charCodeAt(v4)^v2.charCodeAt(v4)); }
if (!title) title = v3;
document.write('' + title + '');
}
// for QuickLinks display
var hideTimer = null;
var lastOpen = null;
function quickLinks(num) {
closeLinks(lastOpen);
document.getElementById("ql"+num).style.visibility = "visible";
document.getElementById("ql"+num).parentNode.style.zIndex = "1000";
lastOpen = num;
}
function TimeClose(num) {
hideTimer = setTimeout("closeLinks('"+num+"')", 1000);
}
function keepLinks(num) {
clearTimeout(hideTimer);
hideTimer = null;
}
function closeLinks(num) {
if(lastOpen != null) {
document.getElementById("ql"+num).style.visibility = "hidden";
document.getElementById("ql"+num).parentNode.style.zIndex = "0";
}
clearTimeout(hideTimer);
hideTimer = null;
}
// for email
function checkMailaddr(theMailField) {
if (/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(theMailField)) return true;
return false;
}
// for attachments
function selectNewattach(file_id) {
document.getElementById("w_file"+file_id).options[1].selected = true;
}
// for quote buttons
var quote_selection = new Array();
function quoteSelection(quote_name, quote_topic_id, quote_msg_id, quote_date, quote_message) {
if ((quote_selection[quote_msg_id] && quote_selection[quote_msg_id] != '') || quote_message != '') {
if (quote_message) quote_selection[quote_msg_id] = quote_message;
AddText('[quote author=' + quote_name + ' link=' + quote_topic_id + '/' + quote_msg_id + '#' + quote_msg_id + ' date=' + quote_date + ']' + quote_selection[quote_msg_id] + ' [/quote]\r\n');
quote_selection[quote_msg_id] = '';
quote_message = '';
} else {
alertqq();
}
}
function get_selection(msg_id) {
if (window.getSelection) {
quote_selection[msg_id] = window.getSelection();
} else {
quote_selection[msg_id] = document.selection.createRange().text;
}
quote_selection[msg_id] = '' + quote_selection[msg_id] + '';
// quote_selection[msg_id] = quote_selection[msg_id].replace(/\\r\\n/g, "_caret_");
while (quote_selection[msg_id].indexOf(" ") != -1) quote_selection[msg_id] = quote_selection[msg_id].replace(/ /gi, "");
// quote_selection[msg_id] = quote_selection[msg_id].replace(/_caret_/g, "\\r\\n");
}
// for image resizing
var noimgdir, noimgtitle;
function resize_images() {
var tmp_array = new Array ();
for (var i = 0; i < img_resize_names.length; i++) {
var tmp_image_name = img_resize_names[i];
var maxwidth = 0;
var maxheight = 0;
var type = (tmp_image_name.split("_", 1))[0];
if (type == 'avatar') {
maxwidth = avatar_img_w;
maxheight = avatar_img_h;
} else if (type == 'post') {
maxwidth = post_img_w;
maxheight = post_img_h;
} else if (type == 'attach') {
maxwidth = attach_img_w;
maxheight = attach_img_h;
} else if (type == 'signat') {
maxwidth = signat_img_w;
maxheight = signat_img_h;
}
if ((fix_avatar_size && type == 'avatar') || (fix_post_size && type == 'post') || (fix_attach_size && type == 'attach') || (fix_signat_size && type == 'signat')) {
if (maxwidth) document.images[tmp_image_name].width = maxwidth;
if (maxheight) document.images[tmp_image_name].height = maxheight;
document.images[tmp_image_name].style.display = 'inline';
continue;
}
if (document.images[tmp_image_name].complete == false) {
tmp_array[tmp_array.length] = tmp_image_name;
// The following is needed since Opera does not load/show
// style.display='none' images if they are not already in chache.
if (/Opera/i.test(navigator.userAgent)) {
document.images[tmp_image_name].width = document.images[tmp_image_name].width || 0;
document.images[tmp_image_name].height = document.images[tmp_image_name].height || 0;
document.images[tmp_image_name].style.display = 'inline';
}
continue;
}
var tmp_image = new Image;
tmp_image.src = document.images[tmp_image_name].src;
var tmpwidth = document.images[tmp_image_name].width || tmp_image.width;
var tmpheight = document.images[tmp_image_name].height || tmp_image.height;
if (!tmpwidth && !tmpheight) {
tmp_array[tmp_array.length] = tmp_image_name;
continue;
}
if (maxwidth != 0 && tmpwidth > maxwidth) {
tmpheight = tmpheight * maxwidth / tmpwidth;
tmpwidth = maxwidth;
}
if (maxheight != 0 && tmpheight > maxheight) {
tmpwidth = tmpwidth * maxheight / tmpheight;
tmpheight = maxheight;
}
document.images[tmp_image_name].width = tmpwidth;
document.images[tmp_image_name].height = tmpheight;
document.images[tmp_image_name].style.display = 'inline';
}
if (tmp_array.length > 0 && resize_time < 350) {
img_resize_names = tmp_array;
if (resize_time == 290) {
for (var i = 0; i < img_resize_names.length; i++) {
var tmp_image_name = img_resize_names[i];
document.images[tmp_image_name].src = noimgdir + "/noimg.gif";
document.images[tmp_image_name].title = noimgtitle;
}
}
setTimeout("resize_time++; resize_images();", 100);
// To prevent window from jumping to other place because
// of image resize after window is set to the ancor this is needed:
} else if (location.hash) {
location.href = location.hash;
}
}
/***********************************************
* New_News_Fader 1.0
*
* Fades news bi-directionally between any starting and ending color smoothly
*
* Written for YaBB by Eddy
* 14-Jan-2005
* Original 'fader.js' by NRg (allbrowsers_fader.mod v2.02 01/12/2002)
*
* Based upon uni-directional fading code from:
* Fading Scroller- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
var ie4 = document.all && !document.getElementById;
var DOM2 = document.getElementById;
var index = 0;
var fadecounter;
var fcontent = new Array();
var begintag = '';
var closetag = '';
function cutHex(h) { return (h.charAt(0)=="#") ? h.substring(1,7) : h}
function HexToR(h) { return parseInt((cutHex(h)).substring(0,2),16) }
function HexToG(h) { return parseInt((cutHex(h)).substring(2,4),16) }
function HexToB(h) { return parseInt((cutHex(h)).substring(4,6),16) }
function changecontent() {
if (index >= fcontent.length)
index=0;
if (DOM2){
document.getElementById("fscroller").style.color="rgb("+startcolor[0]+", "+startcolor[1]+", "+startcolor[2]+")";
document.getElementById("fscroller").innerHTML=begintag+fcontent[index]+closetag;
if (fadelinks)
linkcolorchange(1);
colorfadeup(1);
} else if (ie4) {
document.all.fscroller.innerHTML=begintag+fcontent[index]+closetag;
}
index++
}
function linkcolorchange(step) {
var obj=document.getElementById("fscroller").getElementsByTagName("A");
if (obj.length>0) {
for (i=0;i 1) {
step--;
document.getElementById("fscroller").style.color = getstepcolor(step);
if (fadelinks)
linkcolorchange(step);
fadecounter = setTimeout("colorfadedown("+step+")", stepdelay);
} else {
clearTimeout(fadecounter);
document.getElementById("fscroller").style.color = "rgb("+startcolor[0]+", "+startcolor[1]+", "+startcolor[2]+")";
setTimeout("changecontent()", delay / 2);
}
}
function getstepcolor(step) {
var diff;
var newcolor=new Array(3);
for(var i=0; i<3; i++) {
diff = (startcolor[i] - endcolor[i]);
if(diff > 0) {
newcolor[i] = startcolor[i] - (Math.round((diff/maxsteps))*step);
} else {
newcolor[i] = startcolor[i] + (Math.round((Math.abs(diff)/maxsteps))*step);
}
}
return ("rgb(" + newcolor[0] + ", " + newcolor[1] + ", " + newcolor[2] + ")");
}