/**
 * @author smauel
 * requires JQuery javascript library
 */

/* Initialise the calendar. */
$(document).ready(function() {
	$('#result').hide();
	//$('#details').hide();

	$('#submit').click(function(){$('form').submit();return false;});
	$('#modify').click(function(){toggleForm();return false;});
	
	$('form div.odd div div, form div.even div div').mouseover(function() {
		$(this).addClass('over');
	});
	
	$('form div.odd div div, form div.even div div').mouseout(function() {
		$(this).removeClass('over');
	});
	
	// todo
	$('#uAutomatedCredit, #uAutomatedDebit1, #uAutomatedDebit2, #uAutomatedDebit3, #uCTransactions, #uCCheques, #uCTickets, #uCCurrency, #uECheques, #uETickets, #uECurrency').keydown(function(e){
        if (e.keyCode == 13) {
            $('form').submit();
            return false;
        }
    });

	// validate signup form on keyup and submit
	$("form").validate({
		submitHandler: function(form) {
			if ($('#uAutomatedCredit').val() == '' && $('#uAutomatedDebit1').val() == '' && $('#uAutomatedDebit2').val() == '' && $('#uAutomatedDebit3').val() == '' && $('#uCTransactions').val() == '' && $('#uCCheques').val() == '' && $('#uCTickets').val() == '' && $('#uCCurrency').val() == '' && $('#uECheques').val() == '' && $('#uETickets').val() == '' && $('#uECurrency').val() == '') {
				alert('Please fill at least one field');
				return false;
			} else {
				getFormValues();
				fillValues();
			}
			return false;
		},
		// règles de validation
		rules: {
			uAutomatedCredit: {
				number: true
			},
			uAutomatedDebit1: {
				number: true
			},
			uAutomatedDebit2: {
				number: true
			},
			uAutomatedDebit3: {
				number: true
			},
			uCTransactions: {
				number: true
			},
			uCCheques: {
				number: true
			},
			uCTickets: {
				number: true
			},
			uCCurrency: {
				number: true
			},
			uECheques: {
				number: true
			},
			uETickets: {
				number: true
			},
			uECurrency: {
				number: true
			}
		}
	});

});

/* Variables de saisie */
var uAutomatedCredit;
var uAutomatedDebit1;
var uAutomatedDebit2;
var uAutomatedDebit3;
var uCTransactions;
var uCCheques;
var uCTickets;
var uCCurrency;
var uECheques;
var uETickets;
var uECurrency;
var uSBI;


var tSBI = 0;

function getFormValues(){
	uCDebit = 0; // $('#uCDebit').val().replace(',', '.');
	
	uAutomatedCredit = $('#uAutomatedCredit').val().replace(',', '.');
	uAutomatedDebit1 = $('#uAutomatedDebit1').val().replace(',', '.');
	uAutomatedDebit2 = $('#uAutomatedDebit2').val().replace(',', '.');
	uAutomatedDebit3 = $('#uAutomatedDebit3').val().replace(',', '.');
	
	uCTransactions = $('#uCTransactions').val().replace(',', '.');
	uCCheques = $('#uCCheques').val().replace(',', '.');
	uCTickets = $('#uCTickets').val().replace(',', '.');
	uCCurrency = $('#uCCurrency').val().replace(',', '.');

	uECheques = $('#uECheques').val().replace(',', '.');
	uETickets = $('#uETickets').val().replace(',', '.');
	uECurrency = $('#uECurrency').val().replace(',', '.');
	uSBI = $('#uSBI').attr('checked');

	// entre les valeurs dans tous les objets forfaits
	for (i=0;i<forfaits.length;i++) {
		forfaits[i].setUserValues(uCDebit, uAutomatedCredit, uAutomatedDebit1, uAutomatedDebit2, uAutomatedDebit3, uCTransactions, uCCheques, uCTickets, uCCurrency, uECheques, uETickets, uECurrency, uSBI);
	}
}

function fillValues() {
	// détermine le forfait le moins cher
	for (i=0,lf=0;i<forfaits.length;i++) {

		$('#rowBase td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].base, lang))
		$('#rowCredit td:eq('+(i+1)+')').html(forfaits[i].trAutomatedCredit)
		//$('#rowDebit td:eq('+(i+1)+')').html(forfaits[i].trDebit)
		$('#rowCheques td:eq('+(i+1)+')').html(forfaits[i].trCheque)
		$('#rowTicket td:eq('+(i+1)+')').html(formatCurrency2(forfaits[i].trTickets, lang))

		$('#rowSbi td:eq('+(i+1)+')').html((forfaits[i].SBI>0?formatCurrency(tSBI, lang):localization['included']))
		$('#rowTelnat td:eq('+(i+1)+')').html((forfaits[i].Telnat>0?forfaits[i].Telnat:localization['included']))
		$('#rowCard td:eq('+(i+1)+')').html((forfaits[i].rowCard>0?forfaits[i].rowCard:localization['included']))
		$('#rowExElectronicTransactions td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].exElectronicTransactions, lang))
		$('#rowExCheques td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].exCheques, lang))
		$('#rowExTickets td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].exTickets, lang))
		$('#rowExTransactions td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].exTransactions, lang))
		$('#rowExCurrency td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].exCurrency, lang))

		if (forfaits[i].totalWith <= lf || lf === 0) {
			lf = forfaits[i].totalWith;
			bestForfait = i;
		}

		$('#rowTotalWithout td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].totalWithout, lang))
		$('#rowTotalWith td:eq('+(i+1)+')').html(formatCurrency(forfaits[i].totalWith, lang))
		$('#rowSavePercentage td:eq('+(i+1)+')').html(formatPercent(forfaits[i].savePercentage, lang))
	}

	$('table col').removeClass('highlight');
	
	
	if (forfaits[bestForfait].totalWithout < forfaits[bestForfait].totalWith) {
		$('#forfaitNote').html(localization['nopackage']);
		$('#forfaitSavePercentage').html(formatPercent(0));
		$('#forfaitName').html(localization['nopackagename']);
	}
	else {
		$('#forfaitNote').html('');
		$('#forfaitName').html(forfaits[bestForfait].name);
		$('#forfaitSavePercentage').html(formatPercent(forfaits[bestForfait].savePercentage, lang));
		$('table col:eq('+(bestForfait+1)+')').addClass('highlight');
	}

	
	toggleForm();
}

function toggleForm() {
	$('form, #result').toggle('slow');
//	$('#result').show('slow');
}

function formatPercent(n, lang){
	r = Math.round(n*100)/100 + "%";
	/*
    if (lang == lang) {
        return r.replace('.', ',');
    } 
	*/
	return r;
}


/**
 * Convert an integer in a formatted currency
 */
function formatCurrency(num, lang, ifnull) {
	if (lang == 'fr') {
		spacer = ' ';
	} else {
		spacer = ',';
	}

	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
    
    if(num === 0) 
        if (lang == 'fr') return "0 $";
        else return "$0";
    
	num = Math.floor(num/100).toString();
	if(cents<10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+spacer+num.substring(num.length-(4*i+3));
    if (lang == 'fr') {
        if(!sign) return '(' + num + ',' + cents + ')' + ' $';
        else return num + ',' + cents + ' $';
    } else {
        if(!sign) return '(' + '$' + num + '.' + cents + ')';
        else return '$' + num + '.' + cents;
    }
}

/**
 * Convert an integer in a formatted currency
 */
function formatCurrency2(num, lang, ifnull) {
	if (lang == 'fr') {
		spacer = ' ';
	} else {
		spacer = ',';
	}

	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
    
    if(num === 0) 
        if (lang == 'fr') return "0 $";
        else return "$0";
    
	num = Math.floor(num/100).toString();
	if(cents<10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+spacer+num.substring(num.length-(4*i+3));
    if (lang == 'fr') {
        if(!sign) return '(' + num + ')' + ' $';
        else return num + ' $';
    } else {
        if(!sign) return '(' + '$' + num + ')';
        else return '$' + num;
    }
}

