var plan_cost = 0;
var phone_cost = 0;
var data_cost = 0;
var total_cost = 0;

var deposit = 0;
var total_now = 0;
var iva_now = 0;
var activation = 15;
var delivery = 0;

Event.observe(window, 'load', function() {
  var brand = $('brand');
  if(brand) brand.observe('change', getPhonesByBrand);

  var phone = $('phone');
  if(phone) phone.observe('change', getDataPlans);

  $$('#plans .button').each(function(element) {
    $(element).observe('click', changeVoicePlan);
  });

  var dd = $('paylater_dd');
  if(dd) dd.observe('click', showDirectDebit);

  var pp = $('paylater_pp');
  if(pp) pp.observe('click', hideDirectDebit);

  var bt = $('paylater_bt');
  if(bt) bt.observe('click', hideDirectDebit);

  var cr = $('paylater_cr');
  if(cr) cr.observe('click', hideDirectDebit);

  var st = $('paylater_st');
  if(st) st.observe('click', hideDirectDebit);

  var dep50 = $('deposit_50');
  var dep100= $('deposit_100');
  var dep150= $('deposit_150');
  var dep200= $('deposit_200');

  if(dep50 && dep100 && dep150 && dep200) {
    dep50.observe('click', function() {setDeposit(50);});
    dep100.observe('click',function() {setDeposit(100);});
    dep150.observe('click',function() {setDeposit(150);});
    dep200.observe('click',function() {setDeposit(200);});
  }

  var delivery = $('delivery');
  if(delivery) delivery.observe('click', toggleDelivery);

  $$('a.info').each(function(element) {
    var href = $(element).href;
    var ind = href.lastIndexOf('/') + 1;
    var id = href.substring(ind);
    $(element).href = '#';
    $(element).id = 'help_' + id;
    $(element).observe('click', showHelp);
  });
});

function showHelp(event) {
  var element = event.element();
  element = element.parentNode;
  var id = element.id;
  new Ajax.Updater(id.substring(5) + '_help', '/en/signup/help/topic/' + id.substring(5), {method: 'get'});

  event.stop();

  return false;
}

function toggleDelivery() {
  if(delivery > 0) 
    delivery = 0;
  else
    delivery = 15;

  updateDelivery();
  updateCostNow();
  updateIvaNow();
  updateTotNow();
}

function setDeposit(value) {
  deposit = value;

  updateCostNow();
  updateDeposit();  
  updateIvaNow();
  updateTotNow();
}

function updateCostNow() {
  iva_now = (phone_cost+activation+delivery)*0.16;
  total_now = (deposit+phone_cost+activation+delivery)+iva_now;
}

function updateDeposit() {
  $('now_deposit').innerHTML = deposit.toFixed(2) + ' €';
}

function updateIvaNow() {
  $('now_iva').innerHTML = iva_now.toFixed(2) + ' €';
}

function updateTotNow() {
  $('now_total').innerHTML = total_now.toFixed(2) + ' €';
}

function updateDelivery() {
  var del1 = $('delivery_label');
  var del2 = $('delivery_sum');
  var addr = $('delivery_address');

  del2.innerHTML = delivery.toFixed(2) + ' €';
  del1.toggleClassName('hidden');
  del2.toggleClassName('hidden');
  addr.toggleClassName('hidden');
}

function showDirectDebit(event) {
  var dd = $('direct_debit');
  if(dd) dd.removeClassName('hidden');
}

function hideDirectDebit(event) {
  var dd = $('direct_debit');
  if(dd) dd.addClassName('hidden');
}

function getPhonesByBrand(event) {
  var brand = $('brand');
  var phone = $('phone');
  var data  = $('dataplans');
  var contract = $('summary_contract');

  //new Ajax.Updater('phone', '/en/signup/getphones?brand=' + brand.getValue(), {method: 'get'});
  new Ajax.Request('/en/signup/getphones?brand=' + brand.getValue(),
  {
    method: 'get',
    onSuccess: function(transport){
      var response = transport.responseText.evalJSON();
      data.update(response.data_html);
      //data.innerHTML = response.data_html;
      $$('#dataplans .button').each(function(element) {
        $(element).observe('click', changeDataPlan);
      });
      phone.update(response.phones_html);
      //phone.innerHTML = response.phones_html;
      contract.update('3 month');
      //contract.innerHTML = '3 month';
      updateCostData(response.data_cost);
      updateCostPhone(response.phone_cost);
    }
  });
}

function getDataPlans(event) {
  var phone = $('phone');
  var brand = $('brand');
  var data = $('dataplans');
  var insurance_cnt = $('insurance_cnt');
  var insurance = $('insurance');
  var contract = $('summary_contract');

  new Ajax.Request('/en/signup/getdataplans?brand=' + brand.getValue() + '&phone=' + phone.getValue(),
  {
    method:'get',
    onSuccess: function(transport){
      var response = transport.responseText.evalJSON();
      data.update(response.html);
      //data.innerHTML = response.html;
      $$('#dataplans .button').each(function(element) {
        $(element).observe('click', changeDataPlan);
      });
      if(response.insurance) {
        insurance.checked = 'checked';
        insurance_cnt.removeClassName('hidden');
      } else {
        insurance.checked = '';
        insurance_cnt.addClassName('hidden');
      }
      contract.update(response.contract + ' month');
      //contract.innerHTML = response.contract + ' month';
      updateCostData(response.data);
      updateCostPhone(response.phone);
    }
  });
}

function changeVoicePlan(event) {
  $$('#plans .button').each(function(element) {
    $(element).removeClassName('chosen');
  });
  element = event.element();
  element.addClassName('chosen');
 
  var id = element.id; 
  cost = id.substring(4);

  updateCostPlan(cost);

  event.stop();
  return false;
}

function changeDataPlan(event) {
  $$('#dataplans .button').each(function(element) {
    $(element).removeClassName('chosen');
  });
  element = event.element();
  element.addClassName('chosen');

  var id = element.id;
  var model = id.substring(4);
  cost = 0;
  if(model == 'BB')
    cost = 15;
  if(model == 'MS')
    cost = 15;

  $('data_name').value = model;
  updateCostData(cost);

  event.stop();
  return false;
}

function updateCostPlan(cost) {
  plan_cost = parseInt(cost);
  $('voice').value = plan_cost;
  updateCost();
}

function updateCostPhone(cost) {
  phone_cost = parseInt(cost);
  updateCost();
}

function updateCostData(cost) {
  data_cost = parseInt(cost);
  $('data').value = data_cost;
  updateCost();
}

function updateCost() {
  total_cost = plan_cost + phone_cost + data_cost;
  $('summary_voice').innerHTML = plan_cost + ' €';
  $('summary_phone').innerHTML = phone_cost + ' €';
  $('summary_data').innerHTML = data_cost + ' €';
  //$('summary_total').innerHTML = total_cost + ' €';
}


