var calcs = new Array();
calc = new Object();
calc.cid = 1;
calc.profit = 25;
calc.minprofit = 2700;
calc.addition_to_bid = 0;
calc.transfer = 735;
calc.yen = 76;
calc.comment = 'доставка только до Владивостока. <a target="_blank" href="/pages/calculation#russia">Доставка по России</a> оплачивается отдельно';
calc.delivery = 380;
calcs.push(calc);
calc = new Object();
calc.cid = 2;
calc.profit = 10;
calc.minprofit = 0;
calc.addition_to_bid = 1500;
calc.transfer = 735;
calc.yen = 76;
calc.comment = '<a target="_blank" href="/pages/calculation#air">авиадоставка</a> до любого населенного пункта России';
calc.delivery = new Array(0.3,1500,0.5,1800,0.6,2000,0.7,2200,0.8,2400,0.9,2600,1.0,2800,1.25,3250,1.5,3700,1.75,4150,2.0,4600,2.5,5400,3.0,6200,3.5,7000,4.0,7800,4.5,8600,5.0,9400,5.5,10200,6.0,11000,7.0,12300,8.0,13600,9.0,14900,10.0,16200,11.0,17500,12.0,18800,13.0,20100,14.0,21400,15.0,22700,16.0,24000,17.0,25300,18.0,26600,19.0,27900,20.0,29200,21.0,30500,22.0,31800,23.0,33100,24.0,34400,25.0,35700,26.0,37000,27.0,38300,28.0,39600,29.0,40900,30.0,42200);
calcs.push(calc);

var calculation_incomplete = '<span class="red_text"><b>Расчет неточный!</b></span><br />Введите ';
var calculation_complete = '<b>Расчет завершен.</b><br/>В расчет включена ';

var delivery_cost = new Array(0,500,1,1000,2,1500,3,2000,10,2500,15,3000,31,5000,81,7000);

function get_calculator(id)
{
  for (idx in calcs) {
    calc = calcs[idx];
    if (calc.cid == id) {
      return calc;
    }
  }
}

function mark_field(field_id) {
  $j(field_id).toggleClass("calc_field_red", 
    !(parseFloat($j(field_id).val()) > 0));
}

function set_delivery_cost()
{
  mark_field('#YahooItemWeight');
  var weight = parseFloat($j('#YahooItemWeight').val());
  
  if (weight > 0) {
    for (w = 0; w < delivery_cost.length; w += 2) {
      if (delivery_cost[w] > weight) {
        break;
      }
    }
    $j('#YahooItemDelivery').val(delivery_cost[w - 1]);
    mark_field('#YahooItemDelivery');
  }
}

function $RF() {
  value = $j("input[name='data[YahooItem][calculator_id]']:checked", '#calculator').val();

  return value;
}

function check()
{
  var calc = get_calculator($RF());
  var bid = parseFloat($j('#YahooItemBid').val());
  var weight = parseFloat($j('#YahooItemWeight').val());
  var delivery = parseFloat($j('#YahooItemDelivery').val());

  var missing_values = new Array();
  if ((bid == 0) || isNaN(bid)) {
    missing_values.push('<a target="_blank" href="/pages/calculation">ставку</a>');
  }
  
  if ((weight == 0) || isNaN(weight)) {
    missing_values.push('<a target="_blank" href="/pages/calculation#weight">вес товара</a>');
  }
  
  if ((delivery == 0) || isNaN(delivery)) {
    missing_values.push('<a target="_blank" href="/pages/calculation#japan">доставку по Японии</a>');
  }

  if (missing_values.length > 0 && bid > 0) {
    $j('#total_yen_class').attr('class', "gray_text");
    $j('#total_usd_class').attr('class', "big gray_text");
  } else {
    $j('#total_yen_class').attr('class', "red_text");
    $j('#total_usd_class').attr('class', "big red_text");
  }

  var notification = "<small>";
  if (missing_values.length > 0) {
    $j('#total_yen').html(0);
    $j('#total_usd').html(0);
    notification += calculation_incomplete 
    notification += missing_values.join(", ");
  } else {
    $j('#total_yen_class').attr('class', "black_text");
    $j('#total_usd_class').attr('class', "big black_text");
    notification += calculation_complete;
    notification += calc.comment;
  }
  notification += ".";
  notification += "</small>";
  $j('#notification').html(notification);

  return (bid > 0) && (weight > 0) && (delivery > 0);
}

function calculate()
{
  check();

  var calc = get_calculator($RF());
  var bid = parseFloat($j('#YahooItemBid').val());
  var weight = parseFloat($j('#YahooItemWeight').val());
  var delivery = parseFloat($j('#YahooItemDelivery').val()) || 0;
  var profit = 0;
  var delivery_to_russia = 0;

  if (bid > 0) {
    profit = bid * calc.profit / 100;
    if (calc.minprofit > 0) {
      profit = profit >= calc.minprofit ? profit : calc.minprofit;
    }
    $j('#profit').html(Math.ceil(profit + calc.addition_to_bid));
  } else {
    $j('#profit').html(0);
  }
    
  if (weight > 0) {
    if (typeof(calc.delivery) == "number") {
      delivery_to_russia = Math.ceil(weight) * calc.delivery;
    } else {
      for (w = 0; w < calc.delivery.length; w += 2) {
        if (calc.delivery[w] >= weight) {
          delivery_to_russia = calc.delivery[w + 1];
          break;
        }
      }
      if (w == calc.delivery.length) {
          w -= 2;
          delivery_to_russia = calc.delivery[w + 1];
          $j('#YahooItemWeight').val(calc.delivery[w]);
          alert("Максимальный вес для данного вида доставки равен " + calc.delivery[w] + " кг");
      }
    }
    $j('#delivery_to_russia').html(Math.ceil(delivery_to_russia));
  } else {
    $j('#delivery_to_russia').html(0);
  }

  if (bid > 0) {
    var price_in_japan_delivered = bid + calc.addition_to_bid + calc.transfer + delivery;
    var total_yen = profit + price_in_japan_delivered + delivery_to_russia;
    $j('#total_yen').html(Math.ceil(total_yen));
    $j('#total_usd').html(Math.ceil(total_yen / calc.yen));
  }
}

function setFormData()
{
    $j('#price').val(parseInt($j('#YahooItemBid').val()));
    $j('#item_weight').val(parseInt($j('#YahooItemWeight').val()));
    $j('#delivery_method').val($j('input:radio[name="data[YahooItem][calculator_id]"]:checked').val());

    return true;
}


$j(document).ready(function () {
  price = $j('#current_bid').text() || $j('#buy_price').text();
  $j('#YahooItemBid').val(parseInt(price));
  mark_field('#YahooItemBid');
  mark_field('#YahooItemWeight');
  mark_field('#YahooItemDelivery');
  calculate();
  
  $j('#YahooItemWeight').keyup(function(e) {
    set_delivery_cost();
  });
  
  $j('#YahooItemBid,#YahooItemWeight,#YahooItemDelivery').keyup(function(e) {
    mark_field('#YahooItemBid');
    calculate();
  });
  
  $j("input[name='data[YahooItem][calculator_id]']", '#calculator')
    .change(function() {
        calculate();
    })
    
});


