<!--
/**
  * Funktionen zur numerischen Textbox
  * 09.10.08
  * Axel Oswald
*/
var NumTBCodeDecimal = 44;
var NumTBCodeMinus = 45;
var NumTBAllowedChar = new Array();

function NumTBKeyPressed(input,komma,e)
{
    var tmpDecimal = NumTBCodeDecimal;
    var tmpMinus = NumTBCodeMinus;
    if (komma == 0) // keine Nachkommastellen
        tmpDecimal = -1;
    else if (input.value.indexOf(String.fromCharCode(NumTBCodeDecimal)) >= 0) // es darf nur ein Komma eingegeben werden
        tmpDecimal = -1;
    if (GetCursorPos(input) > 0) // das Minus-Zeichen darf nur als 1. eingegeben werden (aber kein Komma)
        tmpMinus = -1;
    else
    {
        tmpDecimal = -1
        if (gebiNumTB(input.id + "_min").value.length > 0) // es gibt ein MinValue
        {
            var tmpMin = Number(gebiNumTB(input.id + "_min").value);
            if (tmpMin >= 0) // MinValue >= 0, also kein Minus
                tmpMinus = -1;
        }
    }
	NumTBAllowedChar = Array(tmpDecimal, tmpMinus, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57);
	//NumTBAllowedChar: 44="komma", 45="minus", 48-57="null-neun"

	var CharOK = false;
	if (e.charCode == 0) //d.h. Navigationstaste unter Netscape, dann OK
		return true;
    if (e.altKey || e.ctrlKey) //d.h. Alt- oder Strg.-Taste unter Netscape, dann OK
        return true;
	// gedrücktes Zeichen einlesen (verschiedene Browser benutzen verschiedene Befehle)
	var curChar = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which;
	if (curChar > 255) //d.h. Navigationstaste unter Opera, dann OK
		return true;
	if (curChar) 
		for (var i in NumTBAllowedChar) 
			if (NumTBAllowedChar[i] == curChar) 
				CharOK = true;
	return CharOK;
}

function GetCursorPos(input)
{
    var CursorPos = 0;
    if (document.selection) // für IE
    { 
        input.focus();
        var tmpSel = document.selection.createRange(); // Umweg über temp. Selektion liefert Ergebnis
        tmpSel.moveStart('character',-input.value.length);
        CursorPos = tmpSel.text.length;
    }
    else if (input.selectionStart || input.selectionStart == '0') // für FF
    {
        CursorPos = input.selectionStart;
    }
    return (CursorPos);
}

function SetCursorPos(input,pos)
{
    if (document.selection) // für IE
    { 
        input.focus ();
        var tmpSel = document.selection.createRange();
        tmpSel.moveStart('character', -input.value.length);
        tmpSel.moveStart('character', pos);
        tmpSel.moveEnd('character', 0);
        tmpSel.select();
    }
    else if (input.selectionStart || input.selectionStart == '0') // für FF
    {
        input.selectionStart = pos;
        input.selectionEnd = pos;
        input.focus ();
    }
}

function NumTBUpDown(input,komma,nullable,e)
{
    switch(e.keyCode)
    {
        case 38: // hoch gedrückt --> 1 addieren
            AddNumTB(input,komma,nullable,1);
            break;
        case 40: // runter gedrückt --> 1 subtrahieren
            AddNumTB(input,komma,nullable,-1);
            break;
        default:
            break;
    }
}

function AddNumTB(input,komma,nullable,add)
{
    if (input.value.length <= 0)
        input.value = "0";
    var tmpNum = Number(input.value.replace(String.fromCharCode(NumTBCodeDecimal),"."));
    if (!isNaN(tmpNum))
    {
        tmpNum += add;
        input.value = String(tmpNum).replace(".",String.fromCharCode(NumTBCodeDecimal));
        CheckNumTB(input,nullable);
        FormatNumTB(input,komma,nullable);
        if (komma > 0)
            SetCursorPos(input,input.value.length - komma - 1);
    }
}

function FormatNumTB(input,komma,nullable)
{
    var tmpSign = "";
    if (input.value.length <= 0 && !nullable)
        input.value = "0";
    if (input.value.length > 0)
    {
        var tmpNum = Number(input.value.replace(String.fromCharCode(NumTBCodeDecimal),"."));
        if (isNaN(tmpNum))
            tmpNum = 0;
        else if (String(tmpNum).toLowerCase().indexOf("e") >= 0)
            tmpNum = 0;
        if (komma >= 0)
            tmpNum = Math.round(tmpNum * Math.pow(10,komma));
        else
            tmpNum = Math.round(tmpNum * Math.pow(10,Math.abs(komma))) / Math.pow(10,Math.abs(komma));
        if (tmpNum < 0)
        {
            tmpSign = "-";
            tmpNum = -tmpNum;
        }
        tmpStr = String(tmpNum);
        while (tmpStr.length <= komma)
            tmpStr = "0" + tmpStr;
        if (komma > 0)
            tmpStr = tmpStr.substring(0,tmpStr.length - komma) + String.fromCharCode(NumTBCodeDecimal) + tmpStr.substr(tmpStr.length - komma);
        input.value = tmpSign + tmpStr.replace(".",String.fromCharCode(NumTBCodeDecimal));
        gebiNumTB(input.id + "_hidden").value = input.value;
    }
}

function CheckNumTB(input,nullable)
{
    if (input.value.length <= 0 && !nullable)
        input.value = "0";
    if (input.value.length <= 0)
        gebiNumTB(input.id + "_hidden").value = input.value;
    else if (input.value != "-")
    {
        var tmpNum = Number(input.value.replace(String.fromCharCode(NumTBCodeDecimal),"."));
        if (isNaN(tmpNum))
        {
            var newPos = GetCursorPos(input) - input.value.length;
            input.value = gebiNumTB(input.id + "_hidden").value;
            newPos += input.value.length;
            SetCursorPos(input,newPos);
        }
        else
        {
            if (gebiNumTB(input.id + "_min").value.length > 0)
                {
                var tmpMin = Number(gebiNumTB(input.id + "_min").value);
                if (tmpNum < tmpMin)
                    input.value = tmpMin;
                }
            if (gebiNumTB(input.id + "_max").value.length > 0)
                {
                var tmpMax = Number(gebiNumTB(input.id + "_max").value);
                if (tmpNum > tmpMax)
                    input.value = tmpMax;
                }
            gebiNumTB(input.id + "_hidden").value = input.value;
        }
    }
}

function SetHiddenNumTB(input)
{
    gebiNumTB(input.id + "_hidden").value = input.value;
}

function gebiNumTB(id)
{
    if (document.getElementById)
	    return document.getElementById(id);
    else
	    return document.all[id];
}
//-->
