/**
 * mylist_submit.js
 *
 * クリッピング画面の送信前チェック（チェックOKであればsubmit）
 *
 * トリガをクリックすると、
 * ●sfilter = ""の場合
 * ①チェックボックスチェック（１件以上チェック）
 * ②①のチェックがTrueなら、 トリガから遷移先を取得し、submit
 *   ①のチェックがfalseなら、何もしない
 * ●sfilter != ""の場合
 * ①自グループのチェックボックスチェック（１件以上チェック）
 * ②他グループのチェックボックスチェック（０件チェック）
 * ③①・②のチェックが共にTrueなら、トリガから遷移先を取得し、submit
 *   ①・②のチェックが上記以外なら、何もしない
 *
 * @require jquery.js
 *
 * @param {String, DOMElement, jQuery} target  対象のチェックボックス
 * @param {String, DOMElement, jQuery} sfilter cssフィルター（自グループ）
 * @param {String, DOMElement, jQuery} form    submitするフォーム
 *
 * @example $(".shiryo01").clip_before_check(".main_form input:checkbox", ".shiryo01_data", "#contact_form");
 *
 */
(function($) {
    $.fn.clip_before_check = function(target, sfilter, form, options) {

        //オプション拡張
        options = $.extend( {}, $.fn.clip_before_check.defaults, options );

        //トリガとなるオブジェクト
        var triggerElm = this;

        //トリガが存在しなければ終了
        if(triggerElm.size() < 1)
        {
            return this;
        }

        triggerElm.click(function(){
            var cflg = "1";
            // チェックボックスのチェック
            if("" == sfilter) {
                var grchk = $(target);
                for(var i=0;i<grchk.size();i++){
                    if(grchk.get(i).checked) {
                        cflg = "0"; break;
                    }
                }
            } else {
                var grchk = $(target).filter(sfilter);
                for(var i=0;i<grchk.size();i++){
                    if(grchk.get(i).checked) {
                        cflg = "0"; break;
                    }
                }
                if(cflg == "0"){
                    var ungrpChk = $(target).not(sfilter);
                    for(var i=0;i<ungrpChk.size();i++){
                        if(ungrpChk.get(i).checked) {
                            cflg = "2"; break;
                        }
                    }
                }
            }
            // チェックOKの場合submit
            if(cflg == "0"){
                if ($(this).attr("class").indexOf("delList") > -1) {
                    // リストから削除
                    $(".clp_change").attr({value:CLIP_DELETE_CONFIRM});
                    $(form).attr({action:$(this).get(0).href});
                } else if ($(this).attr("class").indexOf("delKskList") > -1) {
                    // リストから削除(検索条件)
                    $(".seaf_mail").attr({value:""});
                    $(form).attr({action:$(this).get(0).href});
                } else if ($(this).attr("class").indexOf("syosai_diff") > -1) {
                    var checkList = $(target).filter("[name='chkseqno']");
                    var checkCount = 0;
                    for(var i = 0; i < checkList.size(); i++ ) {
                        if( checkList.get(i).checked ) {
                            checkCount++;
                        }
                    }
                    if(checkCount >  20) {
                        showPopupMessage("詳細比較するマイリスト物件が21個以上選択されています。");
                        return false;
                    } else {
	                    // 詳細比較
	                    $(".cse_change").attr({value:$(this).parents('td').find("#cse_value").attr("name")});
	                    //ページング機能を使用するためGETを指定する。mantis:0012758
	                    $(form).attr({method:"GET"});
	                    $(form).attr({action:$(this).attr("value")});
                    }
                } else {
                    // 資料請求系
                    var targetClass;
                    var warnMessage;

                    if ($(this).attr("class").indexOf("shiryoSeikyu") > -1) {
                        //資料請求する
                        targetClass = "cantSeikyu";
                        warnMessage = "選択した対象は資料請求できません。";
                    }
                    if ($(this).attr("class").indexOf("sateiIrai") > -1) {
                        //査定依頼する
                        targetClass = "cantSatei";
                        warnMessage = "選択した対象は査定依頼できません。";
                    }
                    if ($(this).attr("class").indexOf("catalogSeikyu") > -1) {
                        //カタログ請求する
                        targetClass = "cantCatalog";
                        warnMessage = "選択した対象はカタログ請求できません。";
                    } if ($(this).attr("class").indexOf("mitsumoriIrai") > -1) {
                        //見積依頼する
                        targetClass = "cantMitsumori";
                        warnMessage = "選択した対象は見積依頼できません。";
                    }
                    if ($(this).attr("class").indexOf("printMap") > -1) {
                        //地図印刷する
                        targetClass = "cantPrintmat";
                        warnMessage = "選択した対象は地図印刷できません。";
                    }


                    //チェックしたクリップ情報に処理可能なものが1つ以上含まれているかを確認
                    var checkList;
                    if("" == sfilter) {
                        checkList = $(target).not(".all_check");
                    } else {
                        checkList = $(target).filter(sfilter).not(".all_check");
                    }
                    var okCount = 0;
                    for(var i = 0; i < checkList.size(); i++ ) {
                        if( checkList.get(i).checked ) {
                            var className = $(checkList.get(i)).attr("class");
                            if( className.indexOf( targetClass ) == -1 ) {
                                okCount++;
                            }
                        }
                    }

                    if(okCount ==  0){
                        showPopupMessage( warnMessage );
                        return false;
                    } else {
                        $(form).attr({action:$(this).attr("href")});
                    }
                }

                // まとめてボタンの配置されているのと同じtdタグのに配置されているIDがcse_valueであるDIVタグのnameの値をbsに設定する。
                if ($(this).attr("class").indexOf("delKskList") == -1) {
	                if($(this).parents('td').find("#cse_value").size() > 0) {
	                    var serviceShubetsuCode = $(this).parents('td').find("#cse_value").attr("name");
	                    $(form).children(":hidden[name='bs']").attr("value", serviceShubetsuCode);

    	                //地図印刷の場合、別ブラウザ
	                    if ($(this).attr("class").indexOf("printMap") > -1) {
	    	                $(form).attr({target:"map"});
                    	}
	                    $(form).submit();
	                }
                } else {
                    $(form).submit();
                }
                return false;
            }
            if (cflg=="1") {
                if ($(this).attr("class").indexOf("delList") > -1) {
                    // リストから削除
                    showPopupMessage("削除対象が選択されていません。");
                } else if ($(this).attr("class").indexOf("delKskList") > -1) {
                    // リストから削除(検索条件)
                    showPopupMessage("削除対象が選択されていません。");
                } else if ($(this).attr("class").indexOf("syosai_diff") > -1) {
                    // 詳細比較
                    showPopupMessage("比較対象が選択されていません。");
                } else {
                    // 資料請求系
                    var warnMessage = "";
                    if ($(this).attr("class").indexOf("shiryoSeikyu") > -1) {
                        //資料請求する
                        warnMessage = "資料請求対象が選択されていません。";
                    }
                    if ($(this).attr("class").indexOf("sateiIrai") > -1) {
                        //査定依頼する
                        warnMessage = "査定依頼対象が選択されていません。";
                    }
                    if ($(this).attr("class").indexOf("catalogSeikyu") > -1) {
                        //カタログ請求する
                        warnMessage = "カタログ請求対象が選択されていません。";
                    } if ($(this).attr("class").indexOf("mitsumoriIrai") > -1) {
                        //見積依頼する
                        warnMessage = "見積依頼対象が選択されていません。";
                    }
                    if ($(this).attr("class").indexOf("printMap") > -1) {
                        //地図印刷を表示する
                        warnMessage = "地図印刷対象が選択されていません。";
                    }

                    showPopupMessage(warnMessage);
                }
                return false;
            }
            if (cflg=="2") {
                if ($(this).attr("class").indexOf("delList") > -1) {
                    // リストから削除
                    showPopupMessage("異なる種別の対象が選択されています。");
                } else if ($(this).attr("class").indexOf("delKskList") > -1) {
                    // リストから削除(検索条件)
                    showPopupMessage("異なる種別の対象が選択されています。");
                } else if ($(this).attr("class").indexOf("syosai_diff") > -1) {
                    // 詳細比較
                    showPopupMessage("異なる種別の対象が選択されています。");
                } else {
                    // 資料請求
                    showPopupMessage("異なる種別の対象が選択されています。");
                }
                return false;
            }
        });
    }

    //隠すまでの時間（msec）
    var hidePopupSec = 1800;

    //隠すためのタイムアウト識別
    var hidePopupTimeout = null;

    function showPopupMessage(message){
        // メッセージ表示ポップアップ(LightBox)
        var popupLightBox = $(".alert_table");
        // メッセージ表示エリア
        var messageArea = popupLightBox.find("span");

        clearTimeout(hidePopupTimeout);

        // メッセージ表示エリアにメッセージを設定
        messageArea.html(message);
        // メッセージ表示ポップアップを表示する
        popupLightBox.show();

        //指定時間後にメッセージ表示ポップアップを非表示にする
        hidePopupTimeout = setTimeout(function(){hidePopupMessage();}, hidePopupSec);
    }

    function hidePopupMessage(){
        clearTimeout(hidePopupTimeout);
        // メッセージ表示ポップアップ(LightBox)
        var popupLightBox = $(".alert_table");
        popupLightBox.hide();
    }

    //デフォルトオプション
    $.fn.clip_before_check.defaults = {
    };

})(jQuery);

