

//	----------------------------------------------------------------------------------------------------
//	◆◆◆ 數字 相關函數

function formatNumber(sData,n)
{
	var s = sData;
	
	if (isNaN(n)) {
		n = 0;
	}
	
	if ( !isNaN(s) ) {
		s = Math.round(s * Math.pow(10,n)) / Math.pow(10,n);
		s = s.toString();
		var k = s.indexOf(".");
		if (k == -1) {
			s = s + ".";
		}
		for (var i=0 ; i < n ; i++) {
			s = s + "0";
		}
		var k = s.indexOf(".");
		s = s.substr(0,k+n+1);
		return s;
	}
	else {
		return "";
	}
}

//新增 數字 相關函數(依照已有的小數點位數，多補一個0，但小數最多只有n位數)
function formatNumberNew(sData,n)
{
	var s = sData;
	
	if (isNaN(n)) {
		n = 0;
	}
	
	if ( !isNaN(s) ) {
		s = Math.round(s * Math.pow(10,n)) / Math.pow(10,n);
		s = s.toString();
		var k = s.indexOf(".");
		if (k == -1) {
			s = s + ".0";
		}
		else{
			var p = s.split(".")[1];
			if (p.length < n){
				s = s + "0";
			}
		}
		return s;
	}
	else {
		return "";
	}
}

function FormatKM(sVolume)
{
	var s = "";
	
	sVolume = parseInt(sVolume,10);
	
	if (sVolume >= 100000000)
	{
		s = Math.round(sVolume / 1000000.0) + "M";
	}
	else if (sVolume >= 1000000)
	{
		s = formatNumber((sVolume / 1000000.0),2) + "M";
	}
	else if (sVolume >= 100000)
	{
		s = Math.round(sVolume / 1000.0) + "K";
	}
	else if (sVolume >= 10000)
	{
		if (((sVolume / 1000.0) * 1000.0) == sVolume)
			s = Math.round(sVolume / 1000.0) + "K";
		else
			s = formatNumber((sVolume / 1000.0),1) + "K";
	}
	else
	{
		s = sVolume;
	}
	return s;
}

function formatBigNumber(sData)
{
	var s = sData;
	
	if ( !isNaN(s) ) {
		s = parseFloat(s);
		if ( s > Math.pow(10,6) ) {
			s = (s / Math.pow(10,6)) + "M";
		}
		else if ( s > Math.pow(10,3) ) {
			s = (s / Math.pow(10,3)) + "K";
		}
		else {
			s = s;
		}
	}
	else {
		s = "";
	}
	return s;
}

function formatChange(sData,n)
{
	var s = sData;
	var sTemp = "";
	
	if ( !isNaN(s) ) {
		s = parseFloat(s);
		if (s > 0) {
			sTemp = "▲";
			s = Math.abs(s);
		}
		else if (s < 0) {
			sTemp = "▼";
			s = Math.abs(s);
		}
		//s = Math.round(s * Math.pow(10,n)) / Math.pow(10,n);
		s = formatNumber(s,n);
		s = sTemp + s;
		return s;
	}
	else {
		return "";
	}
}

function formatChangePercent(sData,n)
{
	var s = sData;
	var sTemp = "";
	
	if ( !isNaN(s) ) {
		s = parseFloat(s);
		if (s > 0) {
			sTemp = "+ ";
			s = Math.abs(s);
		}
		else if (s < 0) {
			sTemp = "- ";
			s = Math.abs(s);
		}
		s = s * 100
		//s = Math.round(s * Math.pow(10,n)) / Math.pow(10,n);
		s = formatNumber(s,n);
		s = sTemp + s + "%";
		return s;
	}
	else {
		return "";
	}
}

function GetStatus(sBid, sAsk, sLast)
{
	var s = "";
	var nBid, nAsk, nLast;
	if ( (!isNaN(sBid)) && (!isNaN(sAsk)) && (!isNaN(sLast)) ) {
		nBid = parseFloat(sBid);
		nAsk = parseFloat(sAsk);
		nLast = parseFloat(sLast);
		if (nLast <= nBid)
		{
			s = "<font class=QuoteDown>↓</font>";
		}
		else if (nLast >= nAsk)
		{
			s = "<font class=QuoteUp>↑</font>";
		}
		else
		{
			s = "<font class=QuoteNone>＝</font>";
		}
		if (nLast == 0) {
			s = "";
		}
		if ( (nBid == 0) && (sAsk == 0) ) {
			s = "<font class=QuoteNone>＝</font>";
		}
	}
	else {
		
	}
	return s;
}

//	----------------------------------------------------------------------------------------------------
//	◆◆◆ 日期時間 相關函數

function FormatDigitToTime(sData)
{
	var s = sData;
	s = '' + s;

	if ( !isNaN(s) ) {
		if (s.length == 6)	{
			s = sData.substr(0,2) + ":" + sData.substr(2,2) + ":" + sData.substr(4,2);
		}
		else if (s == "0") {
			s = "";
		}
	}
	return s;
}


function FormatDigitToDate(sData,sign)
{

	var s = sData;
	s = '' + s;
	if(typeof(sign) == "undefined"){
		sign = "/"
	}
	if ( !isNaN(s) ) {
		if (s.length == 8)	{
			s = sData.substr(0,4) + sign + sData.substr(4,2) + sign + sData.substr(6,2);
		}
		else if (s == "0") {
			s = "";
		}
	}
	return s;
}

//	----------------------------------------------------------------------------------------------------
//	◆◆◆ 字串 相關函數

//replace字串(同asp用法)
function replaceString (s,s1,s2)
{
	s = '' + s;
	if (s.length == 0 || s1.length == 0)
		return s;
	
	// process head
	if (s.indexOf(s1) == 0)
		s = s2 + s.substr(s1.length, s.length - s1.length);
	
	// process tail
	if (s.lastIndexOf(s1) == s.length - s2.length)
		s = s.substr(0, s.length - s1.length) + s2;
	
	// process middle
	var arrS = s.split(s1);
	
	if (arrS.length == 1)
		return s;
	
	var result = "";
	var nLen = arrS.length;
	for (i=0 ; i < nLen ; i++) {
		result += arrS [i];
		
		if (i != nLen - 1)
			result += s2;
	}
	
	return result;
}

//去掉空白
function trim(s)
{
	s += "";
		
	if (s.length == 0)
		return s;
	
	var b = 0;
	var e = s.length - 1;
	
	while (s.substr(b, 1) == " " && b < s.length - 1) b++;
	while (s.substr(e, 1) == " " && e != 0) e--;
	
	if (b == s.length) // all blank
	return "";
	
	return s.substr(b, e- b + 1);
}

//	----------------------------------------------------------------------------------------------------



/*********************************************************************************************
' Purpose : 將url依照 DJ規則編碼
'			"{" --> "??" , "}" --> "==" , "Z" --> "^" , "." --> "]" , "_" --> "[" , "/" --> "$" ,
'			"?" --> "{" , "=" --> "}" , "&" --> "!"
' Param:
'  sURL : 傳入 url
' Return:
'  sURL : 編碼過的 
'*********************************************************************************************/
function DJEnCode(sURL)
{
	if (sURL == "") return sURL;
	sURL = sURL.toUpperCase();
	sURL=replaceString(replaceString(sURL ,"{", "??"), "}" , "==");
	sURL=replaceString(replaceString(replaceString(replaceString(replaceString(replaceString(replaceString(sURL ,"Z", "^"), "." , "]"), "_" , "["), "/" , "$"),"?","{"),"=","}"),"&","!");
	
	return sURL;
}


/*********************************************************************************************
' Purpose : 將url依照 DJ規則解碼
' Param:
'  sURL : 傳入編碼 url
' Return:
'  sURL : 解碼過的 
'*********************************************************************************************/
function DJDeCode(sURL)
{
	if (sURL == "") return sURL;
	sURL = sURL.toUpperCase();
	sURL=replaceString(replaceString(replaceString(replaceString(replaceString(replaceString(replaceString(sURL ,"^", "Z"), "]" , "."), "[" , "_"), "$" , "/"),"{","?"),"}","="),"!","&");
	sURL=replaceString(replaceString(sURL ,"??", "{"), "==" , "}");
	
	return sURL;
}

/*********************************************************************************************
'	GetXMLHttp
'	Param sURL Like 'Http://127.0.0.1/hkb2b/DaqStkXML.djhtm?a=2330.tw'
'Return XML
'*********************************************************************************************/
function GetXMLHttp(sURL)
{
	var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	xmlhttp.Open("GET", sURL, false);
	xmlhttp.Send();

	var oXML = xmlhttp.responseXML;
	if(oXML.xml == '')
	{
		oXML =  new ActiveXObject('Microsoft.XMLDOM');
		oXML.async = false;
		oXML.load(sURL);
		return oXML;
	}	
	return oXML;
}

function GetXMLHttp30(sURL)
{
	var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	xmlhttp.Open("GET", sURL, false);
	xmlhttp.Send();
	var oXML = xmlhttp.responseXML;
	oXML.setProperty("SelectionLanguage" , "XPath") ;
	return oXML ;
}

/*********************************************************************************************
'	g_allStockXML 取所有股號資料
'	
'	Return XML
'*********************************************************************************************/
var g_allStockXML = null;
function GetAllStkXML()
{
	if (g_allStockXML == null)
	{
		var sURL = 'http://' + document.location.host + '/hkb2b/DaqStkXML.djxml';
		var oXML = GetXMLHttp(sURL)
		g_allStockXML = oXML;
	}
	return g_allStockXML;
}

/*********************************************************************************************
'	GetStkObjByspID
'		Param sID Like 'AS2330'
'		Return Stock Obj
'*********************************************************************************************/
function GetStkObjByspID(sID)
{
	var oXML = GetAllStkXML();
	if (oXML == null)
		return null;
	var tXML = oXML.selectSingleNode('/Result/Data/Group/Market/Item[Value="' + sID + '"]');
	// 33 要接.....
}
function getXMLHttpObj(){
	if(typeof(XMLHttpRequest)!='undefined')
		return new XMLHttpRequest();

	var axO=['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'], i;
	for(i=0;i< axO.length;i++)
		try{
			return new ActiveXObject(axO[i]);
		}catch(e){}
	return null;
}

function loadScript(scriptpath){
	var oXML = getXMLHttpObj();

	oXML.open('GET', scriptpath, false);
	oXML.setRequestHeader('JD_COOKIE',JD_COOKIE);
	oXML.setRequestHeader('JD-COOKIE',JD_COOKIE);
	oXML.send('');
	var strBody = bytes2BSTR(oXML.responseBody)
	
	window.execScript(strBody,"JavaScript");
	//eval(bytes2BSTR(oXML.responseText));
}


function show_error(ex)
{
	var show_ex = '0';
	if (show_ex == '1')
	{
		alert(ex);
	}
}

function URLEncoded(s)
{
	return escape(s).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
	/*
	var s = escape(s);
	s = s.replace(/\+/g, "%2B");
	s = s.replace(/\//g, "%2F");
	return s;
	*/
}

//如果是WinXPSP2 就會出現 SV1 字樣
function isWinXPSP2()
{
	return (window.navigator.userAgent.indexOf("SV1") != -1);
}

//	----------------------------------------------------------------------------------------------------
//	◆◆◆ Debug 相關函數

function DebugWindowStatus(bDebug, s)
{
	if (bDebug == true) {
		window.status = s;
	}
}

function DebugDocumentTitle(bDebug, s)
{
	if (bDebug == true) {
		document.title = s;
	}
}

function DebugAlert(bDebug, s)
{
	if (bDebug == true) {
		alert("■■■ Debug ■■■" + "\n" + s);
	}
}

//取得亂數的值ex: num=10000  則取得0~10000之間的亂數
function getRandom()
{	
	var rlength = 4; // The number of decimal places to round to(小數位數)
	var sNum = 10;	//預設是Random 0 ~ 10 之間的亂數
	
	var s = Math.random() * sNum;
	var s1 = Math.round(s*Math.pow(10,rlength))/Math.pow(10,rlength);
	//alert(s1);
	return s1 ;
}	

// 取得時間作為序列值
function getTimeSequence()
{
	var dateTmp = new Date();
	var nTimeStamp = dateTmp.getHours() * 100 + dateTmp.getMinutes();
	
	return nTimeStamp;
}

function XPUpdateWrite(str)
{
	document.write(str);
}
