// 取得用戶端的瀏覽器種類 function GetBrowserInfo() { var Browser = { Name:'', FullVersion:'', MajorVersion:'', AppName:'', UserAgent:'', Support:{} }; var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = '' + parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion, 10); var nameOffset, verOffset, ix; // Microsoft Edge if ((verOffset=nAgt.indexOf(" Edge/")) != -1) { browserName = "MS Edge"; fullVersion = nAgt.substring(verOffset+6); } // In Opera 15+, the true version is after " OPR/" else if ((verOffset=nAgt.indexOf(" OPR/")) != -1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+5); } // In older Opera, the true version is after "Opera" or after "Version" else if ((verOffset=nAgt.indexOf("Opera")) != -1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version")) != -1) fullVersion = nAgt.substring(verOffset+8); } else if (!!window.opera) { browserName = "Opera"; fullVersion = 'Unknown'; } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome")) != -1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE")) != -1) { browserName = "MSIE"; fullVersion = nAgt.substring(verOffset+5); } else if ((verOffset=nAgt.indexOf(" rv:")) != -1) { browserName = "MSIE"; fullVersion = nAgt.substring(verOffset+4); } // In most other browsers, "name/version" is at the end of userAgent else if ((nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/'))) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) browserName = navigator.appName; } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion, 10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } Browser.Name = String(browserName); Browser.FullVersion = String(fullVersion); Browser.MajorVersion = String(majorVersion); Browser.AppName = String(navigator.appName); Browser.UserAgent = String(navigator.userAgent); // detect support function var oInput = document.createElement("input"); oInput.setAttribute("type", "color"); if (oInput.type != "color") { Browser.Support.InputColor = false; } else { Browser.Support.InputColor = true; } delete oInput; return Browser; } function ResizeScreen() { setCookie(['SCREEN_SIZE','WIDTH'], screen.width, 7, '/'); setCookie(['SCREEN_SIZE','HEIGHT'], screen.height, 7, '/'); if ('StockPainter' in window) { RepaintStockChart(StockPainter); } if ('ShowFloatScrollTool' in window) { ShowFloatScrollTool(); } //ShowFooterStickyAD(); } function ScrollWindow() { if ('StockPainter' in window) { RepaintStockChart(StockPainter); } if ('ShowFloatScrollTool' in window) { ShowFloatScrollTool(); } } function ShowFloatScrollTool() { for (var i=0; i= oReport.clientWidth || oParent.style.display == 'none' || oReport.style.display == 'none') { sHeader = 'none'; sScrollBar = 'none'; } var y = RealPosY(oParent) - PageYOffset(); if (y > window.innerHeight || y + oParent.clientHeight < 0) { sHeader = 'none'; sScrollBar = 'none'; } if (oHeader != null) { oHeader.style.display = sHeader; if (TypeName(oReport) == '[object HTMLTableElement]') { for (var j=0;j screen.width && screen.height >= 200*3) { divFooterStickyAD.style.display = ''; } else { divFooterStickyAD.style.display = 'none'; } } } // 取得網頁實際高度 function GetPageHeight() { return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight); } // 修改row的底色 function ChgBGColor(id, color) { for (var i=0;i= 0) { result = result + 1; } return result; } function Len(s) { return String(s).length; } function LenMbcs(s) { return LenMBCS(s); } function LenMBCS(s) { var iLen = 0; for (var i = 0; i < String(s).length; i++) { var j = String(s).charCodeAt(i); iLen = iLen + ((j > 255 || j < 0)?2:1); } return iLen; } function Split(s, sTag) { return String(s).split(sTag); } function Join(arr, sTag) { return arr.join(sTag); } function UCase(s) { return String(s).toUpperCase(); } function LCase(s) { return String(s).toLowerCase(); } function Trim(s) { return String(s).trim(); } function LTrim(s) { return String(s).trimStart(); } function RTrim(s) { return String(s).trimEnd(); } function NVL(v, r) { if (r == undefined) { r = ''; } if (v == undefined) { return r; } if (v == null) { return r; } if (v == '') { return r; } return v; } function DVL(v, r) { return (IsDate(v)?v:r); } function NumVL(v, r) { return (IsNumeric(v)?v:r); } function TypeName(o) { return Object.prototype.toString.call(o); } function ReplaceBetween(sExpression, sFindStart, sFindEnd, sReplace, sCompare) { if (sCompare == undefined) { sCompare = 'gi'; } var re = new RegExp(escapeRegExp(sFindStart) + '(.*?)' + escapeRegExp(sFindEnd), sCompare); return String(sExpression).replace(re, sReplace); } function export2xls(s, sFileName) { export2html(s, sFileName); } function export2html(s, sFileName) { var s1, s2, i, j; // Replace link tag s = s.replace(/<\/a>/gi,'<\/font>'); while (s.search(/= 0) { i = s.search(/',i); s1 = s.substring(i,j+1); if (s1.search(/ class=/i) >= 0 && s1.search(/link_/i) >= 0) { if (s1.search(/link_red/i) >= 0) s2 = '' else if (s1.search(/link_yellow/i) >= 0) s2 = '' else if (s1.search(/link_green/i) >= 0) s2 = '' else if (s1.search(/link_blue/i) >= 0) s2 = '' else if (s1.search(/link_gray/i) >= 0) s2 = '' else if (s1.search(/link_orange/i) >= 0) s2 = '' else if (s1.search(/link_white/i) >= 0) s2 = '' else s2 = ''; } else { s2 = ''; } s = s.substring(0,i) + s2 + s.substring(j+1,s.length); } // Remove event tag s = s.replace(/onmouseout=/gi,'xxx='); s = s.replace(/onmouseover=/gi,'xxx='); // 清除DummyTHead s = ReplaceBetween(s,'','','') // Add html tag if (Right(sFileName,5).toLowerCase() == '.html' || Right(sFileName,4).toLowerCase() == '.htm') { s = '' + '' + '' + '' + '' + '' + '' + s + ''; } else { s = ReplaceBetween(s,'','','') //清除DummyTR s = Replace(s,'class=\'bg_h0\'','bgcolor=\'#e3eef8\''); s = Replace(s,'class=\'bg_h1\'','bgcolor=\'#e3eef8\''); s = Replace(s,'class=\'bg_h2\'','bgcolor=\'#d7e6f4\''); s = Replace(s,'class="bg_h0"','bgcolor="#e3eef8"'); s = Replace(s,'class="bg_h1"','bgcolor="#e3eef8"'); s = Replace(s,'class="bg_h2"','bgcolor="#d7e6f4"'); s = Replace(s,''; } // Save file if(window.navigator.msSaveOrOpenBlob) { var blobObject = new Blob(['\uFEFF'+s],{type: 'text/htm;charset=utf-8;'}); window.navigator.msSaveOrOpenBlob(blobObject, sFileName); } else if (navigator.appName != 'Microsoft Internet Explorer') { var blobObject = new Blob(['\uFEFF'+s],{type: 'text/htm;charset=utf-8;'}); if ('export2html_A' in window) { var object = document.getElementById('export2html_A'); } else { var object = document.createElement('A') object.setAttribute('id','export2html_A') object.target = '_blank'; object.style.display = 'none'; document.body.appendChild(object); } object.href = URL.createObjectURL(blobObject); object.download = sFileName; object.click(); } else { if ('export2html_B' in window) { var object = document.getElementById('export2html_B'); } else { var object = document.createElement('IFRAME'); object.setAttribute('id','export2html_B'); object.style.display = 'none'; document.body.appendChild(object); } if (object.contentDocument) { var doc = object.contentDocument; } else if (object.contentWindow) { var doc = object.contentWindow.document; } else { alert('很抱歉,您的瀏覽器無法支援此匯出功能!'); return; } doc.open('application/htm','replace'); doc.charset = 'utf-8'; doc.write(s); doc.close(); doc.execCommand('SaveAs', null, sFileName); } } function export2csv(s, sFileName) { if(window.navigator.msSaveOrOpenBlob) { var blobObject = new Blob(['\uFEFF'+s],{type: 'text/csv;charset=utf-8;'}); window.navigator.msSaveOrOpenBlob(blobObject, sFileName); } else if (navigator.appName == 'Microsoft Internet Explorer') { if ('export2csv_B' in window) { var object = document.getElementById('export2csv_B'); } else { var object = document.createElement('IFRAME'); object.setAttribute('id','export2csv_B'); object.style.display = 'none'; document.body.appendChild(object); } if (object.contentDocument) { var doc = object.contentDocument; } else if (object.contentWindow) { var doc = object.contentWindow.document; } else { alert('很抱歉,您的瀏覽器無法支援此CSV匯出功能!'); return; } doc.open('application/csv','replace'); doc.charset = 'utf-8'; doc.write(s); doc.close(); doc.execCommand('SaveAs', null, sFileName); } else { var blobObject = new Blob(['\uFEFF'+s],{type: 'text/csv;charset=utf-8;'}); if ('export2csv_A' in window) { var object = document.getElementById('export2csv_A'); } else { var object = document.createElement('A') object.setAttribute('id','export2csv_A') object.target = '_blank'; object.style.display = 'none'; document.body.appendChild(object); } object.href = URL.createObjectURL(blobObject); object.download = sFileName; object.click(); } } function IsNumeric(s) { return (s != null && String(s) != '' && !isNaN(s)?true:false); } function IsInt(v) { return Number.isInteger(Number(v)) } function IsFloat(v) { return IsNumeric(v) && !Number.isInteger(Number(v)) } function IsDate(s) { return (s != null && new Date(s) !== "Invalid Date" && !isNaN(new Date(s))) ? true : false; } function GetStrNum(s, sEmptyReturn) { if (sEmptyReturn == undefined) { sEmptyReturn = ''; } return NVL(String(s).replace( /[^\d\.]*/g, ''), sEmptyReturn); } function escape2(s) { var result = escape(s); result = String(result).replace(/\+/g,'%2B'); return result; } function escapeRegExp(s) { return String(s).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } function WeekName(d) { var result = ''; if (IsDate(d)) { var i = new Date(d).getDay(); if (i == 0) { result = '日'; } else if (i == 1) { result = '一'; } else if (i == 2) { result = '二'; } else if (i == 3) { result = '三'; } else if (i == 4) { result = '四'; } else if (i == 5) { result = '五'; } else if (i == 6) { result = '六'; } } return result; } function DisableSelect() { var s = document.body.className; if (s.indexOf('disable_select') == -1) { document.body.className = s + (s==''?'':' ') + 'disable_select'; } } function EnableSelect() { var s = document.body.className; s = String(s).replace('disable_select',''); s = String(s).replace(' ',' '); document.body.className = String(s).trim(); } function IsObjectExist(oParent, sChildObject) { var arr = Split(Replace(sChildObject,' ',''),'.'); if (arr.length <= 0) return false; var o = oParent; for (var v of arr) { if (!(o[v])) return false; o = o[v]; } return true; }