function addComma(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function Calculator () {
  window.addEvent('domready', function() {
    
    $$('div.dragger select').each(function(dragger,i){
      dragger.addClass('hide');
      
      var barholder = new Element('div', {'class': 'barholder'});
      var bar = new Element('div', {'class': 'bar'});
      var handle = new Element('div', {'class': 'handle'});
      var inner = new Element('div');

      var min = new Element('div', {'class': 'min'});
      if (dragger.getFirst().get('text').contains('payment')) {
        min.set('text',dragger.getParent().getFirst().getNext().getNext().getNext().get('text'));
      }
      else {
        min.set('text',dragger.getFirst().get('text'));
      }
      
      var max = new Element('div', {'class': 'max'});
      if (dragger.getLast().get('text').contains('payment')) {
        max.set('text',dragger.getParent().getFirst().getNext().getNext().getNext().getNext().get('text'));
      }
      else {
        max.set('text',dragger.getLast().get('text'));
      }
      
      min.inject(barholder,'bottom');
      max.inject(barholder,'bottom');
      bar.inject(barholder,'bottom');
      inner.inject(handle);
      handle.inject(bar);
      barholder.inject(dragger.getParent(),'bottom');
    });
    
    $$('div.bar').each(function(bar,i){

      var min = bar.getParent().getPrevious().getFirst().getProperty('value');
      var max = bar.getParent().getPrevious().getLast().getProperty('value');
      var js_steps = bar.getParent().getParent().getFirst().get('text'); 
      
      var js_selected = bar.getParent().getParent().getFirst().getNext().getNext().get('text');
      
      var theselect = bar.getParent().getPrevious();
      var selectoptions = theselect.getChildren('option');
      var theselectoptions = new Array();
      var selectvalues = new Array();
      var selecttexts = new Array();
      selectoptions.each(function(option,i){
        var theval = option.getProperty('value');
        theselectoptions[theval] = option;
        selectvalues[theval] = theval.toInt();
        selecttexts[theval] = option.getProperty('html');
      });
      
      var myslider = new Slider(bar, bar.getFirst(),{
        range: [parseInt(min), parseInt(max)],
        snap: false,
        wheel: true,
        steps: js_steps,
        onComplete: function(pos){
    	  
          //var execute = false;
          
         
          //execute = true;
           
    	  var execute = true;
            
          if (execute == true) {
        	  
            new Request.HTML({
        			onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
            	  
        				$('credit_finance').innerHTML = responseHTML;
        				$('personal_finance').removeClass('fade');
        			}
            
      		  }).get('/application/ajax/personalFinance.php?iAmount=' + $('the_amount').get('value') + '&iRepaymentPeriod=' + $('repayment_period').get('value') + '&iCreditRating=' + $('credit_rating').get('value') + '&iDepositAmount=' + $('deposit_amount').get('value'));
          //}).get('/application/ajax/personalFinance.php?iAmount=' + $('the_amount').get('value') + '&iRepaymentPeriod=' + $('repayment_period').get('value') + '&iCreditRating=' + $('credit_rating').get('value') + '&iInsurance=' + document.getElementById('insurance').value);
       
      		}
        },
        onChange: function(pos){
        
          $('personal_finance').addClass('fade');
          
          if (selectvalues.contains(pos.toInt())) {
            var value = selecttexts[pos];
            
            theselect.getSelected().removeProperty('selected');
            theselectoptions[pos].setProperty('selected','selected');
            
            //number of dragger divs - if adding a 4th then increase this to 4 etc
            if (i == 3) {
              $$('ol#credit_rating_categories li').addClass('hide');
              $$('ol#credit_rating_categories li#credit_rating_category_'+pos).removeClass('hide');
            }
            
           
              var monthlypayment = getMonthlyPayment(
                $('the_amount').get('value'),
                $('repayment_period').get('value'),
                $('credit_rating').get('value'),
                $('deposit_amount').get('value')
              )
              
              $('monthlypayment').set('text','\u00A3' + addComma(monthlypayment));
            
            bar.getFirst().getFirst().set('text',value);
          
          //number of dragger divs - if adding a 4th then increase this to 4 etc
            if (i == 3) {
							bar.getFirst().getFirst().setProperty('class',value.toLowerCase());
						}
            
            var amount = $('the_amount').getProperty('value');
            var term = $('repayment_period').getProperty('value');
            var risk = $('credit_rating').getProperty('value');
            var deposit_amount = $('deposit_amount').getProperty('value');

          }
        }
      });
      
      myslider.set(js_selected);
      
      bar.getFirst().getFirst().set('text',bar.getParent().getParent().getFirst().getNext().get('text'));
    });
    
    $('credit_rating_categories').inject($('credit_rating_category').getFirst(),'bottom');

    $('credit_rating_categories_wrap').destroy();
    
    $('recalculate').addClass('hide');
    
    $$('div#creditcalculator div.result').removeClass('hide');
  });
}

function getMonthlyPayment (Amount,RepaymentPeriod,Risk,DepositAmount) {

	//Amount = amount
	//RepaymentPeriod = repayment period
	//Risk = credit rating
	//DepositAmount = deposit amount
	
	switch(Risk){
		
		case "1":
			iApr = "7.99";
			break;
		case "2":
			iApr = "13.99";
			break;
		case "3":
			iApr = "18.99";
			break;
		case "4":
			iApr = "23.99";
			break;
		case "5":
			iApr = "28.99";
			break;
		case "6":
			iApr = "33.99";
			break;
		default :;
	};
	
  var Amount = Amount-DepositAmount;
  
  var MonthlyPayment = (((((iApr/100)/2)*Amount)*(RepaymentPeriod/12))+parseInt(Amount))/RepaymentPeriod;
 
  //var GAPInsurance = (300/Term);
  
  //var TotalMonthlyPayment = parseInt(MonthlyPayment)+parseInt(GAPInsurance);
  var TotalMonthlyPayment = MonthlyPayment-DepositAmount;
 
  return MonthlyPayment.toFixed(2);
  
}
