/************************************************
  
    Site Name: 
	Description: common script
	Version: 
	Author: 
	Last Modified :

************************************************/

/**
 * @name      SendForm
 * @abstract  リンク先を変えてサブミット
 * @param     Object  フォームオブジェクト
 * @param     string  リンク先
 * @since     2008/09/26
 * @author    sou asada
 */
function SendForm(FormName, Url) {
    FormName.action = Url;

    FormName.submit();

    return ;
}

/**
 * @name      ForceDateSetDay
 * @abstract  プルダウンボックスの日付設定
 * @param     Object  年フォーム
 * @param     Object  月フォーム
 * @param     Object  日フォーム
 * @since     2008/09/29
 * @author    sou asada
 */
function ForceDateSetDay(Year, Month, Day) {
    var year  = Year.value;
    var month = Month.value;
    var day   = Day.value;
    var max;

    do {
        /* 月設定 */
        SetOption(Month, 12, month);

        /* MAX 日取得 */
        max = CmnTimeGetNrDay(year, month);

        /* 今月以外の日設定 */
        SetOption(Day, max, day);
    } while(0);

    return;
}

/**
 * @name      CmnTimeGetNrDay
 * @abstract  指定した年月の日数取得
 * @param     Object  年フォーム
 * @param     Object  月フォーム
 * @since     2008/09/29
 * @author    sou asada
 */
function CmnTimeGetNrDay(year, month) {
    var iRet  = 0;
    var list  = new Array(2);
    var leap;

    do {
        /* 配列作成 */
        list[0] = new Array(31,28,31,30,31,30,31,31,30,31,30,31); /* 通常用 */
        list[1] = new Array(31,29,31,30,31,30,31,31,30,31,30,31); /* うるう年用 */

        /* うるう年判定 */
        leap = (((year)%4 == 0) && (((year) % 100) != 0 || ((year) % 400) == 0)) ? true : false;

        iRet = list[(leap==true) ? 1 : 0][month - 1];
    } while(0);

    return iRet;
}

/**
 * @name      SetOption
 * @abstract  Option 作成
 * @param     Object   フォームオブジェクト
 * @param     integer  月の MAX 日
 * @param     integer  月の MIN 日
 * @since     2008/09/29
 * @author    sou asada
 */
function SetOption(FormName, Max, Now) {
    var i, s;

    /* Option を 0 に初期化 */
    FormName.length = 0;

    for (i=0; i<Max; i++) {
        FormName.options[i] = new Option(i + 1, i + 1, false, false);
    }

    if (Max < Now) {
        FormName.options[Max - 1].selected = true;
    } else {
        FormName.options[Now - 1].selected = true;
    }

    return ;
}

/**
 * @name      SetTodayDate
 * @abstract  日付フォームを本日に設定
 * @param     Object  年フォーム
 * @param     Object  月フォーム
 * @param     Object  日フォーム
 * @since     2008/10/01
 * @author    sou asada
 */
function SetTodayDate(Year, Month, Day) {
    var today = new Date();

    Year.value  = today.getFullYear();
    Month.value = today.getMonth() + 1;
    Day.value   = today.getDate();

    return ;
}

/**
 * @name      MakePassword
 * @abstract  パスワード自動生成
 * @param     Object   フォームオブジェクト
 * @param     integer  パスワードの桁数
 * @since     2008/10/10
 * @author    sou asada
 */
function MakePassword(FormName, Length) {
    var pass = "";
    var moji = "";

    /* 文字定義 */
    moji += "0123456789";
    moji += "abcdefghijklmnopqrstuvwxyz";
    moji += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    moji += "-_";

    /* パスワード生成 */
    for (var i=0; i<Length; i++){
        num = Math.floor(Math.random() * moji.length);

        pass += moji.charAt(num);
    }

    FormName.value = pass;

    return ;
}

/**
 * @name      ProhibitionStringCheck
 * @abstract  禁止文字チェック
 * @param     Object   フォームオブジェクト
 * @param     string   フォーム名
 * @param     integer  行数
 * @param     string   項目名
 * @since     2010/03/23
 * @author    sou asada
 */
function ProhibitionStringCheck(FormName, Key, Row, Title) {
    var Attention = "";

    for (var i=1; i<=Row; i++) {
        Value = FormName.elements[Key + i].value;

        if (!Value) {
            continue ;
        }

        /* 文字列に変換 */
        str = Value.toString();

        /* 文例中の○チェック */
        var regex1 = /○/;

        if (str.search(regex1) != -1) {
            Attention += Title + "の" + i + "行目に「○」が入っています。\n";
            continue ;
        }

        /* 文例中の●チェック */
        var regex2 = /●/;

        if (str.search(regex2) != -1) {
            Attention += Title + "の" + i + "行目に「●」が入っています。\n";
            continue ;
        }
    }

    return Attention;
}

/**
 * @name      ForceCeremonyTime
 * @abstract  式典時間のプルダウンボックス設定
 * @param     string  フォーム名
 * @param     string  サービス名
 * @param     string  お届け希望日名
 * @param     string  式典日名
 * @param     string  デフォルト式典時間
 * @param     string  呼び出し元
 * @since     2010/03/23
 * @author    sou asada
 */
function ForceCeremonyTime(FormName, ServiceNo, DeliveyDay, CeremonyDate, Default, Function) {
    var service        = document.forms[FormName].elements[ServiceNo].value;
    var delivery       = document.forms[FormName].elements[DeliveyDay].value;
    var ceremony_year  = document.forms[FormName].elements[CeremonyDate + "_year"].value;
    var ceremony_month = document.forms[FormName].elements[CeremonyDate + "_month"].value;
    var ceremony_day   = document.forms[FormName].elements[CeremonyDate + "_day"].value;

    /* 即日便以外の場合 */
    if (service != "3") {
        SetCeremonyTimeOption(FormName, "normal", Default, Function);

        return ;
    }

    /* 式典日 */
    var ceremony_date = ceremony_year + "/" + ("0" + ceremony_month).slice(-2) + "/" + ("0" + ceremony_day).slice(-2);

    /* お届け希望日と式典日が違う場合 */
    if (delivery != ceremony_date) {
        SetCeremonyTimeOption(FormName, "normal", Default, Function);

        return ;
    }

    /* 即日便 and お届け希望日と式典日が同じ場合 */
    SetCeremonyTimeOption(FormName, "special", Default, Function);

    return;
}

/**
 * @name      SetCeremonyTimeOption
 * @abstract  式典時間 Option 作成
 * @param     string  フォーム名
 * @param     string  タイプ
 * @param     string  デフォルト式典時間
 * @param     string  呼び出し元
 * @since     2010/03/23
 * @author    sou asada
 */
function SetCeremonyTimeOption(FormName, Type, Default, Function) {
    var select   = "";
    var selected = "";

    var temp = new Array();

    var obj = document.forms[FormName].elements["receiver_ceremony_time"];

    for (var i=0; i<obj.length; i++) {
        if (obj.options[i].selected == true) {
            select = obj.options[i].value;
        }

        if (obj.options[i].value == "") {
            continue ;
        }

        temp.push(obj.options[i].value);
    }

    /* Option を 0 に初期化 */
    obj.length = 0;

    /* 即日便 and お届け希望日と式典日が同じ場合 */
    if (Type == "special") {
        for (var i=0; i<=temp.length; i++) {
            if (i == temp.length) {
                obj.options[i] = new Option("おおむね夕方", "");
                continue ;
            }

            obj.options[i] = new Option(temp[i], temp[i]);
        }
    } else {
        for (var i=0; i<=temp.length; i++) {
            if (i == 0) {
                obj.options[i] = new Option("指定なし", "");
                continue ;
            }

            obj.options[i] = new Option(temp[i - 1], temp[i - 1]);
        }
    }

    /* 選択されているデフォルト値 */
    selected = (Function == "onload") ? Default : select;

    for (var j=0; j<obj.length; j++) {
        if (selected == obj.options[j].value) {
            obj.options[j].selected = true;
        }
    }

    return ;
}

/**
 * @name      activex_alert
 * @abstract  ActiveXの設定チェック(IEのみ)
 * @since     2010/09/27
 * @author    k_ohara
 */
function activex_alert(){

    /* ユーザーエージェントのヘッダ文字列名 */
    var ua = navigator.userAgent;
    var brw = "";
    if(ua.indexOf("Firefox")>-1){
        brw="Firefox";
    }else if(ua.indexOf("Safari")>-1){
        brw="Safari";
    }else if(ua.indexOf("Opera")>-1){
        brw="Opera";
    }else if(ua.indexOf("MSIE 5")>-1){
        brw="IE5";
    }else if(ua.indexOf("MSIE 6")>-1){
        brw="IE6";
    }else if(ua.indexOf("MSIE 7")>-1){
        brw="IE7";
    }else if(ua.indexOf("MSIE 8")>-1){
        brw="IE8";
    }else if(ua.indexOf("Netscape")>-1){
        brw="Netscape";
    }else{
        brw="other";
    }


	var xhr;
	flg = true;
//	try {
//		  // 組み込みオブジェクトとして定義されていればそれを利用
//		  xhr = new XMLHttpRequest();
//		  alert("OK_XMLHttpReques");
//		  } catch (e) {
	
			if(brw=="IE5" || brw=="IE6" || brw=="IE7" || brw=="IE8"){
			  // ActiveXオブジェクトを利用
			  try {
			    xhr = new ActiveXObject('MSXML2.XMLHTTP.6.0');
			    //alert("OK_MSXML2.XMLHTTP.6.0");
			  } catch (e) {
			    try {
			      xhr = new ActiveXObject('MSXML2.XMLHTTP.3.0');
			      //alert("OK_MSXML2.XMLHTTP.3.0");
			    } catch (e) {
			      try {
			        xhr = new ActiveXObject('MSXML2.XMLHTTP');
			        //alert("OK_MSXML2.XMLHTTP");
			      } catch (e) {
			        alert("プレビューをご覧になる場合はActiveXを有効にしてください。");
			        flg = false;
			      }
			    }
			  }
			}
//		}
	
	return flg;
}

/**
 * @name      sentenceModelNoCheck
 * @abstract  文例番号の入力チェック
 * @since     2011/05/02
 * @author    k_ohara
 */
function sentenceModelNoCheck(FormName, postname) {
	
	var errorMsg = "";
	
	if(FormName.elements[postname].value.match(/[^0-9]+/) || FormName.elements[postname].value == ""){
		errorMsg = '半角数字で入力して下さい。';
	}else if(FormName.elements[postname].value.length > 10){
		errorMsg = '半角数字10文字以内で入力して下さい。';
	}
	
	return errorMsg;
}

