// 検討リストJavaScript
// 依存：prototype.js

// 設定
var workNumberName = 'work_no';
var separator = ',';
var expireDate = 10;
var maxCount = 10;
var path = '/';
var resURL = '/reslist/reserved.htm';
var resmes = {
	'counterr'	:'既に'+maxCount+'件登録されています。検討リストから他の登録データを削除してから登録してください。',
	'add'		:'登録しました。',
	'delete'	:'削除しました。検討リストを再表示します。',
	'double'	:'既に登録されています。'
	};
var works = '';









// 実行開始

// イニシャライズ
resinit();


function resinit(){
	works = readCookie(workNumberName);
	cleanWorks();
	writeCookie(workNumberName, works, expireDate);
}


// リストに追加
function addList(orderID){
	w = separator + works + separator;
	if( w.match(separator + orderID + separator) ){
		alert(resmes['double']);
		return;
	}
	var count = countWorks();
	if(count < maxCount){
		works = works + separator + orderID;
		var getparam = 'orderID=' + orderID;
		getparam += '&cookieName=' + workNumberName;
		cleanWorks();
		writeCookie(workNumberName, works, expireDate);
		ajaxAccess(resURL, getparam);
		alert(resmes['add']);
	}else{
		alert(resmes['counterr']);
	}
	return;
}


// リストから削除
function deleteList(orderID){
	works = separator + works + separator;
	works = works.replace(separator + orderID + separator, ',');
	cleanWorks();
	writeCookie(workNumberName, works, expireDate);
	alert(resmes['delete']);
	location.reload(true);
	return;
}


// 文字列をきれいにするにする
function cleanWorks(){
	works = works.replace(/undefined/g, '').replace(/^,/g, '').replace(/,,/g, ',').replace(/,$/g, '');
}


// 登録数のカウント
function countWorks(){
	var ret = 0;
	var arr = works.split(separator);
	if(arr.length > 0) ret = arr.length;
	return ret;
}


// クッキーを登録する
function writeCookie(name, value, days){
	var expires;
	if (days) {
		var date = new Date();
		date.setTime( date.getTime() + (days*24*60*60*1000) );
		expires = "; expires=" + date.toGMTString();
	}else{
		expires = "";
	}
	document.cookie = name + "=" + value + expires + "; path=" + path;
	return;
}


// クッキーを読み込む
function readCookie(name){
	var nameEqual = name + "=";
	var ret = '';
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while(c.charAt(0) == ' '){
			c = c.substring(1, c.length);
		}
		if(c.indexOf(nameEqual) == 0){
			ret = c.substring(nameEqual.length, c.length);
			break;
		}
	}
	ret = unescape(ret);
	return ret;
}


// AJAX処理
function ajaxAccess(url, getparam, target){
	var a = new Ajax.Request(
		url,
		{
			"method": "get",
			"parameters": getparam,
			onSuccess: function(request){
				// alert('読み込み成功しました');
			},
			onComplete: function(request){
				if(target){
					document.getElementById(target).innerHTML = getResponseText(request);
				}
			},
			onFailure: function(request){
				//alert('読み込みに失敗しました');
			},
			onException: function(request){
				//alert('読み込み中にエラーが発生しました');
			}
		}
	);
	return;
}


// Safariのみ、一旦エスケープしてからdecodeURIComponentする
function getResponseText(req){
	var text = req.responseText;
	if ( navigator.appVersion.indexOf("KHTML") > -1 ) {
		var esc = escape(text);
		if ( esc.indexOf("%u") < 0 && esc.indexOf("%") > -1 ) {
			text = decodeURIComponent(esc);
		}
	}
	return text;
}


// 終了




// デバッグコード

// リストを表示
function viewList() {
	var message = "Cookieの中身:" + decodeURIComponent(document.cookie);
	alert(message);
}


