﻿var TILIA_MAX_SKLADOV = 6;		// največje število skladov v katere se vlaga
var TILIA_MIN_PREMIJA = 25;		// minimalna mesečna premija
var TILIA_MAX_PREMIJA = 3000;	// maksimalna mesečna premija

function um_obvesti(id, s) {
    if ( document.getElementById )
        if ( document.getElementById(id) )
            if ( document.getElementById(id).innerHTML ) {
                if ( s.length > 0 )
                    document.getElementById(id).innerHTML = s;
                else
                    document.getElementById(id).innerHTML = "&nbsp;";
                return true;
            }
    if ( s.length > 0 ) alert(s);
    return false;
}

function um_display(id, visible_B) {
    if ( document.getElementById )
        if ( document.getElementById(id) )
            if ( document.getElementById(id).style )
                if ( visible_B )
                    document.getElementById(id).style.display = "block";
                else
                    document.getElementById(id).style.display = "none";
}

function um_parseInteger(expr) {
    var n = parseInt(expr);
    if ( isNaN(n) )
        return 0
    else
        return n
}

function formatNumber(expr, decplaces) {
	var decseparator = arguments[2] || ",";
	var thoseparator = arguments[3] || ".";

	if ( isNaN(expr) ) return 0;

	var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));

	while (str.length <= decplaces) {
		str = "0" + str;
	}

	var decpoint = str.length - decplaces;

	var formats = decplaces > 0 ? decseparator + str.substring(decpoint, str.length) : "";

	var i = decpoint-3;
	while (i > 0) {
		formats = thoseparator + str.substring(i, i+3) + formats
		decpoint = i;
		i -= 3;
	}
	formats = str.substring(0,decpoint) + formats;

	return formats
}



function zivSkladDodatno(f, final_B) {
    // max. zav. vsota za dodatna zavarovanja
		if ( f.zav_vsota_doz ) {
	    var dz = um_parseInteger(f.zav_vsota_doz.value);
	    if ( dz > 0 ) {
	        f.zav_vsota_doz.value = dz;
	        f.ziv_zav_doz.checked = true;
	    } else {
	        f.zav_vsota_doz.value = "";
	        f.ziv_zav_doz.checked = false;
	    }

	    var dzmax = (dz + um_parseInteger(f.zav_vsota.value)) * 2;
	    if (dzmax > 25000) dzmax = 25000;

	    var dod = um_parseInteger(f.zav_vsota_smr.value);

	    if ( dzmax > 0 ) {
	        if ( dod > dzmax ) {
	            alert("Najvišja vsota je lahko " + dzmax + "!");
	            f.ziv_zav_smr.checked = true;
	            f.zav_vsota_smr.value = dzmax;
	            if (final_B) return false;
	        } else if ( dod > 0 ) {
	            f.zav_vsota_smr.value = dod;
	            f.ziv_zav_smr.checked = true;
	            return true;
	        } else {
	            f.zav_vsota_smr.value = "max. " + dzmax;
	            f.ziv_zav_smr.checked = false;
	            return true;
	        }
	    }

	    if ( dod == 0 ) {
	        f.zav_vsota_smr.value = ""
	        f.ziv_zav_smr.checked = false;
	    }
		}
    return true;
}

function zivSkladVklop(c, e) {
    if (c.checked)
        e.focus();
    else {
        e.value = e.defaultValue;
        zivSkladDodatno(e.form, false);
    }
}


function zivSkladDoba(e, pstart_I, pstop_I) {
	var i = 0;
	for (i = e.form.zav_trajanje.options.length-1; i > 0; i--)
		e.form.zav_trajanje.options[i] = null;

	var start_I = 5;
	if ( pstart_I > 0 ) start_I = pstart_I
	
	var end_I = 76 - ( e.form.letnica.value - e.value );
	if ( pstop_I > 0 ) end_I = pstop_I+1;
	
	for ( i = start_I; i < end_I; i++ )
		e.form.zav_trajanje.options.add( new Option(i, i, false, false) );
	e.form.zav_vsota.value = "";
}

function zivSkladPremijaExclusive(f) {
    var z_pre = um_parseInteger(f.premija.value);
		if ( z_pre < 1000 ) {
			alert("Enkratno vplačilo mora znašati vsaj 1000 evrov!");
			f.premija.value = f.premija.defaultValue;
			f.zav_vsota.value = "";
			f.premija.focus();
			return false;
		}
		var z_val = z_pre / 10;
		if ( z_val < 2500 ) 
			z_val = 2500;
		else if ( z_val > 25000)
			z_val = 25000;
		f.zav_vsota.value = z_val;
		
		return true;
}

function zivSkladPremija(f, change_B, ezav_B, final_B) {

    var z_pre = um_parseInteger(f.premija.value);

    if ( z_pre < TILIA_MIN_PREMIJA ) {

        if ( change_B || final_B ) alert("Premija mora znašati vsaj " + TILIA_MIN_PREMIJA + " evrov!");
        f.premija.value = f.premija.defaultValue;
        f.zav_vsota.value = "";
        f.premija.focus();
        return false;

    } else if ( z_pre > TILIA_MAX_PREMIJA ) {

        if ( change_B || final_B ) alert("Premija ne sme biti večja od " + TILIA_MAX_PREMIJA + " evrov!");
        f.premija.value = f.premija.defaultValue;
        f.zav_vsota.value = "";
        f.premija.focus();
        return false;

    } else {

        // lahko izračunam zavarovalno vsoto?
        if ( ezav_B ) {
						var zvmin = Math.floor(z_pre * 12 * f.zav_trajanje.value * 0.4);
            var zvmax = Math.ceil(z_pre * 12 * f.zav_trajanje.value);
						if ( zvmin < 2000) zvmin = 2000;
						if ( zvmax < 2000) zvmax = 2000;
            if ( zvmin > 25000 ) zvmin = 25000;
            if ( zvmax > 25000 ) zvmax = 25000;
						um_obvesti( "vsota_info", "min: " + formatNumber(zvmin,0) + 
								", max: " + formatNumber(zvmax,0) );
        } else {
            var zvmin = Math.floor(z_pre * 12 * f.zav_trajanje.value * 0.2);
            var zvmax = Math.ceil(z_pre * 12 * f.zav_trajanje.value * 1.8);
						var zvosn = Math.ceil(z_pre * 12 * f.zav_trajanje.value);
						if ( zvmin < 2000) zvmin = 2000;
						if ( zvmax < 2000) zvmax = 2000;
						um_obvesti( "vsota_info", "min: " + formatNumber(zvmin,0) + 
								", osnovna: " + formatNumber( zvosn, 0) + 
								", max: " + formatNumber(zvmax,0) );
        }

        var z_val = um_parseInteger(f.zav_vsota.value);
        if (final_B || (!change_B && z_val > 0)) {

            // zaenkrat počistimo opozorilo, če bo potrebno vklopimo spodaj
            um_obvesti("vsota_opozorilo", "");
            if ( zvmin > 0 ) {
              if ( z_val < zvmin || z_val > zvmax ) {
                f.zav_vsota.value = "min. " + zvmin + " - max. " + zvmax;
                alert("Zavarovalna vsota mora biti med " + zvmin + " in " + zvmax + " evri!");
                f.zav_vsota.focus();
              } else {
								// vse ok, samo še izpišemo in preverimo za opozorilo!
								f.zav_vsota.value = z_val;
								if ( ( !g_probanka && z_val > 35000 ) || z_val > 40000 )
									um_obvesti("vsota_opozorilo", "Potreben je zdravniški pregled!");
								return true;
              }
            }

        } else 
            if ( zvmin > 0 ) {
							f.zav_vsota.value = "min. " + zvmin + " - max. " + zvmax;
						}

        return false;

    }

}

function zivSkladVsota(f) {

    // osvežimo maks. zav_vsota_smr
    if ( !g_ezav_sklad ) zivSkladDodatno(f, false);
		if ( g_probanka ) zivSkladVsotaProbanka(f);

    // preverimo meje, brez brisanja
    return zivSkladPremija(f, false, g_ezav_sklad, false);

}

function zivSkladVsotaProbanka(f) {

	// izračun premije iz vsote za Probanko

  um_obvesti("vsota_opozorilo", "");
  var z_val = um_parseInteger(f.zav_vsota.value);

	if ( z_val > 40000 )
		um_obvesti("vsota_opozorilo", "Potreben je zdravniški pregled!");

	if ( f.zav_trajanje.value > 0 )
		f.premija.value = Math.round( z_val / 12 / f.zav_trajanje.value );

	return true;
	
}


function zivSkladCheck(f, pub_I) {

    if ( f.leto_rojstva.value == 0 ) {
        alert("Izberite letnico rojstva!");
        f.leto_rojstva.focus();
        return false;
    } else if ( f.spol.value == 0 ) {
        alert("Izberite spol!");
        f.spol.focus();
        return false;
    } else if ( f.zav_trajanje.value == 0 || f.zav_trajanje.value > 75 - ( f.letnica.value - f.leto_rojstva.value ) ) {
        alert("Izberite trajanje zavarovanja!");
        f.zav_trajanje.focus();
        return false;
    }

    if ( pub_I == 2 ) {
			if ( !zivSkladPremijaExclusive(f) ) return false;
		} else {
			var retVal = false;
	    retVal = zivSkladPremija(f, false, g_ezav_sklad, true);
	    if (!retVal) return false;

	    if ( !g_ezav_sklad ) {
				retVal = zivSkladDodatno(f, true);
				if (!retVal) return false;
	    }
		}

		if (f.ziv_zav_placilo.length) {
			var placilo_B = false;
			for ( var i = 0; i < f.ziv_zav_placilo.length; i++ ) {
				if ( f.ziv_zav_placilo[i].checked ) {
					placilo_B = true;
					break;
				}
			}
			if ( !placilo_B ) {
				alert("Izberite način plačila!");
				f.ziv_zav_placilo[0].focus();
				return false;
	    }
		}

    return true;
}

function zivSkladSkladiRecalcOne(e, max_I) {
    var r = um_parseInteger(e.value);
    if ( r <= 0 ) {
        e.value = "";
        r = 0;
    } else if ( r > max_I ) {
        if ( max_I >= 10 ) {
            alert("Na razpolago imate še " + max_I + " EUR!");
            r = max_I;
            e.value = max_I;
        } else {
            e.value = ""
            r = 0;
        }
    } else if ( r < g_ezav_min_v_sklad ) {
        alert("Minimalna premija za posamezen sklad je " + g_ezav_min_v_sklad + " evrov!");
        e.value = "";
        r = 0;
    }
    return r;
}

function zivSkladSkladiRecalc(f, final_B) {
    var finale = final_B || false;
    var p = f.premija.value;
    var t;
    var num = TILIA_MAX_SKLADOV;

    for ( var i = 0; i < f.elements.length; i++ )
    {
    	if ( f.elements[i].name.substr(0,6) == "sklad_" )
    	{
    		t = zivSkladSkladiRecalcOne(f.elements[i], p);
    		if ( t > 0 )
    		{
					p -= t;
					num--;
			}
		}
	}

    if (p < 0 ) {
        alert("Porazdelili ste " + Math.abs(t) + " evrov preveč!");
        return false;
    } else {
        if ( p == 0 ) {
            f.preostanek.value = "-";
        } else {
            f.preostanek.value = p;
            if ( finale ) alert("Porazdeliti morate še " + p + " EUR!");
            return false;
        }
    }

    if ( num < 0 ) {
    	alert("Izberete lahko največ " + TILIA_MAX_SKLADOV + " skladov!");
    	return false;
	}

	return true;

}

function zivSkladSkladiCheck(f) {
    return zivSkladSkladiRecalc(f, true)
}


function tilia_popup(h,n)
{
	var x = arguments[2] || 530;
	var y = arguments[3] || 300;

	var w = window.open('popup/?v=' + h, n, 'width='+x+',height='+y+',status=0,toolbar=0,menubar=0,location=0,resizable=1,scrollbars=1');
	if ( w.focus ) w.focus();
}

