// constructor
CheckForm = function()
{
	this.fm;
	this.action;
	this.field_list;

	// member
	this.except; // use at member write, view form
	this.usetype_atid_array;
	this.usetype_name_array;
	this.viewtype_array;
	this.usetype_length;
}


CheckForm.prototype.chk = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);
	var tmp = false;


	// process
	if( obj )
	{
		if( this.isArray(obj) == true )
		{
			for(var j = 0; j < obj.length; j++)
			{
				if(obj[j].checked == true)
				{
					var tmp = true;
				}
			}

			if(tmp == false)
			{
				var msg = printf(LANG[1], this.field_list[i][1]);
				alert(msg);
				return false;
			}
		}
		else
		{
			if(obj.checked == false)
			{
				var msg = printf(LANG[1], this.field_list[i][1]);
				alert(msg);
				return false;
			}
		}
	}
}

CheckForm.prototype.isArray = function(obj)
{
	if( typeof obj.length == 'undefined' )
	{
		return false;
	}
	else
	{
		return true;
	}
}

CheckForm.prototype.chkarr = function()
{
	// declare
	var obj = this.fm[this.field_list[i][0]];
	var tmp = false;


	// process
	if( obj )
	{
		if( this.isArray(obj) == true )
		{
			for(var j = 0; j < obj.length; j++)
			{
				if(obj[j].checked == true)
				{
					var tmp = true;
				}
			}

			if(tmp == false)
			{
				var msg = printf(LANG[1], this.field_list[i][1]);
				alert(msg);
				return false;
			}
		}
		else
		{
			if(obj.checked == false)
			{
				var msg = printf(LANG[1], this.field_list[i][1]);
				alert(msg);
				return false;
			}
		}
	}
}


CheckForm.prototype.arr = function()
{
	// declare
	var obj = this.fm[this.field_list[i][0]];


	// process
	if ( obj )
	{
		if ( obj.value == '' )
		{
			var msg = printf(LANG[1], this.field_list[i][1]);
			alert(msg);
			return false;
		}
	}
}


CheckForm.prototype.pop = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);

	// process
	if ( obj )
	{
		if ( obj.value == '' )
		{
			switch (obj.tagName)
			{
				case 'SELECT' : var msg = printf(LANG[1], this.field_list[i][1]); break;
				default : var msg = printf(LANG[2], this.field_list[i][1]); break;
			}
			alert(msg);
			return false;
		}
	}
}

CheckForm.prototype.email_ = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);

	// process
	if ( obj )
	{
		if ( isEmail2( obj.value ) == false )
		{
			var msg = printf(LANG[4], this.field_list[i][1]);
			alert(msg);
			obj.focus();
			return false;
		}
	}
}

CheckForm.prototype.num_ = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);

	// process
	if ( obj )
	{
		if ( isNumber( obj ) == false )
		{
			var msg = printf(LANG[3], this.field_list[i][1]);
			alert(msg);
			obj.focus();
			return false;
		}
	}
}

CheckForm.prototype.length_ = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);

	// process
	if ( obj )
	{
		if ( obj.value.length > this.field_list[i][3] )
		{
			var msg = printf(LANG[59], this.field_list[i][3]);
			alert(msg);
			obj.focus();
			return false;
		}
	}
}

CheckForm.prototype.def = function()
{
	// declare
	var obj = eval('this.fm.' + this.field_list[i][0]);

	// process
	if ( obj )
	{
		if ( obj.value == '' )
		{
			switch (obj.tagName)
			{
				case 'SELECT' : var msg = printf(LANG[1], this.field_list[i][1]); break;
				default : var msg = printf(LANG[2], this.field_list[i][1]); break;
			}

			alert(msg);
			obj.focus();
			return false;
		}
	}
}


// switching check
CheckForm.prototype.checkSubmit = function()
{
	for(i = 0; i < this.field_list.length; i++)
	{
		switch (this.field_list[i][2])
		{
			case 'chk' : if( this.chk() == false) return; break;
			case 'chkarr' : if( this.chkarr() == false) return; break;
			case 'arr' : if( this.arr() == false ) return; break;
			case 'pop' : if( this.pop() == false ) return; break;
			case 'email' : if( this.email_() == false ) return; break;
			case 'num' : if( this.num_() == false ) return; break;
			case 'length' : if( this.length_() == false ) return; break;
			default : if( this.def() == false ) return; break;
		}
	}

	if( this.except == true )
	{
		if( writeCheckMemberExcept(this.fm) == false ) return;

		// button
		if( document.getElementById('member_button') != null )
		{
			document.getElementById('member_button').style.display = 'none';
			document.getElementById('member_button').outerHTML = '<font color="red">' + printf(LANG[53]) + '</font>';
		}
	}
	else if ( this.except == 'passwd' )
	{
		if( passwdChk(this.fm) == false ) return;
	}
	else if ( this.except == 'order' )
	{
		if( checkExceptOrderForm(this.fm) == false ) return;
	}
	else if ( this.except == 'option' )
	{
		if( checkExceptOption(this.fm) == false ) return;
	}

	if( this.action) this.fm.action = this.action;
	this.fm.submit();
}


// declare member field list
CheckForm.prototype.declareFieldList = function()
{
	this.field_list = new Array();

	for(var i = 0; i < this.usetype_length; i++)
	{
		switch ( parseInt(this.viewtype_array[i]) )
		{
			case 1 :

				if( this.usetype_atid_array[i].indexOf('[]') != -1 )
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
					this.field_list[i][2] = 'arr';
				}
				else
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
				}

			break;

			case 2 :

				this.field_list[i] = new Array();
				this.field_list[i][0] = this.usetype_atid_array[i];
				this.field_list[i][1] = this.usetype_name_array[i];
				this.field_list[i][2] = 'chk';

			break;

			case 3 :

				if( this.usetype_atid_array[i].indexOf('[]') != -1 )
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
					this.field_list[i][2] = 'chkarr';
				}
				else
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
					this.field_list[i][2] = 'chk';
				}

			break;

			default :

				if( this.usetype_atid_array[i].indexOf('[]') != -1 )
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
					this.field_list[i][2] = 'arr';
				}
				else
				{
					this.field_list[i] = new Array();
					this.field_list[i][0] = this.usetype_atid_array[i];
					this.field_list[i][1] = this.usetype_name_array[i];
				}

			break;
		}
	}
}
