function e(element) {
	return document.getElementById(element);
}

function checkBox(element, check) {
	e(element).checked = check;
}

function copyValue(elementFrom, elementTo) {
	putValue(elementTo, getValue(elementFrom));
}

function defaultField(element, fromValue, toValue) {
	var sCurrentValue = element.value;

	if (sCurrentValue == fromValue) {
		element.value = toValue;
	};
}

function disableElement(element, disable) {
	e(element).disabled = disable;
}

function elementExists(element) {
	return !(typeof(getValue(element)) == "undefined");
}

function getLength(element) {
	return (e(element).length);
}

function getSelectionIndex(element) {
	return (e(element).selectedIndex);
}

function getSelectionText(element) {
	return (e(element).options[getSelectionIndex(element)].text);
}

function getValue(element) {
	return (e(element).value);
}

function getValueEx(element) {
	return (trim(e(element).value, " "));
}

function hasSelection(element) {
	return !(e(element).selectedIndex == -1);
}

function hasSelectionEx(element) {
	return !(e(element).selectedIndex == 0);
}

function hasValue(element) {
	return !(lengthOfValue(element) == 0);
}

function hasValueEx(element) {
	return !(lengthOfValueEx(element) == 0);
}

function isChecked(element) {
	return (e(element).checked);
}

function limitElement(element, elementCounter, maximum, isValue) {
	var sElement = getValue(element);

	if (sElement.length > maximum) {
		putValue(element, sElement.substring(0, maximum));
	} else {
		if (isValue) {
			putValue(elementCounter, maximum - sElement.length);
		} else {
			e(elementCounter).innerHTML = maximum - sElement.length;
		}
	}
}

function lengthOfValue(element) {
	var sText = getValue(element);

	return (sText.length);
}

function lengthOfValueEx(element) {
	var sText = getValueEx(element);

	return (sText.length);
}

function makeSelectionByIndex(element, index) {
	e(element).selectedIndex = index;
}

function putValue(element, value) {
	e(element).value = value;
}

function selectAll(element) {
	var iSelected = 0;
	var iLength = getLength(element) - 1;

	for (var iCount = 0; iCount <= iLength; iCount++) {
		e(element).index = iCount;
		e(element).options[e(element).index].selected = true;
	};
}

function setFocus(element) {
	e(element).focus();
}

function insertOption(element, value, text) {
	var oSelect = e(element);
	var oOption = document.createElement("option");
	oOption.text = text;
	oOption.value = value;

	try {
		oSelect.add(oOption, null);
	} catch(ex) {
		oSelect.add(oOption);	// IE
	};
}

/* DHTML */
function addElement(parent, elementType, attributes, value) {
	var oNewElement = document.createElement(elementType);

	if (attributes) {
		for (iCount = 0; iCount < attributes.length; iCount += 2) {
			if (attributes[iCount] == "id") {
				oNewElement.id = attributes[iCount + 1];
			} else if (attributes[iCount] == "class") {
				oNewElement.setAttribute((document.all ? "className": "class"), attributes[iCount + 1]);
			} else if (attributes[iCount].substring(0, 2) == "on") {	// an event e.g. onclick, onsubmit...
				eval("oNewElement." +  attributes[iCount] + " = function() { " + attributes[iCount + 1] + " }");
			} else {
				oNewElement.setAttribute(attributes[iCount], attributes[iCount + 1]);
			};
		};
	};

	if (value) {
		oNewElement.innerHTML = value;
	};
/*
	if (style) {
		for(var sStyle in style) {
			oNewElement.style[sStyle] = style[sStyle];
		};
	};

	if (children) {
		for(var iCount = 0; iCount < children.length; ++iCount) {
			oNewElement.appendChild(children);
		};
	};
*/
	parent.appendChild(oNewElement);

	return oNewElement;
}

function cE(element) {
	return document.createElement(element);
}

function displayElement(element, display) {
	if (display) {
		e(element).style.display = "block";
	} else {
		e(element).style.display = "none";
	};
}

function innerHTML(element, value) {
	if (typeof(element) == "object") {
		element.innerHTML = value;
	} else {
		e(element).innerHTML = value;
	};
}

function isDisplayed(element) {
	return (e(element).style.display == "block" ? true : false);
}

function setClass(element, className) {
	e(element).setAttribute((document.all ? "className": "class"), className);
}

function toggleDisplay(element) {
	e(element).style.display == "block" ? displayElement(element, false) : displayElement(element, true);
}

function writeHTML(tag, attributeValuePairs, value) {
	var sTag = tag;
	var sEnd;
	var sAttributeValuePairs = "";
	var iAttributeValuePairs = attributeValuePairs.length;
	var iAttributeCounter;

	if (sTag == "img" || sTag == "br" || sTag == "input") {
		sEnd = " />" + value;
	} else {
		sEnd = ">" + value + "</" + sTag + ">";
	};

	for (iAttributeCounter = 0; iAttributeCounter < iAttributeValuePairs; iAttributeCounter += 2) {
		sAttributeValuePairs += writeAttribute(attributeValuePairs[iAttributeCounter], attributeValuePairs[iAttributeCounter + 1]);
	};

	return ("<" + sTag + sAttributeValuePairs + sEnd);
}

function writeAttribute(attribute, value) {
	if (value.length > 0) {
		return (" " + attribute + "=\"" + value + "\"");
	};

	return ("");
}

function createHTMLObject(tag, attributeValuePairs, value) {
	var oTag = cE(tag);
	var iAttributeValuePairs = attributeValuePairs.length;

	for (iAttributeCounter = 0; iAttributeCounter < iAttributeValuePairs; iAttributeCounter += 2) {
		if (attributeValuePairs[iAttributeCounter] == "id") {
			oTag.id = attributeValuePairs[iAttributeCounter + 1];
		} else if (attributeValuePairs[iAttributeCounter] == "class") {
			oTag.setAttribute((document.all ? "className": "class"), attributeValuePairs[iAttributeCounter + 1]);
		} else if (attributeValuePairs[iAttributeCounter].substring(0, 2) == "on") {	// an event e.g. onclick, onsubmit...
			eval("oTag." +  attributeValuePairs[iAttributeCounter] + " = function() { " + attributeValuePairs[iAttributeCounter + 1] + " }");
		} else if (attributeValuePairs[iAttributeCounter] == "src") {
			oTag.src = attributeValuePairs[iAttributeCounter + 1];
		} else {
			oTag.setAttribute(attributeValuePairs[iAttributeCounter], attributeValuePairs[iAttributeCounter + 1]);
		};
	};

	if (typeof(value) == "object") {
		oTag.appendChild(value);
	} else {
		if (value.length > 0) {
			if (tag == "input") {
				var oOuterDiv = cE("span");
				var oInputValue = cE("span");

				innerHTML(oInputValue, value);

				oOuterDiv.appendChild(oTag);
				oOuterDiv.appendChild(oInputValue);

				oTag = oOuterDiv;
			} else {
				innerHTML(oTag, value);
			};
		};
	};

	return (oTag);
}

function openWindow(url, width, height) {
	window.open(url, "AssetImages", "width=" + width + ",height=" + height + ",menubar=1,status=1,scrollbars=1");
}
