﻿//
// Ticker Variables
//
//var aseTickerDataFirstTime   = 1;
 jQuery.noConflict();
 
var aseHtmlElements          = new Array();
var aseStocksElements        = new Array();
var aseRequestStocksElements = new Array();
var aseTickerFilterVal       = '';

/*var siteLanguage = 'ar';
var basePath     = 'http://www.exchange.jo/';
if(isdefined('Drupal')){
    siteLanguage    = Drupal.settings.siteLanguage;
    basePath        = Drupal.settings.basePath;
}*/
if(!isdefined('Drupal')){
    //var siteLanguage = 'en';
    var siteLanguage = ticker_language;
    var basePath     = 'http://www.exchange.jo/';
} else {
    siteLanguage    = Drupal.settings.siteLanguage;
    basePath        = Drupal.settings.basePath;
}
if(window.location.href.match(/ase\.com\.jo/)) {
    basePath  = 'http://www.ase.com.jo/';
} else if(window.location.href.match(/exchange\.jo/)) {
    basePath = 'http://www.exchange.jo/';
}

//
// Animation Variables
//
var aseScrollMax;
var aseScrollMin;
var aseScrollVal       = 0;
var aseScrollVariation = 1;
var aseTickerDirection = 'rtl';
if(siteLanguage == 'ar'){
    var aseTickerDirection = 'ltr';
}
if(navigator.appName == 'Microsoft Internet Explorer') {
    var aseTickerSpeed     = '10';
} else {
    var aseTickerSpeed     = '20';
}
var aseTickerHeight    = '20';
var aseTickerPause     = 1;
var fullTickerData;
var aseTickerPreopen;

//
// ASE Ticker Ini
//
/*document.write('<div id="ase-ticker" style="height:'+aseTickerHeight+'px; overflow: hidden; width: 100%; margin: 0px; padding: 0px;">');
document.write('<div id="ase-scrollable-ticker" style="white-space: nowrap; overflow: auto; width: 100%; height: 100px; margin: 0px; padding: 0px;">');
document.write('<table id="ase-ticker-data-table" border="0" cellspacing="0" cellpadding="0" style="padding:0; margin:0;"><tr>');
document.write('<td style="padding:0; margin:0;" nowrap="nowrap"><div id="ase-ticker-data-prefix">&nbsp;</div></td>');
document.write('<td id="ase-ticker-data-body" style="white-space: nowrap; padding:0; margin:0;" nowrap="nowrap"></td>');
document.write('<td style="padding:0; margin:0;" nowrap="nowrap"><div id="ase-ticker-data-end">&nbsp;</div></td>');
document.write('</tr></table>');
document.write('</div>');
document.write('<div id="ase-tmp-data" style="overflow:hidden; height: 0px;"></div>');
document.write('</div>');*/
var ticker_tape = document.getElementById('ticker-tape');
ticker_tape.innerHTML = '<div id="ase-ticker" style="height:'+aseTickerHeight+'px; overflow: hidden; width: 100%; margin: 0px; padding: 0px;"><div id="ase-scrollable-ticker" style="white-space: nowrap; overflow: auto; width: 100%; height: 100px; margin: 0px; padding: 0px;"><table id="ase-ticker-data-table" border="0" cellspacing="0" cellpadding="0" style="padding:0; margin:0;"><tr><td style="padding:0; margin:0;" nowrap="nowrap"><div id="ase-ticker-data-prefix">&nbsp;</div></td><td id="ase-ticker-data-body" style="white-space: nowrap; padding:0; margin:0;" nowrap="nowrap"></td><td style="padding:0; margin:0;" nowrap="nowrap"><div id="ase-ticker-data-end">&nbsp;</div></td></tr></table></div><div id="ase-tmp-data" style="overflow:hidden; height: 0px;"></div></div>';

//
// HTML Controls
//
var aseTicker                = document.getElementById('ase-ticker');
var aseScrollableTicker      = document.getElementById('ase-scrollable-ticker');
var aseTickerDataTable       = document.getElementById('ase-ticker-data-table');
var aseTickerDataTableBody   = document.getElementById('ase-ticker-data-body');
var aseTickerDataTablePrefix = document.getElementById('ase-ticker-data-prefix');
var aseTickerDataTableEnd    = document.getElementById('ase-ticker-data-end');
var aseTickerTmpData         = document.getElementById('ase-tmp-data');

//
// Ase Filter Functions
//
function aseHideAllElements() {
    for(key in aseHtmlElements) {
        aseHtmlElements[key].visibility = 'hidden';
    }
}

function aseShowAllElements() {
    for(key in aseHtmlElements) {
        aseHtmlElements[key].visibility = 'visible';
    }
}

function aseSetFilter(filterValue) {
    if(filterValue) {
        aseTickerFilterVal = filterValue;
        var objIds = filterValue.split(',');
        aseHideAllElements();
        for(key in objIds) {
            objName = trim(objIds[key].toLowerCase());
            if(aseHtmlElements[objName+'-element']) {
                aseHtmlElements[objName+'-element'].visibility = 'visible';
            }
        }
    } else {
        aseTickerFilterVal = '';
        aseShowAllElements();
    }
    aseResetViewParams();
}

//
// Ase Animation Functions
//
function aseSetViewParams() {
    var aseTickerWidth       = aseTicker.offsetWidth;

    aseTickerDataTable.style.padding = "0";
    aseTickerDataTable.style.margin  = "0";

    aseTickerDataTable.width = '';
    aseTickerDataTable.width = aseTickerWidth + aseTickerDataTableBody.offsetWidth + aseTickerWidth;

    aseTickerDataTablePrefix.style.width = aseTickerWidth+'px';
    aseTickerDataTableEnd.style.width    = aseTickerWidth+'px';

    aseScrollMax = aseScrollableTicker.scrollWidth - aseTickerWidth;
    aseScrollMin = 0;

    //aseTickerDataFirstTime = 1;
}

function aseResetViewParams() {

    //
    // create data table
    //
    var aseTbl = '<table border="0" cellspacing="0" cellpadding="0"><tr>';
    if(!aseTickerPreopen) {
        firstItem = '';
        lastItem  = '';
        blankLink = '';
        if(!window.location.href.match(/ase\.com\.jo/) && !window.location.href.match(/exchange\.jo/) && !window.location.href.match(/194\.165\.154\.66/)) {
            firstItem += '<td style="padding:0 10px 0 10px;" nowrap="true" >';
            firstItem += '<a class="ase-stock" target="_blank" href="'+ basePath + siteLanguage+'" tabindex="10000" style="cursor:pointer;" onmouseover="aseSetTickerPause();" onmouseout="aseSetTickerPlay();">';
            if(siteLanguage == 'en') {
                firstItem += ' <img src="'+basePath+'sites/all/modules/ase_feed/imgs/ase_logo.png" style="vertical-align: middle;" /> ';
                firstItem += '<b>Amman Stock Exchange</b>';
            } else {
                firstItem += '<b>بورصة عمان</b>';
                firstItem += ' <img src="'+basePath+'sites/all/modules/ase_feed/imgs/ase_logo.png" style="vertical-align: middle;" /> ';
            }
            firstItem += '</a></td>';

            lastItem += '<td nowrap="true" style="padding:0 10px 0 10px;">';
            lastItem += '<a class="ase-stock" target="_blank" href="'+ basePath + siteLanguage+'" tabindex="10000" style="cursor:pointer;" onmouseover="aseSetTickerPause();" onmouseout="aseSetTickerPlay();">';
            lastItem += '<b>www.exchange.jo</b>';
            lastItem += '</a></td>';

            blankLink = 'target="_blank"';
        }

        if(siteLanguage == 'en') {
            aseTbl += firstItem;
        } else {
            aseTbl += lastItem;
        }
        for(key in aseHtmlElements) {
            if(aseHtmlElements[key].visibility != 'hidden') {
                aseTbl += '<td id="'+key+'" class="'+aseHtmlElements[key].className+'" nowrap="true" style="padding:0 10px 0 10px;">';
                aseTbl += '<a class="ase-stock" id="'+key+'-link" '+blankLink+' href="'+ basePath + siteLanguage+'/company_historical/'+aseHtmlElements[key].realName+'" tabindex="10000" style="cursor:pointer;" onmouseover="aseSetTickerPause();" onmouseout="aseSetTickerPlay();">'+aseHtmlElements[key].linkBody+'</a>';
                if(aseHtmlElements[key].insider) {
                    aseTbl += '<a id="'+key+'-insider-link" '+blankLink+' href="'+ basePath + siteLanguage+'/insider_trades/'+aseHtmlElements[key].realName+'" tabindex="10000" style="cursor:pointer;" onmouseover="aseSetTickerPause();" onmouseout="aseSetTickerPlay();">'+aseHtmlElements[key].insider+'</a>';
                }
                aseTbl += '</td>';
            }
        }

        if(siteLanguage == 'en') {
            aseTbl += lastItem;
        } else {
            aseTbl += firstItem;
        }

    }
    aseTbl += '</tr></table>';
    //
    // update ticker data
    //
    aseTickerDataTableBody.innerHTML = aseTbl;

    var aseTickerWidth       = aseTicker.offsetWidth;

    aseTickerDataTable.style.padding = "0";
    aseTickerDataTable.style.margin  = "0";

    aseTickerDataTable.width = '';
    aseTickerDataTable.width = aseTickerWidth + aseTickerDataTableBody.offsetWidth + aseTickerWidth;

    aseTickerDataTablePrefix.style.width = aseTickerWidth+'px';
    aseTickerDataTableEnd.style.width    = aseTickerWidth+'px';

    aseScrollMax = aseScrollableTicker.scrollWidth - aseTickerWidth;
    aseScrollMin = 0;
    
}

function asResetScrollValue() {
    if(aseTickerDirection == 'rtl') {
        aseScrollVal = aseScrollMin;
    } else {
        aseScrollVal = aseScrollMax;
    }
}

function asePlayTicker() {
    if(!aseTickerPause) {
        aseScrollableTicker.scrollLeft = aseScrollVal;
        if(aseTickerDirection == 'rtl') {
            aseScrollVal += aseScrollVariation;
            if(aseScrollVal >= aseScrollMax) {
                aseScrollVal = aseScrollMin;
                aseSetViewParams();
            }
        } else {
            aseScrollVal -= aseScrollVariation;
            if(aseScrollVal <= aseScrollMin) {
                aseScrollVal = aseScrollMax;
                aseSetViewParams();
            }
        }
    }
    setTimeout('asePlayTicker();', aseTickerSpeed);
}

function aseSetTickerPause() {
    aseTickerPause = true;
}

function aseSetTickerPlay() {
    aseTickerPause = false;
}

function aseSetStocksElements() {

    //if(aseTickerDataFirstTime) {
        aseHtmlElements = new Array();
        blockElements = aseStocksElements;
    //} else {
    //    blockElements = aseNewStocksElements;
    //}

    if(blockElements) {
        for(key in blockElements) {
            if(parseFloat(blockElements[key].price) > 0) {
                htmlElementId = key + '-element';
                htmlElementId = htmlElementId.toLowerCase();
                aseHtmlElements[htmlElementId] = new Array();

                aseHtmlElements[htmlElementId].realName = key;

                img = " ";
                if(parseFloat(blockElements[key].variation) > 0) {
                    aseHtmlElements[htmlElementId].className = 'ase-stock ase-stock-up';
                    img = " <img src='"+basePath+"sites/all/modules/ase_feed/imgs/up.gif' border='0'/> ";
                } else if(parseFloat(blockElements[key].variation) < 0) {
                    aseHtmlElements[htmlElementId].className = 'ase-stock ase-stock-down';
                    img = " <img src='"+basePath+"sites/all/modules/ase_feed/imgs/down.gif' border='0'/> ";
                } else {
                    aseHtmlElements[htmlElementId].className = 'ase-stock ase-stock-normal';
                }
                aseHtmlElements[htmlElementId].insider = "";
                if(parseInt(blockElements[key].insider)) {
                    aseHtmlElements[htmlElementId].insider = " <img src='"+basePath+"sites/all/modules/ase_feed/imgs/insider_trades_flag.gif' border='0'/> ";
                }
                aseHtmlElements[htmlElementId].linkBody = blockElements[key].display_name + ' ' + parseFloat(blockElements[key].price).toFixed(2) + img + ' %' + Math.abs(blockElements[key].variation).toFixed(2);
            }
        }

    }
    if(aseTickerFilterVal) {
        aseSetFilter(aseTickerFilterVal);
    }// else if(aseTickerDataFirstTime) {
    //    aseResetViewParams();
    //}
    aseResetViewParams();
    aseSetTickerPlay();
    //aseTickerDataFirstTime = 0;
}

function aseInclude(filename) {

    aseTickerTmpData.innerHTML = "";
    script = document.createElement('script');
    script.src = filename;
    script.type = 'text/javascript';
    aseTickerTmpData.appendChild(script);
}

function aseUpdateValues() {
    if(!fullTickerData){
        fullTickerData = 0;
    }
    aseInclude(basePath + siteLanguage + '/ase_feed/ticker_data?time='+Math.random()*1000000+'&full='+fullTickerData);
}

function aseEnableFullTickerData() {

    fullTickerData = 1;
}

function aseDisableFullTickerData() {
    fullTickerData = 0;
}

function aseEnablePreopen() {
    aseTickerPreopen = 1;
}

function aseDisablePreopen() {
    aseTickerPreopen = 0;
}

function aseSetDirection(adir) {
    aseTickerDirection = adir;
}

function aseSetSpeed(aspd) {
    aseTickerSpeed = aspd;
}

function increaseSpeed() {
    if(aseTickerSpeed > 10) {
        aseTickerSpeed = parseInt(aseTickerSpeed) - 10;
    } else {
        aseTickerSpeed = 1;
    }
}

function decreaseSpeed() {
    if(aseTickerSpeed == 1) {
        aseTickerSpeed = 10;
    } else if(aseTickerSpeed < 70) {
        aseTickerSpeed = parseInt(aseTickerSpeed) + 10;
    }
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

aseUpdateValues();
aseSetViewParams();
asePlayTicker();

function isdefined(variable) {
    return (typeof(window[variable]) == "undefined") ? false : true;
}

var preOpen;
function changeMarketStatus(index_value, variation, status, ase_date, pre_open, ase_time){
    jQuery('#market-time').html(ase_time);
    if(isdefined('Drupal')){
        if(status == 'opened'){
            //jQuery('#block-block-1 span').attr('class', 'opened-market');
            jQuery('#block-ase_feed-2 span').attr('class', 'opened-market');
            jQuery('#market-status').html(Drupal.t('Market Open'));
            jQuery('#market-status').css('color', '#61A143');
        } else {
            //jQuery('#block-block-1 span').attr('class', 'closed-market');
            jQuery('#block-ase_feed-2 span').attr('class', 'closed-market');
            jQuery('#market-status').html(Drupal.t('Market Closed'));
            jQuery('#market-status').css('color', '#f00');
        }
    } else {
        if(status == 'opened'){
            if('ar' == siteLanguage){
                jQuery('#market-status').html('مفتوح');
            } else {
                jQuery('#market-status').html('Open');
            }

            jQuery('#market-status').css('background-color', '#61A143');
        } else {
            if('ar' == siteLanguage){
                jQuery('#market-status').html('مغلق');
            } else {
                jQuery('#market-status').html('Closed');
            }
            jQuery('#market-status').css('background-color', '#E00');
        }
    }

	if(pre_open == 1){
		jQuery('#index-date .title').hide();
        jQuery('#date span').html(ase_date);
        jQuery('.percentage').html('');
        jQuery('.ticker-percentage').html('');
        jQuery('.market-status-img').attr('src', basePath + 'sites/all/themes/ase/images/spacer.gif');
        jQuery('.num').html('');
	} else {
		if(variation > 0){
			jQuery('.market-status-img').attr('src', basePath + 'sites/all/themes/ase/images/up.gif');
			jQuery('.percentage').css('color', '#61A143');
		} else {
			if(variation < 0){
				jQuery('.market-status-img').attr('src', basePath + 'sites/all/themes/ase/images/down.gif');
				jQuery('.percentage').css('color', '#f00');
			} else{
				jQuery('.market-status-img').attr('src', basePath + 'sites/all/themes/ase/images/spacer.gif');
				jQuery('.percentage').css('color', '#09568a');
			}
		}

		jQuery('#index-date .title').show();
		jQuery('.num').html(index_value);
		jQuery('.percentage').html(Math.abs(variation) + '%');
        jQuery('.ticker-percentage').html(Math.abs(variation) + '%');
		jQuery('#date span').html(ase_date);
		window.onload = function(){jQuery('#market-activity-date').html(ase_date);};
	}
	preOpen = pre_open;
}
