var amount_ = 0;
var term_ = 0;
var ppi_;
var zopaFee_ = 0;
var PPIavailable = true;
var selectedTab = 1;
var refused = false;

var minimumBorrowingAmount = 1500;
var maximumBorrowingAmount = 15000;

var marketList = new Array();
var marketListPPI = new Array();

var marketNames = new Array("X", "A+", "A", "B", "C");
var APRRangeLow = new Array( - 1, 5, 6, 7, 8);
var APRRangeHigh = new Array( - 1, 10, 11, 12, 13);
var APRRangeTypical = new Array( - 1, 7, 8, 9, 10);

function parseDec(val, places, sep) {
  val = "" + val;
  if (!sep) {
    sep = ".";
  }
  if (!places) {
    places = 0;
  }
  places = parseInt(places);
  if (!parseInt(val)) {
    val = "0";
    if (places > 0) {
      val += sep;
      while (val.substring(val.indexOf(sep)).length <= places) {
        val += "0";
      }
    }
    return val;
  }
  if (val.indexOf(".") > -1 && sep != ".") {
    val = val.substring(0, val.indexOf(".")) + sep + val.substring(val.indexOf(".") + 1);
  }
  if (val.indexOf(sep) > -1) {
    pre = val.substring(0, val.indexOf(sep));
    post = val.substring(val.indexOf(sep) + 1);
  } else {
    pre = val;
    post = "";
  }
  if (places > 0) {
    post = post.substring(0, places + 1);
    if (post.length > places) {
      if (parseInt(post.substring(post.length - 1)) > 4) {
        post = "" + Math.round(parseInt(post) / 10);
      } else {
        post = "" + Math.round(parseInt(post));
      }
    }
    if (post.length > places) {
      post = "" + Math.round(parseInt(post.substring(0, places)));
    } else if (post.length < places) {
      while (post.length < places) {
        post += "0";
      }
    }
  } else {
    if (parseInt(post.substring(0, 1)) > 4) {
      pre = "" + (parseInt(pre) + 1);
    } else {
      pre = "" + parseInt(pre);
    }
    post = "";
  }
  sep = post.length > 0 ? sep: "";
  val = pre + sep + post;
  return val;
}

function parseMoney(val, sep) {
  return parseDec(val, 2, sep);
}

function sepToDec(val, sep) {
  val = "" + val;
  if (val.indexOf(sep) > -1 && sep != ".") {
    val = val.substring(0, val.indexOf(sep)) + "." + val.substring(val.indexOf(sep) + 1);
  }
  return val;
}

function decToSep(val, sep) {
  val = "" + val;
  sep = "" + sep;
  if (val.indexOf(".") > -1 && sep.length > 0) {
    val = val.substring(0, val.indexOf(".")) + sep + val.substring(val.indexOf(".") + 1);
  }
  return val;
}

/********************************************************************************
Copyright (C) 1999 Thomas Brattli
This script is made by and copyrighted to Thomas Brattli at www.bratta.com
Visit for more great scripts. This may be used freely as long as this msg is intact!
I will also appriciate any links you could give me.
********************************************************************************/
//Default browsercheck, added to all scripts!
function checkBrowser() {
  this.ver = navigator.appVersion ;
  this.dom = document.getElementById ? 1: 0 ;
  this.ie5 = (this.ver.indexOf("MSIE 5") > -1 && this.dom) ? 1: 0;
  this.ie4 = (document.all && !this.dom) ? 1: 0;
  this.ns5 = (this.dom && parseInt(this.ver) >= 5) ? 1: 0;
  this.ns4 = (document.layers && !this.dom) ? 1: 0;
  this.bw = (this.ie5 || this.ie4 || this.ns4 || this.ns5) ;
  return this
}
bw = new checkBrowser()
//Shows the div
    function show(div, nest) {
  obj = bw.dom ? document.getElementById(div).style: bw.ie4 ? document.all[div].style: bw.ns4 ? nest ? document[nest].document[div] : document[div] : 0;
  obj.display = 'block'
    }
//Hides the div
    function hide(div, nest) {
      obj = bw.dom ? document.getElementById(div).style: bw.ie4 ? document.all[div].style: bw.ns4 ? nest ? document[nest].document[div] : document[div] : 0;
      obj.display = 'none'
    }

    function getTerm() {
      var monthRange = new Array(12, 24, 36, 48, 60, 6);
      for (var i = 0; i <= 4; i++) {
        if (get_element('sliderLabel' + i).className == "sliderLabelSelected") {
      //alert(monthRange[i]);
          return monthRange[i];
        }
      }
      return - 1;
    }

    function getPPI() {
  //	return $F('protection')=="yes";
  //    return document.forms[0].protection[0] == "yes";
      return true;
    }

    function nagPPI() {

      if (getPPI() || refused) {
        getQuote();
      } else {
        getQuote();
      }
    }

    function goBorrow(bPPI) {
      alert("goBorrow!") ;
      var r = "https://" + window.location.host + "/ZopaWeb/Pages/Secure/Workflow/StartBorrowing.aspx?amount=" + amount_ + "&term=" + term_ + "&ppi=" + bPPI;
      alert(r);
  //	document.location = r;
    }

    function goBorrow2(bPPI) {
  //      alert("goBorrow2!")
      var l = window.location.host;
      var aPosition = l.indexOf("virgilio");
      if (aPosition > -1) l = "www.zopa.it";
      var r = "https://" + l + "/ZopaWeb/Pages/Secure/Workflow/StartBorrowing.aspx?amount=" + gup("amount") + "&term=" + gup("term") + "&ppi=" + bPPI;
  //	var r ="https://" + window.location.host +  "/ZopaWeb/Pages/Secure/Members/MyZopa/Home.aspx";
  //	alert(r);
      document.location = r;
    }

    function applyNow() {
      amount_ = $F('borrowingamountText');

      if (!validateNumber(amount_) || amount_ == "") {
        alert("Attenzione! Devi indicare una cifra tra " + minimumBorrowingAmount + " e "+ maximumBorrowingAmount +" senza punti e simbolo dell'euro");
        return;
      } else if (amount_ > maximumBorrowingAmount || amount_ < minimumBorrowingAmount) {

        if (amount_ < minimumBorrowingAmount) {
          ping('amount/low');
        } else if (amount_ > maximumBorrowingAmount) {
          ping('amount/high');
        }

        alert("Attenzione! Devi indicare una cifra tra " + minimumBorrowingAmount + " e "+ maximumBorrowingAmount +" senza punti e simbolo dell'euro");
        return;
      } else {
        amount_ = (Math.round(amount_ / 100)) * 100;
      }

      term_ = getTerm();

      window.location.href = "https://" + window.location.host + "/ZopaWeb/Pages/Secure/Workflow/StartBorrowing.aspx?amount=" + amount_ + "&term=" + term_ + "&ppi=false";
    }

    function getQuote() {

      if (getPPI()) {
        ppi_ = "1";
      } else {
        ppi_ = "0";
      }

      amount_ = $F('borrowingamountText');

      if (!validateNumber(amount_) || amount_ == "") {
        alert("Attenzione! Devi indicare una cifra tra " + minimumBorrowingAmount + " e "+ maximumBorrowingAmount +" senza punti e simbolo dell'euro");
        return;
      } else if (amount_ > maximumBorrowingAmount || amount_ < minimumBorrowingAmount) {

        if (amount_ < minimumBorrowingAmount) {
          rawPing('amount/low.txt?amount=' + amount_ + '&term=' + term_ + '&ppi=' + ppi_);
        } else if (amount_ > maximumBorrowingAmount) {
          rawPing('amount/high.txt?amount=' + amount_ + '&term=' + term_ + '&ppi=' + ppi_);
        }

        alert("Attenzione! Devi indicare una cifra tra " + minimumBorrowingAmount + " e "+ maximumBorrowingAmount +" senza punti e simbolo dell'euro");
        
        return;
      } else {
        
   
    //alert("amount= "+ amount_);
      }

      term_ = getTerm();

      $('calcMessage').innerHTML = "sto calcolando ...";

      //window.location.href = '/ZopaWeb/public/borrowing/loan-calculator/results.html' + '?amount=' + amount_ + '&term=' + term_ + '&ppi=' + ppi_;
      window.location.href = '/ZopaWeb/public/help/help-legale/various/attivita_sospesa.htm';
    }

    function getQuote2() {

  //        alert( "getQuote2! " + gup("amount") + " " + gup("term") );
      amount_ = gup("amount");
      term_ = gup("term");
      ppi_ = gup("ppi");

      getQuote3();
    }

    function getQuote3() {

  //1st ajax call ppi=true
      var webservice = '/ZopaWeb/Ashx/Borrowing/IndicativeMatch.ashx?amount=' + amount_ + '&term=' + term_;

      var myAjax = new Ajax.Request(webservice, {
        method: 'get',
        onSuccess: parseBorrowResults,
        onFailure: errFunc
      });
    }

    function minMarketAPR() {
      var lowest = 999;

      for (m = 0; m < marketList.length; m++) {
        if (marketList[m].apr < lowest) lowest = marketList[m].apr;
      }

      return lowest;
    }

    function maxMarketAPR() {
      var biggest = 0;

      for (m = 0; m < marketList.length; m++) {
        if (marketList[m].apr > biggest) biggest = marketList[m].apr;
      }

      return biggest;
    }

    function parseBorrowResults(request) {

      var xml = request.responseXML;
      var marketsXML = xml.getElementsByTagName('match');

      for (var i = 0; i < marketsXML.length; i++) {
        var market = marketsXML[i];

        marketListPPI[i] = new Object();

        marketListPPI[i].rate = sepToDec(market.getAttribute('pprate'), ',');

        marketListPPI[i].apr = sepToDec(market.getAttribute('ppapr'), ',');

        var mp = market.getAttribute('ppmonthlypayment');
    //mp = sepToDec( removeCommas(mp.substring(1)) , ',');
        marketListPPI[i].monthlypayment = mp;

        var mp = market.getAttribute('ppfee');
    //mp = sepToDec( mp.substring(1), ',' );
        marketListPPI[i].fee = mp;

        var mp = market.getAttribute('pptotalrepayable');
    //mp = sepToDec( removeCommas(mp.substring(1)) , ',');
        marketListPPI[i].totalrepayable = mp;

        marketList[i] = new Object();

        marketList[i].marketName = market.getAttribute('market');

        marketList[i].rate = sepToDec(market.getAttribute('rate'), ',');

        marketList[i].apr = sepToDec(market.getAttribute('apr'), ',');

        var mp = market.getAttribute('monthlypayment');
    //mp = sepToDec( removeCommas(mp.substring(1)) , ',');
        marketList[i].monthlypayment = mp;

        var mp = market.getAttribute('fee');
    //mp = sepToDec( mp.substring(1), ',' );
        marketList[i].fee = mp;

        var mp = market.getAttribute('totalrepayable');
    //mp = sepToDec( removeCommas(mp.substring(1)) , ',');
        marketList[i].totalrepayable = mp;
      }

  //hide('loanCalculator');
      show('loanCalculator2');

      var wMarket = anyMarkets();
      if (wMarket) {
        showSec(wMarket);
      } else {
        hide('quoteArea', 'loanCalculator2');
        hide('noQuoteArea', 'loanCalculator2');
        show('noMarketArea', 'loanCalculator2');
      }

    }

    function emptyPPI() {
      empty = false;

      for (m = 0; m < marketListPPI.length; m++) {
        if (isNaN(marketListPPI[m].apr)) empty = true;
      }

      return empty;
    }

    function parseBorrowResults2(request) {

      var xml = request.responseXML;
      var marketsXML = xml.getElementsByTagName('match');

      for (var i = 0; i < marketsXML.length; i++) {
        var market = marketsXML[i];

        marketList[i] = new Object();

        marketList[i].marketName = market.getAttribute('market');
        marketList[i].rate = parseFloat(market.getAttribute('rate'));
        marketList[i].apr = parseFloat(market.getAttribute('apr'));

        var mp = market.getAttribute('monthlypayment');
    //mp = parseFloat( removeCommas(mp.substring(1)) );
        marketList[i].monthlypayment = mp;

        var mp = market.getAttribute('fee');
        mp = parseFloat(mp.substring(1));
        marketList[i].fee = mp;

    // !!!! kludge until new webservice turns up
        marketList[i].totalrepayable = (marketList[i].monthlypayment * term_) + marketList[i].fee;
    // !!!! kludge until new webservice turns up
      }

      hide('loanCalculator');
      show('loanCalculator2');

      var wMarket = anyMarkets();
      if (wMarket) {
        showSec(wMarket);
      } else {
        hide('quoteArea', 'loanCalculator2');
        hide('noQuoteArea', 'loanCalculator2');
        hide('tabsArea', 'loanCalculator2');
        show('noMarketArea', 'loanCalculator2');
      }
    }

    function getMarketIndex(n) {
      for (var m = 0; m < marketList.length; m++) {
        if (marketList[m].marketName == marketNames[n]) {
          return m;
        }
      }
      return - 1;
    }

    function anyMarkets() {
      for (var i = 1; i <= 4; i++) {
        if (getMarketIndex(i) >= 0) {
          return i;
        }
      }
      return 0;
    }

    function errFunc(request) {
      alert('Error1 ' + request.status + ' -- ' + request.statusText);
    }

    function errFunc2(request) {
      alert('Error2 ' + request.status + ' -- ' + request.statusText);
    }

    function validateNumber(yourValue) {
      var re = /^\d{0,5}\.?\d{0,2}$/;
      if (re.test(yourValue)) {
        return true;
      } else {
        return false;
      }
    }

    function removeCommas(strValue) {
      return strValue;
      var objRegExp = /\(/;
      var strMinus = '';

  //check if negative
      if (objRegExp.test(strValue)) {
        strMinus = '-';
      }

      objRegExp = /\)|\(|[.]/g;
      strValue = strValue.replace(objRegExp, '');
      if (strValue.indexOf('$') >= 0) {
        strValue = strValue.substring(1, strValue.length);
      }
      return strMinus + strValue;
    }

    function showSec(n) {

      for (var i = 1; i <= 4; i++) {
        if (i == n) {
          $('loanCalcTab' + n).className = 'active';
        } else {
          $('loanCalcTab' + i).className = '';
        }
      }

      var market = getMarketIndex(n);
      if (market < 0) {
    // no market returned
        show('tabsArea', 'loanCalculator2');
        hide('quoteArea', 'loanCalculator2');
        hide('noMarketArea', 'loanCalculator2');
        show('noQuoteArea', 'loanCalculator2');
    //return;
      } else {
    //there is a market
        selectedTab = n;

        if (isNaN(sepToDec(removeCommas(marketListPPI[market].monthlypayment.substring(1)), ','))) {
      //mp = sepToDec( removeCommas(mp.substring(1)) , ',');
          PPIavailable = false;
          if (ppi_ == "1") {
            alert("Zopa \350 un mercato dinamico e in questo momento non c'\350 abbastanza denaro nel sistema per poterti fornire un prestito con l'assicurazione. Puoi chiedere un altro preventivo per un importo minore o tornare pi\371 tardi...");
            document.forms[0].protection.checked = 0;
            hide('loanCalculator2');
            show('loanCalculator');
            $('calcMessage').innerHTML = "";
            refused = true;
            return;
          }
        } else {
          PPIavailable = true;
        }
        if (amount_ > maximumBorrowingAmount || amount_ < minimumBorrowingAmount) {
          alert("Attenzione! Devi indicare una cifra tra " + minimumBorrowingAmount + " e "+ maximumBorrowingAmount +" senza punti e simbolo dell'euro");
          document.forms[0].protection.checked = 0;
          hide('loanCalculator2');
          show('loanCalculator');
          $('calcMessage').innerHTML = "";
          refused = true;
          return;
        }

        $('amountBorrowed').innerHTML = amount_;
        $('amountBorrowedNOPPI').innerHTML = amount_;
        $('months1').innerHTML = term_;
        $('months2').innerHTML = term_;
        $('months3').innerHTML = term_;
        $('months1NOPPI').innerHTML = term_;
        $('months2NOPPI').innerHTML = term_;
        $('months3NOPPI').innerHTML = term_;
        $('aprMkt').innerHTML = marketList[market].marketName;
        $('aprMktNOPPI').innerHTML = marketList[market].marketName;

    //$('rateMarketFrom').innerHTML = minMarketAPR();
    //$('rateMarketTo').innerHTML = maxMarketAPR();
    //$('rateMarketTypical').innerHTML = "6.7";
        if (ppi_ == "1") {
      // ppi selected
          var mf = Math.round((sepToDec(removeCommas(marketListPPI[market].monthlypayment.substring(1)), ',') - sepToDec(removeCommas(marketList[market].monthlypayment.substring(1)), ',')) * 100) / 100;
          var mf2 = "&euro;&nbsp;" + decToSep(mf, ',');
          zopaFee_ = marketListPPI[market].fee;
          $('zopaFee').innerHTML = "<strong>" + zopaFee_ + "</strong><br />e assicurazione mensile di <strong> "+ mf2+"</strong>";
          $('zopaFeeNOPPI').innerHTML = marketList[market].fee;
          var tr = marketListPPI[market].totalrepayable;
          $('totalRepayable').innerHTML = tr;
          var trNOPPI = marketList[market].totalrepayable;
          $('totalRepayableNOPPI').innerHTML = trNOPPI;          
          var r = marketListPPI[market].monthlypayment;
          
          var rr = marketList[market].monthlypayment;
          $('monthlyRepayments').innerHTML = r;
          var rNOPPI = marketList[market].monthlypayment;
          $('monthlyRepaymentsNOPPI').innerHTML = rNOPPI;
          //$('monthlyRepayments').innerHTML = r + " <br /><span class=\'ZPR_text\'> Rata no PPI: " + rr + "</span>" + " <br /><span class=\'ZPR_text\'> Differenza rata no PPI: " + mf2 + "</span>";
          $('aprMktTypical').innerHTML = parseMoney(marketListPPI[market].apr, ',');
          $('aprRateTypical').innerHTML = parseMoney(marketListPPI[market].rate, ',');
          $('aprMktTypicalNOPPI').innerHTML = parseMoney(marketList[market].apr, ',');
          $('aprRateTypicalNOPPI').innerHTML = parseMoney(marketList[market].rate, ',');

          hide("paymentProtect");
        } else {
      //no ppi
          zopaFee_ = marketList[market].fee;
          $('zopaFee').innerHTML = zopaFee_;
          var r = marketList[market].totalrepayable;
          $('totalRepayable').innerHTML = r;
          var r = marketList[market].monthlypayment;
          $('monthlyRepayments').innerHTML = r;
          $('aprMktTypical').innerHTML = parseMoney(marketList[market].apr, ',');
          $('aprRateTypical').innerHTML = parseMoney(marketList[market].rate, ',');

          var r = marketListPPI[market].monthlypayment;
      //$('pMonthlyRepayments').innerHTML = r.toFixed(2);
      //$('pMonthlyRepaymentsCopy').innerHTML = r.toFixed(2);
      //$('pPerDay').innerHTML = Math.round( (marketListPPI[market].monthlypayment - marketList[market].monthlypayment) * 100 / 31 );
      //$('pPerDayCopy').innerHTML = Math.round( (marketListPPI[market].monthlypayment - marketList[market].monthlypayment) * 100 / 31 );
          if (PPIavailable) {
            show("paymentProtect");
          } else {
            hide("paymentProtect");
          }
        }

        hide('noMarketArea', 'loanCalculator2');
        hide('noQuoteArea', 'loanCalculator2');
        show('tabsArea', 'loanCalculator2');
        show('quoteArea', 'loanCalculator2');
      }

    }

    var monthSlider;

    function initSlider(colour)
// commented-out parameters code a 6-position slider (including 6-month market)
    {
      if (colour == "blue") {
        s_imgSlider = "/ZopaWeb/ApplicationResources/images/calc-slider-blue.gif";

        s_name = TermID;

      } else {
        s_imgSlider = "/ZopaWeb/ApplicationResources/images/calc-slider.gif";
        s_name = "months";
      }
      var A_TPL = {
        'b_vertical': false,
        'b_watch': true,
        'n_controlWidth': 194,
    //242,
        'n_controlHeight': 33,
        'n_sliderWidth': 13,
        'n_sliderHeight': 14,
        'n_pathLeft': -5,
        'n_pathTop': 19,
        'n_pathLength': 192,
    //240,
        's_imgControl': '/ZopaWeb/ApplicationResources/images/calc-track.gif',
        's_imgSlider': s_imgSlider,
        'n_zIndex': 1
      }

      if (document.getElementById('loancalc') == null) {
        sliderform = 'aspnetForm';
      } else {
        sliderform = 'loancalc';
      }

      var A_INIT = {
        's_form': sliderform,
    // 's_name': 'months',
        's_name': s_name,
        'n_minValue': 1,
        'n_maxValue': 5,
    //6,
        'n_value': 5,
        'n_step': 1
      }
      monthSlider = new slider(A_INIT, A_TPL);
  //  for(var i = 0; i <= 5; i++)
      for (var i = 0; i <= 4; i++) get_element('sliderLabel' + i).style.left = (i * 47 - 2) + "px";

      get_element('sl' + monthSlider.n_id + 'base').onmousedown = sliderClick;
      get_element('sliderFill').onmousedown = sliderClick;
      get_element('sliderContainer').onmousedown = sliderClick;
    }

    function sliderClick() {
      f_sliderMouseDown(monthSlider.n_id);
      f_sliderMouseMove();
    }

    function sliderChange(n, inputBox) {
  //var monthRange = new Array(6, 12, 24, 36, 48, 60);
      var monthRange = new Array(12, 24, 36, 48, 60, 6);
      inputBox.value = monthRange[n - 1];
      get_element('sliderFill').style.width = ((n - 1) * 48) + "px";
      for (var i = 0; i <= 4; i++) get_element('sliderLabel' + i).className = "";
      get_element('sliderLabel' + (n - 1)).className = "sliderLabelSelected";

  // zopa - grade rate - not on loan calculator page
      if (document.getElementById("loanCalculator") == null) gradeRate();
    }

//get URL parameter
    function gup(name) {
      var regexS = "[\\?&]" + name + "=([^&#]*)";
      var regex = new RegExp(regexS);
      var tmpURL = window.location.href;
      var results = regex.exec(tmpURL);
      if (results == null) return "";
      else return results[1];
    }

    function prepopulate() {

  //alert("wibble2");
      var monthRange = new Array(6, 12, 24, 36, 48, 60);

      var a = gup("amount");
      var b = gup("term");

  // Some sensible defaults
      if (!a) {
        a = "5000";
      }
      if (!b) {
        b = "24" ;
      }

      if (a != "") {
        document.forms[0].borrowingamountText.value = a;
        document.forms[0].months.value = b;

        for (var i = 1; i <= 3; i++) {
          if (monthRange[i] == b) {
            document.getElementById('sliderLabel' + i).className = "sliderLabelSelected";
            A_SLIDERS[0].f_setValue(n_value = i)
          } else {
              document.getElementById('sliderLabel' + i).className = "";
          }
        }
        document.forms[0].protection.checked = false;
        refused = true;
      }
    }

    function ping(thing) {
      var myAjax = new Ajax.Request('pings/' + thing + '.txt', {
        method: 'get'
      });
    }

    function rawPing(thing) {
      var myAjax = new Ajax.Request('pings/' + thing, {
        method: 'get'
      });
    }

    function hidePPInag() {
      document.getElementById('noppi').style.display = 'block';
      document.getElementById('dropShadow').style.display = 'none';
    }

    function prepopulate4() {
  //$('pPerDayCopy').innerHTML = gup("pperday");
    }

    function getQuoteNoPPI() {
      if (ppi_ == "1") {
        goBorrow2(true);
      } else {
        var _amount = gup("amount");
        var _term = gup("term");
        var u = "/ZopaWeb/public/borrowing/loan-calculator/ppi.html";
    //window.location.href = u + '?pperday=' + $('pPerDay').innerHTML + '&term=' + _term + '&amount=' + _amount;
      }
    }

    function getPPIQuote() {
      var _amount = gup("amount");
      var _term = gup("term");
     // var u = "/ZopaWeb/public/borrowing/loan-calculator/results.html";
     var u = "/ZopaWeb/public/help/help-legale/various/attivita_sospesa.htm";
      window.location.href = u + '?ppi=1' + '&term=' + _term + '&amount=' + _amount;
    }

