﻿function initComboExtensions() {
    //extend radCombobox class
    Telerik.Web.UI.RadComboBox.prototype.onDataBound = null;
    Telerik.Web.UI.RadComboBox.prototype.nrOfComboItems = 0;
    Telerik.Web.UI.RadComboBox.prototype.lastRequestFilter = "";
}
function OnClientDropDownOpening(sender, eventArgs) {
    var comboText = sender.get_text();
    if (comboText != sender.lastRequestFilter)
        sender.requestItems(comboText);
}
function OnClientItemsRequesting(sender, eventArgs) {
    sender.lastRequestFilter = sender.get_text();
}
function OnClientItemsRequested(sender, eventArgs) {
    var cbbox = $find(sender._uniqueId);
    if (cbbox.onDataBound != null) {
        var ulList = $(sender._uniqueId + "_DropDown").getElementsByClassName("rcbList")[0];
        var liElements = ulList.childElements();
        var items = sender.get_items();

        var startPos = 0;

        //if there is no <span> in the first <li> then it's a new list
        if (liElements[0].childElements().length == 0)
            startPos = 0;
        else
            startPos = cbbox.nrOfComboItems-1;

        var dataItem;
        var dropDownLine;
        for (var index = startPos; index < liElements.length; ++index) {
            dataItem = items.getItem(index);
            if (dataItem != null) {
                dropDownLine = liElements[index];
                cbbox.onDataBound(dataItem, dropDownLine);
            }
        }
        cbbox.nrOfComboItems = liElements.length;
        cbbox.lastRequestFilter = "";
    }
}
