/* (C) VIOSYS AG                                                          */
/* Umwandeln eines Preis-Strings in einen Centbetrag.                     */
/* Tausenderpunkte und Dezimaltrennzeichen (Komma) werden entfernt.       */

function floatkonvert( wert, vmmwst )
{
	s = new String( wert );
	// wenn vmmwst gesetzt, dann den Punkt durch Komma ersetzen
	if ( vmmwst == true ) {
		while ( s.indexOf( '.' ) >= 0 ) {
			s = s.substring( 0, s.indexOf( '.' ) ) + "," + s.substring( s.indexOf( '.' )+1, s.length );
		}
	} else {
		// zuerst alle Tausenderpunkte löschen
		i = s.indexOf( '.' );
		while ( i >= 0 )
		{
			s = s.substring( 0, i ) + s.substring( i+1, s.length );
			i = s.indexOf( '.' );
		}
	}
	// Komma entfernen
	i = s.indexOf( ',' );
	if ( i >= 0 )
	{
		var n = s.length - i - 1;
		if ( n >= 2 )
		{
			s = s.substring( 0, i ) + s.substring( i+1, i+3 );
		}
		else
		{
			s = s.substring( 0, i ) + s.substring( i+1, s.length );
			for ( j = 0; j < 2 - n; j++ ) s = s + "0";
		}
	}
	else
	{
		s = s + "00";
	}
	// alle führenden Nullen entfernen
	while ( s.length > 1 && s.charAt( 0 ) == "0" )
	{
		s = s.substring( 1, s.length );
	}

	// Sind nur Ziffern enthalten?
	if ( isFinite(s) )
	{
		return s;	// s ist innerhalb des verarbeitaren Zahlenbereichs
	}
	else			
	{
		return "0";	// sonst: Zahl ist zu groß oder Wert enthält Buchstaben
	}
}

// Ausgabe eines Preises (Floatwertes) in Cent mit 2 Nachkommastellen und Tausenderpunkten.
function floatoutput( wert )
{
	var s = new String( wert );
	
	
	// negativer Wert ?
	var minusz = 0;	
	if ( s.substring( 0, 1 ) == "-" ) 
	{
		minusz = 1;
		s = s.substring( 1, s.length );
	}

	
	// ist ein Punkt enthalten (Floatwert mit Nachkommastellen)
	var i = s.indexOf( '.' );	
	if ( i >= 0 )
	{
		// Rundung: erste Nachkommastelle merken
		var r = parseInt( s.substring( i+1, i+2 ), 10 );
		// alle Nachkommastellen entfernen
		s = s.substring( 0, i );
		// Rundung erforderlich ?  (0..4 -> abrunden, 5..9 -> aufrunden)
		if ( r >= 5 ) s = String( parseInt( s, 10 ) + 1 );
	}


	// falls der Betrag < 100 Cent ist, werden führende Nullen eingefügt
	if ( s.length == 0 ) s = "000"; 
	if ( s.length == 1 ) s = "00" + s; 
	if ( s.length == 2 ) s = "0" + s; 

	// Dezimaltrennung = Komma
	s = s.substring( 0, s.length - 2 ) + "," + s.substring( s.length - 2, s.length );


	// Tausenderpunkte einfügen
	// --> Position des Kommas suchen
	var j = s.indexOf( ',' );
	while ( j >= 4 )
	{
		j = j - 3;
		s = s.substring( 0, j ) + "." + s.substring( j, s.length );
	}
	
	if ( minusz == 1 )
	{
		s = "-" + s;
	}


	return s;
}

// Mehrwertsteuerbetrag aus Nettowert berechnen
function calcMwSt( netto, mwst, vmmwst, output )
{
	var w = parseInt( floatkonvert( netto, false ), 10 );
	var m = parseInt( floatkonvert( mwst, vmmwst  ), 10 );
	w = w * m / 10000;		
	if ( output == "kdvalue" )
     {
          return floatoutput( w );
     }
     else
     {
          return document.write( floatoutput( w ) );
     }
}

// Mehrwertsteuerbetrag aus Bruttowert berechnen
function calcBruttoMwSt( brutto, mwst, vmmwst, output )
{
	var w = parseInt( floatkonvert( brutto, false ), 10 );
	var m = parseInt( floatkonvert( mwst, vmmwst  ), 10 );
	w = w - w / (1+m/10000);		
	if ( output == "kdvalue" )
     {
          return floatoutput( w );
     }
     else
     {
          return document.write( floatoutput( w ) );
     }
}

// Bruttobetrag berechnen
function calcBrutto( netto, mwst, vmmwst, output )
{
	var m = parseInt( floatkonvert( mwst, vmmwst  ), 10 ) + 10000;
	var n = parseInt( floatkonvert( netto, false ), 10 );
	var b = n * m / 10000;
	if ( output == "kdvalue" )
     {
          return floatoutput( b );
     }
     else
     {
          return document.write( floatoutput( b ) );
     }
}

function getValueInt( formobject )
{
	if ( formobject && formobject.value.length > 0 )
	{
		var wert = parseInt( formobject.value, 10 );
		if ( isNaN( wert ) == false ) return wert;
	}
	return 0;
}


function checkValueInt( formobject )
{
	if ( formobject )
	{
		formobject.value = getValueInt( formobject );
	}
}

function setValueCurrency( formobject, wert )
{
	if ( formobject )
	{
		formobject.value = floatoutput( wert );
	}
}

function checkValueCurrency( formobject )
{
	if ( formobject )
	{
		formobject.value = floatoutput( floatkonvert( formobject.value, false ) );
	}
}


function getValueCurrency( formobject )
{
	if ( formobject )
	{
		return floatkonvert( formobject.value, false );
	}
	return 0;
}


function checkValueIntFract1( formobject )
{
	if ( formobject )
	{
		var wert = parseInt( floatkonvert( formobject.value, false ), 10 );
		wert = parseInt( (wert+5)/10, 10 );

		s = new String( wert );

		// falls der Wert < 10 Cent ist, werden führende Nullen eingefügt
		while ( s.length < 2 ) s = "0" + s;

		// Dezimaltrennung = Komma
		s = s.substring( 0, s.length - 1 ) + "," + s.substring( s.length - 1, s.length );

		formobject.value = s;	
	}
}


function getValueDate( formobject )
{
	if ( formobject && formobject.value && formobject.value.length > 0 )
	{
		var text = formobject.value;
		
		var p1 = text.indexOf( "." );
		if ( p1 > 0 )
		{
			var text_tag = text.substr( 0, p1 );
			var text_rest = text.substr( p1+1 );

			var p2 = text_rest.indexOf( "." );
			if ( p2 > 0 )	// Es wurden Tag, Monat und Jahr
			{		
				var text_monat = text_rest.substr( 0, p2 );
				var text_jahr = text_rest.substr( p2+1 );
			}
			else	// Es wurden nur Monat und Jahr eingegeben
			{
				var text_monat = text_tag;
				var text_jahr = text_rest;
			}

			// Wandlung der Werte in Zahlen
			var tag = parseInt( text_tag, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var monat = parseInt( text_monat, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var jahr = parseInt( text_jahr, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")

			// Prüfung der Gültigkeit
			if ( isNaN(tag) == false && tag >= 1 && tag <= 31 && isNaN(monat) == false && monat >= 1 && monat <= 12 && isNaN(jahr) == false && jahr > 0 )
			{
				// wurde das Jahr 4-stellig eingegeben?
				if ( jahr < 100 )
				{
					if ( jahr < 10 ) jahr += 2000; else jahr += 1900;
				}

				// manche Monate haben 30, andere 31 Tage
				if ( tag < 31 || monat == 1 || monat == 3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12 )
				{
					// Prüfung auf Schaltjahr
					if ( monat != 2 || tag <= 28 || (tag == 29 && jahr%4 == 0 && (jahr%400 == 0 || jahr%100 != 0)))
					{
						return tag + "." + monat + "." + jahr;
					}
				}
			}
		}
	}
	return "TT.MM.JJJJ";
}

function getValueTime( formobject )
{
	if ( formobject && formobject.value && formobject.value.length > 0 )
	{
		var text = formobject.value;
		
		var p1 = text.indexOf( ":" );
		if ( p1 > 0 )
		{
			var text_stunde = text.substr( 0, p1 );
			var text_minute = text.substr( p1+1 );

			// Wandlung der Werte in Zahlen
			var stunde = parseInt( text_stunde, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var minute = parseInt( text_minute, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
		}
		else
		{
			// Wandlung der Werte in Zahlen
			var stunde = parseInt( text, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var minute = 0;	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
		}

		// Prüfung der Gültigkeit
		if ( isNaN(stunde) == false && stunde >= 0 && stunde <= 23 && isNaN(minute) == false && minute >= 0 && minute <= 59 )
		{
			var minute_text = "";
			if ( minute < 10 )
			{
				minute_text = "0" + minute;
			}
			else
			{
				minute_text = minute;
			}
			return stunde + ":" + minute_text;
		}
	}
	return "H:MM";
}

function getValueTimeInt( text )
{
	if ( text.length > 0 )
	{
		
		var p1 = text.indexOf( ":" );
		if ( p1 > 0 )
		{
			var text_stunde = text.substr( 0, p1 );
			var text_minute = text.substr( p1+1 );

			// Wandlung der Werte in Zahlen
			var stunde = parseInt( text_stunde, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var minute = parseInt( text_minute, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
		}
		else
		{
			// Wandlung der Werte in Zahlen
			var stunde = parseInt( text, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var minute = 0;	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
		}

		// Prüfung der Gültigkeit
		if ( isNaN(stunde) == false && stunde >= 0 && isNaN(minute) == false && minute >= 0 && minute <= 59 )
		{
			return stunde * 60  + minute;
		}
	}
	return 0;
}

function getValueDateSQL( text )
{
	if ( text.length > 0 )
	{
		var p1 = text.indexOf( "." );
		if ( p1 > 0 )
		{
			var text_tag = text.substr( 0, p1 );
			var text_rest = text.substr( p1+1 );

			var p2 = text_rest.indexOf( "." );
			if ( p2 > 0 )	// Es wurden Tag, Monat und Jahr
			{		
				var text_monat = text_rest.substr( 0, p2 );
				var text_jahr = text_rest.substr( p2+1 );
			}
			else	// Es wurden nur Monat und Jahr eingegeben
			{
				var text_monat = text_tag;
				var text_jahr = text_rest;
			}

			// Wandlung der Werte in Zahlen
			var tag = parseInt( text_tag, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var monat = parseInt( text_monat, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var jahr = parseInt( text_jahr, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")

			// Prüfung der Gültigkeit
			if ( isNaN(tag) == false && tag >= 1 && tag <= 31 && isNaN(monat) == false && monat >= 1 && monat <= 12 && isNaN(jahr) == false && jahr > 0 )
			{
				// wurde das Jahr 4-stellig eingegeben?
				if ( jahr < 100 )
				{
					if ( jahr < 10 ) jahr += 2000; else jahr += 1900;
				}

				// manche Monate haben 30, andere 31 Tage
				if ( tag < 31 || monat == 1 || monat == 3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12 )
				{
					// Prüfung auf Schaltjahr
					if ( monat != 2 || tag <= 28 || (tag == 29 && jahr%4 == 0 && (jahr%400 == 0 || jahr%100 != 0)))
					{
						return jahr + "-" + monat + "-" + tag;
					}
				}
			}
		}
	}
	return "";
}

function getValueDateInt( text )
{
	if ( text.length > 0 )
	{
	
		var p1 = text.indexOf( "." );
		if ( p1 > 0 )
		{
			var text_tag = text.substr( 0, p1 );
			var text_rest = text.substr( p1+1 );

			var p2 = text_rest.indexOf( "." );
			if ( p2 > 0 )	// Es wurden Tag, Monat und Jahr
			{		
				var text_monat = text_rest.substr( 0, p2 );
				var text_jahr = text_rest.substr( p2+1 );
			}
			else	// Es wurden nur Monat und Jahr eingegeben
			{
				var text_monat = text_tag;
				var text_jahr = text_rest;
			}

			// Wandlung der Werte in Zahlen
			var tag = parseInt( text_tag, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var monat = parseInt( text_monat, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")
			var jahr = parseInt( text_jahr, 10 );	// Basis 10 muss angegeben werden, damit bei führender 0 keine Oktalzahlen vermutet werden (-> Problem bei "08" und "09")

			// Prüfung der Gültigkeit
			if ( isNaN(tag) == false && tag >= 1 && tag <= 31 && isNaN(monat) == false && monat >= 1 && monat <= 12 && isNaN(jahr) == false && jahr > 0 )
			{
				// wurde das Jahr 4-stellig eingegeben?
				if ( jahr < 100 )
				{
					if ( jahr < 10 ) jahr += 2000; else jahr += 1900;
				}

				// manche Monate haben 30, andere 31 Tage
				if ( tag < 31 || monat == 1 || monat == 3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12 )
				{
					// Prüfung auf Schaltjahr
					if ( monat != 2 || tag <= 28 || (tag == 29 && jahr%4 == 0 && (jahr%400 == 0 || jahr%100 != 0)))
					{
						return (jahr * 12 + monat) * 31 + tag;
					}
				}
			}
		}
	}
	return 0;
}


function checkValueDate( formobject )
{
	if ( formobject )
	{
		formobject.value = getValueDate( formobject );
	}
}

function checkValueTime( formobject )
{
	if ( formobject )
	{
		formobject.value = getValueTime( formobject );
	}
}


function getRadioValue( formobject )
{
	if ( formobject )
	{
		for ( var i=0; i < formobject.length; i++ )
		{	
			if ( formobject[i].checked == true )
			{
				return formobject[i].value;
			}
		}
	}
	return '';
}

function checkEmail( formobject, errortext )
{
	if ( formobject )
	{
		var text = formobject.value;
		var laenge = text.length;
		if ( laenge > 0 )
		{
			var error = 0;

			var punkt = text.lastIndexOf( "." );
			var at = text.lastIndexOf( "@" );

			// Punkt und @-Zeichen müssen vorhanden sein
			if ( punkt < 0 ) error = 1;
			if ( at < 0 ) error = 1;
			// der letzte Punkt muss nach dem @-Zeichen stehen
			if ( punkt >= 0 && at >= 0 && punkt < at ) error = 1;
			// nach dem letzten Punkt müssen noch mind. 2 Zeichen folgen
			if ( laenge - punkt - 1 < 2 ) error = 1;
			// vor dem @-Zeichen muessen mind. 2 Zeichen stehen
			if ( at < 2 ) error = 1;
			// zwischen Punkt und @-Zeichen muessen mind. 3 Zeichen stehen
			if ( punkt - at -1 < 3 ) error = 1;

			// es darf kein Leerzeichen enthalten sein
			for ( var i=0; i < laenge; i++ )
			{
				if ( text.charAt(i) == ' ' ) error = 1;
			}	

			if ( error == 1 )
			{
				if ( errortext && errortext.length > 0 )
				{
					alert( errortext );
				}
				return false;
			}
		}
	}
	return true;
}


// FJ, 28.03.2006
// die Buttons sollen nach Klick sofort disabled werden


var button = "";
var button_bgcolor = "";
var button_color = "";
var button_bgimage = "";
var lasttime = 0;

function ButtonEnable()
{
	var jetzt = new Date();
	if ( jetzt.getTime() - lasttime < 1500 )
	{
		lasttime = jetzt.getTime();
		setTimeout( "ButtonEnable();", 1000 );
	}
	else
	{

		if ( button )
		{
			button.disabled = false;
			button.style.backgroundColor = button_bgcolor;
			button.style.color = button_color;
			button.style.backgroundImage = button_bgimage;
		}
	}
}

function ButtonDisable( object )
{
	button = object;
	if ( button )
	{
		button.disabled = true;

		button_bgimage = object.style.backgroundImage;
		button_bgcolor = object.style.backgroundColor;
		button_color = object.style.color;
		button.style.backgroundImage = 'none';
		button.style.backgroundColor = '#dddddd';
		button.style.color = '#aaaaaa';

		var jetzt = new Date();
		lasttime = jetzt.getTime();
		setTimeout( "ButtonEnable();", 1000 );
	}
}



