var g_aSmileys = new Array(
        "\\:[-o]?\\)", "smile.gif",
        "\\:[-o]?\\(", "frown.gif",
        "\\;[-o]?\\)", "wink.gif",
        "\\:\\'[-o]?\\(", "tear.gif",
        "\\W\\:[-o]?[\\\\\/]", "disgust.gif",
        "\\:[-o]?D", "biggrin.gif",
        "\\>\\:[-o]?\\)", "evil.gif",
        "\\:lol\\:", "lol.gif",
        "B[-o]?\\)", "cool.gif",
        "\\:smoke\\:", "smoke.gif",
        "\\:smirk\\:", "smirk.gif",
        "\\:[-o]?s", "confused.gif",
        "\\:puke\\:", "puke.gif",
        "\\:paranoid\\:", "paranoid.gif",
        "\\:[-o]?p\\~", "drool.gif",
        "\\:[-o]?\\~", "drool.gif",
        "\\:[-o]?p", "tongue.gif",
        "\\:[-]?o", "eek.gif",
        "\\:nod\\:", "nod.gif",
        "\\b8[-o]+?\\)|\\:rolleyes\\:", "rolleyes.gif",
        "\\:mad\\:", "mad.gif",
        "\\:arrow\\:", "arrow.gif",
        "\\:evil\\:", "evil.gif",
        "\\:cry\\:", "crybaby.gif",
        "\\:blush\\:", "redface.gif",
        "\\:idea\\:", "idea.gif",
        "\\:thumbup\\:", "thumbsup.gif",
        "\\:thumbdown\\:", "thumbsdown.gif",
        "\\:question\\:", "question.gif",
        "\\:ninja\\:", "ninja.gif");
        
var g_aSmileyToolbar = new Array(
        ":-)", "smile.gif",
        ":-(", "frown.gif",
        ";-)", "wink.gif",
        ":-P", "tongue.gif",
        ":-P~", "drool.gif", 
        ":smirk:", "smirk.gif",
        ":-S", "confused.gif",
        ":-O", "eek.gif",
        ":nod:", "nod.gif",
        ":\\'-(", "tear.gif",
        ":-/", "disgust.gif",
        ":-D", "biggrin.gif",
        ":evil:", "evil.gif",
        ":lol:", "lol.gif",
        "B-)", "cool.gif",
        "8-)", "rolleyes.gif",
        ":smoke:", "smoke.gif",
        ":mad:", "mad.gif",
        ":arrow:", "arrow.gif",
        ":cry:", "crybaby.gif",
        ":paranoid:", "paranoid.gif",
        ":blush:", "redface.gif",
        ":idea:", "idea.gif",
        ":thumbup:", "thumbsup.gif",
        ":thumbdown:", "thumbsdown.gif",
        ":question:", "question.gif",
        ":ninja:", "ninja.gif");
        
function replaceSmileys()
{
    // The idea here is that we iterate through all elements which
	// have an id of "msgBody*" and replace any textual smileys 
	// with their graphical equivalent according to the array at
	// the top of this file...
	
	var aDivs = document.getElementsByTagName('div');
    var nWhere, sImage, sReplace;
    
    for (var i = 0 ; i < aDivs.length ; ++i)
    {   
    	if (aDivs[i].id.indexOf("msgBody") == 0)
        {
            // Go through all the smileys
        	for (var j = 0 ; j < g_aSmileys.length; j += 2)
	        {
        		sImage = "<span class='smiley'><img src='gfx/s/" + g_aSmileys[j + 1] + "'></span>";
                var regEx = new RegExp (g_aSmileys[j], 'gi');
                aDivs[i].innerHTML = aDivs[i].innerHTML.replace(regEx, sImage);
            }
            
            ///////////////////////////////////////////////////////////////
            // The following is intended to be a temporary measure until
            // such a time as server-side rendering is available...  the
            // above might well be temporary, too.  We'll see!
            ///////////////////////////////////////////////////////////////
          
            // Now go through the bold, italics etc.
            aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[(\/?(ul|ol|li|strike))\]/gi, "<$1>");
    	        	    
    	    // Match links
    	    aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[matchid=\s*?(\d*?)\s*?\]/gi, "<a href=\"matchInfo.asp?matchID=$1\" title=\"Link to match $1\">($1)</a>");
    	    
    	    // Player links
    	    aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[playerid=\s*?(\d*?)\s*?\]/gi, "<a href=\"playerDetails.asp?playerID=$1\" title=\"Link to player $1\">($1)</a>");
    	    
    	    // Team links
    	    aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[teamid=\s*?(\d*?)\s*?\]/gi, "<a href=\"office.asp?userID=$1\" title=\"Link to team $1\">($1)</a>");
    	    
    	    // Thread links
    	    aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[threadid=\s*?(\d*?)\s*?\]/gi, "<a target=\"confFrame\" href=\"threads.asp?threadID=$1\" title=\"View a different message thread\">($1)</a>");
    	    
    	    // And the simple HTML links
            aDivs[i].innerHTML = aDivs[i].innerHTML.replace(/\[link=(.*?)\]/gi, "<a target=\"_blank\" href=\"$1\">$1</a>");
        }
    }
}

function stripSlashes(sString)
{
	return sString.replace(/\\/gi, '');
}

function toggleSmiley()
{
    var vDiv = getElem('smileyToolbar');
    
    if (vDiv)
	{
	    if (vDiv.style.display != 'block')
	    {
	        var vButton = document.getElementById('smileyButton');
    
        	var aPos = getPos(vButton);
        	
        	vDiv.style.left = aPos[0];
        	vDiv.style.top = aPos[1] + 32;
        	
			vDiv.style.display = 'block';
			vDiv.style.visibility = 'visible';
		}
		else
		{
			vDiv.style.display = 'none';
			vDiv.style.visibility = 'hidden';
		}
	}
}

function drawToolbar()
{
	document.write('<div id="msgToolbarWrapper"><div id="msgToolbar"><table class="msgToolbar"><tr>' +
				 '	<td onClick="insertTag(\'B\');" title="Bold"><img src="gfx/b.gif" /></td>' + 
				 '	<td onClick="insertTag(\'I\');" title="Italic"><img src="gfx/i.gif" /></td>' + 
				 '	<td onClick="insertTag(\'U\');" title="Underline"><img src="gfx/u.gif" /></td>' + 
				 '	<td onClick="insertTag(\'STRIKE\');" title="Strikethrough"><img src="gfx/strike.gif" /></td>' + 
				 '	<td onClick="quoteMsg();" title="Quote"><img src="gfx/quote.gif" /></td>' + 
				 '	<td id="smileyButton" onClick="toggleSmiley();" title="Insert Smiley"><img src="gfx/smiley.gif" /></td>' + 
				 '  <td onClick="insertText(\'[hr]\');" title="Insert Horizontal Rule"><img src="gfx/hr.gif" /></td>' + 
				 '	<td onClick="insertBtml(\'LINK\');" title="Insert Hyperlink"><img src="gfx/link.gif" /></td>' + 
				 /*'	<td onClick="insertBtml(\'MATCHID\');" title="Insert Match Link"><img src="gfx/quote.gif" /></td>' + 
				 '	<td onClick="insertBtml(\'PLAYERID\');" title="Insert Player Link"><img src="gfx/player.gif" /></td>' + 
				 '	<td onClick="insertBtml(\'TEAMID\');" title="Insert Team Link"><img src="gfx/team.gif" /></td>' +  */
				 '</tr></table></div></div>');

    if (window.attachEvent)
    {
        var vCells = document.getElementById('msgToolbar').getElementsByTagName('td');
        
        for (var i = 0; i < vCells.length; i++) 
	    {
	        vCells[i].onmouseover = function() 
    		{
    		    this.className += " iehover";
    		    
    		}
    		
    		vCells[i].onmouseout = function() 
    		{
    			this.className = this.className.replace(new RegExp(" iehover\\b"), "");
    		}
	    }
    }
    								 
	drawSmileyToolbar();
}

function drawSmileyToolbar()
{
	document.write('<div id="smileyToolbar" style="visibility: hidden;"></div>');
	
	var vToolbar = document.getElementById('smileyToolbar');

	if (vToolbar)
	{
		var vTable = document.createElement('table');
		vToolbar.appendChild(vTable);
		
		for (var j = 0 ; j < g_aSmileyToolbar.length; j += 2)
		{
			var vRow = document.createElement('tr');
			vTable.width = 6 * 24;
			vTable.appendChild(vRow);
			
			for (var n = 0; j < g_aSmileyToolbar.length && n < 6; j += 2, n++)
			{
				var vCell = document.createElement('td');
				vCell.width = 24;
				vCell.align = "center";
				vRow.appendChild(vCell);
				
				var vLink = document.createElement('a');
				vCell.appendChild(vLink);
				
				vLink.setAttribute("title", stripSlashes(g_aSmileyToolbar[j]));
				vLink.setAttribute("href", 'javascript:insertSmiley(\'' + escape(g_aSmileyToolbar[j]) + '\');');
				
				var vImg = document.createElement('img');
				vLink.appendChild(vImg);
				
				vImg.src = "gfx/s/" + g_aSmileyToolbar[j + 1];
			}
		}
	}
}

function quoteMsg()
{
    vElem = getElem('msgInput');
    
    if (vElem)
    {
        vSrc = getElem('msgSrc');
        
        if (vSrc)
        {
            sSrc = vSrc.innerHTML.replace(/\<(\/?(b|i|u|quote|hr))\>/gi, "[$1]");
            sSrc = sSrc.replace(/(\<br\>|\s+$|^\s+)/gi, "");
            
            vElem.value = vElem.value + "[quote]" + sSrc + "[/quote]"
        }
    }
}

function insertSmiley(sSmiley)
{
    insertText(" " + sSmiley);
    toggleSmiley();
}

function insertTag(sTag)
{
    vElem = getElem('msgInput');
    
    nOpenTags = countInstancesOf(vElem.value, '[' + sTag + ']');
    nCloseTags = countInstancesOf(vElem.value, '[/' + sTag + ']');
    
    sDflt = nOpenTags > nCloseTags ? '[/' + sTag + ']' : '[' + sTag + ']';
    
    insertElemTag(vElem, '[' + sTag + ']', '[/' + sTag + ']', sDflt);
}

function countInstancesOf(sHaystack, sNeedle)
{
    var nTotal = 0;
    
    i = sHaystack.indexOf(sNeedle);
    
    while (i >= 0)
    {
        nTotal++;
        sHaystack = sHaystack.substring(i + sNeedle.length);
        i = sHaystack.indexOf(sNeedle);
    }
    
    return nTotal;
}

function insertBtml(sTag)
{
    vElem = getElem('msgInput');
    insertElemTag(vElem, '[' + sTag + '=', ']', '[' + sTag + '=]');
}

function insertText(sText)
{
    vElem = getElem('msgInput');
    insertElemText(vElem, sText);
}

function insertElemText(vElem, sText)
{
    if (vElem)
    {
        vElem.focus();
        InsertTextAtElemCursor(getSel(), vElem, sText);
    }
}


function InsertTextAtElemCursor(vSelected, vElem, sText) 
{
    if (vSelected.createRange)
    {
    	  var vPos = vSelected.createRange();
        vPos.text = vPos.text.charAt(vPos.text.length - 1) == ' ' ? sText + ' ' : sText;
    }
    else if (vElem.selectionStart || vElem.selectionStart == '0') 
	{
	    
		var nStart = vElem.selectionStart;
		var nEnd = vElem.selectionEnd;
		
		vElem.value = vElem.value.substring(0, nStart) + sText + vElem.value.substring(nEnd, vElem.value.length);
	} 
    else
    {
        vElem.value = vElem.value + sText;
    }
    
    vElem.focus();
}

function insertElemTag(vElem, sStartTag, sEndTag, sDflt)
{
    if (vElem)
    {
        vElem.focus();
        
        if (document.selection) 
        {
            vCurSel = document.selection.createRange();
            
            if (vCurSel.text.length)
                vCurSel.text = sStartTag + vCurSel.text + sEndTag;
            else
                vCurSel.text = sDflt;
			}
			else if (vElem.selectionStart || vElem.selectionStart == '0') 
			{
				var nStart = vElem.selectionStart;
				var nEnd = vElem.selectionEnd;
				
				if (nStart != nEnd)
				{
					vElem.value = vElem.value.substring(0, nStart) + sStartTag + vElem.value.substring(nStart, nEnd) + sEndTag + vElem.value.substring(nEnd, vElem.value.length);
				}
				else
					vElem.value = vElem.value.substring(0, nStart) + sDflt + vElem.value.substring(nEnd, vElem.value.length);
			} 
			else 
			{
				vElem.value = vElem.value + sTag;
			}
    }
}

function getSel()
{
    if (document.selection) 
    {
        return document.selection;
	}
	else if (window.getSelection)
    {
    	  return window.getSelection();
    }
    else if (document.getSelection)
    {
        return document.getSelection();
    }
    
    return null;
}

function loadInput()
{
    vElem = getElem('msgInput');
    vStore = getElem('msgStore');
    
    if (vElem && vStore)
    {
         if (!vElem.value.length)
            vElem.value = vStore.value;
    }
    
    vElem = getElem('msgSubject');
    vStore = getElem('msgSubjectStore');
    
    if (vElem && vStore)
    {
        if (vStore.value.length && !vElem.value.length)
            vElem.value = vStore.value;
    }
}

function saveInput()
{
    vElem = getElem('msgInput');
    
    if (vElem)
    {
        vStore = getElem('msgStore');
        
        if (vStore)
        {
           vStore.value = vElem.value;
        }
    }
    
    vElem = getElem('msgSubject');
    
    if (vElem)
    {
        vStore = getElem('msgSubjectStore');
        
        if (vStore)
        {
           vStore.value = vElem.value;
        }
    }
}

function clearInput()
{
    vElem = getElem('msgStore');
    
    if (vElem)
        vElem.value = "";
        
    vElem = getElem('msgSubjectSore');
    
    if (vElem)
        vElem.value = "";
}

function breakFrame()
{
    var _y = getElem('confHolder');
    var _x = window.frames['confFrame'].document.body.innerHTML;
	_y.innerHTML = _x;
	
	if (window.attachEvent)
    {
        vToolbar = document.getElementById('msgToolbar');
        
        if (vToolbar)
        {
            var vCells = vToolbar.getElementsByTagName('td');
            
            for (var i = 0; i < vCells.length; i++) 
    	    {
    	        vCells[i].onmouseover = function() 
        		{
        		    this.className += " iehover";
        		    
        		}
        		
        		vCells[i].onmouseout = function() 
        		{
        			this.className = this.className.replace(new RegExp(" iehover\\b"), "");
        		}
    	    }
    	}
    }
    else
    {
        _y = getElem('msgInput');
        _x = window.frames['confFrame'].document.getElementById('msgInput');
    			
    		if (_x && _y)
    	  	_y.value = _x.value;
    }
    
	gotoTop();
}

function confRead(vElem)
{
		vElem.className = 'old';
		vElem.blur();
		clearInput();
}

function getElem(sId)
{
    return document.getElementById(sId);
}

function getPos(vElem)
{
    if (vElem.offsetParent)
    {
        for (var cx = 0, cy = 0; vElem.offsetParent; vElem = vElem.offsetParent) 
        {
          cx += vElem.offsetLeft;
          cy += vElem.offsetTop;
        }
        
        return [cx, cy];
    } 
    
    return [vElem.x, vElem.y];
}