var separatorT = ' ';
var taxRate = 0.19;
var separatorC = " | ";
var decimalFrom = ".";
var decimalTo = ",";
var euroRFix = 30.1260;
var decimalNum = 100;
document.decimalFormat = "00";
var decimalFormat = "00";
	/* public */
function replaceStr( fullS, oldS, newS ) {
	fullString = fullS.toString();
	var rplS = '';
	for ( var i = 0; i < fullString.length; i++ ) {
		if ( fullString.substring( i, i + oldS.length ) == oldS ) {
			rplS = fullString.substring( 0, i ) + newS + fullString.substring( i + oldS.length, fullString.length );
			fullString = rplS;
			i = i - 1;
		}
	}
	return fullString;
}
function formatNum( num ){
	// sets thousand separators
	var num = roundParseNum( new Number( num ), decimalFormat.length, "r" );
	num = replaceStr( num.toString(), decimalFrom, decimalTo );
	var res = "";
	var sep = "";
	var dcm = "";
	var idx = num.indexOf( decimalTo );
	if( idx != -1 ){
		dcm = num.substring( idx, num.length );
		num = num.substring( 0, idx );
	}
	for( var i = num.length; i > 0; i -= 3 ){
		res = num.substring( i - 3, i ) + sep + res;
		sep = separatorT;
	}
	return ( res + dcm );
}
function formatNumD( num ){
	// sets fixed count of decimal places
	var num = formatNum( num.toString() );
	var dcm = "";
	var idx = num.indexOf( decimalTo );
	if( idx != -1 ){
		dcm = num.substring( idx + 1, num.length );
		num = num.substring( 0, idx );
	}
	while( dcm.length < decimalFormat.length ){
		dcm += "0";
	}
	return ( num + decimalTo + dcm );
}
function roundParseNum( nm, dc, rp ) {
	// nm - number, dc - count of decimal places, rp - round/parse method
	var dec = "1";
	for( var i = 1; i <= dc; i++ ) {
		dec += "0";
	}
	dec = new Number( dec );
	if( rp == "r" ) return ( Math.round( nm * dec ) / dec );
	if( rp == "p" ) return ( parseInt( nm * dec, 10 ) / dec );
	return nm;
}
function getEuroValue( vSKK ){
	if( vSKK == "" ) return "";
	// var euroR = 1;
	return countSKK( vSKK, euroRFix )
	return "";
}
function getEuroValueFix( vSKK ){
	if( vSKK == "" ) return "";
	return countSKK( vSKK, euroRFix )
	return "";
}
function getEuroValueFixR( vSKK ){
	if( vSKK == "" ) return "";
	return countEuro( vSKK, euroRFix );
}
function countEuro( vSKK, euroR ){
	var dFormat = document.decimalFormat;					// počet desatinných miest
	var dRound = new Number( "1" + dFormat );
	var vSKK = replaceStr( vSKK, ",", "." );
	vSKK = new Number( replaceStr( vSKK, separatorT, "" ) );
	if( isNaN( vSKK ) || isNaN( euroR ) || euroR == "" ) return "";
	var rst = ( Math.round( ( vSKK / euroR ) * dRound ) / dRound ).toString();
	var idx = rst.indexOf( "." );
	if( idx == -1 ) return formatNum( rst ) + decimalTo + dFormat;
	var dn = rst.substring( rst.indexOf( "." ) + 1, rst.length );
	while( dn.length < dFormat.length ){
		dn += "0";
	}
	return formatNum( rst.substring( 0, rst.indexOf( "." ) ) ) + decimalTo + dn;
}
function getSKKValueFix( vSKK ){
	if( vSKK == "" ) return "";
	return countSKK( vSKK, euroRFix );
}
function countSKK( vEUR, euroR ){
	var dFormat = document.decimalFormat;					// počet desatinných miest
	var dRound = new Number( "1" + dFormat );
	var vSKK = replaceStr( vEUR, ",", "." );
	vSKK = new Number( replaceStr( vSKK, separatorT, "" ) );
	if( isNaN( vSKK ) || isNaN( euroR ) || euroR == "" ) return "";
	var rst = ( Math.round( ( vSKK * euroR ) * dRound ) / dRound ).toString();
	var idx = rst.indexOf( "." );
	if( idx == -1 ) return formatNum( rst ) + decimalTo + dFormat;
	var dn = rst.substring( rst.indexOf( "." ) + 1, rst.length );
	while( dn.length < dFormat.length ){
		dn += "0";
	}
	return formatNum( rst.substring( 0, rst.indexOf( "." ) ) ) + decimalTo + dn;
}
function write_to( ciel, hodnota ){
	var el;
	( document.all )? el = document.all[ ciel ] : el = document.getElementById( ciel );
	el.innerHTML = hodnota;
}
function write_toE( ciel, hodnota ){
	var elm = document.getElementById( ciel );
	if( elm ) elm.innerHTML = hodnota == "" ? "&nbsp;" : hodnota + " SKK";
}
function getGrossInterestSKK( urokHruby, mna ) {
	return roundParseNum( urokHruby, 2, "r" );
}
function getGrossInterestEUR( urokHruby, mna ) {
	return roundParseNum( urokHruby, 2, "r" );
}
function getTaxSKK( hrubyUrok, mna ) {
	// tax to 1.1.2009
	if( mna == "SKK" ) {
		return parseInt( parseInt( hrubyUrok, 10 ) * taxRate , 10 );
	} else {
		return ( Math.round( hrubyUrok * taxRate * 100 ) / 100 );
	}
}
function getTaxEUR( hrubyUrok, mna ) {
	// tax from 1.1.2009
	if( mna == "EUR" ) {
		return roundParseNum( hrubyUrok * taxRate, 2, "p" );
	} else {
		return roundParseNum( hrubyUrok * taxRate, 2, "r" );		
	}
}
function getNetInterestSKK( urokHruby, mna ) {
	return roundParseNum( urokHruby - getTaxSKK( urokHruby, mna ), 2, "r" );
}
function getNetInterestEUR( urokHruby, mna ) {
	return roundParseNum( urokHruby - getTaxEUR( urokHruby, mna ), 2, "r" );
}
function getPocetSplatok( rokov ) {
	return rokov * 12;
}
function getPoplatok_zaPoskytnutie( pperc, pmin, suma) {
	var temp = suma * pperc / decimalNum;
	if(temp < pmin) {
		temp = pmin;}
	return formatNum(roundParseNum( temp, 2, "r"));
}
function RPMN(uver, anuita, pocmes, popl, mespopl, splpoist, pocsplpoist, frekvpoist) {
    var u1 = 0;
    var u2 = 10;
    var npval = -1;
    var poist = new Array();;
    var poist1;
    var j = 1;
    var i = 1;
    var tmpRPMN;
    tmpRPMN = (u1 + u2) / 2;
    for (j; j <= pocmes; j++) {
        poist[j] = 0;
    }
    poist1 = 0;
    if (pocsplpoist == 1) {
        poist1 = splpoist;
    }
    else {
        j = 1;
        for (j; j <=(pocsplpoist * frekvpoist); j++) {
            for (i; i <= j; i++) {
                if (j == frekvpoist * i) {
                    poist[j] = splpoist;
                }
            }
        }
    }
    j = 1;
    while (Math.abs(npval - uver + popl + poist1) > 0.000001) {
        if ((npval - uver + popl + poist1) < 0) {
            u2 = tmpRPMN;
            tmpRPMN = (u1 + u2) / 2;
        }
        else {
            u1 = tmpRPMN;
            tmpRPMN = (u1 + u2) / 2;
        }
        npval = 0;
        for (i=1; i <= pocmes; i++) {
            npval = (anuita + mespopl + poist[i]) / Math.pow((1 + tmpRPMN), (i / 12)) + npval;
        }
        j = j + 1;
        if (j > 100) {
	//ERROR
        }
    }
    return tmpRPMN;
}


