/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsOnError
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : err_msg = Auszugebende Nachricht.
*** Returnwert: False
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion oeffnet eine Dialogbox mit der als 
***               Parameter uebergebeneden Nachricht.
*** Created by  : 05.03.1999 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsOnError(err_msg)
{
	alert(err_msg);
   return false;	
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsGetParamValue
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : pUrl   = Location, z.B. "self.window.location.search"
***             pParam = Name des Parameters
*** Returnwert: Value von pParam bei Erfolg, andernfalls Null.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob dem angegebenen URL-String
*** 					der uebergebenen Parameter vorkommt, und liefert 
***               dessen Wert zurueck. Existiert der Parameter pParam 
*** 					nicht, wird ein Null-String zurueckgeliefert.
*** Created by  : 17.04.2000 Lukas Fof
*** Updated by  : 24.06.2000 Clemens Kolbenschlag
***********************************************************************/
function jsGetParamValue(pUrl,pParam)
{
	var sValue = "";
	var nLength = pParam.length;
	var nIndex = pUrl.indexOf(pParam+"=");
	if( nIndex != -1 )
	{
		if( (pUrl.indexOf("&")) == -1 )
		{
			sValue=pUrl.substr(nIndex+nLength+1,pUrl.length);
			return sValue;
		}	
		else
		{
			var sTmp = "";
			var sToken = pUrl.split("&");
			for( i = 0; i < sToken.length; i++ )
			{
				sTmp = sToken[i];
				nIndex=sTmp.indexOf(pParam+"=");
				if( nIndex != -1 )
				{
					sValue=sTmp.substr(nIndex+nLength+1,sTmp.length);
					return sValue;
				}
			}
		}
	}
	return sValue;
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsNullFilter
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : filterstring = String der gefiltert werden soll.
*** Returnwert: Leerer String wenn Funktion zum Einsatz kommt, 
***             andernfalls unveraenderter Parameterwert.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob der uebergebene String einen 
*** 					undefinierten oder null-Wert enhaelt und liefert dann
***               einen leeren String zurueck. Andernfalls bleibt der 
*** 					Inhalt des Strings unberuehrt.
*** Created by  : 20.02.2000 Clemens Kolbenschlag
*** Updated by  :
***********************************************************************/
function jsNullFilter( filterstring )
{
	if( filterstring == null || filterstring == "undefined" || filterstring == 0 )
		filterstring = "";
   return filterstring;	
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsChangeFormat
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : pNumber = Wert
*** Returnwert: Der konvertierte Wert bei Erfolg, andernfalls NaN.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion ersetzt das Dezimalkomma in den Dezimal-
*** 					punkt und entfernt fuehrende Blanks. Die Zahl bleibt 
***               unveraendert, wenn das Dezimalzeichen bereits ein 
*** 					Punkt ist oder es sich bei dem Parameter um eine 
***               Ganzzahl handelt. Ist der Parameter allerdings keine 
***               Zahl, so liefert die Funktion "NaN" (Not a Number) 
***               zurueck.
*** Created by  : 14.05.1999 Clemens Kolbenschlag
*** Updated by  : 26.06.2000 Clemens Kolbenschlag
***********************************************************************/
function jsChangeFormat( pNumber )
{
	var n = "";
	var nRet = 0;
	
	if( pNumber.length <= 0 )
		return nRet;
		
	for( i = 0; i < pNumber.length; i++ )
	{
		if( pNumber.charAt(i) == "," )
			n = n + ".";
		else if( pNumber.charAt(i) == " " )
			n = n;
		else
			n = n + pNumber.charAt(i);
	}

	if( !jsIsFloat(n) )
		return ("NaN");

	nRet = parseFloat( n );
	return nRet;
}

// -----------------------------------------------------------------------
// Copyright   : Media Solutions GmbH
//	Function 	: fmtNum2Str(fNum,cOption)
//	Parameter	: pNumber : float
//					  cOption : String	
//					  		$ 						: US - Format (.)
//							kein $				: DE - Format (,)
//							^ 						: Tausenderpunkte
//							.Nachkommastellen : z.B.:  .2		(Auf/Abrunden)				
//	Return		: fResult : formatierter float 
//	Author		: Lfof
//	Date			: 13.06.00
// -----------------------------------------------------------------------	
function fmtNum2Str(pNumber,cOption)
{
	var sNumber = "";			// Number als String
	var fResult = "";			// Ergebnis-String

	// -----------------------------------------------------------------------		
	// Optionen auswerten...
	// -----------------------------------------------------------------------
	var sCountry = ""; 				// Laenderkennzeichen
	var sDSign = ""; 					// Dezimal-Zeichen
	var sTSign = ""; 					// Tausender-Zeichen
	var nDDigit = -1; 				// Dezimal-Stellen
	var cDigits = "0123456789";	// Erlaubte Zahlen
	
	for( i=0; i < cOption.length; i++ )
	{
		if( cOption.charAt(i) == "$" ) 
			sCountry = "$";
		else if( cOption.charAt(i) == "^" ) 
			sTSign = "^";
		else if( cOption.charAt(i) == "." ) 
		{
			sDSign = ".";
			if( i < (cOption.length-1) )
				if( cDigits.indexOf(cOption.charAt(i+1)) >= 0 )
					nDDigit = parseInt(cOption.charAt(i+1));
		}
	}

	if( sCountry == "$" )
	{
		if( sDSign == "." )
			sDSign = ".";
		if( sTSign == "^" )
			sTSign = ",";
	}	
	else
	{
		if( sDSign == "." )
			sDSign = ",";
		if( sTSign == "^" )
			sTSign = ".";
	}	

	// -----------------------------------------------------------------------
	// Parameter konvertieren...
	// -----------------------------------------------------------------------
	if( pNumber == "" )
		pNumber = 0;
	sNumber = "" + pNumber;

	// -----------------------------------------------------------------------
	// Parameter pruefen...
	// -----------------------------------------------------------------------
	if( !jsIsFloat(sNumber) )
		return ("NaN");
	
	// -----------------------------------------------------------------------
	// Vorzeichen ermitteln...
	// -----------------------------------------------------------------------
	var sPlusMinus = ""; 	// Vorzeichen

	if( sNumber.charAt(0) == "-" || sNumber.charAt(0) == "+" )
	{
		sPlusMinus = sNumber.charAt(0);
		sNumber = sNumber.substring( 1, sNumber.length );
	}

	// -----------------------------------------------------------------------	
	// Dezimalstellen setzen...
	// -----------------------------------------------------------------------
	if( nDDigit > 0 )
	{
		// Auf 'nDDigit' Dezimalstellen runden.
		for( i=1, j=1; i <= nDDigit; i++ )
				j = j * 10;
		sNumber = "" + Math.round(j * sNumber);
		if( nDDigit == sNumber.length )
			fResult = "0"+sDSign+""+ sNumber.substring(sNumber.length-nDDigit);
		else
			fResult = sNumber.substring(0,sNumber.length-nDDigit) +""+sDSign+""+ sNumber.substring(sNumber.length-nDDigit);
	}
	else if( nDDigit == 0 )
	{
		// Auf Null Dezimalstellen runden.
		sNumber = "" + Math.round(1 * sNumber);
		fResult = sNumber;
	}
	else
	{
		// Anzahl der Dezimalstellen unbekannt.
		if( sNumber.indexOf(".") < 0 )
		{
			nDDigit = 0;
			fResult = sNumber;
		}
		else
		{
			nDDigit = sNumber.length - sNumber.indexOf(".") - 1;
			// Check ob die Option 'Dezimalpunkt' nicht doch automatisch gesetzt werden sollte, 
			// falls die Option bisher noch nicht gesetzt war.
			if( sDSign == "" && nDDigit > 0 && sCountry == "$" )
				sDSign = ".";
			else if( sDSign == "" && nDDigit > 0 && sCountry == "" )
				sDSign = ",";
			fResult = sNumber.substring(0,sNumber.length-nDDigit-1) +""+sDSign+""+ sNumber.substring(sNumber.length-nDDigit);
		}
	}

	// -----------------------------------------------------------------------	
	// Tausenderpunkte setzen...	
	// -----------------------------------------------------------------------	
	if( sTSign != "")
	{
		var nNachkommastellen = 0;
		if( nDDigit > 0 )
			nNachkommastellen = (1 + nDDigit);

		var nRest = (fResult.length-nNachkommastellen)%3;				
		var nTPunkte = (fResult.length-nNachkommastellen-nRest)/3;
		
		if( nRest == 0 )
			nTPunkte--; 

		var TSigns = 0;	// Anzahl der bereits gesetzten Tausender-Zeichen.
		for( i=1; i <= nTPunkte; i++ )
		{
			if( nDDigit > 0 )
				fResult = fResult.substring(0,fResult.indexOf(sDSign)-(i*3+TSigns)) + ""+sTSign+"" + fResult.substring(fResult.indexOf(sDSign)-(i*3+TSigns));
			else
				fResult = fResult.substring(0,fResult.length-(i*3+TSigns)) + ""+sTSign+"" + fResult.substring(fResult.length-(i*3+TSigns));
			TSigns++;
		}
	}

	// -----------------------------------------------------------------------	
	// Vorzeichen wieder einsetzen nicht vergessen.
	// -----------------------------------------------------------------------	
	if( sPlusMinus == "-" && fResult != 0 )
		fResult = "" + sPlusMinus + fResult;

	// -----------------------------------------------------------------------	
	// Debugging...
	// -----------------------------------------------------------------------	
/*
	sDebug = "Parameter: "+pNumber+"\n";
	sDebug += "Options:\t\t"+cOption+"\n";
	sDebug += "------------------------------------\n";
	sDebug += "Countryformat: \t["+sCountry+"]\n";
	sDebug += "Vorzeichen: \t["+sPlusMinus+"]\n";
	sDebug += "Tausenderpunkt: \t["+sTSign+"]\n";
	sDebug += "Dezimalpunkt: \t["+sDSign+"]\n";
	sDebug += "Dezimalstellen: \t["+nDDigit+"]\n";
	sDebug += "------------------------------------\n";
	sDebug += "Ergebnis: "+fResult+"\n";
	alert( sDebug );
	return;
*/
	return fResult;
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsExistValue
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : obj      = Pointer auf das Objekt
***             obj_type = Type des Objektes
*** Returnwert: False, falls kein Wert eingetragen bzw. selektiert wurde.
***             Bei den Typen SELECT, RADIO und CHECKBOX wird der Index 
***             des selektierten Wertes zurueckgeliefert.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob bei dem Objekt ein Wert einge-
***               tragen bzw. selektiert wurde.
*** Created by  : 14.05.2000 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsExistValue( obj, obj_type )
{
	if ( obj_type == "TEXT" || obj_type == "PASSWORD" )
	{
		if( obj.value.length == 0 ) 
      	return false;
    	else 
      	return true;
   }
   else if (obj_type == "SELECT")
	{
   	for (i=0; i < obj.length; i++)
	   {
			if (obj.options[i].selected)
				return i;
		}
   	return false;	
	}
   else if (obj_type == "SINGLE_VALUE_RADIO" || obj_type == "SINGLE_VALUE_CHECKBOX")
	{
		if (obj.checked)
			return true;
		else
     		return false;	
	}
   else if (obj_type == "RADIO" || obj_type == "CHECKBOX")
	{
      for (i=0; i < obj.length; i++)
    	{
			if (obj[i].checked)
				return i;  //Gültig: 0 - unendlich
		}
     	return -1;	// Fehler: Nichts angeklickt
	}
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsIsFloat
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : nValue = Wert, der ueberprueft werden soll.
*** Returnwert: True, falls der Wert eine Gleitkommazahl ist.
***             False, falls keine Zahlen, fuehrende Blanks oder 
***             trennende Blanks enthalten sind.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob es sich bei dem Wert 'nValue' 
***               um eine positive oder negative Gleitkommazahl handelt. 
*** Created by  : 25.06.2000 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsIsFloat(nValue)
{
	if( nValue.length == 0 )
		return true;

	var c;
	var cFirst = " ,.+-0123456789";
	var cDigit = " ,.0123456789";

	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	// Das erste Zeichen kann ein + - . , blank oder eine Zahl sein.
	c = cFirst.indexOf(nValue.charAt(0))
   
	// War es ein Dezimalpunkt?
	if( c == 1 || c == 2 )
		decimal = true;
	else if( c < 1 )
		return false;	// Fuehrende Blanks ==> Abbruch
        
	// Verbleibende Zeichen koennen nur noch Dezimalpunkte oder Zahlen sein.
	for( i=1; i < nValue.length; i++ )
	{
		c = cDigit.indexOf(nValue.charAt(i))
		if( c < 0 )
			return false; 		// Kein erlaubter Inhalt ==> Abbruch.
		else if( c == 1 || c == 2 )
		{
			if( decimal )		
				return false;	// Zweiter Dezimalpunkt ==> Abbruch.
			else
				decimal = true;
		}
		else if( c == 0 )
		{
			if( decimal || digits )	
				trailing_blank = true;
		}
      else if( trailing_blank )
			return false;	// Zahl nach Blank ==> Abbruch.
		else
			digits = true;
	}	

   // Alle Tests erledigt, also...
   return true
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsIsInteger
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : nValue = Wert, der ueberprueft werden soll.
*** Returnwert: True, falls der Wert eine Ganzzahl ist.
***             False, falls keine Zahlen, fuehrende Blanks oder 
***             trennende Blanks enthalten sind.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob es sich bei dem Wert 'nValue' 
***               um eine positive oder negative Ganzzahl handelt. 
*** Created by  : 25.06.2000 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsIsInteger(nValue)
{
	if( nValue.length == 0 )
		return true;

	var c;
	var cFirst = " +-0123456789";
	var cDigit = " 0123456789";

	var trailing_blank = false;
	var digits = false;

	// Das erste Zeichen kann ein + - blank oder eine Zahl sein.
	c = cFirst.indexOf(nValue.charAt(0))
   
	if( c < 1 )
		return false;	// Fuehrende Blanks ==> Abbruch
        
	// Verbleibende Zeichen koennen nur noch Dezimalpunkte oder Zahlen sein.
	for( i=1; i < nValue.length; i++ )
	{
		c = cDigit.indexOf(nValue.charAt(i))
		if( c < 0 )
			return false; 		// Kein erlaubter Inhalt ==> Abbruch.
		else if( c == 0 )
		{
			if( digits )	
				trailing_blank = true;
		}
      else if( trailing_blank )
			return false;	// Zahl nach Blank ==> Abbruch.
		else
			digits = true;
	}	

   // Alle Tests erledigt, also...
   return true
}

/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsCheckRange
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : obj_value = Wert, der ueberprueft werden soll.
***             min_value = Erlaubter Minimalwert.
***             max_value = Erlaubter Maximalwert.
*** Returnwert: True, wenn der Wert innerhalb der Grenzwerte liegt.
***             False, falls der Wert kleiner oder groesser der 
***             angegebenen Grenzwerte liegt.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion prueft ob der uebergebene Wert kleiner 
***               als der Minimalwert oder groesser als der Maximalwert 
***               ist.
*** Created by  : 14.05.1999 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsCheckRange(obj_value, min_value, max_value)
{
   if( obj_value.length == 0 )
		return true;

   // Minimalwert
	if( min_value != null )
	{
  		if ( (obj_value) < (min_value) )
			return false;
	}
	// Maximalwert
  	if( max_value != null )
	{
		if( (obj_value) > (max_value) )
			return false;
	}

   // Alle Tests erledigt, also...
   return true;
}


/***********************************************************************
*** Copyright : Media Solutions GmbH, Munich
*** Funktion  : jsExtractFileName
*** Browser   : Microsoft 3.x oder Netscape 3.x
*** Version   : JavaScript 1.0 
*** --------------------------------------------------------------------
*** Parameter : sSting = Pfad- und Dateiname.
***             sPart  = Zu extrahierender Teil {FILENAME|EXTENSION}.
***             max_value = Erlaubter Maximalwert.
*** Returnwert: Bei Part FILENAME wird der Dateiname inkl. der Extension 
***             zurueckgeliefert.
***             Bei Part EXTENSION wird nur die Extension der Datei 
***             zurueckgeliefert.
*** --------------------------------------------------------------------
*** Beschreibung: Die Funktion ermittelt aus der relativen oder der 
***               absoluten Pfadangabe 'sString' ja nach Anforderung 
***               'sPart' den vollstaendigen Dateinamen oder nur die 
***               Extension des Dateinamens. 
*** Created by  : 25.06.1999 Clemens Kolbenschlag
*** Updated by  : 
***********************************************************************/
function jsExtractFileName(sString,sPart)
{
	var sExt = "";
	var sFile = "";
	var sReturn = "";
	var nTokenAnz = 0;
	var sToken = new Array();
	
	if( sString == null || sPart == null )
		return sReturn;
	
	if( sString.indexOf("\\") >= 0 )
		sToken = sString.split( "\\" ); 	// DOS-Dateisystem
	else
		sToken = sString.split( "/" );		// UNIX-Dateisystem
	
	nTokenAnz = sToken.length;	

	// Dateiname + Extension ermitteln...
	sFile = sToken[nTokenAnz-1];

	// Extension ermitteln...
	sToken = sFile.split( "." );
	nTokenAnz = sToken.length;
	if( nTokenAnz >= 2 )
		sExt = sToken[nTokenAnz-1];

	// Anforderung zurueckgeben...
	if( sPart == "FILENAME" ) 
		sReturn = sFile;
	else if( sPart == "EXTENSION" )
		sReturn = sExt;
		
	return sReturn;
}

