/** * 104I LOGSERVICE API * AUTHOR : NCC.REX * VERSION : 1.0.3 * CREATEDAY : 2013-02-06 */ if (typeof JSON !== 'object') { JSON = {}; } (function () { 'use strict'; function f(n) { return n < 10 ? '0' + n : n; } if (typeof Date.prototype.toJSON !== 'function') { Date.prototype.toJSON = function () { return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null; }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () { return this.valueOf(); }; } var cx, escapable, gap, indent, meta, rep; function quote(string) { escapable.lastIndex = 0; return escapable.test(string) ? '"' + string.replace(escapable, function (a) { var c = meta[a]; return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }) + '"' : '"' + string + '"'; } function str(key, holder) { var i, k, v, length, mind = gap, partial, value = holder[key]; if (value && typeof value === 'object' && typeof value.toJSON === 'function') { value = value.toJSON(key); } if (typeof rep === 'function') { value = rep.call(holder, key, value); } switch (typeof value) { case 'string': return quote(value); case 'number': return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': return String(value); case 'object': if (!value) { return 'null'; } gap += indent; partial = []; if (Object.prototype.toString.apply(value) === '[object Array]') { length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || 'null'; } v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v; } if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { if (typeof rep[i] === 'string') { k = rep[i]; v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v; } } if (typeof JSON.stringify !== 'function') { escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; meta = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' }; JSON.stringify = function (value, replacer, space) { var i; gap = ''; indent = ''; if (typeof space === 'number') { for (i = 0; i < space; i += 1) { indent += ' '; } } else if (typeof space === 'string') { indent = space; } rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } return str('', {'': value}); }; } if (typeof JSON.parse !== 'function') { cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; JSON.parse = function (text, reviver) { var j; function walk(holder, key) { var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } } return reviver.call(holder, key, value); } text = String(text); cx.lastIndex = 0; if (cx.test(text)) { text = text.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } if (/^[\],:{}\s]*$/ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { j = eval('(' + text + ')'); return typeof reviver === 'function' ? walk({'': j}, '') : j; } throw new SyntaxError('JSON.parse'); }; } }()); (function(){ var _logSetting = { DEBUG : false, SERVER_PATH : null, ID_CK : null, EPK : null, TRACK_ACTION : null, WEB_SOURCE : null, TIMEOUT : 1000 }; var updateViewCnt = true; var IE = document.all?true:false; var class2type = {}; var _cookieName = null; var _type = function(obj){ return obj == null ? String(obj) : class2type[Object.prototype.toString.call(obj)] || "object"; }; var _extend = function(target, options){ if(_type(options) === 'object'){ for(var key in options){ if(_type(target[key]) !== undefined && _type(options[key]) !== undefined){ if(_type(target[key]) === 'object' && _type(options[key]) === 'object'){ _extend(target[key],options[key]); }else{ if(options[key] !== null){ target[key] = options[key]; } } }else if(_type(target[key]) === undefined && _type(options[key]) !== undefined){ target[key] = options[key]; } } } return target; }; var _trim = function(text){ var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; return text === null ? "" : ( text + "" ).replace( rtrim, "" ); }; var _elogToClientInfo = function(options){ var _clientInfo = { url : "", web : "", track : [], ext : {}, trackMouse : false, callback : function(){} }; _clientInfo = _extend(_clientInfo, options); _clientInfo.url = location.href; if(!_clientInfo.web){ var websource = _logSetting.WEB_SOURCE.split(','); for(var j = 0; j < websource.length; j++){ var patternAry = websource[j].split('=>'); var testPattern = new RegExp(patternAry[1]); if(testPattern.test(_clientInfo.url)){ _clientInfo.web = patternAry[0]; } } } return _clientInfo; }; var _md5 = (function(){ var hexcase=0; function md5(a){ return rstr2hex(rstr_md5(str2rstr_utf8(a))); } function hex_hmac_md5(a,b){ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a),str2rstr_utf8(b))); } function md5_vm_test(){ return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"; } function rstr_md5(a){ return binl2rstr(binl_md5(rstr2binl(a),a.length*8)); } function rstr_hmac_md5(c,f){ var e=rstr2binl(c); if(e.length>16){ e=binl_md5(e,c.length*8); } var a=Array(16),d=Array(16); for(var b=0;b<16;b++){ a[b]=e[b]^909522486;d[b]=e[b]^1549556828; } var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8); return binl2rstr(binl_md5(d.concat(g),512+128)); } function rstr2hex(c){ try{ hexcase; }catch(g){ hexcase=0; } var f=hexcase?"0123456789ABCDEF":"0123456789abcdef"; var b=""; var a; for(var d=0;d>>4)&15)+f.charAt(a&15); } return b; } function str2rstr_utf8(c){ var b=""; var d=-1; var a,e; while(++d>>6)&31),128|(a&63)); }else{ if(a<=65535){ b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63)); }else{ if(a<=2097151){ b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63)); } } } } } return b; } function rstr2binl(b){ var c = 0; var a=Array(b.length>>2); for(c=0;c>5]|=(b.charCodeAt(c/8)&255)<<(c%32); } return a; } function binl2rstr(b){ var a=""; for(var c=0;c>5]>>>(c%32))&255); } return a; } function binl_md5(p,k){ p[k>>5]|=128<<((k)%32); p[(((k+64)>>>9)<<4)+14]=k; var o=1732584193; var n=-271733879; var m=-1732584194; var l=271733878; for(var g=0;g>16)+(d>>16)+(c>>16); return(b<<16)|(c&65535); } function bit_rol(a,b){ return(a<>>(32-b)); } return md5; })(); var browserInfo = (function(){ var ua = window.navigator.userAgent.toLowerCase(), rwebkit = /(webkit)[ \/]([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, match = rwebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || [], _browser = { browser: match[1] || "", version: match[2] || "0" }, self = function(){}; self.prototype.getBrowser = function(){ return _browser; } return new self(); })(); var _cookie = function(name, value, options){ if (typeof value != 'undefined') { options = options || {}; if (value === null) { value = ''; options.expires = -1; } var expires = ''; if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { var date; if (typeof options.expires == 'number') { date = new Date(); date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires = '; expires=' + date.toUTCString(); } var path = options.path ? '; path=' + (options.path) : ''; var domain = options.domain ? '; domain=' + (options.domain.replace(/.+[\.]*104(.*)(\.com\.tw)$/gm, '.104$1$2')) : '; domain=' + window.location.hostname.replace(/.+[\.]*104(.*)(\.com\.tw)$/gm, '.104$1$2'); var secure = options.secure ? '; secure' : ''; document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); } else { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = _trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } }; var domain = (function(){ var i=0,domain=document.domain,p=domain.split('.'),s='_gd'+(new Date()).getTime(); while(i<(p.length-1) && document.cookie.indexOf(s+'='+s)==-1){ domain = p.slice(-1-(++i)).join('.'); document.cookie = s+"="+s+";domain="+domain+";"; } document.cookie = s+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain="+domain+";"; return domain; })(); var EmptyState = (function(){ var self = function(){}; self.prototype.getState = function(ParamContent){ var paramObj = ParamContent.getParamObj(); if(!paramObj){ return false; }else{ ParamContent.setMyState(new LusState()); return ParamContent.getState(); } }; return self; })(); var LusState = (function(){ /*jshint sub: true*/ var self = function(){}; self.prototype.getState = function(ParamContent){ var paramObj = ParamContent.getParamObj(); if(!paramObj['lus']){ return false; }else{ ParamContent.setMyState(new LucState()); return ParamContent.getState(); } }; return self; })(); var LucState = (function(){ /*jshint sub: true*/ var self = function(){}; self.prototype.getState = function(ParamContent){ var paramObj = ParamContent.getParamObj(); if(!paramObj['luc']){ return false; }else{ ParamContent.setMyState(new LuauidState()); return ParamContent.getState(); } }; return self; })(); var LuauidState = (function(){ /*jshint sub: true*/ var self = function(){}; self.prototype.getState = function(ParamContent){ var paramObj = ParamContent.getParamObj(); if(!paramObj['luauid']){ return false; }else{ ParamContent.setMyState(new LuaState()); return ParamContent.getState(); } }; return self; })(); var LuaState = (function(){ /*jshint sub: true*/ var self = function(){}; self.prototype.getState = function(ParamContent){ var paramObj = ParamContent.getParamObj(); if(!paramObj['lua']){ return false; }else{ return true; } }; return self; })(); var ParamContent = (function(){ var paramObj = null; var myState = null; var self = function(paramObj){ var myself = this; myself.getParamObj = function(){ return paramObj; }; myself.setParamObj = function(paramObjTemp){ paramObj = paramObj; }; myself.getMyState = function(){ return myState; }; myself.setMyState = function(stateTemp){ myState = stateTemp; }; myself.getState = function(){ return myself.getMyState().getState(myself); }; function __construct(paramObj){ myself.setParamObj(paramObj); myself.setMyState(new EmptyState()); } __construct(paramObj); }; return self; })(); var CookieUtil = _extend({ getCookieName : function(){ return _cookieName; }, setCookieName : function(cookieName){ _cookieName = cookieName; }, getValue : function(cookieName){ var cookieValue = _cookie(cookieName); if(cookieValue !== null && cookieValue !== '""' && cookieValue !== "''" && cookieValue !== '%22%22'){ return cookieValue; } return null; }, getCookie : function(cookieName){ var resultCookie = {}; if(cookieName !== undefined){ resultCookie[cookieName] = CookieUtil.getValue(cookieName); }else{ var cookieSetting = CookieUtil.getCookieName(); if(cookieSetting !== null){ for(var i = 0; i < cookieSetting.length; i++){ var cookieNameItem = cookieSetting[i]; resultCookie[cookieNameItem] = CookieUtil.getValue(cookieNameItem); } } } return resultCookie; }, setCookie : function(cookieName,path,value,time){ if (CookieUtil.getCookie(cookieName) !== null) { document.cookie = cookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; } _cookie(cookieName, value, {path:'/',expires:720}); } }); var LupMaker = _extend({ makeNewLup : function(logFormat){ var newLup = []; CookieUtil.setCookieName(['luauid','lup','lunp']); var cookieArray = CookieUtil.getCookie(); if(cookieArray['lup'] === null){ cookieArray['lup'] = '...'; } var lup = cookieArray['lup'].split('.'); var luauid = cookieArray['luauid']; var lunp = cookieArray['lunp']; var url = (logFormat['lus'] !== undefined) && (logFormat['lus']['sourcepage'] !== undefined)?logFormat['lus']['sourcepage']:''; var urlAry = ''; var host = ''; var hostHash = 0; var subPath = ''; var subPathHash = 0; if(url !== ''){ urlAry = url.replace(/http\:\/\//,'').split('/'); host = urlAry[0]; hostHash = LupMaker.urlToHash(host); subPath = urlAry.slice(1,(urlAry.length-1)).join(''); subPathHash = LupMaker.urlToHash(subPath); } var cookieTime = 60*60*24*365*2; //luauid if(lup[0] !== undefined && lup[0] !== ''){ newLup[0] = lup[0]; }else{ if(luauid === null){ newLup[0] = Math.round(Math.random() * 2147483647); }else{ newLup[0] = luauid; } } //luc && lurrc if(lup[2] !== undefined && lup[2] !== '') { if(lup[2] == subPathHash) { newLup[1] = lup[1]; newLup[2] = lup[2]; updateViewCnt = false; } else { newLup[1] = lup[2]; newLup[2] = subPathHash; updateViewCnt = true; } } else { if(lunp === null) { newLup[1] = newLup[2] = subPathHash; updateViewCnt = true; } else { if(lunp == subPathHash) { newLup[1] = newLup[2] = subPathHash; updateViewCnt = true; } else { newLup[1] = lunp; newLup[2] = subPathHash; updateViewCnt = false; } } } //cnt if(lup[3] !== undefined && lup[3] !== '') { if(lup[2] == subPathHash) { if(updateViewCnt === true){ var thisCnt = parseInt(lup[3]); newLup[3] = thisCnt + 1; }else{ var thisCnt = parseInt(lup[3]); newLup[3] = thisCnt; } } else { newLup[3] = 1; } } else { newLup[3] = 1; } //host if(lup[4] !== undefined && lup[4] !== '') { newLup[4] = lup[4]; } else { newLup[4] = hostHash; } var cookieStr = newLup.join('.'); CookieUtil.setCookie('lup','/',cookieStr,cookieTime); CookieUtil.setCookie('luauid','/',newLup[0],cookieTime); CookieUtil.setCookie('lunp','/',newLup[2],cookieTime); return newLup; }, urlToHash : function(str){ var hash = 0; var val = _md5(str); for(var i = 0; i < val.length; i++){ var word = val[i]; if(typeof word === 'undefined'){ word = val.charAt(i); } hash += word.charCodeAt(0); } hash = hash*2147483647; return hash; } }); var ParamUtil = _extend(LupMaker, { getUrlToLus : function(logFormat,param){ var url = param["url"]; if(url !== undefined){ var lus = url.split('?'); logFormat['lus'] = { 'sourcepage' : lus[0], 'querystring' : (lus[1] !== undefined)?lus[1]:'' }; } return logFormat; }, getRefToLur : function(logFormat,param){ var url = document.referrer; if(url !== undefined){ var lur = url.split('?'); logFormat['lur'] = { 'referrer' : lur[0], 'querystring' : (lur[1] !== undefined)?lur[1]:'' }; } return logFormat; }, getActToLua : function(logFormat,param){ if(param["web"] !== undefined && param["track"] !== undefined){ var lua = param["track"]; logFormat['lua'] = { 'track_action' : lua[0], 'websource' : param['web'] }; } return logFormat; }, getExtToLue : function(logFormat,param){ var lue = param["ext"]; if(lue !== undefined){ logFormat['lue'] = lue; }else{ logFormat['lue'] = {}; } logFormat['luf'] = 'js'; logFormat['lue']['pkey'] = ''; var keyAry = _logSetting.TRACK_ACTION.split(','); var track = param['track']; for(var i = 0; i < keyAry.length; i++) { var value = keyAry[i]; if(track[0] === value && track[1] !== undefined && track[1] !== '') { logFormat['lue']['pkey'] = track[1]; } } return logFormat; }, getIdckToLuidck : function(logFormat,param){ var cookieArray = CookieUtil.getCookie(_logSetting.ID_CK); var idck = cookieArray[_logSetting.ID_CK]; if(idck !== null){ logFormat['luidck'] = idck; }else{ logFormat['luidck'] = ''; } return logFormat; }, getGcidToLugcid : function(logFormat,param){ var cookieArray = CookieUtil.getCookie('_ga'); var gcid = cookieArray['_ga']; if(gcid !== null){ logFormat['lugcid'] = gcid.replace(/^GA.+\.(\S+)\.(\S+)$/gm, '$1.$2');; }else{ logFormat['lugcid'] = ''; } return logFormat; }, getEpkToLuepk : function(logFormat,param){ var cookieArray = CookieUtil.getCookie(_logSetting.EPK); var epk = cookieArray[_logSetting.EPK]; if(epk !== null){ logFormat['luepk'] = epk; }else{ logFormat['luepk'] = ''; } return logFormat; }, getEpkbToLuepkb : function(logFormat,param){ var cookieArray = CookieUtil.getCookie(_logSetting.EPKB); var epkb = cookieArray[_logSetting.EPKB]; if(epkb !== null){ logFormat['luepkb'] = epkb; }else{ logFormat['luepkb'] = ''; } return logFormat; }, getPathToLup : function(logFormat,param){ var newLup = ParamUtil.makeNewLup(logFormat); logFormat['luauid'] = newLup[0]; logFormat['lurrc'] = newLup[1]; logFormat['luc'] = newLup[2]; logFormat['luv'] = newLup[3]; return logFormat; }, getBrowserTypeToLub : function(logFormat){ var _browserInfo = browserInfo.getBrowser(); if(_browserInfo['browser']){ logFormat['lub'] = _browserInfo['browser'] + "/" + _browserInfo['version']; } return logFormat; } }); var LogService = _extend({ encode : function(paramValue){ if(_type(paramValue) !== "string"){ var json = JSON.stringify(paramValue); return encodeURIComponent(json); }else{ return paramValue; } }, paramToLogFormat : function(param){ var logFormat = {'lus':null,'lua':null,'lue':null}; logFormat = ParamUtil.getUrlToLus(logFormat,param); logFormat = ParamUtil.getRefToLur(logFormat,param); logFormat = ParamUtil.getActToLua(logFormat,param); logFormat = ParamUtil.getExtToLue(logFormat,param); logFormat = ParamUtil.getIdckToLuidck(logFormat,param); logFormat = ParamUtil.getGcidToLugcid(logFormat,param); logFormat = ParamUtil.getEpkToLuepk(logFormat,param); logFormat = ParamUtil.getEpkbToLuepkb(logFormat,param); logFormat = ParamUtil.getPathToLup(logFormat,param); logFormat = ParamUtil.getBrowserTypeToLub(logFormat,param); return logFormat; }, isParamObjLegitimacy : function(logFormat){ var paramState = new ParamContent(logFormat); return paramState.getState(); }, logFormatToUrl : function(logFormat){ var url = ''; for(var key in logFormat){ var paramValue = logFormat[key]; var valueEncode = LogService.encode(paramValue); if(valueEncode !== ''){ url += (url?'&':'') + key + '=' + valueEncode; } } url += (url?'&':'') + 'lut=' + new Date().getTime() return url; }, sendByTag : function(url,tag){ if(tag === 'script'){ var head = document.getElementsByTagName("head")[0]; var script=document.createElement('script'); script.id='log'; script.type="text/javascript"; script.src=url; script.onload=script.onreadystatechange=function(){if(this.readyState && this.readyState=="loading"){return;}else{head.removeChild(script);}}; script.onerror=function(){head.removeChild(script);}; head.appendChild(script); }else{ var image = new Image(); image.src = url; } }, regInterval : function(callback){ window.setInterval(function(){ callback.call(this); },_logSetting.TIMEOUT); }, regOnLoad : function(){ if(window._elog && _type(_elog) === 'array' && _elog.length > 0){ try{ var _clientInfo = _elogToClientInfo(_elog.shift()); LogService.log({ url : _clientInfo.url, web : _clientInfo.web, track : _clientInfo.track, ext : _clientInfo.ext, callback : _clientInfo.callback }); }catch(e){} } }, regOnUnload : function(callback){ if (window.addEventListener){ window.addEventListener('beforeunload', callback, false); }else if(window.attachEvent){ window.attachEvent('onbeforeunload',callback); } }, getQueueToLog : function(){ if(window._elog && _type(_elog) === 'array' && _elog.length > 0){ try{ for(var i = 0; i < _elog.length; i++){ var _clientInfo = _elogToClientInfo(_elog[i]); LogService.log({ url : _clientInfo.url, web : _clientInfo.web, track : _clientInfo.track, ext : _clientInfo.ext, callback : _clientInfo.callback }); } }catch(e){} } window._elog = []; }, log : function(paramAry){ if(!paramAry){ return false; } if(!paramAry.url){ return false; } try{ var logFormat = LogService.paramToLogFormat(paramAry); if(LogService.isParamObjLegitimacy(logFormat) === false){ throw ERROR; } var logFormatToUrl = LogService.logFormatToUrl(logFormat); var mainUrl = _logSetting.SERVER_PATH + '?' + logFormatToUrl; if(mainUrl !== undefined && mainUrl.length > 4000){ throw new Error('Data Too Large.'); } LogService.sendByTag(mainUrl); if(paramAry.callback){ paramAry.callback(); } return true; }catch(e){ if(_logSetting.DEBUG){ console.log(e); } if(paramAry.callback){ paramAry.callback(); } return false; } }, init: function(setting){ for(var i=0, typeAry = "Boolean Number String Function Array Date RegExp Object".split(" "); i < typeAry.length;i++){ class2type["[object " + typeAry[i] + "]"] = typeAry[i].toLowerCase(); } _extend(_logSetting,setting); LogService.regOnLoad(); LogService.regInterval(LogService.getQueueToLog); LogService.regOnUnload(LogService.getQueueToLog); } }); var logServerPath = (/(\.e104|\.s104|\.104\-dev|\.104dc\-dev)\.com\.tw|(localhost|^10\.102\.|^127\.0\.0\.1)/.test(location.host)) ? '//uts.104-dev.com.tw/log/send' : ((/(\.104\-staging|\.104dc\-staging)\.com\.tw/.test(location.host)) ? '//uts.104-staging.com.tw/log/send' : '//uts.104.com.tw/log/send' ); LogService.init({ DEBUG : true, SERVER_PATH : logServerPath, ID_CK : 'ID_CK', EPK : 'EPK', EPKB : 'EPKB', TRACK_ACTION : 'viewIndex,viewJoblist,viewJob,viewCustlist,viewCust,applyJob,saveJob,' + 'viewActivityList,viewActivity', WEB_SOURCE : '104_i=>jb/104i,' + '104_bank=>jobbank' }); })();