﻿
//http://hqquery.jrj.com.cn//boardq.do?q=a&sort=brfp&order=asc&size=10&page=1
//http://nhqquery.jrj.com.cn/hqquery/?q=cn|i&i=000001&n=hqs1&c=l&q=cn
var clearGuba=false;
var showFocus=true;
var Public_PercentChar="%";
//忙时更新时间间隔(秒)
var Public_TimeoutSecond=10;
//闲时更新时间间隔(秒)
var Public_IdleFrequency=300;
//买卖提示标识显示时间
var Public_PriceUpFrequency=2;
var Public_PageSize=20;
var BaseLine=30;//高亮显示基准值
//下载文件更新时间点
var Public_DownladTime="15:30";
var hqMainQueryHost="http://hqquery.jrj.com.cn";
var hqCenterDomain="http://summary.jrj.com.cn";
var Download_Tip="行情下载文件每5分钟更新一次";
//---------------------------------------------------
var PAGE_IS_FOCUS=false;
var PAGE_UUID_COOKIE = "JRJ_PAGE_UUID_COOKIE"; //行情页面唯一标识cookie
var PageHandleUUID=(new Date()).getTime();//生成唯一标识
_addPageUUIDToCookie(PageHandleUUID);//加入cookie
function _handlePageFocus(){
	_addPageUUIDToCookie(PageHandleUUID);
	PAGE_IS_FOCUS=true;
}
function _handlePageBlur(){
	var uuid=_getUuidCookieVal(PAGE_UUID_COOKIE);
	PAGE_IS_FOCUS=false;
}
if(window.addEventListener){
	window.addEventListener("focus", _handlePageFocus, false);
	window.addEventListener("blur", _handlePageBlur, false);
}else{
	document.attachEvent("onfocusin", _handlePageFocus);
	document.attachEvent("onfocusout", _handlePageBlur);
}
//设置cookie
function _setUuidCookie(name, value, expires, secure) {
	if(!expires) {
		expires = new Date();
		expires.setTime(expires.getTime() + 30 *24 * 60 * 60 * 1000);
	}
	var path = "/";
	var domain = document.domain;
        domain="jrj.com.cn";
	secure = secure ? secure : false;
	var cookie = name + "=" + escape(value) 
					+ ((expires) ? "; expires=" + expires.toGMTString() : "")
					+ ((path) ? "; path=" + path : "/")
					+ ((domain) ? "; domain=" + domain : "")
					+ ((secure) ? "; secure" : "");
	document.cookie = cookie;
}
function _addPageUUIDToCookie(uuidValue) {
	var name = PAGE_UUID_COOKIE;	
	_setUuidCookie(name, uuidValue);
}
//根据cookie名查找cookie
function _getUuidCookieVal(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var offset = i + alen;
		if (document.cookie.substring(i, offset) == arg) {
			var endstr = document.cookie.indexOf(";",  offset);
			endstr = endstr == -1 ? document.cookie.length : endstr;
			return unescape(document.cookie.substring(offset,  endstr));
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}
//返回是否为最后的活跃页面
function isLastActivePage()
{	
	var uuid=_getUuidCookieVal(PAGE_UUID_COOKIE);
		//$("showHqTime").innerHTML="PageHandleUUID="+PageHandleUUID+",uuid="+uuid+","+PAGE_IS_FOCUS;
	return PageHandleUUID==uuid || PAGE_IS_FOCUS;
}
//获得沪市综合js文件地址
function getShTopStatJsURL()
{
	return "http://data.share.jrj.com.cn/stocks/TopStat/SHTopStat_Json.js";
}
//获得深综合js文件地址
function getSzTopStatJsURL()
{
	return "http://data.share.jrj.com.cn/stocks/TopStat/SZTopStat_Json.js";
}
//获得股吧地址
function getGuBaURL(stockCode)
{
	return "http://"+stockCode+".istock.jrj.com.cn/";
}
//获得查询接口地址
function getHqQueryURL(qtype)
{
	if(qtype=="i")//指数查询
	{
		return hqMainQueryHost+"/indexq.do?q=a";
	}
	else if(qtype=="as")//A股查询
	{
		return hqMainQueryHost+"/stockaq.do?q=a";
	}
	else if(qtype=="bs")//B股查询
	{
		return hqMainQueryHost+"/stockbq.do?q=a";
	}
	else if(qtype=="w")//权证查询
	{
		return hqMainQueryHost+"/warrantq.do?q=a";
	}
	else if(qtype=="zxb")//中小板查询
	{
		return hqMainQueryHost+"/stockasq.do?q=a";
	}
	else if(qtype=="cyb")//创业板
	{
		return hqMainQueryHost+"/stockcyq.do?q=a";
	}
	else if(qtype=="3b")//三板查询
	{
		return hqMainQueryHost+"/stock3q.do?q=a";
	}
	else if(qtype=="bk")//板块查询
	{
		return hqMainQueryHost+"/boardq.do?q=a";
	}
	else if(qtype=="ab")//AB查询
	{
		return hqMainQueryHost+"/stockabq.do?q=a";
	}
	else if(qtype=="f") //基金查询
	{
		return hqMainQueryHost+"/fundq.do?q=a";
	}
	else if(qtype=="big") //大单查询
	{
		return hqMainQueryHost+"/bigq.do?q=a";
	}
	else if(qtype=="cfg")//成分股查询
	{
		return hqMainQueryHost+"/idxsharesq.do?q=a";
	}
	else if(qtype=="sflow") //股票资金流向股查询
	{
		return hqMainQueryHost+"/sflow.do?q=a";
	}
	return null;

}
//获得用户自选股请求代理地址
function getZixuanProxyURL(sso_sUid)
{
	return "http://i.jrj.com.cn/app/stock/json/stockq.jspa?1=1";
}
//获得更新频率时间,区分空闲非空闲时间
function getDataFrequency()
{

	var dataFrequency=Public_TimeoutSecond;
	var myDate = new Date(); 
	var hours = myDate.getHours();
	var minutes = myDate.getMinutes(); 
	if(hours<9) dataFrequency=Public_IdleFrequency; 
	if(hours>15) dataFrequency=Public_IdleFrequency;
	if(hours==15 && minutes>30) dataFrequency=Public_IdleFrequency;
	//return dataFrequency;
	return 10;
}
//-----------Map数据对象
　　function Map(){
	　　this.elements=new Array();
	　　this.size=function(){
			return this.elements.length;
	　　}
	　　
		this.put=function(_key,_value){
	　　		this.elements.push({key:_key,value:_value});
	　　}
		this.clear=function(){
	　　		this.elements=new Array();
	　　}
	　　this.remove=function(_key){
	　　	var bln=false;
		　　try{
			　　for (i=0;i<this.elements.length;i++){
				　　if (this.elements[i].key==_key){
					　　this.elements.splice(i,1);
					　　return true;
			　　		}
			　　}
		　　}catch(e){
		　　		bln=false;
		　　}
	　　		return bln;
	　　}
	　　
	　　this.containsKey=function(_key){
	　　		var bln=false;
		　　try{
		　　		for (i=0;i<this.elements.length;i++){
		　　			if (this.elements[i].key==_key){
		　　			bln=true;
		　　			}
		　　		}
		　　}catch(e){
		　　		bln=false;
		　　}
	　　		return bln;
	　　}
	　　
	　　this.get=function(_key){
		　　try{
		　　		for (i=0;i<this.elements.length;i++){
			　　		if (this.elements[i].key==_key){
			　　			return this.elements[i];
		　　			}
		　　		}
		　　}catch(e){
		　　		return null;
		　　}
	　　}
	
	　　this.getAllParamLink=function(){
	　　	var allParamLink="";
	    var mapValue="";
		　　try{
		　　		for (i=0;i<this.elements.length;i++){
		　　			mapValue=this.elements[i].value;
		　　			if(mapValue!=null && mapValue!=""){
　　						allParamLink=allParamLink+"&"+this.elements[i].key+"="+mapValue;
		　　			}
		　　		}
			return allParamLink;
		　　}catch(e){
		　　		return e;
		　　}
	　　}
　　}
//获得涨跌方向箭头标识
function getUpTag(hqDataMap,StockCode,PriceLimit)
{
	var upTag="&nbsp;&nbsp;";
	var myPLObj=hqDataMap.get(StockCode);
	if(myPLObj!=null)
	{
		var myPL=Number(myPLObj.value.toString());
		if((PriceLimit-myPL)>0)
		{
			upTag="↑";
		}
		else if((PriceLimit-myPL)<0)
		{
			upTag="↓";
		}
		else
		{
			upTag="&nbsp;&nbsp;";	
		}
		hqDataMap.remove(StockCode);
	}
	hqDataMap.put(StockCode,PriceLimit.toString());
	return upTag;
}
//获得涨跌方向箭头标识
function getUpBgColor(hqDataMap,StockCode,PriceLimit)
{
	var upTag="";
	var myPLObj=hqDataMap.get(StockCode);
	if(myPLObj!=null)
	{
		var myPL=Number(myPLObj.value.toString());
		if((PriceLimit-myPL)>0)
		{
			//upTag="style=\"background-color:#3D58B1\"";
			upTag="style=\"background-color:#E6F1F9\"";
		}
		else if((PriceLimit-myPL)<0)
		{
			//upTag="style=\"background-color:#3D58B1\"";
			upTag="style=\"background-color:#E6F1F9\"";
		}
		else
		{
			upTag="";	
		}
		hqDataMap.remove(StockCode);
	}
	hqDataMap.put(StockCode,PriceLimit.toString());
	return upTag;
}
//根据买卖盘性质，返回买卖盘箭头方向
function getBuyTag(buyAttr)
{
	var upTag="";
	if(buyAttr==1)
	{
		upTag="↑";
	}
	else if(buyAttr==-1)
	{
		upTag="↓";
	}
	else
	{
		upTag="";	
	}
	return upTag;
}
//根据买卖盘性质，返回买卖盘箭头方向
function getBuyClass(buyAttr)
{
	var upClass="";
	if(buyAttr==1)
	{
		upClass="red";
	}
	else if(buyAttr==-1)
	{
		upClass="green";
	}
	return upClass;
}
function getPlClass(pl){
	var classType="black";
	if(pl<0){
		classType="green";
	}
	else if(pl==0){
		classType="black";
	}
	else{
		classType="red";
	}	
	return classType;
}
function getTrClass(tr){
	var classType="black";
	if(tr>0){
		classType="red";
	}	
	return classType;
}
function getCompareClass(cur,comp)
{
	return getPlClass(formatBguPrice(cur)-formatBguPrice(comp));
}
//-----格式化数字，尾数不足者补0
function formatNumber(myNumber,numLength)
{
	var myValue=0;
	try
	{
		myValue=parseFloat(myNumber);
		if(isNaN(myValue)) myValue=0;
	}
	catch(e)
	{
		myValue=0;
	}
	return myValue.toFixed(numLength);
}
function formatPrice(myNumber)
{
	return formatNumber(myNumber,2);
}
//-----格式化百分比
function formatPercent(myNumber)
{
	return formatNumber(myNumber,2);
}
//-----格式化权证价格
function formatWarrantPrice(myNumber)
{
	return formatNumber(myNumber,3);
}
//-----格式化B股价格
function formatBguPrice(myNumber)
{
	var temp=formatNumber(myNumber,3);
	if(temp.toString().endWith("0")){
		return formatNumber(myNumber,2);
	}
	return temp;
}
//-----格式化基金价格
function formatFundPrice(myNumber)
{
	return formatNumber(myNumber,3);
}
//获得页面地址后面的参数
function getUrlParameters(pageURL,clearAll_Params) 
{
   var paramsMap = new Map();
   paramsMap.put("allP","hq");//参数不在需要，仅为整体逻辑
   if(clearAll_Params){
   	paramsMap.remove("allP","hq")
   }
   if(pageURL==null || pageURL=="" || pageURL.indexOf("?")<0) 
   {
   		return paramsMap; 
   }
   var args = pageURL.split("?");
   if(args.length>1)
   {
   		var params=args[1].split("&");
   		for(i=0;i<params.length;i++)
   		{
   			var nameAndValue=params[i].split("=");
   			if(nameAndValue.length<2) continue;
   			var paramName=nameAndValue[0];
   			var paramValue=nameAndValue[1];
   			paramsMap.put(paramName,paramValue.toString());
   		}
   }
   return paramsMap;
}
//获得指定参数名称的值
function getParamValue(paramsMap,paraName)
{
	var returnValue="";
	if(paramsMap==null || paramsMap.containsKey(paraName)==false) 
	{
		returnValue="";
	}
	else if(paraName=="allP" || paraName==null || paraName=="")
	{
		return paramsMap.getAllParamLink();
	}
	else
	{
		returnValue=paramsMap.get(paraName).value.toString();
	}
	return returnValue.toString();
}
//获得指定参数名称的值,如果为空返回指定名称
function getParamTargetValue(paramsMap,paraName,defaultValue)
{
	var returnValue="";
	if(paramsMap==null || paramsMap.containsKey(paraName)==false) 
	{
		returnValue=defaultValue;
	}
	else
	{
		returnValue=paramsMap.get(paraName).value.toString();
	}
	return returnValue.toString();
}
function getZeroString(myValue)
{
	if(myValue==null || myValue=="") return "0";
	return myValue;
}
//-------------------一定时间后自动隐藏
function timeOutSpanPriceUp()
{
	setTimeout(hiddenSpanPriceUp,Public_PriceUpFrequency*1000);
}
function hiddenSpanPriceUp()
{
    var divs =document.getElementsByTagName("span");
    if(divs.length==undefined)
    {
    	
    }
    else
    {
	    for(i=0; i<divs.length; i++)
	    {
	    	if(divs[i].id=="divPriceUp")
	    	{
	        	divs[i].style.visibility="hidden";
	    	}
	    }
    }
}
function addCookie()
{
 if (document.all)
 {
   window.external.addFavorite('http://summary.jrj.com.cn','金融界：行情中心');
 }
 else if (window.sidebar)
 {
   window.sidebar.addPanel('金融界：行情中心', 'http://summary.jrj.com.cn', "");
 }
}
function setHomepage()
{
 if (document.all)
 {
   document.body.style.behavior='url(#default#homepage)';
   document.body.setHomePage('http://summary.jrj.com.cn');
 }
 else if (window.sidebar)
 {
   if(window.netscape)
   {
     try
     {  
       netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
     }  
     catch (e)  
     {  
       alert( "该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true" );  
     }
   } 
   var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
   prefs.setCharPref('browser.startup.homepage','http://summary.jrj.com.cn');
 }
}
//-------------------一定时间后自动隐藏
var Public_DivIdName="";
function timeOutDivPriceUpBgColor(divIdName)
{
	Public_DivIdName=divIdName;
	setTimeout(hiddenDivPriceUpBgColor,Public_PriceUpFrequency*1000);
}
function hiddenDivPriceUpBgColor()
{
    var divs =document.getElementsByTagName("td");
    if(divs.length==undefined)
    { }
    else
    {
	    for(i=0; i<divs.length; i++)
	    {
	    	if(divs[i].id==Public_DivIdName)
	    	{
	        	divs[i].style.backgroundColor="";
	    	}
	    }
    }
}
//行获得焦点
function TrOnFoucs(trCell){	
	trCell.style.backgroundColor="#f3f3f5";
	trCell.style.cursor="pointer";
}
//行失去焦点
function TrLostFoucs(trCell){	
	trCell.style.backgroundColor="#ffffff";
}
//打开指数页面
function openIndexPage(myStockId)
{
	if(myStockId!=null && myStockId!="")
	{
		var url=getIndexPage(myStockId);
		window.open(url);
	}
}
function getIndexPage(myStockId)
{
	var url="http://stock.jrj.com.cn/share/index/"+myStockId+"/index.shtml";
	return url;
}
//打开个股页面
function openSharePage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getSharePage(myStockCode);
		window.open(url);
	}
}
function getSharePage(myStockCode)
{
	var url="http://stock.jrj.com.cn/cominfo/default_"+myStockCode+".htm";
	return url;
}
//打开权证页面
function openWarrantPage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getWarrantPage(myStockCode);
		window.open(url);
	}
}
function getWarrantPage(myStockCode)
{
	var url="http://warrant.jrj.com.cn/StockInfo.aspx?gpdm="+myStockCode;
	//var url="http://"+myStockCode+".istock.jrj.com.cn/";
	return url;
}
//打开大单详细页面
function openBigBillPage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getBigBillPage(myStockCode);
		window.open(url);
	}
}
function getBigBillPage(myStockCode)
{
	var url="http://stock.jrj.com.cn/share/detail/dadan.shtml?code="+myStockCode;
	return url;
}
function openFlowPage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getFlowPage(myStockCode);
		window.open(url);
	}
}
function getFlowPage(myStockCode)
{
	var url="http://stock.jrj.com.cn/share/"+myStockCode+"/flow/index.shtml";
	return url;
}
function openBoardFlow(myBoardId)
{
	if(myBoardId!=null && myBoardId>0)
	{
		var url=getBoardFlow(myBoardId);
		window.open(url);
	}
}
function getBoardFlow(myBoardId)
{
	var url="http://center.summary.jrj.com.cn/flow/query.shtml?ib="+myBoardId;
	return url;
}
//打开基金走势页
function openFundPage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getFundPage(myStockCode);
		window.open(url);
	}
}
function getFundPage(myStockCode)
{
	var url="http://fund.jrj.com.cn/archives/"+myStockCode+"/index.shtml";
	return url;
}
//打开股票爱股页面
function openIStockPage(myStockCode)
{
	if(myStockCode!=null && myStockCode!="")
	{
		var url=getIStockPage(myStockCode);
		window.open(url);
	}
}
function getIStockPage(myStockCode)
{
	var url="http://"+myStockCode+".istock.jrj.com.cn/";
	return url;
}
function openPage(myURL)
{
	if(myURL!=null && myURL!="")
	{
		window.open(myURL);
	}
}
function formatHand(myNumber)
{
	return formatNumber(myNumber/100,0);
}
function formatMoney(myNumber)
{
	return formatNumber(myNumber/10000,2);
}
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.startWith=function(str){
 if(str==null||str==""||this.length==0||str.length>this.length) return false;
 if(this.substr(0,str.length)==str)
 {
	return true;
 }
 else
 {
	return false;
 }
}
String.prototype.endWith=function(oString){  
	var   reg=new   RegExp(oString+"$");  
	return   reg.test(this);     
}  
function contains(string,substr,isIgnoreCase)
{
    if(isIgnoreCase)
    {
     string=string.toLowerCase();
     substr=substr.toLowerCase();
    }
     var startChar=substr.substring(0,1);
     var strLen=substr.length;
         for(var j=0;j<string.length-strLen+1;j++)
         {
             if(string.charAt(j)==startChar)//如果匹配起始字符,开始查找
             {
                   if(string.substring(j,j+strLen)==substr)//如果从j开始的字符与str匹配，那ok
                   {
                         return true;
                   }  
             }
         }
         return false;
}
function getURLTimeStamp()
{
	var nowDate=new Date();
　 	var h=nowDate.getHours();
　　 var m=nowDate.getMinutes();
　　 var s=nowDate.getSeconds();
　　 if(h<=9){h="0"+h}
　　 if(m<=9){m="0"+m}
　　 if(s<=9){s="0"+s}
	return h+""+m+""+s;
}
function getQueryCodes(stockList)
{
	try
	{
		if(stockList.length==0) return "";
		var codeArray=new Array();
		for(i=0;i<stockList.length;i++)
		{
			codeArray.push(stockList[i].code+",");
		}
		var queryCodes=codeArray.join('');
		if(queryCodes.length==0) return "";
		return  queryCodes.substring(0,queryCodes.length-1);
	}
	catch(e)
	{
		return "";
	}
	
}
function getHrefURL(myURL){
	return getUrlByType(myURL,"href")
}
function getHrefSearch(myURL){
	return getUrlByType(myURL,"search")
}
function getUrlByType(myURL,type){
	var hqUrlParams=myURL.split("?");
	if(type=="href"){
	   return hqUrlParams[0];
	}
	else if(type=="search"){
		try{
			return hqUrlParams[1];
		}
		catch(e){
			return "";	
		}
	}
	return hqUrlParams[0];
}
var CurrentFocusX;
var CurrentFocusY;
try{
	document.onmousemove = mouseMove;
}catch(e){}
function mouseMove(ev){   
	try{
		ev= ev || window.event;      
		var mousePos = mouseCoords(ev);  
		CurrentFocusX=mousePos.x;  
		CurrentFocusY=mousePos.y;
	}catch(e){}
}  
function mouseCoords(ev){      
	try{
		if(ev.pageX || ev.pageY)
		{          
			return {x:ev.pageX, y:ev.pageY};       
		}
		else{     
			return {           
			    x :ev.x + document.body.scrollLeft,          //MS IE
			    y:ev.y + document.body.scrollTop
			};
		}
	}catch(e){}
		
} 
function ElementPos(x, y)
{
    this.x = x;
    this.y = y;
}
function GetElementPos(ATarget)
{
    var target = ATarget;
    var pos = new ElementPos(target.offsetLeft, target.offsetTop);
    var target = target.offsetParent;
    while (target)
    {
        pos.x += target.offsetLeft;
        pos.y += target.offsetTop;
        
        target = target.offsetParent
    }
    return pos;
}
