﻿/// <reference name="MicrosoftAjax.js" />
/// <reference path="Harrison.js" />

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Namespace declarations
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Harrison.Telerik.RadComboBoxManager = {};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
Description:    Called when user presses a key while the cursor is in a RadComboBox.
*/
Harrison.Telerik.RadComboBoxManager.OnClientKeyPressing = function(sender, e) {
    var enterKey = 13;
    var tabKey = 9;

    if (e.get_domEvent().keyCode != tabKey && e.get_domEvent().keyCode != enterKey && !sender.get_dropDownVisible()) { sender.showDropDown(); }
}

/*
Description:    Called when dropdownn is opening.
*/
Harrison.Telerik.RadComboBoxManager.OnClientDropDownOpening = function(sender, e) {
    if (sender.get_items().get_count() == 0)
        e.set_cancel(true);
}

/*
Description:    Called when user changes text of RadComboBox and leaves the control.
*/
Harrison.Telerik.RadComboBoxManager.OnClientTextChange = function(sender, e) {
    //var item = sender.findItemByText(sender.get_text());
    var item = Harrison.Telerik.RadComboBoxManager.FindItemByText(sender, sender.get_text());
    
    if (item != null) {
        sender.set_value(item.get_value());
        sender.set_text(item.get_text());
    }
}

/*
Description:    Called when user changes text of RadComboBox and leaves the control.  Used for dropdowns that DO NOT ALLOW custom values.
*/
Harrison.Telerik.RadComboBoxManager.OnClientTextChange_NoCustomText = function(sender, e) {
    //var item = sender.findItemByText(sender.get_text());
    var item = Harrison.Telerik.RadComboBoxManager.FindItemByText(sender, sender.get_text());
    if (item != null) {
        sender.set_value(item.get_value());
        sender.set_text(item.get_text());
    }
    else {
        sender.set_value("");
        sender.set_text("");
    }
}

/*
Description:    Called when control gets focus.  Used to automatically show the dropdown panel on focus.
*/
Harrison.Telerik.RadComboBoxManager.OnClientFocus_ShowDropDown = function(sender) {
    sender.showDropDown();
}

Harrison.Telerik.RadComboBoxManager.FindItemByText = function(sender, text) {
    var items = sender.get_items();
    var itemsCount = items.get_count();

    for (var i = 0; i < itemsCount; i++) {
        var item = items.getItem(i);
        if (item.get_text().toLowerCase() == text.toLowerCase()) {
            return item;
        }
    }
    return null;
}
