var __form_errMsg;



//set the form is checked
function funcSetChecked(aVal)
{
	var element_checked = document.getElementById("__form_checked");
	if(element_checked)
	{
		element_checked.value = aVal;
	}
}



function funcFormCheck(aForm, aNoAlert)
{
	__form_errMsg = null;
	funcSetChecked("");

	var i;
	var errMsg = "";
	var element;
	
	var app_name;
	var app_check;
	var app_minLen;
	var app_maxLen;
	var app_IDEquals;
	var app_NameEquals;
	
	var element_value;
	var element_IDEquals_value;
	
	for(i=0;i<aForm.elements.length;i++)
	{
		element = aForm.elements[i];

		app_name = element.getAttribute("app_name");
		app_check = element.getAttribute("app_check");
		app_minLen = parseInt(element.getAttribute("app_minLen"));
		app_maxLen = parseInt(element.getAttribute("app_maxLen"));
		app_IDEquals = element.getAttribute("app_IDEquals");
		app_NameEquals = element.getAttribute("app_NameEquals");
		
		element_value = element.value.replace(/(^\s*)|(\s*$)/g, "");
		
		if(app_IDEquals && app_IDEquals != "")
		{
			//alert(app_name + " " +app_IDEquals);
			element_IDEquals_value = document.getElementById(app_IDEquals).value;
			element_IDEquals_value = element_IDEquals_value.replace(/(^\s*)|(\s*$)/g, "");
		}

		if(app_name)
		{
			/////////////////////////////////////	r
			if(app_check.indexOf("r") != -1)
			{
				if(element_value == "")
				{
					//r
					errMsg += "- " + app_name + " is required\n";
				}
			}
			
			/////////////////////////////////////	c
			if(app_check.indexOf("c") != -1)
			{
				var c_checked = false;
				var c_elems = document.getElementsByName( element.getAttribute("name") );
				var c_elems_i;
				for(c_elems_i=0;c_elems_i<c_elems.length;c_elems_i++)
				{
					if(c_elems[c_elems_i].checked)
					{
						c_checked = true;
						break;
					}
				}

				if(!c_checked)
				{
					//c
					errMsg += "- " + app_name + " should be checked\n";
				}
			}
			
			/////////////////////////////////////	len
			if(element_value.length < app_minLen)
			{
				//minLen
				errMsg += "- " + app_name + " should have at least " + app_minLen + " characters\n";
			}
			
			if(element_value.length > app_maxLen)
			{
				//maxLen
				errMsg += "- " + app_name + " should have at most " + app_maxLen + " characters\n";
			}
			
			if(element_value != "")
			{
				/////////////////////////////////	e
				if(app_check.indexOf("e") != -1)
				{
					//e
					if(!funcFormIsEmail(element_value))
					{
						errMsg += "- " + app_name + " is not currect\n";
					}
				}
			}
				
			/////////////////////////////////////	equals
			if(app_IDEquals && app_IDEquals != "")
			{
				//equals
				if(element_value != element_IDEquals_value)
				{
					errMsg += "- " + app_name + " should equal to " + app_NameEquals + "\n";
				}
			}
		}
	}

	if(errMsg != "")
	{
		if(aNoAlert)
		{
			__form_errMsg = errMsg;
		}
		else
		{
			alert(errMsg);
		}

		return false;
	}
	
	funcSetChecked("1");

	return true;
}



function funcFormSubmit(aForm)
{
	if(funcFormCheck(aForm))
	{
		aForm.submit();
	}
}



//aCheck :
//	r required
//	c checkbox must be checked
//	e email
function funcFormInitItem(aID, aName, aCheck, aMinLen, aMaxLen, aIDEquals, aNameEquals)
{
	if(!aMinLen)
	{
		aMinLen = 0;
	}
	
	if(!aMaxLen)
	{
		aMaxLen = 999999;
	}
	
	if(!aIDEquals)
	{
		aIDEquals = "";
	}
	else
	{
		aIDEquals = aIDEquals.replace(/(^\s*)|(\s*$)/g, "");
	}
	
	if(!aNameEquals)
	{
		aNameEquals = "";
	}

	var element = document.getElementById(aID);
	if(element)
	{
		element.setAttribute("app_name", aName);
		element.setAttribute("app_check", aCheck);
		element.setAttribute("app_minLen", aMinLen);
		element.setAttribute("app_maxLen", aMaxLen);
		element.setAttribute("app_IDEquals", aIDEquals);
		element.setAttribute("app_NameEquals", aNameEquals);
	}
}


function funcFormTestReg(aReg, aStr)
{
	var reg = new RegExp(aReg, "i");
	return reg.test(aStr);
}



function funcFormIsEmail(aEmail)
{
	var reg = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
	return funcFormTestReg(reg, aEmail);
}



function funcFormLock_int(aObj, aMin, aMax)
{
	var val = parseInt(aObj.value);

	if( isNaN(parseInt(aObj.value)) )
	{
		//not a number
		alert("please input valid value");

		aObj.value = aMin ? aMin : 0;
		aObj.focus();
	}
	else if(aMin && val < aMin)
	{
		alert("minimum value should be " + aMin);

		aObj.value = aMin;
		aObj.focus();
	}
	else if(aMax && val > aMax)
	{
		alert("maximum value should be " + aMax);

		aObj.value = aMax;
		aObj.focus();
	}
	else
	{
		aObj.value = val;
	}
}



/////////////////////////////////////////////////
function funcFormGetCheckedValueList(aName)
{
	var elems = document.getElementsByName(aName);
	var valueList = "";
	var i;

	for(i=0;i<elems.length;i++)
	{
		if(elems[i].checked)
		{
			valueList += elems[i].value + ",";
		}
	}

	return valueList;
}

function funcFormCheckAll(aID, aName, aChecked)
{
	var elems;
	if(aID.length > 0)
	{
		//elems = document.getElementsById(aID);
	}
	else
	{
		elems = document.getElementsByName(aName);
	}

	var i;
	for(i=0;i<elems.length;i++)
	{
		elems[i].checked = aChecked;
	}
}



function funcFormCheckAll_CheckBoxList(aID, aChecked)
{
	var i = 0;
	var obj = document.getElementById(aID + "_" + i);
	while(obj)
	{
		obj.checked = aChecked;

		i++;
		obj = document.getElementById(aID + "_" + i);
	}
}



function funcFormInitCheckAll_CheckBoxList(aCheckAllID, aCheckBoxListID)
{
	var objCheckAll = document.getElementById(aCheckAllID);
	objCheckAll.checked = true;

	var i = 0;
	var obj = document.getElementById(aCheckBoxListID + "_" + i);
	while(obj)
	{
		if(!obj.checked)
		{
			objCheckAll.checked = false;
			return;
		}

		i++;
		obj = document.getElementById(aCheckBoxListID + "_" + i);
	}
}

