/**
 * 
 * チェックボックス制御（初期表示用）
 * 
 * カテゴリ毎に、区分（子）が全てチェックONの場合、カテゴリ（親）の
 * チェックボックスをチェックONにする
 * 
 * 【引数】
 * form		フォーム名
 * chkbox_name	項目チェックボックス名
 * hdn_name	非表示項目一覧名
 *
 * 作成日:2007/05/14
 * 作成者:T.Sunagawa
 * 
 */
function onload_div_chk(form, category_chkbox_name, chkbox_name, hdn_name){

	//カテゴリ配下の項目を取得
	var div = document.forms[form].elements[hdn_name].value;
	var div_list_wk = div.split(";");
	//最後の１件削除
	var div_list = new Array();
	for(i = 0; i < div_list_wk.length - 1; i++){
		div_list[i] = div_list_wk[i];
	}

	var all_chk_flg = true;

	//項目チェックボックスのチェックON/OFFを全て取得
	for(j = 0; j < div_list.length; j++){
		//項目チェックボックスが１件でもチェックOFFの場合、チェックフラグOFF
		if(document.forms[form].elements[chkbox_name + div_list[j]].checked == false){
			all_chk_flg = false;
		}
	}
	//全ての項目チェックボックスのチェックがONの場合、カテゴリチェックボックスのチェックON
	if(all_chk_flg == true){
		document.forms[form].elements[category_chkbox_name].checked = true;
	}

}

/**
 * 
 * チェックボックス制御（カテゴリ用）
 * 
 * 対象カテゴリ配下の項目のチェックボックスのチェックを全て
 * ON/OFFする
 * 
 * 【引数】
 * form		フォーム名
 * chkbox_name	項目チェックボックス名
 * hdn_name	非表示項目一覧名
 * chk_flg	チェックON：true　チェックOFF：false
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 * 
 * 
 */
function set_category_chk(form, chkbox_name, hdn_name, chk_flg){

	//カテゴリ内の項目を取得
	var div = document.forms[form].elements[hdn_name].value;
	var div_list_wk = div.split(";");
	//最後の１件削除
	var div_list = new Array();
	for(i = 0; i < div_list_wk.length - 1; i++){
		div_list[i] = div_list_wk[i];
	}
	
	//項目の件数分Loop
	for(j = 0; j < div_list.length; j++){
		if(chk_flg == true){
			//チェックON
			document.forms[form].elements[chkbox_name + div_list[j]].checked = true;
		}
		else{
			//チェックOFF
			document.forms[form].elements[chkbox_name + div_list[j]].checked = false;
		}
	}

}

/**
 * 
 * チェックボックス制御（項目用）
 * 
 * 対象カテゴリ配下の項目のチェックボックスを全て確認し、
 * カテゴリチェックボックスのチェックをON/OFFする
 * 
 * 【引数】
 * form		フォーム名
 * form		カテゴリチェックボックス名
 * chkbox_name	項目チェックボックス名
 * hdn_name	非表示項目一覧名
 * chk_flg	チェックON：true　チェックOFF：false
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 * 
 * 
 */
function set_div_chk(form, category_chkbox_name, chkbox_name, hdn_name, chk_flg){

	//カテゴリ配下の項目を取得
	var div = document.forms[form].elements[hdn_name].value;
	var div_list_wk = div.split(";");
	//最後の１件削除
	var div_list = new Array();
	for(i = 0; i < div_list_wk.length - 1; i++){
		div_list[i] = div_list_wk[i];
	}

	//チェックOFFの場合、無条件にカテゴリのチェックをOFF
	if(chk_flg == false){
		document.forms[form].elements[category_chkbox_name].checked = false;
		//処理終了
		return;
	}

	var all_chk_flg = true;

	//項目チェックボックスのチェックON/OFFを全て取得
	for(j = 0; j < div_list.length; j++){
		//項目チェックボックスが１件でもチェックOFFの場合、チェックフラグOFF
		if(document.forms[form].elements[chkbox_name + div_list[j]].checked == false){
			all_chk_flg = false;
		}
	}
	//全ての項目チェックボックスのチェックがONの場合、カテゴリチェックボックスのチェックON
	if(all_chk_flg == true){
		document.forms[form].elements[category_chkbox_name].checked = true;
	}

}

/**
 * ドロップダウンリスト　オプションデータ作成（初期表示用）
 * 
 * 親子関係が存在するマスタデータのドロップダウン表示にて、
 * 初期表示時に表示するべきカテゴリ（親）及び項目（子）が決定している場合、
 * そのカテゴリ（親）、項目（子）を表示する。
 * 初期表示時に表示するべきカテゴリ（親）及び項目（子）が決定していない場合、
 * カテゴリ（親）、項目（子）ともに　selectedIndex = 0　を表示する。
 * 
 * 
 * 【引数】
 * form		        フォーム名
 * categorydiv	        親区分ドロップダウンリスト名
 * div		        子区分ドロップダウンリスト名
 * hdn_div	        非表示の子区分hidden名
 * hdn_value	        非表示の子value　hidden名
 * target_name_category	対象となる親区分のSelectIndex場所を格納した非表示項目名
 * target_name_div	対象となる子区分のSelectIndex場所を格納した非表示項目名
 * 【戻り値】
 * なし
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function get_dd_category_onload(form, categorydiv, div, hdn_div, hdn_value, target_name_category, target_name_div){

	//カテゴリドロップダウンリストのオプションを取得
	var categorydiv_options = document.forms[form].elements[categorydiv].options;
	//区分ドロップダウンリストのオプションを取得
	var div_options = document.forms[form].elements[div].options;

	//初期表示カテゴリ区分を取得
	var target_item = document.forms[form].elements[target_name_category].value;
	var target_list = target_item.split(";");
	//最後の１件を削除
	var hdn_target_list = new Array();
	for(z = 0; z < target_list.length - 1; z++){
		hdn_target_list[z] = target_list[z];
	}
	//初期表示するカテゴリの場所を取得
	var target_no = 0;
	for(m = 0; m < hdn_target_list.length; m++){		
		//"selected"が設定されている場所（空白以外）
		if(hdn_target_list[m] != ""){
			target_no = m;
			break;
		}
	}

	//カテゴリ区分取得
	var target_value = categorydiv_options[target_no].value;
	
	//初期表示項目区分を取得
	var tgt_div_item = document.forms[form].elements[target_name_div + target_value].value;
	var tgt_div_list = tgt_div_item.split(";");
	//最後の１件を削除
	hdn_tgt_div_list = new Array();
	for(n = 0; n < tgt_div_list.length - 1; n++){
		hdn_tgt_div_list[n] = tgt_div_list[n];
	}
	//初期表示する項目の場所を取得
	var tgt_div_no = 0;
	for(p = 0; p < hdn_tgt_div_list.length; p++){
		//"selected"が設定されている場所（空白以外）
		if(hdn_tgt_div_list[p] != ""){
			tgt_div_no = p;
			break;
		}
	}
	
	//非表示の区分を取得
	var hdn_div_list = document.forms[form].elements[hdn_div + target_value].value;
	var hdn_div_options_wk = hdn_div_list.split(";");
	//最後の１件削除
	var hdn_div_options = new Array();
	for(x = 0; x < hdn_div_options_wk.length - 1; x++){
		hdn_div_options[x] = hdn_div_options_wk[x];
	}
	//非表示のvalueを取得
	var hdn_value_list = document.forms[form].elements[hdn_value + target_value].value;
	var hdn_value_options_wk = hdn_value_list.split(";");
	//最後の１件削除
	var hdn_value_options = new Array();
	for(y = 0; y < hdn_value_options_wk.length - 1; y++){
		hdn_value_options[y] = hdn_value_options_wk[y];
	}
	
	//区分オプション件数
	var del_cnt = div_options.length;
	//区分オプション削除
	for(j = del_cnt - 1; j >= 0; j--){
		document.forms[form].elements[div].options[j] = null;
	}
	
	//新規オプション作成
	for(k = 0; k < hdn_div_options.length; k++){
		document.forms[form].elements[div].options[k] = new Option(hdn_value_options[k], hdn_div_options[k]);
	}

	//新規オプションの初期表示
	document.forms[form].elements[div].selectedIndex = tgt_div_no;
}	

/**
 * ドロップダウンリスト　オプションデータ作成
 * 
 * 親子関係が存在するマスタデータのドロップダウン表示にて、
 * 親区分が選択されたら、その親に対応する子のみをドロップダウンリストに
 * 表示する
 * 
 * 【引数】
 * form		フォーム名
 * categorydiv	親区分ドロップダウンリスト名
 * div		子区分ドロップダウンリスト名
 * hdn_div	非表示の子区分hidden名
 * hdn_value	非表示の子value　hidden名
 * target	対象となる親区分のSelectIndex
 * 【戻り値】
 * なし
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function get_dd_category(form, categorydiv, div, hdn_div, hdn_value, target){
	
	//カテゴリドロップダウンリストのオプションを取得
	var categorydiv_options = document.forms[form].elements[categorydiv].options;
	//区分ドロップダウンリストのオプションを取得
	var div_options = document.forms[form].elements[div].options;

	//カテゴリ区分取得
	var target_value = categorydiv_options[target].value;
	
	//非表示の区分を取得
	var hdn_div_list = document.forms[form].elements[hdn_div + target_value].value;
	var hdn_div_options_wk = hdn_div_list.split(";");
	//最後の１件削除
	var hdn_div_options = new Array();
	for(x = 0; x < hdn_div_options_wk.length - 1; x++){
		hdn_div_options[x] = hdn_div_options_wk[x];
	}
	//非表示のvalueを取得
	var hdn_value_list = document.forms[form].elements[hdn_value + target_value].value;
	var hdn_value_options_wk = hdn_value_list.split(";");
	//最後の１件削除
	var hdn_value_options = new Array();
	for(y = 0; y < hdn_value_options_wk.length - 1; y++){
		hdn_value_options[y] = hdn_value_options_wk[y];
	}
	
	//区分オプション件数
	var del_cnt = div_options.length;
	//区分オプション削除
	for(j = del_cnt - 1; j >= 0; j--){
		document.forms[form].elements[div].options[j] = null;
	}
	
	//新規オプション作成
	for(k = 0; k < hdn_div_options.length; k++){
		document.forms[form].elements[div].options[k] = new Option(hdn_value_options[k], hdn_div_options[k]);
	}
}	

/**
 * 年齢取得
 * 
 * 引数の年、月、日より、年齢を算出する
 * 
 * 【引数】
 * year		年
 * month	月
 * day		日
 * 
 * 【戻り値】
 * 年齢
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function get_age(year, month, day, obj){

    //入力チェック
    if(year_chk(year, month, day)){

        var seireki = parseFloat(year) ;
        var tuki = parseFloat(month) ;
        var niti = parseFloat(day) ;
        
        today = new Date();
        kotosi = today.getYear() ;
        if (kotosi < 2000) {
        kotosi = kotosi + 1900 ;
        }
        kongetu = today.getMonth() + 1;
        kyo = today.getDate() ;

        var man = kotosi - seireki;
        
        if ( kongetu > tuki) {
              man = man;
        }
        if ( kongetu == tuki && kyo >= niti ) {
              man = man;
        }
        if ( kongetu == tuki && kyo < niti ) {
              man = man - 1;
        }
        if ( kongetu < tuki) {
              man = man - 1;
        }
        
        obj.value = man;

	return;
    }
    else{
    
        obj.value = "";
        
	return;
    }
}

/**
 * 日付チェック
 * 
 * 引数の年、月、日の日付妥当性をチェック
 * 
 * 【引数】
 * year		年
 * month	月
 * day		日
 * 
 * 【戻り値】
 * true  :正常
 * false :エラー
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function year_chk(year, month, day){
    if(year.length < 4){
        return false;
    }
    if(!(ckDate(year + "/" + setzero(month) + "/" + setzero(day)))){
        return false;
    }
    return true;
}

/**
 * 日付チェック
 * 
 * 引数の年月日の日付妥当性をチェック
 * 
 * 【引数】
 * datestr	年月日
 * 
 * 【戻り値】
 * true  :正常
 * false :エラー
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function ckDate(datestr) { 
    // 正規表現による書式チェック 
    if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){ 
        return false; 
    } 
    var vYear = datestr.substr(0, 4) - 0; 
    var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現 
    var vDay = datestr.substr(8, 2) - 0; 
    // 月,日の妥当性チェック 
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){ 
        var vDt = new Date(vYear, vMonth, vDay); 
        if(isNaN(vDt)){ 
            return false; 
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){ 
            return true; 
        }else{ 
            return false; 
        } 
    }else{ 
        return false; 
    } 
} 

/****************************************
 * 月、日を２桁にしてリターン
 ****************************************/
function setzero(chk){
    if(chk.length == 0){
        return chk;
    }
    if(chk.length < 2){
        return "0" + chk;
    }
    return chk;
}

/**
 * 日付チェック
 * 
 * 引数の年月日の日付妥当性をチェックし、エラーの場合
 * メッセージを出力
 * 
 * 【引数】
 * year		年
 * month	月
 * day		日
 * msg		エラー時表示メッセージに出力する項目名
 * 
 * 【戻り値】
 * true  :正常
 * false :エラー
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function date_chk(year, month, day, msg){
	if(year == "" || month == "" || day == ""){
		return false;
	}
	
	if(year_chk(year, month, day) == false){
		alert(msg + "の日付が不正です。");
		return false;
	}
	return true;
}


/**
 * 日付チェック　＆　年齢取得
 * 
 * 引数の年月日の日付妥当性をチェックし、エラーの場合
 * メッセージを出力
 * 正常の場合、年齢を算出し、画面に表示
 * 
 * 【引数】
 * form		フォーム名
 * ctl		年齢表示コントロール名
 * year		年
 * month	月
 * day		日
 * msg		エラー時表示メッセージに出力する項目名
 * 
 * 【戻り値】
 * なし
 *
 * 作成日:2007/05/08
 * 作成者:T.Sunagawa
 *
 */
function date_chk_age(form, ctl, year, month, day, msg){
	
	//日付チェック
	if(!date_chk(year, month, day, msg)){
		document.forms[form].elements[ctl].value = "";
		return;
	}

	//年齢チェック
	var age = get_age(year, month, day);
	document.forms[form].elements[ctl].value = age;
	
}

/**
 * ヘッダメニュー表示
 * 
 * ヘッダに存在するメニューを表示する
 * 
 * 【引数】
 * e		メニューコントロール名
 * 
 * 【戻り値】
 * なし
 *
 */
function fShow(e){
    if(e != null){
        document.getElementById(e).style.visibility = 'visible';
    }
}

/**
 * ヘッダメニュー非表示
 * 
 * ヘッダに存在するメニューを非表示にする
 * 
 * 【引数】
 * e		メニューコントロール名
 * 
 * 【戻り値】
 * なし
 *
 */
function fHide(e){
    if(e != null){
        document.getElementById(e).style.visibility = 'hidden';
    }
}

function menu_hide(){
    if(document.getElementById('sub1') != null){
        fHide('sub1');
        fHide('sub2');
        fHide('sub3');
        fHide('sub4');
        fHide('sub5');
        fHide('sub6');
    }
}

/**
 * 経験削除処理 
 * 
 *
 * onclick に指定。
 * ラジオボタンがクリックされたとき、
 * 経験が入力されていた場合、削除確認ダイアログを表示し、
 * OKの場合、入力されている全ての経験を削除する。
 * 
 * 【引数】
 * removeButton 削除ボタンオブジェクト
 * 
 * 【戻り値】
 * true
 *
 */
function delete_work_experience(removeButton) {

    var experiences = $A(document.getElementsByName('work_experience'));
    if(experiences == null || experiences.length == 0) {
        return true;
    }
    
    var updateExperience = false;
    
    if(experiences.length > 1) {
        updateExperience = true;
    } else if(experiences.length == 1) {
        var c_work_start_year = $F(document.getElementsByName('c_work_start_year')[0]);
        var c_work_start_month = $F(document.getElementsByName('c_work_start_month')[0]);
        var c_work_end_year = $F(document.getElementsByName('c_work_end_year')[0]);
        var c_work_end_month = $F(document.getElementsByName('c_work_end_month')[0]);
        var c_employment_style_div = $F(document.getElementsByName('c_employment_style_div')[0]);
        var c_business_type = $F(document.getElementsByName('c_business_type')[0]);
        var c_job_kind = $F(document.getElementsByName('c_job_kind')[0]);
        var job_contents = document.getElementsByName('job_contents')[0].value;
        
        if(c_work_start_year != '' || 
            c_work_start_month != '' || 
            c_work_end_year != '' || 
            c_work_end_month != '' || 
            c_employment_style_div != '' || 
            c_business_type != '' || 
            c_job_kind != '' || 
            job_contents != '') {
            updateExperience = true;
        }
    }
    
    if(updateExperience == true) {
        if(confirm('入力した経験は削除されます。よろしいですか？') == true) {
            for(var i = 0; i < experiences.length; i++) {
                experiences[i].checked = true;
            }
            $(removeButton).click();
        }
    }
    return true;
}

/**
 * 経験削除処理 
 *----------------------------------------
 * 会員登録プレミアム用
 *----------------------------------------
 *
 * onclick に指定。
 * ラジオボタンがクリックされたとき、
 * 経験が入力されていた場合、削除確認ダイアログを表示し、
 * OKの場合、入力されている全ての経験を削除する。
 * 
 * 【引数】
 * removeButton 削除ボタンオブジェクト
 * 
 * 【戻り値】
 * true
 *
 */
function delete_work_experience_premium(removeButton) {

    var experiences = $A(document.getElementsByName('exp_hdn'));
    var updateExperience = false;
    
    //経験が２件以上存在する場合、削除実施
    if(experiences.length > 1){
        updateExperience = true;
    }else{
        //経験が１件の場合、いずれかの項目が入力済みの場合、削除実施
        var c_work_start_year = document.forms["premium"].elements["c_work_start_year0"].value;
        var c_work_start_month_index = document.forms["premium"].elements["c_work_start_month0"].selectedIndex;
        var c_work_start_month = document.forms["premium"].elements["c_work_start_month0"].options[c_work_start_month_index].value;
        var c_work_end_year = document.forms["premium"].elements["c_work_end_year0"].value;
        var c_work_end_month_index = document.forms["premium"].elements["c_work_end_month0"].selectedIndex;
        var c_work_end_month = document.forms["premium"].elements["c_work_end_month0"].options[c_work_end_month_index].value;
        var c_employment_style_div_index = document.forms["premium"].elements["c_employment_style_div0"].selectedIndex;
        var c_employment_style_div = document.forms["premium"].elements["c_employment_style_div0"].options[c_employment_style_div_index].value;
        var c_business_type_index = document.forms["premium"].elements["c_business_type0"].selectedIndex;
        var c_business_type = document.forms["premium"].elements["c_business_type0"].options[c_business_type_index].value;
        var c_job_kind_index = document.forms["premium"].elements["c_job_kind0"].selectedIndex;
        var c_job_kind = document.forms["premium"].elements["c_job_kind0"].options[c_job_kind_index].value;
        var job_contents = document.forms["premium"].elements["job_contents0"].value;

        if(c_work_start_year != '' || 
            c_work_start_month != '' || 
            c_work_end_year != '' || 
            c_work_end_month != '' || 
            c_employment_style_div != '' || 
            c_business_type != '' || 
            c_job_kind != '' || 
            job_contents != '') {
            updateExperience = true;
        }        
    }

    if(updateExperience == true) {
        if(confirm('入力した経験は削除されます。よろしいですか？') == true) {
            for(var i = 0; i < experiences.length; i++) {
                document.forms["premium"].elements["work_experience" + i].checked = true;
            }
            $(removeButton).click();
        }
    }
    return true;
}

