﻿///////////////////////////////////////////////////
//Menu Item
///////////////////////////////////////////////////

function AutoSuggestMenuItem(keyword, symbol, label, value, navigate)
{	
    //Use self to handle events with specific object
    var self=this;
  
    //Properties
    self.symbol=symbol;
    self.label=label;
    self.value=value;
    self.keyword=value;
    self.navigate=navigate;
   
    self.isSelectable=true;
    
    //The following properties are set by AutoSuggestMenu.renderMenuItems
    self.cssClass=null;
    self.selCssClass=null;
   
    //These should not be modified by user directly
    self.index=null;
    self.menu=null; //Menu to which the item belongs to
                
                 
    //Internals
    var _dom;
        
        
    self.render = function()
	{
	    TRACE("AutoSuggestMenuItem.render self.label=" + self.label + ", self.value=" + self.value + ", self.cssClass=" + self.cssClass);
	
	    //Only render menu once. 
	    //After that just replace the menu Items.
	    
	    var div=XUtils.createElement('div');
        div.className = self.cssClass;
        div.innerHTML = '<table width=100% cellpadding=0 cellspacing=0><tr><td width="2%"><img src="img/csmBullet.gif"><td width=93%>' + highlightKeyword(self.keyword,self.label) + '</td><td class="autoSuggestSymbol" width="5%">' + highlightKeyword(self.keyword,self.symbol) + '</td></tr></table>';
        
        if (self.isSelectable)
        {
            //Attach event handlers
            div.onmouseover =self.onMouseOver;
            div.onclick     =self.onClick;
        }

		
        _dom=div;
        
        return _dom;
	}
	
	
	self.highlight = function()
	{
	    _dom.className=self.selCssClass;
	}
    
    
    self.unhighlight = function()
	{
	    _dom.className=self.cssClass;
	}
		
	self.getDOM = function()
    {
        return _dom;
    }
	
	//==========================
	//Event handlers
	//==========================
		
	self.onMouseOver = function()
	{
	    TRACE("AutoSuggestMenuItem.onMouseOver");
			
	    self.menu.onMenuItemMouseOver(self.index);
	}
	
	
	self.onClick = function()
	{
	    TRACE("AutoSuggestMenuItem.onClick");
	
	    self.menu.onMenuItemClick(self.index);
	}
}

function highlightKeyword(keyword,text) 
{
    var myRegEx = new RegExp("\\b" + keyword,"i");
    var retVal = text.replace(myRegEx,'<strong>' + text.match(myRegEx) + '</strong>');
    //retVal = retVal.replace(keyword.toUpperCase(),'<b>' + keyword.toUpperCase() + '</b>');
    //retVal = retVal.replace(keyword.toLowerCase(),'<b>' + keyword.toLowerCase() + '</b>');
    return retVal;
}

//Required for ASP.NET Ajax Extensions
if(typeof(Sys) !== "undefined")
    Sys.Application.notifyScriptLoaded();