﻿var companiesContent = null;
var _cachedLinkedCompanies = null;
var _timerCompanies = null;
var _timeCompaniesOut = 300;
var _tickCompaniesHandler = null;
var _setCompaniesTimer = false;
var _divHeight = '190px';

function setCompaniesCache(key, value)
{
  if(_cachedLinkedCompanies == null)
        _cachedLinkedCompanies = new Hashtable();
        
   _cachedLinkedCompanies.put(key, value);
}

function getCompaniesCache(key)
{   
    var value;
     
    if(_cachedLinkedCompanies != null)
        value = _cachedLinkedCompanies.get(key);     
     
    return value;        
}

function onCompaniesTabChanged(e)
{      
    var activeTab = e.get_tabs()[e.get_activeTabIndex()];        
    companiesContent = activeTab.get_element().getElementsByTagName('DIV')[0];
    
    var splt = companiesContent.id.split('_');
    var splLength = splt.length;
    var companyid = splt[splLength-1];
    
    var cacheValue = getCompaniesCache(companiesContent.id);
    
    if(cacheValue == undefined) 
    { 
        getStockTrades(companyid,companiesContent);
    }
    else
        companiesContent = cacheValue;   
}

function getStockTrades(companyid, content) 
{
    if(companyid) 
    {
        var company = new StockAnalitics.Company(companyid);
        if(company) company.GetLastTrades([],onStockTradesSucceeded,onFailure,content);
    }
}

function onStockTradesSucceeded(result,arg)
{
    companiesContent.innerHTML = "";
    var count = 0;
    
    for(var r in result) 
    {        
        var divBox = document.createElement('div');
        divBox.className = 'box03';
        divBox.id = 'box_'+ result[r].TickerId+'_'+result[r].StockMarket.StockMarketID;
        divBox.style.height = "21px";
        divBox.style.weight = "300px";
        
        var divIndex = document.createElement('div');
        divIndex.setAttribute('align','right');
        divIndex.style.cursor = 'hand';
        divIndex.id = result[r].TickerId;
        
        var spanTicker = document.createElement('span');
        
        if(result[r].UrlDetail == '')        
            spanTicker.innerHTML = result[r].TickerName;
        else
            spanTicker.innerHTML = "<a href=\""+result[r].UrlDetail+"\">"+result[r].TickerName+"</a>";
        
        divIndex.appendChild(spanTicker);
        
        var spanStockMarketIndexValue = document.createElement('span');
        spanStockMarketIndexValue.className = 'numb';
        spanStockMarketIndexValue.innerHTML = String.localeFormat("{0:n}",result[r].LastPrice);
        divIndex.appendChild(spanStockMarketIndexValue);
        
        var spanChangePercentElement = document.createElement('span');        
        var colorClass;
        
        if(result[r].Change < 0) colorClass = 'minus';
        else colorClass = 'minus2';
        
        spanChangePercentElement.className = colorClass;        
        spanChangePercentElement.innerHTML = String.localeFormat("{0:n}",result[r].Change)+"%";
        divIndex.appendChild(spanChangePercentElement);
        
        var spanChangeElement = document.createElement('span');
        if(result[r].ChangeDiff < 0) colorClass = 'minus';
        else colorClass = 'minus2';
        spanChangeElement.className = colorClass;
        spanChangeElement.innerHTML = String.localeFormat("{0:n}",result[r].ChangeDiff);
        
        divIndex.appendChild(spanChangeElement);
        
        divBox.appendChild(divIndex);
               
        divBox.onmouseover = function() { showDChart(this,true) };
        divBox.onclick = function () { showChartOnClick(this) };       
        divBox.onmouseout = function() { stopCompaniesTimer() };
        
        companiesContent.appendChild(divBox);
        
        if(count == 0) 
            if(getOpenedDiv() == null) 
                showDChart(divBox, false);
        
        
        count++;
    }     
    
    setCompaniesCache(companiesContent.id,companiesContent);    
}

function showChartOnClick(divBox)
{
    stopCompaniesTimer(); 
    showDChart(divBox,false);
}

function showDChart(divChart,timerSet) 
{
    _setCompaniesTimer = timerSet;
    var divBoxIframe = getDivIframe(divChart);    
    
    if(divBoxIframe != null) 
    {    
        var openedDiv = getOpenedDiv();    
        if(!openedDiv) return;
        if(divChart.id == openedDiv.id) return;
    }    
        
    if(timerSet)
        startCompaniesTimer(divChart);
    else 
        showStockChart(divChart);
}

function showStockChart(selectedDiv) 
{
    var divBox = selectedDiv;
    var content = divBox.parentNode;
    var contentBody = content.parentNode;
    var openDiv = getOpenedDiv();
    
    stopCompaniesTimer();
     
    var tickerId = divBox.id.split('_')[1];
    var smid =  divBox.id.split('_')[2];
                  
    var iframeCol = divBox.getElementsByTagName('iframe');
    var len = iframeCol.length;
    
    if(len == 0) 
    {
        var iframe = document.createElement('iframe');
        iframe.id = "iframe_" + tickerId;               
        iframe.setAttribute('src', 'http://fin.poslovni.hr/Chart.aspx?tid='+tickerId+'&smid='+smid+'&t=stock&w=297&h=165&n=180');
        iframe.setAttribute('width', '300');
        iframe.setAttribute('height', '165');
        iframe.setAttribute('marginheight','0');
        iframe.setAttribute('marginwidth','0');
        iframe.setAttribute('scrolling','no');
        iframe.frameBorder = 'no';
        divBox.appendChild(iframe);
    }
    
    if(openDiv != null)
    {
        var openedIframe =  openDiv.getElementsByTagName('iframe')[0];
        var closedIframe = divBox.getElementsByTagName('iframe')[0]; 
        var parallelAnim = new AjaxControlToolkit.Animation.ParallelAnimation(openDiv, 0.3, 35, null);
        var closeIframe = new AjaxControlToolkit.Animation.ResizeAnimation(openedIframe, 0.3, 35, 300, 0, 'px');
        var closeAnim = new AjaxControlToolkit.Animation.ResizeAnimation(openDiv, 0.3, 35, 300, 21, 'px');
        var openAnim = new AjaxControlToolkit.Animation.ResizeAnimation(divBox, 0.3, 35, 300, 190, 'px');
        var openIframe = new AjaxControlToolkit.Animation.ResizeAnimation(closedIframe, 0.3, 35, 300, 165, 'px');
        parallelAnim.add(closeIframe);
        parallelAnim.add(closeAnim);
        parallelAnim.add(openAnim);
        parallelAnim.add(openIframe);        
        parallelAnim.play();        
    } 
    else 
    { 
        divBox.style.height = _divHeight;
    }    
    
}

function getDivIframe(box) 
{
    var divBox = box;
    var divBoxNodes = divBox.childNodes;
    var divBoxNodesLength = divBoxNodes.length;
    
    for(var j = 0; j < divBoxNodesLength; j++) 
    {
        var divBoxNode = divBoxNodes[j];
        var tName = divBoxNode.tagName;
        
        if(tName == 'IFRAME') 
        {
            if(parseInt(divBoxNode.height,null) > 0) 
                return divBoxNode.parentNode;
        }
    }
        
    return null; 
}

function getOpenedDiv() 
{
    var content = null;
    
    if(!companiesContent)
        content = linkedCompaniesTab.control._tabs[0].get_element().getElementsByTagName('DIV')[0];
    else    
        content = companiesContent;
        
    var contentNodes = content.childNodes;
    var contentNodesLength = contentNodes.length;
    
    for(var i = 0; i < contentNodesLength; i++) 
    {
        var divBox = contentNodes[i];
        if(divBox.tagName == 'DIV')
            if(divBox.style.height == _divHeight) return divBox;
    }
    
    return null;  
}

function startCompaniesTimer(divChart)
{
    if (!_timerCompanies)
    {
        _tickCompaniesHandler = Function.createDelegate(this, function() { onTimerCompaniesTick(divChart) });
        _timerCompanies = new Sys.Timer();
        _timerCompanies.set_interval(_timeCompaniesOut);
        _timerCompanies.add_tick(this._tickCompaniesHandler);      
        _timerCompanies.set_enabled(true);
    }
}

function stopCompaniesTimer()
{
    if (_timerCompanies)
    {
        _timerCompanies.remove_tick(_tickCompaniesHandler); 
        _timerCompanies.set_enabled(false);
        _timerCompanies.dispose();
        _tickCompaniesHandler = null;
        _timerCompanies = null;
    }
}

function onTimerCompaniesTick(divChart) 
{
    showStockChart(divChart);
    stopCompaniesTimer();
}

function unLoad() 
{   
    if(!linkedCompaniesTab) return;
    
    var activeTabIndex = linkedCompaniesTab.control._activeTabIndex;    
    var activeTab = linkedCompaniesTab.control._tabs[activeTabIndex];
    var linkedCompaniesTabElement = activeTab.get_element();
    
    if(linkedCompaniesTabElement)
    {
        $clearHandlers(linkedCompaniesTabElement);
    }
    
    stopCompaniesTimer();
}

Sys.Application.add_unload(unLoad);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();