function GetArrayIndex(sArticle)
{
	var iIndex=-1;
	iCountPrice=aPreis.length;
	if(iCountPrice>0)
	{
		for(var i = 0; i <= iCountPrice-1; i++)
		{
			if(aPreis[i][0]==sArticle)
			{
				iIndex=i;
				break;
			}
		}
	}
	return(iIndex);
}


function FindPos(oImage, sType)
{
	oObject=oImage;
	var lPos = 0;
	if (oObject.offsetParent)
	{
		while (oObject.offsetParent)
		{
			if(sType=="x")
				lPos += oObject.offsetLeft;

			else
				lPos += oObject.offsetTop;

			oObject = oObject.offsetParent;
		}
	}
	if(sType=="x")
		lPos=lPos+(oImage.offsetWidth);
	else
		lPos=lPos+(oImage.offsetHeight);

	return lPos;
}


function GetBrutto(dNetto)
{
	dBrutto=(dNetto/100*dGlobalMWST) + dNetto;
	return(dBrutto);
}

function trim (sString)
{
    return sString.replace(/ +/g, ' ').replace(/^\s+/g, '').replace(/\s+$/g,'');
}

function ShowToolTip(oImage, sArticles)
{


	if(!sArticles)
		sArticles="";

	sArticles=trim(sArticles);

	if(sArticles!="")
	{
		asRequested=sArticles.split(";");
		iRequestedArticles=asRequested.length;


		var sHeaderPart="";
		var sCenterPart="";
		var sFooterPart="";

		var	sEinheit="";
		var	sNetto="";
		var	sBrutto="";
		var	sMehrMeter="";

		//Template Typen:
		//1 - normale Artikelauflistung
		//2 - 1 Mehrmeterartikel (Mehrmeterpreise werden angezeigt)
		//3 - mehrere Mehrmeterartikel (nur der erste Meter dieser Artikel wird angezeigt)
		//Die erste Artikelnummer entscheidet, welches Template verwendet wird

		var iUseTemplateType=1;
		var sAktArtikelNr="";

		for(var i = 0; i <= iRequestedArticles-1; i++)
		{

			sAktArtikelNr=trim(asRequested[i]);
			iArrayIndex=GetArrayIndex(sAktArtikelNr); //Index der Artikelnummer im Array

			if(iArrayIndex>-1)
			{
				sEinheit="";
				sNetto="";
				sBrutto="";
				sMehrMeter="";

				if(aPreis[iArrayIndex]["1"])
					sEinheit=aPreis[iArrayIndex]["1"];

				if(aPreis[iArrayIndex]["2"])
				{
					sNetto=aPreis[iArrayIndex]["2"];
					iNachkommaStellen=GetDecimalPlaces(sNetto);

					dNetto=parseFloat(sNetto);
					dBrutto=GetBrutto(dNetto);
					dBrutto=RoundValue(dBrutto, iNachkommaStellen);
					sBrutto=dBrutto.toString();
				}

				if(aPreis[iArrayIndex]["3"])
				{
					sMehrMeter=aPreis[iArrayIndex]["3"];

					if(i==0) //erster Artikel entscheidet, welches Template verwendet wird
					{
						if(sMehrMeter!="")
						{
							if(iRequestedArticles>1)
								iUseTemplateType=3;
							else
								iUseTemplateType=2;
						}
					}
				}

				if(iUseTemplateType==1)
					sCenterPart=sCenterPart + GetCenterPart1(sAktArtikelNr, sNetto, sBrutto, sEinheit);
				else if(iUseTemplateType==2)
				{
					sCenterPart=sCenterPart + GetCenterPart2(sAktArtikelNr, sNetto, sMehrMeter);
				}
				else if(iUseTemplateType==3)
					sCenterPart=sCenterPart + GetCenterPart3(sAktArtikelNr, sNetto, sBrutto);
			}
		}

		var sPriceInfoText="(Irrtümer und Preisänderungen vorbehalten)";
		if(iUseTemplateType==1)
		{
			sHeaderPart=GetHeaderPart1();
			sFooterPart=GetFooterPart1(sPriceInfoText);
		}
		else if(iUseTemplateType==2)
		{
			sHeaderPart=GetHeaderPart2();

			sFooterPart=GetFooterPart2(sNetto, sMehrMeter, sPriceInfoText);
		}
		else if(iUseTemplateType==3)
		{
			sHeaderPart=GetHeaderPart3();
			sFooterPart=GetFooterPart3(sPriceInfoText);
		}


		var sOutput=""
		sOutput=sOutput + '<Table id="ToolTipTable" class="ToolTipTable" cellspacing="1" cellpadding="1" width=360>';
		sOutput=sOutput + sHeaderPart + sCenterPart + sFooterPart;
		sOutput=sOutput + '</Table>';

		



		oTip=document.getElementById("ToolTip");
		if(oTip)
		{
			oTip.innerHTML=sOutput;
		}



		//neue Position des Tooltips bestimmen
		var iNewXPos=0;
		var iNewYPos=0;

		if(oImage)
		{
			//Position of Image
			iXPosImg=FindPos(oImage, "x");
			iYPosImg=FindPos(oImage, "y");

			//Size of Tooltip
			oTipTable=document.getElementById("ToolTipTable");
			iToolTipWidth=0;
			iToolTipHeight=0;
			if(oTipTable)
			{
				iToolTipWidth=oTipTable.offsetWidth;
				iToolTipHeight=oTipTable.offsetHeight
			}

			//Screen Size (Aktuelle Fenstergröße)
			iScreenWidth=GetWindowSize("x");
			iScreenHeight=GetWindowSize("y");

			//ScrollOffset (wie weit nach rechts bzw nach unten gescrollt wurde
			iScrollWidth=GetScrollOffset("x");
			iScrollHeight=GetScrollOffset("y");

			//Berechne X-Pos
			iNewXPos=iXPosImg+10;
			iNewYPos=iYPosImg+10;

			if(iNewXPos+iToolTipWidth - iScrollWidth > iScreenWidth)
			{
				iNewXPos=iXPosImg-10-iToolTipWidth;
			}
			if(iNewYPos+iToolTipHeight - iScrollHeight > iScreenHeight)
			{
				iNewYPos=iYPosImg-10-iToolTipHeight;
			}
		}

		if(oTip)
		{
			oTip.style.left = iNewXPos + "px";
			oTip.style.top 	= iNewYPos + "px";
			oTip.style.visibility = "visible";
		}
	}
}

function GetWindowSize(sDimension)
{
	var iSize=0;
	if(typeof(window.innerWidth)=='number')
	{
		//Non-IE
		if(sDimension=="x")
			iSize = window.innerWidth;
		else
			iSize = window.innerHeight;
	}
	else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		//IE 6+ in 'standards compliant mode'
		if(sDimension=="x")
			iSize = document.documentElement.clientWidth;
		else
			iSize = document.documentElement.clientHeight;
	}
	else if(document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		if(sDimension=="x")
			iSize = document.body.clientWidth;
		else
			iSize = document.body.clientHeight;
	}

	return(iSize);
}

function GetScrollOffset(sDimension)
{
	var iScrollOffSet=0;
	if(typeof(window.pageYOffset)=='number')
	{
		//Netscape compliant
		if(sDimension=="x")
			iScrollOffSet = window.pageXOffset;
		else
			iScrollOffSet = window.pageYOffset;
	}
	else if(document.body && (document.body.scrollLeft || document.body.scrollTop))
	{
		//DOM compliant

		if(sDimension=="x")
			iScrollOffSet = document.body.scrollLeft;
		else
			iScrollOffSet = document.body.scrollTop;
	}
	else if(document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop))
	{
		//IE6 standards compliant mode

		if(sDimension=="x")
			iScrollOffSet = document.documentElement.scrollLeft;
		else
			iScrollOffSet = document.documentElement.scrollTop;
	}
	return (iScrollOffSet);
}


function HideToolTip()
{
	oTip=document.getElementById("ToolTip");
	if(oTip)
		oTip.style.visibility = "hidden";
}


function GetHeaderPart1()
{
    sOutput="";
	sOutput=sOutput + '<tr><td width="10"></td><td class="ArtikelKopf" width="120">Artikel</td><td width="10"></td><td class="Netto" width="50" align="right">Netto</td>';
	sOutput=sOutput + '<td width="10"></td><td class="Brutto" width="50" align="right">Brutto</td><td width="10"></td><td width="110">Preis pro</td></tr>';
	return(sOutput);
}

function GetHeaderPart2()
{
    sOutput="";
	sOutput=sOutput + '<tr><td class="ArtikelKopf" width="120" align="center">Artikel</td><td width="10"></td><td class="Netto" width="50" align="right">Netto</td>';
	sOutput=sOutput + '<td width="10"></td><td class="Brutto" width="50" align="right">Brutto</td><td width="10"></td><td width="110" align="center">pro 1 Stück bei</td></tr>';
	return(sOutput);
}


function GetHeaderPart3()
{
    sOutput="";
	sOutput=sOutput + '<tr><td class="ArtikelKopf" width="120" align="center">Artikel</td><td width="10"></td><td class="Netto" width="50" align="right">Netto</td>';
	sOutput=sOutput + '<td width="10"></td><td class="Brutto" width="50" align="right">Brutto</td><td width="10"></td><td width="110" align="center">pro 1 Stück bei</td></tr>';
	return(sOutput);
}


function GetCenterPart1(sArtikel, sNetto, sBrutto, sEinheit)
{
    sOutput="";
    sOutput=sOutput + '<td width="10"></td><td class="Artikel">' + sArtikel +'</td><td></td>';
    if(sNetto!="")
    {
		var iNachkommaStellen=GetDecimalPlaces(sNetto);
		sNetto=FormatPrice(sNetto, iNachkommaStellen);
		sBrutto=FormatPrice(sBrutto, iNachkommaStellen);

		sOutput=sOutput + '<td class="Netto" align="right">' + sNetto + '</td><td></td><td class="Brutto" align="right">' + sBrutto + '</td><td></td><td>' + sEinheit + '</td>';
	}
    else
    	sOutput=sOutput + '<td class="Netto" colspan="5" align="center">Preis auf Anfrage</td>';
    sOutput=sOutput + '</tr>';
    return(sOutput);
}


function GetDecimalPlaces(sNumber)
{
	iNachKomma=0;
	asSplit=sNumber.split(".");
	if(asSplit[1])
		iNachKomma=asSplit[1].length;

	return(iNachKomma);
}

function RoundValue(dValue, iNachKommaStellen)
{
	dTemp=1;
	for(var i = 1; i <= iNachKommaStellen; i++)
		dTemp=dTemp*10;

	var dRounded=Math.round(dValue*(dTemp))/(dTemp);

	//prüfe ob genügend Nachkomma stellen vorhanden sind

	return(dRounded);
}

function FormatPrice(sPrice, iNachKommaStellen)
{
	if(iNachKommaStellen<2)
		iNachKommaStellen=2;


	var sFormattedPrice=sPrice;
	//der Preis könnte zu wenig Nachkomma stellen haben ->mit Nullen auffüllen
	//den . als Dezimaltrennzeichen mit Komma ersetzen
	//. als Tausendertrennzeichen einfügen

	if(sPrice!="")
	{
		asSplit=sPrice.split(".");
	
		var sEuro=asSplit[0];
		var iPriceLen=sEuro.length;
		var sEuroOutput="";
		var iCurrDigets=0;
		for(var i = iPriceLen; i > 0;i--)
		{
			if(iCurrDigets==3)
			{
				sEuroOutput="." + sEuroOutput;
				iCurrDigets=0;
			}
			sEuroOutput=sEuro.substr(i-1,1) + sEuroOutput;
			iCurrDigets++;
		 }
	
		var sCentOutput="";
		var iLenCent=0;
		if(asSplit[1])
		{
			sCentOutput=asSplit[1];
			iLenCent=sCentOutput.length;
		}
	
		if(iLenCent<iNachKommaStellen)
		{
			for(var i = iLenCent; i < iNachKommaStellen; i++)
				sCentOutput=sCentOutput+"0";
		}
	
		sFormattedPrice=sEuroOutput + "," + sCentOutput;
	}
	return(sFormattedPrice);
}




function GetCenterPart2(sArtikel, sGrundPreis, sMehrMeter)
{
	sOutput="";
	var iNachkommaStellen=GetDecimalPlaces(sGrundPreis);
	dGrundPreis=parseFloat(sGrundPreis);
	dMehrMeter=parseFloat(sMehrMeter);

	for(var i = 0; i <= iMehrmeterZeilen-1; i++)
	{
		dNetto=dGrundPreis+(i*dMehrMeter);
		dNetto=RoundValue(dNetto, iNachkommaStellen);

		dBrutto=GetBrutto(dNetto);
		dBrutto=RoundValue(dBrutto, iNachkommaStellen);

		sNetto=dNetto.toString();
		sNetto=FormatPrice(sNetto, iNachkommaStellen);
		sBrutto=dBrutto.toString();
		sBrutto=FormatPrice(sBrutto, iNachkommaStellen);

		iOutputMeter=i+1;
		if(iOutputMeter==1)
			sOutputArtikel=sArtikel;
		else
			sOutputArtikel="";

		sOutput=sOutput + '<tr>';
		sOutput=sOutput + '<td class="Artikel" align="center">' + sOutputArtikel + '</td>';
		sOutput=sOutput + '<td></td>';
		sOutput=sOutput + '<td class="Netto" align="right">' + sNetto + '</td>';
		sOutput=sOutput + '<td></td>';
		sOutput=sOutput + '<td class="Brutto" align="right">' + sBrutto + '</td>';
		sOutput=sOutput + '<td></td>';
		sOutput=sOutput + '<td align="center">' + iOutputMeter + ' m Nutzlänge</td>';
		sOutput=sOutput + '</tr>';
	}
	return(sOutput);
}

function GetCenterPart3(sArtikel, sNetto, sBrutto)
{
	var iNachkommaStellen=GetDecimalPlaces(sNetto);
	sNetto=FormatPrice(sNetto, iNachkommaStellen);
	sBrutto=FormatPrice(sBrutto, iNachkommaStellen);

	sOutput="";
    sOutput=sOutput + '<tr><td class="Artikel" align="center">' + sArtikel + '</td><td></td>';
    
    if(sNetto!="")
    {
    	sOutput=sOutput + '<td class="Netto" align="right">' + sNetto + '</td><td></td><td class="Brutto" align="right">' + sBrutto + '</td><td></td><td align="center">1 m Nutzlänge*</td>';
    }
	else
	{
		sOutput=sOutput + '<td class="Netto" colspan="5" align="center">Preis auf Anfrage</td>';
	}
    
    sOutput=sOutput + '</tr>';
    
    return(sOutput);
}

function GetFooterPart1(sPriceInfoText)
{
	sOutput='<tr><td width="10"></td><td class="PreisInfoToolTip" colspan="7">' + sPriceInfoText + '</td></tr>';
	return(sOutput);
}

function GetFooterPart2(sNetto, sMehrMeter, sPriceInfoText)
{
	var iNachkommaStellen=GetDecimalPlaces(sNetto);
	sNetto=FormatPrice(sNetto, iNachkommaStellen);
	sMehrMeter=FormatPrice(sMehrMeter, iNachkommaStellen);


    sOutput="";
    sOutput=sOutput + '<tr><td></td><td></td><td class="Netto" align="right">...*</td><td></td><td class="Brutto" align="right">...**</td><td></td><td align="center">n m Nutzlänge</td></tr>';
    sOutput=sOutput + '<tr><td colspan=7><span>*</span><span class="Berechnung"> Nettopreis=' + sNetto + ' Euro + (n-1) * ' + sMehrMeter + ' Euro</span><br><span>**</span><span class="Berechnung"> Bruttopreis=Nettopreis + ' + dGlobalMWST + '%</span></td></tr>';
    sOutput=sOutput + '<tr><td colspan=7 class="PreisInfoToolTip">' + sPriceInfoText + '</td></tr>';
	return(sOutput);
}


function GetFooterPart3(sPriceInfoText)
{
    sOutput="";
    sOutput=sOutput + '<tr><td colspan=7><span>*</span><span class="Info">weitere Längen finden Sie auf der kompletten Preisliste für diese Seite</span></td></tr>';
	sOutput=sOutput + '<tr><td colspan=7 class="PreisInfoToolTip">' + sPriceInfoText + '</td></tr>';
	return(sOutput);
}

