/*--------------------------------------*/
/*ナビゲーションメニュー操作*/
/*--------------------------------------*/
// 本体
function MenuController(target_id,modify_value,mainbutton_id,mainbutton_class){
// 対象の情報を取得
var target_object = document.getElementById(target_id);
// 主となるボタンの情報を取得
var mainbutton_object = document.getElementById(mainbutton_id);

// 高さの増減処理の終了（動いている場合）
clearInterval(target_object.timer_id);

// 主となるボタンのクラスを変更
mainbutton_object.className = mainbutton_class;

switch(modify_value){
// 開く場合
case 1:
// 高さの最大値が取得できていない場合
if(!target_object.max_height){
// 初期設定
target_object.style.visibility = 'visible';// 対象を表示する
target_object.style.height = 'auto';// 対象の高さをフリーにする
target_object.max_height = target_object.offsetHeight;// 対象の高さの最大値を取得する
target_object.style.height = '0px';// 対象の高さを0にする
}
break;
}

// 高さの増減処理を実行
target_object.timer_id = setInterval(function(){MenuChanger(target_object,modify_value)},1);
}
// 増減処理
function MenuChanger(target_object,modify_value){
// 現在の対象の高さを取得
var current_height = target_object.offsetHeight;
// 変数の初期化
var change_value;// 振れ幅
var modify_flg = 1;// 変更フラグ

// 高さの変更値
var height_value = 0;

switch(modify_value){
// 開く場合
case 1:
change_value = (Math.round((target_object.max_height - current_height) / 10));
// 現在の高さが高さの最大値-1以上の場合
if(current_height >= (target_object.max_height - 1)){
// 変更終了
modify_flg = 0;
}
break;
// 閉じる場合
case -1:
change_value = (Math.round(current_height / 10));
// 現在の高さが1以下の場合
if(current_height <= 1){
// 変更終了
modify_flg = 0;
}
break;
}
// 振れ幅が1以下の場合
if(change_value <= 1){
// 振れ幅を1にする
change_value = 1;
}

// 高さの変更値を取得
height_value = current_height + (change_value * modify_value);

// 高さの変更値が0以上の場合
if(height_value >= 0){
// 高さの変更値が高さの最大値を超えていた場合
if(height_value >= target_object.max_height){
height_value = target_object.max_height;
}
// 対象の高さを変化させる
target_object.style.height = height_value + 'px';
// 対象の透明度を変化させる（IEでは未対応）
target_object.style.opacity = current_height / target_object.max_height;
}

// 変更を終了する場合
if(modify_flg == 0){
// 変更処理の終了
clearInterval(target_object.timer_id);
}
}

/*--------------------------------------*/
/* 文字サイズ操作 */
/*--------------------------------------*/
// 押しボタンによる文字サイズ操作
function change_fontsize(target_id,size_name){
// サイズが指定されている場合
if(size_name != ""){
// 文字サイズを指定の値に変更
document.getElementById(target_id).style.fontSize = size_name;
// Cookieに値を格納（7=一週間）
create_cookie("set_fontsize",size_name,7);
}
}
// Cookieによる文字サイズ操作
function change_fontsize_auto(target_id){
// Cookieから文字サイズ指定を取得
var get_fontsize_name = read_cookie("set_fontsize");
// 文字サイズを変更
change_fontsize(target_id,get_fontsize_name);
}
/*--------------------------------------*/
/*　 Cookie操作 　*/
/*--------------------------------------*/
/*
※注意※
一部のブラウザはローカル環境でCookie保存ができない（サーバーにアップすれば保存できる）。
　win版 Google Chrome（mac版は不明）、mac版 Safari（win版はローカルでもOK）。
*/
// Cookie作成
function create_cookie(variable_name,variable_value,limit_day){
// 返却用の変数の初期化
var create_cookie_flg = false;
// 期限日が指定されている場合
if(limit_day >= 0){
// 日付オブジェクトを生成
var now_day = new Date();
// 期限日をミリ秒に変換
var limit_minuts = limit_day * 24 * 60 * 60 * 1000;
// 日付を設定（getTimeはタイムスタンプを取得）
now_day.setTime(now_day.getTime() + limit_minuts);
// Cookie用の期限日指定を準備
var cookie_limit = "; expires=" + now_day.toGMTString();
// Cookie生成
document.cookie = variable_name + "=" + variable_value + cookie_limit + "; path=/";
// 生成成功
create_cookie_flg = true;
}
return create_cookie_flg;
}
// Cookie読み込み
function read_cookie(variable_name){
// 返却用の変数の初期化
var get_cookie_data = null;
// Cookie全体を取得（最後に「;」を付ける）
var cookie_data = document.cookie + ";";
// 取得する変数の指定を整形
var get_variable = variable_name + "=";
// 対象の変数名の位置を取得
var variable_start = cookie_data.indexOf(get_variable);
var variable_end = cookie_data.indexOf(";",variable_start);
// 対象変数が存在する場合
if(variable_start != -1 && variable_end != -1){
// 変数名の開始位置から変数名分の文字数を足す（変数名も含まれているため）
variable_start = variable_start + get_variable.length;
// 対象の変数の中身を取り出す
get_cookie_data = cookie_data.substring(variable_start,variable_end);
}
// 取得した値の返却
return get_cookie_data;
}

