// ログ収集サーバにあるイメージファイル var _imgpath="/ec/images/Access.gif"; //-- Auto/Organic Sources and Keywords var _searchWebSite=new Array(); var _searchKeyWord=new Array(); var _searchEngine=new Array(); _searchWebSite[0]="google"; _searchKeyWord[0]="q"; _searchEngine[0]="Googlebot"; _searchWebSite[1]="yahoo"; _searchKeyWord[1]="p"; _searchEngine[1]="Yahoo! Slurp"; _searchWebSite[2]="msn"; _searchKeyWord[2]="q"; _searchEngine[2]="MSNBot"; _searchWebSite[3]="baidu"; _searchKeyWord[18]="wd"; _searchEngine[3]="Baiduspider"; //-- 無視のキーワード var _ignoeKeyWord=new Array(); var _exeFlg,_url,_udl=document.location; var _referrer,_refDomain="",_refKeyword="",_accesstime,_title,_uid,_userAgent,_banner,_logType; var _pcMobileFlg="0"; //0:PC; 1:Docomo; 2:au; 3:softbank; var _logFlg="1"; //1: //20091111 itfor.tnorimatsu 変数追加 var _eucFlg="0"; //リファラーがEUC-JPでエンコーディングしている場合は「1」 var _sjisFlg="0"; //リファラーがS-JISでエンコーディングしている場合は「1」 var _utf8Flg="0;" //リファラーがUTF-8でエンコーディングしている場合は「1」 function itforecTracker(page) { //プロトコルは「file」の場合、該当スクリプトが実行しない if (_udl.protocol=="file:") return; //同じ画面で2回目実行の場合、該当スクリプトが実行しない if (_exeFlg && (!page || page=="")) return; _userAgent=navigator.userAgent; for (var ii=0;ii<_searchEngine.length;ii++) { if (_userAgent.toLowerCase().indexOf(_searchEngine[ii].toLowerCase()) > -1) return; } var strParameter=""; _referrer=document.referrer; //リファラーのドメイン取得 getReferrerDomain(); strParameter+="referrer=" +_refDomain; //リファラーの検索キーワード取得 getReferrerKeyword("1"); strParameter+="&keyword=" +_refKeyword; //乱数で疑似セッションID作成 _uid=getCookieUnitid(); if(!_uid || _uid=="") { getUnitid(); } var expireTime=new Date(); expireTime.setTime(expireTime.getTime()+(3*60*60*1000)); document.cookie = "unitid=" + _uid + ";expires=" + expireTime.toGMTString()+";path=/"; strParameter+="&uid=" +_uid; //アクセス時間取得 //アクセス時間はサーバ側で取るために、削除する //var dateFormat = new DateFormat("yyyy/MM/dd HH:mm:ss SSS"); //var _accesstime = dateFormat.format(new Date()); // Date(現在時刻)をStringに変換 //strParameter+="&accesstime=" + _accesstime; //URL追加 _urlpath=_udl.pathname; strParameter+="&url="+_urlpath; //タイトル追加 _title=document.title; strParameter+="&title="+_uES(_title); //PCモバイル区分 strParameter+="&pcMobileFlg="+_pcMobileFlg; //バナー&ログ種類 if(page && page!=""){ _logType="2"; _banner=page; }else{ _logType="1"; _banner=""; } strParameter+="&banner="+_banner; strParameter+="&logType="+_logType; // パラメータをサーバへ送信する // var img=new Image(1,1); img.src=_imgpath+"?"+strParameter; img.onload=function() { _uVoid(); } _exeFlg=1; return; } function getCookieUnitid(){ var kword = "unitid" + "="; var data = "",start,end; var scookie = document.cookie + ";"; start = scookie.indexOf(kword); if (start != -1){ end = scookie.indexOf(";", start); data = unescape(scookie.substring(start + kword.length, end)); } return data; } //7桁の乱数生成関数 function getUnitid(){ var i=0; while(!(i>=0.1&&i<1)) i=Math.random(); _uid=Math.round(i*10000000); } //リファラーのドメイン取得関数 //20091111 itfor.tnorimatsu リファラーの中に「UTF-8」、「EUC-JP」があればフラグを立てる function getReferrerDomain(){ if (!_referrer ||_referrer=="") return ""; var i=0,h,k; if ((i=_referrer.indexOf("://")) < 0) return ""; h=_referrer.substring(i+3,_referrer.length); if (h.indexOf("/") > -1) { h=h.substring(0,h.indexOf("/")); } var dm=document.domain; var p=_referrer.indexOf(dm); if ((p>=0) && (p<=8)) { h=""; } if (_referrer.indexOf("[")==0 && _referrer.lastIndexOf("]")==(_referrer.length-1)) { h=""; } _refDomain=h; var _lowReferrer=_referrer.toLowerCase(); if (_lowReferrer.indexOf("shift_jis") > -1) { _sjisFlg=1; } if (_lowReferrer.indexOf("euc-jp") > -1) { _eucFlg=1; } if (_lowReferrer.indexOf("utf-8") > -1) { _utf8Flg=1; } } //リファラーのキーワード取得関数 function getReferrerKeyword(flg) { if (!_referrer ||_referrer=="") return ""; if (!_refDomain ||_refDomain=="") return ""; var j,k,m; for (var i=0;i<_searchWebSite.length;i++) { if (_refDomain.toLowerCase().indexOf(_searchWebSite[i].toLowerCase()) > -1) { if ((j=_referrer.indexOf("?"+_searchKeyWord[i]+"=")) > -1 || (j=_referrer.indexOf("&"+_searchKeyWord[i]+"=")) > -1) { m=_referrer.substring(j+_searchKeyWord[i].length+2,_referrer.length); if ((j=m.indexOf("&")) > -1) m=m.substring(0,j); for (var y=0;y<_ignoeKeyWord.length;y++) { if (_ignoeKeyWord[y].toLowerCase()==m.toLowerCase()) { _ufno=1; break; } } // 20091112 itfor.torimatsu EUC-JP,Shift-JISは無視 mod start if(_eucFlg == 0 && _sjisFlg == 0 && _utf8Flg == 1){ if (flg){ _refKeyword=_uEC(m); return; }else{ _refKeyword="utmccn=(organic)|utmcsr="+_uEC(_searchWebSite[i])+"|"+"utmctr="+_uEC(m)+"|utmcmd=organic"; return; } }else{ return ""; } // 20091112 itfor.torimatsu EUC-JP,Shift-JISは無視 mod end } } } return ""; } function _uVoid() { return; } function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i= length) { return str; } return new Array(length - str.length + 1).join("0") + str; }, /// Parser /// parse: function(text) { if (typeof text != 'string' || text == '') return null; var result = {year: 1970, month: 1, day: 1, hour: 0, min: 0, sec: 0, msec: 0}; for (var i = 0; i < this._patterns.length; i++) { if (text == '') return null; // parse error!! text = this._parseWord(text, this._patterns[i], result); if (text === null) return null; // parse error!! } if (text != '') return null; // parse error!! return new Date( result.year, result.month - 1, result.day, result.hour, result.min, result.sec, result.msec); }, _parseWord: function(text, pattern, result) { var parser = this._parser[pattern.charAt(0)]; if (parser) { return parser.apply(this, [text, pattern, result]); } else { if (text.indexOf(pattern) != 0) { return null; } else { return text.substring(pattern.length); } } }, _parser: { "y": function(text, pattern, result) { // Year var year; if (pattern.length <= 2) { year = text.substring(0, 2); year = year < 70 ? '20' + year : '19' + year; text = text.substring(2); } else { var length = (pattern.length == 3) ? 4 : pattern.length; year = text.substring(0, length); text = text.substring(length); } if (!this._isNumber(year)) return null; // error result.year = parseInt(year, 10); return text; }, "M": function(text, pattern, result) { // Month in year var month; if (pattern.length == 1 && text.length > 1 && text.substring(0, 2).match(/1[0-2]/) != null) { month = text.substring(0, 2); text = text.substring(2); } else { month = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(month)) return null; // error result.month = parseInt(month, 10); return text; }, "d": function(text, pattern, result) { // Day in month var day; if (pattern.length == 1 && text.length > 1 && text.substring(0, 2).match(/1[0-9]|2[0-9]|3[0-1]/) != null) { day = text.substring(0, 2); text = text.substring(2); } else { day = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(day)) return null; // error result.day = parseInt(day, 10); return text; }, "H": function(text, pattern, result) { // Hour in day (0-23) var hour; if (pattern.length == 1 && text.length > 1 && text.substring(0, 2).match(/1[0-9]|2[0-3]/) != null) { hour = text.substring(0, 2); text = text.substring(2); } else { hour = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(hour)) return null; // error result.hour = parseInt(hour, 10); return text; }, "m": function(text, pattern, result) { // Minute in hour var min; if (pattern.length == 1 && text.length > 1 && text.substring(0, 2).match(/[1-5][0-9]/) != null) { min = text.substring(0, 2); text = text.substring(2); } else { min = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(min)) return null; // error result.min = parseInt(min, 10); return text; }, "s": function(text, pattern, result) { // Second in minute var sec; if (pattern.length == 1 && text.length > 1 && text.substring(0, 2).match(/[1-5][0-9]/) != null) { sec = text.substring(0, 2); text = text.substring(2); } else { sec = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(sec)) return null; // error result.sec = parseInt(sec, 10); return text; }, "S": function(text, pattern, result) { // Millimsecond var msec; if (pattern.length == 1 || pattern.length == 2) { if (text.length > 2 && text.substring(0, 3).match(/[1-9][0-9][0-9]/) != null) { msec = text.substring(0, 3); text = text.substring(3); } else if (text.length > 1 && text.substring(0, 2).match(/[1-9][0-9]/) != null) { msec = text.substring(0, 2); text = text.substring(2); } else { msec = text.substring(0, pattern.length); text = text.substring(pattern.length); } } else { msec = text.substring(0, pattern.length); text = text.substring(pattern.length); } if (!this._isNumber(msec)) return null; // error result.msec = parseInt(msec, 10); return text; }, "'": function(text, pattern, result) { // escape if (pattern == "''") { pattern = "'"; } else { pattern = pattern.replace(/'/g, ''); } if (text.indexOf(pattern) != 0) { return null; // error } else { return text.substring(pattern.length); } } }, _isNumber: function(str) { return /^[0-9]*$/.test(str); } }