/**
 * Live Commerce, Open Source E-Commerce Solutions
 * http://www.live-commerce.com
 * Copyright (c) 2009 DigitalStudio Inc, http://www.ds-style.com
 *
 * Live Commerceコアファイルとして利用できるJSスタイル
 * http://yourhost/file/path/js/______.js ←このURLで呼び出し可能
 * 
 * 最新バージョンへアップグレードを行えるようにするために、このファイルを編集する
 * ことは推奨していません。このファイルを編集するのではなく、新たに関数を作成し、
 * 新しく作成した関数をプラグインとしてシステムに読込させるようにしてください。
 * もし、このファイルを編集した場合、次回アップグレードしたときに編集した関数が使え
 * なくなる可能性があります。
 *
 * カスタマイズについての詳細は以下を参照のこと。
 * http://www.live-commerce.com/wiki/index.php/プラグイン
 *
 * LICENSE: ライセンス情報
 *
 * @package  Live Commerce
 * @copyright  Copyright (c) 2009, DigitalStudio
 * @license    http://www.live-commerce.com/about/gpl/   GPL License*/
 
Event.observe(window, "load", onLoad);

function onLoad()
{
  var zoneElem = document.getElementById("zone");
  if (!zoneElem) {
    return;
  }
  var count = zoneElem.options.length;
  if (!count) {
    Element.hide('ddzone', 'dtzone', 'btn_postcode');
    Element.show('ddzipcode', 'dtzipcode');
  }
  else {
    Element.hide('ddzipcode', 'dtzipcode');
    Element.show('ddzone', 'dtzone');

    var min = 0;
    
    var elem = $('zipcode');
    if (!elem.length) {
      elem.value = ' ';
      for (var i=0; i<=255; i++) {
        elem.value += ' ';
      }
    }

    var countryElem = $('country');
    if (countryElem) {
      if (countryElem.value != 'JP') {
        Element.hide('btn_postcode');
      }
    }
  }
}

function clearZoneSelectData()
{
  var zoneElem = document.getElementById("zone");
  if (!zoneElem) {
	return;
  }
  var options = zoneElem.options;
  var count = options.length;
  for (var i=count-1;i>0;i--) {
	var optElem = options[i];
	zoneElem.removeChild(optElem);
  }
}

function setZoneSelectData(zoneList)
{
  var zoneElem = document.getElementById("zone");
  var count = zoneList.length;
  zoneElem.options.length = count;
  for (i=0;i<count;i++) {
	zoneElem.options[i] = zoneList[i];
  }
}

function resetZone(o)
{
  var obj = eval('(' + o.responseText + ')');

  clearZoneSelectData();

  if (obj.count == 0) {
    Element.hide('ddzone','dtzone');
    Element.show('ddzipcode','dtzipcode');
    $('zipcode_kind').value = '0';

    var elem = $('zipcode');
    elem.value = '';
  }
  else {
    Element.hide('ddzipcode','dtzipcode');
    Element.show('ddzone','dtzone');
    $('zipcode_kind').value = '1';

    var elem = $('zipcode');
    if (!elem.value.length) {
      elem.value = ' ';
      for (var i=0; i<=255; i++) {
        elem.value += ' ';
      }
    }
    
    var zoneList = new Array();    
    for (var i=0;i<obj.count;i++) {
      var zone = obj.zoneList[i];
      zoneList[i] = new Option(zone.zone_title, zone.id);
    }
    setZoneSelectData(zoneList);
  }
}

function onCountryChange()
{
  var countryElem = document.getElementById("country");
  if (!countryElem) {
    return;
  }
  if (countryElem.value != 'JP') {
	  var postCode = document.getElementById("btn_postcode");
	  if (postCode != null && typeof postCode != 'undefined') {
		  Element.hide('btn_postcode');
	  }
  } else {
	  var postCode = document.getElementById("btn_postcode");  
	  if (postCode != null && typeof postCode != 'undefined') {
		  Element.show('btn_postcode');
	  }
  }

  var option = countryElem.options[countryElem.selectedIndex];
  if (!option) {
    return;
  }

  var code = encodeURIComponent(option.value);
  var url = "/zone/get-zone-list/code/" + code;

  new Ajax.Request(url, {method: 'get', onSuccess: resetZone});
}

function setAddress(o)
{
  var obj = eval('(' + o.responseText + ')');

  if (obj.count == 0) {
    return;
  }

  if (!obj.addressList[0]) {
    return;
  }

  var row = obj.addressList[0];

  var state = row.state;

  var zoneElem = document.getElementById('zone');
  if (row.state && zoneElem) {
    var selectValue = 0;
    var options = zoneElem.options;
    var count = options.length;
    for (var i=0; i< count; i++) {
    if (zoneElem.options[i].text == row.state) {
        selectValue = zoneElem.options[i].value;
        break;
      }
    }
    if (selectValue) {
      zoneElem.value = selectValue;
    }
  }
  var cityElem = document.getElementById('city');
  if (row.city && cityElem) {
      cityElem.value = row.city;
  }
  var suburbElem = document.getElementById('suburb');
  if (suburbElem) {
      suburbElem.value = row.suburb;
  }
}

function onGetPostcodeClick()
{
  var postcodeElem = document.getElementById('postcode');
  if (!postcodeElem) {
    alert('1');
    return;
  }
  /*
  var postcodeTokenElem = document.getElementById('postcode_token');
  if (!postcodeTokenElem) {
    alert('2');
    return;
  }
  */

  var postcode = postcodeElem.value;
  if (!postcode.length) {
    return;
  }
  var postcodeToken = '';
  /*
  var postcodeToken = postcodeTokenElem.value;
  if (!postcodeToken.length) {
    return;
  }
  */

  postcode = encodeURIComponent(postcode);
  postcodeToken = encodeURIComponent(postcodeToken);

  var url = "/postcode/get-address/postcode/" + postcode + '/tkn/' + postcodeToken;

  new Ajax.Request(url, {method: 'get', onSuccess: setAddress});
}

function setPointAndPaymens(o) {
    var obj = eval('(' + o.responseText + ')');
    if (obj.display) {
        document.getElementById("pay_as_point").style.display = "block";
    } else {
        document.getElementById("pay_as_point").style.display = "none";
    }
    var holdPoint = document.getElementById("pay_as_totalPoint")
    var point = document.getElementById('point');
    var totalPoint = document.getElementById('totalPoint');
    var payments = document.getElementById("checkout").payment;
    if (holdPoint.checked && obj.display) {
        // set point
        point.value = obj.point;
        // set payments disabled = true 
        for (var i = 0; i < payments.length; i++) {
            payments[i].disabled = true;
        }

    } else {
        // set point
        point.value = '';
        // set payments disabled = false 
        var payments = document.getElementById("checkout").payment;
        for (var i = 0; i < payments.length; i++){
            payments[i].disabled = false;
        }
    }
}

function getPoint() {
    var shippings = document.getElementsByName("shipping");
    var pfn;
    if (shippings.length == 1) {
        pfn = shippings[0].value;
    } else {
        for (var i = 0; i < shippings.length; i++){
            if (shippings[i].checked) {
                pfn = shippings[i].value;
                break;
            }
        }
    }
    var pointToken = '';
    pointToken = encodeURIComponent(pointToken);
    
    var url = "/checkout/point/pfn/" + pfn + '/tkn/' + pointToken;
    new Ajax.Request(url, {method: 'get', onSuccess: setPointAndPaymens});
}

function onGetPointCheckboxClick()
{
    var point = document.getElementById('pay_as_totalPoint');
    if (point.checked == true) {
        getPoint();
        window.scrollTo(2000,2000);
    } else {
        var point = document.getElementById('point');
        // set point
        point.value = '';
        // set payments disabled = false 
        var payments = document.getElementById("checkout").payment;
        for (var i = 0; i < payments.length; i++){
            payments[i].disabled = false;
        }
    }
}

function onGetPointRadioClick()
{
    getPoint();
}

function cart_delete_confirm(delete_url)
{
    if (window.confirm('Are you sure you want to remove this item from cart ?')) {
        location.href = delete_url;
    }
}


function validateTel(value, options)
{
    if (!value.match(/^[0-9]+([\-][0-9]+)+$/)) {
        return false;
    }
    return true;
}


function getCouponInfo() {
    var code = document.getElementById('coupon').value;
    if (code == null || code.length == 0) {
        document.getElementById("coupon_error").innerHTML = '';
        alert('Please enter the coupon code.');
        document.getElementById("coupon").focus();
        return false;
    }
    var pointToken = '';
    pointToken = encodeURIComponent(pointToken);
    var url = "/checkout/coupon/code/" + code + '/tkn/' + pointToken;
    new Ajax.Request(url, {method: 'get', onSuccess: afterProcessForCoupon});
}

function afterProcessForCoupon(o) { 
    var obj = eval('(' + o.responseText + ')'); 
    if (obj.error) { 
        document.getElementById("coupon_error").innerHTML = '<font color="red">' + obj.error + '</font>';
    } else {
        location.reload();
    }
}
