// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

// Last form field tabs to app toolbar button - Stephen Maurici
/*
Event.observe(window, 'load', setTabIndex);

function setTabIndex() {
	var formElements = $$( '.baseForm p' );
	formElements.each(
		function(formElement, index) {
			if (formElement.childNodes[1].tagName) {
				formElement.childNodes[1].tabIndex = index + 10;
			}
		}
	)
	var numberFormElements = formElements.length;
	var controlsLinks = $$( '.controls p a' );
	controlsLinks.each(
		function(controlsLinks, index) {
			controlsLinks.tabIndex = index + 10 + numberFormElements;
		}
	)
}
*/

// UOM Units Form Functionality - Scott Becker

function new_uom_row() {
  var pos = parseInt($F('uom_count'));
  new Ajax.Request('/admin/uom_unit/new_uom?pos=' + pos, {asynchronous:true, evalScripts:true});
  return false;
}
function delete_uom_row() {
  var pos = parseInt($F('uom_count'));
  new Ajax.Request('/admin/uom_unit/destroy_uom?pos=' + pos, {asynchronous:true, evalScripts:true});
  return false;
}
function bindUomForm() {
  var uomCount = parseInt($F('uom_count'));
  for(var i = 1; i <= uomCount; i++) {
    $('uom_unit_' + i + '_name').onkeyup = updateUomForm;
    $('uom_unit_' + i + '_unit_price').onkeyup = updateUomForm;
    $('uom_unit_' + i + '_volume_quantity').onkeyup = updateUomForm;
    $('free_ship_threshold_id_' + i).onclick = updateUomForm;
  }
  $('free_ship_threshold_id_0').onclick = updateUomForm;
}
function updateUomForm() {
  var uomCount = parseInt($F('uom_count'));
  for(var i = 1; i <= uomCount; i++) {
    $('uom_unit_'+i+'_volume_display').innerHTML = buildVolumeDisplay(i);
    $('uom_unit_'+i+'_uom_price').innerHTML = calcUomPrice(i);
  }
  $('freeShipText').innerHTML = buildFreeShipText(uomCount);
}

function buildVolumeDisplay(pos) {
  if(pos == 1)
    return "Base Unit";
  else
    return "x " + $('uom_unit_' + (pos-1) + '_name').value + "s per " + $('uom_unit_' + pos + '_name').value;
}

function calcUomPrice(pos) {
  if(pos == 1)
    return formatCurrency($('uom_unit_'+pos+'_unit_price').value)
  else {
    var quantity = 1;
    for(var i = 2; i <= pos; i++) {
      quantity = quantity * parseFloat($('uom_unit_' + i + '_volume_quantity').value)
    }
    var result = quantity * parseFloat($('uom_unit_'+pos+'_unit_price').value);
    return formatCurrency(result);
  }
}

function buildFreeShipText(uomCount) {
	if($('free_ship_threshold_id_0').checked == true) {
		return "";
	}
	
  for(var i = 1; i <= uomCount; i++) {
    if($('free_ship_threshold_id_' + i).checked == true) {
//      if(i == 1)
        return "1 " + $('uom_unit_' + i + '_name').value;
//      else
//        return $('uom_unit_' + i + '_volume_quantity').value + ' '  + $('uom_unit_' + (i-1) + '_name').value + "s";
    }
  }
}

function formatCurrency(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num)) num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10) cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function updateProductTotal() {
  var unitPrice = saleableUomPrices[$('cart_item_uom_unit_id').selectedIndex];
  var quantity = parseInt($('cart_item_quantity').value);
  if (quantity > 0)
    $('cartProductTotal').innerHTML = formatCurrency(quantity * unitPrice);
  else
    $('cartProductTotal').innerHTML = "";
}
