// 美しい
function createHttpRequest()
{
    if (window.ActiveXObject) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                return null;
            }
        }
    } else if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else {
        return null;
    }
}

function setForm(form_id, ft, add)
{
    if (!document.forms[form_id]) { return; }

    var now = new Date();
    var day = new Date(now.getTime() + (add * 24 * 3600 * 1000));
    var y = day.getFullYear();
    var y_max = (day.getMonth() >= 10) ? 1 : 0;
    y_max++;
    var form = document.forms[form_id];
    var form_y = form.elements[ft + '_y'];

    form_y.length = y_max + 1;

    for (var i = 0; i <= y_max; i++) {
        form_y.options[i].text = y + i;
        form_y.options[i].value = y + i;
    }
    form.elements[ft + '_m'].selectedIndex = day.getMonth();
    form.elements[ft + '_d'].selectedIndex = day.getDate() - 1;
}

function setSearchDay(add)
{
    setForm('sq-search',  'from', add);
    setForm('sq-search',  'to',   add + 1);
    setForm('all-search', 'from', add);
    setForm('all-search', 'to',   add + 1);
}

function setNextDay(form_id)
{
    var form = document.forms[form_id];
    var y = form.elements['from_y'].value;
    var m = form.elements['from_m'].value;
    var d = form.elements['from_d'].value;
    var now = new Date(y, m - 1, d);
    var next = new Date(now.getTime() + (24 * 3600 * 1000));

    form.elements['to_y'].selectedIndex
        = next.getFullYear() - now.getFullYear();
    form.elements['to_m'].selectedIndex = next.getMonth();
    form.elements['to_d'].selectedIndex = next.getDate() - 1;
}

function rewrite()
{
    var e, t, q;

    q = '';
    for (t in document.forms['rvform'].elements) {
        e = document.forms['rvform'].elements[t];
        if (e != null && typeof(e.value) != 'undefined') {
            if (e.name != 'mode' && e.name != 'action_reserve_input'
                && e.name != 'recalc') {
                q += encodeURI(e.name) + '=' + encodeURI(e.value) + '&';
            }
        }
    }

    q = '/app/?action_reserve_input=1&' + q + 'recalc=1&rand=' + Math.random();
    var xhr = createHttpRequest();
    xhr.open('GET', q, true);
    xhr.onreadystatechange = function()
    {
        if (xhr.readyState == 4) {
            document.getElementById('total-price').innerHTML
                = xhr.responseText;
        }
    }
    xhr.send('');
}

function showcalendar(sid, csid, from, to)
{
    var w = 700;
    var h = 360;
    var x = (screen.width / 2) - (w / 2);
    var y = 150;

    var html = '/app/?action_search_stock_calendar=1&sid=' + sid
      + '&csid=' + csid + '&from=' + from + '&to=' + to;

    var size = ',width=' + w + ',height=' + h;
    var xy = ',top=' + y + ",left=" + x;
    var attr = 'toolbar=no,location=no,directories=no,status=no,'
      + 'menubar=no,resizable=yes,scrollbars=yes';

    window.open(html, 'cal', attr + size + xy);
}

function availInput(rb)
{
    if (document.getElementById('avail_' + rb).selectedIndex == 0) {
        document.getElementById('add_' + rb).disabled = true;
        document.getElementById('add_' + rb).style.backgroundColor = '#cccccc';
    } else {
        document.getElementById('add_' + rb).disabled = false;
        document.getElementById('add_' + rb).style.backgroundColor = '#ffffff';
    }
}

// for car makers and types
function getCarTypes(cmid)
{
    var url = '/app/?action_search_cartype=1&cmid=' + cmid
            + '&r=' + Math.random();
    var xhr = createHttpRequest();

    xhr.open('GET', url, true);
    xhr.onreadystatechange = function()
    {
        if (xhr.readyState == 4) {
            var t = xhr.responseText;
            var ttid = document.getElementById('ttid');
            ttid.selectedIndex = 0;
            if (t.length > 0) {
                var list = t.split("&");
                ttid.length = list.length;
                for (var i = 0; i < list.length; i++) {
                    var v = list[i].split("|");
                    ttid.options[i].value = v[0];
                    ttid.options[i].text = v[1];
                }
            } else {
                ttid.length = 1;
                ttid.options[0].value = 0;
                ttid.options[0].text = '※定義されていません';
            }
        }
    }
    xhr.send('');
}

function sqs()
{
    var from, to;
    var sqe = document.forms['sq-search'].elements;
    var rbox = document.getElementById('sqs-results');

    rbox.innerHTML = '<img src="/app/img/loader.gif" width="16" height="16" alt="" />' + '検索中…';

    from = sqe['from_y'].value + '-' + sqe['from_m'].value
         + '-' + sqe['from_d'].value + ' '
         + sqe['from_h'].value + '%3A' + sqe['from_i'].value + '%3A00';
    to   = sqe['to_y'].value + '-' + sqe['to_m'].value
         + '-' + sqe['to_d'].value + ' '
         + sqe['to_h'].value + '%3A' + sqe['to_i'].value + '%3A00';

    var rand = Math.floor(Math.random() * 9999);
    var url = '/app/?action_search_quick=1&from=' + from
            + '&to=' + to + '&rand=' + rand;
    var xhr = createHttpRequest();
    xhr.open('GET', url, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            rbox.innerHTML = xhr.responseText;
        }
    }
    xhr.send('');
}
