// Letzte Änderung:	25.07.2011
// Alle eval() Funktionen ersetzt

// Last revised: 23.10.2001
// (C)2000 und Eigentum der hk media GmbH & Co. KG (NetVertising®)
// Alle Rechte vorbehalten. 
//
// Allgemeine Funktionen
// Stringfunktionen, Datumsfunktionen, numerische Funktionen etc.
// Die Funktionen basieren auf der FoxProw-Syntax 
// In den Anwendungen werden alle Funktionen großgeschrieben!!
// ********************************************************************************
//
// 1. LOGISCHE FUNKTIONEN
//
// iif(lAusdruck,uEntweder,uOder) -> gekürztes if-else-construct
// empty(uAusdruck)				  -> ist ein Wert leer, 0 oder false
// exists(uNameVariable)		  -> existiert eine Variable?
//
// 2. DATUMSFUNKTIONEN
//
// date()						-> Ausgabe des aktuellen Systemdatum tt.mm.jjjj
// year()						-> Jahreszahl eines Datums
//
//
// 3. MATHEMATISCHE FUNKTIONEN
//
// round(nZahl)					-> einen Wert auf zwei Nachkommestellen runden
// between(nZahl,nVon,nBis)		-> liegt eine Zahl zwischengleich zwei Werten
// int(cInwert)					-> wandelt eine Characterzahl in einen Integerwert um
// val(cInWert)					-> einen String in eine Zahl umwandeln.
// multfloat()					-> Multiplikation für Floatzahlen, JS liefert z.T.
//									verheerende Fehler zurück, z.B. 209.09*9
// inttofloat()					-> Umwandlung einer Integer in eine Stringzahl mit Punkt und zwei Nachkommastellen
// floattoint()					-> Umwandlung einer Zahl in einen gezonten String mit zwei Nachkommastellen
//
// 4. STRINGFUNKTIONEN
//
// replicate(cAusdruck,nLaenge) -> wiederholt ein Zeichen/cAusdruck nLaenge-mal
// padl(cAusdruck,nLaenge,cFuellZeichen) -> füllt einen Ausdruck links um x Zeichen auf
// padr(cAusdruck,nLaenge,cFuellZeichen) -> füllt einen Ausdruck rechts um x Zeichen auf
// lower(cAusdruck)				-> umwandeln eines cAusdrucks in Kleinbuchstaben
// upper(cAusdruck)				-> umwandeln eines cAusdrucks in Großbuchstaben
// substr(cAusdruck,nStart,nLang)-> Extrahiert einen Teilstring aus einem übergebenen Ausdruck
// left(cAusdruck,nLang)		-> gibt nLang-Zeichen eines Ausdrucks von links zurück
// right(cAusdruck,nLang)		-> gibt nLang-Zeichen eines Ausdrucks von rechts zurück
// at(cSuch,cAusdruck)			-> gibt Stelle des Beginns eines in einem Ausdruck
//								   enthaltenen Suchausdrucks zurück, case-sensitive
// atc(cSuch,cAusdruck)			-> gibt Stelle des Beginns eines in einem Ausdruck
//								   enthaltenen Suchausdrucks zurück,
//								   nicht case-sensitive
// len(cAudruck)				-> Länge eines übergebenen Ausdrucks
// ltrim(cAusdruck)				-> beseitigt führende Leerzeichen
// rtrim(cAusdruck)				-> beseitigt nachfolgende Leerzeichen
// str(nNumber)					-> wandelt eine Zahl in einen String um
// strtran(cDurchsucht, cGesucht,cErsetzung) -> ersetzt ein bestimmtes Zeichen in
// 											 -> einem Zeichenausdruck durch ein anderes
// *******

// 5. EVENT-Funktionen
//
// winkey()						-> gibt Maus- und Tastendrücke zurück
// getkey()						-> verarbeitet Events
// *********
//
// 6. WÄHRUNGSFUNKTIONEN
//
// eurotodm(nInEURO)			-> berechnet DM aus EURO
// dmtoeuro(nInDM)				-> berechnet EURO aus DM
// endnull(nInWert)				-> füllt einen Betrag auf zwei Nachkommastellen auf
//
//
// 7. ARRAYFUNKTIONEN
// 	  Bemerkung: - Arrays werden in den Anwendungen ab Element 0 benutzt
// 				 - gelöschte oder leere Elemente werden als solche mit NULL initialisiert
//
// function array2DCreate(nZeilen,nSpalten)-> zweidimensionales Array definieren
// function arrayCreate(nZeilen,uWert)	-> eindimensionales Array definieren und Grundinitialisieren
// function arrayAppRec(oArray)			-> hängt eine Zeile an ein Array an
// function arrayshow(oArray)			-> zeigt ein Array in einem alert-Fenster
// function arraydelete(oArray)			-> löscht ein Array komplett
// function arrayDelRec(oArray,uIndex)	-> löscht eine Zeile in einem Array
// function arrayLength(oArray)			-> ermittelt die Länge eines Arrays
// function arraysearchvalue(oArray,uWert)	-> sucht einen Wert in einem Array, Rückgabe: Index
// function arrayPutValue(oArray,uWert,nIndex)-> schreibt einen Wert in eine Zelle
// function arraysort()					-> Sortierung eines Arrays
// function arrayCopy(cQuellname,cZielname)	-> Array kopieren
// ********************************************************************************

// Sonstige Funktionen
// function checkMailAddress(cInAddress) -> Mailadresse syntaktisch überprüfen


// ******   DATUMSFUNKTIONEN    **************

p_putbask = new Image(83,16);
p_putbask.src = "../apppics/btnmerken.gif";
p_inbask = new Image(83,16);
p_inbask.src = "../apppics/btngemerkt.gif";


function DATE()
{
var cDate = "";
var today = new Date();
var jahr = today.getYear()

if (jahr<1000)
	{
	jahr+=1900;
	}

month = today.getMonth() + 1;

cDate = today.getDate() + "." + month + "." + jahr;

return cDate;
}



//function year(cDatum)
// setzt die Funktionen RIGHT() und DATE() voraus!
// Wenn Parameter cDate nicht übergeben wird, dann wird aktuelles Tagesdatum
// als Basis herangezogen!
// Wenn es übergeben wird, dann muß es im Format tt.mm.jjjj sein
function YEAR(cDate)
{
if (cDate==null)
	{
	cDate=DATE();
	}

return RIGHT(cDate,4);

}



// function cmonth
// liefert den Monatsnamen des aktuellen oder eines übergebenen Datums
// Übergebenes Datum muß im Format tt.mm.jjjj vorliegen
// Funktion setzt SUBSTR() voraus, wenn Datum übergeben wird
function CMONTH(cDate)
{
nMonth=0;

if (cDate==null)
	{
	date = new Date();
	nMonth=date.getMonth()+1;
	}
else
	{
	nMonth = INT(SUBSTR(cDate,4,2));
	}

// wegen Abwärtskompatibilität wird hier auf switch verzichtet
if (nMonth==0)
	cRueck="ungültiges Datum"
if (nMonth==1)
	cRueck="Januar";
if (nMonth==2)
	cRueck="Februar";
if (nMonth==3)
	cRueck="März";
if (nMonth==4)
	cRueck="April";
if (nMonth==5)
	cRueck="Mai";
if (nMonth==6)
	cRueck="Juni";
if (nMonth==7)
	cRueck="Juli";
if (nMonth==8)
	cRueck="August";
if (nMonth==9)
	cRueck="September";
if (nMonth==10)
	cRueck="Oktober";
if (nMonth==11)
	cRueck="November";
if (nMonth==12)
	cRueck="Dezember";

return cRueck;

}





// MATHEMATISCHE FUNKTIONEN
// NEU AM 06.05.2000
// round() -> Problem sind die Rundungsfehler in JavaScript, daher diese Funktion!
// Diese round-Funktion rundet x Nachkommastellen einer Zahl, wird der 
// Stellenparameter nicht übergeben, wird auf zwei Stellen nach dem Komma gerundet.
//
function ROUND(ninwert,nstellen)
{
 var wert=new String(ninwert);
 var lang=wert.length;
 var pospunkt=-1;
 var rueckwert=ninwert;
 var v_komma=0;
 var n_komma=0;
 

if (nstellen==null)
	{
	nstellen=2
	}


 for (var y=0; y<=lang-1; y++)
	{
      
    	if (wert.charAt(y)==".")
	     {
		  pospunkt=y;
	      }
	 }
 
 	if (pospunkt<0)
		{
    	rueckwert=ninwert;
		}
	 else
		{

	     v_komma=wert.substring(0,pospunkt);
    	 // Nachkommastellen von hinten nach vorne abarbeiten, es werden 
		 // alle vorhandenen Nachkommastellen abgearbeitet

		n_komma    = wert.substring(pospunkt+1);
		nKommaLang = n_komma.length;
    	nNextZahl = 0;
		cZahlStr  = "";
		cDieseZahl= "";
		nVorkomma = v_komma;

		// z.B. 37.999999 auf zwei Stellen runden -> 38.00
		// es wird eine Schleife abgearbeitet, in der die Nachkommazahlen
		// eine nach der anderen extrahier, auf-oder abgerundet und ggf. die
		// nächste vorstehende Zahl um 1 erhöht wird. Bekommt die erste Stelle
		// des Nachkommawertes eine Erhöhung, dann wird die Vorkommazahl um 1 erhöht!
		 for (s=nKommaLang-1;s>-1;s--)
			{
			// jede einzelne Zahl von hinten			
			nZahl = new Number(n_komma.substring(s,s+1));
			nZahl = nZahl+nNextZahl;
			cDieseZahl = n_komma.substring(s,s+1);

			if (nZahl>=5)
				{	

				if (s<nstellen && nZahl<=9)
					{
					nNextZahl=0;
					cDieseZahl=nZahl;
					}
				else
					{
					nNextZahl = 1 ; // eins auf die nächste Zahl
					}
			
				// wenn Zahl = 10, dann muß sie durch 0 ersetzt werden und die
				if (nZahl==10 || s>nstellen)
					{
					cDieseZahl = 0;
					}

				}
			else
				{
				nNextZahl = 0;
				}
			// Nachkommastellen neu zusammenbauen			
			cZahlStr = cDieseZahl+cZahlStr;		
			}	

		// wenn die erste Zahl der Nachkommestellen ebenfalls noch auf 10
		// gerundet werden muß, dann wird die Vorkommazahl um 1 erhöht.
		if (nNextZahl == 1 && nZahl==10)
			{
			nVorKomma =new Number(v_komma);		
			nVorkomma++;

			}
			// jetzt die Nachkommastellen auf die verlangten nstellen-1 abschneiden
			n_komma = cZahlStr.substring(0,nstellen);			
	     rueckwert=nVorkomma+"."+n_komma;
    	}  

return rueckwert;
}




// function between(nZahl,nVon,nBis)
// Testet, ob eine Zahl zwischen/gleich zwei anderen Zahlen ist.
// Gibt true oder false zurück

function BETWEEN(nZahl,nVon,nBis)
{
var lRueck = false;

if (nZahl>=nVon && nZahl<=nBis)
	{
	lRueck = true;
	}

return lRueck;	

}



// function int(cInwert)
// wandelt eine Characterzahl in einen Integerwert um
// Problem: führende Nullen werden als Oktalzahl interpretiert und müssen
// daher entfernt werden.
function INT(cInwert)
{
var nRueck     = 0;
var nNullPos   = -1;
var cWert      = cInwert;	
var cReineZahl = cInwert;

nLang  = cWert.length;


for (i=0;i<nLang;i++)
	{
	
	cCharAt = cWert.charAt(i);
	
	if (cCharAt=="0" || BETWEEN(cCharAt,1,9)==false)
		{
		nNullPos = i;
		}
	else
		{
		break;
		}
	}


if (nNullPos>-1)
	{

	nNullPos=nNullPos+1;
    nRestString = nLang-nNullPos; 
	cReineZahl = RIGHT(cInwert,nRestString);
		
	}

nRueck = parseInt(cReineZahl);

//if (isNaN(nRueck)==true)
//	{
//	nRueck="keine Zahl";
//	}

return nRueck;

}



// Umwandlung einer Zahl in eine Realzahl
function VAL(cInWert)
{

cInWert = LTRIM(cInWert);
cWert = new String(cInWert);

var nWertLang = cWert.length;
var cNeueZahl ="";

for(i=0;i<nWertLang;i++)
	{
	cCharAt = cWert.charAt(i);

	
	if (cCharAt==",")	
		{
		cNeueZahl+=".";				
		}
	else
		{
		cNeueZahl+=cCharAt;
		}
	}

nWert = new Number(cNeueZahl);
return nWert;
}

// Richtige Berechnung einer Multiplikation, bei der einer oder beide Faktoren
// Fließkommazahlen mit max. 2 Nachkommastellen sind. Ersatz für JS-Multiplikation
function MULTFLOAT(nNoOne,nNoTwo)
{
nWert = 0;

nNoOne = nNoOne*1000;
nNoTwo = nNoTwo*1000;

nWert = (nNoOne*nNoTwo)/1000000;

return nWert
}


function INTTOFLOAT(nInNo)
{
cZahl=nInNo.toString();
nLang=cZahl.length;
cRueckZahl=SUBSTR(cZahl,1,nLang-2)+"."+RIGHT(cZahl,2);

return cRueckZahl;
}


function FLOATTOINT(nInNo)
{
	var cStrZahl   = nInNo.toString();
	var nLang      = cStrZahl.length;

	var nPunktPos  = ATC(".",cStrZahl);

	var nNachPunkt = nLang-nPunktPos

	var cZahl      = SUBSTR(cStrZahl,1,nPunktPos-1);
	if (nNachPunkt < 2)
	  {
	  	cZahl += SUBSTR(cStrZahl,nPunktPos+1,nNachPunkt)+"0";
	  }
	else
	  {
	  	cZahl += SUBSTR(cStrZahl,nPunktPos+1,2);
	  }

	return cZahl;
}
	
// *****************************************************************************
// STRINGFUNKTIONEN

// Function padleft()
// füllt einen String links mit Ersetzungszeichen auf
function PADL(cAusdruck,nLaenge,cFuellZeichen)
{
var cWert        = cAusdruck.toString();
var nIstLang     = cWert.length;
var nDiff        = nLaenge-nIstLang;
var cLeftFuell   ="";
var cRueck       = cAusdruck;

if (nIstLang>=nLaenge)
	{
	// dann sofort wieder zurückgeben, da nichts aufzufüllen
	return cRueck;
	}

for (i=1;i<=nDiff;i++)
	{
	cLeftFuell+= cFuellZeichen;

	}

 	cRueck = cLeftFuell+cRueck;	

	return cRueck;
}


// Function padright()
// füllt einen String links mit Ersetzungszeichen auf
function PADR(cAusdruck,nLaenge,cFuellZeichen)
{
var cWert        = cAusdruck;
var nIstLang     = cWert.length;
var nDiff        = nLaenge-nIstLang;
var cRightFuell  ="";
var cRueck       = cAusdruck;

if (nIstLang>=nLaenge)
	{
	// dann sofort wieder zurückgeben, da nichts aufzufüllen
	return cRueck;
	}

for (i=1;i<=nDiff;i++)
	{
	cRueck+= cFuellZeichen;

	}

	return cRueck;
}


// Function replicate()
// gibt einen String zurück mit n Anzahl des übergebenen Zeichens
function REPLICATE(cAusdruck,nLaenge)
{
var cRueck       = "";

if (nLaenge<=0)
	{
	// dann leer zurückgeben
	return cRueck;
	}

for (i=1;i<=nLaenge;i++)
	{
	cRueck+= cAusdruck;

	}

	return cRueck;
}



// function lower()
// konvertiert einen übergebenen Ausdruck in Kleinbuchstaben
function LOWER(cAusdruck)
{
var cRueck  = cAusdruck;

cRueck =cAusdruck.toLowerCase();
return cRueck;
}

// function upper()
// konvertiert einen übergebenen Ausdruck in Großbuchstaben
function UPPER(cAusdruck)
{
var cRueck  = cAusdruck;
cRueck =cAusdruck.toUpperCase();
return cRueck;
}


// function substr(cAusdruck,nStart,nLang)
// Extrahiert einen Teilstring aus einem übergebenen Ausdruck ab Position nStart
// und Länge nLang
// Besonderheit: String fängt für Benutzer der Funktion bei Buchstabe Nr. 1 an
// und nicht bei 0
function SUBSTR(cAusdruck,nStart,nLang)
{
var cString     = cAusdruck;
var nStrLastPos = cString.length;
var cRueck      = cAusdruck;
var nBis        = 0;

if (nStart<=0)
	{
	nStart = 0;
	}	

else
	{
	nStart=nStart-1;
	}


if (nLang<=0 || nLang== null)
	{
	nLang = 0;
	nBis  = nStrLastPos;
	}
else
	{
	nBis  = nStart+nLang;
	}


if (nBis>nStrLastPos)
	{
	nBis = nStrLastPos;
	}

cRueck = cString.substring(nStart,nBis);

return cRueck;

}



// function left(cAusdruck,nLang)
// Extrahiert den linken Teil eines Strings mit Länge nLang
function LEFT(cAusdruck,nLang)
{
var cString     = cAusdruck;
var nStrLastPos = cString.length;
var cRueck      = cAusdruck;

if (nLang<=0 || nLang==null)
	{
	nLang = nStrLastPos;
	}	

cRueck = cString.substring(0,nLang);

return cRueck;

}



// function right(cAusdruck,nLang)
// Extrahiert den rechten Teil eines Strings mit Länge nLang
function RIGHT(cAusdruck,nLang)
{
var cString     = cAusdruck;
var nStrLastPos = cString.length;
var cRueck      = cAusdruck;
var nDiffStart  = 0;

if (nLang<=0 || nLang==null)
	{
	nLang = nStrLastPos;
	}	

nDiffStart = nStrLastPos-nLang;

cRueck = cString.substring(nDiffStart);
return cRueck;
}



// function at(cSuch,cAusdruck)
// gibt die Position des ersten Zeichens eines gesuchten Ausdrucks in einem
// anderen Ausdruck zurück. Wenn nicht vorhanden, dann 0.
// Case-sensitive

function AT(cSuch,cAusdruck)
{
var cString     = cAusdruck;
var nStrLastPos = cString.length;
var nRueck      = 0;

nRueck = cString.indexOf(cSuch);

if (nRueck==-1)
	{
	nRueck = 0;
	}
else
	{
	nRueck++;
	}

return nRueck;
}



// function atc(cSuch,cAusdruck)
// gibt die Position des ersten Zeichens eines gesuchten Ausdrucks in einem
// anderen Ausdruck zurück. Wenn nicht vorhanden, dann 0.
// Nicht Case-sensitive

function ATC(cSuch,cAusdruck)
{
var cString     = cAusdruck;
var cSearch     = cSuch;
var nRueck      = 0;
cString = cString.toUpperCase();
cSearch = cSearch.toUpperCase();

nRueck = cString.indexOf(cSearch);

if (nRueck==-1)
	{
	nRueck = 0;
	}
else
	{
	nRueck++;
	}

return nRueck;
}


// function len(cAusdruck) 
// Länge eines übergebenen Ausdrucks
function LEN(cAusdruck)
{
 var wert=cAusdruck;
 return wert.length;
}



// function ltrim(cAusdruck)
// Beseitigt führende Leerzeichen
function LTRIM(cAusdruck)
{
 var cWert    = cAusdruck;
 var nNullPos = -1;
 var nLang    = cWert.length;
 var cRueck   = cAusdruck;

for (i=0;i<nLang;i++)
	{
	
	cCharAt = cWert.charAt(i);
	
	if (cCharAt==" ")
		{
		nNullPos = i;
		}
	else
		{
		break;
		}
	}


if (nNullPos>-1)
	{

	nNullPos=nNullPos+1;

	// Hier Sonderfall: wenn alle Zeichen leer sind, dann gleich leer zurück
	if (nNullPos==nLang)
		{
		cRueck="";
		}
	else
		{
	    nRestString = nLang-nNullPos; 
		cRueck = RIGHT(cAusdruck,nRestString);
		}
		
	}

return cRueck;

}


// function RTRIM()
// folgende Leerzeichen entfernen, besonders bei AFP-Parameteraufrufen erforderlich
// 
function RTRIM(cAusdruck)
{
 var cWert    = cAusdruck;
 var nLang    = cWert.length;
 var nCount   = nLang-1;
 var nEndPos = nLang;
 var cRueck   = cAusdruck;

for (i=nCount;i>=0;i--)
	{
	cCharAt = cWert.charAt(i);

	if (cCharAt==" ")
		{
		nEndPos = i;
		}
	else
		{
		break;
		}
	}


if (nEndPos<=nLang-1)
	{
	// Hier Sonderfall: wenn alle Zeichen leer sind, dann gleich leer zurück
	if (nEndPos==0)
		{
		cRueck="";
		}
	else
		{
	    nRestString = nEndPos; 
		cRueck = SUBSTR(cAusdruck,1,nRestString);
		}
		
	}

return cRueck;

}


// funczion ALLTRIM
// Leerzeichen vorne und hinten entfernen
function ALLTRIM(cAusdruck)
{
return (cAusdruck.replace(/\s+$/,"").replace(/^\s+/,""));
}



//function str(nNumber,nStellen)
// wandelt eine Zahl in einen String um
// Parameter nStellen erzeugt n Nachkommastellen
function STR(nNumber,nStellen)
{
var nZahl  = nNumber;
var nRueck = 0;

if (nStellen==null || nStellen==0)
	{
	nStellen = 0;
	}
nRueck = nZahl.toString();

return nRueck;
}





// function strtran(cDurchsucht, cGesucht,cErsetzung) ->
// ersetzt bestimmte Zeichen in einem Zeichenausdruck durch ein anderes
//
function STRTRAN(cDurchsucht,cGesucht,cErsetzung)
{
var nLang = cDurchsucht.length;

var cNewAusdruck = "";

for (i=0;i<nLang;i++)
	{
	cBuchstabe = cDurchsucht.charAt(i);
	if (cBuchstabe==cGesucht)
		{
		cNewAusdruck+=cErsetzung;
		}
	else
		{
		cNewAusdruck+=cBuchstabe;
		}
	}

return cNewAusdruck;

}





//****************LOGISCHE FUNKTIONEN  **********************************


// function iif()
// Beispiele:
// iif(heinz=='heini','Mann stimmt','Nein, falsch')
// iif(1>2,'Mann stimmt','Nein, falsch')
// onchange="alert(iif(this.value>=2,'Ja','Nein'));"

function IIF(lAusdruck,uEntweder,uOder)
{
var uRueck = "";

if (eval(lAusdruck))
	{
	uRueck = uEntweder;
	}
else
	{
	uRueck = uOder;
	}
return uRueck;

}



// function empty(uAusdruck)
// Prüft, ob ein Ausdruck leer, 0 oder false ist
function EMPTY(uAusdruck)
{
var cTrimExpr = LTRIM(uAusdruck)
var cAusdruck = cTrimExpr;

if (isNaN(uAusdruck)==false)
		{
		if (INT(cAusdruck)==0)
			{
			return true;
			}
		else
			{
			if (cAusdruck=="")
				return true;	
			}
		}
return false;
}



// Prüft, ob eine Variable oder Array existiert
// Beispiel: onchange="alert(EXISTS(egon[1]));"
function EXISTS(uNameVariable)
{
var lRueck = true;
var cTyp    = typeof uNameVariable;

if (cTyp == 'undefined')
	{
	lRueck=false;
	}
return lRueck;
}


//******************  EVENT-Funktionen  ***************************************

//function winkey()
//
// reagiert auf Tastendrücke / MAUSCLICKS 
// kann um die entsprechenden gewünschten Events erweitert werden.
// Die Funktion arbeitet unmittelbar mit der nachfolgenden Funktion GETKEY()
// zusammen!
// Der Aufruf der Funktion erfolgt im body-TAG eines documents:
// 		-> <body bgcolor="#FFFFFF" onload="WINKEY()">
// Mausevents:
// 		die linke Maustaste gibt über die property "which" den Wert 1 zurück
// 		die rechte Maustaste gibt über die property "which" den Wert 3 zurück
// 				-> dadurch ist es z.B. möglich, das Menü abzufangen, das beim
// 				   rechten Mausklick erscheint (Quellcode usw.).
function WINKEY()
{
document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
// hier können weitere Events gecaptured werden
document.onmousedown=GETKEY;
// hier können weitere Events aktiviert werden
}


// function getkey()
// Ein Eventhandler der Funktion WINKEY(), s.o. mit Beispiel der 
// Verarbeitung eines rechten Mausclicks
function GETKEY(event)
{
if (event.which==3)
	{
	if (document.bgColor=="#ff0000")
		{
		document.bgColor="#ffffff";	
		}
	else
		{
		document.bgColor="#ff0000";
		}

	//alert('Nix, rechte Maustaste!!');
	}

return false;
}



//*******************   WÄHRUNGSFUNKTIONEN   *******************************

// Umrechnung EURO in DM, setzt funktion ROUND() voraus!
function EUROTODM(nInEURO)
{
// Berechnungsfaktor ist Konstante
nEuroFaktor = 1.95583;

var nDM = 0;

if (nInEURO > 0)
	{

	// Euro auf zwei Nachkommastellen runden
    nDM = ROUND(nInEURO*nEuroFaktor,2);

	}

return (nDM);

}


// Umrechnung DM in EURO, setzt Funktion ROUND() voraus
function DMTOEURO(nInDM)
{
// Berechnungsfaktor ist Konstante
nEuroFaktor = 1.95583;

var nEuro = 0;

if (nInDM > 0)
	{

	// Euro auf zwei Nachkommastellen runden
    nEuro = ROUND(nInDM/nEuroFaktor,2);

	}

return (nEuro);

}


// Betrag mit zwei Nachkommastellen zurückgeben! 
function ENDNULL(ninwert)
{
 var wert=new String(ninwert);
 var lang=wert.length;
 var pospunkt=-1;
 var rueckwert=wert;
 var darflang=lang
 var fehlnull=0
 {
 for (var y=0; y<=lang-1; y++)
      
    if (wert.charAt(y)==".")
     {
	 pospunkt=y;
     //Laenge des Wertes mit max. zwei Nachkommastellen
     darflang=y+3;
     }
 }

 if (pospunkt<0)
    rueckwert=wert+".00";
 else{
    fehlnull=darflang-lang;
    if (fehlnull==0){
       rueckwert=wert;}
   else{
       rueckwert=wert+"0";}
    }  
return rueckwert
}





// ********************* ARRAYFUNKTIONEN  ****************************************


// function array2dcreate()
// erzeugt ein zweidimensionales Array
// Beispiel: willi= ARRAY2DCREATE(10,2);
//			 willi[3][2] = "Sylvester 1999 programmiert!";
//           alert(willi[3][2]);

function ARRAY2DCREATE(nRows,nFields)
{
// Arrayselement 0 wird nicht genutzt, daher Anzahl der Elemente um 1 erhöhen
// Grund: gewohntes Arbeiten mit Elementen ab 1, 0 sollte aber erzeugt werden.

//nRows++;

var cNewArray = new Array(nRows);

// Daraus ein zweidimensionales Array 

for (i=0; i<nRows;i++)
	{
	cNewArray[i] = new Array(nFields);
	}

return cNewArray;

}



// function arraycreate()
// erzeugt ein eindimensionales Array, das mit übergebenem Wert grundinitialisiert wird
// oder mit einer fortlaufenden Nummer ab 1 durch weglassen des zweiten Parameters
// Beispiel: willi= ARRAYCREATE(10,"INCREMENT");    -> Zähler
// Beispiel: willi= ARRAYCREATE(10,"holgi");		-> Wert

function ARRAYCREATE(nRows,uWert)
{
// Arrayselement 0 wird nicht genutzt
// Grund: gewohntes Arbeiten mit Elementen ab 1, 0 sollte aber erzeugt werden,
// daher 11 Elemente!

var cNewArray = new Array(nRows);

if (uWert==null)
	{
	uWert = "";
	}

// Daraus ein eindimensionales Array 

for (i=0; i<=nRows;i++)
	{

	if (uWert=="INCREMENT")
		{
		cNewArray[i] = i;
		}
	else
		{
		cNewArray[i] = uWert;
		}
	}

return cNewArray;

}



// function arrayapprec(cNameArray, uWert)
// Zeile an ein Array anhängen und Wert reinschreiben
// Parameter by reference
function ARRAYAPPREC(oNameArray, uWert)
{
var nArLang   = oNameArray.length;
var nNewArLen = nArLang;
oNameArray[nNewArLen] = uWert;
}



// function showarray(cArrName)
// zu Testzwecken wird ein Array in einem Alert-Fenster angezeigt.
function ARRAYSHOW(oArrName)
{
var nArLang = oArrName.length;
var cArrString = "";

for (i=0;i<nArLang;i++)
	{
	cArrString+=oArrName[i]+"\n";
	}
}



// function arraydelete(oArrayName)
// löscht ein ganzes Array 
// siehe auch arraydelrec()
function ARRAYDELETE(oArrayName)
{
var nArLang = oArrayName.length;

for (i=0;i<=nArLang;i++)
	{
	// für Browser, die delete nicht unterstützen, wird der Wert auf NULL gesetzt
	oArrayName[i] = null;
	delete oArrayName[i];
	}
}



// function arraydelrec(oArrayName,nIndex)
// löscht eine Zeile eines Arrays
// bei einem zweidimensionalen Array wird die Anzahl der Spalten übergeben
function ARRAYDELREC(oArrayName,nIndex,nColumn)
{
// eindimensionales Array, der Parameter wurde nicht übergeben
if(nColumn==null)
	{
	// für Browser, die delete nicht unterstützen, wird der Wert auf NULL gesetzt
	oArrayName[nIndex] = null;
	delete oArrayName[nIndex];
	}
else
	{
	// zweidimensionales Array - alle Spalten der Zeile löschen
	for (nCol=0;nCol<nColumn;nCol++)
		{
		oArrayName[nIndex][nCol] = null;
		//delete oArrayName[nIndex][nCol];
		}
	}
}



// function arraylength(oArrayName)
// gibt die Länge (Anzahl Zeilen) eines Arrays zurück
function ARRAYLENGTH(oArrayName)
{
return oArrayName.length;
}



// function arraysearchvalue(oArrayName,uSearchValue,nSpalte,nAbIndex,nGenau)
// Einen Wert in einem Array suchen
// Bei Übergabe des Parameters nSpalte wird in einem zweidimensionalen Array
// die entsprechende Spalte durchsucht.
// Parameter nAbIndex: durchsuchen ab Zeile nAbIndex bis Ende
// Parameter nGenau: 0 = genau
// 			 		 1 = Upper()-Vergleich
//					 2 = ATC()-Vergleich   , nicht case-sensitiv
// Beispiele: ARRAYSEARCHVALUE(willi,'olgi ist to',1,0,2))    -> Teilstringsuche
//			  ARRAYSEARCHVALUE(willi,'Holgi ist toll',1,0,0)) -> genauer Vergleich
//            ARRAYSEARCHVALUE(willi,'HOlGi IST tOLL',1,0,1)) -> Vergleich nicht case-sensitiv
// Rückgabe: wenn gefunden, dann der Index, wenn nicht, dann -1

function ARRAYSEARCHVALUE(oArrayName,uSearchValue,nSpalte,nAbIndex,nGenau)
{
var nRueckIndex=-1;
var nArLang = oArrayName.length;

if (nSpalte==null || nSpalte==0)
	{
	nSpalte=1;
	}

if (nAbIndex==null)
	{
	nAbIndex=0;
	}

if (nGenau==null)
	{
	nGenau=0;
	}



for (i=nAbIndex;i<nArLang;i++)
	{
	// Wert muß genau gleich sein
	if (nGenau==0)
		{
		if (oArrayName[i][nSpalte]==uSearchValue)
		   {
		   nRueckIndex=i;
		   break;
		   }
		}

	// Vergleich auf großgeschriebene Werte
	if (nGenau==1)
		{
		var cFieldCont = new String(oArrayName[i][nSpalte]);
		var cLookVal   = uSearchValue.toUpperCase();

		cFieldCont     = cFieldCont.toUpperCase();

		if (cFieldCont==cLookVal)
		   {
		   nRueckIndex=i;
		   break;
		   }
		}

	// Vergleich auf enthaltene Teilstrings großgeschrieben
	if (nGenau==2)
		{
		var cFieldCont = new String(oArrayName[i][nSpalte]);

		if (ATC(uSearchValue,cFieldCont)>0)
			{
			nRueckIndex=i;		
			break;
			}
		}


	 }  //Ende for-Schleife

return nRueckIndex;

}



// function arrayputvalue
// Wert in eine Arrayzeile schreiben

function ARRAYPUTVALUE(oArrayName,uValue,nRow,nCol)
{
oArrayName[nRow]=uValue;
}



// function arraysort(oArrayName,[1])
// Ein Array sortieren
// Beispiel: ARRAYSORT(willi,-1); numerisch absteigend sortieren
//			 ARRAYSORT(willi,1);  numerisch aufsteigend sortieren
//			 ARRAYSORT(willi);   alphanumerisch aufsteigend sortieren
//
// Bei Übergabe des Parameters 'numerisch'= Zahl>0 wird das Array über eine zusätzliche
// Funktion SORTNUMASC() numerisch aufsteigend
// bei Zahl <0 Funktion SORTNUMDESC() numerisch absteigend sortiert.
// Bei Zahl = 0 oder leerem Parameter wird das Array alphanumerisch aufsteigend sortiert
//
function ARRAYSORT(oArrayName,nNumerisch)
{
if (nNumerisch==null || nNumerisch==0)
	{
	oArrayName.sort();
	}
else
	{

	if (nNumerisch>0)
		{
		oArrayName.sort(SORTNUMASC);
		}
	if (nNumerisch<0)
		{
		oArrayName.sort(SORTNUMDESC);
		}
	}

}



// function sortnumasc()  -> Zusatzfunktion für Arraysort, aufsteigend num.sortieren
function SORTNUMASC(a,b)
{
return a-b;
}

// function sortnumdesc()	-> Zusatzfunktion für Arraysort, absteigend num.sortieren
function SORTNUMDESC(a,b)
{
return b-a;
}



//*****************   ENDE ARRAYFUNKTIONEN  **************************************


// Sonstige Funktionen 
//	eMail-Adresse auf syntaktische Gültigkeit prüfen 
//	***************************************************************************
function checkMailAddress(cInAddress)
{
var vorlage = /^[a-zA-Z0-9 _\-\.]+\@[a-zA-Z0-9 \-\.]+\.([a-zA-Z]{2,6})$/;

lRueck= vorlage.test(cInAddress);
	
return lRueck;
}



// geändert 05.03.2005	
function chlayerinhalt()
{

g = document.getElementById("merkzettel");		

if(g==null)
	{return};


nArrayLen = aBasket.length;


cString='';			

if(nPosCount==0)
	{
	cString+='			<p>Ihr Merkzettel ist leer.</p>';
	}
else
	{

	var nPostenPreisDM      = 0;
	var nPosGesPreisDM   	= 0;	
	
	// Große Ausßenschleife, in der alle im Warenkorb vorhandenen Artikel extrahiert werden
	for(nCounter=0;nCounter<nArrayLen;nCounter++)
	{
		if (aBasket[nCounter][1]==null)
		{
		continue;
		}

		
		var cArtNr				= aBasket[nCounter][1];
		var cArtText			= aBasket[nCounter][2];
		var cArtPreisDM			= aBasket[nCounter][3];
		var cArtMenge			= aBasket[nCounter][4];
		var cArtBild		    = aBasket[nCounter][5];
		var cArtNrInt		    = aBasket[nCounter][6];
		
		var nArtPreisDM         = FLOATTOINT(cArtPreisDM);  //in Integer umwandeln
		var nMenge				= INT(cArtMenge);
		var nPostenPreisDM		= nArtPreisDM*nMenge; 

		nPosGesPreisDM    = nPosGesPreisDM+nPostenPreisDM;
		//nPosGesPreisEURO  = nPosGesPreisEURO+nPostenPreisEURO;


		cString+='			<p>'+cArtNr+'<br>'+cArtMenge+' St&uuml;ck &aacute; EUR '+cArtPreisDM+'</p>';
		cString+='			<a href="javascript:buildMerkPar(\''+cArtNr+'\')" onmouseover="window.status=\' Artikel anschauen\'; return true;" onmouseout="window.status=\'\'; return true;"><img src="../images/'+cArtBild+'" class="artimg" alt="'+cArtText+'" title="'+cArtText+'"></a>';
		cString+='			<a href="javascript:deletenoticeart(\''+cArtNrInt+'\')" onmouseover="window.status=\' Artikel aus dem Warenkorb entfernen\'; return true;" onmouseout="window.status=\'\'; return true;"><img src="../apppics/delinmerk.gif" class="smallimg" alt="L&ouml;schen" title="L&ouml;schen"></a><br><a href="javascript:buildMerkPar(\''+cArtNr+'\')" onmouseover="window.status=\' Artikel anschauen\'; return true;" onmouseout="window.status=\'\'; return true;"><img src="../apppics/suchinmerk.gif" class="smallimg" alt="Anschauen" title="Anschauen"></a>';
		cString+='			<div class="clear"></div>';
		cString+='			<p class="linie"></p>';
						






	}   // ende der FOR-Schleife

	cString+='			<p>Gesamt EUR '+INTTOFLOAT(nPosGesPreisDM)+'<br> inkl. MwSt &middot zzgl. Versand</p>';

	cString+='			<p class="gotobasket"><a style="text-decoration: none; color: #FF8080;" href="../modellautos/callorder.php" onmouseover="window.status=\'Hier k&ouml;nnen Sie bestellen\'; return true;" onmouseout="window.status=\'\'; return true;"><img src="../apppics/list_pic_dark.gif" style="width:7px;height:8px;border:0;margin-right:3px;" alt="">Zur Kasse gehen</a></p>'
	

}   //endif von else oCarrier.nPosCount==0


cString+='</div>';		

g = document.getElementById("merkzettel");	// INNENLAYER

g.innerHTML=cString;
}


// 05.03.2005
// Ausgabe der Artikelmenge im Warenkorb
function show_nopos()
{
nNoPos=nPosCount;   
oCell = document.getElementById("ANZARTIKEL");

// wenn der carrier noch nicht geladen wurde!
if (nNoPos==null)
	{
	nNoPos = 0;
	oCell.innerHTML = " -» "+nNoPos;
	}
else
	{			
	oCell.innerHTML=" -» "+nNoPos;
	}

}



function dropinbasket(cButton,nNo)
{
	var cPicName = cButton;
	// die CSS oder Layerdetailebene


	if (wahl[nNo] == 0)
		{
		
		// Artikel in den Warenkorb legen
		nRueck=putinbasket(nNo);

		if(nRueck>0)
			{		
			 wahl[nNo] = 1;
			 

			 // hidden Formfeld beschickenfür Sitzung
			 oMengenObj=document.getElementById("TEXTMENGE"+nNo);
			 nMenge = oMengenObj.value;
			 
			 oFormObj = document["FORMARTNR"+nNo];
			 oFormObj.ARTMENGE.value = nMenge;
			 oFormObj.submit();
			 document.images[cPicName].src="../apppics/btngemerkt.gif";		 
			}

		}
	else
		{
		
		// Artikel aus dem Warenkorb entfernen
		nRueck = removefrombasket(nNo)

		if(nRueck>0)
			{
			wahl[nNo] = 0;
			

			// und nun aus Sitzung entfernen
			oFormObj = document["FORMARTNR"+nNo];
			cArtnrInt = oFormObj.TEXTARTINT.value;
			document.location.href="../intscripts/delbktitem.php?nintno="+cArtnrInt;	
			document.images[cPicName].src="../apppics/btnmerken.gif";
			}

		}
 	// Positionenmenge-Ziffern im Topmenuframe anpassen
	show_nopos();
	
	// Merkzettel refreshen, wenn aufgeklappt
	  //printarray();   
	  chlayerinhalt(); 
}


function putinbasket(nNo)
{
 var nRueck=0;
 
 
 oMengenObj=document.getElementById("TEXTMENGE"+nNo);



 // Objectreferenzen, versteckte Felder
 cPicObjName = document["FORMARTNR"+nNo].BILDNAME;
 cArtNrObj	 = document["FORMARTNR"+nNo].TEXTARTNR;
 cArtNameObj = document["FORMARTNR"+nNo].TEXTARTNAME;
 cIntArtNrObj= document["FORMARTNR"+nNo].TEXTARTINT;
 nPriceObj   = document["FORMARTNR"+nNo].TEXTPRICE;

 var nMengenValue   = oMengenObj.value;
 var cKeyStr        = cArtNrObj.value;
 var nPrice			= nPriceObj.value;
 var cArtText		= cArtNameObj.value;

 var nBestPos =nPosCount;


 if (nBestPos>0)
	{
	 // eindeutiger Indexkey des Artikels, nach dem im Array gesucht wird
	 // aber nur, wenn nBestPos>0 ist, da ansonsten ja noch kein Artikel
	 // im Warenkorb liegen kann

	 var nFoundIndex = ARRAYSEARCHVALUE(aBasket,cKeyStr,1,0,0)

	 if(nFoundIndex>-1)
		{
		return 0;
		}

	}


 // Anzahl Bestellposten erhöhen
nPosCount++;

 nArElem = aBasket.length; 

 // Warenkorb-Array belegen


 aBasket[nArElem] = new Array(7);
 
 aBasket[nArElem][0]=cKeyStr;
 aBasket[nArElem][1]=cKeyStr;
 aBasket[nArElem][2]=cArtText;
 aBasket[nArElem][3]=nPrice;
 aBasket[nArElem][4]=nMengenValue;
 aBasket[nArElem][5]=cPicObjName.value;
 aBasket[nArElem][6]=cIntArtNrObj.value;

 
 return 1;
}







// Sonderfunktion 1: User wählt in einem bereits gewählten Artikel eine andere
// Farbe und/ oder Größe - > dann wird nachgeschaut, ob der so neu gewählte
// Artikel bereits im Warenkorb ist. Wenn ja, dann wird der Button reingedrückt,
// wenn nein, wird der Button herausgeholt!
function proofart(nNo)
{
//if (wahl[nNo]==0)
//	{
//	return;
//	}

 var cPicName = "button_"+nNo
 var nFoundIndex = artsearch(nNo);

 oMengenObj=document.getElementById("TEXTMENGE"+nNo);


if(nFoundIndex==-1)
	{
	// wenn nicht gefunden, dann wird das Buttonbild entdrückt
    oMengenObj.value = 1;
	wahl[nNo]=0;
	document.images[cPicName].src="../apppics/btnmerken.gif";

	
	}
  else	
	{
	// andernfalls reingedrückt lassen
    oMengenObj.value = oCarrier.aBasket[nFoundIndex][4];
	wahl[nNo]=1;
	document.images[cPicName].src="../apppics/btngemerkt.gif";
	}

}



// Zweite Sonderfunktion: User verändert eine Menge eines Artikels, der bereits
// im Warenkorb liegt -> Menge muß auch im Array verändert werden!
// 
function ch_artmenge(nNo,cObjName)
{
// hier kommen zunächst die Gültigkeitsprüfungen wie
// ist es eine Zahl, ist die Zahl <= maximalwert aber größer 0

// wenn nicht im Warenkorb, dann zurück
//if(wahl[nNo]==0)
//	{
//	return;
//	}


// das Feld auf dem Hauptdokument
oObj   = document.getElementById("TEXTMENGE"+nNo);
	



var nValue=oObj.value;

	
nIsNumber = parseInt(nValue);		

if (isNaN(nIsNumber)==true)
	{
	alert("Bitte geben Sie eine Zahl zwischen 1 und 10 ein!");
    nValue    =1;
	}

else
 	{
	if (nValue>10)
		{
 		alert("Die max. Menge pro Artikel ist leider auf 10 begrenzt!");
		nValue    = 10;
		}

	 if (nValue<1)
		{
		alert("Die Menge muß größer 0 sein!");
		nValue=1;
		}
	}


// andernfalls aus normaler Dokumentebene 
oObj.value = parseInt(nValue);


// jetzt den Artikel suchen

var nArIndex = artsearch(nNo);

// wenn nicht gefunden, dann Abbruch
if(nArIndex==-1)
	{
	return;
	}

// und den Wert im Warenkorb ändern
aBasket[nArIndex][4] = nValue;

// und Merkzettel refreshen
chlayerinhalt();

// in die Sitzung packen
oArtObj = document["FORMARTNR"+nNo];
cArtnrInt = oArtObj.TEXTARTINT.value;
document.location.href="../intscripts/chbktmenge.php?nintno="+cArtnrInt+"&anz="+nValue;	

}



// Subfunktion mit Suche nach einem eindeutigen Artikel im Warenkorb
function artsearch(nNo)
{

 oArtNrObj = document["FORMARTNR"+nNo].TEXTARTNR;

 var cArtNr			= oArtNrObj.value;

 // eindeutiger Indexkey des Artikels, nach dem im Array gesucht wird
 var cKeyStr        = cArtNr;


 var nGotIndex = ARRAYSEARCHVALUE(aBasket,cKeyStr,1,0,1)

 if(nGotIndex==-1)
	{
	return -1;
	}

 else
	{
	return nGotIndex;
	}

}


function removefrombasket(nNo)
{
 var nRueck=0;

 // eindeutiger Indexkey des Artikels, nach dem im Array gesucht wird
 cArtNrObj	 = document["FORMARTNR"+nNo].TEXTARTNR;
 var cKeyStr = cArtNrObj.value;


 var nFoundIndex = ARRAYSEARCHVALUE(aBasket,cKeyStr,1,0,0)

 if(nFoundIndex==-1)
	{
	return 0;
	}

 ARRAYDELREC(aBasket,nFoundIndex,7);


 //nArLang = oCarrier.aBasket.length-1;

 nPosCount--;
 wahl[nNo] = 0;
 
 return 1;
}


// ********************************************************************************
// Funktionen man_but() und checkart() 
// Funktionen zur Steuerung des Zustandes der Warenkorb-Buttons eines jeden Artikels,
// der auf einer PHP-Abfrageseite angezeigt wird. Ein Artikel ist durch mehrere
// Parameter eindeutig, z.B. durch den Ausdruck (Artikelnr.+Größe+Preis+Farbe)
// Ein im Warenkorb befindlicher Artikel liegt im "aBasket"-Array einer Seite.
// Dort wird bei onload der PHP-Seite nach jedem auf der Seite dargestellten
// Artikel gesucht und wenn er gefunden wurde, der Knopf im hereingedrückten
// Zustand dargestellt. 
// Parameter: nButtons = Anzahl der auf einer PHP-Seite dargestellten Artikel
function man_but(nButtons)
{
 var nRueck=0;
 var nBestPos = nPosCount;
 var i;
 // wenn keine Position im Warenkorb liegt, dann gleich abbrechen
 // Ausgeblendet 03.03.03, da sonst unten in checkart die eMail-Adressen nicht eingetragen 
 // werden, wenn es sich um Artikel "In Vorbereitung handelt, solange noch kein Artikel im Warenkorb liegt.
 //if (nBestPos==0)
 //	{
 //	return;
 //	}

 for(i=1;i<=nButtons;i++)
	{
	checkart(i);	
	}

 }


 // Geänd 25.03.03
function checkart(nNo)
{
 // Objectreferenzen, oArtNr ist ein verstecktes Feld
 cFormName = "FORMARTNR"+nNo;

var cPicName = "button_"+nNo
 
// prüfen, ob auf dieser Seite ein weiterer Artikel überhaupt existiert
 if (EXISTS(document.forms[cFormName])==false)
	{
	return 0;
	}

 oArtNr    =  document["FORMARTNR"+nNo].TEXTARTNR;

 oMengenObj=document.getElementById("TEXTMENGE"+nNo);


 // Werte der Objekte
 var cArtNr			= oArtNr.value

 // eindeutiger Indexkey des Artikels, nach dem im Array gesucht wird, es
// wird der erste (Stamm)artikel gesucht, der vorhanden ist.
 var nFoundIndex = ARRAYSEARCHVALUE(aBasket,cArtNr,1,0,1)

 if(nFoundIndex==-1)
	{
	
	// Erweiterung 03.03.03, ist es ein Artikel "In Vorbereitung"?
	oPrepStatus =document["FORMARTNR"+nNo].TEXTPREPARE;
	var nPrepVal = oPrepStatus.value;

	if(nPrepVal==1)
		{
		// Wert aus Kundenarray		
		//oMengenObj.value = KundenArray[19];		
		}
	// Ende Erweiterung 03.03.03	
	
	return 0;
	}


 // wenn der Artikel im Warenkorb liegt, dann Werte extrahieren
 nMengenValue = aBasket[nFoundIndex][4];

 // Zuweisungen der Werte an die Formobjekte

  // zum Schluß die Bestell-Menge belegen
  oMengenObj.value = nMengenValue;

  // und das Warenkorb-Bild einstellen (gedrückt oder ungedrückt)
  wahl[nNo]=1;
  document.images[cPicName].src="../apppics/btngemerkt.gif";


return 1;
}




function printarray()
{
aLen = aBasket.length;

cOut = "Länge des Arrays: "+aLen+"<br>";

for(i=0;i<aLen;i++)
	{
	if (aBasket[i][1]==null)
		{
		continue;
		}

	cOut+="E0: "+aBasket[i][0]+"  E1: "+aBasket[i][1]+"  E2: "+aBasket[i][2]+"<br>";
	
	}

document.write(cOut);
}





// Artikel im Merkzettel und Warenkorb löschen
function deletenoticeart(cInArtIntNr)
{
 var nRueck=0;

 // Werte der Objekte
 var cArtNr			= cInArtIntNr

 // eindeutiger Indexkey des Artikels, nach dem im Array gesucht wird
 var nFoundIndex = ARRAYSEARCHVALUE(aBasket,cArtNr,6,0,1)

 if(nFoundIndex==-1)
	{
	return ;
	}


 ARRAYDELREC(aBasket,nFoundIndex,7);

 nPosCount--;

 // Positionenmenge-Ziffern im Topframe anpassen
 show_nopos(nPosCount);

 // Merkzettel refreshen und eingedrückten "In den Warenkorb"-Button
 // eines eventuell sichtbaren Artikels ändern
 chlayerinhalt();
 
 // Seite durchsuchen nach entsprechendem Artikel
 nMaxOnPage= nMaxItems;
 for(z=1;z<=nMaxOnPage;z++)
 	{
	oHidObj=document["FORMARTNR"+z];
	if(oHidObj==null)
		{
		// wenn weniger als nMaxOnPage, dann raus
		break;
		}
	else
		{
		if(oHidObj.TEXTARTINT.value==cArtNr)
			{
			var cPicName = "button_"+z;
			wahl[z] = 0;
			document.images[cPicName].src	= "../apppics/btnmerken.gif";
			}
		
		}
	
	
	}
	
// und nun aus Sitzung entfernen
document.location.href="../intscripts/delbktitem.php?nintno="+cInArtIntNr;	
}
