/*
機能  :文字の長さを調べ、指定された長さより超えていたら、超えた文字列をカットし、
        指定されたエレメントへフォーカスを移す
引数  :エレメントが存在するフォームオブジェクト
引数  :チェックする文字値を保持しているエレメントオブジェクト
引数  :チェックする長さ
引数  :長さが超えている場合の、次にフォーカスをあてるエレメントオブジェクト
戻り値:なし
備考  :
*/
function checkLength(in_form,in_element,max_length,in_next_element)
{
    var input_value = in_element.value;
    if (input_value.length > (max_length-1)) {
        input_value = input_value.substring(0,max_length);
        in_element.value = input_value;
        //nextElementForcus(in_form,in_element);
        elementForcus(in_next_element);
    }
}

/*
機能  :オブジェクトのvalue値がすべて数値かチェックする
引数  :チェックする値を保持したオブジェクト
戻り値:エラーの場合はfalse
備考  :
*/
function checkSuuti(in_element){
    aStr=in_element.value;
    if (aStr.length > 0) {
	if(isNaN(aStr)==false) {
            /*alert("数値です");*/
	} else {
            alert("数値以外の文字が含まれています");
            in_element.focus();
            in_element.select();
            return;
	}
    }
}
/*
機能  :オブジェクトのvalue値がすべて数値かチェックする
引数  :チェックする値を保持したオブジェクト
引数  :最大桁数
戻り値:エラーの場合はfalse
備考  :
*/
function checkSuutiComma(in_element,in_size){
    aStr=in_element.value;
    aStr = aStr.replace(/,/g,"");
    if (aStr.length > 0) {
	if(isNaN(aStr)==false) {
            /*alert("数値です");*/
	} else {
            alert("数値以外の文字が含まれています");
            in_element.focus();
            in_element.select();
            return;
	}
        if (in_size>0 && aStr.length>in_size){
            alert("入力出来る桁数は" + in_size + "桁までです");
            in_element.focus();
            in_element.select();
            return;
        }
    }
}

/*
機能  :オブジェクトのvalue値がすべて全角かチェックする
引数  :チェックする値を保持したオブジェクト
戻り値:エラーの場合はfalse
備考  :
*/		
function checkZenkaku(in_element){
    aStr = in_element.value;
    if (aStr.length > 0) {
        if(retZenkakuFlag(aStr) == false){
            in_element.focus();
            in_element.select();
            alert("全角以外の文字が含まれています");
            return false;
        } else{
            /* alert("すべて全角です");*/
            return true;
        }
    }
}
function retZenkakuFlag(strTarget){
    var i, charTarget, transTarget;
    var char_length = ("あ".length);
    transTarget = strTarget.replace(/[ ]/g, "");
    if(transTarget.length=0){
        return false;
    }
    for (i=0; i<transTarget.length; i=i+char_length){
        charTerget = transTarget.charAt(i);
        if ((charTerget >= " " && charTerget <= "~")||(charTerget >= "｡" && charTerget <= "ﾟ")){
            return false;
        }
    }
    return true;
}

/*
機能  :オブジェクトのvalue値がすべて半角かチェックする
引数  :チェックする値を保持したオブジェクト
戻り値:エラーの場合はfalse
備考  :
*/
function checkHankaku(in_element){
    aStr = in_element.value;
    if (aStr.length > 0) {
        if(retHankakuFlag(aStr) == false){
            in_element.focus();
            in_element.select();
            alert("半角以外の文字が含まれています");
            return false;
        }
        else{ /*alert("すべて半角です");*/} //動作確認用
    }
}
function retHankakuFlag(strTarget){
    var i, charTarget, transTarget;
    var char_length = ("あ".length);
    var flag=0;
    transTarget = strTarget;
    if(transTarget.length=0){
        flag = flag + 1;
    }
    for (i=0; i<transTarget.length; i=i+char_length){
        charTerget = transTarget.charAt(i);
        if ((charTerget >= " " && charTerget <= "~")||(charTerget >= "｡" && charTerget <= "ﾟ")){
            flag = flag + 1;
        }
    }
    if (flag > 0){
        return(true);
    } else {
        return(false);
    }
}


/*
機能  :オブジェクトのvalue値が正しい日付か調べる（YYYY/MM/DD or YYYY-MM-DD)
引数  :チェックする値を保持したオブジェクト
戻り値:エラーの場合はfalse
備考  :
*/
function ValidDate(in_element) {
    // Checks for the following valid date formats:
    // YYYY/MM/DD or YYYY-MM-DD

    in_value = in_element.value;
    if (in_value==""){
        return true;
    }
    var split = "";
    if(in_value.indexOf("/")>-1){
        split_str="/";
    } else if(in_value.indexOf("-")>-1){
        split_str="-";
    } else {
        alert("正しい日付を入力してください");
        in_element.focus();
        in_element.select();
        return;
    }
    parseDate = new Array(3);
    parseDate = in_value.split(split_str);
    //年を取得
    in_year = parseDate[0];
    //月を取得
    in_month = parseDate[1];
    //日を取得
    in_day = parseDate[2];

    if((isNaN(in_year))||(isNaN(in_month))||(isNaN(in_day))){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
    if ((in_month>12)||(in_month<1)){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
    myMonthTbl= new Array(31,28,31,30,31,30,31,31,30,31,30,31);// 月テーブル定義
    in_year = (in_year<2000) ? (1900+in_year) : (in_year);         // ４桁の西暦に変換
    if (((in_year%4)==0 && (in_year%100)!=0) || (in_year%400)==0) // うるう年だったら...
       myMonthTbl[1] = 29;                                     // 　２月を２９日とする
    if ((in_day<1)||(in_day>myMonthTbl[in_month-1])){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
}

/*
機能  :オブジェクトのvalue値が正しい日付か調べる（YYMMDD)
引数  :チェックする値を保持したオブジェクト
戻り値:エラーの場合はfalse
備考  :
*/
function checkDate(in_element){
    in_value = in_element.value;
    if (in_value ==""){
        return;
    }
    if (in_value.length!=6){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
    if ( in_value == "000000"){
        return;
    }

    //年を取得
    in_year = in_value.substring(0,2);
    in_value = in_value.substring(2);
    //月を取得
    in_month = in_value.substring(0,2);
    in_value = in_value.substring(2);
    //日を取得
    in_day = in_value

    if((in_year=="")||(in_month=="")||(in_day=="")){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
    if((isNaN(in_year))||(isNaN(in_month))||(isNaN(in_day))){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
    if ((in_month>12)||(in_month<1)){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }

    myMonthTbl= new Array(31,28,31,30,31,30,31,31,30,31,30,31);// 月テーブル定義
    in_year = (in_year<2000) ? (1900+in_year) : (in_year);         // ４桁の西暦に変換
    if (((in_year%4)==0 && (in_year%100)!=0) || (in_year%400)==0) // うるう年だったら...
       myMonthTbl[1] = 29;                                     // 　２月を２９日とする

    if ((in_day<1)||(in_day>myMonthTbl[in_month-1])){
        in_element.focus();
        in_element.select();
        alert("正しい日付を入力してください")
        return;
    }
}

