/**
 * パーツの存在判定
 * 宣言
 **/
var bgFlg = true;
var body1Flg = true;
var body2Flg = true;
var outlineFlg = true;
var eyeFlg = true;
var eyebrowFlg = true;
var mouthFlg = true;
var noseFlg = true;
var earFlg = true;
var hairstyleFlg = true;
var clothes1Flg = true;
var clothes2Flg = true;
var clothes3Flg = true;
var accessoryFlg = true;

/**
 * submit可能か判定
 * @param 名称
 * パーツ増えたら判定要追加
 **/
function jdgSubmit() {
	if (bgFlg == true
			&& body1Flg == true
			&& body2Flg == true
			&& outlineFlg == true
			&& eyeFlg == true
			&& eyebrowFlg == true
			&& mouthFlg == true
			&& noseFlg == true
			&& earFlg == true
			&& hairstyleFlg == true
			&& clothes1Flg == true
			&& clothes2Flg == true
			&& clothes3Flg == true
			&& accessoryFlg == true) {
		return true;
	} else {
		return false;
	}
}

/**
 * フラグを代入
 * @name 名称
 * @flg true or false
 * パーツ増えたら判定要追加
 **/
function flgAdd(name, flg) {
	// 背景
	if (name == "bg") {
		bgFlg = flg;
	}
	// 体1
	if (name == "body1") {
		body1Flg = flg;
	}
	// 体2
	if (name == "body2") {
		body2Flg = flg;
	}
	// 輪郭
	if (name == "outline") {
		outlineFlg = flg;
	}
	// 眼
	if (name == "eye") {
		eyeFlg = flg;
	}
	// 眉
	if (name == "eyebrow") {
		eyebrowFlg = flg;
	}
	// 口
	if (name == "mouth") {
		mouthFlg = flg;
	}
	// 鼻
	if (name == "nose") {
		noseFlg = flg;
	}
	// 耳
	if (name == "ear") {
		earFlg = flg;
	}
	// 髪型
	if (name == "hairstyle") {
		hairstyleFlg = flg;
	}
	// 服1
	if (name == "clothes1") {
		clothes1Flg = flg;
	}
	// 服2
	if (name == "clothes2") {
		clothes2Flg = flg;
	}
	// 服3
	if (name == "clothes3") {
		clothes3Flg = flg;
	}
	// アクセサリー
	if (name == "accessory") {
		accessoryFlg = flg;
	}
}

/**
 * マイナス
 * @param 名称
 * @param 画像ファイル最小値
 * @param 画像ファイル最大値
 **/
function minus(name, minVal, maxVal) {
	if (!document.getElementById(name).value.match(/[^0-9]/g)) {
		if (eval(document.getElementById(name).value) > 0
				&& eval(document.getElementById(name).value) <= 999) {
			document.getElementById(name).value = eval(document.getElementById(name).value) - 1;
			
			// ファイル名の名前の範囲指定
			if (minVal <= eval(document.getElementById(name).value)
					&& eval(document.getElementById(name).value) <= maxVal) {
				document.getElementById(name).style.backgroundColor = "LightCyan";
				
				// フラグを追加
				flgAdd(name, true);
				
				// 全て画像ファイルがあるか判定
				if (jdgSubmit()) {
					loadDataFile();
				}
			} else {
				// フラグを追加
				flgAdd(name, false);
				document.getElementById(name).style.backgroundColor = "Pink";
			}
		} else {
			// フラグを追加
			flgAdd(name, true);
			document.getElementById(name).style.backgroundColor = "LightCyan";
		}
	} else {
		// フラグを追加
		flgAdd(name, false);
		document.getElementById(name).style.backgroundColor = "Pink";
	}
}

/** 
 * プラス
 * @param 名称
 * @param 画像ファイル最小値
 * @param 画像ファイル最大値
 **/
function plus(name, minVal, maxVal) {
	if (!document.getElementById(name).value.match(/[^0-9]/g)) {
		if (eval(document.getElementById(name).value) < 999
				&& eval(document.getElementById(name).value) >= 0) {
			document.getElementById(name).value = eval(document.getElementById(name).value) + 1;
			
			// ファイル名の名前の範囲指定
			if (minVal <= eval(document.getElementById(name).value)
					&& eval(document.getElementById(name).value) <= maxVal) {
				document.getElementById(name).style.backgroundColor = "LightCyan";
				
				// フラグを追加
				flgAdd(name, true);
				
				// 全て画像ファイルがあるか判定
				if (jdgSubmit()) {
					loadDataFile();
				}
			} else {
				// フラグを追加
				flgAdd(name, false);
				document.getElementById(name).style.backgroundColor = "Pink";
			}
		} else {
			// フラグを追加
			flgAdd(name, true);
			document.getElementById(name).style.backgroundColor = "LightCyan";
		}
	} else {
		// フラグを追加
		flgAdd(name, false);
		document.getElementById(name).style.backgroundColor = "Pink";
	}
}

/**
 * チェックして送信
 * 異常値の場合は、背景色を変えてsubmitはしない。
 **/
function chk(name, minVal, maxVal) {
	// パーツ毎の画像ファイルがあるか判定
	if (partsRange(name, minVal, maxVal)) {
		// 全て画像ファイルがあるか判定
		if (jdgSubmit()) {
			loadDataFile();
		}
	}
}

/**
 * パーツ毎の範囲指定
 * パーツを足したら、範囲指定も要追加
 * @param 名称
 * @param 画像ファイル最小値
 * @param 画像ファイル最大値
 **/
function partsRange(name, minVal, maxVal) {
	if (!document.getElementById(name).value.match(/[^0-9]/g)) {
		if (eval(document.getElementById(name).value) <= maxVal
				&& eval(document.getElementById(name).value) >= minVal) {
			document.getElementById(name).style.backgroundColor = "LightCyan";
			
			// フラグを追加
			flgAdd(name, true);
			
			return true;
		} else {
			document.getElementById(name).style.backgroundColor = "Pink";
			
			// フラグを追加
			flgAdd(name, false);
			
			return false;
		}
	} else {
		document.getElementById(name).style.backgroundColor = "Pink";
		
		// フラグを追加
		flgAdd(name, false);
		
		return false;
	}
}

/**
 * データ取得
 **/
function loadDataFile() {
	var item_bg 		= document.getElementById("bg").value;
	var item_body1 		= document.getElementById("body1").value;
	var item_body2 		= document.getElementById("body2").value;
	var item_clothes1 	= document.getElementById("clothes1").value;
	var item_clothes2 	= document.getElementById("clothes2").value;
	var item_clothes3 	= document.getElementById("clothes3").value;
	var item_outline	= document.getElementById("outline").value;
	var item_eye 		= document.getElementById("eye").value;
	var item_eyebrow 	= document.getElementById("eyebrow").value;
	var item_mouth 		= document.getElementById("mouth").value;
	var item_nose 		= document.getElementById("nose").value;
	var item_ear 		= document.getElementById("ear").value;
	var item_hairstyle  = document.getElementById("hairstyle").value;
	var item_accessory 	= document.getElementById("accessory").value;
	httpObj = createXMLHttpRequest(displayData);
	if (httpObj)
	{
		httpObj.open(
					"GET",
					"make_img?bg="+encodeURIComponent(item_bg)
								+"&body1="+encodeURIComponent(item_body1)
								+"&body2="+encodeURIComponent(item_body2)
								+"&clothes1="+encodeURIComponent(item_clothes1)
								+"&clothes2="+encodeURIComponent(item_clothes2)
								+"&clothes3="+encodeURIComponent(item_clothes3)
								+"&outline="+encodeURIComponent(item_outline)
								+"&eye="+encodeURIComponent(item_eye)
								+"&eyebrow="+encodeURIComponent(item_eyebrow)
								+"&mouth="+encodeURIComponent(item_mouth)
								+"&nose="+encodeURIComponent(item_nose)
								+"&ear="+encodeURIComponent(item_ear)
								+"&hairstyle="+encodeURIComponent(item_hairstyle)
								+"&accessory="+encodeURIComponent(item_accessory)
								,true);
		httpObj.send(null);
	}
}

/**
 * データ表示
 **/
function displayData() {
	if (httpObj.readyState == 4 && httpObj.status == 200) {
		$("avater").innerHTML = parseJSON(httpObj.responseText);
	}else{
		$("avater").innerHTML = "<div style=\"padding-top:20px;padding-bottom:20px;\"><img src=\"/img/load.gif\"></div>";
	}
}

/**
 * JSONデータ解析
 **/
function parseJSON(jsData) {
	var resultData = "";
	var data = eval("("+jsData+")");
	if (data.src.length > 0) {
		resultData += "	   <img src='"+data.src+"' />";
	}
	
	if (resultData == "") {
		resultData = "<div style=\"padding-top:20px;padding-bottom:20px;\"><b>画像が取得出来ませんでした。</b></div>";
	}
	return resultData;
}