﻿/** GO rates **/

var goAccessFee = 9.99; // Monthly Access Fee

var goMinToGoFixed = 0; // Minutes to GO fixed numbers
var goMinToOtherFixed = 0.035; // Minutes to other fixed numbers
var goMinToFreedomPackMob = 0.233; // Minutes to your freedom pack mobile
var goMinToOtherMob = 0.233; // Minutes to other mobile numbers

var goPrePaidMinToMelitaMob = 0.32;
var goPrePaidMinToOtherMob = 0.32;
var goPrePaidMinToMelitaFixed = 0.32;
var goPrePaidMinToOtherFixed = 0.32;
var goPrePaidSms = 0.05;

var goMonthlyTopup = 0;



/** Melita Rates **/

var melitaAccessFee = 2.99; // Monthly Access Fee

var melitaMinToGoFixed = 0; // Minutes to GO fixed numbers
var melitaMinToOtherFixed = 0; // Minutes to other fixed numbers
var melitaMinToFreedomPackMob = 0; // Minutes to your freedom pack mobile
var melitaMinToOtherMob = 0.230; // Minutes to other mobile numbers

var melitaPrePaidMinToMelitaMob = 0;
var melitaPrePaidMinToOtherMob = 0.24;
var melitaPrePaidMinToMelitaFixed = 0;
var melitaPrePaidMinToOtherFixed = 0.24;
var melitaPrePaidSms = 0.05;

var melitaMonthlyTopup = 10;




/** User Input **/

var inpMinToGoFixed = 0;
var inpMinToOtherFixed = 0;
var inpMinToFreedomPackMob = 0;
var inpMinToOtherMob = 0;

var inpPrePaidMinToMelitaMob = 0;
var inpPrePaidMinToOtherMob = 0;
var inpPrePaidMinToMelitaFixed = 0;
var inpPrePaidMinToOtherFixed = 0;
var inpPrePaidSms = 0;

/** Results **/
var resGoFixedBill = 0;
var resMelitaFixedBill = 0;

var resGoPrePaidUsage = 0;
var resMelitaPrePaidUsage = 0;

var resGoPrePaidTotal = 0;
var resMelitaPrePaidTotal = 0;

var resGoMonthlySpent = 0;
var resMelitaMonthlySpent = 0;

var resSavingsPerMonth = 0;
var resSavingsPerYear = 0;
var resSavingsPercentage = 0;

var resCarriedForward = 0;


function calcualteResults() {
    resGoFixedBill = goAccessFee + (goMinToGoFixed * inpMinToGoFixed) + (goMinToOtherFixed * inpMinToOtherFixed) + (goMinToFreedomPackMob * inpMinToFreedomPackMob) + (goMinToOtherMob * inpMinToOtherMob);
    $("#resGoFixedBill").html(formatCurrency(resGoFixedBill));

    resMelitaFixedBill = melitaAccessFee + (melitaMinToGoFixed * inpMinToGoFixed) + (melitaMinToOtherFixed * inpMinToOtherFixed) + (melitaMinToFreedomPackMob * inpMinToFreedomPackMob) + (melitaMinToOtherMob * inpMinToOtherMob);
    $("#resMelitaFixedBill").html(formatCurrency(resMelitaFixedBill));


    resGoPrePaidUsage = (goPrePaidMinToMelitaMob * inpPrePaidMinToMelitaMob) + (goPrePaidMinToOtherMob * inpPrePaidMinToOtherMob) + (goPrePaidMinToMelitaFixed * inpPrePaidMinToMelitaFixed) + (goPrePaidMinToOtherFixed * inpPrePaidMinToOtherFixed) + (goPrePaidSms * inpPrePaidSms);
    $("#resGoPrePaidUsage").html(formatCurrency3(resGoPrePaidUsage));

    resMelitaPrePaidUsage = (melitaPrePaidMinToMelitaMob * inpPrePaidMinToMelitaMob) + (melitaPrePaidMinToOtherMob * inpPrePaidMinToOtherMob) + (melitaPrePaidMinToMelitaFixed * inpPrePaidMinToMelitaFixed) + (melitaPrePaidMinToOtherFixed * inpPrePaidMinToOtherFixed) + (melitaPrePaidSms * inpPrePaidSms);
    $("#resMelitaPrePaidUsage").html(formatCurrency3(resMelitaPrePaidUsage));


    resGoPrePaidTotal = resGoPrePaidUsage;
    $("#resGoPrePaidTotal").html(formatCurrency3(resGoPrePaidTotal));

    resMelitaPrePaidTotal = resMelitaPrePaidUsage;
    if (resMelitaPrePaidUsage < melitaMonthlyTopup) {
        resMelitaPrePaidTotal = melitaMonthlyTopup;
    }
    $("#resMelitaPrePaidTotal").html(formatCurrency3(resMelitaPrePaidTotal));


    resGoMonthlySpent = resGoFixedBill + resGoPrePaidTotal;
    $("#resGoMonthlySpent").html(formatCurrency3(resGoMonthlySpent));

    resMelitaMonthlySpent = resMelitaFixedBill + resMelitaPrePaidTotal;
    $("#resMelitaMonthlySpent").html(formatCurrency3(resMelitaMonthlySpent));

    /** SAVINGS **/

    // per month
    resSavingsPerMonth = resGoMonthlySpent - resMelitaMonthlySpent;
    $("#resSavingsPerMonth").html(formatCurrency3(resSavingsPerMonth));

    // per year
    resSavingsPerYear = resSavingsPerMonth * 12;
    $("#resSavingsPerYear").html(formatCurrency3(resSavingsPerYear));

    // percentage
    resSavingsPercentage = (resGoMonthlySpent - resMelitaMonthlySpent) / resGoMonthlySpent;
    $("#resSavingsPercentage").html(formatPercentage(resSavingsPercentage));

    /** CARRIED FORWARD **/

    resCarriedForward = 0;
    if (resMelitaPrePaidUsage < melitaMonthlyTopup) {
        resCarriedForward = melitaMonthlyTopup - resMelitaPrePaidUsage;
    }    
    $("#resCarriedForward").html(formatCurrency3(resCarriedForward));
}


$(document).ready(function () {
 //  $(".numeric").numeric();

    /** Bind input fields **/
    $("#txtMinToGoFixed").change(function () { inpMinToGoFixed = $(this).val(); $("#inpMinToGoFixed").html($(this).val()); $("#inpMinToGoFixed2").html($(this).val()); calcualteResults(); });
    $("#txtMinToOtherFixed").change(function () { inpMinToOtherFixed = $(this).val(); $("#inpMinToOtherFixed").html($(this).val()); $("#inpMinToOtherFixed2").html($(this).val()); calcualteResults(); });
    $("#txtMinToFreedomPackMob").change(function () { inpMinToFreedomPackMob = $(this).val(); $("#inpMinToFreedomPackMob").html($(this).val()); $("#inpMinToFreedomPackMob2").html($(this).val()); calcualteResults(); });
    $("#txtMinToOtherMob").change(function () { inpMinToOtherMob = $(this).val(); $("#inpMinToOtherMob").html($(this).val()); $("#inpMinToOtherMob2").html($(this).val()); calcualteResults(); });

    $("#txtPrePaidMinToMelitaMob").change(function () { inpPrePaidMinToMelitaMob = $(this).val(); $("#inpPrePaidMinToMelitaMob").html($(this).val()); $("#inpPrePaidMinToMelitaMob2").html($(this).val()); calcualteResults(); });
    $("#txtPrePaidMinToOtherMob").change(function () { inpPrePaidMinToOtherMob = $(this).val(); $("#inpPrePaidMinToOtherMob").html($(this).val()); $("#inpPrePaidMinToOtherMob2").html($(this).val()); calcualteResults(); });
    $("#txtPrePaidMinToMelitaFixed").change(function () { inpPrePaidMinToMelitaFixed = $(this).val(); $("#inpPrePaidMinToMelitaFixed").html($(this).val()); $("#inpPrePaidMinToMelitaFixed2").html($(this).val()); calcualteResults(); });
    $("#txtPrePaidMinToOtherFixed").change(function () { inpPrePaidMinToOtherFixed = $(this).val(); $("#inpPrePaidMinToOtherFixed").html($(this).val()); $("#inpPrePaidMinToOtherFixed2").html($(this).val()); calcualteResults(); });
    $("#txtPrePaidSms").change(function () { inpPrePaidSms = $(this).val(); $("#inpPrePaidSms").html($(this).val()); $("#inpPrePaidSms2").html($(this).val()); calcualteResults(); });


    /** Populate fields **/

    $("#goAccessFee").html(formatCurrency(goAccessFee));
    $("#goMinToGoFixed").html(formatCurrency(goMinToGoFixed));
    $("#goMinToOtherFixed").html(formatCurrency(goMinToOtherFixed));
    $("#goMinToFreedomPackMob").html(formatCurrency(goMinToFreedomPackMob));
    $("#goMinToOtherMob").html(formatCurrency(goMinToOtherMob));

    $("#melitaAccessFee").html(formatCurrency(melitaAccessFee));
    $("#melitaMinToGoFixed").html(formatCurrency(melitaMinToGoFixed));
    $("#melitaMinToOtherFixed").html(formatCurrency(melitaMinToOtherFixed));
    $("#melitaMinToFreedomPackMob").html(formatCurrency(melitaMinToFreedomPackMob));
    $("#melitaMinToOtherMob").html(formatCurrency(melitaMinToOtherMob));

    $("#goPrePaidMinToMelitaMob").html(formatCurrency(goPrePaidMinToMelitaMob));
    $("#goPrePaidMinToOtherMob").html(formatCurrency(goPrePaidMinToOtherMob));
    $("#goPrePaidMinToMelitaFixed").html(formatCurrency(goPrePaidMinToMelitaFixed));
    $("#goPrePaidMinToOtherFixed").html(formatCurrency(goPrePaidMinToOtherFixed));
    $("#goPrePaidSms").html(formatCurrency(goPrePaidSms));

    $("#goMonthlyTopup").html(formatCurrency2(goMonthlyTopup));


    $("#melitaPrePaidMinToMelitaMob").html(formatCurrency(melitaPrePaidMinToMelitaMob));
    $("#melitaPrePaidMinToOtherMob").html(formatCurrency(melitaPrePaidMinToOtherMob));
    $("#melitaPrePaidMinToMelitaFixed").html(formatCurrency(melitaPrePaidMinToMelitaFixed));
    $("#melitaPrePaidMinToOtherFixed").html(formatCurrency(melitaPrePaidMinToOtherFixed));
    $("#melitaPrePaidSms").html(formatCurrency(melitaPrePaidSms));

    $("#melitaMonthlyTopup").html(formatCurrency(melitaMonthlyTopup));
});

function formatCurrency(value) {
    // if value is 0..
    if (value <= 0) {
        // return FREE
        return "FREE";
    }

    // else.. add euro symbol to value.
    return "&euro; " + roundNumber(value, 2);
}

function formatCurrency2(value) {
    return "&euro; -";
}

function formatCurrency3(value) {
    return "&euro; " + roundNumber(value, 2);
}

function formatPercentage(value) {
    return roundNumber(value* 100, 2) + "%";
}

function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return parseFloat(result).toFixed(2);
}
