

function change_margin()
{
  var rate = document.copage.rate.value;
  if (rate == 'N/A')
  {
    choose_manual();
    return;
  }

  rate = strip_to_number(rate);
  var m_index = document.copage.markup_type.selectedIndex;
  var m_type = document.copage.markup_type.options[m_index].text;
  if (m_type == 'margin' && rate >= 100)
  {
    alert("The margin cannot be greater than or equal to 100%");
    set_markup_method(SavedMethod);
    document.copage.rate.value = SavedRate;
    return;
  }

  choose_manual();
  SavedRate = to_string_w_decimal(rate, 2);
  document.copage.rate.value = SavedRate;
  SavedMethod = m_type;
  calculate_all_prices_from_margin();
}

function unbold_everything_but(r)
{
  bolden_dist_line(r);
  if(SelectedKey != r){
      un_bolden_dist_line(SelectedKey);
  }
  SelectedKey = r;
}

function update_markup_rate()
{
  var price = strip_to_number(document.copage.unit_price.value);
  var m_index = document.copage.markup_type.selectedIndex;
  var m_type = document.copage.markup_type.options[m_index].text;

  if (m_type == 'margin')
  {
    if (price > 0)
    {
      var new_margin = 100 * (1 - SelectedCost/price);
      document.copage.rate.value = to_string_w_decimal(new_margin, 2);
    }
    else
    {
      document.copage.rate.value = 'N/A';
    }
  }
  else
  {
    if (SelectedCost > 0)
    {
      new_markup = 100 * (price/SelectedCost - 1);
      document.copage.rate.value = to_string_w_decimal(new_markup,2);
    }
    else
    {
      document.copage.rate.value = 'N/A';
    }
  }
}


function change_unit_price()
{
  choose_manual();
  var price = strip_to_number(document.copage.unit_price.value);
  set_unit_price(price);
  update_markup_rate();
  for (ii = 0; ii < DistCost.length; ii++)
  {
    DistPrice[ii] = price;
  }
  redisplay_all_distributor_prices();
}


function set_markup_method(method)
{
  for(i = 0; i < document.copage.markup_type.options.length; i++)
  {
    if (document.copage.markup_type.options[i].text == method)
      document.copage.markup_type.options[i].selected = true;
  }
}


function calculate_all_prices_from_margin()
{
  var multiplier = calculate_multiplier_from_margin();
  if (multiplier == 'N/A')
    return;
  for (ii = 0; ii < DistCost.length; ii++)
  {
    DistPrice[ii] = multiplier*DistCost[ii];
  }
  redisplay_all_distributor_prices();
  var price = calculate_price_from_margin(SelectedCost);
  set_unit_price(price);
}

function add_item_to_quote(pn)
{
  document.copage.add_to_quote.value = pn;
  document.copage.decor_redirect_url.value = '';
  document.copage.submit();
}

function dont_add_item_to_quote()
{
  alert("Please contact your sales representative about pricing " +
        "for this product.");
}

function choose_manual()
{
  document.copage.manual_override[1].checked = true;
}

function update_selected_dist(e)
{
	var elem = getEventTarget(e);
  choose_manual();
	var reg = /dist_radio(\d*)/;
	var matches = elem.id.match(reg);
  var ii = matches[1];
  unbold_everything_but(ii);
  SelectedCost = DistCost[ii];
  set_unit_price(DistPrice[ii]);
  update_markup_rate();
}

function change_rate()
{
  cost=document.copage.selected_dist_cost.value;
  rate=document.copage.rate.value;
  
  if(document.copage.markup_type.options[document.copage.markup_type.selectedIndex].value==2)
  {
    price = cost + (cost*(rate/100)); 
  }
  else
  {
    price = cost/(1-(rate/100));
  }
  update_customer_price(price);

}

function set_unit_price(price)
{
  price = to_string_w_decimal(price, 2);
  document.copage.unit_price.value = price;
  document.getElementById("cust_price").innerHTML='\$' + price;
  recalculate_total();
}

function change_unit_qty()
{
  var qty = strip_to_integer(document.copage.unit_qty.value);
  document.copage.unit_qty.value = qty;
  recalculate_total();
}

function recalculate_total()
{
  var price = strip_to_number(document.copage.unit_price.value);
  var qty = strip_to_integer(document.copage.unit_qty.value);
  var total = price*qty;
  document.copage.total_price.value = to_string_w_decimal(total, 2);
}

function remove_special_js_elements(key)
{
  key = key.replace(/\+/,"");
  key = key.replace(/-/,"");
  key = key.replace(/=/,"");
  key = key.replace(/\//,"");
  key = key.replace(/\\/,"");
  key = key.replace(/\./,"");
  return key;
}

dist_line_elems = new Array('name','lm','descr','pn','cost','total', 'dist_invent', 'invent','price');

function un_bolden_dist_line(key)
{
    key = remove_special_js_elements(key);
    for (ii = 0; ii < dist_line_elems.length; ii++){
      var widgetname = "dist_" + dist_line_elems[ii] + key;
      span_elem = document.getElementById(widgetname);
      if (span_elem){
          reg = new RegExp(/cost/);
          if(span_elem.id.match(reg)) 
            span_elem.className = "BodyDataRed"; 
          else 
            span_elem.className = "BodyData"; 
    span_elem.style.fontWeight = 'normal';
      }
    }
}

function bolden_dist_line(r)
{
  for (ii = 0; ii < dist_line_elems.length; ii++)
  {
    var span_elem = document.getElementById("dist_" + dist_line_elems[ii] + r);
    if (span_elem){
        reg = new RegExp(/cost/);
        if(span_elem.id.match(reg)) 
     span_elem.className = 'BodyDataRed';
  else 
     span_elem.className = 'BodyDataBold';
  span_elem.style.fontWeight = 'bold';
    }
  }
}


function change_order(field,order)
{
  document.copage.order_by.value=field;
  document.copage.order.value=order;
  document.copage.submit();
}

function warehouse_resort(field, order){
    document.copage.wsort.value = field;
    document.copage.worder.value = order;

    document.copage.submit();
}

function resort_both(field, order, dporder){
    document.copage.order_by.value = field;
    document.copage.order.value = dporder;

    document.copage.wsort.value = field;
    document.copage.worder.value = order;

    document.copage.submit();
}

function set_info_type(new_info_type)
{
  document.copage.info_type=new_info_type;
  document.copage.decor_redirect_url.value="";
  document.copage.add_to_quote.value="no";
  document.copage.submit();
}

function set_action(action)
{
  document.copage.product_action.value=action;
  document.copage.submit();
}

function select_price()
{
  document.getElementById('addtoquote').focus();
  if (document.copage.unit_price.disabled)
    document.copage.unit_qty.select();
  else
    document.copage.unit_price.select();
}

function check_uncheck_multiple(e)
{
  var main_elem = getEventTarget(e);
  var to_do;
  if(main_elem.checked) to_do = true;
    else to_do = false;
  var pat = /^compare/;
  for(i=0;i<document.copage.elements.length;i++) {
    elem = document.copage.elements[i];
    if(elem.name.match(pat)) {
      elem.checked = to_do;
    }
  }
}

function add_items_to_quote()
{
  prods = figure_out_all_prods_checked();

  var products = "";
  var products = prods.join('\t');

  if(products) {
    if(document.getElementById('add_to_quote'))
    add_item_to_quote(products);
    else 
    set_param_redirect('quote|item_add', products);
  }
}

function compare(baseurl)
{
  var pat = /^checkmultiple/;
  var products = "";
  for(i=0;i<document.copage.elements.length;i++) {
    elem = document.copage.elements[i];
    if(elem.id.match(pat) && elem.checked) {
      if(products) products = products + "&prodid=" + elem.value;
       else products = "prodid=" + elem.value ;
    }
  }
  if(products) 
    set_redirect(baseurl + "?" + products);
}

function pre_change()
{
  document.copage.group_by.options[0].selected = true;
}

 function adjust_qty()
{
    focus_on_add();
    document.copage.unit_qty.select();
}
function adjust_price()
{
    focus_on_add();
    document.copage.unit_price.select();
}
function focus_on_add() 
{
    document.getElementById("addfocus").focus();
}

function keypress_submit() 
{
	// all searches need to clear out the startnum arg
	document.getElementById('search|startnum').value = 0;
	key = window.event.keyCode;
	if( key == 13 )
	{
		document.copage.submit(); 
	}
	return true;
}


function dont_add_item_to_quote()
{
  alert("Please contact your sales representative about pricing " + "for this product.");
}

function submit_on_enter(e){
  if(e && e.keyCode == 13)
  {
    set_param_redirect('search|startnum',0); 
  }
  return true;
}

