function MakeUrlForMiniWindow( nLevel, strWord)
{
	var strUrl = 'http://www.wordsmyth.net/';
	strUrl += '?level='+nLevel;
	if ( IsSelection( strWord))
		strUrl += '&ent='+strWord;

	return strUrl;
}


function ShowMiniWindow( nLevel, strWord)
{
	var strUrl = MakeUrlForMiniWindow( nLevel, strWord);
  var w = window.open( strUrl, 'win_mini', 'width=768,height=600,toolbar=no,scrollbars=yes,resizable=yes');
  if ( w)
    w.focus();
}

function WsPopup( bNotEmptyOnly, strWord, nLevel)
{
  if ( ! nLevel)
    nLevel = DefaultLevel();

	if ( !strWord)
		strWord = RTrim( GetSelection());
  
  if (( IsSelection( strWord)) || ( !bNotEmptyOnly))
    ShowMiniWindow( nLevel, strWord)
}

var s_nLevel = 3;

function DefaultLevel()
{
	return s_nLevel;
}
function SetDefaultLevel( nLevel)
{
	s_nLevel = nLevel;
}

function HasBody( w)
{
	var bHasBody = false;
	try
	{
		if ( w)
		if ( w.document.body)
		if ( w.document.body.tagName.toLowerCase() == 'body')
			bHasBody = true;
	}
	catch( e)
	{
	}
	return bHasBody;
}

function FrameCount( w)
{
	var nFrameCount = 0;
	try
	{
		nFrameCount = w.frames.length;
	}
	catch ( e)
	{
	}
	return nFrameCount;
}

function GetItemWindow( item)
{
	var w = null;
	if ( item)
	if ( item.ownerDocument)
	{
		w = item.ownerDocument.parentWindow;
		if ( !w)
		{
			if ( !IsSafari())
				w = item.ownerDocument.defaultView;
			if ( !w)
			{
				w = WindowByDocument( top, item.ownerDocument);
			}
		}
	}
	//alert( w.location);
	return w;
}

function WindowByDocument( w, doc)
{
	var winResult = null;
	if ( w)
	{
		try
		{
			if ( w.document == doc)
				winResult = w;
			if ( !winResult)
			{
				var nFrameCount = FrameCount( w);
				var i = 0;
				for ( i = 0; (( !winResult)&&( i < nFrameCount)); i++)
				{
					winResult = WindowByDocument( w.frames[i], doc);
				}
			}
		}
		catch( e)
		{
		}
	}
	return winResult;
}


function InitEvents( bInitDblClick, bInitMouseUp)
{
  InitEventsInWindow( window, bInitDblClick, bInitMouseUp);
}


function InitEventsInWindow( w, bInitDblClick, bInitMouseUp)
{
	if ( HasBody( w))
	{
		if ( bInitDblClick)
			InitDblClick( w);
		if ( bInitMouseUp)
			InitMouseUp( w);
	}

	var nFrameCount = FrameCount( w);

	var i = 0;
	for ( i = 0; i < nFrameCount; i++)
	{
		var win = w.frames[i];
		InitEventsInWindow( win, bInitDblClick, bInitMouseUp);
	}
}

function EventItem( event)
{
	var item = null;
	if ( IsIE())
	{
		item = event.srcElement;
	}
	else
	{
		item = event.target;
	}
	return item;
}

var s_itemFromEvent = null;

function ItemFromEvent()
{
	return s_itemFromEvent;
}
function SetItemFromEvent( item)
{
	s_itemFromEvent = item;
}

var s_timerIdDblClick = false;

function OnBodyDblClickDynamic( event)
{
	clearTimeout(s_timerIdDblClick);
	
	var itemFromEvent = null;
	if ( event)
	{
		itemFromEvent = EventItem( event);
		SetItemFromEvent( itemFromEvent);
	}
	else
		itemFromEvent = ItemFromEvent();
	
	var sel = GetSelection( GetItemWindow( itemFromEvent));

  WsPopup( true, sel);

  return false;
}

function InitDblClick( w)
{
	var doc = null;
	if ( w)
		doc = w.document;
	else
		doc = document;

	if ( IsOpera())
    AddEventHandler( 'click', top.OnBodyClickDynamic, doc.body);

  AddEventHandler( 'dblclick', top.OnBodyDblClickDynamic, doc.body);
}

function InitMouseUp( w)
{
	var doc = null;
	if ( w)
		doc = w.document;
	else
		doc = document;

  AddEventHandler( 'mouseup', top.OnBodyMouseUp, doc.body);
}

function OnBodyMouseUp( event)
{
	//alert( 'event = '+event);
	var bResult = true;
	if ( event.ctrlKey || event.metaKey)
	{
		var itemFromEvent = EventItem( event);
		var sel = GetSelection( GetItemWindow( itemFromEvent));
		if ( IsSelection( sel))
			sel = RTrim( sel);
		if ( IsSelection( sel))
		if ( sel.length < 30)
		{
      WsPopup( true, sel);
			bResult = false;
		}
	}
	return bResult;
}

