Edit in JSFiddle

$(".calendar-container").focus(function(){
    $(this).toggleClass("focused", true);
}).blur(function(){
    $(this).toggleClass("focused", false);
}).click(function(e){
    $(this).toggleClass("focused", true);
});

// I'm having a stupid moment here, this doesn't work at all
$(":not(.calendar-container *, x-calendar *)").on("touchend", function(e){
    console.log(e);
    $container = $(".calendar-container");
    if ($container.hasClass("focused")) {
        $container.toggleClass("focused", false)
    }
});


//Aug 30, 2013
// Remember Brick datepicker august 30 to oct bug
var options = {
    valueNames: ["title", "description", "location", "town", "url", "phone", "start_date", "end_date"],
    item: '<li class="event-item"><div class="event-container">\
                <div class="event-info">\
                    <h3 class="title"></h3>\
                    <span class="location"></span>, \
                    <span class="town"></span>\
                    <div>\
                        <span class="start_date"></span>\
                        to:\
                        <span class="end_date"></span>\
                    </div>\
                    <div class="phone"></div>\
                    <summary class="description"></summary>\
                </div>\
                <a class="url"><button class="more-info">more info</button></a>\
                <div class="clear"></div>\
            </div></li>'
};

var values = [{
    title: "Fake Event",
    description: 'From an ancient "wandering star" to a modern day celestial laboratory, Saturn tantalizes the eye, spirit and mind. This ringed wonder has been explored with telescopes, flyby probes and now the orbiting Cassini spacecraft. Ongoing.',
    location: "Newark Museum",
    town: "Newark",
    url: "http://www.newarkmuseum.org/",
    phone: "973-596-6550",
    start_date: new Date("Sep 05, 2013"),
    end_date: new Date("Sep 08, 2013")
}, {
    title: "Job Readiness Program & Career Quest",
    description: 'Ongoing program that assists women to become "job ready," and successfully find employment. Meet with a professional and receive guidance in goal setting, career planning, resume writing, interview techniques, and job search strategies. For information or to register call 973-994-4994 or www.centerforwomenNJ.org',
    location: "NCJW Center for Women",
    town: "Livingston",
    url: "http://www.centerforwomennj.org/",
    phone: "973-994-4994",
    start_date: new Date("Jul 01, 2013"),
    end_date: new Date("Sep 30, 2013")
}, {
    title: "Job Readiness Program & Career Quest",
    description: 'Ongoing program that assists women to become "job ready," and successfully find employment. Meet with a professional and receive guidance in goal setting, career planning, resume writing, interview techniques, and job search strategies. For information or to register call 973-994-4994 or www.centerforwomenNJ.org',
    location: "NCJW Center for Women",
    town: "Livingston",
    url: "http://www.centerforwomennj.org/",
    phone: "973-994-4994",
    start_date: new Date("Jul 01, 2013"),
    end_date: new Date("Sep 30, 2013")
}, {
    title: "SATURN: Exploring a Celestial Wonder",
    description: 'From an ancient "wandering star" to a modern day celestial laboratory, Saturn tantalizes the eye, spirit and mind. This ringed wonder has been explored with telescopes, flyby probes and now the orbiting Cassini spacecraft. Ongoing.',
    location: "Newark Museum",
    town: "Montclair",
    url: "http://www.newarkmuseum.org/",
    phone: "973-596-6550",
    start_date: new Date("Aug 30, 2013"),
    end_date: new Date("Sep 30, 2013")
}];


var eventList = window.eventList = new List('event-list', options, values);

function filterByValues(filterItems) {
    //this really needs to be refactored
    filterItems.towns = filterItems.towns === null ? [] : filterItems.towns;
    filterItems.days = filterItems.days === null ? [] : filterItems.days;
    if (filterItems.towns.length === 0 && filterItems.days.length === 0) {
        eventList.filter();
    } else if (filterItems.towns.length > 0 && filterItems.days.length === 0) {
        eventList.filter(function (item) {
            var values = item.values();
            for (var i in filterItems.towns) {
                if (values.town === filterItems.towns[i]) {
                    return true;
                }
            }
            return false;
        });
    } else if (filterItems.days.length > 0 && filterItems.towns.length === 0) {
        eventList.filter(function (item) {
            var values = item.values();
            for (var i in filterItems.days) {
                //This is still a little janky
                if (filterDate(filterItems, values, i)) {
                    return true;
                }
            }
            return false;
        });
    } else {
        eventList.filter(function (item) {
            var values = item.values();
            for (var town in filterItems.towns) {
                for (var day in filterItems.days) {
                    if (values.town === filterItems.towns[town] && filterDate(filterItems, values, day)) {
                        return true;
                    }
                }
            }
            return false;
        });
    }
}

var selected = {
    towns: [],
    days: []
};

function filterDate(filterItems, values, i){
    if (filterItems.days[i] instanceof Date) {
        if (values.start_date <= filterItems.days[i] && filterItems.days[i] <= values.end_date) {
            //console.log("Date matched", filterItems.days[i]);
            return true;
        }
    } else if (filterItems.days[i] instanceof Array) {
        if (values.start_date <= filterItems.days[i][0] && filterItems.days[i][0] <= values.end_date ||
            values.start_date <= filterItems.days[i][1] && filterItems.days[i][1] <= values.end_date) {
            //console.log("Array range matched", filterItems.days[i]);
            return true;
        }
    } else {
        return false;
    }
}

function townUpdate(e, obj) {
    if (obj === undefined) {
        selected.towns = $(e.target).val();
        filterByValues(selected);
    } else if (obj.selected !== undefined) {
        selected.towns.push(obj.selected);
        filterByValues(selected);
    } else if (obj.deselected !== undefined) {
        selected.towns = _.without(selected.towns, obj.deselected);
        filterByValues(selected);
    }
}

re = /\d{1,4}-\d{1,2}-\d{1,2}/
function dateFromIso (isoString) {
    if (!re.test(isoString)) throw new Error("Bad date");
    var args = isoString.split("-");
    return new Date(+args[0], +args[1]-1, args[2]);
}
$(".date-picker").on("datetoggleon", function(e){
    selected.days.push(dateFromIso(e.originalEvent.detail.iso));
    //console.log("Push", selected.days);
    filterByValues(selected);
}).on("datetoggleoff", function(e){
    selected.days = _.without(selected.days, dateFromIso(e.originalEvent.detail.iso));
    //console.log("Pop", selected.days);
    filterByValues(selected);
});

$(".chosen-select.towns").on("chosen:ready", function (e, obj) {
    this.removeChild(this.firstElementChild);
}).chosen({
    display_disabled_options: false
}).change(townUpdate).trigger("chosen:updated");

// Some underscore methods to make my life easier
var ArrayProto = Array.prototype,
    concat = ArrayProto.concat,
    slice = ArrayProto.slice,
    each = ArrayProto.each,
    nativeFilter = ArrayProto.filter,
    nativeIndexOf = ArrayProto.indexOf,
    _ = {};

_.without = function (array) {
    return _.difference(array, slice.call(arguments, 1));
};

//This is modified for dates
_.difference = function (array) {
    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
    return _.filter(array, function (value) {
        if (value instanceof Date) {
            for (var i in rest) {
                if (+rest[i] === +value) {
                    return false;
                }
            }
            return true;
        } else {
            return !_.contains(rest, value);
        }
    });
};

_.filter = function (obj, iterator, context) {
    var results = [];
    if (obj == null) return results;
    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
    each(obj, function (value, index, list) {
        if (iterator.call(context, value, index, list)) results.push(value);
    });
    return results;
};

_.contains = function (obj, target) {
    if (obj == null) return false;
    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
    return any(obj, function (value) {
        return value === target;
    });
};
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<div class="container">
    <select data-placeholder="Choose a town..." multiple class="chosen-select towns" tabindex="1">
        <option value='' disabled selected style='display:none;'>Choose a town...</option>
        <option>Belleville</option>
        <option>Bloomfield</option>
        <optgroup label="The Caldwells">
            <option>Caldwell</option>
            <option>North Caldwell</option>
            <option>West Caldwell</option>
        </optgroup>
        <option>Cedar Grove</option>
        <option>Essex Fells</option>
        <option>Fairfield</option>
        <option>Glen Ridge</option>
        <option>Irvington</option>
        <option>Livingston</option>
        <option>Maplewood</option>
        <option>Millburn</option>
        <option>Montclair</option>
        <option>Newark</option>
        <option>Nutley</option>
        <optgroup label="The Oranges">
            <option>East Orange</option>
            <option>Orange</option>
            <option>West Orange</option>
            <option>South Orange</option>
        </optgroup>
        <option>Roseland</option>
        <option>Verona</option>
    </select>
    <div class="calendar-container" tabindex="2">
        <span class="placeholder">Choose a date...</span>
        <x-calendar class="date-picker" controls multiple></x-calendar>
    </div>
    <div id="event-list">
        <ul class="list"></ul>
    </div>
</div>
body {
    margin: 10px;
    font-family: sans-serif;
    background-color: white;
    font-size: 18px;
    min-width: 300px;
}
.container {
    position: relative;
    width: 590px;
    width: 33em;
    margin: 0 auto;
}
.chosen-select, .chosen-container {
    width: 49.5% !important;
}
.calendar-container {
    position: relative;
    display: inline-block;
    font-size: 13px;
    width: 49%;
    height: 27px;
    outline: 1px solid #aaa;
}
.calendar-container .placeholder {
    color: #666;
    margin: 1px 0;
    padding: 5px;
    height: 15px;
}
.calendar-container .date-picker {
    margin: 0 auto;
    position: absolute;
    left: 0;
    right: 0;    
}
.calendar-container.focused .date-picker {
    border: 1px solid #5897FB;
}
.calendar-container.focused {
    outline: none;
}
/*.calendar-container[focused="false"] .date-picker, 
.calendar-container[focused="true"] .placeholder {
    display: none;
}
.calendar-container[focused="true"] .date-picker, 
.calendar-container[focused="false"] .placeholder {
    display: inline-block;
}*/
.calendar-container .date-picker 
/*.calendar-container.focused .placeholder*/ {
    display: none;
}
.calendar-container.focused .date-picker, 
.calendar-container .placeholder {
    display: inline-block;
}

.start_date, .end_date {
    text-decoration: underline;
}
/*
#event-list {
    width: 590px;
    width: 33em;
}
*/
 .title {
    margin: 0.2em 0;
    color: #007dc5;
    font-weight: 300;
}
.clear {
    clear: both;
}
.event-item {
    padding: 0.35em 1em 0.65em;
    margin: 1em 0;
    list-style: none;
    background-color: #e6e7e8;
    color: #231f20;
    font-weight: 100;
}
.list {
    padding-left: 0;
}
.event-info {
    float: left;
    width: 75%;
}
.more-info {
    font-size: 24px;
    font-weight: 600;
    text-align: center;
    margin-top: 4px;
    width: 4.1em;
    float: right;
    border: 0;
    line-height: normal;
    padding: 9px 14px 9px;
    /* This seems to be jittery when the page reflows */
    padding: 0.375em 0.583em;
    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    border-radius: 6px;
    background-color: hsl(201, 100%, 30%) !important;
    background-repeat: repeat-x;
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#00a5ff", endColorstr="#006399");
    background-image: -khtml-gradient(linear, left top, left bottom, from(#00a5ff), to(#006399));
    background-image: -moz-linear-gradient(top, #00a5ff, #006399);
    background-image: -ms-linear-gradient(top, #00a5ff, #006399);
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #00a5ff), color-stop(100%, #006399));
    background-image: -webkit-linear-gradient(top, #00a5ff, #006399);
    background-image: -o-linear-gradient(top, #00a5ff, #006399);
    background-image: linear-gradient(#00a5ff, #006399);
    border-color: #006399 #006399 hsl(201, 100%, 25%);
    color: #fff !important;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.33);
    -webkit-font-smoothing: antialiased;
}
@media only screen and (max-width : 620px) {
    .container {
        width: 98%;
        font-size: 15px;
    }
    .more-info {
        font-size: 18px;
    }
    .chosen-select, .chosen-container {
        width: 49.4% !important;
    }
    .calendar-container {
        top: 1px;
    }
}
@media only screen and (max-width : 365px) {
    .more-info {
        font-size: 16px;
        width: 4.1em;
        padding: 0.5em 0.6em;
    }
    .chosen-select, .chosen-container, .calendar-container {
        width: 100% !important;
        margin-top: 0.25em;
        font-size: 16px;
    }
}