/**
 * Copyright (C) 2008 if... 
 *
 * GDcalculator Javascript functions
 *
 * @author Ismo Puntti, if...
 */

var boldOn = new Array("","<b>");
var boldOff = new Array("","</b>");

var li_bonus_options = "<option VALUE=\"0\">0 %<\/option><option VALUE=\"5\">5 %<\/option><option VALUE=\"10\">10 % <\/option><option VALUE=\"15\">15 %<\/option><option VALUE=\"20\">20 %<\/option><option VALUE=\"25\">25 %<\/option><option VALUE=\"30\">30 %<\/option><option VALUE=\"35\">35 %<\/option><option VALUE=\"40\">40 %<\/option><option VALUE=\"45\">45 %<\/option><option VALUE=\"50\">50 %<\/option><option VALUE=\"55\">55 %<\/option><option VALUE=\"60\">60 %<\/option><option VALUE=\"65\">65 %<\/option><option VALUE=\"70\">70 %<\/option>";
var li_vahvuosi_options = "<option VALUE=\"0\">0<\/option><option VALUE=\"1\">1<\/option><option VALUE=\"2\">2<\/option><option VALUE=\"3\">3<\/option><option VALUE=\"4\">4<\/option><option VALUE=\"5\">5 -><\/option>";
var ikakerroin = new Array(1.0,1.0,0.976284585,0.766798419,0.695652174,0.640316206,0.612648221,0.588932806,0.561264822,0.537549407,0.529644269,0.529644269,0.529644269,0.529644269,0.529644269,0.541501976,0.561264822,0.581027668,0.581027668,0.581027668,0.581027668,0.604743083,0.632411067,0.656126482,0.656126482);

/**
 * initializing and entry
 */
function alusta() {

	// get parms from url
	parms = location.search.substring(1).split('&');

	if ( parms.length > 1 ) {
	 li_alkumaksu  = unescape(parms[0].substring(parms[0].indexOf('=') + 1 ));
	 li_bonus = unescape(parms[1].substring(parms[1].indexOf('=') + 1));
	 li_vahvuosi = unescape(parms[2].substring(parms[2].indexOf('=') + 1));
	 li_synvuosi = unescape(parms[3].substring(parms[3].indexOf('=') + 1));

	 if ( isNaN(li_alkumaksu) || parseInt(li_alkumaksu) == 0 ) li_alkumaksu = "0";	
	 if ( isNaN(li_bonus) ) li_bonus = parseInt(0);	
    }
	// calculate if values are entered
	if ( li_alkumaksu > 0 ) laske();

}

/**
 * Check form entry data 
 */
function checkEntries(frm)  {

	// Empty form values
	  if ( tyhjaa == 1 ) {  
		frm.nykmaksu.value = "0";
		frm.nykbonus.selectedIndex = 0;
		frm.vahvuosi.selectedIndex = 0;
        	return true;
	  }

	// traffic amount is needed
        if ( frm.nykmaksu.value == "" || frm.nykmaksu.value == "0"  )
        {
            alert('Nykyinen liikennevakuutuksen maksu pitää syöttää');
            frm.nykmaksu.focus();
            return false;
        }

	// numerics amounts
        if (isNaN(frm.nykmaksu.value))
        {
            alert('Maksu pitää olla numeerinen');
            frm.nykmaksu.focus();
            return false;
        }

	frm.nykmaksu.value = trim(frm.nykmaksu.value);
	return true;
    }

/**
 * Calculate trafficinsurance 
 */
function laske() {

	var annettu      = false;
	var rajavuosi    = 3;
	arr_Lii_Vuosi[0] = new Date().getFullYear();
	arr_Lii_Ika[0]   = arr_Lii_Vuosi[0] - parseInt(li_synvuosi); 
	var vahvuosi     = parseInt(li_vahvuosi);
	arr_Lii_Vahvuosi[0] = vahvuosi; 
	arr_Lii_Bonus[0]    = li_bonus; 
	
	var maksu = parseInt(li_alkumaksu);
	var bonus = parseInt(li_bonus);
	var vanhabonus = bonus;
	if ( arr_Lii_Vahvuosi[0] > rajavuosi ) {
		vanhabonus = vanhabonus + 20;
		if ( vanhabonus > 70 ) vanhabonus = 70;
		annettu = true;
	}
	arr_Lii_GDbonus[0] = vanhabonus; 

	arr_Lii_VanhaMaksu[0] = parseInt(Math.round(maksu - ( maksu * vanhabonus / 100 )));
	arr_Lii_UusiMaksu[0] = parseInt(Math.round(maksu - ( maksu * bonus / 100 )));
	
	i = 1;
	while (i <= 17 )
	{
		arr_Lii_Vuosi[i] = arr_Lii_Vuosi[0] +  i;
		arr_Lii_Ika[i] = arr_Lii_Ika[0] +  i;
		arr_Lii_Vahvuosi[i] = arr_Lii_Vahvuosi[0] + i; 

        if ( i == 1 && arr_Lii_Bonus[0] < 5 ) bonus = 10;
		else 	bonus = bonus + 5;

        if ( i == 1 && arr_Lii_GDbonus[0] < 5 ) vanhabonus = 10;
		else 	vanhabonus = vanhabonus + 5;

		if ( !annettu && arr_Lii_Vahvuosi[i] > rajavuosi ) {
			vanhabonus = bonus + 20;
			annettu = true;
		}

		var ikaind = arr_Lii_Ika[i] - 18;
		var ikaker = ikakerroin[ikaind] / ikakerroin[ikaind - 1]; 

		if ( bonus > 70 ) bonus = 70;
		if ( vanhabonus > 70 ) vanhabonus = 70;

		arr_Lii_Bonus[i] = bonus;
		arr_Lii_GDbonus[i] = vanhabonus;
		arr_Lii_VanhaMaksu[i] = parseInt(Math.round((maksu - (( maksu *  vanhabonus ) / 100 )) * ikaker ));
		arr_Lii_UusiMaksu[i] = parseInt(Math.round((maksu - (( maksu *  bonus ) / 100 )) * ikaker ));

		// stop loop when bonus = 70 
		if ( i > 2 && bonus  == 70 ) i = 17;

		i++;
	} 
}

/**
 * Makes dropdown selection list for bonus selection 
 *
 * name       Name of the list (liikenne or auto)
 * value      Value of to selected value
 */
function makeBonusSelection(name, value)
{
  var apu = "";
  if ( name == "vvuosi") apu = li_vahvuosi_options;
  if ( name == "liikenne") apu = li_bonus_options;
  
  ind = apu.indexOf(">" + value);
  if (ind > 0 ) apu = apu.substring(0,ind) + " SELECTED" + apu.substring(ind,apu.length);
  return apu;
}

/**
 * Makes dropdown selection list for birth year selection between age 18 - 26
 *
 * value      Value to be marked as selected 
 */
function makeYearSelectionList(value)
{
  var list = "";
  var startYear = new Date().getFullYear() - 27;
  for ( var i = 0; i < 10 ; i++ ) {
  	 var year = parseInt(startYear + i );
	 list = list + "<option VALUE=\"" + year + "\"";
	 if ( value == year ) list = list + " SELECTED";
	 list = list + ">" + year + "<\/option>";
  }
  return list;
}


/**
 *  Removes leading and trailing spaces from the passed string.
 */ 
function trim(inputString) {

   if (typeof inputString != "string") { return inputString; }

   var retValue = inputString;
   var ch = retValue.substring(0, 1);

   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }

   ch = retValue.substring(retValue.length-1, retValue.length);

   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   return retValue; // Return the trimmed string back to the user
} 
