
/**
 * Submit the search form in the header. 
 * Used in the ajax-search.
 */
function submitSearchForm()
{
	document.searchForm.submit();
}

var initialDeposit = 0;
var monthlyDeposit = 0;
var runtimeMonth = 12;

var accumulatedDepositPerMonth;

function addSeparatorsNF(nStr, inD, outD, sep)
{
	nStr += '';
	
	var dpos = nStr.indexOf(inD);
	var nStrEnd = ',00';
	if (dpos != -1) {
		nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);
		if(nStrEnd.length < 3)
		{
			nStrEnd += "0";
		}
		nStr = nStr.substring(0, dpos);
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(nStr)) {
		nStr = nStr.replace(rgx, '$1' + sep + '$2');
	}
	
	
	return nStr + nStrEnd;
}


function round2Decimals(number)
{
	var amount = Math.round(number * 100) / 100;
	return amount;
}

function recalculateInterest()
{					//Jan,'Feb','Mrz','Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
	var monthDays = [ 31,  28,   31,   30,    31,     30,    31,    31,    30,   31,    30,     31];
	var accumulatedInterest = 0;
	
	var accumulatedDeposit = initialDeposit;
	var depositForInterest = initialDeposit;
	accumulatedDepositPerMonth = new Array(runtimeMonth);
	
	var graphDiv = $('#calcgraph');
	
	var currentDate = new Date();
	var currentMonth = currentDate.getMonth();
	
	for(var i=1;i<=runtimeMonth;i++)
	{
		//add the deposit we are doing for this month except in the first month
		if(i > 1)
		{
			accumulatedDeposit +=  monthlyDeposit;
			depositForInterest += monthlyDeposit;
		}
			
		var iterationsDaysInMonth = monthDays[(i+currentMonth-1)%12];
		
		var curInterestRate = interestRate/365.0*iterationsDaysInMonth;
		
		//var monthInterest = round2Decimals(accumulatedDeposit * curInterestRate);
		var monthInterest = round2Decimals(depositForInterest * curInterestRate);
		
		accumulatedInterest += monthInterest;
		
		accumulatedDeposit += monthInterest;
		
		accumulatedDepositPerMonth[i-1] = accumulatedDeposit;
	}
	
	if(runtimeMonth == 12 && monthlyDeposit == 0)
	{
		accumulatedInterest = initialDeposit * interestRate;	
	}
	
	var sparErtrag = initialDeposit + (runtimeMonth - 1) * monthlyDeposit;

	if(cmsLanguage == "nl")
	{
		var zinsgewinnSpan = $('#zinsgewinn')[0];
		zinsgewinnSpan.innerHTML = 	 "&euro; " + addSeparatorsNF(round2Decimals(accumulatedInterest), '.', ',', '.');
		
		var zinsgewinnSpan1 = $('#zinsgewinn1')[0];
		zinsgewinnSpan1.innerHTML = "&euro; " + addSeparatorsNF(round2Decimals(accumulatedInterest), '.', ',', '.');
		
		var sparertragSpan = $('#sparertrag')[0];
		sparertragSpan.innerHTML = "&euro; " + addSeparatorsNF(round2Decimals(sparErtrag), '.', ',', '.');
		
		var gesamtertragSpan = $('#gesamtertrag')[0];
		gesamtertragSpan.innerHTML = "&euro; " + addSeparatorsNF(round2Decimals(accumulatedInterest + sparErtrag), '.', ',', '.');
	}
	else
	{
		var zinsgewinnSpan = $('#zinsgewinn')[0];
		zinsgewinnSpan.innerHTML = 	addSeparatorsNF(round2Decimals(accumulatedInterest), '.', ',', '.') + " &euro;";
		
		var zinsgewinnSpan1 = $('#zinsgewinn1')[0];
		zinsgewinnSpan1.innerHTML = addSeparatorsNF(round2Decimals(accumulatedInterest), '.', ',', '.') + " &euro;";
		
		var sparertragSpan = $('#sparertrag')[0];
		sparertragSpan.innerHTML = addSeparatorsNF(round2Decimals(sparErtrag), '.', ',', '.') + " &euro;";
		
		var gesamtertragSpan = $('#gesamtertrag')[0];
		gesamtertragSpan.innerHTML = addSeparatorsNF(round2Decimals(accumulatedInterest + sparErtrag), '.', ',', '.') + " &euro;";
	}

	
	drawGrid(graphDiv);
}

function drawGrid(div)
{
	
	if(cmsLanguage == "nl")
	{
		var monthNames = ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];
	}
	else
	{
		var monthNames = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
	}
	
	div[0].innerHTML = '';
	
	//coordinate system, base lines
	div.drawLine(80,18, 80, 224, {color: '#bebebe', stroke : 2.5});
	div.drawLine(80,224, 430, 224, {color: '#bebebe', stroke : 2.5});
	
	//calculate vertical scaling
	var maxDeposit = accumulatedDepositPerMonth[runtimeMonth-1] + monthlyDeposit;
	var roundedMax = Math.ceil((maxDeposit+50) / 100) * 100;
	var minDeposit = initialDeposit;
	var roundedMin = Math.floor(minDeposit / 100) * 100;
	
	var scaling = 198/(roundedMax - roundedMin);
	var diff = roundedMax - roundedMin;
	var yStep = 1;
	while(diff > 18)
	{
		yStep *= 10;
		diff /= 10;
	}
	
	//draw horizontal lines (amount of money)
	for(var i=0;i<diff;i++)
	{
		
		
		var value =((i+0.5)*yStep+roundedMin);
		if(value > 1000)
		{
			var pre = Math.floor(value/1000);
			var post = value%1000;
			if(post < 10)
				post = "00"+post;
			else if(post < 100)
				post = "0"+post;
			
			value = pre+"."+post;
		}
		div.drawLine(12, 214-(scaling*i*yStep), 440, 214-(scaling*i*yStep), {color: '#bebebe', stroke : 1});
		if(i < diff-1)

			if(cmsLanguage == "nl")
			{
				div.append('<div class="calcamountLabel" style="top: ' + ((214-scaling*i*yStep)- (scaling*yStep*0.5)-7) + 'px;">&euro; ' + value + "" + '</div>');
			}
			else
			{
				div.append('<div class="calcamountLabel" style="top: ' + ((214-scaling*i*yStep)- (scaling*yStep*0.5)-7) + 'px;">' + value + "" + ' &euro;</div>');				var monthNames = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
			}
			
	}
	
	//calculate offsets for months
	var dX;
	if(runtimeMonth <= 12)
	{
		dX = Math.floor((410-64)/runtimeMonth);
	}
	
	//Draw monthly lines including calculated amounts
	var currentDate = new Date();
	var currentMonth = currentDate.getMonth();
	var currentYear = String(currentDate.getFullYear());
	
	var initialDepositY = 214 - scaling * (initialDeposit - roundedMin);
	var oldY = initialDepositY;
	
	var oldMonthlyDepositY = initialDepositY;
	
	for(var i=1;i<=runtimeMonth;i++)
	{
		currentMonth = (currentMonth + 1) % 12;
		if(oldMonth > currentMonth){
			currentYear++
			currentYear = String(currentYear);
		}
		
		//the month line
		div.drawLine(80+i*dX,12, 80+i*dX, 234, {color: '#bebebe'});
		div.append('<div class="calcmonthLabel" style="left: ' + (80+i*dX-11) + 'px;">' + monthNames[currentMonth] + '<br/>' + "20" + currentYear.substr(2,2) + '</div>');
		var oldMonth = currentMonth;
		
		//draw the accumulated deposit lines
		var newY = 214 - scaling * (accumulatedDepositPerMonth[i-1] + monthlyDeposit- roundedMin);
		div.drawLine(80+(i-1)*dX, oldY, 80+i*dX, newY, {color: '#c30500', stroke:3});
		
		var newMonthlyDepositY = oldMonthlyDepositY - scaling * monthlyDeposit;
		div.drawLine(80+(i-1)*dX, oldMonthlyDepositY, 80+i*dX, newMonthlyDepositY, {color: '#eda51b', stroke:3});
		oldMonthlyDepositY = newMonthlyDepositY;
		
		oldY = newY;
	}
	div.append('<img id="calcarrowx" src="' + jsAjaxBase +  '/_img/graph_arrow_right.png"/>');
	div.append('<img id="calcarrowy" src="' + jsAjaxBase +  '/_img/graph_arrow_up.png"/>');
	
	//draw the initial deposit line
	div.drawLine(80, initialDepositY, 430, initialDepositY, {color: '#059c06', stroke:3});
}
