function Calculator(){	
	
	//Get fields values
    var numberOfSystems =              document.getElementById("numberOfSystems");
	$numberOfSystems = numberOfSystems.value;
    var averageTicketsAmount =         document.getElementById("averageTicketsAmount");
	$averageTicketsAmount = averageTicketsAmount.value;
    var costPerHourHelpDesk =          document.getElementById("costPerHourHelpDesk");
	$costPerHourHelpDesk = costPerHourHelpDesk.value;
    var costPerHourManger =            document.getElementById("costPerHourManger");
	$costPerHourManger = costPerHourManger.value;
    //Constans
    //percentageSavePerAutomation = 0.3; // Reduzierung der Transaktione um 30%
    eskaliertesTicketManger = 0.5; //Splittung auf Manager 0,5 h und HelpDesk 1 h
	eskaliertesTicketHelpDesk = 1; //Splittung auf Manager 0,5 h und HelpDesk 1 h
    percentageEskalierteTickets = 0.07;
    //decreaseEskalationPerAutomation = 0.4;
    averageTransactionsPerTicket = 4;
    minutesEffortPerTransaction =  3.5;
	reportingEffortPerSystem = 16;
	//percentageSavePerAutomationReport =0.7;
    this.calculate();	
}
Calculator.prototype.calculate = function(){
    var ticketsPerMoth = $averageTicketsAmount; //Ticktetanzahl= Anzahl der Tickets
	var transactionPerMonth = ticketsPerMoth * averageTransactionsPerTicket; //Transaktionen pro Monat = Ticktetanzahl*Anzahl der Transaktionen pro Ticket
	var allCostAgents = transactionPerMonth * minutesEffortPerTransaction/60*$costPerHourHelpDesk/8; //Kosten Helpdesk = Transaktionen pro Monat*Zeitaufwand HelpDesk/60*Kosten pro HelpDesk Stunde
	var qualityCostManger = ticketsPerMoth * percentageEskalierteTickets * eskaliertesTicketManger * $costPerHourManger/8; // Kosten Eskalation Manager = Ticktetanzahl* Anzahl der Eskalirten Ticket (10%) * Arbeitaufwnad Manager * Arbeitskosten Manager
	var qualityCostHelpDesk = ticketsPerMoth * percentageEskalierteTickets * eskaliertesTicketHelpDesk * $costPerHourHelpDesk/8; // Kosten Eskalation Helpdesk = Ticktetanzahl* Anzahl der Eskalirten Ticket (10%) * Arbeitaufwnad Helpdesk * Arbeitskosten Helpdesk
	var qualityCost = qualityCostManger + qualityCostHelpDesk;//Eskalationskosten gesamt
	var reportingCost = $numberOfSystems * reportingEffortPerSystem * $costPerHourManger/8;// ReportingKosten = Anzahl systeme *Reportingkosten *Stundenkosten 
	
	var B2BCost = 1;
	
	if ($numberOfSystems == 2){B2BCost = 1.15;}
	if ($numberOfSystems == 3){B2BCost = 1.25;}
	if ($numberOfSystems == 4){B2BCost = 1.45;}
	if ($numberOfSystems == 5){B2BCost = 1.70;}
	if ($numberOfSystems == 6){B2BCost = 2;}
	if ($numberOfSystems == 7){B2BCost = 2.35;}
	if ($numberOfSystems == 8){B2BCost = 2.75;}
	
	var save_numberOfSystems = 1;
	//averageTicketsAmount ersparniss in %
	if ($numberOfSystems == 2){save_numberOfSystems = 15;}
	if ($numberOfSystems == 3){save_numberOfSystems = 19;}
	if ($numberOfSystems == 4){save_numberOfSystems = 23;}
	if ($numberOfSystems == 5){save_numberOfSystems = 28;}
	if ($numberOfSystems == 6){save_numberOfSystems = 31;}
	if ($numberOfSystems == 7){save_numberOfSystems = 33;}
	if ($numberOfSystems == 8){save_numberOfSystems = 35;}
	
	var save_averageTicketsAmount = 1;
	if ($averageTicketsAmount == 500){save_averageTicketsAmount = 15;}
	if ($averageTicketsAmount == 1000){save_averageTicketsAmount = 19;}
	if ($averageTicketsAmount == 1500){save_averageTicketsAmount = 23;}
	if ($averageTicketsAmount == 2500){save_averageTicketsAmount = 28;}
	if ($averageTicketsAmount == 4000){save_averageTicketsAmount = 31;}
	if ($averageTicketsAmount == 6000){save_averageTicketsAmount = 33;}
	if ($averageTicketsAmount == 9999){save_averageTicketsAmount = 35;}
    
	var save_costPerHourHelpDesk = 1;
	if ($costPerHourHelpDesk == 100){save_costPerHourHelpDesk = -5;}
	if ($costPerHourHelpDesk == 200){save_costPerHourHelpDesk = 0;}
	if ($costPerHourHelpDesk == 300){save_costPerHourHelpDesk = 5;}
	if ($costPerHourHelpDesk == 400){save_costPerHourHelpDesk = 10;}
	if ($costPerHourHelpDesk == 500){save_costPerHourHelpDesk = 15;}
	if ($costPerHourHelpDesk == 600){save_costPerHourHelpDesk = 20;}
	if ($costPerHourHelpDesk == 750){save_costPerHourHelpDesk = 32;}
	if ($costPerHourHelpDesk == 1000){save_costPerHourHelpDesk = 50;}
	
	var save_costPerHourManger = 1;
	if ($costPerHourManger == 300){save_costPerHourManger = -5;}
	if ($costPerHourManger == 400){save_costPerHourManger = 0;}
	if ($costPerHourManger == 500){save_costPerHourManger = 5;}
	if ($costPerHourManger == 600){save_costPerHourManger = 10;}
	if ($costPerHourManger == 700){save_costPerHourManger = 15;}
	if ($costPerHourManger == 800){save_costPerHourManger = 20;}
	if ($costPerHourManger == 1000){save_costPerHourManger = 32;}
	if ($costPerHourManger == 1500){save_costPerHourManger = 50;}
	
	
	//var reportingSave = reportingCost * percentageSavePerAutomationReport //ersparnis durch SD bei Automatisirung
	var costWithoutSD = Math.round((((allCostAgents + qualityCost + reportingCost))*B2BCost)*12*1)/1
	
	var savep1 = ((save_numberOfSystems + save_averageTicketsAmount)/2)
	var savep2 = ((save_costPerHourHelpDesk + save_costPerHourManger)/2)
	var savep = Math.round(((savep1 *(100 + savep2)/100))*1)/1
	//var saveAgents = allCostAgents * percentageSavePerAutomation; //Agentkosten duch automatisirung
	//var saveQualityCost = decreaseEskalationPerAutomation * qualityCost; //ersparniss bei eskalation duchch Automatisiurung
    //var saveMonth = saveQualityCost + saveAgents + reportingSave; //Kostenersparniss duch automatisirung
    //var saveYear = saveMonth*12*B2BCost; //Kostenersparniss duch automatirug
    //var save36Month = saveYear*3; // FKostenersparniss 3 Jahre
	//var lizenzen = numberOfSystems*(95000/3); //lizenzkosten
    //var company36Month = lizenzen*0.32*3; //Wartung
    //Var allCost = lizenzen + company36Month;  //+ serviceImplementirung; //alle Kosten 
	//var allCost = 1;
    //var totalSave = Math.round(((saveYear - allCost))*1)/1
	var totalSave = Math.round((costWithoutSD-(costWithoutSD*(100-savep)/100))*1)/1
    //var savep = Math.round((((100/costWithoutSD*costWithSD)-100)*(-1))*1)/1; 
	
	//if (costWithSD < 1){costWithSD = costWithoutSD;
	//totalSave = 0;
	//savep = 0;}
	
   document.getElementById("totalSave").value = Trenner(totalSave) +  " "+ currency;     
   document.getElementById("costWithoutSD").value = Trenner(costWithoutSD)  +  " " + currency   ;     
   //document.getElementById("costWithSD").value = Trenner(costWithSD);
   document.getElementById("savep").value = Trenner(savep)  +  "%";   ;
}

function Trenner(number) {
number = '' + number;
if (number.length > 3) {
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
else
// hier wird das Trennzeichen festgelegt mit '.'
output+= '.' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return number;
}


function isNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;   
}

function checkForInvalidChars(id){
	string = id.value;	
	var valid = isNumeric(string);
	if(!valid){
		id.value = string.substring(0,string.length-1);
		window.alert("Es sind nur Zahlen erlaubt")
	}
}



function clearFields(){
	//Clear calculation fields 
    document.getElementById("totalSave").value = " ";
    document.getElementById("costWithoutSD").value = " ";
	//document.getElementById("costWithSD").value = " ";
	document.getElementById("savep").value = " ";
}
 
