/****************************
Copyright Opera Software 2004
Sagar Chandna
****************************/

addEvent( window, 'load', load );
window.onload = load;

var tfStatus;
var taMessage;
var smilies;
var smBtn;

function load() {
	tfStatus = getNode( "stat" );
	if( tfStatus==null ) return;
	taMessage = getNode( "message" );
	smilies = getNode( "smilies" );
	
	smBtn = getNode( "smBtn" );
	
	//addEvent( document, 'mouseup', released );
	document.onmouseup = released;
	//addEvent( document, 'click', hideSmilies );
	document.onclick = hideSmilies;
	getNode( "tools" ).className = "";
}

function focusTextArea() {
	document.forms['replyform'].message.focus();
}

function code(tagName, value) {
	
	var sel = false;
	var selText = "";
	focusTextArea();
	if( document.selection )  {
		//var str = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
		sel = document.selection.createRange();
		selText = sel.text;
	}
	
	if( value == null ) value = "";
	
	if( tagName == "IMGLEFT" ) {
		value = prompt( "Enter the URL for the image", value );
		if( value == null ) return;
	}
	
	if( tagName == "URL" || tagName == "EMAIL" ) {
			if( selText.length == 0 )
			  selText = prompt( "Enter the text to be displayed for the link", "" );
			value = prompt( "Enter the " + (tagName=="URL"?"full URL":"E-mail") + " for the link", value );
			if( value == null ) return;
	}
	if( tagName == "WHISPER" ) {
		if( selText.length == 0 )
			  selText = prompt( "Enter the text to be whispered", selText );
		value = prompt( "Enter a comma separated list of usernames to whisper to.\n\nFor example: name1,name2", "" );
	}

	if( tagName != "IMGLEFT" && !sel && !selText ) {
		selText = prompt("Enter the text to be formatted:", "");
		if( !selText ) selText = "";
	}
	
	if( tagName != "IMGLEFT" && sel ) {
		sel.text = "[" + tagName + (value?"="+value:"") + "]"  +  selText  +  "[/" + tagName + "]";
		sel.collapse(false);
 		sel.select();
 	} else {
		document.forms['replyform'].message.value += "[" + tagName + (value?"="+value:"") + "]"  + (tagName != "IMGLEFT" ? selText  +  "[/" + tagName + "]" : "");
	}

	switch( tagName ) {
		case "SIZE"  :	document.forms['replyform'].size.selectedIndex = 0; break;
		case "FONT"  :	document.forms['replyform'].font.selectedIndex = 0; break;
		case "COLOR" :	document.forms['replyform'].color.selectedIndex = 0; break;
	}
	
	return;
}



function list( value ) {
	var sel = false;
	var selText = "";

	focusTextArea();	
	if( document.selection )  {
		sel = document.selection.createRange();
		selText = sel.text;
	}	
	
	if( value ==  null ) {
		value = prompt( "For a (please resize this dialog window to read more) \n\nNumbered list, enter 1\nAlphabetical list, enter a\nBullet list, leave the text box empty", "" );
		if( value == null ) 
			value = "";
	  else {
			value = value.substring(0,1).toLowerCase();
			value = (value=="1" || value=="a" || value=="")?value:false;
		}
	}
	
	if( !sel ) {
		while( 1 ) {
			listItem = prompt( "Enter a list item.\n Leave the box empty or press Cancel to complete the list.", "");
			if( !listItem || listItem == "" ) break;
			selText += "\n  [*]" + listItem;
		}
		document.forms['replyform'].message.value += "[LIST" + (value?"="+value:"") + "]"  +  selText  +  "\n[/LIST]";
	} else {
		selText = selText.replace(/\n/g, "\n  [*]");
		sel.text = "[LIST" + (value?"="+value:"") + "]\n  [*]"  +  selText  +  "\n[/LIST]";
	  sel.collapse(false);
	  sel.select();
	}
	return;
}


function smilie( smile ) {
	focusTextArea();
	if( !document.selection )  {
		document.forms['replyform'].message.value += smile + " ";
		return;
	}	
	var sel = document.selection.createRange();
	sel.text = smile + " ";
	sel.collapse(false);
 	sel.select();
}



var c=0;
var s=false;

function hideSmilies( ev ) {
	if( !s ) return; //is simlies are not showing, return.
	
	if( ev ) {
		//if ctrl+shift were pressed don't hide
		if( ev.modifiers ) {
			if( ev.modifiers == 6 ) /* ctrl+shift*/
	  		return false;
		} else if ( ev.ctrlKey == true && ev.shiftKey == true ) {
			return false;
		}
	}
	
	//no nice/common cross browser way to cancel event bubbling/capturing. 
	//thus counting using c.
  if( c==1 ) {
	  smilies.className = "";
	  smBtn.className = "";
	  s=false;
	  c=0;
	} else {
		c++;
	}
}

function showSmilies( ) {
	s = true;
	smilies.className = "show";
	smBtn.className = "pressed";
	smilies.style.top =  ( 90 ) + "px";
	smilies.style.left = (findPosX( smBtn ) + 4) + "px";
	
	//smilies.style.left = (0) + "px";
}




function help( node ) {
  if( !node || !tfStatus ) return;
  tfStatus.value = node.title;
}



var imgPressed;
function pressed( node ) {
	imgPressed = node;
	if( node.setAttribute ) {
	  imgPressed.className = "pressed";
	}
}

function released( ) {
	if( !imgPressed ) return;
	if( imgPressed.setAttribute ) {
	  imgPressed.className = "";
	}
}



// COMMON FUNCTIONS

function addEvent( node, evtType, func ) {
	if( node.addEventListener ) {
		node.addEventListener( evtType, func, false );
		return true;
	} else if( node.attachEvent ) {
		return node.attachEvent( "on" + evtType, func );
	} else {
		return false;
	}
}


function getNode( nodeId ) {
	if( document.getElementById ) {
		return document.getElementById( nodeId );
	}
	else if( document.all && document.all( nodeId ) ) {
		return document.all( nodeId );
	}
	else if( document.layers && document.layers[ nodeId ] ) {
		return document.layers[ nodeId ];
	}
	else {
		return false;
	}
}

function display( idStr ) {
    var node = getNode( idStr );

    if( node == null ) return;

    node.style.display = "block";

}

function no_display( idStr ) {
    var node = getNode( idStr );

    if( node == null ) return;

    node.style.display = "none";

}




/* thank you quirksmode.org */
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if( obj.offsetParent.tagName == "BODY" ) break;
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
