﻿/// <reference path="../Jquery/jquery-vsdoc.js" />

(function($) {

    //默认行业类别的初始化
    $.fn.loadDefaultTradeType = function(options) {
        var opts = {
            showDefaultStr: "选择行业类别",
            defaultLayerId: "layerTypeTrade",
            canSelectCountId: "canSelectCountTrade",
            selectAllTypeId: "selectAllTypeTrade",
            itemsId: "typeItemsTrade",
            itemPrefixId: "typeItemTrade_",
            preViewItemsId: "preViewItemsTrade",
            okId: "typeOkTrade",
            cancelId: "typeCancelTrade"
        }
        opts = $.extend({}, opts, options);
        $.fn.loadItems(opts);
    };

    //默认职位类别的初始化
    $.fn.loadDefaultPosType = function(options) {
        var opts = {
            showDefaultStr: "选择职位类别",
            defaultLayerId: "layerTypePos",
            canSelectCountId: "canSelectCountPos",
            selectId: "typeSelectPos",
            selectAllTypeId: "selectAllTypePos",
            itemsId: "typeItemsPos",
            itemPrefixId: "typeItemPos_",
            preViewItemsId: "preViewItemsPos",
            okId: "typeOkPos",
            cancelId: "typeCancelPos"
        }
        opts = $.extend({}, opts, options);
        $.fn.loadItems(opts);
    };

    //默认地区类别的初始化
    $.fn.loadDefaultAreaType = function(options) {
        var opts = {
            showDefaultStr: "选择地区",
            defaultLayerId: "layerTypeArea",
            canSelectCountId: "canSelectCountArea",
            selectId: "typeSelectArea",
            selectAllTypeId: "selectAllTypeArea",
            itemsId: "typeItemsArea",
            itemPrefixId: "typeItemArea_",
            preViewItemsId: "preViewItemsArea",
            okId: "typeOkArea",
            cancelId: "typeCancelArea"
        }
        opts = $.extend({}, opts, options);
        $.fn.loadItems(opts);
    };

    // 插件的定义
    $.fn.loadItems = function(options) {

        var opts = $.extend({}, $.fn.loadItems.defaults, options, { selectedCount: 0 });
 
        //显示选择层
        $.blockUI({
            message: $("#" + opts.defaultLayerId)
        });

        //初始化
        $("#" + opts.itemsId + " :checked, #" + opts.itemsId + " :disabled").attr("checked", false).attr("disabled", false);

        //显示可选择的数量
        $("#" + opts.canSelectCountId).text(opts.canSelectCount);

        //是否显示选择不限按钮
        if (opts.isShowSelectAllType) {
            $("#" + opts.selectAllTypeId).parent().show();
        }
        else {
            $("#" + opts.selectAllTypeId).parent().hide();
        }

        //加载数据
        var itemList = $("#" + opts.valueId).val().split(',');
        $("#" + opts.itemsId + " :checkbox").each(function(itemIndex, itemValue) {
            $(itemList).each(function(index, value) {
                if ($(itemValue).val() == value) {
                    $(itemValue).attr("checked", true);
                }
            });
        });

        //显示到预览
        showPreItem(opts);

        //        var isBindEvent = $("#" + opts.defaultLayerId).data("bindEvent") == "true" ? true : false;

        //        //绑定事件操作
        //        if (!isBindEvent) {

        //为选择框绑定事件
        $("#" + opts.itemsId + " :checkbox").each(function() {
            var thisItem = $(this);
            thisItem.unbind("click");
            thisItem.bind("click", function() {
                //判断是否是大类全选
                if (thisItem.attr("name") == opts.allSelectName) {
                    var checkFlag = thisItem.prop("checked");
                    $("#" + opts.itemPrefixId + thisItem.val()).find("ul :checkbox").each(function() {
                        $(this).attr("checked", false).attr("disabled", checkFlag);
                    });
                }
                var checkItemList = $("#" + opts.itemsId + " :checked");
                //判断选择的项是是否大于可选择数
                if (opts.selectedCount >= opts.canSelectCount && checkItemList.length > opts.canSelectCount) {
                    thisItem.attr("checked", false);   //大于，同时将刚刚选择的项取消选中
                    alert("最多只能选择" + opts.canSelectCount + "项！");
                    return false;
                }
                showPreItem(opts);
            });
        });

        //取消层的绑定
        $("#" + opts.selectId).unbind("change");

        //选择层
        $("#" + opts.selectId).change(function() {
            var value = $(this).val();
            $(this).children().each(function() {
                var thisvalue = $(this).val();
                if (thisvalue == value)
                    $("#" + opts.itemPrefixId + thisvalue).show();
                else
                    $("#" + opts.itemPrefixId + thisvalue).hide();
            });
        });

        //取消绑定
        $("#" + opts.selectAllTypeId).unbind("click");
        //选择不限 
        $("#" + opts.selectAllTypeId).live("click", function() {
            var checkFlag = $(this).prop("checked");
            $("#" + opts.selectId).attr("disabled", checkFlag);
            $("#" + opts.itemsId + " :checkbox").attr("checked", false).attr("disabled", checkFlag);
            showPreItem(opts);
        });

        //取消选中层
        $("#" + opts.cancelId).one("click", function() {
            $.unblockUI();
        });

        //            //事件已经绑定
        //            $("#" + opts.defaultLayerId).data("bindEvent", "true")
        //        }

        //确认选择
        $("#" + opts.okId).one("click", function() {
            var showStr = "";
            var valueStr = "";
            $("#" + opts.preViewItemsId + " :checked").each(function() {
                valueStr += (valueStr != "" ? "," : "") + $(this).val();
                showStr += (showStr != "" ? "+" : "") + $.trim($(this).parent().text());
            });
            $("#" + opts.showId).val(showStr == "" ? opts.showDefaultStr : showStr);
            $("#" + opts.valueId).val(valueStr == "" ? opts.valueDefaultStr : valueStr);
            $.unblockUI();
        });
    };

    $.fn.loadItems.defaults = {
        canSelectCount: 5,   //可以选择的数量
        selectedCount: 0, //已经选择的数量
        allSelectName: "allSelect",
        showId: "",     //显示选择项Id
        showDefaultStr: "请选择",    //显示选择项默认显示的文字
        valueId: "",      //选择值的Id
        valueDefaultStr: "", //选择值的默认值
        defaultLayerId: "layerType", //默认的选择框层Id
        canSelectCountId: "canSelectCount", //显示可选择数Id
        selectId: "typeSelect", //大类选择Id
        selectAllTypeId: "selectAllType", //选择全选不限按钮Id
        isShowSelectAllType: true, //是否显示全选按钮
        itemsId: "typeItems", //所有类别的框的Id
        itemPrefixId: "typeItem_", //类别框的前缀
        preViewItemsId: "preViewItems",    //预览框Id
        okId: "typeOk", //确认按钮Id
        cancelId: "typeCancel"   //取消按钮Id

    };

    //显示操预览类别
    function showPreItem(opts) {
        var checkItemList = $("#" + opts.itemsId + " :checked ,#" + opts.selectAllTypeId + ":checked");
        var itemList = "";
        opts.selectedCount = 0;  //初始化选中项
        checkItemList.each(function(index, value) {
            itemList += "<li><label><input type='checkbox'  checked='true'  value='" + $(this).val() + "' />" + $(this).parent().text() + "</label></li>"
            opts.selectedCount++;
        });
        var items = $(itemList);
        //绑定删除事件
        items.find(" :checkbox").each(function() {
            var thisItem = $(this);
            thisItem.click(function() {
                var checkItemList = $("#" + opts.itemsId + " :checked");
                checkItemList.each(function(index, value) {
                    if ($(this).val() == thisItem.val())
                        $(this).attr("checked", false);
                });
                thisItem.parent().parent().remove();
                opts.selectedCount--;
            });
        });
        $("#" + opts.preViewItemsId).empty().append(items);
    }

})(jQuery);   



 
