//room_auto_calc.js

//合計金額変数
var sum_room      = 0;
var sum_room_only = 0;

//宿泊日数
var stay_d = 0;

//宿泊人数
var stay_num = 1;

//宿泊人数が1人追加あたりの金額(ベッド代 + 寝具代 + 1000円)
var stay_add = 3000;

//その他、料金に付け加える文字列(＋別途相談 など)
var etc_str = '';

//ハウスクリーニング代
var house_clean_num = 0;

//光熱費
var utility_bill_num = 0;

//一括払い/月々払いフラグ
var payment_method_flag = true;

//ウィークリー/マンスリーの日割り母数
var base_num;

function init() {
    etc_str         = '';
    house_clean_num = 0;
//    sum_room      = 0;
//    sum_room_only = 0;
//    stay_d        = 0;
//    stay_num      = 1;
}

//if in_date edit then move out_date.
function setOutDate() {
    var frm = document.reserve;
    var inDate = new Date();

    //in get
    inDate.setFullYear(frm.in_y.value);
    inDate.setMonth((parseInt(frm.in_m.value) - 1));
    inDate.setDate(frm.in_d.value);
    frm.in_y.value  = inDate.getFullYear();
    frm.in_m.value  = (parseInt(inDate.getMonth()) + 1);
    frm.in_d.value  = inDate.getDate();

    inDate.setFullYear(frm.in_y.value);
    inDate.setMonth((parseInt(frm.in_m.value) - 1));
    inDate.setDate((parseInt(frm.in_d.value) + 1));

    frm.out_y.value = inDate.getFullYear();
    frm.out_m.value = (parseInt(inDate.getMonth()) + 1);
    frm.out_d.value = inDate.getDate();
    fix_sum();
}

function get_sum_date() {
    //家賃の日割り計算
    var frm = document.reserve;
    var s = Date.UTC(frm.in_y.value,  (frm.in_m.value-1),  frm.in_d.value, 0, 0, 0);
    var e = Date.UTC(frm.out_y.value, (frm.out_m.value-1), frm.out_d.value, 0, 0, 0);
    var a = e - s;
    var rent  = parseInt(frm.OBJECT_RENT.value);
    var drent = rent / base_num;

    if (0 < a) {
        stay_d = a / (24 * 60 * 60 * 1000);
        stay_d++; //宿泊日数ではなく、部屋占有日数を出すためにインクリメント
        //sum_room_only = Math.ceil(stay_d * drent);
        sum_room_only = Math.floor(stay_d * drent);
    } else {
        stay_d = 0;
        sum_room = 0;
        sum_room_only = 0;
    }

    /**
     * --------------------------------------------------------------
     * 駐車場料金も一緒に日割りにしちゃえっ!!
     * ここから
     **/
    var len = frm.elements.length;
    var val;
    for (n = 0 ; n < len ; n++) {
        if ('use_parking' == frm.elements[n].name) {
            if (true == frm.elements[n].checked) {
                val = frm.elements[n].value;
            }
        }
    }
    if ('1' == val) {
        rent  = parseInt(frm.OBJECT_PARKING_FEE.value);
        drent = rent / base_num;
        //sum_room_only = Math.ceil(sum_room_only + stay_d * drent);
        sum_room_only = Math.floor(sum_room_only + stay_d * drent);
    }
    /**
     * ここまで
     * 駐車場料金も一緒に日割りにしちゃえっ!!
     * --------------------------------------------------------------
     **/

     /**
      * --------------------------------------------------------------
      * 宿泊日数が60日未満の場合、月々払いを選択させない処理
      * ここから
      **/
/*
2009.01.22 仕様変更によりコメントアウト
      if (stay_d < 60) {
          frm.PAYMENT_METHOD[0].checked  = true;
          frm.PAYMENT_METHOD[1].disabled = true;
      } else {
          frm.PAYMENT_METHOD[1].disabled = false;
      }
*/
     /**
      * ここまで
      * 宿泊日数が60日以下の場合、月々払いを選択させない処理
      * --------------------------------------------------------------
      **/
}


//利用人数
function get_sum_room_use_num() {
    var frm = document.reserve;
    var s = 0;
/*
comment out by yasuda. 2008.04.21
人数による寝具料金変動を無くす。
    if (0 < sum_room_only) {
        if ('1' == frm.room_use_num.value) {
            s = sum_room_only;
        } else {
            s = sum_room_only + (stay_add * (parseInt(frm.room_use_num.value) - 1));
        }
        sum_room = s;
    }
*/
    sum_room = sum_room_only;
}


//費用備品の値引き処理
function get_no_item_chk() {
    var frm = document.reserve;
    var len = frm.elements.length;
    var val;
    var nim_num = 0;
    for (n = 0 ; n < len ; n++) {
        if ('no_item[]' == frm.elements[n].name) {
            if (true == frm.elements[n].checked) {
                val = frm.elements[n].value;
                switch (val) {
                case 'tv': //TV + TV台
                    nim_num = nim_num + 1000;
                    break;
                case 'wash': //洗濯機
                    nim_num = nim_num + 1500;
                    break;
                case 'cold': //冷蔵庫
                    nim_num = nim_num + 1500;
                    break;
                case 'cooker': //電子レンジ + IHコンロ
                    nim_num = nim_num + 1000;
                    break;
                case 'bedding': //寝具セット
                    //nim_num = nim_num + (1000 * parseInt(frm.room_use_num.value));
                    nim_num = nim_num + 1000;
                    break;
                case 'bed': //ベッド
                    //nim_num = nim_num + (1000 * parseInt(frm.room_use_num.value));
                    nim_num = nim_num + 1000;
                    break;
                case 'rag': //ラグ + ローデスク
                    nim_num = nim_num + 500;
                    break;
                }
            }
        }
    }
    //sum_room = sum_room - Math.ceil(nim_num / base_num * stay_d);
    sum_room = sum_room - Math.floor(nim_num / base_num * stay_d);
}


function get_komikomi_utility_bill() {
    var frm = document.reserve;

    var lay = parseInt(frm.OBJECT_LAYOUT_ITEM_ID.value); //間取りID
    var use = parseInt(frm.room_use_num.value);          //利用人数
    var num = 0;

    var len = frm.elements.length;
    var val;
    for (n = 0 ; n < len ; n++) {
        if ('expenses' == frm.elements[n].name) {
            if (true == frm.elements[n].checked) {
                val = frm.elements[n].value;
            }
        }
    }

    num = stay_d * parseInt(frm.OBJECT_UTILITY_BILL.value);
    utility_bill_num = num;
    if ('1' == val) {
        sum_room = sum_room + num;
    }
}

function get_house_cleaning() {
    var frm = document.reserve;
    var num = 0;
    stay_d; //宿泊日数

    if (  1 <= stay_d && stay_d <= 30 ) { num = parseInt(frm.OBJECT_HOUSE_CLEANING1.value); }
    if ( 31 <= stay_d && stay_d <= 60 ) { num = parseInt(frm.OBJECT_HOUSE_CLEANING2.value); }
    if ( 61 <= stay_d && stay_d <= 90 ) { num = parseInt(frm.OBJECT_HOUSE_CLEANING3.value); }
    if ( 91 <= stay_d && stay_d <= 180) { num = parseInt(frm.OBJECT_HOUSE_CLEANING4.value); }
    if (181 <= stay_d && stay_d <= 360) { num = parseInt(frm.OBJECT_HOUSE_CLEANING5.value); }

/*
    if (0 == num) {
        house_clean_num = 0;
        etc_str = etc_str + '＋ハウスクリーニング代は別途計算';
    } else {
        house_clean_num = num;
    }
*/
    house_clean_num = num;
    sum_room = sum_room + num;
}


function get_switch_payment_method() {
/*
    var frm = document.reserve;
    var len = frm.PAYMENT_METHOD.length;

    if (frm.PAYMENT_METHOD[0].checked) {
        payment_method_flag = true;
        return true;
    } else {
        //入居月よりも退去月が大きい場合(月を跨いだ契約の場合)
        var ds = Date.UTC(frm.in_y.value, frm.in_m.value, 1);
        var de = Date.UTC(frm.out_y.value, frm.out_m.value, 1);
        if (ds < de) {
            payment_method_flag = false;
            //当月半端日数分の家賃
            var ly = parseInt(frm.in_y.value);
            var lm = parseInt(frm.in_m.value);
            var ld = parseInt(frm.in_d.value);
            var last_day = new Date(ly, lm, 0).getDate();
            tgt_day = (last_day+1) - ld; //宿泊開始月の末日までの半端日

            if (0 < tgt_day) {
                var rrent     = parseInt(frm.OBJECT_RENT.value);
                var rdrent    = rrent / base_num;
                var prent     = parseInt(frm.OBJECT_PARKING_FEE.value);
                var pdrent    = prent / base_num;

                //
                // -------------------------------------------------
                // 保証料金の計算
                //
                var ho     = (rrent + prent);
                if (frm.expenses[1].checked) {
                    var u_bill = parseInt(frm.OBJECT_UTILITY_BILL.value);
                    ho         = ho + (u_bill * 30);
                }
                ho = ho / 2;
                //alert(ho);
                //
                // 保証料金の計算
                // -------------------------------------------------
                //

                //当月の部屋賃・駐車場賃の計算
                var tgt_rrent = (tgt_day * rdrent); //当月部屋賃
                var tgt_prent = (tgt_day * pdrent); //当月駐車場賃
                var tgt_expen = 0;
                if (frm.use_parking[1].checked) {
                    tgt_prent = 0;
                }
                if (frm.expenses[1].checked) {
                    tgt_expen = tgt_day * u_bill;   //当月光熱費
                }

                var sum_tgt_rent = tgt_rrent + tgt_prent + tgt_expen + ho + house_clean_num;
                sum_tgt_rent = Math.floor(sum_tgt_rent);
                return sum_tgt_rent;
            }
        }
    }
    payment_method_flag = true;
*/
}


//ウィークリー||マンスリーの判別をおこない、家賃等の計算に用いる母数を設定
function fn_get_base_num() {
    var frm = document.reserve;
    if (2==frm.OBJECT_WM_BIT.value) {
        base_num = 7;
    } else {
        base_num = 30;
    }
}


function fix_sum() {

    fn_get_base_num();
    get_sum_date();
    if (0 < stay_d) {
        get_sum_room_use_num();
        get_no_item_chk();
        get_komikomi_utility_bill();
        get_house_cleaning();
        pmstr = get_switch_payment_method();
    }

    var sum_str;
    if (!payment_method_flag) {
        sum_room = pmstr;
    }

    //test
    sum_room = parseInt(sum_room) + parseInt(utility_bill_num);

    sum_str = format_number(sum_room) + '円';
    if (etc_str) { sum_str = sum_str + '<br />' + etc_str; }


    document.getElementById('sum').innerHTML         = sum_str;
    document.getElementById('house_clean').innerHTML = format_number(house_clean_num) + '円';
    document.getElementById('utility_bill').innerHTML = format_number(utility_bill_num) + '円';
    var frm = document.reserve;
    frm.FEE_SUM.value = sum_room;
    frm.HOUSE_CLEANING.value = house_clean_num;
    frm.UTIL_BILL_HDN.value  = utility_bill_num;
    init();
}

//カンマ付け
function format_number(x) { // 引数の例としては 95839285734.3245
    var s = "" + x;
    var p = s.indexOf(".");
    if (p < 0) {
        p = s.length;
    }
    var r = s.substring(p, s.length);
    for (var i = 0; i < p; i++) {
        var c = s.substring(p - 1 - i, p - 1 - i + 1);
        if (c < "0" || c > "9") {
            r = s.substring(0, p - i) + r;
            break;
        }
        if (i > 0 && i % 3 == 0) {
            r = "," + r;
        }
        r = c + r;
    }
    return r;
}


//説明ウィンドウのポップアップ
function win(url) {
    var param;
    param  = "width=300,";
    param += "height=300,";
    param += "directories=0,";
    param += "location=0,";
    param += "menubar=0,";
    param += "scrollbars=1,";
    param += "status=0,";
    param += "toolbar=0,";
    param += "resizable=1,";
    window.open(url, 'caption', param);
}

