PageSourceSearch

https://www.ebshkdirect.com/shkco-web/framework/customs/js/shkfapi.js?_=1790306150

js ebshkdirect.com collected 2026-09-25 03:16:49 UTC 15,570 bytes, 442 lines download raw bytes

1if (shkf == null || typeof(shkf) != 'object') {
2  var shkf = new Object(); 
3}
4
5shkf.api = {
6  VERSION: '1.1',
7  SITE_OS: 'www.ebshkdirect.com',
8  SITE_IS: 'www.ebshkfg.com',
9  SITE_PV: 'www.ebshkfg.com',
10  OS_PORTAL_ID: 'shkdirect',
11  IS_PORTAL_ID: 'shkfg',
12  PV_PORTAL_ID: 'shkprivate',
13  CONTEXT_ROOT: 'shkco-web',
14  IPO_MENU: 'ipo',  
15  ETNETNEWS_MENU: 'news', 
16  TP_CMS_SITE_ID: String.fromCharCode(47)+'hk/web/',
17  
18  KANHAN_REDIRECT_PATTERNS: ['/content/shk/sc/ipo.php', '/content/shk/sc/ipo_listed.php'],
19  KANHAN_SITE_OS: 'sc.ebshkdirect.com/TuniS',
20  KANHAN_SITE_IS: 'sc.ebshkfg.com/TuniS',
21  KANHAN_SITE_PV: 'sc.ebshkfg.com/TuniS',
22  KANHAN_SITE_FAQ_OS: 'faqsc.shkdirect.com/TuniS',
23  KANHAN_SITE_FAQ_IS: 'faqsc.shkfg.com/TuniS',
24  KANHAN_SITE_FAQ_PV: 'faqsc.shkfg.com/TuniS',
25
26
27  
28  getURL: function(site, module, lang, user, params) {  
29    if (site == 'os') {
30	  portalURL = '&_portlet.lafUniqueId=' + this.OS_PORTAL_ID + 'DefinitionLabel_1&_portlet.portalUrl=%2Fshkco-web%2Fportal%2F' + this.OS_PORTAL_ID + '.portal&_portlet.portalId=portal_' + this.OS_PORTAL_ID + '_portal&_portlet.contentType=text%2Fhtml%3B+charset%3DUTF-8';
31	}
32	else if (site == 'is') {
33      portalURL = '&_portlet.lafUniqueId=' + this.IS_PORTAL_ID + 'DefinitionLabel_1&_portlet.portalUrl=%2Fshkco-web%2Fportal%2F' + this.IS_PORTAL_ID + '.portal&_portlet.portalId=portal_' + this.IS_PORTAL_ID + '_portal&_portlet.contentType=text%2Fhtml%3B+charset%3DUTF-8';
34    }
35	else if (site == 'pv') {
36      portalURL = '&_portlet.lafUniqueId=' + this.PV_PORTAL_ID + 'DefinitionLabel_1&_portlet.portalUrl=%2Fshkco-web%2Fportal%2F' + this.PV_PORTAL_ID + '.portal&_portlet.portalId=portal_' + this.PV_PORTAL_ID + '_portal&_portlet.contentType=text%2Fhtml%3B+charset%3DUTF-8';
37    }
38    else {
39      portalURL = '#';         
40    }
41    	  
42    if (module == 'iponews') {    	
43      pageURL = '&_pageLabel=portal_pages_' + site + '_IPONews';
44      pageURL += user == 'user' ? '_page' : '_Guest_page';
45      pageURL += '&mainMenu=' + this.IPO_MENU + '&subMenu=ipoNews';
46    	    	
47      if (params && params.newsid) {
48        pageURL += '&newsid=' + params.newsid;
49      }
50    }
51    else if (module == 'ipolisted') {
52      pageURL = '&_pageLabel=portal_pages_' + site + '_ListIPO';
53      pageURL += user == 'user' ? '_page' : '_Guest_page';
54      pageURL += '&mainMenu=' + this.IPO_MENU + '&subMenu=listedIPO';
55    	
56      if (params && params.stockcode) {
57        pageURL += '&stockcode=' + params.stockcode;
58      }
59    }
60    else if (module == 'ipoupcoming') {
61      pageURL = '&_pageLabel=portal_pages_' + site + '_UpcomingIPO';
62      pageURL += user == 'user' ? '_page' : '_Guest_page';
63      pageURL += '&mainMenu=' + this.IPO_MENU + '&subMenu=upcoming';
64    	    	
65      if (params && params.code) {
66        pageURL += '&code=' + params.code;
67      }	    
68    }
69    else if (module == 'ipohot') {
70      pageURL = '&_pageLabel=portal_pages_' + site + '_HotListedIPO';
71      pageURL += user == 'user' ? '_page' : '_Guest_page';
72      pageURL += '&mainMenu=' + this.IPO_MENU + '&subMenu=ipoHotListed';
73    }
74    else if (module == 'etnetnews') {
75      pageURL = '&_pageLabel=portal_pages_' + site + '_EtnetNews';
76      pageURL += user == 'user' ? '_User_page' : '_Guest_page';
77      pageURL += '&mainMenu=' + this.ETNETNEWS_MENU + '&subMenu=marketUpdates';
78    	
79      if (params && params.newsid) {
80        pageURL += '&locale=' + lang;
81        pageURL += '&id=' + params.newsid;
82	  }		
83    }
84    else {
85      return '#';
86    }
87        
88    if (site == 'os') {
89    	url = this.SITE_OS;
90    } else if (site == 'is') {
91	    url = this.SITE_IS;
92    } else if (site == 'pv') {
93    	url = this.SITE_PV;
94    }
95	url += '/' + this.CONTEXT_ROOT;
96	url += '/portal/';
97    if (site == 'os') {
98    	url += this.OS_PORTAL_ID;
99    } else if (site == 'is') {
100	    url += this.IS_PORTAL_ID;
101    } else if (site == 'pv') {
102    	url += this.PV_PORTAL_ID;
103    }
104	url += '.portal?_nfpb=true&siteLang=' + lang;	
105	url += pageURL;	
106	url += portalURL;		
107	
108	
109	/* customized for kanhan */
110	for (var i = 0; i < this.KANHAN_REDIRECT_PATTERNS.length; i++) {
111		if (new RegExp(this.KANHAN_REDIRECT_PATTERNS[i], 'i').test(window.location.href)){
112		    if (site == 'os') {
113		    	url = this.KANHAN_SITE_OS + '/' + url;
114		    } else if (site == 'is') {
115		    	url = this.KANHAN_SITE_IS + '/' + url;
116		    } else if (site == 'pv') {
117		    	url = this.KANHAN_SITE_PV + '/' + url;
118		    }
119			break;
120		}
121	}
122	
123    return url;
124  },
125  
126  showForgetPasswordPage: function(lang, domain){   // lang [ 'zh_TW' or 'en_US'] | domain ['is' or 'os' or 'pv']
127    $("body").append('<div id="shkf-forget-password-back" style="z-index:98;position:fixed;background-color: #333333;top:50%; left:50%; height:400%; width:100%; margin-top:-100%; margin-left:-50%; opacity:0.5" ></div>');    	
128    if (domain == 'pv') {
129    	$("body").append('<div id="shkf-forget-password-container" style="z-index:99; position:fixed;background-color: white; border:1px solid black; top:50%; left:50%; height:480px; width:310px;padding:5px;margin-top:-190px; margin-left:-160px" ><iframe src="/shkco-web/portal/portlets/maintenance/pv/forgetPasswordNoHeader.portlet?_nfpb=true&amp;siteLang=' + lang + '&amp;&amp;_pageLabel=portal_pages_' + domain + '_Login_page&amp;displayMode=2"   allowTransparency="false" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" height="480px" width="310px" ></iframe></div>');
130    } else {
131    	$("body").append('<div id="shkf-forget-password-container" style="z-index:99; position:fixed;background-color: white; border:1px solid black; top:50%; left:50%; height:480px; width:310px;padding:5px;margin-top:-190px; margin-left:-160px" ><iframe src="/shkco-web/portal/portlets/maintenance/forgetPasswordNoHeader.portlet?_nfpb=true&amp;siteLang=' + lang + '&amp;&amp;_pageLabel=portal_pages_' + domain + '_Login_page&amp;displayMode=2"   allowTransparency="false" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" height="480px" width="310px" ></iframe></div>');
132    }
133    	return false;
134  },
135  hideForgetPasswordPage: function(){ 
136  	$('#shkf-forget-password-back').remove();    	
137	$('#shkf-forget-password-container').remove();
138	return false;
139  },
140  hideForgetPasswordPageInIframe: function(){ 
141  	$('#shkf-forget-password-back', window.parent.document).remove();    	
142	$('#shkf-forget-password-container', window.parent.document).remove();
143	return false;
144  },
145  getAllInfo: function (){
146	var info={
147		"info":[
148			{
149				"key":"iponews",
150				"urlprefix":"market_news/market-ipo-news", 
151				"acceptparam":"y", 
152				"acceptstockcode":"n"
153			},
154			{
155				"key":"ipolisted",
156				"urlprefix":"market_news/market-ipo-listed", 
157				"acceptparam":"y", 
158				"acceptstockcode":"n"
159			},
160			{
161				"key":"ipoupcoming",
162				"urlprefix":"market_news/market-ipo-upcoming", 
163				"acceptparam":"y", 
164				"acceptstockcode":"n"
165			},
166			{
167				"key":"ipohot",
168				"urlprefix":"market_news/market-ipo-hot-listed", 
169				"acceptparam":"n", 
170				"acceptstockcode":"n"
171			},
172			{
173				"key":"stocksearch",
174				"urlprefix":"market_news/stock-search-quotes", 
175				"acceptparam":"n", 
176				"acceptstockcode":"y", 
177				"stockcodekey":"code"
178			},
179			{
180				"key":"etnetnews",
181				"urlprefix":"market_news/stock-search-related-et-news", 
182				"acceptparam":"y", 
183				"acceptstockcode":"n"
184			},
185			{
186				"key":"sehkbulletin",
187				"urlprefix":"market_news/stock-search-related-sehk-bulletin", 
188				"acceptparam":"y", 
189				"acceptstockcode":"n"
190			},
191			{
192				"key":"warrants",
193				"urlprefix":"market_news/stock-search-related-warrants?type=warrant", 
194				"acceptparam":"n", 
195				"acceptstockcode":"y", 
196				"stockcodekey":"undercode"
197			},
198			{
199				"key":"cbbcs",
200				"urlprefix":"market_news/stock-search-related-warrants?type=cbbc", 
201				"acceptparam":"n", 
202				"acceptstockcode":"y", 
203				"stockcodekey":"undercode"
204			},
205			{
206				"key":"industrycomparsion",
207				"urlprefix":"market_news/market-overview-industry-sector", 
208				"acceptparam":"y", 
209				"acceptstockcode":"n"
210			},
211			{
212				"key":"stockchart",
213				"urlprefix":"market_news/stock-search-chart", 
214				"acceptparam":"n", 
215				"acceptstockcode":"y", 
216				"stockcodekey":"code"
217			},
218			{
219				"key":"companyinfo",
220				"urlprefix":"market_news/stock-search-company-info?subpage=companyinfo", 
221				"acceptparam":"n", 
222				"acceptstockcode":"y", 
223				"stockcodekey":"code"
224			},
225			{
226				"key":"corporateaction",
227				"urlprefix":"market_news/stock-search-corporate-action?subpage=corporateaction", 
228				"acceptparam":"n", 
229				"acceptstockcode":"y", 
230				"stockcodekey":"code"
231			},
232			{
233				"key":"cpybusinessreview",
234				"urlprefix":"market_news/stock-search-company-info?subpage=cpybusinessreview", 
235				"acceptparam":"n", 
236				"acceptstockcode":"y", 
237				"stockcodekey":"code"
238			},
239			{
240				"key":"cpycompanystructure",
241				"urlprefix":"market_news/stock-search-company-info?subpage=cpycompanystructure", 
242				"acceptparam":"n", 
243				"acceptstockcode":"y", 
244				"stockcodekey":"code"
245			},
246			{
247				"key":"cpyprofitloss",
248				"urlprefix":"market_news/stock-search-company-info?subpage=cpyprofitloss", 
249				"acceptparam":"n", 
250				"acceptstockcode":"y", 
251				"stockcodekey":"code"
252			},
253			{
254				"key":"cpyfinancialposition",
255				"urlprefix":"market_news/stock-search-company-info?subpage=cpyfinancialposition", 
256				"acceptparam":"n", 
257				"acceptstockcode":"y", 
258				"stockcodekey":"code"
259			},
260			{
261				"key":"cpycashflow",
262				"urlprefix":"market_news/stock-search-company-info?subpage=cpycashflow", 
263				"acceptparam":"n", 
264				"acceptstockcode":"y", 
265				"stockcodekey":"code"
266			},
267			{
268				"key":"cpyfinancialratio",
269				"urlprefix":"market_news/stock-search-company-info?subpage=cpyfinancialratio", 
270				"acceptparam":"n", 
271				"acceptstockcode":"y", 
272				"stockcodekey":"code"
273			},
274			{
275				"key":"cadividend",
276				"urlprefix":"market_news/stock-search-corporate-action?subpage=cadividend", 
277				"acceptparam":"n", 
278				"acceptstockcode":"y", 
279				"stockcodekey":"code"
280			},
281			{
282				"key":"cabuyback",
283				"urlprefix":"market_news/stock-search-corporate-action?subpage=cabuyback", 
284				"acceptparam":"n", 
285				"acceptstockcode":"y", 
286				"stockcodekey":"code"
287			},
288			{
289				"key":"caplacing",
290				"urlprefix":"market_news/stock-search-corporate-action?subpage=caplacing", 
291				"acceptparam":"n", 
292				"acceptstockcode":"y", 
293				"stockcodekey":"code"
294			},
295			{
296				"key":"mktindexhki",
297				"urlprefix":"market_news/market-overview-indices?type=local", 
298				"acceptparam":"n", 
299				"acceptstockcode":"n"
300			},
301			{
302				"key":"mktindexworld",
303				"urlprefix":"market_news/market-overview-indices", 
304				"acceptparam":"n", 
305				"acceptstockcode":"n"},
306			{
307				"key":"financialfutures",
308				"urlprefix":"market_news/market-overview-financial-futures", 
309				"acceptparam":"n", 
310				"acceptstockcode":"n"
311			},
312			{
313				"key":"quicktrade",
314				"urlprefix":"portal/portlets/tradingcorner/SingleSiteOn.portlet?_nfpb=true&tradeEngine=NWTE&tradeType=quickTrade&_portlet.lafUniqueId=default&_portlet.portalUrl=%2Fshkco-web%2Fportal%2Fportlets%2Fhome%2FquickStockQuote.portlet&_portlet.contentType=text%2Fhtml%3B+charset%3DUTF-8&_portlet.portalId=portal_shkdirect_portal", 
315				"acceptparam":"n", 
316				"acceptstockcode":"y", 
317				"stockcodekey":"countercode"
318			},
319			{
320				"key":"stocksearchafterhandshake",
321				"urlprefix":"market_news/stock-search-quotes?etnetpage=afterhandshake",
322				"acceptparam":"y", 
323				"acceptstockcode":"n"
324			}
325			
326		]};
327		return info;
328  },
329  
330  getPageInfoByKey:function (theKey){
331	var info = shkf.api.getAllInfo();
332	for (i=0;i<info.info.length;i++){
333		if (info.info[i].key==theKey) {
334			return info.info[i];
335		}
336	}
337	return '';
338  },
339          
340  v2: {
341		getURL: function(site, module, lang, user, params, stockcode) {
342			// TODO: need to check which ETNET pages need kanhan
343			var V2_KANHAN_REDIRECT_PATTERNS=['/content/shkf/sc/(.*)', shkf.api.KANHAN_SITE_OS, shkf.api.KANHAN_SITE_IS, shkf.api.KANHAN_SITE_PV];
344			
345			var buildKanHanURL = function (inputURL){
346				for (var i = 0;
346 i < V2_KANHAN_REDIRECT_PATTERNS.length; i++) {
347					if (new RegExp(V2_KANHAN_REDIRECT_PATTERNS[i], 'i').test(window.location.href)){
348						if (site == 'os') {
349							return shkf.api.KANHAN_SITE_OS + '/' + inputURL;
350						} else if (site == 'is') {
351							return shkf.api.KANHAN_SITE_IS + '/' + inputURL;
352						} else if (site == 'pv') {
353							return shkf.api.KANHAN_SITE_PV + '/' + inputURL;
354						}
355					}
356				}
357				return inputURL;
358			}
359			
360			var constructURL = function (siteOfURL, pageOfURL, parameter){
361				if (!siteOfURL || siteOfURL==null || siteOfURL==''){
362					return "";
363				}
364				if (!pageOfURL || pageOfURL==null || pageOfURL==''){
365					return siteOfURL;
366				}
367				
368				var siteAndPageURL = siteOfURL + pageOfURL;
369				
370				if (parameter && parameter!=null && parameter!=''){
371					if (siteAndPageURL.indexOf('?')>-1){
372						if (parameter.indexOf('?')==0){
373							return (siteAndPageURL + '&'  + parameter.substring(1));
374						}else {
375							return (siteAndPageURL + '&'  + parameter);
376						}
377					}else {
378						if (parameter.indexOf('?')==0){
379							return (siteAndPageURL + parameter);
380						}else {
381							return (siteAndPageURL + '?'  + parameter);
382						}
383					}
384				}
385				
386				return (siteAndPageURL);
387				
388			};
389			
390			var formatStockCode = function(src, target){
391				var formattedStockCode = src;
392				while (formattedStockCode.length < target) {
393					formattedStockCode = "0" + formattedStockCode;
394				}
395				return formattedStockCode;
396			};
397			
398			// Start of function call
399			var infoObj = shkf.api.getPageInfoByKey(module);
400			var sitePrefix = ((site == 'os') ? shkf.api.SITE_OS : ((site == 'is') ? shkf.api.SITE_IS :( (site == 'pv') ? shkf.api.SITE_PV : '')));
401			var siteOfURL = sitePrefix +
402							shkf.api.TP_CMS_SITE_ID + 
403							((lang.toLowerCase() =='en_us') ? 'en/' : 'tc/');
404							
405			var parsedStockCode = ((stockcode == parseInt(stockcode, 10)) ? stockcode : '0');
406			
407			if (infoObj == ""){
408				return buildKanHanURL(constructURL(siteOfURL));
409			}else {
410				var pageOfURL = infoObj.urlprefix;
411				
412				
413				if (module=='quicktrade') {
414					// Special handling for quickTrade
415					var formatedStockCode = formatStockCode(parsedStockCode,5);					
416					return buildKanHanURL(constructURL(sitePrefix + '/' + shkf.api.CONTEXT_ROOT + '/', pageOfURL, 'siteLang=' + lang + '&' + infoObj.stockcodekey + '=' + formatedStockCode));
417				}else {
418					if (infoObj.acceptparam =="y"){
419						return buildKanHanURL(constructURL(siteOfURL, pageOfURL, params));	
420					}else if (infoObj.acceptstockcode=="y" && parsedStockCode && parsedStockCode!=null && parsedStockCode!=""){
421						return buildKanHanURL(constructURL(siteOfURL, pageOfURL, infoObj.stockcodekey + "=" + parsedStockCode));
422					}
423					else {
424						return buildKanHanURL(constructURL(siteOfURL, pageOfURL));
425					}
426				}
427				
428			}
429			
430		}
431		
432		,getURLAfterHandshake: function(site, module, lang, user, params, stockcode) {
433			if (stockcode){
434				return shkf.api.v2.getURL(site, module, lang, user,  (params  ? (params + '&code=') : 'code=') + stockcode);
435			}else {
436				return shkf.api.v2.getURL(site, module, lang, user, params);
437			}
438		}
439  
440 
441  }
442};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.