var PREFIX_FORM_EAZY_INPUT_ID = "e";
var PREFIX_FORM_QUESTION_ID = "q";

var _eazyInputCount = 0;
var _questionCount = 0;

function onloadFormProc()
{
	initializeForm();

	restoreForm();
}

function initializeForm()
{
	// -- initialize form html
}

function nextForm()
{
	if (!validate()) return;
	cms_forward("form_confirm");
}

function resetForm()
{
	var frm = document.operateForm;
	frm.reset();
}

function backForm()
{
	history.back();
}

function okForm()
{
	cms_forward("form_thanks");
}

function checkInputList(objName, title, mustFlg)
{
	if (!mustFlg) return true;
	
	var object = document.getElementsByName(objName);
	if (object.length != null)
	{
		for (var n = 0; n < object.length; n++)
		{
			if (object[n].checked)
			{
				return true;
			}
		}
		mustMsg(title);
		object[0].focus();
		return false;
	}
	else
	{
		if (!object.checked)
		{
			mustMsg(title)
			object.focus();
			return false;
		}
	}
	return true;
}

function checkInputValue(objName, title, maxLength, mustFlg)
{
	var object = $(objName);
	var inputStr = object.value;
	
	if ((mustFlg) && (inputStr == ""))
	{
		mustMsg(title);
		object.focus();
		return false;
	}
	
	if (isHankakuKatakana(inputStr))
	{
		inputedHankakuKatakanaMsg(title);
		object.focus();
		return false
	}
	
	if (maxLength > 0)
	{
		if ((inputStr.length > maxLength))
		{
			overMaxLengthMsg(title, maxLength, inputStr.length);
			object.focus();
			return false;
		}
	}
	
	return true;
}

function mustMsg(title)
{
	alert(title + "を入力してください。");
}

function inputedHankakuKatakanaMsg(title)
{
	alert(title + "に半角カタカナは使用できません。");
}

function overMaxLengthMsg(title, maxLength, inputLength)
{
	alert(title + "は、" + maxLength + "文字以下で入力してください。\n現在" + inputLength + "文字入力されています。");
}

function restoreForm()
{
	if ($("pageId").value == null)
	{
		return;
	}
	
	if ($("domain").value == null)
	{
		return;
	}
	
	if (!navigator.cookieEnabled)
	{
		return;
	}

	var pageId = $("pageId").value;
	var domain = $("domain").value;
	var sendData = 'pageId=' + encodeURIComponent(pageId) + '&domainname=' + encodeURIComponent(domain);
	
	cms_Ajax("form_get_input_info", sendData, restoreFormProc);
}

function restoreFormProc(data, errFlg)
{
	if (!errFlg)
	{
		var jsonData = cms_convertJSON(data);
		if (jsonData.restoreFlg == 1)
		{
			// eazy input
			for (var n = 1; n <= _eazyInputCount; n++)
			{
				var elemName = PREFIX_FORM_EAZY_INPUT_ID + n;
				if (($(elemName) != null) || ($(elemName + "_1") != null))
				{
					restoreFormValue(elemName, jsonData[elemName], null);
				}
			}
			
			// add question
			for (var n = 1; n <= _questionCount; n++)
			{
				var elemName = PREFIX_FORM_QUESTION_ID + n;
				if (($(elemName) != null) || ($(elemName + "_1") != null))
				{
					restoreFormValue(elemName, jsonData[elemName], null);
				}
			}
		}
	}
}

function restoreFormValue(elemName, setValue, formType)
{
	if ((setValue == null) || (typeof(setValue) == "undefined"))
	{
		return;
	}
	
	if (formType == null)
	{
		formType = getFormType(elemName);
	}
	
	switch (formType)
	{
		case "text" :
			restoreTextBox(elemName, setValue);
			break;
		case "textarea" :
			restoreTextArea(elemName, setValue)
			break;
		case "radio" : 
			restoreRadioBox(elemName, setValue);
			break;
		case "check" :
			restoreCheckBox(elemName, setValue);
			break;
		case "select" :
			restoreSelectBox(elemName, setValue);
			break;
	}
}

function restoreTextBox(elemName, setValue)
{
	if (($(elemName) == null) || ($(elemName) == "undefined"))
	{
		return;
	}
	
	$(elemName).value = setValue;
}

function restoreTextArea(elemName, setValue)
{
	if (($(elemName) == null) || ($(elemName) == "undefined"))
	{
		return;
	}
	
	$(elemName).value = setValue;
}

function restoreRadioBox(elemName, setValue)
{
	var radioNameObj = document.getElementsByName(elemName);
	
	if (radioNameObj.length == 0)
	{
		return;
	}
	
	for(var n = 1; n <= radioNameObj.length; n++)
	{
		var radioObj = $(elemName + "_" + n);
		
		if (radioObj != null)
		{
			if (radioObj.value == setValue)
			{
				radioObj.checked = true;
				return;
			}
		}
	}
}

function restoreCheckBox(elemName, setValue)
{
	if (setValue == "")
	{
		return;
	}
	
	var checkList = setValue;
	
	var checkNameObj = document.getElementsByName(elemName + "[]");

	if (checkNameObj.length == 0)
	{
		return;
	}

	var listIndex = 0;
	
	var checkNameBase = elemName;

	for (var n = 1; n <= checkNameObj.length; n++)
	{
		var checkObj = $(checkNameBase + '_' + n);
		
		if (checkObj != null)
		{
			if (checkObj.value == checkList[listIndex])
			{
				checkObj.checked = true;
				listIndex++;
			}
			else
			{
				checkObj.checked = false;
			}
			
			if (checkList[listIndex] == null)
			{
				return;
			}
		}
	}
}

function restoreSelectBox(elemName, setValue)
{
	var selectObj = $(elemName);
	
	if ((selectObj == null) || (typeof(selectObj) == "undefined"))
	{
		return;
	}
	
	for (var n = 0; n < selectObj.options.length; n++)
	{
		var optionObj = selectObj.options[n];
		
		if ((optionObj == null) || (typeof(optionObj) == "undefined"))
		{
			break;
		}
		
		if (optionObj.value == setValue)
		{
			optionObj.selected = true;
			return;
		} 
	}
}

function getFormType(elemName)
{
	var typeStr = "";

	var nameObj = document.getElementsByName(elemName);
	
	if (nameObj.length == 0)
	{
		nameObj = document.getElementsByName(elemName + "[]");
		
		if (nameObj.length == 0)
		{
			return typeStr;
		}
	}

	if ((nameObj[0] == null) || (typeof(nameObj[0]) == "undefined"))
	{
	    return typeStr;
	}
	
	switch (nameObj[0].type)
	{
	    case "radio" : 
	        typeStr = "radio";
	        break;
	    case "checkbox" :
	        typeStr = "check";
	        break;
	    case "select-one" :
	        typeStr = "select";
	        break;
	    case "text" :
	        typeStr = "text";
	        break;
	    case "textarea" :
	        typeStr = "textarea";
	        break;
	    case "password" :
	        typeStr = "";
	        break;
	    default : 
	    	typeStr ="";
	}
	
	return typeStr;
}