﻿





// 二度押し防止用のフラグ
var isSubmitted = false;

//×ボタン判定用のフラグ
var isCloseButtonPressed = true;

/**
 * 引数 URL に遷移します.
 * @param url 遷移したいURL
 */
function menuClick(url,tabNumber){
  go(url + (url.match('.*[?].*') ? '&' : '?') + '_tabNo=' + tabNumber);
}

/**
 * 引数 URL に遷移します.
 * @param url 遷移したいURL
 */
function go(url){
  location.href = url;
}

/**
 * 引数のURLで指定された画像を新しいウィンドウで表示します.
 * @param url 画像のURL
 */
function openImageWindow(url) {
     var win_name = window.open('','',' scrollbars=yes,resizable=yes');
    win_name.document.open();
    win_name.document.write('<html><head><title></title></head><body><img src="' + url + '" /></body></html>');
    win_name.document.close();
}

/**
 * URL パラメータの解析を行います.
 * 文字列 "?key=value&key2=value2" を Array [{key,value},{key2,value2}] に整形します。
 * 重複する key がある場合には、最後のものが有効になります。
 * @return 整形結果の Array
 */
function getURLParam(){
  var params = new Array();

  var queries = window.location.search.split('&');
  for(cnt = 0 ; cnt < queries.length ; cnt++){
    var keyVal = queries[cnt].split('=');
    params[keyVal[0].replace('?','')] = keyVal[1];
  }

  return params;
}

/**
 * ブラウザの横幅を取得する
 */
function getBrowserWidth() {
  if ( window.innerWidth ) {
    return window.innerWidth;
  } else if ( document.documentElement && document.documentElement.clientWidth != 0 ) {
    return document.documentElement.clientWidth;
  } else if ( document.body ) {
    return document.body.clientWidth;
  }
  return 0;
}



/**
 * ブラウザの縦長を取得する
 */
function getBrowserHeight() {
  if ( window.innerHeight ) {
    return window.innerHeight;
  } else if ( document.documentElement && document.documentElement.clientHeight != 0 ) {
    return document.documentElement.clientHeight;
  } else if ( document.body ) {
    return document.body.clientHeight;
  }
  return 0;
}

/**
 * ブラウザの横幅を取得する(スクロール領域含む)
 */
function getBrowserScrollWidth() {
  if ( document.documentElement.scrollWidth ) {
    return document.documentElement.scrollWidth;
  } else if( document.body.scrollWidth ) {
    return document.body.scrollWidth;
  }

  return 0;
}

/**
 * ブラウザの縦長を取得する(スクロール領域含む)
 */
function getBrowserScrollHeight() {
  if ( document.documentElement.scrollHeight ) {
    return document.documentElement.scrollHeight;
  } else if( document.body.scrollHeight ) {
    return document.body.scrollHeight;
  }

  return 0;
}

/**
 * obj の子孫の背景色を全て color に変更する
 * @param obj 色を変更するオブジェクト(タグ)
 * @param color 変更したい色
 */
function changeAllBgColor(obj,color){

  if(obj.tagName!="SPAN"){
    if(obj.tagName!="INPUT"&&obj.tagName!="TEXTAREA"&&obj.tagName!="SELECT"&&obj.tagName!="OPTION"){
      if(obj.tagName){
        obj.style.background = color;
      }
    }
    for(var cnt=0; cnt < obj.childNodes.length ; cnt++){
      changeAllBgColor(obj.childNodes[cnt],color);
    }
 }
}

// ========== START OF YUI CALENDAR ==========

/**
 * YUIカレンダーを表示します(簡易版).
 * @param calDivId YUIカレンダーを表示する&ltdiv&gt; の id
 * @param destTextBoxId 選択結果を格納するテキストボックス。日本での慣用形式(YYYY/MM/DD)で選択された日付を格納します
 * @return void
 */
function yuiCalendar(calDivId,destTextBoxId){

  yuiCalendarL(calDivId,destTextBoxId,null);
}

/**
 * YUIカレンダーを表示します(ロケール指定版).
 * @param calDivId YUIカレンダーを表示する&ltdiv&gt; の id
 * @param destTextBoxId 選択結果を格納するテキストボックス。日本での慣用形式(YYYY/MM/DD)で選択された日付を格納します
 * @param locale カレンダーの表示文字列。[en : 英語、zh : 中国語、その他 : 日本語]
 * @return void
 */
function yuiCalendarL(calDivId,destTextBoxId,locale){

  var handler = function(selected){
    $(destTextBoxId).value
      = ("0000" + selected[0]).slice(-4)
        + '' + ("00" + selected[1]).slice(-2)
        + '' + ("00" + selected[2]).slice(-2);
  };

  yuiCalendarWithFullOptions(calDivId,handler,null,null,null,null,locale);
}

/**
 * YUIカレンダーを表示します.
 * @param calDivId YUIカレンダーを表示する&ltdiv&gt; の id
 * @param handler 日付選択時のイベントハンドラ。第一引数に選択された日付が [YYYY,MM,DD] の配列の形で格納される
 * @param pageMonth 初期表示する月 (MM/YYYY 形式)。null の場合は現時刻
 * @param minDate 選択できる最小の日付(MM/DD/YYYY 形式)。null の場合は無指定
 * @param maxDate 選択できる最大の日付(MM/DD/YYYY 形式)。null の場合は無指定
 * @param title カレンダーのタイトル。null の場合は無指定
 * @param locale カレンダーの表示文字列。[en : 英語、zh : 中国語、その他 : 日本語]
 * @return void
 */
function yuiCalendarWithFullOptions(calDivId,handler,pageMonth,minDate,maxDate,title,locale){

  if( $(calDivId).style.display == "block" ){
    // 表示中の場合は隠す
    $(calDivId).style.width = '0px';
    $(calDivId).style.display = 'none';
    return;
  }

  // 表示オプション
  var calOption_en =
  {
    close:true,
    LOCALE_MONTHS:"short",
    MONTHS_SHORT:
      ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","NOV","OCT","DEC"],
    WEEKDAYS_SHORT:
      ["<font color='red'>Su</font>","Mo","Tu","We","Th","Fr","<font color='blue'>Sa</font>"]
  };
  var calOption_ja =
  {
    close:true,
    LOCALE_MONTHS:"short",
    MONTHS_SHORT:
      ["01","02","03","04","05","06","07","08","09","10","11","12"],
    WEEKDAYS_SHORT:
      ["<font color='red'>日</font>","月","火","水","木","金","<font color='blue'>土</font>"]
  };
  var calOption_zh =
  {
    close:true,
    LOCALE_MONTHS:"short",
    MONTHS_SHORT:
      ["01","02","03","04","05","06","07","08","09","10","11","12"],
    WEEKDAYS_SHORT:
      ["<font color='red'>日</font>","一","二","三","四","五","<font color='blue'>六</font>"]
  };

  var calOption = calOption_ja;
  if(locale.match('en.*')){
    calOption = calOption_en;
  }else if(locale.match('zh.*')){
    calOption = calOption_zh;
  }

  // カレンダーのID には、"yui_"+calDivId を用いる(画面内で一意であればよい)
  var cal = new YAHOO.widget.Calendar("yui_"+calDivId,calDivId,calOption);

  if(minDate != null){
    cal.cfg.setProperty('mindate',minDate);
  }
  if(maxDate != null){
    cal.cfg.setProperty('maxdate',maxDate);
  }
  if(pageMonth != null){
    cal.cfg.setProperty('pagedate',pageMonth);
  }
  if(title != null){
    cal.cfg.setProperty('title',title);
  }

  // 年選択 Navigator を有効化する
  cal.cfg.setProperty('navigator',true);

  // カレンダー内でのイベントハンドラ
  var __handler = function(type,args,obj) {
    handler(args[0][0]);
    $(calDivId).style.width = '0px';
    $(calDivId).style.display = "none";
  };

  cal.selectEvent.subscribe(__handler,cal,true);

  // カレンダーの表示
  cal.render();
  $(calDivId).style.width = '150px';
  $(calDivId).style.display = "block";
}
// ========== END OF YUI CALENDAR ==========

// ========== START OF TAB MENU ==========

/**
 * タブをクリックしたときの処理.
 * @param tabNo タブ番号
 */
function tabClick(tabNo){
  if(tabNo==1){
    $('gNavi1').style.display='block';
    $('gNavi2').style.display='none';
    $('subNavi1').style.display='block';
    $('subNavi2').style.display='none';
  }else if(tabNo==2){
    $('gNavi1').style.display='none';
    $('gNavi2').style.display='block';
    $('subNavi1').style.display='none';
    $('subNavi2').style.display='block';
  }
}

/**
 * タブを開く.
 * @param tabNo タブ番号
 */
function tabOpen(tabNo){

  try {
    // 全てのタブを閉じる
    var cnt = 1;
    while( $("idx" + cnt) != null ){
      var idxObj = $("idx" + cnt);
      var aObj = idxObj.firstChild;
      var spanObj = aObj.firstChild;

      aObj.className="idxA";
      spanObj.className="idxS";

      $("tab" + cnt).style.display="none";
      cnt++;
    }

    // 設定されたタブを開く
    var idxObj = $("idx" + tabNo);
    var aObj = idxObj.firstChild;
    var spanObj = aObj.firstChild;

    aObj.className="idxASelected";
    aObj.blur(); // 選択状態の破線が残らないようにする
    spanObj.className="idxSSelected";

    $("tab" + tabNo).style.display="block";
  } catch( ignoreEx ) {
    // hopup ではここに来る
    // alert(ignoreEx);
  }
}

/**
 * サブメニューを表示する.
 */
function showSubMenu(subMenuId){
  // 全てのサブメニューを隠す
  cnt = 1;
  while( hideSubMenu(cnt) ){
    cnt++;
  }

  // マウスがポイントしているサブメニューを表示する
  $('subMenu' + subMenuId).style.display = "block";
}

/**
 * サブメニューを隠す.
 * @param subMenuId サブメニューID
 * @return true  : 成功
 *         false : 失敗
 */
function hideSubMenu(subMenuId){
  if( $('subMenu' + subMenuId) == null ){
    return false;
  }

  $('subMenu' + subMenuId).style.display='none';
  return true;
}

/**
 * サブメニューを表示する.
 */
function showSubSubMenu(subMenuId,subsubMenuId){
  showSubMenu(subMenuId);
  // マウスがポイントしているサブメニューを表示する
  $('subMenu' + subMenuId + subsubMenuId).style.display = "block";
}

/**
 * マウスが乗っているメニューのスタイルを変更する(メニューに下線を入れる)
 */
function hoverLeaf(obj){
  obj.className="subMenuHover";
}
/**
 * マウスが離れたメニューのスタイルを変更する(メニューの下線を取り除く)
 */
function unhoverLeaf(obj){
  obj.className="subMenuUnHover";
}
// ========== END OF TAB MENU ==========

// ========== START OF HOPUP ==========

/**
 * 入力補完ボタンが押されたとき(モーダル).
 * @param event イベント
 * @param name  hopup する div の id
 */
function hopupOpenM( event, name ){
  // hopupを表示する
  hopupOpen( event, name );

  // モーダル制御用のマスクを表示する
  // (hopup画面を表示することにより、画面領域が広がる可能性がある
  // ので hopup を表示した後にやる)
  var mask = $('maskWindow');

  mask.style.top     = "0px";
  mask.style.left    = "0px";
  mask.style.height  = getBrowserScrollHeight() + "px";
  mask.style.width   = getBrowserScrollWidth() + "px";
  mask.style.display = 'block';
}

/**
 * 入力補完ボタンが押されたとき(モードレス).
 * @param event イベント
 * @param name  hopup する div の id
 */
function hopupOpen( event, name ){

  var childWindowDiv = $(name);

  var x = Event.pointerX(event);
  var y = Event.pointerY(event);

  var width = Element.getWidth(childWindowDiv);
  var height = Element.getHeight(childWindowDiv);

  var browserWidth = getBrowserWidth();
  var browserHeight = getBrowserHeight();

  if( (x + width) < browserWidth ){
    // マウスの右側に表示できる。
    childWindowDiv.style.left = (x + 5) + "px";
  } else if( 0 < (x - width - 5) ){
    // 左側に表示できる。
    childWindowDiv.style.left = (x - width - 5) + "px";
  } else if( width < browserWidth ){
    // 中央に表示できる
    childWindowDiv.style.left = ((browserWidth - width) / 2) + "px";
  } else {
    // どうしてもはみ出してしまう
    childWindowDiv.style.left = "50px";
  }

  if( (y + height) < browserHeight ){
    // マウスの下側に表示できる
    childWindowDiv.style.top  = (y + 5) + "px";
  } else if(0 < (y - height - 5)) {
    // 上側に表示できる
    childWindowDiv.style.top = (y - height - 5) + "px";
  } else if( height < browserHeight ) {
    // 中央に表示できる
    childWindowDiv.style.top = ((browserHeight - height) / 2) + "px";
  } else {
    // どうしてもはみ出してしまう
    childWindowDiv.style.top = "50px";
  }

  childWindowDiv.style.display='block';
}

/**
 * 子画面で×ボタンが押されたとき.
 * @param name  閉じる div の id
 */
function hopupClose( name ){
  $(name).style.display='none';

  // モーダル制御用のマスクを消す
  $('maskWindow').style.display='none';
}
// ========== END OF HOPUP ==========

// ========== START OF 新規ウインドウを開く ==========
function getParent(){
  return window.opener;
}

function isClosed(wd){
  return (wd == null || wd.closed);
}

function childWindowOpen(uri,mode){

  option = "";
  option = option + "left=100,";
  option = option + "top=100,";

  if( mode == "small" ){
    option = option + "width=310,";
    option = option + "height=210,";
  }else if(mode == "large"){
    option = option + "width=790,";
    option = option + "height=570,";
  }else if(mode == "largest"){
    option = option + "width=1050,";
    option = option + "height=570,";

  }else if(mode == "large2"){
    option = "";
    option = option + "left=100,";
    option = option + "top=0,";
    option = option + "width=800,";
    option = option + "height=800,";

  }else{
    option = option + "width=630,";
    option = option + "height=450,";
  }

  option = option + "channelmode=no,";
  option = option + "directories=no,";
  option = option + "fullscreen=no,";
  option = option + "location=no,";
  option = option + "menubar=no,";
  option = option + "resizable=yes,";
  option = option + "scrollbars=yes,";
  option = option + "status=yes,";
  option = option + "titlebar=yes,";
  option = option + "toolbar=no";

  var wd = window.open(uri,"_blank",option);
  wd.focus();

  return wd;
}

/* 新規ウインドウを開く(複数フォーム対応) */
function childWindowOpenEx(uri,mode,callback){

  option = "";
  option = option + "left=100,";
  option = option + "top=100,";

  if( mode == "small" ){
    option = option + "width=310,";
    option = option + "height=210,";
  }else if(mode == "large"){
    option = option + "width=790,";
    option = option + "height=570,";
  }else if(mode == "largest"){
    option = option + "width=1050,";
    option = option + "height=570,";

  }else if(mode == "large2"){
    option = "";
    option = option + "left=100,";
    option = option + "top=0,";
    option = option + "width=800,";
    option = option + "height=800,";

  }else{
    option = option + "width=630,";
    option = option + "height=450,";
  }

  option = option + "channelmode=no,";
  option = option + "directories=no,";
  option = option + "fullscreen=no,";
  option = option + "location=no,";
  option = option + "menubar=no,";
  option = option + "resizable=yes,";
  option = option + "scrollbars=yes,";
  option = option + "status=yes,";
  option = option + "titlebar=yes,";
  option = option + "toolbar=no";

  var wd = window.open(uri,"_blank",option);

  wd.jstorecallback = callback;

  wd.focus();

  return wd;
}
//========== END OF 新規ウインドウを開く ==========

// ========== START OF 新規ウインドウを開く(印刷用表示ボタン専用) ==========
function childWindowOpenWithBar(uri,mode){

  option = "";
  option = option + "left=100,";
  option = option + "top=100,";

    if( mode == "small" ){
    option = option + "width=310,";
    option = option + "height=210,";
  }else if(mode == "large"){
    option = option + "width=790,";
    option = option + "height=570,";
  }else if(mode == "largest"){
    option = option + "width=1050,";
    option = option + "height=570,";
  }else if(mode == "e-seeds"){
    option = option + "width=820,";
    option = option + "height=570,";
  }else{
    option = option + "width=630,";
    option = option + "height=450,";
  }

  option = option + "channelmode=no,";
  option = option + "directories=no,";
  option = option + "fullscreen=no,";
  option = option + "location=yes,";
  option = option + "menubar=yes,";
  option = option + "resizable=yes,";
  option = option + "scrollbars=yes,";
  option = option + "status=yes,";
  option = option + "titlebar=yes,";
  option = option + "toolbar=yes";

  var wd = window.open(uri,"_blank",option);
  if (wd != null) {
    wd.focus();
  }

  return wd;
}

//========== END OF 新規ウインドウを開く(印刷用表示ボタン専用) ==========

// 検索画面で使用

/**
 * 詳細検索条件部の表示状態を設定します.
 * @param id 対象の要素のID
 * @param isOpen 表示するかどうか
 */
function setVisibility(id, isOpen) {
  var ele = $(id);
  var imageEle = document.account1;
  if (isOpen) {
    ele.style.display = 'block';
    $('openFlg').value="true";
    




    




         

      imageEle.src = "img/jstore/btn_detail_search_minus_en.gif";
    

  } else {
    ele.style.display = 'none';
    $('openFlg').value="false";
    




    




         

      imageEle.src = "img/jstore/btn_detail_search_plus_en.gif";
    

  }
}

/**
 * 詳細検索条件部の表示状態を変更します.
 * @param id 対象の要素のID
 */
function changeVisibility(id){
  var ele = $(id);
  setVisibility(id, ele.style.display == 'none');
}

/**
 * 詳細検索条件部の表示状態を変更します.
 */
function click_detailButton(){
  changeVisibility('account');
}

/**
 * フォーカスを移した際にキャレットが消えてしまうのを防ぐ為にキャレットを末尾に設定します.
 */
function caretMove(inp) {
  if (Prototype.Browser.IE) {
    if (inp.value == "") {
      var textRange = inp.createTextRange();
      textRange.move("character", inp.value.length);
      textRange.select();
    }
  }
}
/**
 * チェックボックスのチェック状態を変更します.
 * @param che チェックボックスの要素配列
 * @param check チェックするかどうか
 */
function BoxArrayChecked(che,check){
  for(var count = 0; count < che.length; count++){
    che[count].checked = check;
  }
}

/**
 * チェックボックスのチェック状態を変更します.
 * @param che チェックボックスの名前
 * @param check チェックするかどうか
 */
function BoxChecked(nameX,check){
  BoxArrayChecked(document.getElementsByName(nameX), check);
}

/**
 * URLパラメータを作成します.
 * @param hash もともとのURLのハッシュ
 * @param list URLパラメータに転記する要素の配列
 */
function serialize(list){

  var hash = Form.serialize(document.forms[0]).toQueryParams();
  var str = '';
  for (var i = 0; i < list.length; i++){
    if(hash[list[i]] != null && hash[list[i]] != ""){
     var temp ='&' + list[i] + '='+ encodeURIComponent(hash[list[i]]);
      str = str + temp;
    }
  }
  if(str != ''){
    str = str.slice('&'.length);
   }
 return str;
}


function JSTORE_Callback() {
    this.relation = {};
}

JSTORE_Callback.prototype.setRelation = function(name, func) {
    this.relation[name] = func;
};

JSTORE_Callback.prototype.call = function(name, param_hash) {
    var func = this.relation[name];
    if (func != null) {
        return func(param_hash);
    } else {
        alert(name + " is not available.");
    }
};

