﻿$(document).ready(function() {
    //set the check all and uncheck all link clicks
    $("#AllFilters1 a.chk-all").click(featureClick);
    $("#AllFilters1 a.unchk-all").click(featureClick);

    $("#AllFilters1 div[cat='true']").each(function() {
        var wid = $("li", $(this)).length > 10 ? "400px" : "300px";
        $(this).dialog({
            width: wid,
            bgiframe: true,
            modal: true,
            closeOnEscape: true,
            draggable: false,
            resizable: false,
            autoOpen: false,
            dialogClass: "popup",
            buttons: {
                "Update": function() {
                    var id = $(this).attr("id");
                    $("input:checkbox", $(this)).each(function() {
                        $("input:checkbox", $("#filter a[tab=" + id + "]").parent("div")).filter("[value=" + $(this).val() + "]").attr("checked", $(this).attr("checked"));
                    });

                    $(this).dialog("close");
                    updateSearch();
                }
            },
            beforeclose: function(event, ui) {
                var id = $(this).attr("id");
                $("input:checkbox", $(this)).each(function() {
                    $("input:checkbox", $("#filter a[tab=" + id + "]").parent("div")).filter("[value=" + $(this).val() + "]").attr("checked", $(this).attr("checked"));
                });
            }

        });
    });
    //set the class of button created in dialog

    $("#btnUpd", $("#filter")).bind("click", updateSearch);
    $("#reset").bind("click", Reset);
    $("div[cat='true']").parent("div").find("Button").val('').text('').addClass("updateSch").addClass("floatLf");

    $(".readmore", $("#filter")).bind("click", function() {
        var div = $(this).parent("div");
        var tab = $(this).attr("tab");
        $("input:checkbox", div).each(function() {
            $("input:checkbox", "#" + tab).filter("[value=" + $(this).val() + "]").attr("checked", $(this).attr("checked"));
        });

        $("#" + $(this).attr("tab")).dialog('open');
        return false;
    });

    if (typeof (bindMap) == 'function') {
        bindMap();
    }
    ConfigureEvtGrdLinks("flist");
    ConfigureDatePicker("filter");
});

function featureClick() {
    var IsSelect = $(this).hasClass("chk-all");
    var parentDiv = $(this).parent("div");
    if (IsSelect) {
        $("input[type=checkbox]", parentDiv).attr("checked", "true");
    }
    else {
        $("input[type=checkbox]", parentDiv).removeAttr("checked");
    }
}

function updateSearch(currpageUrl) {
    //loop through each filter type
    var filter = '';
    var subfitler = '';
    //match the checkboxes

    $(".readmore", "#filter").parent("div").each(function() {
        var tab = $(".readmore", $(this)).attr("tab");
        $("input:checkbox", $(this)).each(function() {
            $("input:checkbox", $("#" + tab)).filter("[value=" + $(this).val() + "]").attr("checked", $(this).attr("checked"));
        });
    });

    //criteria filter
    $("#Criteria").each(function() {
        $("input:checkbox[checked=true]", $(this)).each(function() {
            if (subfitler == "") {
                subfitler = $(this).val();
            }
            else {
                subfitler += "," + $(this).val();
            }
        });
    });
    if (subfitler != '') {
        filter += "&ctas=" + subfitler;
    }

    //category filter
    subfitler = '';
    $("#Category").each(function() {
        $("input:checkbox[checked=true]", $(this)).each(function() {
            if (subfitler == "") {
                subfitler = $(this).val();
            }
            else {
                subfitler += "," + $(this).val();
            }
        });
    });
    if (subfitler != '') {
        filter += "&cats=" + subfitler;
    }

    //region filter
    subfitler = '';
    $("#Region").each(function() {
        $("input:checkbox[checked=true]", $(this)).each(function() {
            if (subfitler == "") {
                subfitler = $(this).val();
            }
            else
                subfitler += "," + $(this).val();
        });
    });
    if (subfitler != '')
        filter += "&regs=" + subfitler;

    //date filter
    if ($("#filter #startDate").val() != '')
        filter += "&date=" + $("#filter #startDate").val();
    if ($("#filter #endDate").val() != '')
        filter += "-" + $("#filter #endDate").val();

    //date filter
    if ($("#filter #keyword").val() != '')
        filter += "&keyword=" + $("#filter #keyword").val();

    var baseurl = $(document).attr("location");
    baseurl = baseurl.href.split("?")[0];
    //alert(baseurl);
    if (IsMicroSite("LAArtsMonthSite")) {
        baseurl += "laartsmonth/";
    }
    baseurl += "?";
    //alert(baseurl);
    if (!IsEmpty(currpageUrl)) {
        if (typeof (currpageUrl) == 'string') {
            baseurl = currpageUrl;
        }
    }

    //load search result       
    var filterurl = baseurl + filter + "&tab=fresults&tabonly=true";
    filterurl = encodeURI(filterurl);
    //alert(filterurl);

    $("#flist").load(filterurl + "&x=" + (new Date()).getTime() + " #flist", null, function() {
        if (typeof (bindMap) == 'function') {
            bindMap();
        }
        ConfigureEvtGrdLinks("flist");
        ConfTripLinks();
        var k = $('#keyword').val(); if (k.length > 0) { HighlightKeywords([k]); }
    });
}

function ConfigureEvtGrdLinks(gridId) {
    var list = "list";
    if (!IsEmpty(gridId)) {
        list = gridId;
    }

    $(".Paging", $("#" + gridId)).each(function() {
        var cPager = $(this);
        $("a", cPager).filter("[href]").bind("click", function() {
            var div = $("<div></div>");
            // $("a.Pages", $("#divPager")).detach();
            //  alert($(this).attr("PageNum"));
            updateSearch($(this).attr("href"));
            return false;
        });
    });

    DisableEmptyLinks($("#" + gridId));
}

function DisableEmptyLinks(container) {
    $("a", container).filter("[href=''],[href=null]").each(function() {
        $(this).attr("disabled", true);
        $(this).removeAttr("href");
        $(this).css("color", "gray");
    });
    $("img[Src=''][eventImg='true']", container).attr("src", "/images/Thumbnails/eventImg.jpg");
}

function ConfigureDatePicker(gridId) {
    $("#startDate").datepicker({ showOn: 'button',
        buttonImage: '/images/icons/calendar.png',
        buttonImageOnly: true,
        minDate: new Date(),
        onSelect: function(dateText, inst) {
            var curr = $(this).datepicker('getDate');
            var endDate = $("#endDate").datepicker('getDate');
            if (endDate < curr)
                $("#endDate").datepicker('setDate', curr);
            $("#endDate").datepicker('option', 'minDate', curr);
        }
    });
    $("#endDate").datepicker({
        showOn: 'button',
        buttonImage: '/images/icons/calendar.png',
        buttonImageOnly: true,
        minDate: new Date()
    });

    $("#ui-datepicker-div").hide();
}

function HighlightKeywords(keywords) {
    var el = $("#divfGrid");
    $(keywords).each(function() {
        var pattern = new RegExp(">([^<]+)?(" + this + ")([^>]+)?<", ["gi"]);
        var rs = ">$1<span style='background-color:#FFFF00;font-weight: bold;background-color: #FFFF00;'>$2</span>$3<";
        var content = "" + el.html();
        el.html(content.replace(pattern, rs));
    });
}

function Reset() {
    //reset checkboxes
    $(".readmore", "#filter").parent("div").each(function() {
        if ($(this).css("display") != 'none') {
            var tab = $(".readmore", $(this)).attr("tab");
            $("input:checkbox", $(this)).removeAttr("checked");
            $("input:checkbox", $("#" + tab)).removeAttr("checked");
        }
    });

    $("#keyword").val('');
    $("#filter #startDate").val('');
    $("#filter #endDate").val('');
}
