/* * A complete cookies reader/writer framework with full unicode support. */ var docCookies = { getItem: function (sKey) { return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; }, setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } var sExpires = ""; if (vEnd) { switch (vEnd.constructor) { case Number: sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; break; case String: sExpires = "; expires=" + vEnd; break; case Date: sExpires = "; expires=" + vEnd.toUTCString(); break; } } document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); return true; }, removeItem: function (sKey, sPath, sDomain) { if (!sKey || !this.hasItem(sKey)) { return false; } document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : ""); return true; }, hasItem: function (sKey) { return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); }, keys: /* optional method: you can safely remove it! */ function () { var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } return aKeys; } }; /* * Event Util */ var EventUtil = { getEvent: function (event) { return event ? event : window.event; }, addHandler: function (element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } }; /* * Document Util */ var DomUtil = { addScript: function(url, callback_name) { var newScript = document.createElement('script'), firstScript = document.getElementsByTagName('script')[0]; newScript.async = 1; if(callback_name) { url += url.indexOf('?') > -1 ? '&' : '?'; url += 'callback=' + callback_name; } newScript.src = url; firstScript.parentNode.insertBefore(newScript, firstScript); } } var ChartsmithTracker = {}; /* * Track initialize */ ChartsmithTracker.create = function() { }; /* * Track Send request to an image * bind page information within the request param */ ChartsmithTracker.send = function() { /* * Send Track function (by send image with Get param) as soon as page load */ sendTrackData(); var temp_cookie = docCookies.getItem('_chartsmith_t') || ''; var perm_cookie = docCookies.getItem('_chartsmith_p') || ''; /* * Process tracking identity */ var newScript = document.createElement('script'), firstScript = document.getElementsByTagName('script')[0]; newScript.async = 1; var newScriptUrl = 'https://www.oneday.com.hk/ti/?q=66ac1be627c9aeb3fdb00a0a14630052dcdad517aec00a88d4682a19058e9966'; newScriptUrl += newScriptUrl.indexOf('?') > -1 ? '&' : '?'; //Add url newScriptUrl += 'url=' + encodeURIComponent(location.href); var path = location.href; //Add temp cookie and perm cookie params to url newScriptUrl += '&_chartsmith_p=' + perm_cookie; newScriptUrl += '&_chartsmith_t=' + temp_cookie; newScript.src = newScriptUrl; firstScript.parentNode.insertBefore(newScript, firstScript); /* * Get page information */ //Set url var path = location.href; //Set User Agent var useragent = navigator.userAgent; //Send the request when trigger unload event EventUtil.addHandler(window, "beforeunload", function (event) { event = EventUtil.getEvent(event); /* * Store Track data before the web page unlaod, bind the data with window.name */ storeTrackData(); }); /* * Store Track data before the web page unlaod, bind the data with window.name */ function storeTrackData() { /* * Check to see if set cookie * For support anonymous person, permanent cookie dont't require any more */ var temp_cookie = docCookies.getItem('_chartsmith_t') || ''; var perm_cookie = docCookies.getItem('_chartsmith_p') || ''; if(temp_cookie) { //Caculate duration var duration = new Date().getTime() - ChartsmithTracker.clientObj.l; duration = parseInt(duration / 1000, 10); var trackData = ''; trackData += '_chartsmith_p=' + perm_cookie; trackData += '&_chartsmith_t=' + temp_cookie; trackData += '&url='+encodeURIComponent(path); trackData += '&useragent=' + useragent; trackData += '&duration=' + duration; // save trackData to cookie docCookies.setItem('_chartsmith_d', trackData, null, '/'); } } /* * Send Track function (by send image with Get param) */ function sendTrackData() { /* * Check to see if set track data cookie, track data cookie include the information of previous page activity */ var prevTrackData = docCookies.getItem('_chartsmith_d'); if(prevTrackData) { var collect_url = '//www.oneday.com.hk/r/response/core/track/webvisit/?q=66ac1be627c9aeb3fdb00a0a14630052dcdad517aec00a88d4682a19058e9966'; var image = new Image(); image.src = collect_url + '&' + prevTrackData; } } }; /* * Get page statistics */ ChartsmithTracker.pageStats = function() { var param = arguments[0]; if(!param) { console.error("No any arguments"); return false; } if(!param[0]) { console.error("No first argument"); return false; } if(!param[1]) { console.log("No second argument"); return false; } var item = param[0]; var callback = param[1]; var url = "//www.oneday.com.hk/r/response/core/track/pageAPI/?q=66ac1be627c9aeb3fdb00a0a14630052dcdad517aec00a88d4682a19058e9966"; url += '&item=' + item; url += '&url=' + encodeURIComponent(location.href); //define the callback function //the function will be executed after page stats script loaded var Chartsmith = ChartsmithTracker.clientObj; Chartsmith.pageStats = Chartsmith.pageStats || {}; Chartsmith.pageStats[item] = Chartsmith.pageStats[item] || {}; Chartsmith.pageStats[item].callback = function(response) { if(response.num) { Chartsmith.pageStats[item].data = response; callback(response); } else { Chartsmith.pageStats[item].data = false; callback(false); } }; DomUtil.addScript(url, "ChartsmithTracker.clientObj.pageStats."+ item +".callback"); }; /* * Execute client request */ ChartsmithTracker.execute = function() { if(typeof window.ChartsmithTrackerObj != 'undefined') { var clientObj = eval(window.ChartsmithTrackerObj); ChartsmithTracker.clientObj = clientObj; for(var i=0,len=clientObj.q.length;i0) func_args.push(clientObj.q[i][j]); } if(typeof ChartsmithTracker[func_name] != 'undefined') ChartsmithTracker[func_name](func_args); } } } ChartsmithTracker.execute();