function isForm(mForm)
{
	if ((isForm.arguments.length == 2) && (typeof(isForm.arguments[1]) == 'object')) {
		obj = isForm.arguments[1];
	} else {
		obj = document;
	}

	var mResult = false;
	switch ( typeof(mForm) ) {
		case 'number':
			if (obj.forms[mForm])
				mResult = obj.forms[mForm];
			break;
		case 'string':
			if (obj.forms[mForm])
				mResult = obj.forms[mForm];
			break;
		case 'object':
			if (typeof(mForm.method) != 'undefined')
				mResult = mForm;
			break;
		default:
			break;
	}
	return mResult;
}

function isElement(mElement, mForm)
{
	var mResult = false;

	if ((typeof(mForm) != 'undefined') && (typeof(mForm) != 'boolean')) {
		if (oF=isForm(mForm)) {
			switch ( typeof(mElement) ) {
				case 'number':
					if (oF.elements[mElement])
						mResult = oF.elements[mElement];
					break;
				case 'string':
					if (oF.elements[mElement])
						mResult = oF.elements[mElement];
					break;
				case 'object':
					if (mElement.form.name == oF.name)
						mResult = mElement;
					break;
				default:
					break;
			}
		}
	} else {
		if ((typeof(mElement) == 'object') && (typeof(mElement.form) != 'undefined')) mResult = mElement;
	}
	return mResult
}


// element type checks
function isText(mElement, mForm)              { return ((oE=isElement(mElement, mForm)) && (isElementType(oE, 'text')))? oE : false; }
function isCheckbox(mElement, mForm)          { return ((oE=isElement(mElement, mForm)) && (isElementType(oE, 'checkbox')))? oE : false;	}
function isSingleOptionbox(mElement, mForm)   { return ((oE=isElement(mElement, mForm)) && (isElementType(oE, 'select-one')))? oE : false; }
function isMultipleOptionbox(mElement, mForm) {	return ((oE=isElement(mElement, mForm)) && (isElementType(oE, 'select-multiple')))? oE : false; }
function isOptionbox(mElement, mForm)         { return ((oE=isElement(mElement, mForm)) && (isElementType(oE, 'select-one', 'select-multiple')))? oE : false; }
function isElementType(oElement, sTypeArg)
{
	var mResult = false;
	if ((oE=isElement(oElement)) && (typeof(sTypeArg) != 'undefined') && (typeof(sTypeArg) != 'boolean')) {
		for (var arg=1; arg<isElementType.arguments.length; arg++) {
			if (oE.type==isElementType.arguments[arg])
				mResult = true;
		}
	}
	return mResult;
}

function getRadioValue(mElement, mForm)
{
	var sResult = -1;
	if (oF=isForm(mForm)) {
		if (oE=isElement(mElement, oF)) {
			if (typeof(oE.length) != 'undefined') {
				for (var i=0; i<oE.length; i++) {
					if (oE[i].checked == true) {
						sResult = oE[i].value;
					}
				}
			} else {
				sResult = oE.value;
			}
		}
	}
	return sResult;
}

// enable/disable element
function set_disable(mElement, mForm, bStatus) { if ((typeof(bStatus) == 'boolean') && (oE=isElement(mElement, mForm))) oE.disabled = bStatus; }
function enable(mElement, mForm)               { set_disable(mElement, mForm, false); }
function disable(mElement, mForm)              { set_disable(mElement, mForm, true);  }


// mark/demark checkbox
function set_mark(mElement, mForm, bStatus) { if (oE=isCheckbox(mElement, mForm)) oE.checked = bStatus; }
function mark(mElement, mForm)              { set_mark(mElement, mForm, true); }
function demark(mElement, mForm)            { set_mark(mElement, mForm, false); }
function is_marked(mElement, mForm)         { return (oE=isCheckbox(mElement, mForm))? oE.checked : false; }

function mark_group(mForm, sGroup)
{
	if (oF=isForm(mForm)) {
		for (var i=0; i<oF.elements.length; i++) {
			oE = isElement(oF.elements[i], oF);
			if ((oE.name.indexOf(sGroup) == '0') && (!is_marked(oE)))
				mark(oE);
		}
	}
}

function demark_group(mForm, sGroup)
{
	if (oF=isForm(mForm)) {
		for (var i=0; i<oF.elements.length; i++) {
			oE = isElement(oF.elements[i], oF);
			if ((oE.name.indexOf(sGroup) == '0') && (is_marked(oE)))
				demark(oE);
		}
	}
}

function getSelectedIndex(mElement, mForm)
{
	return (oE=isOptionbox(mElement, mForm))? oE.selectedIndex : -1;
}

function test(mElement, mForm)
{
	if ( typeof(iSelIndex=getSelectedIndex(mElement, mForm)) != 'boolean' ) {
		alert(iSelIndex);
	}
}


function selectbox_switchOptions(mElement, mForm, iOpt1, iOpt2)
{
	if ((-1<(iO1=1*iOpt1)) && (-1<(iO2=1*iOpt2)) && (oE=isOptionbox(mElement, mForm)) && (iL=oE.options.length) && (iL>iO1) && (iL>iO2)) {

		var oTmpVal = oE.options[iO1].value;
		var oTmpTxt = oE.options[iO1].text;

		oE.options[iO1].value = oE.options[iO2].value;
		oE.options[iO1].text  = oE.options[iO2].text;

		oE.options[iO2].value = oTmpVal;
		oE.options[iO2].text  = oTmpTxt;
	}
}


function selectbox_selIndex_up(mElement, mForm)
{
	if (oE=isOptionbox(mElement, mForm)) {
		var selIndex = oE.selectedIndex;
		// selIndex can not be the first one
		if (selIndex>0) {
			var iOpt = selIndex-1;
			selectbox_switchOptions(oE, false, selIndex, iOpt);
 			oE.selectedIndex = iOpt;
 			return iOpt;
		} //selIndex>0
	} //if oElement
	return -1;
}

function selectbox_selIndex_down(mElement, mForm)
{
	if (oE=isOptionbox(mElement, mForm)) {
		var selIndex = oE.selectedIndex;

		// selIndex can not be the last one
		if ((selIndex>-1) && (selIndex!=oE.length-1)) {
			var iOpt = selIndex+1;
			selectbox_switchOptions(oE, false, selIndex, iOpt);
			oE.selectedIndex = iOpt;
 			return iOpt;
		} //selIndex>0
	} //if oElement
	return -1;
}


function selectbox_isOption(mElement, mForm, iValue)
{

	if (oE=isOptionbox(mElement, mForm)) {
		var iCount = oE.length;
		for (var i=iCount-1; i>-1; i--) {
			if (oE.options[i].value == iValue) return true;
		}
	}
	return false;
}

function selectbox_insertOption(mElement, mForm, iValue, sText)
{
	var iInsertID = -1;
	if (oE=isOptionbox(mElement, mForm)) {
		iInsertID = oE.length;
		oE.options[iInsertID] = new Option(sText, iValue);
	}
	return iInsertID;
}


function selectbox_deleteAllOption(mElement, mForm)
{
	if (oE=isOptionbox(mElement, mForm)) {
		var iCount = oE.length;
		for (var i=iCount-1; i>-1; i--) {
			oE.options[i] = null;
		}
	}
}

function selectbox_deleteOption(mElement, mForm, iOpt)
{
	if (oE=isOptionbox(mElement, mForm)) {
		var iCount = oE.length;
		if ((-1<(iO=1*iOpt)) && (iO<iCount)) {
			for (var i=iO; i<(iCount-1); i++) {
				var j = 1*i + 1;
				oE.options[i].value = oE.options[j].value;
				oE.options[i].text  = oE.options[j].text;
			}
			oE.options[iCount*1-1] = null;
		}
	}
}


function selectbox_transferOption(mElement1, mForm1, mElement2, mForm2, bDispose, sOrder)
{
	if ((oF1=isForm(mForm1)) && (oF2=isForm(mForm2))) {
		if ((oE1=isOptionbox(mElement1, oF1)) && (oE2=isOptionbox(mElement2, oF2)) && (-1<(iSel=oE1.selectedIndex))) {
			var oSel = oE1.options[iSel];
			var bExists = false;
			for (var i=0; i<oE2.options.length; i++) {
				if (oE2.options[i].value == oSel.value)
					bExists = true;
			}
			if (!bExists) {
				selectbox_insertOption(oE2, oF2, oSel.value, oSel.text)
				if (bDispose)
					selectbox_deleteOption(oE1, oF1, iSel);
			}

			if (sOrder) {
				aOrder = sOrder.split("|");
				var tmpOpt = oE2.options;
				var pos = 0;
				var aInsert = new Array();

				for (var i=0; i<aOrder.length; i++) {
					for (var j=0; j<tmpOpt.length; j++) {
						if (tmpOpt[j].value == aOrder[i]) {
							aInsert[pos] = new Array(aOrder[i], tmpOpt[j].text);
							pos++;
						}
					}
				}
				for (var i=0; i<aInsert.length; i++) {
					oE2.options[i].value = aInsert[i][0];
					oE2.options[i].text  = aInsert[i][1];
				}
			}
		}
	}
}





function number_format( number,  laenge, sep, th_sep )
{
	var pre = "";
	if(number < 0){
		pre = "-";
		number *= (-1)
	}
	number = Math.round( number * Math.pow(10, laenge) ) / Math.pow(10, laenge);
	str_number = number+"";
	arr_int = str_number.split(".");
	if(!arr_int[0]) arr_int[0] = "0";
	if(!arr_int[1]) arr_int[1] = "";
	if(arr_int[1].length < laenge){
		nachkomma = arr_int[1];
		for(i=arr_int[1].length+1; i <= laenge; i++){	nachkomma += "0";	}
		arr_int[1] = nachkomma;
	}
	if(th_sep != "" && arr_int[0].length > 3){
		Begriff = arr_int[0];
		arr_int[0] = "";
		for(j = 3; j < Begriff.length ; j+=3){
			Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
			arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
		}
		str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
		arr_int[0] = str_first + arr_int[0];
	}
	return pre + arr_int[0] + (arr_int[1]? sep + arr_int[1] : "");
}

function formatEuro(mElement, mForm)
{
	if (oE=isText(mElement, mForm)) {
		oE.value = string2euro(oE.value);
	}
}

function str_replace(sFrom, sTo, sText)
{
	var sFrom = '' + sFrom;
	var sTo   = '' + sTo;
	var s     = '' + sText;
	var iLength = sFrom.length;
	while (s.indexOf(sFrom) > -1) {
		s = s.substring(0, s.indexOf(sFrom)) + sTo + s.substring(s.indexOf(sFrom)+iLength, s.length);
	}
	return s;
}

function str_dispose(sText, sToDispose)
{
	sText      = '' + sText;
	sToDispose = '' + sToDispose;
	if (sText.indexOf(sToDispose) != -1) {
		var iLength = sToDispose.length;
		while (sText.indexOf(sToDispose) > -1) {
			sText = sText.substring(0, sText.indexOf(sToDispose)) + sText.substring(sText.indexOf(sToDispose)+iLength, sText.length);
		}
	}
	return sText;
}

function implode(sSeperator, aData, bIsForm, bText)
{
	var sText = '';
	for (var i=0; i<aData.length; i++) {
		if (bIsForm) {
			sText += (sText? sSeperator : '') + (bText? aData[i].text : aData[i].value);
		} else {
			sText += (sText? sSeperator : '') + aData[i];
		}
	}
	return sText;
}
function string2number(sEuro)
{
	return (isNaN(sN=str_replace(',', '.', str_dispose(''+sEuro, '.'))))? 0 : 1*sN;
}

function string2euro(sNumber)
{
	return (isNaN(sN=str_replace(',', '.', str_dispose(''+sNumber, '.'))))? '' : number_format(sN, 2, ',', '.');
}


function input2euro(sNumber, dec)
{
	return (isNaN(sN=str_replace(',', '.', str_dispose(''+sNumber, '.'))))? '' : number_format(sN, dec, ',', '.');
}


function setRadio(mElement, mForm, iP)
{
	var sResult = -1;
	if (oF=isForm(mForm)) {
		if (oE=isElement(mElement, oF)) {
			if (typeof(oE.length) != 'undefined') {
				oE[iP].checked = true;
			} else {
				oE.checked = true;
			}
		}
	}
}

