﻿// @Author: Ulrich König
// 18.09.07: Mark Hausmann - Erweiterung CPL Modul und Korrekturen
// 28.01.10: FMEA Modul, Oracle Checkbox und einblendbarer Infotext eingefügt
// 29.01.10: TYPO3-Links erweisen auf richtige Sprache

var mwstConstant = 1.19;	//Mehrwertsteuerconstante
var grosskunde = 20000;		//Ab welchem Wert soll der Standortlizenz hinweiß eingeblendet werden (zzl. MwST)
var leasingGrenze = 19999;  //Bis zu welcher Grenze werden Leasingangebote ausgegeben

////////////////////////////// Basispakete
function genBasismoduleGer() {
	var BASISFeatures = new Array ("Das CAQ-System PDAP7 wird pro Benutzer lizensiert (concurrent licence).","Die Anzahl der Basispakete entspricht der Anzahl der gleichzeitigen Benutzer","des Systems (Datenbankinstanzen).");
	var BASIS =  new getModul(34,"Basispaket PDAP7","BASIS" ,330,330,330,new Array("incl. Interbase Datenbank","incl. Interbase Datenbank"),BASISFeatures);
//	var BASIS =  new getModul(34,"Basispaket PDAP7","BASIS" ,330,330,330,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),BASISFeatures);
	
	var REKLFeatures = new Array ("Bearbeitung / Auswertung von Reklamationen & -kosten","Nahtlose Zusammenarbeit mit anderen PDAP Modulen");
	var REKL =  new getModul(42,"Basispaket Reklamationsmanagement","REKL" ,679,979,638.50,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),0);
	
	var PVMFeatures = new Array ("Überwachung von Prüf- und Eichterminen","Prüfmittellebenslauf","Istwerterfassung und Istwerthistorie","Berechnung von Messunsicherheiten und Messmittelfähigkeiten");
	var PMV=  new getModul(43,"Basispaket Prüfmittelverwaltung","PMV" ,679,979,623.50,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),PVMFeatures);
	
//	var WE =  new getModul(0,"Basispaket Wareneingang","WE",679,979,638.50,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),0);

	var EMPFeatures = new Array("Durchführen von Erstbemusterungen und internen Begutachtungen","Dokumentenaustausch mit Microsoft WORD","Umfassende Dokumentation zu jeder Anlage")
	var EMP =  new getModul(40,"Basispaket Erstmusterprüfung","EMP",679,979,638.50,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),EMPFeatures);
	
	var CPLFeatures = new Array("Lenkung von Teilen und Verfahren in Produktionsprozessen","Dokumentenerstellung mit Microsoft WORD","Beschreiben wichtiger Merkmale und technischen Forderungen")
	var CPL =  new getModul(129,"Basispaket Kontrollplan","CPL",679,979,638.50,new Array("incl. Interbase Datenbank","incl. Oracle Datenbank"),CPLFeatures);
	

	basismodule = new Array(BASIS);
	//sismodule = new Array(BASIS ,REKL ,PMV ,EMP, CPL);
	//basismodule = new Array(SPCFSK ,REKL ,PMV ,EMP);
	return basismodule ;
}

////////////////////////////// Zusatzmodule
function genZusatzmoduleGer() {

	//Erstmusterprüfbericht
	var EMPFeatures = new Array("Durchführen von Erstbemusterungen und internen Begutachtungen","Dokumentenaustausch mit Microsoft WORD","Umfassende Dokumentation zu jeder Anlage")
	var Erstmuster = new getModul(40,"Erstmusterprüfbericht","EMP",435,435,435,0,EMPFeatures );

	//Kontrollplan
	var CPLFeatures = new Array("Lenkung von Teilen und Verfahren in Produktionsprozessen","Dokumentenerstellung mit Microsoft WORD","Beschreiben wichtiger Merkmale und technischen Forderungen")
	var Kontrollplan = new getModul(129,"Kontrollplan","CPL",595,595,595,0,CPLFeatures );

	var SPCFeatures = new Array ("Messende Prüfung (Normalverteilungen)","Kurzzeituntersuchungen (Maschinenfähigkeiten)","Langzeituntersuchungen (Prozessfähigkeiten, Prozessregelkarten)","Grundmodul Normalverteilung","Logarithmische Normalverteilung","Statistische Prozesskontrolle (SPC)","Fehlersammelkarte","Einzelwertkarte","Median-Einzelwertkarte","Annahmeregelkarte","Variationskoeffizientenkarte","Prüfberichte","Prüfplan- und Prüfanweisungsverwaltung","Messplatz für Prüfer","Reportgenerator (Formulareditor)","enthält SQL Datenbank Lizenz(en)");
	var SPC =  new getModul(58,"Statistische Prozesssteuerung & Fehlersammelkarte","SPCFSK" ,785,785,785,0,SPCFeatures);

	//Pruefplatz
	var MPFeatures = new Array ("Für messende Prüfung ohne Auswerteaufgaben","Durchführung der Prüfung laut Prüfplan und Prüfanweisung","Einfache Benutzerschnittstelle","Balkengrafik der letzten Prüfungen (Trendanalyse)","Anzeige der Regelkarten und Fehlersammelkarten")
	var MP = new getModul(60,"Prüfplatz","MP",215,215,215,0,MPFeatures);

	//Pruefmittelverwaltung
	var PVMFeatures = new Array ("Überwachung von Prüf- und Eichterminen","Prüfmittellebenslauf","Istwerterfassung und Istwerthistorie","Berechnung von Messunsicherheiten und Messmittelfähigkeiten");
	var Pruefmittel = new getModul(43,"Pr&uuml;fmittelverwaltung","PMV",435,435,435,0,PVMFeatures);
	
	//Reklamationsmanagement
	var REKLFeatures = new Array ("Bearbeitung / Auswertung von Reklamationen & -kosten","Nahtlose Zusammenarbeit mit anderen PDAP Modulen");
	var Reklamation = new getModul(42,"Reklamationsmanagement","REKL",595,595,595,0,REKLFeatures );
	
	// FMEA
	var FMEAFeatures = new Array("Integration der Erzeugnis-/ Teiletabellen", "Grafische Auswertung der RPZ als ABC-Analyse", "Anpassbare Programmoberfläche mit Formulardesigner", "Systemanalyse mit Bäumen für Funktionen, Fehler und Ereignisse", "Direkter Zugriff auf Prüf- und Kontrollpläne sowie auf Reklamationen", "Einbindung und Verknüpfung mit Maßnahmen-Workflow", "Informationssystem (Quality Remind Messaging)", "Nahtlose Zusammenarbeit mit allen Modulen");
	var FMEA = new getModul(0,"FMEA","FMEA",435,435,435,0,FMEAFeatures);

	//Wareneingangsprüfung
	var WEFeatures = new Array ("Bearbeitung und Prüfung von Wareneingängen","Frei definierbare Stichprobenplansysteme","Auswertung von Annahme- und Rückweisungsoptionen","Lieferantenbewertung mit grafischer Darstellung (QKZ A,B,G,S)","Analyse der Liefertreue","Nahtlose Zusammenarbeit mit allen Modulen")
	var Wareneingang = new getModul(41,"Wareneingangspr&uuml;fung","WE",435,435,435,0,WEFeatures);

	Zusatzmodule = new Array(Erstmuster,FMEA,Kontrollplan,Pruefmittel,MP,SPC,Reklamation,Wareneingang);
//	Zusatzmodule = new Array(Erstmuster,FMEA,Kontrollplan,Pruefmittel,MP,SPC,Reklamation,Wareneingang);
	
	//zusatzmodule = Zusatzmodule;
	return Zusatzmodule;
}

/////////////////////////////////////////////////English////////////////////////////////////////////////////////////////////
////////////////////////////// Basispakete
function genBasismoduleEng() {
	var BASISFeatures = new Array ("Measure testing (normal distribution)","Short period testing (machine capability)","Long period testing (process capabilities, control charts)","Basic module normal distribution","Lognormal distribution","Statistic process control (SPC)","Attribute chart","Single value chart","Median single value chart","Variation coefficient chart","Pre control chart","Inspection plans and inspection order administration","Report generator (Formulareditor)","Includes SQL database license");
	var BASIS =  new getModul(34,"BasisPackage PDAP7","BASIS" ,330,330,330,new Array("incl. Interbase database","incl. Interbase database"),BASISFeatures);
	
	var REKLFeatures = new Array ("handling / analysis of complaints and -costs");
	var REKL =  new getModul(42,"PDAP 7 Complaint Management","REKL" ,679,979,638.50,new Array("incl. Interbase database","incl. Oracle database"),0);
	
	var PVMFeatures = new Array ("surveillance of inspection and calibration intervals","gauge lifecircles","actual value acquisition and history","calculation of measuring uncertainities and gauge abilities");
	var PMV=  new getModul(43,"PDAP 7 Gauge Administration","PMV" ,679,979,623.50,new Array("incl. Interbase database","incl. Oracle database"),PVMFeatures);
	
	var EMPFeatures = new Array("First Sampling examination und internal investigation","Document exchange with Microsoft WORD","Comprehensive documentation to each plant")
	var EMP =  new getModul(40,"PDAP 7 First Sampling","EMP",679,979,638.50,new Array("incl. Interbase database","incl. Oracle database"),EMPFeatures);
	
	var CPLFeatures = new Array("Controlling parts and products of the production processes","Create documents with Microsoft WORD","Describe important characteristics and technical demands")
	var CPL =  new getModul(129,"PDAP 7 Control Plan","CPL",815,1115,715.50,new Array("incl. Interbase database","incl. Oracle database"),CPLFeatures);
	
	
	basismodule = new Array(BASIS);
	//basismodule = new Array(SPCFSK ,REKL ,PMV ,EMP);
	return basismodule ;
}

////////////////////////////// Zusatzmodule
function genZusatzmoduleEng() {

	var SPCFeatures = new Array ("Measure testing (normal distribution)","Short period testing (machine capability)","Long period testing (process capabilities, control charts)","Basic module normal distribution","Lognormal distribution","Statistic process control (SPC)","Attribute chart","Single value chart","Median single value chart","Variation koefficient chart","Pre control chart","Inspection plans and inspection order administration","Report generator (Formulareditor)","Includes SQL database license");	
	var SPC =  new getModul(58,"Static Process Controll & Attribute chart","SPCFSK" ,785,785,785,0,SPCFeatures);

	//Pruefmittelverwaltung
	var PVMFeatures = new Array ("Surveillance of inspection and calibration intervals","Gauge lifecircles","Actual value acquisition and history","Calculation of measuring uncertainities and gauge abilities");
	var Pruefmittel = new getModul(43,"Gauge administration","PMV",435,435,435,0,PVMFeatures);

	//Wareneingangsprüfung
	var WEFeatures = new Array ("Administration of goods income","Free definable sampling plans","Supplier rating with graphical presentation and analization");
	var Wareneingang = new getModul(41,"Goods income capture","WE",435,435,435,0,WEFeatures);

	//Reklamationsmanagement
	var REKLFeatures = new Array ("Handling / analysis of complaints and -costs");
	var Reklamation = new getModul(42,"Complaint management","REKL",595,595,595,0,REKLFeatures );

	//Erstmusterprüfbericht
	var EMPFeatures = new Array("First Sampling examination and internal investigation","Document exchange with Microsoft WORD","Comprehensive documentation to each plant")
	var Erstmuster = new getModul(40,"First sampling","EMP",435,435,435,0,EMPFeatures );

	//Kontrollplan
	var CPLFeatures = new Array("Controlling parts and products of the production processes","Document exchange with Microsoft WORD","Describe important characteristics and technical demands")
	var Kontrollplan = new getModul(129,"Control Plan","CPL",595,595,595,0,CPLFeatures );
	
	//FMEA
	var FMEAFeatures = new Array("Integration of product / parttables","Graphical evaluation of the RPN as ABC-Analysis","Customizable GUI with form-designer","System analysis with trees for functions, errors and events","Direct access to controll plans and complaints","Involvement with measure-workflow","Information system (Quality Remind Messaging)","Seamless cooperation with other modules");
	var FMEA = new getModul(0,"FMEA","FMEA",435,435,435,0,FMEAFeatures );

	//Pruefplatz
	var MPFeatures = new Array ("For measuring controlling without evaluation tasks","Controlling according to control plans and control instructions","Easy to use GUI","Bar chart of the last control results (trend analysis)","Display of control charts and atrribute charts")
	var MP = new getModul(60,"Measurement space","MP",215,215,215,0,MPFeatures);

	Zusatzmodule = new Array(Erstmuster,FMEA,Kontrollplan,Pruefmittel,MP,SPC,Reklamation,Wareneingang);
	//Zusatzmodule = new Array(Erstmuster,FMEA,Kontrollplan,Pruefmittel,SPC,Reklamation,Wareneingang);
	//Zusatzmodule = new Array(SPCFSK,Pruefmittel,Wareneingang,Reklamation,Erstmuster);
	//zusatzmodule = Zusatzmodule;
	return Zusatzmodule;
}

//IDs müssen gleich den Typo3 Language IDs sein
var german = 1;
var english = 3;
var russian = 2;
var chinese = 5;
var defaultLanguage = english;

function genLanguage(LangID) {
	LandID = Math.round(LangID);
	if (LangID == german) {
	//Deutsch
		this.id=german;
		this.dezimal = ',';
		this.title = "Preiskalkulator";
		this.licenses = "Lizenzen";
		this.items = "Posten";
		this.pricePerLicense = "Preis/Lizenz";	
		this.sum = "Summe";
		this.invalid = "ungültig";
		this.allPrices = "Alle Preise";
		this.including = "inklusive MwSt";
		this.plusVat = "zuzüglich MwSt";
		this.servicingContractAnnually = "Wartungsvertrag, jährlich";
		this.contains = "Enthält";
		this.regularFunctionUpdates = "Regelmäßige Funktionsupdates";
		this.supportBy = "Support per";
		this.phoneAndEmail = "Telefon und eMail";
		this.exclisiveEntranceTo = "Exklusiver Zugang zum";
		this.serviceRange = "Service Portal";
		this.automaticUpdateDistributionWithinTheCompanyNetwork = "Automatische Updateverteilung innerhalb des Firmennetzwerks";
		this.from6thLicense = "ab 6. Lizenz";
		this.from2ndLicense = "ab 2. Lizenz";
		this.atLeastOneBasisLicenseIsNeeded = "Mindestens eine Basislizenz wir benötigt";
		this.moreBasisLicensesNeeded = "Mehr Basislizenzen benötigt";
		this.or = "oder";
		this.as = "als";
		this.basisPackage = "Basispaket PDAP7";
		this.inclOracle = "incl. Oracle Lizenzen";
		this.oraclePerUser="pro Benutzer"
		this.months = "Monate";
		this.monthlyPayment = "Montliche Raten";
		this.cumulativeLeasingCosts = "Aufsummierte Kosten";
		this.leasingOnRequest = "Leasing auf Anfrage M&ouml;glich";
		this.standort1 = "Wir bieten für Großkunden eine STANDORTLIZENZ an.";
		this.standort2 = "Die Kosten für diese orientieren sich an der Anzahl ihrer Server CPUs";
		this.getOffers = "Verbindliches Angebot anfordern";
		this.printView = "Druckansicht";
	} else if (LangID == english) {
	// English
		this.id=english;
		this.dezimal = '.';
		this.title = "price calculator";
		this.licenses = "licenses";
		this.items = "items";
		this.pricePerLicense = "price per license";	
		this.sum = "sum";
		this.invalid = "invalid";
		this.allPrices = "all prices";
		this.including = "inclusive VAT";
		this.plusVat = "plus VAT";
		this.servicingContractAnnually = "maintenance contract, annually"
		this.contains = "contains";
		this.regularFunctionUpdates = "regular function updates";
		this.supportBy = "support by";
		this.phoneAndEmail = "telephone and email";
		this.exclisiveEntranceTo = "exclusive entrance to";
		this.serviceRange = "service entrance";
		this.automaticUpdateDistributionWithinTheCompanyNetwork = "automatic update distribution within the company network";
		this.from6thLicense = "from 6th license";
		this.from2ndLicense = "from 2nd license";
		this.atLeastOneBasisLicenseIsNeeded = "at least one basis license is needed";
		this.moreBasisLicensesNeeded = "more basis licenses needed";
		this.or = "or choose";
		this.as = "as";
		this.basisPackage = "BasisPackage PDAP7";
		this.inclOracle = "incl. Oracle licences";
		this.oraclePerUser="per user"
		this.months = "months";
		this.monthlyPayment = "monthly payment";
		this.cumulativeLeasingCosts = "cumulative leasing costs";
		this.leasingOnRequest = "leasing on request";
		this.standort1 = "We offer a MAJOR ENTERPRISE LICENSE.";
		this.standort2 = "The costs of these orient themselves at the number of your servers CPUs";
		this.getOffers = "Ask for an Offer";
		this.printView = "Print view";
	} else if (LangID == russian) {
	} else if (LangID == chinese) {
	} else genLanguage(defaultLanguage);
	return this;
}


/*
// Gibt den passenden Leasingfaktor zurück
// Die funtion ergab sich aus Folgernder Tabelle:
//					36		48		Laufzeit
//	0 - 4999		3,42%	2,73%
//	4999- 5000		3,43%	2,64%
//	10000 - 19999	3,25%	2,56%
//	Leasing Summe 
*/
function getLeastingFaktor(Monate_,Summe_){
	//werte runden, damit nurnoch Zahlen durch die Berrechnung rutschen
	Monate = round2(Monate_);
	Summe = round2(Summe_);
	
	if (Summe >= 20000)
		// >= 20k €
		return "Auf Anfrage";
	else if (Summe >=10000) {
		// 10k - 19999 €
		if (Monate == 36) return 3.25;
		if (Monate == 48) return 2.56;
	} else if (Summe >= 5000) {
		// 5k - 9999 €
		if (Monate == 36) return 3.34;
		if (Monate == 48) return 2.64;
	} else if (Summe < 5000) {
		// 0 - 4999 €
		if (Monate == 36) return 3.34;
		if (Monate == 48) return 2.64;
	} else return "FEHLER";
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////													Ab hier bitte keine Veränderungen mehr!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function genTYPO3Link(id)
{
	return "index.php?id=" + id + "&L=" + lang_id;
}

////////////////////////////// Erstelle neue Module

function getLeasingRate(Monate,gesammtPreis)
{
	return round2((gesammtPreis/100)*getLeastingFaktor(Monate,gesammtPreis)*mwst);
}

function getModul(id,Name,Kurz,Preis,Preis5,Preis5p,kommentar,Features){
	if(id == 0)
		this.Name = Name;
	else
		this.Name = "<a href=\"" + genTYPO3Link(id) + "\" onmouseover=\"this.T_WIDTH=200; return escape(\'"+Name+"\');\">"+Name+"</a>";
 	this.Kurz = Kurz
 	this.Preis =Preis;
 	this.Preis5 = Preis5;
 	this.Preis5p = Preis5p;
 	this.kommentar = kommentar;
 	this.PreisAktuell = 0;
 	this.Features = Features;
 }



var basismodule; 
var zusatzmodule; 
var lang;
var mwst = 1;//mwstConstant ;			// Ohne MwSt

function genBasismodule(lang_id){
	if (lang_id == german){
		basismodule = genBasismoduleGer();
		return basismodule;
	} else 	if (lang_id == english){
		basismodule = genBasismoduleEng();
		return basismodule;
	} else 	if (lang_id == russian){
		basismodule = genBasismoduleGer();
		return basismodule;
	} else 	if (lang_id == chinese){
		basismodule = genBasismoduleGer();
		return basismodule;
	} else {
	//Unbekannte Language ID: Benutze Englisch
		return genBasismodule(defaultLanguage);
		}
}

function genZusatzmodule(lang_id){
	if (lang_id == german){
		zusatzmodule = 	genZusatzmoduleGer();
		return zusatzmodule ;
	} else if(lang_id == english){
		zusatzmodule = 	genZusatzmoduleEng();
		return zusatzmodule ;
	} else if(lang_id == russian){
		zusatzmodule = 	genZusatzmoduleRus();
		return zusatzmodule ;
	} else if(lang_id == chinese){
		zusatzmodule = 	genZusatzmoduleChn();
		return zusatzmodule ;
	} else {
	//Unbekannte Language ID: Benutze Englisch
		return genZusatzmodule(defaultLanguage);
		}
}

function getBasismodule() {
	return basismodule ;
}

function getZusatzmodule() {
	return zusatzmodule ;
}

//Table Header
function tableH()
{
return "<span id=\"gesammteSeite\"><h1>"+lang.title+"</h1><form method=\"post\" id=\"form\" action=\"/fileadmin/anfrage.php\"><table border=\"1\" width=\"100%\" style=\"border-collapse: collapse\" cellpadding=\"5\">\n"+
"		<tr>\n"+
"			<td align=\"right\" style=\"width: 16%\">"+lang.licenses+"</td>\n"+
"			<td style=\"width: 50%\">"+lang.items+"</td>\n"+
"			<td align=\"right\" style=\"width: 17%\">"+lang.pricePerLicense+"</td>\n"+
"			<td align=\"right\" style=\"width: 17%\">"+lang.sum+"</td>\n"+
"		</tr>\n";//+"		</table>\n";
}

////////////////////////////////Basis
function getBasisSpalte()
{
out =
"		<tr>\n"+
"			<td align=\"right\"><span id=\"BASISCountwrap\"><input type=\"text\" name=\"BASISCOUNT\" size=\"3\" value=\"1\" onkeyup=rechne()></span></td>\n"+
"			<td>\n"+
"			\n"+
lang.basisPackage+" "+
"			<span id=\"BASISSelect\" style=\"display:none;\"><select size=\"1\" name=\"BASIS\" onchange=rechne()>\n";
	var m = getBasismodule();
	for (var i = 0; i < m.length; ++i) {
		out = out+"<option ";
		if (i == 0)	out = out+"selected";
		out = out+" value=\""+m[i].Kurz+"\">"+m[i].Name+"</option>";
	}
out = out +
"			</select></span><span id=\"BASISKOMMENTAR\"></span>\n"+
"			<div id=\"incl_oracle_box\" style=\"display:none;\"><input type=\"checkbox\" id=\"incl_oracle_checkbox\" name=\"INKLUSIVE_ORACLE\" value=\"incl_oracle\" onchange=\"rechne();\" />"+
"			<label for=\"incl_oracle_checkbox\">" + lang.inclOracle + " (<span id=\"oracle_ppu\">150</span> &euro; " + lang.oraclePerUser + ")</label> 	</div>"+
"			</td>\n"+
"			<td id=\"pdappreis\" align=\"right\"><input type=\"hidden\" value=\"0\" name=\"BASISPreis\">"+lang.invalid+"</td>\n"+
"			<td id=\"pdapgesamtpreis\" align=\"right\"><input type=\"hidden\" value=\"0\" name=\"BASISPreisGesamt\">"+lang.invalid+"</td>\n"+
"		</tr>\n";
return out;
}

////////////////////////////////////////////////
// Infotext extension begin
////////////////////////////////////////////////
function toggleInfotext(i) {
	if (document.getElementById("togglebtn_"+i).value == "+") {
		document.getElementById("togglebtn_"+i).value = "-";
		document.getElementById("zmod_infobox_"+i).style.display = "block";
	}
	else {
		document.getElementById("togglebtn_"+i).value = "+";
		document.getElementById("zmod_infobox_"+i).style.display = "none";
	}
}

function genInfotextToggleBtn(i) {
	return '<input type="button" id="togglebtn_' + i + '" onclick="toggleInfotext(' + i + ');" value="+" style="width: 20px; height: 20px;" />'
}

function genInfotextInfobox(i) {
	infotextArray = getZusatzmodule()[i].Features;
	out = "<div style=\"display: none; width: 100%;\" id=\"zmod_infobox_" + i + "\">"+
		"<ul><li>" + infotextArray.join("</li><li>") + "</li></ul></div>";
	return out;
}



////////////////////////////////////////////////
// Infotext extension end
////////////////////////////////////////////////

////////////////////////////// Module
function getModulSpalte()
{
	out = "";
	m = getZusatzmodule();
	for (var i = 0; i < m.length; ++i) {
		out = out +
			"		<tr id=\""+m[i].Kurz+"Spalte\">\n"+
			"			<td align=\"right\"><span id=\""+m[i].Kurz+"Countwrap\"><input type=\"text\" name=\""+m[i].Kurz+"\" size=\"3\" value=\"0\" onkeyup=rechne()></span></td>\n"+
			"			<td>\n"+
			"			"+genInfotextToggleBtn(i)+"\n"+
			"			"+m[i].Name+"\n"+
			"			"+genInfotextInfobox(i)+"\n"+
			"			<span id=\""+m[i].Kurz+"KOMMENTAR\"></span>\n"+
			"			</td>\n"+
			"			<td id=\""+m[i].Kurz+"preis\" align=\"right\"><input type=\"hidden\" value=\"0\" name=\""+m[i].Kurz+"Preis\">"+lang.invalid+"</td>\n"+
			"			<td id=\""+m[i].Kurz+"gesamtpreis\" align=\"right\">"+lang.invalid+"</td>\n"+
			"		</tr>\n";
	}
return out;
}


////////////////////////////// Tabellen Ende
function getTabelleEnde()
{
	var out = 
	"		<tr>\n"+
	"			<td></td>\n"+
	"			<td><b>"+lang.sum+"</b></td>\n"+
	"			<td></td>\n"+
	"			<td id=\"GESAMMTKOSTEN\" align=\"right\">"+lang.invalid+"</td>\n"+
	"		</tr>\n"+
	"</table>\n"+
	"<table width=\"100%\">\n"+
	"<tr id=\"angebotDrucken\">\n"+
	"<td><a href=\"javascript:printView()\">" + lang.printView + "</a></td>\n"+
	"<td  align=\"right\"><input type=\"submit\" value=\"" + lang.getOffers + "\" name=\"senden\"></td>\n"+
	"</tr></table>";
	return out;
}

function getSeitenEnde(){
return "<table border=\"0\" width=\"100%\"><tr><td valign=top>"+
	"<p><span id=\"mwstspan\">"+lang.allPrices+" <input type=\"radio\" value=\"INCL\" name=\"MWST\" onclick=\"updateMwst(0)\" id=\"vat_rad_btn1\" /><label for=\"vat_rad_btn1\">"+lang.including+
	"</label><input type=\"radio\" name=\"MWST\" checked value=\"ZZL\" onclick=\"updateMwst(1)\" id=\"vat_rad_btn2\" /><label for=\"vat_rad_btn2\">"+lang.plusVat+"</label></span></p><p id=\"STANDORT\"></p>"+
	"<p><span id=\"LEASING\"></span></p>"+
	"<p><b>"+lang.servicingContractAnnually+": <span id=\"WARTUNG\"></span> &euro;</b></p>"+
	"<p>"+lang.contains+":"+
	"<ul>"+
	"<li>"+lang.regularFunctionUpdates+"</li>"+
	"<li>"+lang.supportBy+" <a href=\"" + genTYPO3Link(28) + "\">"+lang.phoneAndEmail+"</a></li>"+
	"<li>"+lang.exclisiveEntranceTo+" <a href=\"" + genTYPO3Link(48) + "\">PDAP "+lang.serviceRange+"</a></li>"+
	"<li>"+lang.automaticUpdateDistributionWithinTheCompanyNetwork+"</li>"+
	"</ul>"+
	"</p>"+
	"</td>"+
	"<td valign=top style=\"border: 1px dashed #000000; padding: 10px\"><p><span id=\"LEISTUNGEN\"></span></p></td></tr></table></form></span>";
	}

///////////////////////////// Print Modules
function printM() {
	lang = genLanguage(lang_id);
	genBasismodule(lang.id);
	genZusatzmodule(lang.id);
	
	out = tableH();
	out = out + getBasisSpalte();
	out = out + getModulSpalte();
	out = out + getTabelleEnde();
	out = out + getSeitenEnde();

//	var m = getBasismodule();
//	for (var i = 0; i < m.length; ++i) {
//		out = out+"<br>"+i+": "+m[i].Name+" "+m[i].Preis+" "+m[i].Preis5+" "+m[i].Preis5p;
//	}
//
//	var m = getZusatzmodule();
//	for (var i = 0; i < m.length; ++i) {
//		out = out+"<br>"+i+": "+m[i].Name+" "+m[i].Preis+" "+m[i].Preis5+" "+m[i].Preis5p;
//	}
	document.getElementById('alles').innerHTML =out;
	rechne();
}

//Rundet eine Zahl auf die 2. Stelle nach dem Komma
function round2(x){
 z = Math.round(x*100)/100;
 return z;
}

////////////////////////////////
function rechne(){
		deactivateModuls();
		updateBasis();
		updateModuls();
		updateGesammt();
	}
	
function switchOracleBox(yesno) {
	if(yesno) {
		document.getElementById("incl_oracle_box").style.display = "block";
	}
	else  {
		document.getElementById("incl_oracle_box").style.display = "none";
		document.getElementById("incl_oracle_checkbox").checked = false;
	}
}
	
var BasisPreis
function updateBasis(){
	document.getElementById('BASISKOMMENTAR').innerHTML = "";
	m = getBasismodule();
	v = getFormValue("BASISCOUNT");
	b = document.forms["form"].elements["BASIS"].value;
	var preis;
	for (var i = 0; i < m.length; ++i) {
		if (m[i].Kurz == b){
				if(v >= 5) {
					switchOracleBox(true);
				}
				else {
					switchOracleBox(false);
				}
				
				oraclePreis = 0.0;
				if(document.getElementById("incl_oracle_checkbox").checked) {
					oraclePreis = 150.0 * v;
				}
				
				document.getElementById("oracle_ppu").innerHTML = printPreis(round2(150.0 * mwst));
				
				if (v < 5) 
					{
						preis = m[i].Preis;
						if (v > 1) preis = preis+m[i].Preis5p*(v-1);
						document.getElementById('BASISKOMMENTAR').innerHTML = "<br>"+m[i].kommentar[0];
					}
				else if (v == 5) 
						{	
							preis = (m[i].Preis5*v)+oraclePreis;
							document.getElementById('BASISKOMMENTAR').innerHTML = "<br>"+m[i].kommentar[1]+"";
						}
					else 
						{
							preis = (m[i].Preis5*5+m[i].Preis5p*(v-5))+oraclePreis;
							document.getElementById('BASISKOMMENTAR').innerHTML = "<br>"+m[i].kommentar[1]+"";
						}
				if (v == 0) {
						preis = 0;
						document.getElementById('pdappreis').innerHTML = printPreis(round2(m[i].Preis*mwst)) +" &euro;";
					}
					else
						{
							/*if (v == 1)*/ document.getElementById('pdappreis').innerHTML = printPreis((round2(m[i].Preis+(oraclePreis/v))*mwst))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2(m[i].Preis*mwst))+"\" name=\"BASISPreis\">";
//							else if (v < 5) document.getElementById('pdappreis').innerHTML = printPreis(round2(m[i].Preis*mwst))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2(m[i].Preis*mwst))+"\" name=\"BASISPreis\"><br>"+lang.from2ndLicense+" "+printPreis(m[i].Preis5p*mwst)+"  &euro;";
//								else if (v == 5) document.getElementById('pdappreis').innerHTML = printPreis(round2(m[i].Preis5*mwst))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2(m[i].Preis5*mwst))+"\" name=\"BASISPreis\">";
//									else if (v > 5) document.getElementById('pdappreis').innerHTML = printPreis(round2(m[i].Preis5*mwst))+" &euro;<br>"+lang.from6thLicense+" "+printPreis(m[i].Preis5p*mwst)+" &euro;<input type=\"hidden\" value=\""+printPreis(m[i].Preis5p*mwst)+"\" name=\"BASISPreis\">";
						}
				document.getElementById('pdapgesamtpreis').innerHTML = printPreis(round2(preis*mwst)) +" &euro; <input type=\"hidden\" value=\""+ printPreis(round2(preis*mwst)) +"\" name=\"BASISPreisGesamt\">";
				
				///////////////FEATURES TEXT
				var features_ = "";
				if (v > 0){
					features_ = "<b>"+lang.contains+": </b><br><b>"+m[i].Name+"</b><br>";
					for (var x = 0; x < m[i].Features.length; ++x) {
							features_ = features_ + "&nbsp;&nbsp;"+m[i].Features[x]+"<br>";
						}
					}
				document.getElementById('LEISTUNGEN').innerHTML = features_;
			}
	}
	if (v == 0) 
		document.getElementById('BASISKOMMENTAR').innerHTML = 
			"<br><font color=\"#ff0000\">"+lang.atLeastOneBasisLicenseIsNeeded+"</font>";
	BasisPreis = preis;
	
}

function updateModuls(){
	var m = getZusatzmodule();
	for (var i = 0; i < m.length; ++i) {
		//alten Kommentar löschen
		document.getElementById(m[i].Kurz+'KOMMENTAR').innerHTML = "";
		var v = getFormValue(m[i].Kurz);
		var basisLizenzen = getFormValue("BASISCOUNT");
		if (v > basisLizenzen)
			{
				document.getElementById(m[i].Kurz+'KOMMENTAR').innerHTML = 
					"<br><font color=\"#ff0000\">"+lang.moreBasisLicensesNeeded+"</font> "+lang.or+" "+lang.as+" <a href=\"javascript:switchBasis(\'"+m[i].Kurz+"\')\">"+lang.basisPackage+"</a>";
			} 

		var preis;
		if (v == 0) preis = 0;
		if (v < 5) preis = m[i].Preis*v;
		else if (v == 5) preis = m[i].Preis5*v;
		else preis = m[i].Preis5*5+m[i].Preis5p*(v-5);
		if (v == 0) {
				preis = 0;
				document.getElementById(m[i].Kurz+'preis').innerHTML = printPreis(round2(m[i].Preis*mwst))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2(m[i].Preis*mwst))+"\" name=\""+m[i].Kurz+"Preis\">";
			} else
				document.getElementById(m[i].Kurz+'preis').innerHTML = printPreis(round2((preis/v)*mwst))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2((preis/v)*mwst))+"\" name=\""+m[i].Kurz+"Preis\">";
		document.getElementById(m[i].Kurz+'gesamtpreis').innerHTML = printPreis(round2(preis*mwst)) +" &euro;<input type=\"hidden\" value=\""+printPreis(round2(preis*mwst))+"\" name=\""+m[i].Kurz+"Preisgesamt\">";
		m[i].PreisAktuell = preis;
						///////////////FEATURES TEXT
				var features_ = document.getElementById('LEISTUNGEN').innerHTML;
				if (v > 0){
					features_ = features_+"<br><b>"+m[i].Name+"</b><br>";
					for (var x = 0; x < m[i].Features.length; ++x) {
							features_ = features_ + "&nbsp;&nbsp;"+m[i].Features[x]+"<br>";
						}
					}
				document.getElementById('LEISTUNGEN').innerHTML = features_+"<input type=\"hidden\" value=\""+replaceChars(features_)+"\" name=\"features\">";
	}
}

//gesammtpreis errechnen
function updateGesammt(){
	var m = getZusatzmodule();
	var gesammtPreis = 0;
	for (var i = 0; i < m.length; ++i) {
		gesammtPreis =gesammtPreis +m[i].PreisAktuell;
	}
	gesammtPreis = gesammtPreis+ BasisPreis ;
	document.getElementById('GESAMMTKOSTEN').innerHTML = "<b>"+printPreis(round2(gesammtPreis*mwst)) +" &euro;</b>"+
	"<input type=\"hidden\" value=\""+printPreis(round2(gesammtPreis*mwst))+"\" name=\"Preisgesamt\">";
	
	//Wartungsvertrag
	document.getElementById('WARTUNG').innerHTML = printPreis(round2(gesammtPreis*0.16*mwst))+
	"<input type=\"hidden\" value=\""+printPreis(round2(gesammtPreis*0.16*mwst))+"\" name=\"WartungPreis\">";
	
	
	//Leasing
	if (gesammtPreis < leasingGrenze)
		document.getElementById('LEASING').innerHTML = "<table border=\"1\" style=\"border-collapse: collapse;\"><tr><td>&nbsp;</td><td>36 "+lang.months+"&nbsp;&nbsp;</td><td>48 "+lang.months+"&nbsp;&nbsp;</td></tr>"+
		"<tr><td>"+lang.monthlyPayment+":&nbsp;&nbsp;</td><td><b>"+printPreis(getLeasingRate(36,gesammtPreis))+" &euro;<input type=\"hidden\" value=\""+printPreis(getLeasingRate(36,gesammtPreis))+"\" name=\"leasing36\">&nbsp;&nbsp;</b></td><td><b>"+printPreis(getLeasingRate(48,gesammtPreis))+ " &euro;<input type=\"hidden\" value=\""+printPreis(getLeasingRate(48,gesammtPreis))+"\" name=\"leasing48\">&nbsp;&nbsp;</b></td></tr>"+
		"<tr><td>"+lang.cumulativeLeasingCosts+":&nbsp;&nbsp;</td><td><b>"+printPreis(round2(getLeasingRate(36,gesammtPreis)*36))+" &euro;<input type=\"hidden\" value=\""+printPreis(round2(getLeasingRate(36,gesammtPreis)*36))+"\" name=\"leasing36all\">&nbsp;&nbsp;</b></td><td><b>"+printPreis(round2(getLeasingRate(48,gesammtPreis)*48))+ " &euro;<input type=\"hidden\" value=\""+printPreis(round2(getLeasingRate(48,gesammtPreis)*48))+"\" name=\"leasing48all\">&nbsp;&nbsp;</b></td></tr></table>";
	else
		document.getElementById('LEASING').innerHTML = lang.leasingOnRequest;
	if (gesammtPreis > grosskunde)
		document.getElementById('STANDORT').innerHTML ="<b style=\"background-color: #FFFF00\">"+lang.standort1+"<br>"+lang.standort2+"</b>";
	else document.getElementById('STANDORT').innerHTML = "";

}

var deaktivated = "";
//Deaktiviert Module die Berreits im Basis Paket enthalten sind
//Und Reaktiviert wieder vorher deaktvierte Module
function deactivateModuls(){
	var basisModul = document.forms["form"].elements["BASIS"].value;
	if (basisModul != deaktivated){
		try {
			if (deaktivated != "") 
				document.getElementById(deaktivated +'Spalte').style.display="";
				//display  = "block";
			}
		catch (e){}
		var feld = document.getElementById(basisModul +'Spalte');
		if (feld  != null) {
				feld.style.display = "none";
				setFormValue(basisModul,0);
				deaktivated = basisModul ;
			}
	}
}

function switchBasis(modul){
	setFormValue("BASIS",modul);
	setFormValue("BASISCOUNT",getFormValue(modul));
	
	rechne();
}


function updateMwst(an){
	if (an == 1)
		mwst = 1;
	else 
		mwst = mwstConstant;
	rechne();
}


//Liest Wert eines Feldes aus, wenn es Positiven Numerischen wert enthält. sonst 0
function getFormValue(FormField){
	var v = document.forms["form"].elements[FormField].value;
	if (v > 0) 
	//werte in Zahlen umformen -> Typsicherheit
		return Math.round(v);
	else {
		if (v != 0)
			document.forms["form"].elements[FormField].value = "";
		return 0;
	}
}

function setFormValue(FormField,value){
	document.forms["form"].elements[FormField].value = value;
}

function printPreis(x) {
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  var p = k.indexOf('.');
  return k.substring(0, p) + lang.dezimal + k.substring(p+1, p+3);
}

function printView(){
	var $mwstonoff = document.forms["form"].elements["MWST"].value;

	document.getElementById('STANDORT').innerHTML = "";
	m = getBasismodule();
	v = getFormValue("BASISCOUNT");
	b = document.forms["form"].elements["BASIS"].value;
	var preis;
	for (var i = 0; i < m.length; ++i) {
	if (m[i].Kurz == b){
			document.getElementById('BASISSelect').innerHTML =	m[i].Name;
		}
	}
	
	document.getElementById('BASISCountwrap').innerHTML = document.forms["form"].elements["BASISCOUNT"].value;
	
	m = getZusatzmodule();
	for (var i = 0; i < m.length; ++i) {
		document.getElementById(m[i].Kurz+'Countwrap').innerHTML = document.forms["form"].elements[m[i].Kurz].value;
	}
	document.getElementById('angebotDrucken').style.display="none";
			
	//MWST ZURECHTBASTELN
	if (mwst != 1) {
		document.getElementById('mwstspan').innerHTML = lang.allPrices +" "+lang.including;
	} else {
		document.getElementById('mwstspan').innerHTML =  lang.allPrices +" "+lang.plusVat;
		}
	
	var $buffer = document.getElementById('gesammteSeite').innerHTML;	document.write("<html><head><meta http-equiv=\"Content-TYPE\" content=\"text/html; charset=utf-8\"><link rel=\"stylesheet\" type=\"text/css\" href=\"uploads/tf/style.css\"></head><body>"+	$buffer+"</body></html>");
	self.print();

}

function replaceChars(temp)
 { 
 		out = "\""; // ersetze dieses Zeichen 
 		add = "\\\'"; // setze dieses Zeichen ein 

 		while (temp.indexOf(out)>-1) 
 			{ 
 				pos= temp.indexOf(out); 
 				temp = "" + (temp.substring(0, pos) + add + temp.substring((pos + out.length), temp.length));
 			} 
 		return temp; 
 	}