chartChangedEvt = new YAHOO.util.CustomEvent("chart changed");

function CommonControls() {

CommonControls.tickerMouseOver = function(id) {
    var ticker=$(id);
    
    var ContainerElement=getAncestorWithClass(id,'contentmodule');
    
    if(!ContainerElement)
        return;

    removeClassFrom('spq_selectedTicker', 'spq_ticker', ContainerElement);
    
    if(ticker)
	    ticker.addClassName('spq_selectedTicker');
	
	if(ContainerElement.id == "MarketOverview" && id != "MarketOverview")
	{
	    if(typeof(id) == "object")
	    {
	        id = id.id;//so that if we have a tab, we will grab the first chart in that tab.
	    }
        chartChangedEvt.fire({ticker: id});
    }
}

CommonControls.tickerTabClick = function(tab) {
    var tabID='cmtab_' + tab;
    var pageID='cmtabpage_' + tab;
    
    var ContainerElement=getContainerElement(tabID);
    
    if(!ContainerElement) 
        return;
    
    removeClassFrom('cmselectedtab', 'cmtab', ContainerElement);
    addClassTo('cmunselectedtab', 'cmtab', ContainerElement);
    
    removeClassFrom('cmselectedtabpage', 'cmtabpage', ContainerElement);
    addClassTo('cmunselectedtabpage', 'cmtabpage', ContainerElement);
    
    $(tabID).addClassName('cmselectedtab');
    $(pageID).addClassName('cmselectedtabpage');
    
    /* The following is a hack to deal with IE. For some reason, when you click 
       away from a tab and back to that tab, all of the tickers dissappear. */
    var tickers=$(pageID).getElementsByClassName('spq_ticker');
    for(var i=0; i < tickers.length; i++) {
        ticker=tickers[i];
        ticker.addClassName('spq_selectedTicker');
        ticker.removeClassName('spq_selectedTicker');
    }
    if(tickers.length > 0)
        CommonControls.tickerMouseOver(tickers[0]);
}

CommonControls.tabClick = function(tabId, tabPageId) {
    var ContainerElement=getContainerElement(tabId);
    
    if(!ContainerElement) 
        return;
    
    removeClassFrom('cmselectedtab', 'cmtab', ContainerElement);
    addClassTo('cmunselectedtab', 'cmtab', ContainerElement);
    
    removeClassFrom('cmselectedtabpage', 'cmtabpage', ContainerElement);
    addClassTo('cmunselectedtabpage', 'cmtabpage', ContainerElement);
    
    $(tabId).addClassName('cmselectedtab');
    $(tabPageId).addClassName('cmselectedtabpage');
}

function getContainerElement(tabID) {
    var TabBar=getAncestorWithClass(tabID,'cmheader');
    
    if(TabBar != null)
        return TabBar.up();
    else
        return null;
}

function getAncestorWithClass(ID, PClass) {
    var Ancestors=$(ID).ancestors();
    
    for(var i=0; i < Ancestors.length; i++) {
        if(Ancestors[i].hasClassName(PClass))
            return Ancestors[i];
    }
    
    return null;
}

function removeClassFrom(classToRemove, classToSelect, ContainerElement) {
    var elements=ContainerElement.getElementsByClassName(classToSelect);
    
    for(var i=0; i < elements.length; i++) {
        elements[i].removeClassName(classToRemove);
    }
}

function addClassTo(classToAdd, classToSelect, ContainerElement) {
    var elements=ContainerElement.getElementsByClassName(classToSelect);
    
    for(var i=0; i < elements.length; i++) {
        elements[i].addClassName(classToAdd);
    }
}

CommonControls.expandAd = function(id)
{
    var elem = document.getElementById(id);
    elem.style.display = "block";
}

}

CommonControls();

