function Img2Filter(img) {
	var filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
		+ "/image/form/" + img + "',sizingMethod='crop')";
	return filter;
}

var Form =
{
	Initialize: function()
	{
		FormCheckBox.Initialize();
		FormRadio.Initialize();
	},

	Submit: function(Form, Page, Variable, Verify)
	{
		var Object;

		if (typeof(Verify)=="undefined")
			Verify = true;

		while ((Object)&&(Object.nodeName != "FORM"))
			Object = Object.parentNode;

		if ((Object)&&((!Verify)||(Object.onsubmit())))
		{
			if (Page)
			{
				if (Object.action.indexOf("?")==-1)
					Object.action = Page;
				else
					Object.action = Page + Object.action.substr(Object.action.indexOf("?"));
			}

			if (Variable)
			{
				if (Object.action.indexOf("?")==-1)
					Object.action += "?"+Variable;
				else
					Object.action += "&"+Variable;
			}

			Object.submit();
		}
	},

	GetVariable: function(Object)
	{
		Object = this.GetForm(Object);
		var Variable = "";

		for(var LoopElement=0;LoopElement<Object.length;LoopElement++)
		{
			switch(Object.elements[LoopElement].type)
			{
				case "select-one":
					Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].options[Object.elements[LoopElement].selectedIndex].value);
					break;

				case "select-multiple":
					for(var Loop=0;Loop<Object.elements[LoopElement].length;Loop++)
						if (Object.elements[LoopElement].options[Loop].selected)
							Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].options[Loop].value);
					break;

				case "radio":
					if (Object.elements[LoopElement].checked)
						Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				case "checkbox":
					if (Object.elements[LoopElement].checked)
						Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				case "text":
					Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				case "password":
					Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				case "hidden":
					Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				case "textarea":
					Variable += ((Variable)?"&":"") + Object.elements[LoopElement].name + "=" + encodeURIComponent(Object.elements[LoopElement].value);
					break;

				default:
					break;
			}
		}

		return(Variable);
	},

	SetValue: function(Object, FieldName, FieldValue)
	{
		Object = this.GetForm(Object);
		var Type;

		if (typeof(Object.elements[FieldName].type)!="undefined")
			Type = Object.elements[FieldName].type;
		else if (Object.elements[FieldName].length)
			Type = Object.elements[FieldName][0].type;

		switch(Type)
		{
			case "select-one":
				for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
					if (Object.elements[FieldName].options[Loop].value==FieldValue)
						Object.elements[FieldName].selectedIndex = Loop;
				break;

			case "select-multiple":
				for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
					if (Object.elements[FieldName].options[Loop].value==FieldValue)
						Object.elements[FieldName].options[Loop].selected = true;
					else
						Object.elements[FieldName].options[Loop].selected = false;

				if (typeof(FieldValue)=="object")
					for(var FieldKey in FieldValue)
						for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
							if (Object.elements[FieldName].options[Loop].value==FieldValue[FieldKey])
								Object.elements[FieldName].options[Loop].selected = true;
				break;

			case "radio":
				if (typeof(Object.elements[FieldName].length)=="undefined")
				{
					if (Object.elements[FieldName].value==FieldValue)
						Object.elements[FieldName].checked = true;
					else
						Object.elements[FieldName].checked = false;
				}
				else
				{
					for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
					{
						if (Object.elements[FieldName][Loop].value==FieldValue)
							Object.elements[FieldName][Loop].checked = true;
						else
							Object.elements[FieldName][Loop].checked = false;
						Object.elements[FieldName][Loop].onchange();
					}
				}
				break;

			case "checkbox":
				Object.elements[FieldName].checked = FieldValue;
				Object.elements[FieldName].onchange();
				break;

			case "text":
				Object.elements[FieldName].value = FieldValue;
				break;

			case "password":
				Object.elements[FieldName].value = FieldValue;
				break;

			case "hidden":
				Object.elements[FieldName].value = FieldValue;
				break;

			case "textarea":
				Object.elements[FieldName].value = FieldValue;
				break;

			default:
				break;
		}
	},

	GetValue: function(Object, FieldName)
	{
		Object = this.GetForm(Object);
		var Type;
		var FieldValue = null;

		if (typeof(Object.elements[FieldName].type)!="undefined")
			Type = Object.elements[FieldName].type;
		else if (Object.elements[FieldName].length)
			Type = Object.elements[FieldName][0].type;

		switch(Type)
		{
			case "select-one":
				FieldValue = Object.elements[FieldName].options[Object.elements[FieldName].selectedIndex].value;
				break;

			case "select-multiple":
				FieldValue = Array();
				for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
					if (Object.elements[FieldName].options[Loop].selected)
						FieldValue[FieldValue.length] = Object.elements[FieldName].options[Loop].value;
				break;

			case "radio":
				if (typeof(Object.elements[FieldName].length)=="undefined")
				{
					if (Object.elements[FieldName].checked)
						FieldValue = Object.elements[FieldName].value
				}
				else
				{
					for(var Loop=0;Loop<Object.elements[FieldName].length;Loop++)
						if (Object.elements[FieldName][Loop].checked)
							FieldValue = Object.elements[FieldName][Loop].value
				}
				break;

			case "checkbox":
				if (Object.elements[FieldName].checked)
					FieldValue = Object.elements[FieldName].value;
				break;

			case "text":
				FieldValue = Object.elements[FieldName].value;
				break;

			case "password":
				FieldValue = Object.elements[FieldName].value;
				break;

			case "hidden":
				FieldValue = Object.elements[FieldName].value;
				break;

			case "textarea":
				FieldValue = Object.elements[FieldName].value;
				break;

			default:
				break;
		}

		return(FieldValue);
	},

	GetForm: function(Object)
	{
		if (typeof(Object)=="string")
		{
			FormList = document.getElementsByTagName("FORM");
			for(Loop=0;Loop<FormList.length;Loop++)
				if (FormList[Loop].name==Object)
					return(FormList[Loop]);
		}
		else if (typeof(Object)=="object")
		{
			while ((Object)&&(Object.nodeName!="FORM"))
				Object = Object.parentNode;

			if ((Object)&&(Object.nodeName=="FORM"))
				return(Object);
			else
				return(null);
		}
		else
			return(null);
	}

}


var FormCheckBox =
{
	Initialize: function()
	{
		var CheckBox = document.getElementsByTagName("INPUT");
		for(Loop=0;Loop<CheckBox.length;Loop++)
		{
			if ((CheckBox[Loop].type=="checkbox")&&(CheckBox[Loop].style.display!="none"))
			{
				Div = document.createElement("img");
				Div.src = "/image/spacer.gif";
				if (CheckBox[Loop].checked) {
					Div.className = "FormCheckBox FormCheckBoxSelected";
					Div.style.filter=Img2Filter('checkbox3.png');
				} else {
					Div.className = "FormCheckBox";
					Div.style.filter=Img2Filter('checkbox1.png');
				}
				Div.style.background = '';
				Div.style.height = '20px';
				Div.onmousedown = FormCheckBox.MouseDown;
				Div.onmouseup = FormCheckBox.MouseUp;
				CheckBox[Loop].onchange = FormCheckBox.Change;
				if (typeof(CheckBox[Loop].onclick)=="function")
					Div.onclick = CheckBox[Loop].onclick.bind();

				CheckBox[Loop].style.display="none";

				ID = CheckBox[Loop].id;
				CheckBox[Loop].id = null;
				Div.id = ID;

				CheckBox[Loop].parentNode.insertBefore(Div, CheckBox[Loop].nextSibling);
			}
		}

		General.EventHandlerAdd(window, "mouseup", FormCheckBox.WindowMouseUp);
	},

	Change: function()
	{
		if (this.checked)
		{
			this.nextSibling.className = "FormCheckBox FormCheckBoxSelected";
			this.nextSibling.style.filter = Img2Filter('checkbox3.png');
		}
		else
		{
			this.nextSibling.className = "FormCheckBox";
			this.nextSibling.style.filter = Img2Filter('checkbox1.png');
		}
	},

	MouseDown: function()
	{
		if(this.className=="FormCheckBox")
			this.style.filter = Img2Filter('checkbox2.png');
		else
			this.style.filter = Img2Filter('checkbox4.png');
	},

	MouseUp: function()
	{
		if (this.className=="FormCheckBox")
		{
			this.previousSibling.checked = true;
			this.className = "FormCheckBox FormCheckBoxSelected";
			this.style.filter = Img2Filter('checkbox3.png');

		}
		else if (this.className=="FormCheckBox FormCheckBoxSelected")
		{
			this.previousSibling.checked = false;
			this.className = "FormCheckBox";
			this.style.filter = Img2Filter('checkbox1.png');
		}
	},

	WindowMouseUp: function()
	{
		CheckBox = document.getElementsByTagName("IMG");
		for(Loop=0;Loop<CheckBox.length;Loop++)
		{
			if (CheckBox[Loop].className == "FormCheckBox")
				CheckBox[Loop].style.filter = Img2Filter('checkbox1.png');
			else if (CheckBox[Loop].className == "FormCheckBox FormCheckBoxSelected")
				CheckBox[Loop].style.filter = Img2Filter('checkbox3.png');
		}
	}

}

var FormRadio =
{
	Initialize: function()
	{
		var Radio = document.getElementsByTagName("INPUT");
		for(Loop=0;Loop<Radio.length;Loop++)
		{
			if ((Radio[Loop].type=="radio")&&(Radio[Loop].style.display!="none"))
			{
				Div = document.createElement("img");
				Div.src = "/image/spacer.gif";
				if (Radio[Loop].checked) {
					Div.className = "FormRadio FormRadioSelected";
					Div.style.filter = Img2Filter('radio3.png');
				} else {
					Div.className = "FormRadio";
					Div.style.filter = Img2Filter('radio1.png');
				}
				Div.style.background = '';
				Div.style.height = '20px';
				Div.onmousedown = FormRadio.MouseDown;
				Div.onmouseup = FormRadio.MouseUp;
				Radio[Loop].onchange = FormRadio.Change;
				if (typeof(Radio[Loop].onclick)=="function")
					Div.onclick = Radio[Loop].onclick.bind();
				Radio[Loop].style.display="none";

				ID = Radio[Loop].id;
				Radio[Loop].id = null;
				Div.id = ID;

				Radio[Loop].parentNode.insertBefore(Div, Radio[Loop]);
			}
		}

		General.EventHandlerAdd(window, "mouseup", FormRadio.WindowMouseUp);
	},

	Change: function()
	{
		if (this.checked)
		{
			this.previousSibling.className = "FormRadio FormRadioSelected";
			this.previousSibling.style.filter = Img2Filter('radio3.png');
		}
		else
		{
			this.previousSibling.className = "FormRadio";
			this.previousSibling.style.filter = Img2Filter('radio1.png');
		}
	},

	MouseDown: function()
	{
		if(this.className=="FormRadio")
			this.style.filter = Img2Filter('radio2.png');
		else
			this.style.filter = Img2Filter('radio4.png');
	},

	MouseUp: function()
	{
		this.nextSibling.checked = true;
		this.className = "FormRadio FormRadioSelected";
		this.style.filter = Img2Filter('radio3.png');

		Radio = document.getElementsByTagName("INPUT");
		for(Loop=0;Loop<Radio.length;Loop++)
		{
			if ((Radio[Loop].getAttribute("name")==this.nextSibling.getAttribute("name"))&&(Radio[Loop]!=this.nextSibling))
			{
				Radio[Loop].previousSibling.className = "FormRadio";
				Radio[Loop].previousSibling.style.filter = Img2Filter('radio1.png');
			}
		}
	},

	WindowMouseUp: function()
	{
		Radio = document.getElementsByTagName("IMG");
		for(Loop=0;Loop<Radio.length;Loop++)
		{
			if (Radio[Loop].className == "FormRadio")
				Radio[Loop].style.filter = Img2Filter('radio1.png');
			else if (Radio[Loop].className == "FormRadio FormRadioSelected")
				Radio[Loop].style.filter = Img2Filter('radio3.png');
		}
	}

}

General.EventHandlerAdd(window, "load", FormCheckBox.Initialize);
General.EventHandlerAdd(window, "load", FormRadio.Initialize);


/*



var VerifyFormWarning = false;

function VerifyForm(Form, WarningMessage, EmptyMessage, WarningClass, EmptyClass)
{
	ReturnValue = true;
	EmptyValue = false;
	WarningValue = false;

	for(LoopElement=0;LoopElement<Form.length;LoopElement++)
	{
		Value = false;
		switch(Form.elements[LoopElement].type)
		{
			case "select-one":
				Value = Form.elements[LoopElement].options[Form.elements[LoopElement].selectedIndex].value;
				break;

			case "select-multiple":
				for(Loop=0;Loop<Form.elements[LoopElement].length;Loop++)
					if (Form.elements[LoopElement].options[Loop].selected)
						Value = true;
				break;

			case "radio":
				if (Form.elements[Form.elements[LoopElement].name].length)
				{
					for(Loop=0;Loop<Form.elements[Form.elements[LoopElement].name].length;Loop++)
						if (Form.elements[Form.elements[LoopElement].name][Loop].checked)
							Value = Form.elements[Form.elements[LoopElement].name][Loop].value;
				}
				else
					Value = Form.elements[LoopElement].value;
				break;

			default:
				Value = Form.elements[LoopElement].value;
				break;
		}

		if (Form.elements[LoopElement].type!="submit")
		{
			switch(Form.elements[LoopElement].getAttribute("verify"))
			{
				case "Empty":
					if (!Value)
					{
						if (VerifyFormEmptyActionFalse)
							VerifyFormEmptyActionFalse(Form.elements[LoopElement], EmptyClass);
						EmptyValue = true;
					}
					else
						if (VerifyFormEmptyActionTrue)
							VerifyFormEmptyActionTrue(Form.elements[LoopElement]);
					break;

				case "Warning":
					if (!Value)
					{
						if (VerifyFormWarningActionFalse)
							VerifyFormWarningActionFalse(Form.elements[LoopElement], WarningClass);
						WarningValue = true;
					}
					else
						if (VerifyFormWarningActionTrue)
							VerifyFormWarningActionTrue(Form.elements[LoopElement]);
					break;
			}
		}
	}

	Message = "";

	if (EmptyValue)
		Message = EmptyMessage;

	if ((WarningValue)&&(!VerifyFormWarning))
	{
		if (EmptyValue)
			Message += "\r\n\r\n";
		Message += WarningMessage;
		VerifyFormWarning = true;
	}

	if (Message)
	{
		alert(Message);
		ReturnValue = false;
	}
	return(ReturnValue);
}

function VerifyFormEmptyActionFalse(Item, CSSClass)
{
	if (!Item.classNameOut)
	{
		Item.classNameOut = Item.className;
		Item.className = Item.className + CSSClass;
	}
}

function VerifyFormEmptyActionTrue(Item)
{
	if (Item.classNameOut)
	{
		Item.className = Item.classNameOut;
		Item.classNameOut = null;
	}
}

function VerifyFormWarningActionFalse(Item, CSSClass)
{
	if (!Item.classNameOut)
	{
		Item.classNameOut = Item.className;
		Item.className = Item.className + CSSClass;
	}
}

function VerifyFormWarningActionTrue(Item)
{
	if (Item.classNameOut)
	{
		Item.className = Item.classNameOut;
		Item.classNameOut = null;
	}
}

function FormSubmit(Object, Page, Variable, Verify)
{
	if (typeof(Verify)=="undefined")
		Verify = true;

	while ((Object)&&(Object.nodeName != "FORM"))
		Object = Object.parentNode;

	if ((Object)&&((!Verify)||(Object.onsubmit())))
	{
		if (Page)
		{
			if (Object.action.indexOf("?")==-1)
				Object.action = Page;
			else
				Object.action = Page + Object.action.substr(Object.action.indexOf("?"));
		}

		if (Variable)
		{
			if (Object.action.indexOf("?")==-1)
				Object.action += "?"+Variable;
			else
				Object.action += "&"+Variable;
		}

		Object.submit();
	}
}

function GetForm(Object)
{
	while ((Object)&&(Object.nodeName != "FORM"))
		Object = Object.parentNode;

	if ((Object)&&(Object.nodeName == "FORM"))
		return(Object);
	else
		return(null);
}

function GetFormItemValue(Object, Item)
{
	Form = GetForm(Object);

	Value = "";
	switch(Form.elements[Item].type)
	{
		case "select-one":
			Value = Form.elements[Item].options[Form.elements[Item].selectedIndex].value;
			break;

		case "select-multiple":
			for(Loop=0;Loop<Form.elements[Item].length;Loop++)
				if (Form.elements[Item].options[Loop].selected)
				{
					Value = Form.elements[Item].options[Loop].value;
					break;
				}
			break;

		case "radio":
			for(Loop=0;Loop<Form.elements[Item].length;Loop++)
				if (Form.elements[Item][Loop].checked)
					Value = Form.elements[Item][Loop].value;
			break;

		default:
			Value = Form.elements[Item].value;
			break;
	}

	return(Value);
}
*/
/*
function ActionRefresh(Form, Scroll)
{
	Form.form.ActionSubmit.value = '1';
	Form.form.ActionPage.value = '';
	Form.form.ActionSave.value = '';
	Form.form.ActionRedirect.value = '';
	Form.form.ActionMultiple.value = '';
	Form.form.ActionScroll.value = Scroll;
	Form.form.submit();
}

function ActionNextPage(Form, Page, Submit)
{
	if (typeof(Submit)=="undefined")
		Submit = true;

	if (typeof(Form.multi)!="undefined")
		Form.form.ActionMultiple.value = Form.multi;
	else
		Form.form.ActionMultiple.value = '';

	Form.form.ActionPage.value = Page;
	Form.form.ActionSave.value = '';
	Form.form.ActionRedirect.value = '';

	if (Submit)
	{
		Form.form.ActionSubmit.value = true;
		Form.form.submit();
	}
}

function ActionSavePage(Form, Redirect)
{
	Form.form.ActionSave.value = 1;
	Form.form.ActionRedirect.value = Redirect;
}

function DropDownVerifyAction(Form)
{
	if (Form.selectedIndex>=0)
	{
		if (typeof(Form.options[Form.selectedIndex].refresh)!="undefined")
			ActionRefresh(Form, FindPosition(Form)[1]);

		if (typeof(Form.options[Form.selectedIndex].page)!="undefined")
			ActionNextPage(Form, Form.options[Form.selectedIndex].page);
	}
}

function CheckBoxVerifyAction(Form)
{
	if (typeof(Form.refresh)!="undefined")
		if (Form.checked)
			ActionRefresh(Form, Form.style.top);

	if (typeof(Form.page)!="undefined")
		if (Form.checked)
			ActionNextPage(Form, Form.page);
}

function FindPosition(Object)
{
	var PositionLeft = PositionTop = 0;
	if (Object.offsetParent)
	{
		PositionLeft = Object.offsetLeft;
		PositionTop = Object.offsetTop;
		while (Object = Object.offsetParent)
		{
			PositionLeft += Object.offsetLeft;
			PositionTop += Object.offsetTop;
		}
	}

	return [PositionLeft, PositionTop];
}

function ScrollWindow(Position)
{
	if (document.readyState=="complete")
		window.scrollTo(0, Position);
	else
		window.attachEvent('onload', function() {window.scrollTo(0, Position)});

}

function GetAdjacentInputName(Object)
{
	while(Object.parentNode)
	{
		Object = Object.parentNode;
		for (Loop=0;Loop<Object.childNodes.length;Loop++)
			if ((Object.childNodes[Loop].nodeName=="INPUT")&&(Object.childNodes[Loop].type=="text"))
				return(Object.childNodes[Loop].name);
	}
}

function GetAdjacentInputValue(Object)
{
	while(Object.parentNode)
	{
		Object = Object.parentNode;
		for (Loop=0;Loop<Object.childNodes.length;Loop++)
			if ((Object.childNodes[Loop].nodeName=="INPUT")&&(Object.childNodes[Loop].type=="text"))
				return(Object.childNodes[Loop].value);
	}
}

function SetInputValue(Value, InputName)
{
	if (document.forms[0].elements[InputName])
		document.forms[0].elements[InputName].value = Value;
}

function GetFormItemValue(Item)
{
	Value = "";
	switch(Item.type)
	{
		case "select-one":
			Value = Item.options[Item.selectedIndex].value;
			break;

		case "select-multiple":
			for(Loop=0;Loop<Item.length;Loop++)
				if (Item.options[Loop].selected)
				{
					Value = Item.options[Loop].value;
					break;
				}
			break;

		case "radio":
			for(Loop=0;Loop<Form.elements[Item.name].length;Loop++)
				if (Form.elements[Item.name][Loop].checked)
					Value = Form.elements[Item.name][Loop].value;
			break;

		default:
			Value = Item.value;
			break;
	}

	return(Value);
}
*/
