
var selectedShipping = null;
var selectedPayment  = null;
var selectedPack     = null;
var selectedCard     = null;
var selectedSurplus  = '';
var selectedBonus    = 0;
var selectedIntegral = 0;
var selectedOOS      = null;
var alertedSurplus   = false;

var groupBuyShipping = null;
var groupBuyPayment  = null;

/* *
 * 改變配送方式
 */
function selectShipping(obj)
{

  if (selectedShipping == obj)
  {
    return;
  }
  else
  {
    selectedShipping = obj;
  }

  var supportCod = obj.attributes['supportCod'].value + 0;
  var theForm = obj.form;

  for (i = 0; i < theForm.elements.length; i ++ )
  {
    if (theForm.elements[i].name == 'payment' && theForm.elements[i].attributes['isCod'].value == '1')
    {
      if (supportCod == 0)
      {
        theForm.elements[i].checked = false;
        theForm.elements[i].disabled = true;
      }
      else
      {
        theForm.elements[i].disabled = false;
      }
    }
  }

  if (obj.attributes['insure'].value + 0 == 0)
  {
    $('GRS_NEEDINSURE').checked = false;
    $('GRS_NEEDINSURE').disabled = true;
  }
  else
  {
    $('GRS_NEEDINSURE').checked = false;
    $('GRS_NEEDINSURE').disabled = false;
  }

  var now = new Date();

  new Ajax.Request('flow.php?step=select_shipping', {
                   method: 'get',
                   parameters: 'shipping=' + obj.value,
                   onSuccess: orderShippingSelectedResponse});
}

/**
 *
 */
function orderShippingSelectedResponse(res)
{
  // 用 evalJSON()方法把服務端傳過來的字符串轉化成JSON數據對象。
  var result = res.responseText.evalJSON(true);

  if (result.need_insure)
  {
    try
    {
      $('GRS_NEEDINSURE').checked = true;
    }
    catch (ex)
    {
      alert(ex.message);
    }
  }

  try
  {
    if ($('GRS_CODFEE') != undefined)
    {
      $('GRS_CODFEE').innerHTML = result.cod_fee;
    }
  }
  catch (ex)
  {
    alert(ex.message);
  }

  orderSelectedResponse(res);
}

/* *
 * 改變支付方式
 */
function selectPayment(obj)
{

  if (selectedPayment == obj)
  {
    return;
  }
  else
  {
    selectedPayment = obj;
  }
  new Ajax.Request('flow.php?step=select_payment', {
                   method: 'get',
                   parameters: 'payment=' + obj.value,
									 onLoading: showLoader,
                   onComplete: hideLoader,
                   onSuccess: orderSelectedResponse});
}
/* *
 * 團購購物流程 --> 改變配送方式
 */
function handleGroupBuyShipping(obj)
{
  if (groupBuyShipping == obj)
  {
    return;
  }
  else
  {
    groupBuyShipping = obj;
  }

  var supportCod = obj.attributes['supportCod'].value + 0;
  var theForm = obj.form;

  for (i = 0; i < theForm.elements.length; i ++ )
  {
    if (theForm.elements[i].name == 'payment' && theForm.elements[i].attributes['isCod'].value == '1')
    {
      if (supportCod == 0)
      {
        theForm.elements[i].checked = false;
        theForm.elements[i].disabled = true;
      }
      else
      {
        theForm.elements[i].disabled = false;
      }
    }
  }

  if (obj.attributes['insure'].value + 0 == 0)
  {
    $('GRS_NEEDINSURE').checked = false;
    $('GRS_NEEDINSURE').disabled = true;
  }
  else
  {
    $('GRS_NEEDINSURE').checked = false;
    $('GRS_NEEDINSURE').disabled = false;
  }

  new Ajax.Request('group_buy.php?act=select_shipping', {
                   method: 'get',
                   parameters: 'shipping=' + obj.value,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 團購購物流程 --> 改變支付方式
 */
function handleGroupBuyPayment(obj)
{
  if (groupBuyPayment == obj)
  {
    return;
  }
  else
  {
    groupBuyPayment = obj;
  }

  new Ajax.Request('group_buy.php?act=select_payment', {
                   method: 'get',
                   parameters: 'payment=' + obj.value,									 
                   onSuccess: orderSelectedResponse});
}

/* *
 * 改變商品包裝
 */
function selectPack(obj)
{
  if (selectedPack == obj)
  {
    return;
  }
  else
  {
    selectedPack = obj;
  }

  new Ajax.Request('flow.php?step=select_pack', {
                   method: 'get',
                   parameters: 'pack=' + obj.value,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 改變祝福賀卡
 */
function selectCard(obj)
{
  if (selectedCard == obj)
  {
    return;
  }
  else
  {
    selectedCard = obj;
  }
  new Ajax.Request('flow.php?step=select_card', {
                   method: 'get',
                   parameters: 'card=' + obj.value,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 選定了配送保價
 */
function selectInsure(needInsure)
{
  needInsure = needInsure ? 1 : 0;

  new Ajax.Request('flow.php?step=select_insure', {
                   method: 'get',
                   parameters: 'insure=' + needInsure,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 選定了配送保價
 */
function selectAllpaid(paidAll)
{
  paidAll = paidAll ? 1 : 0;

  new Ajax.Request('flow.php?step=select_paid', {
                   method: 'get',
                   parameters: 'paid=' + paidAll,
									 onLoading: showLoader,
                   onComplete: hideLoader,									 
                   onSuccess: orderSelectedResponse});
}

/* *
 * 團購購物流程 --> 選定了配送保價
 */
function handleGroupBuyInsure(needInsure)
{
  needInsure = needInsure ? 1 : 0;

  new Ajax.Request('group_buy.php?act=select_insure', {
                   method: 'get',
                   parameters: 'insure=' + needInsure,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 回調函數
 */
function orderSelectedResponse(result)
{

  // 用 evalJSON()方法把服務端傳過來的字符串轉化成JSON數據對象。
  var result = result.responseText.evalJSON(true);

  if (result.error)
  {
    alert(result.error);
    location.href = './';
  }

  try
  {
    var layer = $("GRS_ORDERTOTAL");

    layer.innerHTML = (typeof result == "object") ? result.content : result;

    if (result.payment != undefined)
    {
      var surplusObj = document.forms['theForm'].elements['surplus'];
      if (surplusObj != undefined)
      {
        surplusObj.disabled = result.pay_code == 'balance';
      }
    }
  }
  catch (ex) { }
}

/* *
 * 改變餘額
 */
function changeSurplus(val)
{
  if (selectedSurplus == val)
  {
    return;
  }
  else
  {
    selectedSurplus = val;
  }

  new Ajax.Request('flow.php?step=change_surplus', {
                   method: 'get',
                   parameters: 'surplus=' + val,
                   onSuccess: changeSurplusResponse});
}

/* *
 * 改變餘額回調函數
 */
function changeSurplusResponse(obj)
{
  if (obj.error)
  {
    try
    {
      $("GRS_SURPLUS_NOTICE").innerHTML = obj.error;
      $('GRS_SURPLUS').value = '0';
      $('GRS_SURPLUS').focus();
    }
    catch (ex) { }
  }
  else
  {
    try
    {
      $("GRS_SURPLUS_NOTICE").innerHTML = '';
    }
    catch (ex) { }
    orderSelectedResponse(obj.content);
  }
}

/* *
 * 改變積分
 */
function changeIntegral(val)
{
  if (selectedIntegral == val)
  {
    return;
  }
  else
  {
    selectedIntegral = val;
  }

  new Ajax.Request('flow.php?step=change_integral', {
                   method: 'get',
                   parameters: 'points=' + val,
                   onSuccess: changeIntegralResponse});
}

/* *
 * 改變積分回調函數
 */
function changeIntegralResponse(obj)
{
  if (obj.error)
  {
    try
    {
      $('GRS_INTEGRAL_NOTICE').innerHTML = obj.error;
      $('GRS_INTEGRAL').value = '0';
      $('GRS_INTEGRAL').focus();
    }
    catch (ex) { }
  }
  else
  {
    try
    {
      $('GRS_INTEGRAL_NOTICE').innerHTML = '';
    }
    catch (ex) { }
    orderSelectedResponse(obj.content);
  }
}

/* *
 * 改變紅包
 */
function changeBonus(val)
{
  if (selectedBonus == val)
  {
    return;
  }
  else
  {
    selectedBonus = val;
  }

  new Ajax.Request('flow.php?step=change_bonus', {
                   method: 'get',
                   parameters: 'bonus=' + val,
									 onLoading: showLoader,
                   onComplete: hideLoader,
                   onSuccess: changeBonusResponse});
}

/* *
 * 改變紅包的回調函數
 */
function changeBonusResponse(obj)
{
  if (obj.error)
  {
    alert(obj.error);

    try
    {
      $('GRS_BONUS').value = '0';
    }
    catch (ex) { }
  }
  else
  {
    orderSelectedResponse(obj.content);
  }
}

/**
 * 驗證紅包序列號
 * @param string bonusSn 紅包序列號
 */
function validateBonus(bonusSn)
{
  new Ajax.Request('flow.php?step=validate_bonus', {
                   method: 'get',
                   parameters: 'bonus_sn=' + bonusSn,
									 onLoading: showLoader,
                   onComplete: hideLoader,									 
                   onSuccess: changeBonusResponse});
}

function validateBonusResponse(result)
{
  alert(result);
}

/* *
 * 改變發票的方式
 */
function changeNeedInv()
{
	
  var obj        = $('GRS_NEEDINV');
	var formBuy    = document.forms['orderForm'];
  var objPayee   = formBuy.elements['inv_payee'];
	var objNumber  = formBuy.elements['inv_number'];
	var buttons = $('orderForm').getInputs('radio', 'inv_type');

  var needInv    = obj.checked ? 1 : 0;
  var invPayee   = obj.checked ? objPayee.value : '';
	var invNumber  = obj.checked ? objNumber.value : '';
	var invType = '';
	for (var radio in buttons)
	{
		if (buttons.hasOwnProperty(radio))
		{
			if (buttons[radio].checked)
			{
				invType = buttons[radio].value;
			}
		}
	}

//  //objType.disabled = objPayee.disabled = objContent.disabled = objNumber.disabled = ! obj.checked;
  new Ajax.Request('flow.php?step=change_needinv', {
                   method: 'get',
                   parameters: 'need_inv=' + needInv + '&inv_type=' + invType + '&inv_payee=' + invPayee + '&inv_number=' + invNumber,
									 onLoading: showLoader,
                   onComplete: hideLoader,
                   onSuccess: orderSelectedResponse});
}

/* *
 * 改變發票的方式
 */
function groupBuyChangeNeedInv()
{
  var obj        = $('GRS_NEEDINV');
  var objPayee   = $('GRS_INVPAYEE');
  var objContent = $('GRS_INVCONTENT');
  var needInv    = obj.checked ? 1 : 0;
  var invPayee   = obj.checked ? objPayee.value : '';
  var invContent = obj.checked ? objContent.value : '';
  objPayee.disabled = objContent.disabled = ! obj.checked;

  new Ajax.Request('group_buy.php?act=change_needinv', {
                   method: 'get',
                   parameters: 'need_idv=' + needInv + '&amp;payee=' + invPayee + '&amp;content=' + invContent,
									 onLoading: showLoader,
                   onComplete: hideLoader,
                   onSuccess: null});

}

/* *
 * 改變缺貨處理時的處理方式
 */
function changeOOS(obj)
{
  if (selectedOOS == obj)
  {
    return;
  }
  else
  {
    selectedOOS = obj;
  }
  new Ajax.Request('flow.php?step=change_oos', {
                   method: 'get',
                   parameters: 'oos=' + obj.value,
									 onLoading: showLoader,
                   onComplete: hideLoader,
                   onSuccess: null});

}

/* *
 * 檢查提交的訂單表單
 */
function checkOrderForm(frm)
{
  var msg = new Array();
  var err = false;

  if (frm.elements['country'] && frm.elements['country'].value == 0)
  {
    msg.push('請您選擇收貨人所在國家！');
    err = true;
  }

  if (frm.elements['province'] && frm.elements['province'].value == 0 && frm.elements['province'].length > 1)
  {
    err = true;
    msg.push('請您選擇收貨人所在省份！');
  }

  if (frm.elements['city'] && frm.elements['city'].value == 0 && frm.elements['city'].length > 1)
  {
    err = true;
    msg.push('請您選擇收貨人所在城市！');
  }

  if (frm.elements['district'] && frm.elements['district'].length > 1)
  {
    if (frm.elements['district'].value == 0)
    {
      err = true;
      msg.push('請您選擇收貨人所在區域！');
    }
  }

  if (frm.elements['consignee'].value.empty())
  {
    err = true;
    msg.push('收貨人姓名不能為空！');
  }

  if (frm.elements['email'].value.empty())
  {
    msg.push('電子郵件不能為空！');
  }
  else
  {
    REstr = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
    if (!REstr.test(frm.elements['email'].value))
    {
        err = true;
        msg.push('您輸入的電子郵件信箱不是一個合法的電子郵件信箱。');
    }
  }

  if (frm.elements['address'] && frm.elements['address'].value.empty())
  {
    err = true;
    msg.push('收貨人的詳細地址不能為空！');
  }

  REstr = /^[\d|\.|,]+$/;

  if (frm.elements['zipcode'] && frm.elements['zipcode'].value.length > 0 && (!REstr.test(frm.elements['zipcode'].value)))
  {
    err = true;
    msg.push('郵政編碼只能填寫數字');
  }

  REstr = /^[\d|\-|\s|\_]+$/;
  if (frm.elements['tel'].value.empty())
  {
    err = true;
    msg.push('電話不能為空！');
  }
  else
  {
    if (!REstr.test(frm.elements['tel'].value))
    {
      err = true;
      msg.push('電話號碼不有效的號碼');
    }
  }

  if (frm.elements['mobile'] && frm.elements['mobile'].value.length > 0 && (!REstr.test(frm.elements['mobile'].value)))
  {
    err = true;
    msg.push('手機號碼不是合法號碼');
  }
		
	var paymentSelected = false;
  var shippingSelected = false;

  // 檢查是否選擇了支付配送方式
  for (i = 0; i < frm.elements.length; i ++ )
  {
    if (frm.elements[i].name == 'shipping' && frm.elements[i].checked)
    {
      shippingSelected = true;
    }

    if (frm.elements[i].name == 'payment' && frm.elements[i].checked)
    {
      paymentSelected = true;
    }
  }

  if (!shippingSelected)
  {
    err = true;
    msg.push('您必須選取一個配送方式。');    
  }

  if (!paymentSelected)
  {
    err = true;
    msg.push('您必須選取一個付款方式。');
  }
	
  if (err)
  {
    message = msg.join("\n");
    alert(message);
  }	

  // 檢查用戶輸入的餘額
  if ($("GRS_SURPLUS"))
  {
    var surplus = $("GRS_SURPLUS").value;

    new Ajax.Request('flow.php?step=check_surplus', {
                     method: 'get',
                     parameters: 'surplus=' + surplus,
										 onLoading: showLoader,
                     onComplete: hideLoader,
                     onSuccess: function(result){
                        try{$('GRS_SURPLUS_NOTICE').innerHTML = error;}
                        catch (ex){}
                        return false;
                    }});
  }

  // 檢查用戶輸入的積分
  if ($("GRS_INTEGRAL"))
  {
    var integral = $("GRS_INTEGRAL").value;
    new Ajax.Request('flow.php?step=check_integral', {
                     method: 'get',
                     parameters: 'integral=' + integral,
										 onLoading: showLoader,
                     onComplete: hideLoader,										 
                     onSuccess: function(result){
                        try{$('GRS_INTEGRAL_NOTICE').innerHTML = error;}
                        catch (ex){}
                        return false;
                    }});
  }
  return !err;
}

/* *
 * 檢查收貨地址信息表單中填寫的內容
 */
function checkConsignee(frm)
{
  var msg = new Array();
  var err = false;

  if (frm.elements['country'] && frm.elements['country'].value == 0)
  {
    msg.push('請您選擇收貨人所在國家！');
    err = true;
  }

  if (frm.elements['province'] && frm.elements['province'].value == 0 && frm.elements['province'].length > 1)
  {
    err = true;
    msg.push('請您選擇收貨人所在省份！');
  }

  if (frm.elements['city'] && frm.elements['city'].value == 0 && frm.elements['city'].length > 1)
  {
    err = true;
    msg.push('請您選擇收貨人所在城市！');
  }

  if (frm.elements['district'] && frm.elements['district'].length > 1)
  {
    if (frm.elements['district'].value == 0)
    {
      err = true;
      msg.push('請您選擇收貨人所在區域！');
    }
  }

  if (frm.elements['consignee'].value.empty())
  {
    err = true;
    msg.push('收貨人姓名不能為空！');
  }

  if (frm.elements['email'].value.empty())
  {
    msg.push('電子郵件不能為空！');
  }
  else
  {
    REstr = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
    if (!REstr.test(frm.elements['email'].value))
    {
        err = true;
        msg.push('您輸入的電子郵件信箱不是一個合法的電子郵件信箱。');
    }
  }

  if (frm.elements['address'] && frm.elements['address'].value.empty())
  {
    err = true;
    msg.push('收貨人的詳細地址不能為空！');
  }

  REstr = /^[\d|\.|,]+$/;

  if (frm.elements['zipcode'] && frm.elements['zipcode'].value.length > 0 && (!REstr.test(frm.elements['zipcode'].value)))
  {
    err = true;
    msg.push('郵政編碼只能填寫數字');
  }

  REstr = /^[\d|\-|\s|\_]+$/;
  if (frm.elements['tel'].value.empty())
  {
    err = true;
    msg.push('電話不能為空！');
  }
  else
  {
    if (!REstr.test(frm.elements['tel'].value))
    {
      err = true;
      msg.push('電話號碼不有效的號碼');
    }
  }

  if (frm.elements['mobile'] && frm.elements['mobile'].value.length > 0 && (!REstr.test(frm.elements['mobile'].value)))
  {
    err = true;
    msg.push('手機號碼不是合法號碼');
  }

  if (err)
  {
    message = msg.join("\n");
    alert(message);
  }
  return !err;
}