function Left(str, n) {
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0, n);
}

function Right(str, n) {
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

// Converts BBCode to HTML Code.
// changes to this function should also be made to the 
// core\globals\mglobals\actCreateGlobalFunctions.cfm\BBCodeToHTML() 
// version
function BBCodeToHTML (data)
{
	// Convert < and > to their HTML entities.
    data = data.replace( /</g, '&lt;' ) ;
    data = data.replace( />/g, '&gt;' ) ;

    // Convert line breaks to <br>.
    data = data.replace( /(?:\r\n|\n|\r)/g, '<br>' ) ;

	// [url]
    data = data.replace( /\[url\](.+?)\[\/url]/gi, '<a href="$1" target="_new">$1</a>' ) ;
    data = data.replace( /\[url\=([^\]]+)](.+?)\[\/url]/gi, '<a href="$1" target="_new">$2</a>' ) ;

    // [b]
    data = data.replace( /\[b\](.+?)\[\/b]/gi, '<b>$1</b>' ) ;
		
    // [i]
    data = data.replace( /\[i\](.+?)\[\/i]/gi, '<i>$1</i>' ) ;

    // [s]
    data = data.replace( /\[s\](.+?)\[\/s]/gi, '<s>$1</s>' ) ;

    // [u]
    data = data.replace( /\[u\](.+?)\[\/u]/gi, '<u>$1</u>' ) ;

	// [quote]
	var arrData = data.split(']');
	for (var i = 0; i <= arrData.length - 1; i++) {
		if (Left(arrData[i], 7) == '[quote=')
		{
			arrData[i] = '<div class=\'quote\'>' + Right(arrData[i], arrData[i].length - 7) + ' said: <blockquote>';
		}
		else if (Right(arrData[i], 7) == '[/quote')
		{
			arrData[i] = Left(arrData[i], arrData[i].length - 7) + '</div></blockquote>';
		}
		else if (arrData[i].indexOf('[') != -1)				// Put back '[' that we removed. Assuming matching pairs exist.
		{
			arrData[i] = arrData[i] + ']';
		}
	}
	return arrData.join(' ');
}

