/* checkout.js - Contains all the specialized functions specifically for the checkout process. */

function setAddressField(prefix, name, value)
{
  address[prefix][name] = value;
}
 
function setAddress(oForm, address_id, prefix)
{
  var key, field, i;
  var offer_name = false;
  var init = false;
  if(arguments.length >= 4)
    init = arguments[3];
  if(address_id == -1)
  {
    address_id = 0;
    offer_name = true;
  }
  if(address_id == 0 && prefix)
    address_id = prefix;
  if(address[address_id])
  {
    for(key in address[address_id])
    {
      field = (prefix) ? prefix + '_' + key : key;
      oParent = null;
      if(oForm.elements[field])
      {
        if(oForm.elements[field].type == 'select-one')
        {
          for(i = 0; i < oForm.elements[field].options.length; i++)
          {
            if(oForm.elements[field].options[i].value == address[address_id][key])
            {
              oForm.elements[field].selectedIndex = i;
              break;
            }
          }
          oForm.elements[field].disabled = (address_id != 0 && address_id != prefix);
          oForm.elements[field].className = (address_id != 0 && address_id != prefix) ? 'readonlySelect' : 'inputSelect';
          oParent = document.getElementById(oForm.elements[field].id).parentNode;
        }
        else if(oForm.elements[field].length && oForm.elements[field][0].type == 'radio')
        {
          for(i = 0; i < oForm.elements[field].length; i++)
          {
            if(oForm.elements[field][i].value == address[address_id][key])
              oForm.elements[field][i].checked = true;
            oForm.elements[field][i].disabled = (address_id != 0 && address_id != prefix);
          }
          oParent = document.getElementById(oForm.elements[field][0].id).parentNode.parentNode;
        }
        else
        {
          oForm.elements[field].value = address[address_id][key];
          oForm.elements[field].disabled = (address_id != 0 && address_id != prefix);
          oForm.elements[field].className = (address_id != 0 && address_id != prefix) ? 'readonlyText' : 'inputText';
          oParent = document.getElementById(oForm.elements[field].id).parentNode;
        }

        if(oParent && oParent.className.length && !init)
          oParent.className = oParent.className.replace(' error', '');
      }
    }
  }
  field = (prefix) ? prefix + '_name' : 'name';
  oWrapper = document.getElementById(field + '_div');
  if(oWrapper)
    oWrapper.style.display = (offer_name) ? 'block' : 'none';
}

function setCreditCard(oForm, credit_card_id)
{
  var key, i;
  var init = false;
  if(arguments.length >= 3)
    init = arguments[2];
  if(credit_card[credit_card_id])
  {
    for(key in credit_card[credit_card_id])
    {
      if(oForm[key])
      {
        if(oForm[key].type == 'select-one')
        {
          for(i = 0; i < oForm[key].options.length; i++)
          {
            if(oForm[key].options[i].value == credit_card[credit_card_id][key])
            {
              oForm[key].selectedIndex = i;
              break;
            }
          }
        }
        else
          oForm[key].value = credit_card[credit_card_id][key];
      }
    }
  }
}

function toggleDisabled(oForm, bDisabled)
{
  if(toggleDisabled.arguments.length < 3) return;
  for(var i = 2; i < toggleDisabled.arguments.length; i++)
  {
    element = oForm.elements[toggleDisabled.arguments[i]];
    if(element)
    {
      if('input,textarea,select'.indexOf(element.tagName.toLowerCase()) != -1)
      {
        if('checkbox,radio,button,submit,reset'.indexOf(element.type.toLowerCase()) == -1)
        {
          if(!element.getAttribute('enabledClass') && !element.disabled) element.enabledClass = element.className;
          if(!element.getAttribute('disabledClass') && element.disabled) element.disabledClass = element.className;
          element.setAttribute('className', (bDisabled) ? element.disabledClass : element.enabledClass);
        }
        if(element.type.toLowerCase() == 'select-one')
        {
          
          if(bDisabled)
          {
            if(element.selectedIndex != -1)
              element.defaultSelected = element.selectedIndex;
            element.selectedIndex = -1;
          }
          else
          {
            element.selectedIndex = element.defaultSelected;
            element.defaultSelected = element.selectedIndex;
          }
        }
      }
      element.disabled = bDisabled;
    }
  }
  if(!bDisabled && 'text,password,textarea,checkbox,radio,select-one,select-multiple,submit,reset,button'.indexOf(oForm.elements[toggleDisabled.arguments[2]].type.toLowerCase()) != -1) oForm.elements[toggleDisabled.arguments[2]].focus();
}

function toggleDisplayed(bDisplayed)
{
  if(!document.getElementById || toggleDisplayed.arguments.length < 2) return;
  var oElement, oError;
  var displayed = new Object();
      displayed['true'] = 'block';
      displayed['false'] = 'none';
  for(var i = 1; i < toggleDisplayed.arguments.length; i++)
  {
    oElement = document.getElementById(toggleDisplayed.arguments[i]);
    if(oElement)
      oElement.style.display = displayed[bDisplayed];
    oError = document.getElementById(toggleDisplayed.arguments[i] + '_error');
    if(oError)
      oError.style.display = displayed[bDisplayed];
  }
}

function getDefaultSelected(oElement)
{
  var returnValue = -1;
  if(!oElement.options) return;
  for(var i = 0; i < oElement.options.length; i++)
  {
    if(oElement.options[i].defaultSelected)
    {
      returnValue = i;
      break;
    }
  }
  return returnValue;
}

function blockEnter(evt)
{
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
  return !(charCode == 13)
}
