//-----------------------------------------------------------------------------
//
// [KJ_RENEWAL]
// 検索結果一覧の検索窓javascript
// AUTHOR:www.clouds-inc.jp
//-----------------------------------------------------------------------------

/**
 * 次・前・ページリンク押下時
 *
 */
function movePageTo(pageNo) {
    $('#page_no').attr('value', pageNo);
    $('#research_flg').attr('value', '0');
    _beforeSubmit(pageNo);
    $('#search_result_form').submit();
}

/**
 * モードを変更する。
 *
 */
function changeViewMode(mode) {
    $('#mode_value').attr('value', mode);
    $('#research_flg').attr('value', '0');
    $('#page_no').attr('value', '');
    _beforeSubmit(1);
    $('#search_result_form').submit();
}

/**
 * 並び替えモードを変更する。
 *
 */
function changeOrderType(orderType, salaryOrder) {
    $('#order_type').attr('value', orderType);
    $('#salary_order').attr('value', salaryOrder);
    $('#page_no').attr('value', '');
    $('#research_flg').attr('value', '0');
    _beforeSubmit(1);
    $('#search_result_form').submit();
}

/**
 * 検索フォーム内のクリックイベント発生時の処理を実行する。
 *
 */
$(document).ready(function(){
    
    /**
     * さらに絞り込むボタン押下時に検索条件欄を表示する。
     *
     */
    $("#focus_button").click(function(){
        if($("#result_focus").is(":hidden")) {
//	        $("#result_focus").slideDown("fast");
//	        $("#chfocus").slideUp("slow");
	        $("#result_focus").show();
	        $("#chfocus").hide();
        } else {
//            $("#result_focus").slideUp("fast");
            $("#result_focus").hide();
        }
    });
    $("#focus_close").click(function(){
        if($("#chfocus").is(":hidden")) {
//            $("#result_focus").slideUp("fast");
            $("#result_focus").hide();
            $("#chfocus").show();
        }
    });
    /**
     * 再検索ボタン押下時の処理。
     *
     */
    $("#research_button").click(function(){
        _beforeSubmit(1);
	    $('#page_no').attr('value', '');
    });
    $("#research_button2").click(function(){
        _beforeSubmit(1);
	    $('#page_no').attr('value', '');
    });
    /**
     * 条件保存ボタン押下時の処理。
     *
     */
    $("#save_button").click(function(){
        $('#page_no').attr('value', '');
        $('#search_result_form').attr('action', '/kj/?act=consumer_mypage_mysearch_entry');
    });
    // #149 ボタン追加
    $("#save_button_2").click(function(){
        $('#page_no').attr('value', '');
        $('#search_result_form').attr('action', '/kj/?act=consumer_mypage_mysearch_entry');
    });
    
    // ------------------------------------------------------------------------
    // 下部検索フォーム用
    // ------------------------------------------------------------------------
    /**
     * さらに絞り込むボタン押下時に検索条件欄を表示する。
     *
     */
    $("#btm_focus_button").click(function(){
        if($("#btm_result_focus").is(":hidden")) {
            $("#btm_result_focus").slideDown("fast");
        } else {
            $("#btm_result_focus").slideUp("fast");
        }
    });
    
    /**
     * 再検索ボタン押下時の処理。
     *
     */
    $("#btm_research_button").click(function(){
        _beforeSubmit(1);
        $('#btm_page_no').attr('value', '');
    });
    
    /**
     * 条件保存ボタン押下時の処理。
     *
     */
    $("#btm_save_button").click(function(){
        $('#btm_page_no').attr('value', '');
        $('#btm_search_result_form').attr('action', '/kj/?act=consumer_mypage_mysearch_entry');
    });
    // #149 ボタン追加
    $("#btm_save_button_2").click(function(){
        $('#btm_page_no').attr('value', '');
        $('#btm_search_result_form').attr('action', '/kj/?act=consumer_mypage_mysearch_entry');
    });
    
    // ------------------------------------------------------------------------
    // 案件数（＝事業所数）取得 see also: http://svn.trustcity.co.jp/trac/sms-staff-xj01/ticket/150
    // ------------------------------------------------------------------------
    
    // ランダムな案件数を表示しておいて、
    // (2009.03.04) loading 画像に変更
//    var _wait = setInterval(_waitDepCount, 250);
    
    
    // 案件数を ajax で取得
    var _post = setTimeout(_countDepartment, 1000);
    
    // ajax が完了したら取得した案件数を表示
    var cssProp = {
             'color' : '#FF0000'
            ,'font-weight' : 'bold'
    };
    $(document).ajaxComplete(function() {
//        clearInterval(_wait);
        clearTimeout(_post);
        $("#_search_result_loading").hide();
        $("#_btm_search_result_loading").hide();
        $("#_search_result_dep_count").css(cssProp).text(_depCnt).show();
        $("#_btm_search_result_dep_count").css(cssProp).text(_depCnt).show();
    });
    
});

/**
 * URLに"&page=N"を付ける...orz
 * 
 * @param _pageNo ページ番号
 */
function _beforeSubmit(_pageNo)
{
	// #24. Dungbq@luvina.net
	//_URL_SEARCH_STATIC_MODE set in [kj\template\ja\Public\Result.html]
	if(typeof _URL_SEARCH_STATIC_MODE != 'undefined' && _URL_SEARCH_STATIC_MODE == 1) {
		$('#page').attr('value', _pageNo);
	} else {
	    var _action = $('#search_result_form').attr('action');
	    _action += '&page=' + _pageNo;
	    $('#search_result_form').attr('action', _action);
	}
}

/**
 * 以下、案件数取得関係ファンクション。
 * 
 */
var _depCnt = 0;// 案件数

/**
 * ランダムな案件数を表示する。
 * 
 */
function _waitDepCount() {
    var r = parseInt(Math.random()*1000);
    $("#_search_result_dep_count").css("color", "#CFCFCF").text(r);
    $("#_btm_search_result_dep_count").css("color", "#CFCFCF").text(r);
}

/**
 * 案件数を取得する。
 * 
 */
function _countDepartment() {
    var searchCondition = _searchConditionToJSON();
	// #24. Dungbq@luvina.net
	//_URL_SEARCH_STATIC_MODE set in [kj\template\ja\Public\Result.html]
    searchCondition['act'] = 'public_countdepartment';
    $.post('/?act=public_countdepartment', searchCondition, function(data) {
        _depCnt = data.dep_count;
    }, 'json');
}

/**
 * 検索条件を JSON 化する。
 * 
 * @return 検索条件の JSON
 */
function _searchConditionToJSON() {

    var json = {};
    var indexMap = {};
    $("#search_result_form input").each(function() {
        
        var _type = this.type;
        var _name = this.name;
        var _value = this.value;
        
        if(_type == 'checkbox' && this.checked) {
            // checkbox
            
            if(_isArrayProp(_name)) {
                // array
                indexMap = _indexInc(indexMap, _name);
                _name = _name.substring(0, _name.length-2) + '[' + indexMap[_name] + ']';
            }
            
            json[_name] = _value;
            
        } else if(_type != 'checkbox' && _value) {
            
            if(_isArrayProp(_name)) {
                // array
                indexMap = _indexInc(indexMap, _name);
                _name = _name.substring(0, _name.length-2) + '[' + indexMap[_name] + ']';
            }
            
            json[_name] = _value;
            
        }
        
    });
    
    return json;
}

/**
 * name が配列かどうか
 * 
 * @param name
 * @return
 */
function _isArrayProp(name) {
    return name.substring(name.length-2) == '[]';
}

/**
 * 配列ごとのインデックスを増やす。
 * 
 * @param indexMap
 * @param _name
 * @return
 */
function _indexInc(indexMap, _name) {
    var index = indexMap[_name];
    index = (index != undefined) ? index+1 : 0;
    indexMap[_name] = index;
    return indexMap;
}
