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);


