var domain = 'http://shop.kagome.co.jp/'
var domain2 = 'https://shop.kagome.co.jp/'

var controllerName = 'front.php'

var errsPrefix = '<div>';
var errsPostfix = '</div>';

var errPrefix = '<div class="error1">';
var errPostfix = '</div>';

var errorForCommon = '申し訳ございません。入力に不備があるようです。<br />' +
                     'お手数ですが、メッセージの'+
                     '表示された各入力項目をご確認の上、再度ご入力ください。';

function errPP(msg, error) {
  error = error || 'error1';
  return '<div class="' + error + '">' + msg + '</div>';
}

function errsPP(msg) {
  return '<div>' + msg + '</div>';
}

function urlFor(action) {
  return domain2 + 'shop/' + controllerName + '/' + action;
}

function updateSideMenu() {
  new Ajax.Updater(
    'login', 
    domain + 'shop/' + controllerName + '/member/menuShow?reload=1', 
    {asynchronous:true, evalScripts:false}); 
}

function updateSideMenuEx() {
  new Ajax.Updater(
    'login', 
    domain + 'shop/' + controllerName + '/member/menuShow?reload=0', 
    {asynchronous:true, evalScripts:false}); 
}


function addProductOnComplete(request) {
  if ('nosell' == request.responseText) {
    alert('この商品は只今販売中止しております。');
  } else if ('shun-error' == request.responseText) {
    alert('旬の会はすでに登録されています。');
  } else if ('teiki-error' == request.responseText) {
    alert('この商品は、すでに別の月間隔で登録されています。');
  } else if ('success' == request.responseText) {
    location.href = domain2 + 'shop/' + controllerName + '/order/cartShow';
  } else if ('failure' == request.responseText) {
    // alert('不正なアクセスです。');
  }
}

function addProduct(code, purchase_kind, qty, adId) {
  adId = adId || '';
  if (adId != '') {
    adIdParams = '&adid=' + adId;
  } else {
    adIdParams = '';
  }

  new Ajax.Request(
    domain + 'shop/' + controllerName + '/order/addProduct', 
    {asynchronous:true, evalScripts:false, onComplete:function(request, json){ addProductOnComplete(request); },
     parameters:'code=' + code + '&purchase_kind=' + purchase_kind + '&qty=' + qty + adIdParams});
}

function addProductTeiki(code, qty, interval, adId) {
  adId = adId || '';
  if (adId != '') {
    adIdParams = '&adid=' + adId;
  } else {
    adIdParams = '';
  }

  new Ajax.Request(
    domain + 'shop/' + controllerName + '/order/addProduct', 
    {asynchronous:true, evalScripts:false, onComplete:function(request, json){ addProductOnComplete(request); },
     parameters:'code=' + code + '&purchase_kind=1&qty=' + qty + '&interval=' + interval + adIdParams});
}


// 「ひらがな」で構成されていれば true を返す。
function isHiragana(text) {
  if (text.match(/[^ぁ|^あ-ん|^ー]/g)) {
    return false;
  } else {
    return true;
  }
}

function z2h_decimal(text) {
  return text.replace(/([０-９])/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) - 65248);
    });
}

function isValidDate(year, month, day) {
  var date = new Date(year, month - 1, day);
  if ((date.getFullYear() == year) && (date.getMonth() == month - 1) && (date.getDate() == day)) {
    return true;
  } else {
    return false;
  }
}

function validateMailAddrFormat(mailAddrName, param1) {
  var mailAddrRegResult = $F(mailAddrName).match(/^(.*)[@](.*)$/);
  if (mailAddrRegResult == null) {
    return '「@」が含まれていません。ご確認の上、ご再度ご入力ください。';
  }
  var mailAddrBeforeAtmark = RegExp.$1
  var mailAddrAfterAtmark = RegExp.$2

  if (mailAddrAfterAtmark.match(/[,]/) != null) {
    return '「@」以降に「,（カンマ）」は使用できません。ご確認の上、再度ご入力ください。';
  }

  if (mailAddrBeforeAtmark == '') {
    return '「@」より前が空になっています。ご確認の上、再度ご入力ください。';
  }
  if (!isHankaku($F(mailAddrName)) || $F(mailAddrName).match(/^(\w|[!#$%&`+-]|[*/'={}]|[^_|\"]).*@.+[.].*[a-zA-Z]$/) == null) {
    return 'メールアドレスが正しくないようです。ご確認の上、再度ご入力ください。';
  }
  return null;
}

function ajaxError(module, action) {
  new Ajax.Request(
    domain + 'shop/' + controllerName + '/vltag/ajaxError/' + module + '/' + action + '/err/1',
    {asynchronous:true, evalScripts:false})
}

function isHankaku(str) {
  for (var i = 0; i < str.length; i++) {
    var length = escape(str.charAt(i)).length;
    if (length >= 4) {
       return false;
    }
  }
  return true;
}
