var keyword = null;
var pattern = 0;

//パターン確認が終わったらfalseにすること
var debug = true;

seKey = "/n-common/json/search.json";
selfKey = "/n-common/json/site.json";
listingKey = "/n-common/json/listing.json";

function getPattern(){
	return pattern;
}

function chkKeyword(){
	var ref = document.referrer;
	var host = location.hostname;
	var type = null;
	
	if(ref.indexOf("google") != -1 || ref.indexOf("yahoo") != -1){
		$.getJSON(seKey,chkReferer);
	}else if(ref.indexOf(host) != -1){
		$.getJSON(selfKey,chkURL);
	}else if(location.href.indexOf("?") != -1){
		$.getJSON(listingKey,chkListing);
	}else{
		outputLog("None");
		pattern = 1;
	}
}

function chkReferer(data){
	var ref = document.referrer;
	var key,match;
	if(ref.indexOf("?") != -1){
		params = getParams(ref);
		if(ref.indexOf("google") != -1){
			key = autoDecode(params.q);
		}else if(ref.indexOf("yahoo") != -1){
			key = autoDecode(params.p);
		}else{
			key = autoDecode(params.q);
		}
		for(i in data){
			if(key.indexOf(data[i].keyword) != -1){
				keyword = data[i].keyword;
				pattern = data[i].pattern;
				break;
			}
		}
	}
	outputLog("Search Engine");
	if(pattern == 0){
		pattern = 1;
	}
}

function chkURL(data){
	var ref = document.referrer;
	var match;
	for(i in data){
		if(ref.indexOf(data[i].keyword) != -1){
			keyword = data[i].keyword;
			pattern = data[i].pattern;
			break;
		}
	}
	outputLog("in my Site");
	if(pattern == 0){
		pattern = 1;
	}
}

function chkListing(data){
	var url = autoDecode(location.href);
	var match;
	for(i in data){
		if(url.indexOf(data[i].keyword) != -1){
			keyword = data[i].keyword;
			pattern = data[i].pattern;
			break;
		}
	}
	outputLog("Listing Ads");
	if(pattern == 0){
		pattern = 1;
	}
}

function getParams(str){
	var params;
	var result = new Object();

	if(str.indexOf("?")){
		var index = str.indexOf("?");
		var param = str.slice(index+1);
		params = param.split("&");
	}else{
		params = str.split("&");
	}

	for(i in params){
		var val = params[i].split("=");
		result[val[0]] = autoDecode(val[1]);
	}
	return result;
}

//パターンチェック用ログ出力
function outputLog(type){
	if(debug && typeof console != "undefined"){
		console.group("LPO Check Result");
		console.log("Check type --> "+type);
		console.log("Self URL --> "+autoDecode(location.href));
		console.log("Referer --> "+autoDecode(document.referrer));
		if(pattern != 0){
			console.log("Matched word --> "+keyword);
			console.log("Result Pattern --> "+pattern);
		}else{
			console.log("Keyword no match");
		}
		console.groupEnd();
	}
}

function autoDecode(str){
	var encode = GetEscapeCodeType(str);
	if(encode){
		return window["Unescape"+encode](str);
	}
}

$(chkKeyword);
