<!--
/**
 * (C) 2003 System Integrator Corporation .
 *            All rights reserved.
 *   FileName   : SICommon.js
 *   Author     : Jinwang Chen<jwchen@sint.co.jp>
 *   Date       : 2003.08.11
 *   Description:共通アプリケーションの関数の定義
 *
 *   History
 *   Author         Date          Reason
 *   Jinwang Chen   2003.08.11    Original
 */

//並び順の表示の画像ファイル
manOrderImgFile = new Array();
manOrderImgAlt  = new Array();
manOrderImgFile[0]="../../image/button_Search_Order_Asc.png";
manOrderImgFile[1]="../../image/button_Search_Order_Desc.png";
manOrderImgAlt[0]="昇順ソート";
manOrderImgAlt[1]="降順ソート";


//=========================================================
// 名前を指定してクッキーから取得
//=========================================================
function get_cookie(cn) {
   get_data = document.cookie;
   cv = new Array();
   gd = get_data.split(";");
   for (i in gd) {
      a = gd[i].split("=");
      a[0] = a[0].replace(" ","");
      cv[a[0]] = a[1];
   }
   if (cv[cn]) return cv[cn];
   else return "";
}

//=========================================================
// 名前を指定してクッキーに値をセット
//=========================================================
function set_cookie(cn,val) {
   days = 1; // 期間は1日で固定
   ex = new Date();
   ex = new Date(ex.getTime() + (1000 * 60 * 60 * 24 * days));
   y = ex.getYear(); if (y < 1900) y += 1900;
   hms = ex.getHours() + ":" + ex.getMinutes() + ":" + ex.getSeconds();
   p = String(ex).split(" ");
   ex = p[0] + ", " + p[2] + "-" + p[1] + "-" + y + " " + hms + " GMT;";
   document.cookie = cn + "=" + val +"; expires=" + ex;
}



/**
 * Function      :sendSubmit
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.08.11
 * Description   :submitを送信します。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
function sendSubmit(){
   document.forms[0].submit();
   return true;
}
function changeFormAction(act){
   document.forms[0].action=act;
   document.forms[0].submit();
   return true;
}

/**
 * Function      :sendUrlAction
 * Author        :asakura
 * Date          :2004.01.09
 * Description   :あるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendUrlAction(url,act){
  with (document.forms[0]){
	action=url;
    actionNameTxt.value=act;
    submit();
  }
  return true;
}

/**
 * Function      :sendUrlAction
 * Author        :asakura
 * Date          :2004.01.09
 * Description   :あるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendUrlActionByData1(url,act,itemName1,itemData1){
  with (document.forms[0]){
	action=url;
  }
  return sendActionByData1(act,itemName1,itemData1);
}

/**
 * Function      :sendUrlAction
 * Author        :asakura
 * Date          :2004.01.09
 * Description   :あるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendUrlActionByData2(url,act,itemName1,itemData1,itemName2,itemData2){
  with (document.forms[0]){
	action=url;
  }
  return sendActionByData2(act,itemName1,itemData1,itemName2,itemData2);
}

/**
 * Function      :sendUrlAction
 * Author        :asakura
 * Date          :2004.01.09
 * Description   :あるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendUrlActionByData3(url,act,itemName1,itemData1,itemName2,itemData2,itemName3,itemData3){
  with (document.forms[0]){
	action=url;
  }
  return sendActionByData3(act,itemName1,itemData1,itemName2,itemData2,itemName3,itemData3);
}

/**
 * Function      :sendAction
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.08.11
 * Description   :あるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendAction(act){
  return sendActionByData1(act,null,null);
}

/**
 * Function      :sendActionByData1
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.10.27
 * Description   :一つのデータを設定してあるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *act                          I     アクション
 *itemName1                    I     設定する項目名
 *itemData1                    I     上記の項目名に対する設定するデータ
 */
function sendActionByData1(act,itemName1,itemData1){
  return sendActionByData3(act,itemName1,itemData1,null,null,null,null)
}

/**
 * Function      :sendActionByData1
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.10.27
 * Description   :二つのデータを設定してあるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *act                          I     アクション
 *itemName1                    I     設定する項目名
 *itemData1                    I     上記の項目名に対する設定するデータ
 */
function sendActionByData2(act,itemName1,itemData1,itemName2,itemData2){
  return sendActionByData3(act,itemName1,itemData1,itemName2,itemData2,null,null)
}

/**
 * Function      :sendActionByData3
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.10.27
 * Description   :三つのデータを設定してあるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *act                          I     アクション
 *itemName1                    I     設定する項目名
 *itemData1                    I     上記の項目名に対する設定するデータ
 */
function sendActionByData3(act,itemName1,itemData1,itemName2,itemData2,itemName3,itemData3){
  if (act=='delete'&& !confirm('削除しますか?')) return;
  if (act=='mail'&& !confirm('メールを送信しますか?')) return;
  if (act=='delUser' && !confirm('お客様情報の削除を行います。\n削除後には、ログインを行うことができなくなり、\n購買履歴などの情報も削除されます。\nよろしいですか？')) return;
  with (document.forms[0]){
    if (itemName1!=null) eval("document.forms[0]."+itemName1+".value='"+itemData1+"'");
    if (itemName2!=null) eval("document.forms[0]."+itemName2+".value='"+itemData2+"'");
    if (itemName3!=null) eval("document.forms[0]."+itemName3+".value='"+itemData3+"'");
    actionNameTxt.value=act;
    submit();
  }
  return true;
}


//=========================================================
// プレゼントA を選択
// プレゼント種別選択機能に対応するために用意した関数
// 連絡事項の欄に、プレゼント種別欄の値を埋め込む
//=========================================================
function selectPresentA(){

	with (document.forms[0]){

		// 連絡事項の内容に、「プレゼント種別」の選択内容を埋め込む
		
		///// すでに「【プレゼント種別Ａ：＊＊＊】」があるかどうか
		n = contactMsg.value.indexOf("【プレゼント種別Ａ：");
		if( n == -1){
		
			if(campaignA.value != "NULL"){
				contactMsg.value = "【プレゼント種別Ａ：" + campaignA.value + "】\n" + contactMsg.value;
			}
			
		}else{
		
			// 置換する文字列を作成
			if(campaignA.value != "NULL"){
				newString = "【プレゼント種別Ａ：" + campaignA.value + "】";
			}else{
				newString = "";
			}
		
			// 置換元の文字列を抜き出す
			j = contactMsg.value.indexOf("】", n);
			preString = contactMsg.value.substring(n,j+1);
			
			// 置換実行。実行後の文字列を入力欄に上書き
			newValue = contactMsg.value.replace( preString, newString);
			contactMsg.value = newValue;
			
			// 一行目に改行がある場合はつめておく
			t = contactMsg.value.indexOf("\n");
			//alert("改行の位置" + t);
			if( t == 1){
				newValue = contactMsg.value.substring( t+1, contactMsg.value.length);
				//alert(newValue);
				contactMsg.value = newValue;
			}
		}
		
		///// クッキーに選択した項目を記録しておく
		set_cookie("campaignA", campaignA.value);
		
	}
	return;
}


//=========================================================
// プレゼントBを選択
// プレゼント種別選択機能に対応するために用意した関数
// 連絡事項の欄に、プレゼント種別欄の値を埋め込む
//=========================================================
function selectPresentB(){

	with (document.forms[0]){

		// 連絡事項の内容に、「プレゼント種別」の選択内容を埋め込む
		
		///// すでに「【プレゼント種別Ｂ：＊＊＊】」があるかどうか
		n = contactMsg.value.indexOf("【プレゼント種別Ｂ：");
		if( n == -1){
		
			if(campaignB.value != "NULL"){
			
				///// すでに「【プレゼント種別Ａ：＊＊＊】」があるかどうか。あったらその下に書く。
				m = contactMsg.value.indexOf("【プレゼント種別Ａ：");
				if( m == -1 ){
					///// なければ普通に追加する
					contactMsg.value = "【プレゼント種別Ｂ：" + campaignB.value + "】\n" + contactMsg.value;
				}else{
					///// あればその下に追加する
					// Aを、A+Bで置換する、という処理。
					
						// Bの文字列を作成
						stringB = "【プレゼント種別Ｂ：" + campaignB.value + "】\n";
					
						// Aの文字列を作成
						if(campaignA.value != "NULL"){
							stringA = "【プレゼント種別Ａ：" + campaignA.value + "】\n";
						}else{
							stringA = "";
						}
					
						// 置換元の文字列を抜き出す
						j = contactMsg.value.indexOf("】", m);
						preString = contactMsg.value.substring(m,j+1);
						
						// 置換実行。実行後の文字列を入力欄に上書き
						newValue = contactMsg.value.replace( preString, stringA + stringB);
						contactMsg.value = newValue;
						
						// 一行目に改行がある場合はつめておく
						t = contactMsg.value.indexOf("\n");
						//alert("改行の位置" + t);
						if( t == 1){
							newValue = contactMsg.value.substring( t+1, contactMsg.value.length);
							//alert(newValue);
							contactMsg.value = newValue;
						}
					
					
					
					
					
					
				}
			}
			
		}else{
		
			// 置換する文字列を作成
			if(campaignB.value != "NULL"){
				newString = "【プレゼント種別Ｂ：" + campaignB.value + "】";
			}else{
				newString = "";
			}
		
			// 置換元の文字列を抜き出す
			j = contactMsg.value.indexOf("】", n);
			preString = contactMsg.value.substring(n,j+1);
			
			// 置換実行。実行後の文字列を入力欄に上書き
			newValue = contactMsg.value.replace( preString, newString);
			contactMsg.value = newValue;
			
			// 一行目に改行がある場合はつめておく
			t = contactMsg.value.indexOf("\n");
			//alert("改行の位置" + t);
			if( t == 1){
				newValue = contactMsg.value.substring( t+1, contactMsg.value.length);
				//alert(newValue);
				contactMsg.value = newValue;
			}
		}
		
		///// クッキーに選択した項目を記録しておく
		set_cookie("campaignB", campaignB.value);
	}
	return;
}





//=========================================================
// ブックマークに追加
//【引数】
// URL,タイトル
//=========================================================
function addFavorite(url, title){

	window.external.AddFavorite(url, title);

}


/**
 * Function      :sendData
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.10.27
 * Description   :データを設定してあるアクションを送信します。
 *                actionNameTxtという項目が各画面に共通されて設定することは、
 *                前提としてこの関数を使えます。。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 *val                          I     アクション
 */
function sendData(itemName,itemData){
  with (document.forms[0]){
    eval("document.forms[0]."+itemName+".value='"+itemData+"'");
    actionNameTxt.value="";
    submit();
  }
  return true;
}

/**
 * Function      :changeOrder
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.08.11
 * Description   :並び順のクリックに伴って、画像ファイルと並び順コードを変更します。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
function changeOrder(orderName){
   var val=parseInt(eval("document.forms[0]."+orderName+"Txt"+".value"));

   if (isNaN(val)) val=0;
   else val=((val+1) % 2);

   eval("document.forms[0]."+orderName+"Txt"+".value="+val);
   eval("document.forms[0]."+orderName+".src=manOrderImgFile["+val+"]");
   eval("document.forms[0]."+orderName+".alt=manOrderImgAlt["+val+"]");
}

/**
 * Function      :checkAll
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.09.18
 * Description   :チェックボックスをチェックします。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
function checkAll(checkedName){
  return actionAll(checkedName,true);
}

/**
 * Function      :clearAll
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.09.18
 * Description   :チェックボックスをクリアします。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
function clearAll(checkedName){
  return actionAll(checkedName,false);
}

/**
 * Function      :actionAll
 * Author        :Jinwang Chen<jwchen@sint.co.jp>
 * Date          :2003.09.18
 * Description   :チェックボックスのクリアとチェックをアクションします。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
function actionAll(checkedName,val){
  var fieldNum=document.forms[0].length;
  var fieldName="";
    
  for (ii=0;ii<fieldNum;ii++){
    fieldName=document.forms[0].elements[ii].name;
    if (fieldName.indexOf(checkedName)==0){
      document.forms[0].elements[ii].checked=val;
    }
  }
}

function reset(){
  document.forms[0].reset();
}
function addCart(lShopCode,lCmdtyCode,lStndrdCode1,lElementCode1,lStndrdCode2,lElementCode2){
  with(document.forms[0]){
    cartShopCodeTxt.value=lShopCode;
    cartCmdtyCodeTxt.value=lCmdtyCode;
    cartStndrdCodeTxt1.value=lStndrdCode1;
    cartStndrdCodeTxt2.value=lStndrdCode2;
    cartElementCodeTxt1.value=lElementCode1;
    cartElementCodeTxt2.value=lElementCode2;
    actionNameTxt.value='crt';
    submit();
    return false;
  }
}
function addCart2(lShopCode,lCmdtyCode,lStndrdCode1){
  return addCart(lShopCode,lCmdtyCode,'','','','');
}

/**
 * Function      :focusElement
 * Author        :yamauchi
 * Date          :2004.02.09
 * Description   :最初のエレメント(テキストかラジオ）にフォーカスをあてます。
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */

function focusElement(){
  var a="";
  if(document[0].elements==null) return;
  
  for(i=0;i<document[0].elements.length;i++){
    a=document[0].elements[i].type;

    if(a=='text'||a=='radio'||a=='checkbox'||a=='textarea'||a=='file'){
      document.forms[0].elements[i].focus();
      return ;
    }
    
  }
}

function frontFocus(){
  var a="";
  var b="";
  
  for(i=0;i<document[0].elements.length;i++){
    a=document[0].elements[i].type;
    
    if(a=='text'||a=='radio'){
      if(document[0].elements[i]==document[0].srchWordTxt){
        for(j=i+1;j<document[0].elements.length;j++){
          b=document[0].elements[j].type;
          if(b=='text'){
            document.forms[0].elements[j].focus();
            return;
          }
        }
        document.forms[0].srchWordTxt.focus();
        return;
      }else{
        document.forms[0].srchWordTxt.focus();
        return;
      }
    }
  }
}
  
/**
 * Function      :win_closed
 * Parameter     :子ウインドウまたは親ウインドウ
 * Return        :指定したウインドウが開いていれば false; 閉じていれば true
 * Description   :ウインドウ有無確認関数
 * Name                       I/O    Comment
 * =========================  ===    =================================
 */
  function win_closed(winVar) { 
    var ua = navigator.userAgent
    if( !!winVar )
      if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
            && ua.indexOf('Win')!=-1 ) 
        return winVar.closed
      else return typeof winVar.document  != 'object'
    else return true
  }
-->