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&siteLang=' + lang + '&&_pageLabel=portal_pages_' + domain + '_Login_page&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&siteLang=' + lang + '&&_pageLabel=portal_pages_' + domain + '_Login_page&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.