function blurSelectbox()
{
	if (!isSelectboxFocus || (key == 9 && browserType != "IE"))
	{
		closeSelectbox();
		curSelectbox = "";
		key = "";
	}
	else if (browserType == "IE")
		document.getElementById(curSelectbox).focus();
	else
		curSelectbox = "";
}

function checkFields()
{
	var error;
	var regex_arr;
	var isMandatory;
	var isOk = true;
//	var isRadio;
	var fieldError = false;
	var fieldMandatory = 0;
	var fieldValue;
	var field;
	var field_tmp;
	var field_len = checkField_arr.length;
	checkFields: for (checkField in checkField_arr)
	{
//		isRadio = 0;	// radio buttons
		regex_arr = false;
		isMandatory = checkField_arr[checkField]["mandatory"];
/*	radio buttons
		if (isset(document.forms["mainForm"].elements[checkField]) && isset(document.forms["mainForm"].elements[checkField].length))
		{
			field_tmp = document.forms["mainForm"].elements[checkField];
			isRadio = 1;
			fieldValue = "";
			field = field_tmp[0];
			for (element in field_tmp)
			{
				if (field_tmp[element].checked)
				{
					isMandatory = 0;
					field = field_tmp[element];
					fieldValue = field_tmp[element].value;
					break;
				}
			}
		}
		else
		{
*/
			field = document.getElementById(checkField);
			fieldValue = isset(field.value) ? field.value : field.innerHTML;
			if (browserType == "IE" && document.getElementById(checkField).type == "select-one" && document.getElementById(checkField + "ie"))
				document.getElementById(checkField + "ie").className = "";
			else
				field.className = field.className.replace(/\serror/, "");
			regex_arr = isset(checkField_arr[checkField]["regex"]) ? fieldValue.match(checkField_arr[checkField]["regex"]) : false;
//		}	// radio buttons
		/*	combined fields
		if (isset(checkField_arr[checkField]["combined"]) && fieldValue == "")
		{
			var combined_arr = checkField_arr[checkField]["combined"].split(",");
			if (isset(combined_arr.length))
			{
				for (combined in combined_arr)
				{
					if (document.forms["mainForm"].elements[combined_arr[combined]].value != "")
						continue checkFields;
				}
			}
			else if (document.forms["mainForm"].elements[checkField_arr[checkField]["combined"]].value != "")
				continue checkFields;
		}
		*/
		if (isNaN(checkField_arr[checkField]["mandatory"]) && fieldValue == "")
		{
			isMandatory = 0;
			if (fieldValue == "")
			{
				var mandatory_arr = checkField_arr[checkField]["mandatory"].split(",");
				if (isset(mandatory_arr.length))
				{
					for (mandatory in mandatory_arr)
					{
						if (document.forms["mainForm"].elements[mandatory_arr[mandatory]].value != "")
						{
//							isMandatory = isRadio ? 2 : 1;	// radio buttons
							isMandatory = 1;
							break;
						}
					}
				}
				else if (document.forms["mainForm"].elements[checkField_arr[checkField]["mandatory"]] != "")
//					isMandatory = isRadio ? 2 : 1;	// radio buttons
					isMandatory = 1;
			}
		}
		if ((fieldValue == "" && isMandatory) || (fieldValue != "" && regex_arr == null) || (isset(checkField_arr[checkField]["compare"]) && document.getElementById(checkField).value != document.getElementById(checkField_arr[checkField]["compare"]).value))
		{
//			if (isMandatory != 2 && field.className.search(/\serror/) == -1)	// radio buttons
			if (field.className.search(/\serror/) == -1)
			{
				if (browserType == "IE" && document.getElementById(checkField).type == "select-one" && document.getElementById(checkField + "ie"))
					document.getElementById(checkField + "ie").className = "selectboxFieldError";
				else
					field.className += " error";
			}
			if (isOk)
			{
				document.getElementById("submitForm").className = "submit taskbarWarningHover";
				document.getElementById("error").style.display = "block";
				document.getElementById("taskbar").className = "td taskbar taskbarWarning";
				document.getElementById("submitForm").onmouseout = function (){this.className = 'submit taskbarWarning'};
				document.getElementById("submitForm").onmouseover = function (){this.className = 'submit taskbarWarningHover'};
				isOk = false;
			}
			if (!fieldError)
				error = isset(checkField_arr[checkField]["error"]) ? checkField_arr[checkField]["error"] : 0;
				fieldValue == "" && isMandatory == 1 ? fieldMandatory++ : fieldError = true;
		}
	}
	if (!isOk)
		document.getElementById("error").innerHTML = "&nbsp;" + (fieldError || fieldMandatory == 1 ? error_arr[error] : error_arr[0]);
	else
	{
		document.getElementById("submitForm").className = "submit";
		document.getElementById("error").style.display = "none";
		document.getElementById("error").innerHTML = "";
		document.getElementById("taskbar").className = "td taskbar";
		document.getElementById("submitForm").onmouseout = function (){this.className = 'submit'};
		document.getElementById("submitForm").onmouseover = function (){this.className = 'submit taskbarHover'};
	}
	isOk ? document.mainForm.submit() : "";
}

function checkLoginFields(loginError)
{
	var isOk = true;
	var fieldError = false;
	var fieldMandatory = 0;
	var error = isset(loginError) ? loginError : "";
	var field;
	var fieldValue = "";
	var field_len = checkLoginField_arr.length;
	for (checkField in checkLoginField_arr)
	{
		if (document.getElementById(checkField))
		{
			field = document.getElementById(checkField);
			fieldValue = isset(field.value) ? field.value : field.innerHTML;
			var regex_arr = isset(checkLoginField_arr[checkField]["regex"]) ? fieldValue.match(checkLoginField_arr[checkField]["regex"]) : false;
			if (fieldValue == "" || (regex_arr == null && fieldValue != ""))
			{
				if (field.className.search(/\serror/) == -1)
					field.className += " error";
				if (isOk)
				{
					document.getElementById("loginSubmit").className = isset(loginError) ? "layerboxSubmit layerboxTaskbarWarning" : "layerboxSubmit layerboxTaskbarWarningHover";
					document.getElementById("loginError").style.display = "block";
					document.getElementById("loginTaskbar").className = "td layerboxTaskbar layerboxTaskbarWarning";
					document.getElementById("loginSubmit").onmouseout = function (){this.className = 'layerboxSubmit layerboxTaskbarWarning'};
					document.getElementById("loginSubmit").onmouseover = function (){this.className = 'layerboxSubmit layerboxTaskbarWarningHover'};
					isOk = false;
				}
				if (!fieldError && !isset(loginError))
					error = isset(checkLoginField_arr[checkField]["error"]) ? checkLoginField_arr[checkField]["error"] : 0;
				fieldValue == "" && !isset(loginError) ? fieldMandatory++ : fieldError = true;
			}
		}
	}
	if (!isOk)
		document.getElementById("loginError").innerHTML = "&nbsp;" + (fieldError || fieldMandatory == 1 ? loginError_arr[error] : loginError_arr[0]);
	else
	{
		field.className = field.className.replace(/\serror/, "");
		document.getElementById("loginSubmit").className = "layerboxSubmit";
		document.getElementById("loginError").style.display = "none";
		document.getElementById("loginError").innerHTML = "";
		document.getElementById("loginTaskbar").className = "td layerboxTaskbar";
		document.getElementById("loginSubmit").onmouseout = function (){this.className = 'layerboxSubmit'};
		document.getElementById("loginSubmit").onmouseover = function (){this.className = 'layerboxSubmit layerboxTaskbarHover'};
	}
	isOk ? document.loginForm.submit() : "";
}

function checkPassword(id)
{
	var field = document.getElementById(id);
	var regex_arr = field.value.match(password_arr["regex"]);
	if (field.value == "" || (regex_arr == null && field.value != ""))
	{
		field.className += " error";
		document.getElementById("passwordSubmit").className = "layerboxSubmit layerboxTaskbarWarningHover";
		document.getElementById("passwordError").style.display = "block";
		document.getElementById("passwordTaskbar").className = "td layerboxTaskbar layerboxTaskbarWarning";
		document.getElementById("passwordSubmit").onmouseout = function (){this.className = 'layerboxSubmit layerboxTaskbarWarning'};
		document.getElementById("passwordSubmit").onmouseover = function (){this.className = 'layerboxSubmit layerboxTaskbarWarningHover'};
		document.getElementById("passwordError").innerHTML = "&nbsp; " + password_arr["error"];
	}
	else
	{
		field.className = field.className.replace(/\serror/, "");
		document.getElementById("passwordSubmit").className = "layerboxSubmit";
		document.getElementById("passwordError").style.display = "none";
		document.getElementById("passwordError").innerHTML = "";
		document.getElementById("passwordTaskbar").className = "td layerboxTaskbar";
		document.getElementById("passwordSubmit").onmouseout = function (){this.className = 'layerboxSubmit'};
		document.getElementById("passwordSubmit").onmouseover = function (){this.className = 'layerboxSubmit layerboxTaskbarHover'};
		document.passwordForm.submit();
	}
}

function clickSelectbox(id)
{
	isset(id) ? curSelectbox = id : "";
	if (document.getElementById(curSelectbox + "Select").style.display != "block")
	{
		showSelectbox();
		document.getElementById(curSelectbox).focus();
	}
	else
		closeSelectbox();
}

function closeSelectbox()
{
	document.getElementById(curSelectbox + "Select").style.display = "none";
}

function disableError(field)
{
	field.className = field.className.replace(/\serror/, "");
}

function focusSelectbox(id)
{
	if (!isSelectboxFocus || key == 9)
	{
		isset(id) ? curSelectbox = id : "";
		showSelectbox();
	}
}

function getKey(e)
{
	key = getKeyboardState(e);
	isShiftKey = window.event ? window.event.shiftKey : e.shiftKey;
	if ((isShiftKey && key == 9 && disableTab == 1) || (!isShiftKey && key == 9 && disableTab == 2))
		disableTab = 0;
	if (key == 38 || key == 40 || (disableTab && key == 9))
		window.event ? window.event.returnValue = false : e.preventDefault();
	if (key > 96 && key < 123)
		key -= 32;
	else if (key == 252 || key == 59)
		key = 220;
	else if (key == 246 || key == 192)
		key = 214;
	else if (key == 228 || key == 222)
		key = 196;
	if (key == 38 || key == 40 || key == 13 || (key > 64 && key < 91) || key == 220 || key == 214 || key == 196)
		scrollSelectbox();
}

function getKeyboardState(e)
{
	return window.event ? window.event.keyCode : e.which;
}

function getNumOptions()
{
	for (numOption in numOption_arr)
	{
		if (document.getElementById(numOption + "Select"))
			numOption_arr[numOption] = document.getElementById(numOption + "Select").getElementsByTagName("div").length;
	}
}

function onCheckbox(checkbox, field)
{
	if (isset(document.getElementById(checkbox)))
		document.getElementById(checkbox).onkeypress =	function (e)
														{
															if (getKeyboardState(e) == 32)
															{
																if (typeof selectedTerms != "undefined" && field == "terms")
																	showTermsbox(this, 1);
																else
																	setCheckbox(this, field);
															}
														}
}

function preselect(id, numOption)
{
	curSelectbox = id;
	setSelectbox(document.getElementById(curSelectbox + "Select" + numOption));
	curSelectbox = "";
}

function scrollSelectbox()
{
	if (curSelectbox != "")
	{
		if (document.getElementById(curSelectbox + "Select").style.display == "block")
		{
			if (key == 38)
			{
				if (optionSelected_arr[curSelectbox] > 0)
					optionSelected_arr[curSelectbox]--;
				else
					optionSelected_arr[curSelectbox] = numOption_arr[curSelectbox] - 1;
			}
			else if (key == 40)
			{
				if (optionSelected_arr[curSelectbox] < numOption_arr[curSelectbox] - 1)
					optionSelected_arr[curSelectbox]++;
				else
					optionSelected_arr[curSelectbox] = 0;
			}
			else if ((key > 64 && key < 91) || key == 220 || key == 214 || key == 196)
			{
				optionSelected_arr[curSelectbox]++;
				if (optionSelected_arr[curSelectbox] >= numOption_arr[curSelectbox] || document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]).innerHTML.charCodeAt(0) != key)
					optionSelected_arr[curSelectbox] = 0;
				var found = 0;
				while (document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]))
				{
					if (document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]).innerHTML.charCodeAt(0) == key)
					{
						document.getElementById(curSelectbox + "Select").scrollTop = optionSelected_arr[curSelectbox] * 25;
						found = 1;
						break;
					}
					optionSelected_arr[curSelectbox]++;
				}
				if (!found)
					optionSelected_arr[curSelectbox] = -1;
			}
			if (optionSelected_arr[curSelectbox] > -1)
			{
				document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]).scrollIntoView();
				searchFieldOver();
				setField();
			}
		}
		else if (key == 38 || key == 40)
			clickSelectbox();
		if (key == 13)
			clickSelectbox();
	}
}

function searchFieldOver()
{
	if (optionSelected_arr[curSelectbox] > -1)
	{
		for (var numOption = 0; numOption < numOption_arr[curSelectbox]; ++numOption)
			document.getElementById(curSelectbox + "Select" + numOption).className = "option";
		document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]).className = "option optionHover";
	}
}

function selectboxOut()
{
	isSelectboxFocus = 0;
}

function selectboxOver()
{
	isSelectboxFocus = 1;
}

function setCheckbox(field, id)
{
	document.getElementById(id).value = document.getElementById(id).value == "" ? "on" : "";
	field.className = 'td checkbox' + (document.getElementById(id).value == "on" ? '2' : '1');
}

function setField()
{
	var field = document.getElementById(curSelectbox + "Select" + optionSelected_arr[curSelectbox]);
	document.getElementById(curSelectbox).value = field.innerHTML;
	document.getElementById(curSelectbox + "Field").value = field.getAttribute("value") == null ? field.innerHTML : field.getAttribute("value");
	disableError(document.getElementById(curSelectbox));
	if (typeof selectedTerms != "undefined" && curSelectbox == "country")
		setTermsbox(field);
}

function setSelectbox(field)
{
	document.getElementById(curSelectbox + "Field").value = field.getAttribute("value") == null ? field.innerHTML : field.getAttribute("value");
	document.getElementById(curSelectbox).value = field.innerHTML;
	disableError(document.getElementById(curSelectbox));
	optionSelected_arr[curSelectbox] = str_replace(curSelectbox + "Select", "", field.id);
	searchFieldOver();
	key = "";
	closeSelectbox();
	if (typeof selectedTerms != "undefined" && curSelectbox == "country")
		setTermsbox(field);
}

function setTabStatus(val)
{
	disableTab = val;
}

function showSelectbox()
{
	document.getElementById(curSelectbox + "Select").style.display = "block";
}