function DurlingerTopFilterCombo(selector) {
    this.timeout = 200;
    this.closetimer = 0;
    this.ddmenuitem = 0;
    this.selector = selector;

    $(selector).addClass("durlTopCombo");
    $(selector).css("visibility", "visible");
    $(selector + " ul").css("width", $(selector).width() + "px");

    var mainInstance = this;
    $(selector).mouseover(function() { mainInstance.durlTopCombo_open() });
    $(selector).mouseout(function() { mainInstance.durlTopCombo_timer() });
    $(selector + " ul li").each(function() { if ($(this).attr('id')) { $(this).click(function() { mainInstance.navigateURL($(this).attr("id")); }) }; });
}

DurlingerTopFilterCombo.prototype.durlTopCombo_open = function() {
    this.durlTopCombo_canceltimer();
    this.durlTopCombo_close();
    this.ddmenuitem = $(this.selector).find('ul').eq(0).css('visibility', 'visible');
}

DurlingerTopFilterCombo.prototype.durlTopCombo_close = function(selector) {
    $(this.selector).find('ul').eq(0).css('visibility', 'hidden');
}

DurlingerTopFilterCombo.prototype.durlTopCombo_timer = function() {
    var mainInstance = this;
    this.closetimer = window.setTimeout(function() { mainInstance.durlTopCombo_close(); }, this.timeout);
}

DurlingerTopFilterCombo.prototype.durlTopCombo_canceltimer = function() {
    if (this.closetimer) {
        window.clearTimeout(this.closetimer);
        this.closetimer = null;
    }
}

DurlingerTopFilterCombo.prototype.navigateURL = function(id) {
    var url = String(document.location).toLowerCase();

    if (url.substring(url.length - 5) != '.aspx')
        url = url + 'Default.aspx';

    $.ajax({
        type: "POST",
        url: url,
        contentType: "application/json",
        cache: false,
        data: "{ CurrentURL: '" + document.location + "', BlockId: '" + id + "' }",
        dataType: "json",
        beforeSend: function(xhr) {
            xhr.setRequestHeader("DNN-Service", "true");
            xhr.setRequestHeader("DNN-ServiceMethod", "DetermineURL");
        },
        success: function(msg) {
            window.location = msg.result;
        },
        error: function(x, e) {
            if (x.status == 0) {
                alert('You are offline!!\n Please Check Your Network.');
            } else if (x.status == 404) {
                alert('Requested URL not found.');
            } else if (x.status == 500) {
                alert('Internal Server Error.');
            } else if (e == 'parsererror') {
                alert('Parsing JSON Request failed.');
            } else if (e == 'timeout') {
                alert('Request Time out.');
            } else {
                alert('Unknow Error.\n' + x.responseText);
            }
        }
    });
}

