$(function()
{
    if ($.browser.msie)
    {
        $(document.body).ajaxSend(function(evt, request, settings)
        {
            if (!settings.ifModified && settings.type.toLowerCase() == 'get')
                request.setRequestHeader('If-Modified-Since', 'Thu, 01 Jan 1970 00:00:00 GMT');
        });
    }

    $('select[id^="p_select"]').change(function(a) {
        var id = a.target.id.replace('p_select', '');
        get_organization($('#' + a.target.id).val(), id);
    });

    $('input.p_vote').click(function(a) {
        var vote = a.target.name.split('_', 2);
        check_vote(vote[0], vote[1]);
    });

    $('select[id^="y_select"]').change(function(a) {
        var id = a.target.id.replace('y_select', '');
        reset_days(parseInt(id));
    });
    $('select[id^="m_select"]').change(function(a) {
        var id = a.target.id.replace('m_select', '');
        reset_days(parseInt(id));
    });

    $('#chktoggle').toggle(
        function(a) {
            $('input[class="chklist"]').attr('checked', true);
            return false;
        },
        function(a) {
            $('input[class="chklist"]').attr('checked', false);
            return false;
        }
    );

    $('input.search-key-input').focus(function(a) {
        if (a.target.value == a.target.title) {
            a.target.value = '';
        }
    });
    $('input.search-key-input').blur(function(a) {
        if (a.target.value == '') {
            a.target.value = a.target.title;
        }
    });
});

function request_json(url, param, parse_json, add)
{
    try {
        $.get(url, param, function(jsData) {
            var arrJson = eval('(' + jsData + ')');
            parse_json(arrJson, add);
        });
    }
    catch(e) {}
}

function is_empty(val) {
    var result = false;
    switch (typeof(val)) {
    case 'object':
        for (var i in val) {
            result = !i && !val[i];
            break;
        }
        break;
    case 'string':
        result = val ? false : true;
        break;
    case 'boolean':
        result = !val;
        break;
    case 'function':
    case 'number':
    case 'undefined':
    }
    return result;
}

function get_organization(pref_code, id)
{
    var target = $('select#o_select' + id)[0];
    if (target == 'undefined') return;

    target.options.length = 1;
    target.selectedIndex = 0;
    if (pref_code.length < 2) return;

    var loading = $('img#o_loading' + id)[0];
    loading.style.display = 'inline';
    target.disabled = true;

    var param = { 'o' : pref_code.substring(0, 2) };
    var add = { 'target' : target, 'loading' : loading };
    request_json('/orgcode.html', param, change_organization_json, add);
}

function change_organization_json(jsData, add)
{
    if (is_empty(jsData)) return;
    var target = add.target;
    var loading = add.loading;

    for (var i = 0; i < jsData.length; i++) {
        target.options[i + 1] = new Option(jsData[i].organization_name, jsData[i].organization_id);
    }

    loading.style.display = 'none';
    target.disabled = false;
}

function check_vote(id, sel)
{
    var param = { 'id' : id, 'sel' : sel };
    var add = { };
    request_json('vote.html', param, vote_review_json, add);
}

function vote_review_json(jsData, add)
{
    if (is_empty(jsData)) return;
    if (jsData['login']) location.href=jsData['login'];

    $('span#vote_result' + jsData['id']).text(jsData['result']);
    if (jsData['cnt_total']) {
        $('span#vote_helpful' + jsData['id']).text(jsData['cnt_total'] + '人中、' + jsData['cnt_sum'] + '人の方が、｢このレビューが参考になった｣と投票しています。');
    }
}

function enter_login(pform) {
    var key = pform['key'].value;
    var pass = pform['pass'].value;
    if (key && pass) {
        pass = sha1hash_hexstr(sha1hash_hexstr(pass) + key);
        pform['pass'].value = pass;
    }
    pform['key'].value = '';
    pform.submit();
}

function enter_delete(pform) {
    if (!confirm('削除しますか？')) return false;
    pform.submit();
}

function reset_days(id){
    var years = parseInt($('#y_select' + id)[0].value);
    var months = parseInt($('#m_select' + id)[0].value);
    var target_d = $('#d_select' + id)[0];
    if (!years || !months || !target_d) return;

    var lastday = get_lastday(years, months);
    var curlastday = target_d.length;
    if (lastday < target_d.selectedIndex) {
        target_d.selectedIndex = lastday;
    }
    target_d.length = lastday + 1;
    for (i = curlastday; i <= lastday; i++) {
        target_d.options[i] = new Option(i, i);
    }
}

function get_lastday(year, month) {
    var lastday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
        lastday[1] = 29;
    }
    return lastday[month - 1];
}

function enter_search(frm) {
    var objTitle = $('#'+frm+' input.search-key-input');
    var objValue = $('#'+frm+' input.search-key-input');
    if (objTitle.attr('title') == objValue.attr('value')) {
        objValue.attr('value', '');
    }
    $('#'+frm).submit();
}
