
function updatePayable(winref) {
    
    if (!winref) {
	winref = window;
    }

    var insurance_payable = winref.document.getElementById('insurance_payable');
    var rental_payable = winref.document.getElementById('rental_payable');
    var total_payable = winref.document.getElementById('total_payable');
    var cc_sur = winref.document.getElementById('cc_sur')
    var bond = winref.document.getElementById('bond_payable')
    var desc = winref.document.getElementById('description');
    var insurance_waiver = winref.document.getElementById('insurance_waiver')
    date1 = winref.document.forms.booking.arrival_date.value;
    date2 = winref.document.forms.booking.departure_date.value;
    car_cost = parseInt(winref.document.forms.booking.car_type.value);
    bond_selected = parseInt(winref.document.forms.booking.bond.value);
    insurance_waiver_check = winref.document.forms.booking.insurance_waiver_check.value;
    if (!date1 || !date2) {
	  insurance_payable.innerHTML = '$0.00';
	rental_payable.innerHTML = '$0.00';
	total_payable.innerHTML = '$0.00';
	insurance_waiver.innerHTML = '$0.00';
	cc_sur.innerHTML = '$0.00';
	bond.innerHTML = '$0.00';
	desc.innerHTML = '';
  return;
    }

     date1 = new Date(str2dt(date1));
    date2 = new Date(str2dt(date2));

    e1 = date1.getTime() / 1000;
    e2 = date2.getTime() / 1000;

    var numdays = Math.round((e2 - e1) / (60 * 60 * 24));
    var insurance_rate1 = parseInt(winref.document.forms.booking.age1.value);
    var insurance_rate2 = parseInt(winref.document.forms.booking.age2.value);
    var insurance_rate3 = parseInt(winref.document.forms.booking.age3.value);
    var insurance_amount = (insurance_rate1 + insurance_rate2 + insurance_rate3) * numdays;
    var number_weeks = Math.floor(numdays / 7);
    var remainder_days = (numdays - (number_weeks * 7));
    
    var rental_amount = (car_cost * number_weeks);
    if ((car_cost == 110) || (car_cost == 120)){
        //buget car rental
         rental_amount = rental_amount + (remainder_days * 20);
         var description_txt = number_weeks + ' week/s charged @ $' + car_cost;
         if (remainder_days > 0){description_txt = description_txt + ' and ' + remainder_days + ' days charged @ $20 per day';}
  
    }else{
         rental_amount = rental_amount + (remainder_days * 25);
         var description_txt = number_weeks + ' week/s charged @ $' + car_cost;
          if (remainder_days > 0){description_txt = description_txt + ' and ' + remainder_days + ' days charged @ $25 per day';}
    }
    
    if (insurance_waiver_check == "on"){
      var insurance_waiver_total = numdays * 5;
    }else{
      var insurance_waiver_total = 0;
    }
    
    var total_amount = insurance_amount + rental_amount + bond_selected + insurance_waiver_total; 
    var cc_sub = (total_amount * 0.03); // credit card surcharge // edit2009::cc surcharge changed from 4% to 3%
    var total_amount = total_amount + cc_sub;
    
    insurance_payable.innerHTML = '$'+formatAsMoney(insurance_amount);
    insurance_waiver.innerHTML = '$'+formatAsMoney(insurance_waiver_total);
    rental_payable.innerHTML = '$'+formatAsMoney(rental_amount) + ' ('+description_txt+')';
    total_payable.innerHTML = '$'+formatAsMoney(total_amount);
    cc_sur.innerHTML = '$'+formatAsMoney(cc_sub);
    bond.innerHTML = '$' + formatAsMoney(bond_selected);
    winref.document.forms.booking.totalamount.value = formatAsMoney(total_amount);
}

function str2dt (str_datetime) {
        var re_date = /^(\d+)\-(\d+)\-(\d+)/;
        if (!re_date.exec(str_datetime))
                return alert("Invalid Datetime format: "+ str_datetime);
        return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
}

function formatAsMoney(mnt) {
    mnt -= 0;
    mnt = (Math.round(mnt*100))/100;
    return (mnt == Math.floor(mnt)) ? mnt + '.00' 
              : ( (mnt*10 == Math.floor(mnt*10)) ? 
                       mnt + '0' : mnt);
}
