// $Id: logrecom.js,v 1.18 2008/08/07 10:15:48 ryo Exp $
(function(){
	var $LR = {
		Config:{
			host:'log5.recommender.jp'
			,debug:false
			,compatible:true
			,strict:false
			,noImage:'http://noimage'
		}
		,imgInsure:function(img){
			img.onerror = null;
			img.src = $LR.Config.noImage;
		}
		,getCookie:function(name){
			var start = document.cookie.indexOf(name + "=");
			var len = start + name.length + 1;
			if ((!start) && (name != document.cookie.substring(0, name.length))) return null;
			if (start == -1) return null;
			var end = document.cookie.indexOf(";",len);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(len, end));
		}
		,setSessionCookie:function(name, value) {
			document.cookie = name + "=" + escape(value) + "; path=/";
		}
		,newSessionID:function() {
			var ssid = [], cnt = 0, s;
			while (cnt < 5) {
				s = "";
				while ((s = parseInt(Math.random().toString().substring(2)).toString(36).substring(0, 8)).length < 8) ;
				ssid.push(s);
				cnt++;
			}
			return ssid.join("");
		}
		,getSessionID:function() {
			var lrid = $LR.getCookie("lrsessionid");
			if (!lrid) {
				lrid = $LR.newSessionID();
				$LR.setSessionCookie("lrsessionid", lrid)
			}
			return lrid;
		}
		,createActionPath:function(optionParam, type_id){
			optionParam = optionParam || '';
			type_id = type_id || $LR.Config.type_id;
			return [
				$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), '&lrtype=rep&id=', type_id, optionParam,
			].join('')
		}
		,createScript:function(src,rootNode){
			var s = document.createElement('script');
			s.type = "text/javascript";
			s.charset="UTF-8";
			s.src= src;
			rootNode.appendChild(s);
		}
		,register:function(lr_client_id){
			$LR.Config.lr_client_id = lr_client_id;
			$LR.Config.basePath = [location.protocol, '//', $LR.Config.host, '/', $LR.Config.lr_client_id].join('');
			$LR.registered = $LR.register;
		}
		,getBaseParam:function(){
			return ['?lrid=', $LR.getSessionID(), '&d=', (new Date()).getTime()].join('');
		}
		,type_mix:function(lr_client_id, ref){
			ref = ref ? '&ref=' + ref : '';
			$LR.register(lr_client_id);
			var src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), ref, '&lrtype=mix'].join('');
			$LR.createScript(src,document.getElementById("logrecom"));
		}
		,type_view:function(lr_client_id, ref, id) {
			$LR.register(lr_client_id);
			ref = ref ? '&ref=' + ref : '';
			id = id ? '&id=' + id : '';
			var src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), ref, id, '&lrtype=view'].join('');
			$LR.createScript(src,document.getElementById("logrecom"));
		}
		,type_log:function(lr_client_id, id, ref) {
			$LR.register(lr_client_id);
			ref = ref ? '&ref=' + ref : '';
			id = id ? '&id=' + id : '';
			var img = new Image(1,1);
			img.src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), id, ref, '&lrtype=log'].join("");
		}
		,clickCartLog:function(lr_client_id, id, ref,event,anchor) {
			$LR.register(lr_client_id);
			ref = ref ? '&ref=' + ref : '';
			id = id ? '&id=' + id : '';
			var actionPath = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), id, ref, '&lrtype=log'].join('');
			if (window.GeckoActiveXObject) {
				if (event && event.preventDefault && anchor && anchor.href) {
					event.preventDefault();
					var href = anchor.href;
					setTimeout(function(){
						location.href = href;
					},1000);
				}
			}
			var img = new Image(1,1);
			img.src = actionPath;
			img.onload = function() {
				if (window.GeckoActiveXObject && typeof href == 'string' && !$LR.Config.debug) {
					location.href = href;
				}
			}
		}
		,clickLog:function(click_id,event,anchor) {
			if (window.GeckoActiveXObject) {
				if (event && event.preventDefault && anchor && anchor.href) {
					event.preventDefault();
					var href = anchor.href;
					setTimeout(function(){
						location.href = href;
						//console.log(href,click_id);
					},1000);
				}
			}
			var optionParam = '&cid=' + click_id;
			var actionPath = $LR.createActionPath(optionParam);
			var img = new Image(1,1);
			img.src = actionPath;
			img.onload = function() {
				if (window.GeckoActiveXObject && typeof href == 'string' && !$LR.Config.debug) {
					location.href = href;
					//console.log(href,click_id);
				}
			}
		}
		,click_log:function(click_id, type_id, event, anchor) {
			if (window.GeckoActiveXObject) {
				if (event && event.preventDefault && anchor && anchor.href) {
					event.preventDefault();
					var href = anchor.href;
					setTimeout(function(){
						location.href = href;
						//console.log(href,click_id);
					},1000);
				}
			}
			var optionParam = '&cid=' + click_id;
			var actionPath = $LR.createActionPath(optionParam, type_id);
			var img = new Image(1,1);
			img.src = actionPath;
			img.onload = function() {
				if (window.GeckoActiveXObject && typeof href == 'string' && !$LR.Config.debug) {
					location.href = href;
					//console.log(href,click_id);
				}
			}
		}
		,reportLog:function(type_id) {
			$LR.Config.type_id = type_id;
			var optionParam = '';
			var actionPath = $LR.createActionPath(optionParam, type_id);
			var img = new Image(1,1);
			img.src = actionPath;
			img.onload=function() { lrVoid(); }
		}
		,type_multiple:function(lr_client_id,ref) {
			$LR.register(lr_client_id);
			ref =  ref ? '&ref=' + ref : '';
			var src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), ref, '&lrtype=multipleType'].join('');
			$LR.createScript(src,document.getElementById("logrecom"));
		}
		,type_history:function(lr_client_id,ref) {
			$LR.register(lr_client_id);
			ref =  ref ? '&ref=' + ref : '';
			var src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), ref, '&lrtype=history'].join('');
			$LR.createScript(src,document.getElementById("logrecom"));
		}
		,type_additional:function(lr_client_id,ref,id) {
			$LR.register(lr_client_id);
			ref = ref ? '&ref=' + ref : '';
			id = id ? '&id=' + id : '';
			var src = [$LR.Config.basePath, '/logrecom.html', $LR.getBaseParam(), ref, id, '&lrtype=additional'].join('');
			$LR.createScript(src,document.getElementById("logrecom"));
		}
		,invalid:(function() {
			if (!window.navigator || !navigator.userAgent || navigator.userAgent.indexOf('KHTML') == -1 ) return false;
			var safarivers = navigator.userAgent.split("/");
			if (safarivers && safarivers.length) {
				var vers = parseInt(safarivers.pop(),10);
				if (vers < 520 || vers > 10000) return true;
			}
			return false;
		})()
	}
	window.LogRecommender = window.LogRecommender || $LR;

	if ($LR.Config.compatible) {
		window.logrecom_clickLog = $LR.clickLog;
		window.getCookie = $LR.getCookie;
	}
	if (!$LR.Config.strict) {
		window.logrecom_reportLog     = $LR.reportLog;
		window.logrecom_type_mix      = $LR.type_mix;
		window.logrecom_type_view     = $LR.type_view;
		window.logrecom_type_log      = $LR.type_log;
		window.logrecom_clickLog      = $LR.clickLog;
		window.logrecom_type_multiple = $LR.type_multiple;
		window.logrecom_cart_log      = $LR.clickCartLog;
		window.logrecom_click_log     = $LR.click_log;
		window.logrecom_type_history  = $LR.type_history;
		window.logrecom_type_additional  = $LR.type_additional;
	}
	if ($LR.invalid) { // 非対応ブラウザの場合、すべての関数を無害化
		window.logrecom_reportLog     = $LR.reportLog     = lrVoid;
		window.logrecom_type_mix      = $LR.type_mix      = lrVoid;
		window.logrecom_type_view     = $LR.type_view     = lrVoid;
		window.logrecom_type_log      = $LR.type_log      = lrVoid;
		window.logrecom_clickLog      = $LR.clickLog      = lrVoid;
		window.logrecom_type_multiple = $LR.type_multiple = lrVoid;
		window.logrecom_cart_log      = $LR.clickCartLog  = lrVoid;
		window.logrecom_click_log     = $LR.click_log     = lrVoid;
		window.logrecom_type_history  = $LR.type_history  = lrVoid;
		window.logrecom_type_additional= $LR.type_additional= lrVoid;
	}
	function lrVoid(){return;}
})();
