');
});
//Save plugin data.
var pluginData = {
settings: options,
original: original,
selectedIndex: -1,
selectedItem: null,
selectedData: null
}
obj.data('ddslick', pluginData);
//Check if needs to show the select text, otherwise show selected or default selection
if (options.selectText.length > 0 && options.defaultSelectedIndex == null) {
obj.find('.dd-selected').html(options.selectText);
}
else {
var index = (options.defaultSelectedIndex != null && options.defaultSelectedIndex >= 0 && options.defaultSelectedIndex ' : '') +
(selectedData.text ? ' ' : '') +
(selectedData.description ? '' + selectedData.description + '' : '')
);
}
//Else only display text as selection
else ddSelected.html(selectedData.text);
//Updating selected option value
ddSelectedValue.val(selectedData.value);
//BONUS! Update the original element attribute with the new selection
pluginData.original.val(selectedData.value);
obj.data('ddslick', pluginData);
//Close options on selection
close(obj);
//Adjust appearence for selected option
adjustSelectedHeight(obj);
//Callback function on selection
if (typeof settings.onSelected == 'function') {
settings.onSelected.call(this, pluginData);
}
}
//Private: Close the drop down options
function open(obj) {
var $this = obj.find('.dd-select'),
ddOptions = $this.siblings('.dd-options'),
ddPointer = $this.find('.dd-pointer'),
wasOpen = ddOptions.is(':visible');
//Close all open options (multiple plugins) on the page
$('.dd-click-off-close').not(ddOptions).slideUp(50);
$('.dd-pointer').removeClass('dd-pointer-up');
if (wasOpen) {
ddOptions.slideUp('fast');
ddPointer.removeClass('dd-pointer-up');
}
else {
ddOptions.slideDown('fast');
ddPointer.addClass('dd-pointer-up');
}
//Fix text height (i.e. display title in center), if there is no description
adjustOptionsHeight(obj);
}
//Private: Close the drop down options
function close(obj) {
//Close drop down and adjust pointer direction
obj.find('.dd-options').slideUp(50);
obj.find('.dd-pointer').removeClass('dd-pointer-up').removeClass('dd-pointer-up');
}
//Private: Adjust appearence for selected option (move title to middle), when no desripction
function adjustSelectedHeight(obj) {
//Get height of dd-selected
var lSHeight = obj.find('.dd-select').css('height');
//Check if there is selected description
var descriptionSelected = obj.find('.dd-selected-description');
var imgSelected = obj.find('.dd-selected-image');
if (descriptionSelected.length 0) {
obj.find('.dd-selected-text').css('lineHeight', lSHeight);
}
}
//Private: Adjust appearence for drop down options (move title to middle), when no desripction
function adjustOptionsHeight(obj) {
obj.find('.dd-option').each(function () {
var $this = $(this);
var lOHeight = $this.css('height');
var descriptionOption = $this.find('.dd-option-description');
var imgOption = obj.find('.dd-option-image');
if (descriptionOption.length 0) {
$this.find('.dd-option-text').css('lineHeight', lOHeight);
}
});
}
})(jQuery);