/*******************************************************************************
*Title			:	General Ticker Scroller Engine with set, get, interval, ...
*Author			:	Wong Zi Wei
*contributors	:	-
*Date			:	05/07/05
********************************************************************************/
//===================================
//---Customize Global Variable---
//===================================
var m_sDelim = new String("|");
var m_sBlank = new String("&nbsp;");
var m_sBlank2 = new String("&nbsp;&nbsp;");
var m_sBlank3 = new String("&nbsp;&nbsp;&nbsp;");
var m_sBlank4 = new String("&nbsp;&nbsp;&nbsp;&nbsp;");
var m_sBlank5 = new String("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

//---Indices---
//|Code|Name|?|?|?|Index|Col|
//|0   |1	|2|3|4|5	|6  |
var m_iIndicesCodeCol = new Number(0);
var m_iIndicesNameCol  = new Number(1);
var m_iIndicesIndexCol = new Number(5);	
var m_iIndicesChgCol   = new Number(6);

//---Color---
var m_iColorUpCol = new Number(0);
var m_iColorDwCol = new Number(1);
var m_iColorUcCol = new Number(2);
var m_iColorUtcol = new Number(3);

//---AnnouncementText---	
var m_iTextCol     = new Number(0);	//Powered by N2N Connect
var m_iTextInitCol = new Number(1);	//Kenwealth
var m_iTextEndCol  = new Number(2);	//Happy Trading

//---Setting---
var m_iFontSize = new Number(0);
var m_iWidth	= new Number(1);
var m_iSpeed	= new Number(2);

//---Localize settings
var m_sFontFace = new String("wingdings 3");
var m_sColorLk = new String("#FFFFFF");	//link text color
var m_sColorUp = new String("#00FF00"); //Up Color
var m_sColorDw = new String("#FF0000"); //Down Color
var m_sColorUc = new String("#FFFF00");	//Unchg Color
var m_sColorUt = new String("#FFFF00"); //Untrade Color

var m_sOLWInit = new String("<a class='Ex0' href=\"javascript:OpenLinkWindow('");
var m_sOLWEnd = new String("', 'Url', 'left=150,top=100,width=720,height=350,location=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes');\">");
var m_sIndicesTrackerUrlDef = new String("http://www.kenwealth.com/bin/stkIndicesTracker.asp");	//http://www.kenwealth.com/bin/stkIndicesTracker.asp
var m_sInitContent = new String("Powered By N2N CONNECT");
var m_sAnctInit = new String("");	  //Kenwealth
var m_sAnctEnd  = new String("");  	  //Happy Trading
//--------------------

//===================================
//---Ticker Scroller Setting---
//===================================
var m_iInterval;
var m_iIntervalID; 
//var objHit = new Object();
var m_iIntervalTimerInit = new Number(0);		//init refresh timer, straight away refresh.
var m_iIntervalTimerThread = new Number(5000);	//auto refresh, chg content after 10 seconds.
var m_bFlag = new Boolean(false);

//Global Variable
var m_sQuoteDate = new String("");
var m_sQuoteTime = new String("");
var m_sIndices = new String("");
var m_iTotRowCnt = new Number(0);
var m_iTotColCnt = new Number(0);
var m_sIndicesTrackerUrl = new String("");
var m_sColor = new String("");
var m_sAnnouncementText = new String("");
var m_sSetting = new String("");

//===================================
//---Indices Data Array---
//===================================
var m_iInitRow = new Number(0);
var m_sCloseFont = new String("</font>");
var m_sDateTime = new String("");
//var m_asIndices = new Array();
var m_iIndexCnt = new Number(0);
//var m_iCnt = new Number(0);
var m_iDelimIndex = new Number(0);
var m_iIndex = new Number(0);
var m_sAllContent = new String("");
var m_sCoreContent = new String("");

var m_sQuoteDateEg = new String("");
var m_sQuoteTimeEg = new String("");
var m_sIndicesEg = new String("");
var	m_iTotRowCntEg = new Number(0);
var	m_iTotColCntEg = new Number(0);
var m_sIndicesTrackerUrlEg = new String("");

var m_asColor;
var m_asAnnouncementText;
var m_asSetting;
//===================================
//Decimal format ->num.toFixed(2), num.toPrecision(4);  
//===================================
//var sAllContentEg = new String("");
//var sContentSetStartEg = '<nobr><span style="font: bold 11px Verdana">';	
//var sContentSetCloseEg = '</span></nobr>';
//var sContentEg = new String("");

function refreshThread(){
	
//	alert("refreshThread...");
//	alert("m_sIndicesEg=["+m_sIndicesEg+"]");
//*** In javascript plz convert var, string to Number by parseInt..., keep in mind
	var bFlag = new Boolean(false);	//Boolean capital 'B'
	try{
		m_sQuoteDateEg = getQuoteDate();
		m_sQuoteTimeEg = getQuoteTime();
		m_sIndicesEg   = getIndices();
		m_iTotRowCntEg = parseInt(getTotRowCnt());
		m_iTotColCntEg = parseInt(getTotColCnt());	
		m_sIndicesTrackerUrlEg = getIndicesTrackerUrl();
		m_sColorEg = getColor();
		m_sAnnouncementTextEg = getAnnouncementText();
		m_sSettingEg = getSetting();
				
		//bFlag = true;
	}catch(e){
		//Error show nothing
		m_sIndicesEg   = "";
		m_iTotRowCntEg = 0;
		m_iTotColCntEg = 0;
		m_sIndicesTrackerUrlEg = m_sIndicesTrackerUrlDef;	//when error occur, use kenwealth default.
		
	}
	bFlag = cropSetting();
	if(bFlag){ run(); }
}
	
//===================================
//---Crop Configuration Setting---
//===================================
//---Detect index of Delim---
function cropSetting(){
	var bFlag = new Boolean(true);
	var iDelimIndex = new Number(0);
	var iIndexInit = new Number(0);
	var iIndex = new Number(0);
	var sVal = new String("");
	var iVal = new Number(0);
	
	try{
		//---Color---
		iDelimIndex = m_sColor.indexOf(m_sDelim,iDelimIndex);
		sVal = m_sColor.substring(iIndexInit,iDelimIndex);
		iVal = parseInt(sVal);
		iDelimIndex ++;
		iIndex = iDelimIndex;
		m_asColor = new Array(iVal);
		//alert("sVal["+sVal+"], iVal=["+iVal+"], iDelimIndex=["+iDelimIndex+"]");
		
		for(var i=0; i<iVal; i++){	
			iDelimIndex = m_sColor.indexOf(m_sDelim,iDelimIndex);
			m_asColor[i] = m_sColor.substring(iIndex,iDelimIndex);
			//alert("m_asColor["+i+"]=["+m_asColor[i]+"], iDelimIndex=["+iDelimIndex+"], i=["+i+"]");
			iDelimIndex ++;
			iIndex = iDelimIndex;
		}		
	}catch(e){
		bFlag = false;
		//alert("cropSetting:Color:e=["+e+"]");
	}
	
	//Re-initialize
	iDelimIndex = 0;
	
	try{
		//---AnnouncementText---
		iDelimIndex = m_sAnnouncementText.indexOf(m_sDelim,iDelimIndex);
		sVal = m_sAnnouncementText.substring(iIndexInit,iDelimIndex);
		iVal = parseInt(sVal);
		iDelimIndex ++;
		iIndex = iDelimIndex;
		m_asAnnouncementText = new Array(iVal);
		//alert("sVal["+sVal+"], iVal=["+iVal+"], iDelimIndex=["+iDelimIndex+"]");
		
		for(var i=0; i<iVal; i++){	
			iDelimIndex = m_sAnnouncementText.indexOf(m_sDelim,iDelimIndex);
			m_asAnnouncementText[i] = m_sAnnouncementText.substring(iIndex,iDelimIndex);
			//alert("m_asAnnouncementText["+i+"]=["+m_asAnnouncementText[i]+"], iDelimIndex=["+iDelimIndex+"], i=["+i+"]");
			iDelimIndex ++;
			iIndex = iDelimIndex;
		}		
	}catch(e){
		bFlag = false;
		//alert("cropSetting:AnnouncementText:e=["+e+"]");
	}
	
	//Re-initialize
	iDelimIndex = 0;
	
	try{
		//---Setting---
		iDelimIndex = m_sSetting.indexOf(m_sDelim,iDelimIndex);
		sVal = m_sSetting.substring(iIndexInit,iDelimIndex);
		iVal = parseInt(sVal);
		iDelimIndex ++;
		iIndex = iDelimIndex;
		m_asSetting = new Array(iVal);
		//alert("sVal["+sVal+"], iVal=["+iVal+"], iDelimIndex=["+iDelimIndex+"]");
		
		for(var i=0; i<iVal; i++){	
			iDelimIndex = m_sSetting.indexOf(m_sDelim,iDelimIndex);
			m_asSetting[i] = m_sSetting.substring(iIndex,iDelimIndex);
			//alert("m_asSetting["+i+"]=["+m_asSetting[i]+"], iDelimIndex=["+iDelimIndex+"], i=["+i+"]");
			iDelimIndex ++;
			iIndex = iDelimIndex;
		}		
	}catch(e){
		bFlag = false;
		//alert("cropSetting:Setting:e=["+e+"]");
	}
	return bFlag;
}
	
//===================================
//---Set Ticker Info Engine---
//===================================

function setTickerInfo(){
	//alert("setTickerInfor start...");
	//initialize again
	m_iDelimIndex = 0;
	m_iIndex = 0;
	m_sAllContent = "";
	m_sCoreContent = "";
	
	var iId = new String("");
	var sUrl = new String("");	
	var sCode = new String("");
	var sName = new String("");
	var iIndex = new Number(0);
	var iChg = new Number(0);
	var iColorIndex = new Number(0);
	var sColorVal = new String("");
	var sImgChg = new String("");
	var sFontFaceVal = new String("");
	var sVal = new String("");
	
	m_bFlag = true;		
	if(m_bFlag){		
		try{	
			//---Assign array row & column---
			//*** Sometimes the m_iTotRowCntEg not recognize as a Number, it will be 1, and exception occur
			//var m_asIndices = new Array(15);	
			var m_asIndices = new Array(m_iTotRowCntEg);
			for(var i=0; i<m_asIndices.length; i++)
				m_asIndices[i] = new Array(m_iTotColCntEg);
			//alert("m_iTotRowCntEg=["+m_iTotRowCntEg+"],m_asIndices.length=["+(m_asIndices.length)+"]");
					
			//alert("m_iTotRowCntEg=["+m_iTotRowCntEg+"],m_iTotColCntEg=["+m_iTotColCntEg+"]");			
			//---Crop it base on total row conut & total column count---				
			for(var i=0; i<m_iTotRowCntEg; i++){
				for(var j=0; j<m_iTotColCntEg; j++){
					//---Detect index of Delim---
					m_iDelimIndex = m_sIndicesEg.indexOf(m_sDelim,m_iDelimIndex);	
									 
					//---Assign to specific array---
					m_asIndices[i][j] = m_sIndicesEg.substring(m_iIndex,m_iDelimIndex);
					//alert("m_asIndices["+i+"]=["+m_asIndices[i]+"]m_asIndices["+i+"]["+j+"]=["+m_asIndices[i][j]+"]");
					//#alert("i=["+i+"],j=["+j+"],m_iDelimIndex=["+m_iDelimIndex+"]");
					m_iDelimIndex ++;
					m_iIndex = m_iDelimIndex;									
				}
			}
			
			//---Set Ticker Color---
			for(var i=m_iInitRow; i<m_iTotRowCntEg; i++){
				//for(var j=0; j<m_iTotColCntEg; j++){
				sCode = new String(m_asIndices[i][m_iIndicesCodeCol]).valueOf();
				sName = new String(m_asIndices[i][m_iIndicesNameCol]).valueOf();
				iIndex = new Number(m_asIndices[i][m_iIndicesIndexCol]).valueOf().toFixed(2);
				iChg = new Number(m_asIndices[i][m_iIndicesChgCol]).valueOf().toFixed(2);
				//alert("i=["+i+"],j=["+j+"],sName=["+sName+"]isNaN("+iIndex+")=["+isNaN(iIndex)+"],isNaN("+iChg+")=["+isNaN(iChg)+"]");
							
				//---Bind Link Url---
				sUrl += m_sOLWInit;
				sUrl += new String(m_sIndicesTrackerUrlEg); 
				sUrl += "?indexCode=" + sCode + "&indexName=" + sName;	
				sUrl += m_sOLWEnd;
				sUrl += "<span style='FONT-FAMILY: Verdana, arial, helvetica, sans-serif;FONT-SIZE:" + sFontSize + ";FONT-WEIGHT: bold'>";
				sVal += sUrl;
				
				//---Bind content---				
				sVal += (sName + m_sBlank);
				/*Currently unused (29/07/05)
				 *---Adding Up, Down, Unchg icon based on changes
				 *iId = "idTickerChg" + i;
				 *write('<img id='+ iId + ' src=\"' +sImgUrl+ 'up.png\" width="15" height="15">');
				 *sImgChg	  = "<img src='" +sImgUrl+ "up.png' width='9' height='9'>";
				 */
			  
				if(!(isNaN(iChg))){
					//---Chg Bind Color---
					if(iChg > 0){
						sFontFaceVal = "<font face='wingdings 3' color='#00FF00'>p</font>";
						sColorVal = "<font color='"+ m_asColor[m_iColorUpCol] +"'>"; 
					}else if(iChg < 0){
						sFontFaceVal = "<font face='wingdings 3' color='#FF0000'>q</font>";
						sColorVal = "<font color='"+ m_asColor[m_iColorDwCol] +"'>"; 
					}else{
						sFontFaceVal = "<font face='wingdings 3' color='#FFFF00'>u</font>";
						sColorVal = "<font color='"+ m_asColor[m_iColorUcCol] +"'>"; 
					} 
				}				
				//---Bind content---
				//sVal += ("<font color'"+ m_sColorLk + "'>"+ sName + m_sCloseFont + m_sBlank);
				//sVal += (sImgChg + m_sBlank);
				//sVal += (sFontFaceVal + m_sBlank);
				sVal += (sColorVal + iIndex + m_sCloseFont + m_sBlank);
				sVal += (sColorVal + iChg + m_sCloseFont);
				
				//---Close Href---
				sVal += "</span></a>";
				
				//---Add blank after each row---
				if(i < (m_iTotRowCntEg - 1)){
					sVal += m_sBlank5;
				}
				
			}
			//alert("sVal=["+sVal+"]");
				
		//---Pass Date Time from XML mode---
			m_sDateTime = "Time:" + m_sBlank + m_sQuoteDateEg + m_sBlank + m_sQuoteTimeEg + m_sBlank5;
			//alert("m_sDateTime=["+m_sDateTime+"]");
			
			if(m_asAnnouncementText[m_iTextInitCol] != ""){ m_sAllContent += m_asAnnouncementText[m_iTextInitCol] + m_sBlank5; }
			m_sAllContent += m_asAnnouncementText[m_iTextCol] + m_sBlank5 + m_sDateTime + sVal;
			if(m_asAnnouncementText[m_iTextEndCol] != "") { m_sAllContent += m_sBlank5 + m_asAnnouncementText[m_iTextEndCol]; }
				
			//alert("m_sAllContent=["+m_sAllContent+"]");
			//---Set Ticker Info---
			setContentData(m_sAllContent);
			//alert("getContentData()=["+getContentData()+"]");
		}catch(exc){
			//alert("!!! Critical Error in Indices Data Array,exc=["+exc+"]");
		}
	}else{
		//alert("False...Not binding");	//comment when live!
	}
}

//===================================
//---Initialize process---
//===================================

function init(){
	//---Run this method first.
	//m_iIntervalID = setInterval("run()", m_iIntervalTimerInit );
	refreshThread();
}

function run(){	
	setTickerInfo();
//	clearInterval(m_iIntervalID);	
	//---Call runTicker() every routinely thread---
	//** when run method without passing param use parentheses, when passing param without ""
//	m_iIntervalID = setInterval("refreshThread()", m_iIntervalTimerThread );	
}

//==========================================
//---Set Get method(must place at bottom)---
//==========================================
/*
var m_sContentData = new String("");
var m_sContentDataTemp = new String("");

function setContentData(vs_sContentData){
	m_sContentData = vs_sContentData;
}
function getContentData(){
	return m_sContentData;
}

function setContentDataTemp(vs_sContentDataTemp){
	m_sContentDataTemp = vs_sContentDataTemp;
}
function getContentDataTemp(){
	return m_sContentDataTemp;
}
*/
//---Indices---
function setQuoteDate(vs_sQuoteDate) { m_sQuoteDate = vs_sQuoteDate; }
function getQuoteDate(){ return m_sQuoteDate; }

function setQuoteTime(vs_sQuoteTime) { m_sQuoteTime = vs_sQuoteTime; }
function getQuoteTime(){ return m_sQuoteTime; }

function setIndices(vs_sIndices){ m_sIndices = vs_sIndices; }
function getIndices(){ return m_sIndices; }

function setTotRowCnt(vs_iTotRowCnt){ m_iTotRowCnt = vs_iTotRowCnt; }
function getTotRowCnt(){ return m_iTotRowCnt; }

function setTotColCnt(vs_iTotColCnt){ m_iTotColCnt = vs_iTotColCnt; }
function getTotColCnt(){ return m_iTotColCnt; }

function setIndicesTrackerUrl(vs_sIndicesTrackerUrl){ m_sIndicesTrackerUrl = vs_sIndicesTrackerUrl; }
function getIndicesTrackerUrl(){ return m_sIndicesTrackerUrl; }

function setColor(vs_sColor){ m_sColor = vs_sColor; }
function getColor(){ return m_sColor; }

function setAnnouncementText(vs_sAnnouncementText){ m_sAnnouncementText = vs_sAnnouncementText; }
function getAnnouncementText(){ return m_sAnnouncementText; }

function setSetting(vs_sSetting){ m_sSetting = vs_sSetting; }
function getSetting(){ return m_sSetting; }


//-------------------------------------

//setTickerInfo();	//Set the ticker info.
//init();	//disable init() for real situation, call run() from Java Applet.