<!--
//+----------------------------------------------------------------------------------------+
//|                                                                                        |
//|##################################### Common.js ########################################|
//|                                                                                        |
//|                                                            created：2007-06-30          |
//|                                                            author ：g.shirazawa         |
//|                                                                                        |
//+----------------------------------------------------------------------------------------+

var Common = {
    
    MESS_ERR_MAIL_DFLT: "wrong email format . . .",
    
    /**
     * Email 入力フォーム内の文字列が妥当かチェックします
     * @param formCount
     * @param elemCnts Array
     * @return bool
     */
    chkMailFmt: function(formCount, elemCnt, errMessMail) {
        
        Common.MESS_ERR_MAIL_DFLT = Common.getErrMsg(errMessMail, Common.MESS_ERR_MAIL_DFLT);
        var email = document.forms[formCount].elements[elemCnt].value;
        
        if (!Common.isMailFmt(email)) {
            alert(Common.MESS_ERR_MAIL_DFLT);
            return false;
        }
        return true;
    },
    
    /**
     * 文字列がメールフォーマットになっているか判定します
     * @param email
     */
    isMailFmt: function(email) {
        var pattern = /^[\w-\.]+@[\w-]{1}[\w-\.]+\.[\w-]+$/;
        if (pattern.exec(email) != null) {
            return true;
        }
        return false;
    },
    
    /**
     * JSが有効の場合、IDを表示します
     * IDのスタイルは "display:none" に設定しておく必要があります
     * @param id
     */
    changeView: function(id) {
        document.getElementById(id).style.display = "block";
    },
    
    /**
     * JSの有効/無効を判断して表示IDを切り替えます
     * JS有効時表示IDのスタイルは "display:none" に設定しておく必要があります
     * @param disableId JS無効時表示ID
     * @param enableId  JS有効時表示ID
     */
    judgeView: function(disableId, enableId) {
        document.getElementById(disableId).style.display = "none";
        document.getElementById(enableId).style.display = "block";
    },

    MESS_ERR_INP_DFLT: "empty field . . .",

    /**
     * フォーム内の全ての項目に入力があるかチェックします
     * @param formCount
     * @return bool
     */
    checkValue: function(formCount, errMessInp) {
    
        Common.MESS_ERR_INP_DFLT = Common.getErrMsg(errMessInp);
        Common.setTrimValue(formCount);
        var elementSize = document.forms[formCount].elements.length;
        
        for (var i = 0; i < elementSize; i++) {
            if (Common.getElementType(formCount, i) == "text" ||
                Common.getElementType(formCount, i) == "textarea") {
                
                var value = document.forms[formCount].elements[i].value;
                if (!Common.isNotEmpty(value)) {
                    alert(Common.MESS_ERR_INP_DFLT);
                    return false;
                }
            }
        }
        return true;
    },
    
    /**
     * フォーム内の任意の項目に入力があるかチェックします
     * @param formCount
     * @param elemCnts Array
     * @return bool
     */
    checkValue: function(formCount, elemCnts, errMessInp) {
    
        Common.MESS_ERR_INP_DFLT = Common.getErrMsg(errMessInp, Common.MESS_ERR_INP_DFLT);
        Common.setTrimValue(formCount);
        
        for (var i = 0; i < elemCnts.length; i++) {
            if (Common.getElementType(formCount, elemCnts[i]) == "text" ||
                Common.getElementType(formCount, elemCnts[i]) == "textarea") {
                
                var value = document.forms[formCount].elements[elemCnts[i]].value;
                if (!Common.isNotEmpty(value)) {
                    alert(Common.MESS_ERR_INP_DFLT);
                    return false;
                }
            }
        }
        return true;
    },
    
    /**
     * メッセージが空の場合、初期エラー文字列を返します
     * @param message
     * @return message
     */
    getErrMsg: function(message, defaultMess) {
        if (Common.isNotEmpty(message)) {
            return message;
        } else {
            return defaultMess;
        }
    },

    /**
     * エレメントをトリムし、フィールドにセットします
     * @param formCount
     * @return bool
     */
    setTrimValue: function(formCount) {
        var elementSize = document.forms[formCount].elements.length;
        
        for (var i = 0; i < elementSize; i++) {
            if (Common.getElementType(formCount, i) == "text" ||
                Common.getElementType(formCount, i) == "textarea") {
                
                if (Common.isInputCheck(formCount, i)) {
                    document.forms[formCount].elements[i].value = Common.frmTrimer(formCount, i);
                }
            }
        }
    },
    
    /**
     * フィールドに入力があるか調べ、bool 値を返します
     * @param formCount
     * @param elementCount
     * @return bool
     */
    isInputCheck: function(formCount, elementCount) {
        var value = document.forms[formCount].elements[elementCount].value;
        
        if(value != null && value != "") {
            return true;
        }
        return false;
    },
    
    /**
     * フォーム内のエレメントをトリムします（全角、半角対応）
     * @param formCount
     * @param elementCount
     * @return bool
     */
    frmTrimer: function(formCount, elementCount) {
        var value = document.forms[formCount].elements[elementCount].value;
        return Common.trimer (value);
    },

    /**
     * トリムします（全角、半角対応）
     * @param formCount
     * @param elementCount
     * @return bool
     */
    trimer: function(value) {
        return Common.trimerR(Common.trimerL(value));
    },
    
    /**
     * 左トリムします（全角、半角対応）
     * @param value
     * @return value
     */
    trimerL: function(value) {
        for (var i = 0; i < value.length; i++) {
            var compareL = value.substring(0, 1);
        
            if (!Common.isBlankCheck(compareL)) {
                value = value.substring(1, value.length);
                
            } else {
                break;
            }
        }
        return value;
    },

    /**
     * 右トリムします（全角、半角対応）
     * @param value
     * @return value
     */
    trimerR: function(value) {
        for (var i = value.length; i > 0; i--) {
            var compare = value.substring(i - 1, i);

            if (!Common.isBlankCheck(compare)) {
                value = value.substring(0, i - 1);
                
            } else {
                break;
            }
        }
        return value;
    },
    
    /**
     * 引数の値があるか調べ、bool 値を返します
     * @param value
     * @return bool
     */
    STR_EMPTY: "",

    isNotEmpty: function(target) {
        
        if (target != null && Common.trimer(target) != Common.STR_EMPTY) {
            return true;
        }
        return false;
    },

    /**
     * 引数の値がブランクかどうか調べ、bool 値を返します
     * @param formCount
     * @param elementCount
     * @return bool
     */
    STR_BLANK_HAN: " ",
    STR_BLANK_ZEN: "　",
    STR_RTRN_WIN: "\r\n",
    STR_RTRN_MAC: "\r",
    STR_RTRN_UNX: "\n",

    isBlankCheck: function(target) {
        if (target != Common.STR_BLANK_HAN && target != Common.STR_BLANK_ZEN &&
            target != Common.STR_RTRN_WIN  && target != Common.STR_RTRN_MAC  &&
            target != Common.STR_RTRN_UNX) {
            
            return true;
        }
        return false;
    },
    
    /**
     * エレメントの型を返します
     * @param formCount
     * @param elementCount
     * @return document.forms[formCount].elements[elementCount].type
     */
    getElementType: function(formCount, elementCount) {
        return document.forms[formCount].elements[elementCount].type;
    }
}
//-->