﻿// JavaScript Document
function viewCookie(){
	//cookieの使用が可能かチェック
	if(navigator.cookieEnabled){
		var history = getCookie("history");	//"history"という名前のcookieを取得する
		var content = "";
		var send = "";
		var url = checkUrl();//商品・カタログ詳細ページ以外ではfalse
		var title = getNames();
		var Element = $("history");
		if(url){
			var companyid = getCompanyId();
			var product = getContentId();
			if(history){
				content = historyContent(history);//カタログor商品名 | 企業名 | カタログor商品ID | "product"or"catalog" | 企業ID
				if(content){
					var flag = searchHistory(history, title.contentName);
					if(history.length >= 5){
						if(flag == 0){
							for(var i = 0; i < history.length; i++){
								send += escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
								if(history[i + 1]) send += ",";
							}
						}else if(flag == 5){
							send += escape(title.contentName) +"|"+ escape(title.companyName) +"|"+ escape(product[0]) +"|"+ escape(product[1]) +"|"+ escape(companyid);
							for(var i = 0; i < history.length - 1; i++){
								if(flag != i) send += ","+ escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
							}
						}else{
							send += escape(content[flag][0]) +"|"+ escape(content[flag][1]) +"|"+ escape(content[flag][2]) +"|"+ escape(content[flag][3]) +"|"+ escape(content[flag][4]);
							for(var i = 0; i < history.length; i++){
								if(flag != i) send += ","+ escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
							}
						}
					}else{
						if(flag == 0){
							for(var i = 0; i < history.length; i++){
								send += escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
								if(history[i + 1]) send += ",";
							}
						}else{
							send += escape(title.contentName) +"|"+ escape(title.companyName) +"|"+ escape(product[0]) +"|"+ escape(product[1]) +"|"+ escape(companyid);
							for(var i = 0; i < history.length; i++){
								if(flag != i) send += ","+ escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
							}
						}
					}
				}else{
					send += escape(title.contentName) +"|"+ escape(title.companyName) +"|"+ escape(product[0]) +"|"+ escape(product[1]) +"|"+ escape(companyid);
				}
			}else{
				send += escape(title.contentName) +"|"+ escape(title.companyName) +"|"+ escape(product[0]) +"|"+ escape(product[1]) +"|"+ escape(companyid);
			}
			setCookie("history", send);//cookieをブラウザに登録する
		}else{
			if(history){
				content = historyContent(history);
				if(content){
					var flag = searchHistory(history, title.contentName);
					for(var i = 0; i < history.length; i++){
						send += escape(content[i][0]) +"|"+ escape(content[i][1]) +"|"+ escape(content[i][2]) +"|"+ escape(content[i][3]) +"|"+ escape(content[i][4]);
						if(history[i + 1]) send += ",";
					}
				}else{
					send += "";
				}
				setCookie("history", send);//cookieをブラウザに登録する
			}else{
				//$("history").innerHTML = "<p>アクセス履歴はありません</p>";
			}
		}
		writeCookie();//cookieの情報をHTML上に書き出す
	}else{
		$("history").innerHTML = "<p>cookieの使用が不可になっているため、アクセス履歴の記録が出来ません</p>";
	}
}

//商品・カタログ詳細ページか判断
function checkUrl(){
	var flag = false;
	var url = location.href;
	if(url.match(/(.*?)\/product\/(.*?)\/detail\//) || url.match(/(.*?)\/catalog\/(.*?)\/detail\//)) flag = true;
	return flag;
}

//履歴内に同じものがないか割り出す、現在のページと同じページが履歴にある場合は履歴上部に、ない場合は追加
function searchHistory(history, contentName){
	var no = 0;
	var a = 0;
	var flag = false;
	var content = historyContent(history);
	for(var i = 0; i < history.length; i++){
		if(content[i][0] == contentName){
			no = i;
			flag = true;
		}
		a++;
	}
	if(!flag) no = a;
	return no;
}

//cookieを設定する
function setCookie(key, send){
	var date = new Date();
	var GMT = date.toGMTString();
	var arrayDate = GMT.split(" ");
	var nextYear = new Number(arrayDate[3])+ 1;
	var expires = arrayDate[0] +" "+ arrayDate[1] +"-"+ arrayDate[2] +"-"+ nextYear +" "+ arrayDate[4] +" GMT";
	document.cookie = key + "="+ send +";path=/;expires="+ expires;
}

//cookieの取得
function getCookie(name){
	var cookie = document.cookie;
	var start = cookie.indexOf(name + "=");
	var len = start + name.length + 1;
	if (((!start) && (name != cookie.substring(0, name.length))) || (start == -1)) return null;
	
	var end = cookie.indexOf(";", len);
	if(end < 0) var historyCookie = cookie.substring(len, cookie.length);
	else var historyCookie = cookie.substring(len, end);
	
	var historyArray = historyCookie.split(",");
	return historyArray;
}

//HTMLに設定したcookieを表示する
function writeCookie(){
	var cookie = getCookie("history");
	var domein = getDomein();
	var Element = $("history");
	if(cookie){
		var array = historyContent(cookie);
		if(array){
			for(var i = 0; i < cookie.length; i++){
				if(array[i] && array[i][0]){
					var createLi = document.createElement("li");
					if(array[i][3] == "product") createLi.className = "productIcon";
					else if(array[i][3] == "catalog") createLi.className = "catalogIcon";
					
					createLi.innerHTML = '<a href="'+ domein +'/company/'+ array[i][3] +'/id/'+ array[i][4] +'/detail/'+ array[i][2] +'">'+ unescape(array[i][0]) +'</a>&nbsp;<a href="'+ domein +"/company/top/id/"+ array[i][4] +'" class="noArrow historyCoName">('+ unescape(array[i][1]) +')</a>';
					Element.appendChild(createLi);
				}
			}
		}else{
			//Element.innerHTML = "<p>アクセス履歴はありません</p>";
		}
	}else{
		//Element.innerHTML = "<p>アクセス履歴はありません</p>";
	}
}

//取得したcookie情報を配列に変換する
function historyContent(array){
	var content = new Array();
	for(var i = 0; i < array.length; i++){
		content[i] = array[i].split("|");
		for(var a = 0; a < content[i].length; a++){
			content[i][a] = unescape(content[i][a]);
		}
		if(content[i].length != 5) var flag = true;
	}
	if(flag) return null;
	else return content;
}

//企業IDの取得
function getCompanyId(){
	var url = location.href;
	var array = url.split("/");
	for(var i = 0; i < array.length; i++){
		if(array[i] == "id"){
			var id = array[i + 1];
			id = new Number(id.replace(/#/g, ""));
		}
	}
	return id;
}

//商品orカタログの判別、商品orカタログの詳細idの取得
function getContentId(){
	var url = location.href;
	var array = url.split("/");
	for(var i = 0; i < array.length; i++){
		if(array[i] == "detail"){
			var id = array[i + 1];
			id = new Number(id.replace(/#/g, ""));
		}
		if(array[i] == "id") var content = array[i - 1];
	}
	return [id, content];
}

//「http://・・・・・・/」部分を取得
function getDomein(){
	var url = location.href;
	var end = url.indexOf("/", 7);
	var domein = url.substring(0, end);
	return domein;
}

//企業名と商品名orカタログ名の取得
function getNames(){
	var title = document.title;
	var names = title.split(" - ");
	var name = {
		companyName: names[1],
		contentName: names[2]
	}
	return name;
}

Event.observe(window, "load", viewCookie, false);

