/* 
 * 商品画像をポップアップで開く
 */
function showCommodityImage(src, commodityName){
  // 画像をプリロード
  var i = new Image();
  var pop_win = window.open("", "_blank", "width=100,height=100,scrollbars=no,resizable=yes");
  i.onload = function(){
    // 空ウィンドウに画像を出力するためのHTML
    pop_win.window.document.open();
    pop_win.window.document.write(
    '<html>'
    +'<head><title>'+commodityName+'</title></head>'
    +'<body style="margin:0;padding:0;border:0;">'
    +'<center>'
    +'<img src="'+i.src +'" alt="'+commodityName+'" />'
    +'<br/>'
    +'<a href="javascript:window.close()">ウィンドウを閉じる</a>'
    +'</center>'
    +'</body>'
    +'</html>'
    );
    pop_win.window.document.close();
    pop_win.window.resizeTo(i.width+20, i.height+80);
  }
  i.src = src;
}

/*
 * 引数isPreviewがtrueの場合に、リンク、クリック可能な画像をすべて無効化する
 */
function disablementLink(isPreview){
  if (!isPreview) {
    return;
  }
  
  var ls1 = document.getElementsByTagName('a');
  for (var i = 0; i < ls1.length; i++) {
    ls1[i].removeAttribute('href');
    ls1[i].onmouseover = null;
    ls1[i].onmouseout = null;
  }
  var ls2 = document.getElementsByTagName('img');
  for (var i = 0; i < ls2.length; i++) {
    ls2[i].onclick = null;
    ls2[i].onkeypress = null;
    ls2[i].onmouseover = null;
    ls2[i].onmouseout = null;
    ls2[i].removeAttribute('style');
  }
}
function skuExists(skuCode) {
  if (skuCode == undefined || skuCode == "") {
    return false;
  }
  //SKUコードがあればtrue、なければfalse
  var skus = document.getElementsByName("availableSku");
  if (skus.length == undefined) {
    return skus == skuCode;
  }
  for (var i = 0; i < skus.length; i++) {
    if (skus[i].value == skuCode) {
      return true;
    }
  }
  alert("規格("+skuCode+")はありません");
  return false;
}

/*
 * 初期表示時に、代表SKUコードの値をセット
 */
function initValueSet(){
  // 規格のない商品だったら処理終了
  //if (($("standardSize").value) <= 1) {
  if (($("standardSize").value) <= 0) {
    return;
  }
  var defaultSku = $("selectedSkuCode");
  if (!skuExists(defaultSku.value)) {
    defaultSku = $("representSkuCode");
  }
  var std1 = $(defaultSku.value + "_standardDetail1Name").value;
  var std2 = $(defaultSku.value + "_standardDetail2Name").value;
  // 10.1.1 10054 追加 ここから
  std1 = escapeStr(std1);
  std2 = escapeStr(std2);
  // 10.1.1 10054 追加 ここまで
  // 規格が1つか2つで場合わけ
  if ($("standardAssortment").value == "both") {
    selectStd("standard1", std1);
    selectStd("standard2", std2);
    repaint();
  } else {
    var std = (std1 == "") ? std2 : std1;
    setOnlyOneCommodity(std);
  }
}

// 10.1.1 10054 追加 ここから
// 受け取った文字列に含まれる置換対象文字をXML文字参照に置換
function escapeStr(str) {
  var s = "";
  for (var i = 0; i < str.length; i++) {
    switch (str.charAt(i)) {
      case "<":
        s = s.concat("&lt;");
        break;
      case ">":
        s = s.concat("&gt;");
        break;
      case "'":
        s = s.concat("&#39;");
        break;
      case "\"":
        s = s.concat("&quot;");
        break;
      case "&":
        s = s.concat("&amp;");
        break;
      case "%":
        s = s.concat("&#37;");
        break;
      case ";":
        s = s.concat("&#59;");
        break;
      case "(":
        s = s.concat("&#40;");
        break;
      case ")":
        s = s.concat("&#41;");
        break;
      default:
        s = s.concat(str.charAt(i));
        break;
    }
  }
  return s;
}
// 10.1.1 10054 追加 ここまで

function addEvent(){
  // Firefox用の処理
  if (window.addEventListener) {
    window.addEventListener("load", initValueSet, false);
    // IE用の処理
  } else if (window.attachEvent) {
    window.attachEvent("onload", initValueSet);
  }
}

addEvent();


/*
 * 規格が2つある商品に対しての処理
 */
var selected = {
  standard1: "",
  standard2: "",
  isFilled: function(){
    return this.standard1.length > 0 && this.standard2.length > 0;
  },
  isEmpty: function(){
    return this.standard1.length == 0 && this.standard2.length == 0;
  }
};


var temp = {
  standard1: "",
  standard2: ""
};

var standard1Name = "";
var standard2Name = "";

// クリック時の処理
function selectStd(stdname, value){
  // 選択された規格に値を入れる
  selected[stdname] = value;
  checkAvailableSet(stdname, value);
  // 選択された値を表示
  repaint();
}

// マウスオーバー時の処理
function checkAvailableSet(stdname, value){
  temp.standard1 = selected.standard1;
  temp.standard2 = selected.standard2;
  temp[stdname] = value;
  
  // 選択されていないほうの値をセットする処理
  var value = (stdname == "standard1") ? temp.standard1 : temp.standard2;
  temp[stdname] = value;
  if (checkSet(stdname, value)) {
    setCommodity(temp.standard1 + '_' + temp.standard2);
    $("addFavorite").style.visibility = "visible";
    changeImage(temp.standard1 + '_' + temp.standard2);
  } else {
    clearCommodity();
    if (temp.standard1 == "" || temp.standard2 == "") {
      repaint();
    }
  }
}


// 組み合わせがあるのかチェック。
function checkSet(stdname, value){
  if ($(temp.standard1 + "_" + temp.standard2 + '_skuCode') == null) {
    return false;
  } else {
    return true;
  }
}


// 表示を切り替える処理
function repaint(){
  standard1Name = $("commodityStandard1Name").value;
  standard2Name = $("commodityStandard2Name").value;
  
  if (selected.standard1 == "" && selected.standard2 == "") {
    $("selectMessage").style.color = "black"
    $("selectMessage").innerHTML = standard1Name + "と" + standard2Name + "を選択してください";
  } else if (selected.standard1 == "") {
    $("standard2").innerHTML = selected.standard2;
    $("standard1").innerHTML = "選択してください";
    $("selectMessage").style.color = "black";
    q
    $("selectMessage").innerHTML = standard1Name + "を選択してください";
  } else if (selected.standard2 == "") {
    $("standard1").innerHTML = selected.standard1;
    $("standard2").innerHTML = "選択してください";
    $("selectMessage").style.color = "black"
    $("selectMessage").innerHTML = standard2Name + "を選択してください";
  } else {
    $("standard1").innerHTML = selected.standard1;
    $("standard2").innerHTML = selected.standard2;
  }
}


// 在庫・金額の設定
function setCommodity(value){
  var setStd = "";
  var setValue = "";
  var taxType = "";

  if ($("commodityTaxType").value == 0) {
    taxType = '(非課税)';
  }else {
    taxType = '(税込)';
  }  

  if ($("standardAssortment").value == "both") {
    setStd = value;
    setValue = selected.standard1 + '_' + selected.standard2;
  } else {
    setStd = value;
    setValue = standard;
  }
  
  // 価格関係の処理
  var priceMode = $("priceMode").value;
  switch (priceMode) {
    // 販売期間の場合
    case '0':
      $("price").innerHTML = '価格：' + $(setStd + '_unitPrice').value + taxType;
      break;
    // 特別価格期間の場合
    case '1':
      $("price").innerHTML = '<strike>価格：' + $(setStd + '_unitPrice').value + taxType + '</strike><br/>' +
      '<font style="color:#FF0000;">特価：' +
      $(setStd + '_discountPrice').value +
      taxType +
      '</font>';
      break;
    // 予約期間の場合
    case '2':
      $("price").innerHTML = '予約価格：' + $(setStd + '_reservationPrice').value;
      break;
    default:
      $("price").innerHTML = "";
      break;
  }
  
  // 在庫関係の処理
  var stockManagementType = $("stockManagementType").value;
  var availableStockQuantity = $(setStd + '_availableStockQuantity').value;
  // 予約商品の場合、在庫関係は非表示
  if (priceMode != 2) {
    switch (stockManagementType) {
      // 在庫数表示する
      case '2':
        $("stock").innerHTML = $(setStd + '_availableStockQuantity').value;
        break;
      // 在庫状況表示する
      case '3':
        $("stock").innerHTML = $(setStd + '_stockStatusMessage').value;
        break;
      default:
        break;
    }
  }

  // SKUコード関係の処理
  $("sku").innerHTML = $(setStd + "_skuCode").value;

  // 在庫があればボタンを表示
  // 予約商品か否かで場合わけ
  var displayButton = (priceMode == 2) ? $("reservationButton").style : $("cartButton").style;
  var displayMessage = (priceMode == 2) ? "予約購入" : "ご購入";
  // 在庫の有無で場合わけ
  if (availableStockQuantity == "0") {
    //displayButton.visibility = "hidden";
    if (priceMode == 2) {
      $("reservationButton").style.display = "none";
      $("reservationButton2").style.display = "";
    } else {
      $("cartButton").style.display = "none";
      $("cartButton2").style.display = "";
    }
    
    $("selectMessage").innerHTML = "";
    $("unableToSale").style.visibility = "visible";
    if ($(setStd + '_arrivalGoodsFlg').value == "true") {
      $("arrivalGoods").style.display = "";
      $("arrivalGoods2").style.display = "none";
    } else {
      $("arrivalGoods").style.display = "none";
      $("arrivalGoods2").style.display = "";
    }
  } else {
    $("unableToSale").style.visibility = "hidden";
    $("arrivalGoods").style.display = "none";
    $("arrivalGoods2").style.display = "";
    $("selectMessage").style.color = "green";
    $("selectMessage").innerHTML = displayMessage + "が可能です";
    
    //クリックのときだけボタンを表示
    if (selected.isFilled() && value == selected.standard1 + "_" + selected.standard2) {
      //displayButton.visibility = "visible";
    } else if (selected.isEmpty() && value == standard) {
      //displayButton.visibility = "visible";
    }
    if (priceMode == 2) {
      $("reservationButton").style.display = "";
      $("reservationButton2").style.display = "none";
    } else {
      $("cartButton").style.display = "";
      $("cartButton2").style.display = "none";
    }
  }
  
  // クリックで選択されたskuコードの値を渡す
  // 組み合わせが無かった場合、何も起こさない
  try {
    if (selected.standard1 != "" && selected.standard2 != "" || standard != "") {
      $("selectSkuCode").value = $(setValue + '_skuCode').value;
    } else {
    }
  } catch (e) {
  }
}


// 規格の組み合わせが無いときに価格、SKU、在庫、ボタンをクリア
function clearCommodity(){
  $("price").innerHTML = "";
  $("sku").innerHTML = "";
  $("unableToSale").style.visibility = "hidden";
  $("arrivalGoods").style.display = "none";
  $("arrivalGoods2").style.display = "";
  $("selectMessage").style.color = "red";
  $("selectMessage").innerHTML = "その組み合わせの商品はありません";
  $("addFavorite").style.visibility = "hidden";
  if ($("priceMode").value == 2) {
    $("reservationButton").style.display = "none";
    $("reservationButton2").style.display = "";
  } else {
    if ($("stockManagementType").value == 2 || $("stockManagementType").value == 3) {
      $("stock").innerHTML = "";
    }
    //$("cartButton").style.visibility = "hidden";
    $("cartButton").style.display = "none";
    $("cartButton2").style.display = "";
    
  }
}

// 画像の切り替え
function changeImage(value){
  //var setStd = value;
  //// 画像ファイル名以外を抜き出す
  //var exceptImagePath = document.imageArea.src.match(/.*\//);
  //// 規格画像名
  //var imageSku = $(setStd + '_skuCode').value + "_k.jpg";
  //document.imageArea.src = exceptImagePath + imageSku;
}

// サムネイル画像マウスオーバー時に画像変更
function changeThumbnail(thumbnailPath){
  //document.imageArea.src = thumbnailPath;
}


/*
 * 規格が一つの商品に対しての処理
 */
var standard = "";
var tempstandard = "";

// クリック時
function setOnlyOneCommodity(value){
  standard = value;
  setCommodity(standard);
  repaintOneCommodity();
  changeImage(standard);
}

// マウスオーバー時
function changeCommodity(tempvalue){
  standard1Name = $("commodityStandard1Name").value;
  standard2Name = $("commodityStandard2Name").value;
  
  var oneStandardName = (standard1Name == "") ? standard2Name : standard1Name;
  $("selectMessage").innerHTML = "";
  tempstandard = tempvalue;
  setCommodity(tempstandard);
  changeImage(tempstandard);

  $("sku").innerHTML = $(tempvalue + "_skuCode").value;
}

// 選択した規格を表示
function repaintOneCommodity(){
  if ($("standardAssortment").value == "only1") {
    $("standard1").innerHTML = standard;
  } else {
    $("standard2").innerHTML = standard;
  }
}


// マウスがフォーカスから外れたときの処理(規格2つのとき)
function resetCommodity(){
  selectStd("standard1", selected.standard1);
}

// マウスがフォーカスから外れたときの処理(規格1つのとき)
function resetOneCommodity(){
  if (standard == "") {
    clearCommodity();
    $("selectMessage").innerHTML = "";
  } else {
    setOnlyOneCommodity(standard);
  }
}

