AGContentSelector = {

	//----------------------------------------------------------------------
	//設定例
	// ○○のキーワードでn回訪問した場合
	//
	
	//----------------------------------------------------------------------
	//setting
	g_reset_count: false,			//デバッグ用 リセットしたい場合はtrue
	g_repeat_period: 30 * 60 * 1000,	//リピートカウントを増やさない期間(ミリ秒) -1: セッション

	//RuleSet
	g_rule_set : [
		{//その他
			id:0,
			type: "refer",
			total_times:100000000000000000,
			
			search:[],
			refer_times:100000000000000000,
			url:[],
			
			isdefault:true
		},
		
		{//リスティング用(Defaultと同じ)
			id:0,
			type: "param",
			total_times:0,
			search:["上野クリニック"],
			refer_times:0,
			url:[],
			isdefault:false,
			param:["adtype=listing"]
		},

		{//リピーター用
			id:3,
			type: "total",
			total_times:2,
			search:["上野クリニック"],
			refer_times:0,
			url:[],
			isdefault:false
		},

		{//リピーター用
			id:1,
			type: "refer",
			total_times:0,
			search:["上野クリニック"],
			refer_times:2,
			url:[],
			isdefault:false
		},

		{//ご新規様
			id:2,
			type: "refer",
			total_times:0,
			search:["上野クリニック"],
			refer_times:0,
			url:[],
			isdefault:false
		}
	],


	//Search Engines
	g_search_engines : [
		{url:"google.co.jp/", opt:"q"},
		{url:"google.com/", opt:"q"},
		{url:"search.yahoo.co.jp/", opt:"p"},
		{url:"www.bing.com/", opt:"q"},
		{url:"www.naver.jp/", opt:"q"},
		{url:"test133.eatest.jp", opt:"q"}
		
	],

	//----------------------------------------------------------------------
	//global values
	g_visit_count : 0,
	g_total_count : 0,
	g_refferer :"",
	g_refferer_hash :"",
	g_searchword : "",
	g_prevtime: 0,

	//Set Cookie
	setSession: function(key,val){
	    tmp = key+"="+escape(val)+";";
	    tmp += "path=/";
	    document.cookie = tmp;
	},

	setCookie: function(key,val){
	    tmp = key+"="+escape(val)+";";
	    tmp += "expires=Fri, 31-Dec-2030 23:59:59; path=/";
	    document.cookie = tmp;
	},

	//Get Cookie
	getCookie : function(key) {
		tmp = document.cookie+";";
		tmp1 = tmp.indexOf(key,0);
		if(tmp1 != -1){
			tmp = tmp.substring(tmp1,tmp.length);
			start = tmp.indexOf("=",0);
			end = tmp.indexOf(";",start);
			return(unescape(tmp.substring(start+1,end)));
		}
		return("");
	},

	//Delete Cookie
	delCookie : function(key){
	    expiredate = new Date();
	    expiredate.setYear(expiredate.getYear()-1);
	    tmp = key+"=; path=/";
	    tmp += "expires="+expiredate.toGMTString();
	    document.cookie = tmp;
	},

	parseHTTPGet : function(url) {
		var ret = new Array();
		var parms_t = url.split('?');
		if (parms_t.length >= 2) {
			var parms = parms_t[1].split('&');
			for (var i=0; i<parms.length; i++) {
				var pos = parms[i].indexOf('=');
				if (pos > 0) {
					var key = parms[i].substring(0,pos);
					var val = parms[i].substring(pos+1);
					ret[key] = val;
				}
			}
		}
		return ret;
	},


	onStart : function() {
		var today = new Date();
		var tm = today.getTime();

		//リファラーの取得
		this.g_refferer = document.referrer;
		if (this.g_refferer == "") {
			this.g_refferer = "noreferer";
		}
		
		{//検索エンジンか判定
			var search_opt = "";
			var search_engine_idx = -1;
			
			for (var i = 0; i < this.g_search_engines.length; i++) {
				if (this.g_refferer.indexOf(this.g_search_engines[i].url) >= 0) {
					search_engine_idx = i;
					break;
				}
			}
			if (search_engine_idx >= 0) {
				//検索キーワードの取得
				var searchparam = this.parseHTTPGet(this.g_refferer);
				var search_word = "";
				
				var search_word_cnt = 0;
				for( key in searchparam ){ search_word_cnt++; } /* keyと言う文字は任意の変数名 */
				if (search_word_cnt > 0) {
					search_word = decodeURI(searchparam[this.g_search_engines[search_engine_idx].opt]);
				}
				if (search_word != "") {
					//検索エンジンから来てた場合は、検索ワードをハッシュ化する
					this.g_searchword = search_word;
				}
			}
		}
		
		//リファラーのハッシュ化
		if (this.g_searchword == "") {
			this.g_refferer_hash = MD5_hexhash(this.g_refferer);
		} else {
			this.g_refferer_hash = MD5_hexhash(this.g_searchword);
		}

		
		//リファラー別訪問回数の取得
		this.g_visit_count = this.getCookie(this.g_refferer_hash);
		if (this.g_visit_count == "" || isNaN(this.g_visit_count)) {
			this.g_visit_count = 0;
		} else {
			this.g_visit_count = parseInt(this.g_visit_count);
		}
		
		//検索キーワード別訪問回数の取得

		//トータル訪問回数の取得
		this.g_total_count = this.getCookie("hinshitsu_houmon_count");
		if (this.g_total_count == "" || isNaN(this.g_total_count)) {
			this.g_total_count = 0;
		} else {
			this.g_total_count = parseInt(this.g_total_count);
		}
		
		if (this.g_reset_count) {
			//リセットモードの場合は初期化
			this.g_visit_count = 1;
			this.g_total_count = 1;
			this.delCookie("hinshitsu_houmon_count");
			this.delCookie(this.g_refferer_hash);
		} else {
			if (this.g_repeat_period >= 0) {
				this.g_prevtime = this.getCookie("prevtime");
				var bChk = false;
				if (this.g_prevtime == "" || isNaN(this.g_prevtime)) {
					bChk = true;
				} else if (tm - this.g_prevtime > this.g_repeat_period) {
					bChk = true;
				}
			} else {
				this.g_prevtime = this.getCookie("prevtime_session");
				var bChk = false;
				if (this.g_prevtime == "" || isNaN(this.g_prevtime)) {
					bChk = true;
				}
	  		}
  			if (bChk) {
				//一定時間以上経過していれば訪問回数をカウントアップ
				this.g_total_count = this.g_total_count+1;
				this.g_visit_count = this.g_visit_count+1;
				if (this.g_repeat_period >= 0) {
					this.setCookie("prevtime", tm);
				} else {
					this.setSession("prevtime_session", tm);
				}
				this.setCookie("hinshitsu_houmon_count", this.g_total_count);
				this.setCookie(this.g_refferer_hash, this.g_visit_count);
			}
		}
	},
	
	selectContent: function() {
		var content_id = 0;
		//デフォルトのセット
		for (var i = 0; i < this.g_rule_set.length; i++) {
			if (this.g_rule_set[i].isdefault) {
				content_id = this.g_rule_set[i].id;
			}
		}
		
		//検索キーワードによるだしわけ
		for (var i = 0; i < this.g_rule_set.length; i++) {

			if (this.g_rule_set[i].type == "param") {
				for (var j = 0; j < this.g_rule_set[i].param.length; j++) {
					if (location.href.indexOf( this.g_rule_set[i].param[j] ) >= 0) {
						return this.g_rule_set[i].id;
					}
				}
			} else {
				for (var j = 0; j < this.g_rule_set[i].search.length; j++) {
					var word = this.g_rule_set[i].search[j];
					
					if (this.g_searchword.indexOf(word) >= 0) {
						if (this.g_rule_set[i].type == "refer") {
							if (this.g_rule_set[i].refer_times <= this.g_visit_count) {
								return this.g_rule_set[i].id;
							}
						} else if (this.g_rule_set[i].type == "total") {
							if (this.g_rule_set[i].total_times <= this.g_total_count) {
								return this.g_rule_set[i].id;
							}
						}
					}
				}
			}
		}

		return content_id;
	}
	
	
}

//Kick the program
AGContentSelector.onStart();

