/*
Author: Arturas Piksrys(arturas@ring.lt, arturas.piksrys@inreal.lt)
2007
*/

var BankLoansCalculator = Class.create();

BankLoansCalculator.prototype = {
    
    initialize: function(bank_hash) {
        this.banks = this.setBanks(bank_hash);
    },
  
    constants: {'bank_percent': 4.45, 'acl' : 625, 'lt_eur' : 3.4528},
    
    //paskolos suteikimo terminas
    loanTerm: function(){
        return $('debt_term').options[$('debt_term').selectedIndex].value;
    },
    
    loanSize: function(){
        return $F('debt_price');
    },
    
    //pradinis inasas procentais
    startingPayment: function(){
        return $('start_debt_payment').options[$('start_debt_payment').selectedIndex].value;
    },
    
    //menesine imoka
    monthlyDeposit: function(){
        var intRate = (this.constants.bank_percent/100) / 12;
        var months = this.loanTerm() * 12;
        var price = this.loanSize() - this.startingFee();
        return Math.round( Math.floor( (price * intRate)/(1 - Math.pow( 1+intRate, (-1*months)))*100)/100);
    },
    //pradinis mokestis, naudojamas tiek minimalioje, tiek detalesneje skaiciuokleje
    startingFee: function(){
       return parseInt($F('debt_price')) * (this.startingPayment()/100);  
    },
    
    //uzsetiname minimalios skaiciuokles naudojamus bankus
    setBanks: function(bank_hash){
        
        var banks = new Array();
        
        for(var i = 0; i < bank_hash.length; i++){
            if($(bank_hash[i] + '_starting_fee') != undefined) 
                banks.push(bank_hash[i]);
        }
        
        return banks;
    },
    
    //minimalios skaiciuokles apskaiciavimas ir reiksmiu uzsetinimas
    minCalculate: function(){
        if(parseInt($F('debt_price')) < 1000)  return;
        
        var monthly = Math.round(this.monthlyDeposit());
        var starting_fee = Math.round(this.startingFee());
        
        for(var i = 0; i < this.banks.length; i++){
            $(this.banks[i] + '_monthly_deposit').value = monthly;
            $(this.banks[i] + '_starting_fee').value = starting_fee;
        }
    },
    
    loanPayBackMethod: function(){
        return $('debt_payback_method').options[$('debt_payback_method').selectedIndex].value;
    },
    
    currency: function(){
        return $('currency').options[$('currency').selectedIndex].value;
    },
    
    maritalStatus: function(){
        return $('marital_status').options[$('marital_status').selectedIndex].value;
    },
    
    countStartingFee: function(){
        $('starting_fee').value = Math.round(this.startingFee());
    },
    
    showError: function(object){
        Element.show(object);
        Effect.Pulsate(object);
        return false;
    },
    
    detailedCalculate: function(){
        //numusham rezultato reiksmes
        this.setResultValues('-', '-');
        
        //nustatom pradine imoka
       this.countStartingFee();
        
        Element.hide('calc_error2');
        //tikrinsim laukus
        var inputs_for_validation = ['family_real_income','debt_price'];
        
        for(var i = 0; i < inputs_for_validation.length; i++){

            if(!parseInt($F(inputs_for_validation[i]))){
                return this.showError('calc_error');
            }
            
        }
        
        Element.hide('calc_error');
        
        
        if (this.loanPayBackMethod() == "linear"){
            //menesine imoka
            var monthly_deposit = Math.round( this.loanSize()  *  this.constants.bank_percent / 12 / 100 + this.loanSize() / this.loanTerm() / 12);
        }
        else{
            var monthly_deposit = this.monthlyDeposit();
        }
        
        var for_living = $F('family_real_income') - $F('other_debts') - monthly_deposit;
        
        if (monthly_deposit > for_living){
            return this.showError('calc_error2');
        }
        
        this.setResultValues(monthly_deposit, for_living);
        return true;
    },
    
    setResultValues: function(monthly_deposit, for_living){
         $('monthly_deposit').value = monthly_deposit;
         $('for_living').value = for_living;
    },
    
    validateSenderData: function(){
        if(!this.detailedCalculate()) return false;
        
        var inputs = $('sender_data').getElementsByClassName('text');
        
        for(var i = 0; i < inputs.length; i++){
            if(!inputs[i].value.length){
                return this.showError('calc_error3');
            }
        }
        Element.hide('calc_error3');
        
        var invalid_email = function(str){
            return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
        }
        
        
        if(!invalid_email($F('mail_email'))){
            return this.showError('calc_error4');
        }
        
        $('request_to_bank_form').submit();
        return true;
    }
    
};

var redirect_to_request_form = function(url){
        var term = $('debt_term').options[$('debt_term').selectedIndex].value;
        var start_debt_payment = $('start_debt_payment').options[$('start_debt_payment').selectedIndex].value;
        var url = url + '?term=' + term + '&starting_payment=' + start_debt_payment;
        window.location.href = url;
}