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

function stopEvent(e)
{
  e=e||event;
  e.stoppropagation? e.stoppropagation() : e.cancelBubble=true;
}

function submitForm(form, state)
{
  //$(this).up('form').submit('unprocessed')
  // form.action = 'put your url here';
  var el = document.createElement("input");
  el.type = "hidden";
  el.name = "state";
  el.value = state;
  form.appendChild(el);
  form.submit();
}

function submitFormSort(form, order)
{
  //$(this).up('form').submit('unprocessed')
  // form.action = 'put your url here';
  var sort_order = form['sort_order'];

  if(sort_order.value == (order + '_d'))
    sort_order.value = order + '_a';
  else
    sort_order.value = order + '_d';

  var el = document.createElement("input");
  el.type = "hidden";
  el.name = "state";
  el.value = "resort";
  form.appendChild(el);
  form.submit();
}

function selectToggleAllForm(form, state)
{
   for (var i = 0; i < form.elements.length; i++)
    {
      var element = form.elements[i];
      var type = element.type;
      var tag = element.tagName.toLowerCase();
      if (type == 'checkbox' )
        { element.checked = state; }
    }
}

function selectAllForm(form)
{
  for (var i = 0; i < form.elements.length; i++)
    {
      var element = form.elements[i];
      var type = element.type;
      var tag = element.tagName.toLowerCase();
      if (type == 'checkbox' )
        { element.checked = true; }
    }
}

function selectNoneForm(form)
{
  for (var i = 0; i < form.elements.length; i++)
    {
      var element = form.elements[i];
      var type = element.type;
      var tag = element.tagName.toLowerCase();
      if (type == 'checkbox' )
        { element.checked = false; }
    }
}

function clearForm(form)
{
  // clears values from all form elements
  //Form.reset(form)

  for (var i = 0; i < form.elements.length; i++)
    {
      var element = form.elements[i];
      var type = element.type;
      var tag = element.tagName.toLowerCase();
      if (type == 'text')
        {  element.value = "";}
      else if (type == 'checkbox' || type == 'radio')
        { element.checked = false; }
      else if (tag == 'select')
        { element.selectedIndex = -1; }
    }
}

function toggleShippingAddress()
{
  var e = $('order_use_shipto');
  if(e.checked)
    {
      $('order_shipping_family_name').disabled = false;
      $('order_shipping_given_name').disabled = false;
      $('order_shipping_family_name_katakana').disabled = false;
      $('order_shipping_given_name_katakana').disabled = false;
      $('order_shipping_prefecture_id').disabled = false;
      $('order_shipping_zip').disabled = false;
      $('order_shipping_address').disabled = false;
      $('order_shipping_address_street').disabled = false;
      $('order_shipping_phone_number').disabled = false;
      $('order_shipping_fax').disabled = false;
      $('order_shipping_fill_address').disabled = false;
      //$$('.ship-toggle').each(function(e){e.show()})
      $$('.ship-toggle').each(function(e){ new Effect.BlindDown(e,{duration:1}); })

      //force ie into the correct state..
      $('order_use_shipto').checked = true;
    }
  else
    {
      $('order_shipping_family_name').disabled = true;
      $('order_shipping_given_name').disabled = true;
      $('order_shipping_family_name_katakana').disabled = true;
      $('order_shipping_given_name_katakana').disabled = true;
      $('order_shipping_prefecture_id').disabled = true;
      $('order_shipping_zip').disabled = true;
      $('order_shipping_address').disabled = true;
      $('order_shipping_address_street').disabled = true;
      $('order_shipping_phone_number').disabled = true;
      $('order_shipping_fax').disabled = true;
      $('order_shipping_fill_address').disabled = true;
      // $$('.ship-toggle').each(function(e){e.hide()})
      $$('.ship-toggle').each(function(e){ new Effect.BlindUp(e,{duration:1}); })

      //force ie into the correct state..
      $('order_use_shipto').checked = false;
    }
}

function toggleSubmit()
{
  var el = $('order_submit');
  if($('agree_policy').checked){
    el.enable();
    el.removeClassName('submit_disabled');
    el.addClassName('submit');
  } else {
    $('order_submit').disable();
    el.removeClassName('submit');
    el.addClassName('submit_disabled');
  }
}

function addOptionSelected(elTo, elFrom)
{
  for (i = elFrom.length - 1; i>=0; i--) {
    if (elFrom.options[i].selected) {
      var elOptFrom = elFrom.options[i];

      var elOptNew  = document.createElement('option');
      elOptNew.text  = elOptFrom.text;
      elOptNew.value = elOptFrom.value;

      try {
        elTo.add(elOptNew, null); // standards compliant; doesn't work in IE
      }
      catch(ex) {
        elTo.add(elOptNew); // IE only
      }
    }
  }
}

function removeOptionSelected(elSel)
{
  //var elSel = document.getElementById('selectX');
  var i;
  for (i = elSel.length - 1; i>=0; i--) {
    if (elSel.options[i].selected) {
      elSel.remove(i);
    }
  }
}

function moveUpOptionSelected(elSel)
{
  leadBlockStuck = false;

  for (i = 0; i<elSel.length; i++)
    {
      if (elSel.options[i].selected)
        {
          if(i == 0)
            leadBlockStuck = true;
          else if (!leadBlockStuck)
            {
              var elOptSel = elSel.options[i];

              elSel.remove(i);
              try
                {
                  elSel.add(elOptSel, elSel.options[i-1]); // standards compliant; doesn't work in IE
                }
              catch(ex)
                {
                  elSel.add(elOptSel, i-1); // IE only
                }
            }
        }
      else
        leadBlockStuck = false;
    }
}

function moveDownOptionSelected(elSel)
{
  tailBlockStuck = false;

  for (i = elSel.length-1; i >= 0; i--)
    {
      if (elSel.options[i].selected)
        {
          if(i == (elSel.length-1))
            tailBlockStuck = true;
          else if (!tailBlockStuck)
            {
              var elOptSel = elSel.options[i];

              elSel.remove(i);
              try
                {
                  elSel.add(elOptSel, elSel.options[i+1]); // standards compliant; doesn't work in IE
                }
              catch(ex)
                {
                  elSel.add(elOptSel, i+1); // IE only
                }
            }
        }
      else
        tailBlockStuck = false;
    }
}


function selectAllOptions(elSel)
{
  for (i = elSel.length - 1; i>=0; i--)
    elSel.options[i].selected = true;
}

function selectNoOptions(elSel)
{
  for (i = elSel.length - 1; i>=0; i--)
    elSel.options[i].selected = false;
}

function showHideShippingAddress(checkbox) {
  var shipping_address = $('shipping_address');

  if((checkbox != null) && (shipping_address != null))
    {
      if (checkbox.checked)
        shipping_address.show();
      else
       shipping_address.hide();
    }
}

function integerOnly(el) {
  element = (typeof(el) == 'string' ? $(el) : el);
  if (isNaN(element.value)) {
    element.value = element.value.replace(/[^0-9]*/g, '');
  }
}

function highlightCartAdd(productId, code) {
  $('order_items_count_bottom').innerHTML = $('order_items_count').innerHTML;
  $('around_order_items_count').highlight();
  $('around_order_items_count_bottom').highlight();
  $('added_message_' + productId + '_' + code).show();
  $('added_message_' + productId + '_' + code).highlight();
  $('added_message_' + productId + '_' + code).fade({ duration: 2.0 });
}

function updateSignin() {
  for (var i = 1; i <= 3; i++)
    {
      sel   = $('mode_' + i);
      login = $('login' + i);

      if( login && sel )
        {
          if (sel.checked)
            login.show();
          else
            login.hide();
        }
    }
}

function checkDeliveryDate() {
  if ($('order_delivery_date_flag').checked) {
    $('delivery_date').show();
  } else {
    $('delivery_date').hide();
  }
}

function updateOrderItemQuantities() {
  var ids = $$('input.hidden-product-id');
  var re = new RegExp(/order_order_items_attributes_(\d+)_product_id/);
  for (var i = 0; i < ids.length; i++) {
    var m = re.exec(ids[i].id);
    if (m) {
      var product_id =  $(ids[i]).value;
      var index = m[1];
      quantity = $('order_order_items_attributes_' + index + '_quantity').value;
      hidden_field = 'order_item_quantity_' + product_id;
      $(hidden_field).value = quantity;
    }
  }
  return true;
}
