﻿// common.js
// REQUIRES: prototype.js, effect.js, builder.js

var sitePath = './';


// eventSetter
var isIE = isIE = (document.documentElement.getAttribute("style") == document.documentElement.style);

function eventSetter(obj,eventType,func){
	if(isIE) {
		obj.setAttribute(eventType,new Function(func));
	} else {
		obj.setAttribute(eventType,func);
	}
}


// rolloverimages.js
function setOverImages(){
	var imgs = document.getElementsByTagName('img');
	var inputs = document.getElementsByTagName('input');
	var preImages = new Array();
	var preInputs = new Array();
	if(imgs){
		for(var i = 0,num = imgs.length;i < num;i++){
			img = imgs[i];
			if(img.src.indexOf('/roll_') != -1){
				var imgSrcArray = img.src.split('.');
				var fileType = imgSrcArray[imgSrcArray.length - 1];
				var overImgSrc = img.src.split('.' + fileType)[0] + '_o.' + fileType;
				var funcOver = 'changeImgSrc(this.firstChild,\'' + overImgSrc + '\')';
				var funcOut = 'changeImgSrc(this.firstChild,\'' + img.src + '\')';
				eventSetter(img.parentNode,'onmouseover',funcOver);
				eventSetter(img.parentNode,'onmouseout',funcOut);
				preImages[i] = new Image();
				preImages[i].src = overImgSrc;
			}
		}
	}
	if(inputs){
		for(var i = 0,num = inputs.length;i < num;i++){
			inputObj = inputs[i];
			if(inputObj.type == 'image' && inputObj.src.indexOf('/roll_') != -1){
				var inputSrcArray = inputObj.src.split('.');
				var fileType = inputSrcArray[inputSrcArray.length - 1];
				var overImgSrc = inputObj.src.split('.' + fileType)[0] + '_o.' + fileType;
				var funcOver = 'changeImgSrc(this,\'' + overImgSrc + '\')';
				var funcOut = 'changeImgSrc(this,\'' + inputObj.src + '\')';
				eventSetter(inputObj,'onmouseover',funcOver);
				eventSetter(inputObj,'onmouseout',funcOut);
				preInputs[i] = new Image();
				preInputs[i].src = overImgSrc;
			}
		}
	}
}

function changeImgSrc(img,imgSrc){
	img.src = imgSrc;
}
// rolloverimages.js


// IE6でフォームボタンにロールオーバーをつける
function setOverClass(elem,id){
	elem.id = id;
	var funcOver = 'addOverClass(\''+id+'\')';
	var funcOut = 'removeOverClass(\''+id+'\')';
	eventSetter(elem,'onmouseover',funcOver);
	eventSetter(elem,'onmouseout',funcOut);
}
function addOverClass(id){
	$(id).className = "buttonover";
}
function removeOverClass(id){
	$(id).className = "button";
}


// linkSetup.js
// set scroll effect if "a" has "pageTop" class
// set "target" attribute if "a" has "externalLink" class
function linkSetup(){
	var anchors = document.getElementsByTagName("a");
	if(anchors){
		for(var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			if (anchor.getAttribute("href") &&
			Element.hasClassName(anchor,"pageTop")){
				var func = 'new Effect.ScrollTo("top",{duration: 0.5});return false;';
				eventSetter(anchor,'onclick',func);
			}
			if (anchor.getAttribute("href") &&
			Element.hasClassName(anchor,"externalLink")){
				anchor.target = "_blank";
			}
		}
	}
}


// クリックボタン用スーパークラス
var ClickableBtn = Class.create();
ClickableBtn.prototype = {
	element: null,
	key: null,
	initialize: function(element,key){
		this.element = $(element);
		this.key = key;
	},
	set: function(){
		Event.observe(this.element, 'click', this.onClick.bindAsEventListener(this));
	},
	onClick: function(){
		return this.key;
	}
};

// 画像ロールオーバー用クラス
var RollOverImg = Class.create();
RollOverImg.prototype = {
	initialize: function(id){
		this.img = $(id).getElementsByTagName("img")[0];
		this.outImgSrc = this.img.src;
		this.overImgSrc = this.outImgSrc.replace(/roll/i, "roll_o");
		Event.observe(id, 'mouseover', this.onMouseOver.bindAsEventListener(this));
		Event.observe(id, 'mouseout', this.onMouseOut.bindAsEventListener(this));
		this.preload = document.createElement('img');
		this.preload.src = this.overImgSrc;
	},
	onMouseOver: function(){
		this.img.src = this.overImgSrc;
	},
	onMouseOut: function(){
		this.img.src = this.outImgSrc;
	}
}


// トップページFlash読み込み用関数　swfobject.jsに依存
function loadSWF(divID,file,name,width,height){
	var so = new SWFObject(file, name, width, height, "8", "#FFFFFF");
	so.addParam("quality", "high");
	so.addParam("wmode", "transparent");
	so.write(divID);
}

// グラフFlash読み込み用関数　swfobject.jsに依存
function loadGraphSWF(divID,file,name,width,height,tk,viewId,memId,date,term,categ){
	var so = new SWFObject(file, name, width, height, "8", "#FFFFFF");
	so.addParam("quality", "high");
	so.addParam("wmode", "transparent");
	so.addVariable("tk", tk);
	so.addVariable("viewId", viewId);
	so.addVariable("memId", memId);
	so.addVariable("date", date);
	so.addVariable("term", term);
	so.addVariable("categ", categ);
	so.write(divID);
}

// Flashプレイヤー未インストール時メッセージ
function getFlashPlayerMsg(){
	document.write('<p>当サイトではAdobe Flashを使用しています。<br \/>最新のAdobe Flash Playerをダウンロードしてください。<\/p>');
	document.write('<p><a href="http:\/\/www.adobe.com\/go\/getflashplayer_jp" target="_blank"><img src="' + sitePath + 'img\/get_flash_player.gif" width="88" height="31" alt="Get ADOBE FLASHPLAYER" class="alignmiddle" \/><\/a> <a href="http:\/\/www.adobe.com\/go\/getflashplayer_jp" target="_blank">最新のAdobe Flash Playerのダウンロードページへ<\/a><\/p>');
}

// グラフFlashとの連携ここから
function thisMovie(movieName) {
	return (isIE) ? window[movieName] : document[movieName];
}

function makeCall(friendID, tColor) {
	thisMovie("graph").asFunc(friendID, tColor);
}

// This function "jsFunc" will be called from ActionScript
function jsFunc(str) {
	document.inForm.inField.value = "ActionScript: " + str;
}

// 表示するボタン
var ShowUserGraphBtn = Class.create();
ShowUserGraphBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			objGraphControl.on(this.key);
		}
	}
);

// 表示しないボタン
var HideUserGraphBtn = Class.create();
HideUserGraphBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			objGraphControl.off(this.key);
		}
	}
);

// Flashとボタンを連携するクラス
var objGraphControl;
var GraphControl = Class.create();
GraphControl.prototype = {
	initialize: function(boxID,list){
		this.box = boxID;
		this.list = list;
		var spans = $(this.box).getElementsByTagName("span");
		var count = 0;
		for(i=0; i<spans.length; i++){
			var span = spans[i];
			if(Element.hasClassName(span,"showuserBtn")){
				var userid = span.id.split("on")[1];
				var btn = new ShowUserGraphBtn(span,userid);
				btn.set();
			}
			if(Element.hasClassName(span,"hideuserBtn")){
				Element.hide(span);
				Element.setStyle(span, {position: 'relative'});
				Element.setStyle(span, {marginLeft: '0px'});
				var userid = span.id.split("off")[1];
				var btn = new HideUserGraphBtn(span,userid);
				btn.set();
				this.list.item[count].userid = userid;
				count++;
			}
		}
	},
	on: function(id){
		for(i=0; i<5; i++){
			var item = this.list.item[i]
			if(item.userid == id){
				item.status = 1;
				Element.hide("on"+item.userid);
				Element.show("off"+item.userid);
//				alert(item.userid+","+(i+1))
				makeCall(eval("("+item.userid+")"),i+1);
			} else {
				item.status = 0;
				Element.show("on"+item.userid);
				Element.hide("off"+item.userid);
			}
		}
	},
	off: function(){
		for(i=0; i<5; i++){
			var item = this.list.item[i]
			Element.hide("off"+item.userid);
			Element.show("on"+item.userid);
//			alert("0,0")
			makeCall(0,0);
		}
	}
}
// グラフFlashとの連携ここまで


// テーブル整形用関数
var tableheight=0;
function tableSetup(element){
	var div = $(element);
	var table = div.getElementsByTagName("table")[0];
	if(table == null){
		table = Builder.node("table");
		var defTbody = Builder.node("tbody");
		table.appendChild(defTbody);
		div.appendChild(table);
	}
	if(tableheight == 0){
		var blankth = Builder.node("th");
		blankth.innerHTML = "<span class='blank'>.</span>";
		var blanktd = Builder.node("td","　");
		var blankcol = document.createElement("tr");
		blankcol.appendChild(blankth);
		blankcol.appendChild(blanktd);
		table.getElementsByTagName("tbody")[0].appendChild(blankcol);
		tableheight = Element.getHeight(blankth) * 10;
		if(isIE){tableheight+=2}
		table.getElementsByTagName("tbody")[0].removeChild(blankcol);
	}
	Element.setStyle(div,{height:tableheight+"px"});
	var trs = table.getElementsByTagName("tr");
	var trnum = trs.length;
	if(trnum < 11){
		for(c=10; c>trnum; c--){
			var blankth = Builder.node("th");
			blankth.innerHTML = "<span class='blank'>.</span>";
			var blanktd = Builder.node("td","　");
			var blankcol = document.createElement("tr");
			blankcol.appendChild(blankth);
			blankcol.appendChild(blanktd);
			table.getElementsByTagName("tbody")[0].appendChild(blankcol);
		}
	}
	for(r=0; r<trs.length; r++){
		var tr = trs[r];
		if((r%2)==1){
			Element.addClassName(tr,"roweven");
		}else{
			Element.addClassName(tr,"rowodd");
		}
	}
}


// ダイアリー入力画面ここから
var intakeMenuObj;
var exerciseMenuObj;
var enteredFoodList;
var intakeResultObj;
var enteredEventList;
var exerciseResultObj;


// 食べ物リスト取得ボタン
var LoadDataBtn = Class.create();
LoadDataBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			this.changeTitleSrc();
			intakeMenuObj.load(this.key);
			showFoodTitle();
		},
		changeTitleSrc: function(){
			$("intakeMenuTitle").src = sitePath + 'img/' + this.key + '_title.gif';
//			$("intakeMenuTitle").src = '/img.php?filename=' + this.key + '_title';
		}
	}
);

function showFoodTitle(key){
	if(intakeMenuObj.list==null){
		$("titleFoodlist").src = sitePath + "img/title_foodlist.gif";
		$("intakeArrow").src = sitePath + "img/icon_arrow_diary.gif";
	}
	if(key=="mymenu"){
		Element.setStyle("cookSelect",{textIndent:"-9999px"});
	}else{
		Element.setStyle("cookSelect",{textIndent:"0px"});
	}
}

// 食べものキーワード検索ボタン
var FoodSearchBtn = Class.create();
FoodSearchBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			intakeMenuObj.wload($(this.key).value);
			$("intakeMenuTitle").src = sitePath + "img/title_wfoodlist.gif";
//			$("intakeMenuTitle").src = "/img.php?filename=fkeywd_title";
			showFoodTitle();
		}
	}
);

// よく食べるもの取得ボタン
var LoadRirekiDataBtn = Class.create();
LoadRirekiDataBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			intakeMenuObj.dload();
			$("intakeMenuTitle").src = sitePath + "img/title_dfoodlist.gif";
//			$("intakeMenuTitle").src = "/img.php?filename=hfood_title";
			showFoodTitle();
		}
	}
);

// 食べものオリジナルメニュー取得ボタン
var LoadMyMenuDataBtn = Class.create();
LoadMyMenuDataBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			intakeMenuObj.mload();
			$("intakeMenuTitle").src = sitePath + "img/title_mfoodlist.gif";
//			$("intakeMenuTitle").src = "/img.php?filename=myfood_title";
			showFoodTitle("mymenu");
		}
	}
);

// 調理法絞込みボタン
var CookSearchBtn = Class.create();
CookSearchBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			intakeMenuObj.search(this.key);
		}
	}
);

// 運動リスト取得ボタン
var LoadDataBtnE = Class.create();
LoadDataBtnE.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			this.changeTitleSrc();
			exerciseMenuObj.load(this.key);
			showEventTitle();
		},
		changeTitleSrc: function(){
			$("exerciseMenuTitle").src = sitePath + 'img/' + this.key + '_title.gif';
//			$("exerciseMenuTitle").src = '/img.php?filename=' + this.key + '_title';
		}
	}
);

function showEventTitle(){
	if(exerciseMenuObj.list==null){
		$("titleEventlist").src = sitePath + "img/title_eventlist.gif";
		$("exerciseArrow").src = sitePath + "img/icon_arrow_diary_e.gif";
	}
}

// 運動キーワード検索ボタン
var EventSearchBtn = Class.create();
EventSearchBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			exerciseMenuObj.wload($(this.key).value);
			$("exerciseMenuTitle").src = sitePath + "img/title_weventlist.gif";
//			$("exerciseMenuTitle").src = "/img.php?filename=ekeywd_title";
			showEventTitle();
		}
	}
);

// よくする運動取得ボタン
var LoadRirekiDataBtnE = Class.create();
LoadRirekiDataBtnE.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			exerciseMenuObj.dload();
			$("exerciseMenuTitle").src = sitePath + "img/title_deventlist.gif";
//			$("exerciseMenuTitle").src = "/img.php?filename=hexercise_title";
			showEventTitle();
		}
	}
);

// 運動オリジナルメニュー取得ボタン
var LoadMyMenuDataBtnE = Class.create();
LoadMyMenuDataBtnE.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			exerciseMenuObj.mload();
			$("exerciseMenuTitle").src = sitePath + "img/title_meventlist.gif";
//			$("exerciseMenuTitle").src = "/img.php?filename=myexercise_title";
			showFoodTitle();
		}
	}
);

// 摂取・消費メニューリスト用スーパークラス
var MenuObj = Class.create();
MenuObj.prototype = {
	list: null,
	initialize: function(uri,target){
		this.uri = uri;
		this.target = target;
	},
	save: function(obj){
		if(obj=="err"){
			this.errMsg();
		}else{
			var data = eval("("+obj+")");
			this.list = data;
			this.create();
		}
	},
	errMsg: function(){
		$(this.target).innerHTML = "<p>データの読み込みに失敗しました。</p>";
	}
};

// 摂取メニューリスト用クラス
var IntakeMenuObj = Class.create();
IntakeMenuObj.prototype = Object.extend(
	new MenuObj, {
		load: function(value){
			this.loadingMsg();
			getIntakeMenu(this.uri + "?i=" + value);
		},
		wload: function(word){
			this.loadingMsg();
			getIntakeMenu(this.uri + "?iw=" + word);
		},
		dload: function(){
			this.loadingMsg();
			getIntakeMenu(this.uri + "?id=id");
		},
		mload: function(){
			this.loadingMsg();
			getIntakeMenu(this.uri + "?i=mymenu");
		},
		loadingMsg: function(){
			$(this.target).innerHTML = "<p><img src='"+ sitePath + "img/ajax-loader.gif' alt='データの読み込み中...' /></p>";
		},
		create: function(){
			if(this.list){
				$(this.target).innerHTML = createMenuTable(this.list);
			}else{
				$(this.target).innerHTML = "";
			}
			tableSetup(this.target);
		},
		select: function(id){
			for(var i=0; i<this.list.dish.length; i++){
				if(this.list.dish[i].id == id){
					var dish = this.list.dish[i];
					var id = dish.id;
					var nam = dish.nam;
					var cal = eval("("+dish.cal+")");
					var data = {"id":id,"nam":nam,"cal":cal};
					intakeResultObj.add(data);
				}
			}
		},
		search: function(num){
			$(this.target).innerHTML = "";
			var result;
			for(var i=0; i<this.list.dish.length; i++){
				var dish = this.list.dish[i];
				var cooks = dish.cok;
				for(var c=0; c<cooks.length; c++){
					var cook = cooks[c];
					if((num+32)==cook){
						var id = dish.id;
						var nam = dish.nam;
						var cal = dish.cal;
						if(result){
							result.dish.push({"id":id, "nam":nam, "cal":cal});
						}else{
							result = {"dish":[
								{"id":id, "nam":nam, "cal":cal}
							]};
						}
					}
				}
			}
			if(result){
				$(this.target).innerHTML = createMenuTable(result);
			}
			tableSetup(this.target);
		}
	}
);

function createMenuTable(data){
	var result = "<table><tbody>"
	for(var i=0; i<data.dish.length; i++){
		var dish = data.dish[i];
		var id = dish.id;
		var name = dish.nam;
		var kcal = dish.cal;
		result += "<tr><th><span onclick='intakeMenuObj.select(" + id + ")'>" + recover_utf8(name) + "</span></th>";
		result += "<td>" + kcal + "kcal</td></tr>";
	}
	result += "</tbody></table>";
	return result;
}

function getIntakeMenu(uri){
	new Ajax.Request(
		uri,{
			method: "get",
			onComplete: function(httpObj){
				intakeMenuObj.save(httpObj.responseText);
			},
			onFailure: function(){
				intakeMenuObj.errMsg();
			}
		}
	)
}

// 運動メニューリスト用クラス
var ExerciseMenuObj = Class.create();
ExerciseMenuObj.prototype = Object.extend(
	new MenuObj, {
		load: function(value){
			this.loadingMsg();
			getExerciseMenu(this.uri + "?e=" + value);
		},
		wload: function(word){
			this.loadingMsg();
			getExerciseMenu(this.uri + "?ew=" + word);
		},
		dload: function(){
			this.loadingMsg();
			getExerciseMenu(this.uri + "?ed=ed");
		},
		mload: function(){
			this.loadingMsg();
			getExerciseMenu(this.uri + "?e=mymenu");
		},
		loadingMsg: function(){
			$(this.target).innerHTML = "<p><img src='" + sitePath + "img/ajax-loader2.gif' alt='データの読み込み中...' /></p>";
		},
		create: function(){
			if(this.list){
				$(this.target).innerHTML = createMenuTableE(this.list);
			}else{
				$(this.target).innerHTML = "";
			}
			tableSetup(this.target);
		},
		select: function(id){
			for(var i=0; i<this.list.event.length; i++){
				if(this.list.event[i].id == id){
					var event = this.list.event[i];
					var id = event.id;
					var nam = event.nam;
					var cal = event.cal;
					var data = {"id":id,"nam":nam,"cal":cal};
					exerciseResultObj.add(data);
				}
			}
		}
	}
);

function createMenuTableE(data){
	var result = "<table><tbody>"
	for(var i=0; i<data.event.length; i++){
		var event = data.event[i];
		var id = event.id;
		var name = event.nam;
		result += "<tr><th><span onclick='exerciseMenuObj.select(" + id + ")'>" + recover_utf8(name) + "</span></th><td> </td></tr>";
	}
	result += "</tbody></table>";
	return result;
}

function getExerciseMenu(uri){
	new Ajax.Request(
		uri,{
			method: "get",
			onComplete: function(httpObj){
				exerciseMenuObj.save(httpObj.responseText);
			},
			onFailure: function(){
				exerciseMenuObj.errMsg();
			}
		}
	)
}

// 摂取・消費結果リスト用スーパークラス
var ResultObj = Class.create();
ResultObj.prototype = {
	list: null,
	sum: 0,
	initialize: function(target,sendformid,sumformid){
		this.target = target;
		this.sendformid = sendformid;
		this.sumformid = sumformid;
		this.scan();
	},
	scan: function(){
	}
};

// 摂取結果リスト用クラス
var IntakeResultObj = Class.create();
IntakeResultObj.prototype = Object.extend(
	new ResultObj,{
		create: function(){
			if(this.list){
				$(this.target).innerHTML = creatResultTable(this.list);
			}else{
				$(this.target).innerHTML = "";
			}
			tableSetup(this.target);
		},
		add: function(array){
			var id = array.id;
			var nam = array.nam;
			var cal = array.cal;
			if(this.list){
				this.list.dish.push({"id":id, "nam":nam, "cal":cal});
			}else{
				this.list = {"dish":[
					{"id":id, "nam":nam, "cal":cal}
				]};
			}
			this.save(id);
			this.create();
			this.sum += cal;
			$(this.sumformid).value = this.sum;
			$(this.sumformid+'Ghost').value = this.sum;
		},
		remove: function(num) {
			this.sum = 0;
			$("intakeListBox").innerHTML = "";
			var result;
			for(var i=0; i<this.list.dish.length; i++){
				var dish = this.list.dish[i];
				var id = dish.id;
				var nam = dish.nam;
				var cal = dish.cal;
				if(i!=num){
					if(result){
						result.dish.push({"id":id, "nam":nam, "cal":cal});
					}else{
						result = {"dish":[
							{"id":id, "nam":nam, "cal":cal}
						]};
					}
					this.sum += cal;
					this.save(id);
				}
			}
			this.list = result;
			this.create();
			$(this.sumformid).value = this.sum;
			$(this.sumformid+'Ghost').value = this.sum;
		},
		scan: function(){
			if(enteredFoodList.dish[0]){
				$("titleFoodlist").src = sitePath + "img/title_foodlist.gif";
				this.list = enteredFoodList;
				for(var i=0; i<this.list.dish.length; i++){
					var cal = this.list.dish[i].cal;
					var id = this.list.dish[i].id;
					this.sum += cal;
					this.save(id);
				}
				this.create();
			}
		},
		save: function(id){
			var hidden = document.createElement('input');
			hidden.type = "hidden";
			hidden.name = "intakeList[]";
			hidden.value = id;
			$("intakeListBox").appendChild(hidden);
		}
	}
);

function creatResultTable(data){
	var result = "<table><tbody>"
	for(var i=0; i<data.dish.length; i++){
		var dish = data.dish[i];
		var nam = dish.nam;
		var cal = dish.cal;
		result += "<tr><th>" + recover_utf8(nam) + "</th><td>" + cal + "kcal <span onclick='intakeResultObj.remove(" + i + ")'><img src='img/btn_delete.gif' width='32' height='16' alt='削除' /></span></td></tr>";
	}
	result += "</tbody></table>";
	return result;
}

// 消費結果リスト用クラス
var ExerciseResultObj = Class.create();
ExerciseResultObj.prototype = Object.extend(
	new ResultObj,{
		create: function(){
			if(this.list){
				$(this.target).innerHTML = creatResultTableE(this.list);
			}else{
				$(this.target).innerHTML = "";
			}
			tableSetup(this.target);
		},
		add: function(array){
			var id = array.id;
			var nam = array.nam;
			var cal = array.cal;
			if(this.list){
				this.list.event.push({"id":id, "nam":nam, "cal":cal});
			}else{
				this.list = {"event":[
					{"id":id, "nam":nam, "cal":cal}
				]};
			}
			this.save(id);
			this.create();
			this.sum += eval("("+cal+")");
			this.calc();
		},
		remove: function(num){
			this.sum = 0;
			$("exerciseListBox").innerHTML = "";
			var result;
			for(var i=0; i<this.list.event.length; i++){
				var event = this.list.event[i];
				var id = event.id;
				var nam = event.nam;
				var cal = event.cal;
				if(i!=num){
					if(result){
						result.event.push({"id":id, "nam":nam, "cal":cal});
					}else{
						result = {"event":[
							{"id":id, "nam":nam, "cal":cal}
						]};
					}
					this.sum += eval("("+cal+")");
					this.save(id);
				}
			}
			this.list = result;
			this.create();
			this.calc();
		},
		scan: function(){
			if(enteredEventList.event[0]){
				$("titleEventlist").src = sitePath + "img/title_eventlist.gif";
				this.list = enteredEventList;
				for(var i=0; i<this.list.event.length; i++){
					var cal = this.list.event[i].cal;
					var id = this.list.event[i].id;
					this.sum += eval("("+cal+")");
					this.save(id);
				}
				this.create();
			}
		},
		save: function(id){
			var hidden = document.createElement('input');
			hidden.type = "hidden";
			hidden.name = "exerciseList[]";
			hidden.value = id;
			$("exerciseListBox").appendChild(hidden);
		},
		calc: function(){
			var weight = $("weightGhost").value;
			$("weight").value = $("weightGhost").value;
			if(isNaN(weight)){
				$(this.sumformid).value = "";
				$(this.sumformid+'Ghost').value = "";
			}else{
				var value = this.sum * weight;
				$(this.sumformid).value = Math.floor(value);
				$(this.sumformid+'Ghost').value = Math.floor(value);
			}
		}
	}
);

function creatResultTableE(data){
	var result = "<table><tbody>"
	for(var i=0; i<data.event.length; i++){
		var event = data.event[i];
		var nam = event.nam;
		var cal = event.cal;
		result += "<tr><th>" + recover_utf8(nam) + "</th><td><span onclick='exerciseResultObj.remove(" + i + ")'><img src='img/btn_delete.gif' width='32' height='16' alt='削除' /></span></td></tr>";
	}
	result += "</tbody></table>";
	return result;
}

// キーアップで値を隠しフィールドにコピーするクラス
var CopyIfKeyup = Class.create();
CopyIfKeyup.prototype = {
	from: null,
	target: null,
	initialize: function(from,target){
		this.from = $(from);
		this.target = $(target);
		Event.observe(this.from, 'keyup', this.ifKeyup.bindAsEventListener(this));
	},
	ifKeyup: function(){
		this.target.value = this.from.value;
	}
};

// ダイアリー入力画面の各クラスの起動用関数
function setDiaryPageBtn(){
	intakeMenuObj = new IntakeMenuObj(sitePath + "calorieIF.php","intakeMenu");
	exerciseMenuObj = new ExerciseMenuObj(sitePath + "calorieIF.php","exerciseMenu");
	intakeResultObj = new IntakeResultObj("intakeResult","intakeList","intakeCal");
	exerciseResultObj = new ExerciseResultObj("exerciseResult","exerciseList","exerciseCal");
	var ibtns = $("intakeCategory").getElementsByTagName("li");
	for(i=0; i<ibtns.length; i++){
		var btn = ibtns[i];
		var func = new LoadDataBtn(btn,btn.id);
		func.set();
		var overfunc = new RollOverImg(btn.id);
	}
	var ebtns = $("exerciseCategory").getElementsByTagName("li");
	for(i=0; i<ebtns.length; i++){
		var btn = ebtns[i];
		var func = new LoadDataBtnE(btn,btn.id);
		func.set();
		var overfunc = new RollOverImg(btn.id);
	}
	var sbtns = $("cookSelect").getElementsByTagName("span");
	for(i=0; i<sbtns.length; i++){
		var btn = sbtns[i];
		var func = new CookSearchBtn(btn,i);
		func.set();
	}
	var foodSearchBtn = new FoodSearchBtn("intakeSearchBtn","intakeword");
	foodSearchBtn.set();
	var loadRirekiDataBtn = new LoadRirekiDataBtn("intakeHistoryBtn");
	loadRirekiDataBtn.set();
	var eventSearchBtn = new EventSearchBtn("exerciseSearchBtn","exerciseword");
	eventSearchBtn.set();
	var loadRirekiDataBtnE = new LoadRirekiDataBtnE("exerciseHistoryBtn");
	loadRirekiDataBtnE.set();
	Event.observe(
		"weightGhost","keyup",function(){
			exerciseResultObj.calc();
		}
	);
	
	new CopyIfKeyup('heightGhost','height');
	new CopyIfKeyup('intakeCalGhost','intakeCal');
	new CopyIfKeyup('exerciseCalGhost','exerciseCal');
	if($('lifestyle1Ghost')){
		new CopyIfKeyup('lifestyle1Ghost','lifestyle1');
	}
	if($('lifestyle2Ghost')){
		new CopyIfKeyup('lifestyle2Ghost','lifestyle2');
	}
	
	var loadOriginalFoodBtn = new LoadMyMenuDataBtn("loadOriginalFoodBtn","mymenu");
	loadOriginalFoodBtn.set();
	var loadOriginalExerciseBtn = new LoadMyMenuDataBtnE("loadOriginalExerciseBtn","mymenu");
	loadOriginalExerciseBtn.set();
}

// ダイアリー入力画面ここまで


// マイページ壁紙変更機能ここから
var objWallPaper;
var WallPaper = Class.create();
WallPaper.prototype = {
	initialize: function(targetId,uri){
		this.target = targetId;
		this.current = $(this.target).className;
		this.uri = uri;
	},
	paperChange: function(style){
		this.keep = style;
		$(this.target).className = style;
	},
	cancelChange: function(){
		$(this.target).className = this.current;
		Effect.BlindUp("wallpaperBox", { duration: 1 } );
	},
	saveChange: function(){
		this.current = this.keep;
		Effect.BlindUp("wallpaperBox", { duration: 1 } );
	},
	requestChange: function(){
		var parameter = $H({wpname: this.keep}).toQueryString();
		new Ajax.Request(
			'wallPaperIF.php',{
				method: 'post',
				postBody: parameter,
				onSuccess: function(httpObject){
					var res = httpObject.responseText;
					if(res == "TRUE"){
						Effect.BlindUp("wallpaperBox", { duration: 1 } );
						objWallPaper.saveChange();
					}
					if(res == "FALSE"){
						Effect.BlindUp("wallpaperBox", { duration: 1 } );
						objWallPaper.cancelChange();
					}
				},
				onFailure: function(){
					Effect.BlindUp("wallpaperBox", { duration: 1 } );
					objWallPaper.cancelChange();
				}
			}
		);
	}
}

// 壁紙変更ボタン
var WallPaperChangeBtn = Class.create();
WallPaperChangeBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			objWallPaper.paperChange(this.key);
		}
	}
);

// 壁紙キャンセルボタン
var WallPaperCancelBtn = Class.create();
WallPaperCancelBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			objWallPaper.cancelChange();
		}
	}
);

// 壁紙保存ボタン
var WallPaperSaveBtn = Class.create();
WallPaperSaveBtn.prototype = Object.extend(
	new ClickableBtn, {
		onClick: function(){
			objWallPaper.requestChange();
		}
	}
);
// マイページ壁紙変更機能ここまで


// カロリー設定入力スライダー
function sliderSetup(){
	var d = $("calorieCondition").value;
	new Control.Slider("ptr","slider",{
		sliderValue: (eval("("+d+")")+600)/1200,
		onChange: function(value){
			$("calorieCondition").value = Math.round(value*1200)-600;
		},
		onSlide: function(value){
			$("calorieCondition").value = Math.round(value*1200)-600;
		}
	});
}


// window onload
function init(){
	linkSetup();
	// ダイアリー詳細画面
	if($("col2")){
		var boxes = $("col2").getElementsByTagName("div");
		if(boxes){
			for(i=0; i<boxes.length; i++){
				var div = boxes[i];
				if(div.className == "listTable"){
					tableSetup(div);
				}
			}
		}
	}
	// ダイアリー入力画面起動
	if($("intakeMenu")){
		setDiaryPageBtn();
		tableSetup($("intakeMenu"));
		tableSetup($("intakeResult"));
		tableSetup($("exerciseMenu"));
		tableSetup($("exerciseResult"));
	}
	// 壁紙変更機能起動
	if($("wallpaperBox")){
		objWallPaper = new WallPaper("main","./");
		var wallpaperList = $("wallpaperList").getElementsByTagName("li");
		for(i=0; i<wallpaperList.length; i++){			
			var btn = wallpaperList[i];
			var func = new WallPaperChangeBtn(btn,btn.id);
			func.set();
		}
		Element.hide("wallpaperBox");
//		Element.setStyle("wallpaperBox", {position: 'relative'});
		Element.setStyle("wallpaperBox", {marginLeft: "0px"});
		Event.observe("showWallpaperBox", 'click', function(){
			if($("wallpaperBox").style.display == 'none'){
				Effect.BlindDown("wallpaperBox", { duration: 1 } );
			}else{
				objWallPaper.cancelChange();
			}
		});
		var cancelBtn = new WallPaperCancelBtn("cancelWallpaper");
		cancelBtn.set();
		var saveBtn = new WallPaperSaveBtn("saveWallpaper");
		saveBtn.set();
	}
	// トトトモグラフ表示起動
	if($("myFriendList")){
		objGraphControl = new GraphControl(
			"myFriendList",
			{"item":[
				{"status":0, "userid":0},
				{"status":0, "userid":0},
				{"status":0, "userid":0},
				{"status":0, "userid":0},
				{"status":0, "userid":0}
			]}
		);
	}
	// 画像のロールオーバー化
	setOverImages();
	// ボタンのロールオーバー化(IEのみ)
	if(isIE){
		var spans = document.getElementsByTagName("span");
		if(spans){
			for(i=0; i<spans.length; i++){
				var span = spans[i];
				if(Element.hasClassName(span,"button")){
					setOverClass(span,"btn"+i);
				}
			}
		}
	}
	if($("slider")){
		sliderSetup();
	}
}
Event.observe( window, 'load', init );


// open new window
function newWindow(uri,width,height){
	var myWindow = window.open(uri, 'newWindow', 'resizable=yes,scrollbars=yes,status=0,width='+width+',height='+height);
	if (myWindow.focus!=null) {
		myWindow.focus();
	}
}


// Ajax recover UTF-8 (for Safari)
function recover_utf8(text){
	if(navigator.appVersion.indexOf('KHTML') > -1){
		var esc = escape(text);
		if(esc.indexOf('%u') < 0 && esc.indexOf('%') > -1){
			text = decodeURIComponent(esc);
		}
	}
	return text;
}


// input clear
function inputClear(id,txt){
if ($(id).value == txt) $(id).value = '';
}


// massage box
function checkAll(){
	var checkboxes = $$("input.no_bg");
	for(i=0; i<checkboxes.length; i++){
		checkboxes[i].checked = true;
	}
	return false;
}

function clearAll(){
	var checkboxes = $$("input.no_bg");
	for(i=0; i<checkboxes.length; i++){
		checkboxes[i].checked = false;
	}
	return false;
}

