diff --git a/resources/library/search/Google Images.wgs/config.xml b/resources/library/search/Google images.wgs/config.xml similarity index 100% rename from resources/library/search/Google Images.wgs/config.xml rename to resources/library/search/Google images.wgs/config.xml diff --git a/resources/library/search/Google Images.wgs/css/basic.css b/resources/library/search/Google images.wgs/css/basic.css similarity index 99% rename from resources/library/search/Google Images.wgs/css/basic.css rename to resources/library/search/Google images.wgs/css/basic.css index a7b9c925..2bf0a750 100644 --- a/resources/library/search/Google Images.wgs/css/basic.css +++ b/resources/library/search/Google images.wgs/css/basic.css @@ -11,7 +11,7 @@ a { } .disclaimer{ - height: 60px; + height: auto; position: fixed; left: 0; bottom: 0; @@ -28,6 +28,7 @@ a { border: solid 4px #EEEEEE; border-bottom: none; z-index: 10; + font-size: 12px; } #searchResult { diff --git a/resources/library/search/Google Images.wgs/icon.png b/resources/library/search/Google images.wgs/icon.png similarity index 100% rename from resources/library/search/Google Images.wgs/icon.png rename to resources/library/search/Google images.wgs/icon.png diff --git a/resources/library/search/Google Images.wgs/icon.thumbnail.png b/resources/library/search/Google images.wgs/icon.thumbnail.png similarity index 100% rename from resources/library/search/Google Images.wgs/icon.thumbnail.png rename to resources/library/search/Google images.wgs/icon.thumbnail.png diff --git a/resources/library/search/Google Images.wgs/images/down.png b/resources/library/search/Google images.wgs/images/down.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/down.png rename to resources/library/search/Google images.wgs/images/down.png diff --git a/resources/library/search/Google Images.wgs/images/greySquare.png b/resources/library/search/Google images.wgs/images/greySquare.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/greySquare.png rename to resources/library/search/Google images.wgs/images/greySquare.png diff --git a/resources/library/search/Google Images.wgs/images/icon-close.png b/resources/library/search/Google images.wgs/images/icon-close.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/icon-close.png rename to resources/library/search/Google images.wgs/images/icon-close.png diff --git a/resources/library/search/Google Images.wgs/images/popupBack.png b/resources/library/search/Google images.wgs/images/popupBack.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/popupBack.png rename to resources/library/search/Google images.wgs/images/popupBack.png diff --git a/resources/library/search/Google Images.wgs/images/search.png b/resources/library/search/Google images.wgs/images/search.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/search.png rename to resources/library/search/Google images.wgs/images/search.png diff --git a/resources/library/search/Google Images.wgs/images/search_app.png b/resources/library/search/Google images.wgs/images/search_app.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/search_app.png rename to resources/library/search/Google images.wgs/images/search_app.png diff --git a/resources/library/search/Google Images.wgs/images/trgDown.png b/resources/library/search/Google images.wgs/images/trgDown.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/trgDown.png rename to resources/library/search/Google images.wgs/images/trgDown.png diff --git a/resources/library/search/Google Images.wgs/images/trgUp.png b/resources/library/search/Google images.wgs/images/trgUp.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/trgUp.png rename to resources/library/search/Google images.wgs/images/trgUp.png diff --git a/resources/library/search/Google Images.wgs/images/up.png b/resources/library/search/Google images.wgs/images/up.png similarity index 100% rename from resources/library/search/Google Images.wgs/images/up.png rename to resources/library/search/Google images.wgs/images/up.png diff --git a/resources/library/search/Google Images.wgs/index.html b/resources/library/search/Google images.wgs/index.html similarity index 99% rename from resources/library/search/Google Images.wgs/index.html rename to resources/library/search/Google images.wgs/index.html index fe38351e..87e2409c 100644 --- a/resources/library/search/Google Images.wgs/index.html +++ b/resources/library/search/Google images.wgs/index.html @@ -7,7 +7,7 @@ <script type="text/javascript" src="locales/locales.js"></script> <script type="text/javascript" src="http://www.google.com/uds"></script> <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script> - <script type="text/javascript" src="select/jquery.selectBox.min.js"></script> + <script type="text/javascript" src="select/jquery.selectBox.js"></script> <link type="text/css" rel="stylesheet" href="select/jquery.selectBox.css" /> <script type="text/javascript"> //begin google API diff --git a/resources/library/search/Google Images.wgs/locales/locales.js b/resources/library/search/Google images.wgs/locales/locales.js similarity index 98% rename from resources/library/search/Google Images.wgs/locales/locales.js rename to resources/library/search/Google images.wgs/locales/locales.js index 7b2da067..b48881f7 100644 --- a/resources/library/search/Google Images.wgs/locales/locales.js +++ b/resources/library/search/Google images.wgs/locales/locales.js @@ -31,7 +31,7 @@ var locales = { 'image_type_photo': 'Photo', 'image_type_clipart': 'Clipart', 'image_type_lineart': 'Lineart', - 'image_license_title': 'Image type', + 'image_license_title': 'Licence', 'image_license_reuse': 'Reuse', 'image_license_comm_reuse': 'Commercial reuse', 'image_license_modif': 'Modification', diff --git a/resources/library/search/Google Images.wgs/scripts/jquery-1.6.2.min.js b/resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js similarity index 100% rename from resources/library/search/Google Images.wgs/scripts/jquery-1.6.2.min.js rename to resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js diff --git a/resources/library/search/Google Images.wgs/select/jquery.selectBox-arrow.gif b/resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif similarity index 100% rename from resources/library/search/Google Images.wgs/select/jquery.selectBox-arrow.gif rename to resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif diff --git a/resources/library/search/Google Images.wgs/select/jquery.selectBox.css b/resources/library/search/Google images.wgs/select/jquery.selectBox.css similarity index 100% rename from resources/library/search/Google Images.wgs/select/jquery.selectBox.css rename to resources/library/search/Google images.wgs/select/jquery.selectBox.css diff --git a/resources/library/search/Google images.wgs/select/jquery.selectBox.js b/resources/library/search/Google images.wgs/select/jquery.selectBox.js new file mode 100644 index 00000000..0566fddd --- /dev/null +++ b/resources/library/search/Google images.wgs/select/jquery.selectBox.js @@ -0,0 +1,916 @@ +/* + * jQuery selectBox - A cosmetic, styleable replacement for SELECT elements + * + * Copyright 2012 Cory LaViska for A Beautiful Site, LLC. + * + * https://github.com/claviska/jquery-selectBox + * + * Licensed under both the MIT license and the GNU GPLv2 (same as jQuery: http://jquery.org/license) + * + */ +if(jQuery) (function($) { + + $.extend($.fn, { + + selectBox: function(method, data) { + + var typeTimer, + typeSearch = '', + isMac = navigator.platform.match(/mac/i); + + // + // Private methods + // + + var init = function(select, data) { + + var options; + + // Disable for iOS devices (their native controls are more suitable for a touch device) + if( navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i) ) return false; + + // Element must be a select control + if( select.tagName.toLowerCase() !== 'select' ) return false; + + select = $(select); + if( select.data('selectBox-control') ) return false; + + var control = $('<a class="selectBox" />'), + inline = select.attr('multiple') || parseInt(select.attr('size')) > 1; + + var settings = data || {}; + + control + .width(select.outerWidth()) + .addClass(select.attr('class')) + .attr('title', select.attr('title') || '') + .attr('tabindex', parseInt(select.attr('tabindex'))) + .css('display', 'inline-block') + .bind('focus.selectBox', function() { + if( this !== document.activeElement && document.body !== document.activeElement ) $(document.activeElement).blur(); + if( control.hasClass('selectBox-active') ) return; + control.addClass('selectBox-active'); + select.trigger('focus'); + }) + .bind('blur.selectBox', function() { + if( !control.hasClass('selectBox-active') ) return; + control.removeClass('selectBox-active'); + select.trigger('blur'); + }); + + if( !$(window).data('selectBox-bindings') ) { + $(window) + .data('selectBox-bindings', true) + .bind('scroll.selectBox', hideMenus) + .bind('resize.selectBox', hideMenus); + } + + if( select.attr('disabled') ) control.addClass('selectBox-disabled'); + + // Focus on control when label is clicked + select.bind('click.selectBox', function(event) { + control.focus(); + event.preventDefault(); + }); + + // Generate control + if( inline ) { + + // + // Inline controls + // + options = getOptions(select, 'inline'); + + control + .append(options) + .data('selectBox-options', options) + .addClass('selectBox-inline selectBox-menuShowing') + .bind('keydown.selectBox', function(event) { + handleKeyDown(select, event); + }) + .bind('keypress.selectBox', function(event) { + handleKeyPress(select, event); + }) + .bind('mousedown.selectBox', function(event) { + if( $(event.target).is('A.selectBox-inline') ) event.preventDefault(); + if( !control.hasClass('selectBox-focus') ) control.focus(); + }) + .insertAfter(select); + + // Auto-height based on size attribute + if( !select[0].style.height ) { + + var size = select.attr('size') ? parseInt(select.attr('size')) : 5; + + // Draw a dummy control off-screen, measure, and remove it + var tmp = control + .clone() + .removeAttr('id') + .css({ + position: 'absolute', + top: '-9999em' + }) + .show() + .appendTo('body'); + tmp.find('.selectBox-options').html('<li><a>\u00A0</a></li>'); + var optionHeight = parseInt(tmp.find('.selectBox-options A:first').html(' ').outerHeight()); + tmp.remove(); + + control.height(optionHeight * size); + + } + + disableSelection(control); + + } else { + + // + // Dropdown controls + // + var label = $('<span class="selectBox-label" />'), + arrow = $('<span class="selectBox-arrow" />'); + + // Update label + label + .attr('class', getLabelClass(select)) + .text(getLabelText(select)); + + options = getOptions(select, 'dropdown'); + options.appendTo('BODY'); + + control + .data('selectBox-options', options) + .addClass('selectBox-dropdown') + .append(label) + .append(arrow) + .bind('mousedown.selectBox', function(event) { + if( control.hasClass('selectBox-menuShowing') ) { + hideMenus(); + } else { + event.stopPropagation(); + // Webkit fix to prevent premature selection of options + options.data('selectBox-down-at-x', event.screenX).data('selectBox-down-at-y', event.screenY); + showMenu(select); + } + }) + .bind('keydown.selectBox', function(event) { + handleKeyDown(select, event); + }) + .bind('keypress.selectBox', function(event) { + handleKeyPress(select, event); + }) + .bind('open.selectBox', function(event, triggerData) { + if(triggerData && triggerData._selectBox === true) return; + showMenu(select); + }) + .bind('close.selectBox', function(event, triggerData) { + if(triggerData && triggerData._selectBox === true) return; + hideMenus(); + }) + .insertAfter(select); + + // Set label width + var labelWidth = control.width() - arrow.outerWidth() - parseInt(label.css('paddingLeft')) - parseInt(label.css('paddingLeft')); + label.width(labelWidth); + + disableSelection(control); + + } + + // Store data for later use and show the control + select + .addClass('selectBox') + .data('selectBox-control', control) + .data('selectBox-settings', settings) + .hide(); + + }; + + + var getOptions = function(select, type) { + var options; + + // Private function to handle recursion in the getOptions function. + var _getOptions = function(select, options) { + // Loop through the set in order of element children. + select.children('OPTION, OPTGROUP').each( function() { + // If the element is an option, add it to the list. + if ($(this).is('OPTION')) { + // Check for a value in the option found. + if($(this).length > 0) { + // Create an option form the found element. + generateOptions($(this), options); + } + else { + // No option information found, so add an empty. + options.append('<li>\u00A0</li>'); + } + } + else { + // If the element is an option group, add the group and call this function on it. + var optgroup = $('<li class="selectBox-optgroup" />'); + optgroup.text($(this).attr('label')); + options.append(optgroup); + options = _getOptions($(this), options); + } + }); + // Return the built strin + return options; + }; + + switch( type ) { + + case 'inline': + + options = $('<ul class="selectBox-options" />'); + options = _getOptions(select, options); + + options + .find('A') + .bind('mouseover.selectBox', function(event) { + addHover(select, $(this).parent()); + }) + .bind('mouseout.selectBox', function(event) { + removeHover(select, $(this).parent()); + }) + .bind('mousedown.selectBox', function(event) { + event.preventDefault(); // Prevent options from being "dragged" + if( !select.selectBox('control').hasClass('selectBox-active') ) select.selectBox('control').focus(); + }) + .bind('mouseup.selectBox', function(event) { + hideMenus(); + selectOption(select, $(this).parent(), event); + }); + + disableSelection(options); + + return options; + + case 'dropdown': + options = $('<ul class="selectBox-dropdown-menu selectBox-options" />'); + options = _getOptions(select, options); + + options + .data('selectBox-select', select) + .css('display', 'none') + .appendTo('BODY') + .find('A') + .bind('mousedown.selectBox', function(event) { + event.preventDefault(); // Prevent options from being "dragged" + if( event.screenX === options.data('selectBox-down-at-x') && event.screenY === options.data('selectBox-down-at-y') ) { + options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y'); + hideMenus(); + } + }) + .bind('mouseup.selectBox', function(event) { + if( event.screenX === options.data('selectBox-down-at-x') && event.screenY === options.data('selectBox-down-at-y') ) { + return; + } else { + options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y'); + } + selectOption(select, $(this).parent()); + hideMenus(); + }).bind('mouseover.selectBox', function(event) { + addHover(select, $(this).parent()); + }) + .bind('mouseout.selectBox', function(event) { + removeHover(select, $(this).parent()); + }); + + // Inherit classes for dropdown menu + var classes = select.attr('class') || ''; + if( classes !== '' ) { + classes = classes.split(' '); + for( var i in classes ) options.addClass(classes[i] + '-selectBox-dropdown-menu'); + } + + disableSelection(options); + + return options; + + } + + }; + + + var getLabelClass = function(select) { + var selected = $(select).find('OPTION:selected'); + return ('selectBox-label ' + (selected.attr('class') || '')).replace(/\s+$/, ''); + }; + + + var getLabelText = function(select) { + var selected = $(select).find('OPTION:selected'); + return selected.text() || '\u00A0'; + }; + + + var setLabel = function(select) { + select = $(select); + var control = select.data('selectBox-control'); + if( !control ) return; + control.find('.selectBox-label').attr('class', getLabelClass(select)).text(getLabelText(select)); + }; + + + var destroy = function(select) { + + select = $(select); + var control = select.data('selectBox-control'); + if( !control ) return; + var options = control.data('selectBox-options'); + + options.remove(); + control.remove(); + select + .removeClass('selectBox') + .removeData('selectBox-control').data('selectBox-control', null) + .removeData('selectBox-settings').data('selectBox-settings', null) + .show(); + + }; + + + var refresh = function(select) { + select = $(select); + select.selectBox('options', select.html()); + }; + + + var showMenu = function(select) { + + select = $(select); + var control = select.data('selectBox-control'), + settings = select.data('selectBox-settings'), + options = control.data('selectBox-options'); + if( control.hasClass('selectBox-disabled') ) return false; + + hideMenus(); + + var borderBottomWidth = isNaN(control.css('borderBottomWidth')) ? 0 : parseInt(control.css('borderBottomWidth')); + + // Menu position + options + .css('min-width', control.innerWidth()) + .css({ + top: control.offset().top + control.outerHeight() - borderBottomWidth, + left: control.offset().left + }); + + if( select.triggerHandler('beforeopen') ) return false; + var dispatchOpenEvent = function() { + select.triggerHandler('open', { _selectBox: true }); + }; + + // Show menu + switch( settings.menuTransition ) { + + case 'fade': + options.fadeIn(settings.menuSpeed, dispatchOpenEvent); + break; + + case 'slide': + options.slideDown(settings.menuSpeed, dispatchOpenEvent); + break; + + default: + options.show(settings.menuSpeed, dispatchOpenEvent); + break; + + } + + if( !settings.menuSpeed ) dispatchOpenEvent(); + + // Center on selected option + var li = options.find('.selectBox-selected:first'); + keepOptionInView(select, li, true); + addHover(select, li); + + control.addClass('selectBox-menuShowing'); + + $(document).bind('mousedown.selectBox', function(event) { + if( $(event.target).parents().andSelf().hasClass('selectBox-options') ) return; + hideMenus(); + }); + + }; + + + var hideMenus = function() { + + if( $(".selectBox-dropdown-menu:visible").length === 0 ) return; + $(document).unbind('mousedown.selectBox'); + + $(".selectBox-dropdown-menu").each( function() { + + var options = $(this), + select = options.data('selectBox-select'), + control = select.data('selectBox-control'), + settings = select.data('selectBox-settings'); + + if( select.triggerHandler('beforeclose') ) return false; + + var dispatchCloseEvent = function() { + select.triggerHandler('close', { _selectBox: true }); + }; + + switch( settings.menuTransition ) { + + case 'fade': + options.fadeOut(settings.menuSpeed, dispatchCloseEvent); + break; + + case 'slide': + options.slideUp(settings.menuSpeed, dispatchCloseEvent); + break; + + default: + options.hide(settings.menuSpeed, dispatchCloseEvent); + break; + + } + + if( !settings.menuSpeed ) dispatchCloseEvent(); + + control.removeClass('selectBox-menuShowing'); + + }); + + }; + + + var selectOption = function(select, li, event) { + + select = $(select); + li = $(li); + var control = select.data('selectBox-control'), + settings = select.data('selectBox-settings'); + + if( control.hasClass('selectBox-disabled') ) return false; + if( li.length === 0 || li.hasClass('selectBox-disabled') ) return false; + + if( select.attr('multiple') ) { + + // If event.shiftKey is true, this will select all options between li and the last li selected + if( event.shiftKey && control.data('selectBox-last-selected') ) { + + li.toggleClass('selectBox-selected'); + + var affectedOptions; + if( li.index() > control.data('selectBox-last-selected').index() ) { + affectedOptions = li.siblings().slice(control.data('selectBox-last-selected').index(), li.index()); + } else { + affectedOptions = li.siblings().slice(li.index(), control.data('selectBox-last-selected').index()); + } + + affectedOptions = affectedOptions.not('.selectBox-optgroup, .selectBox-disabled'); + + if( li.hasClass('selectBox-selected') ) { + affectedOptions.addClass('selectBox-selected'); + } else { + affectedOptions.removeClass('selectBox-selected'); + } + + } else if( (isMac && event.metaKey) || (!isMac && event.ctrlKey) ) { + li.toggleClass('selectBox-selected'); + } else { + li.siblings().removeClass('selectBox-selected'); + li.addClass('selectBox-selected'); + } + + } else { + li.siblings().removeClass('selectBox-selected'); + li.addClass('selectBox-selected'); + } + + if( control.hasClass('selectBox-dropdown') ) { + control.find('.selectBox-label').text(li.text()); + } + + // Update original control's value + var i = 0, selection = []; + if( select.attr('multiple') ) { + control.find('.selectBox-selected A').each( function() { + selection[i++] = $(this).attr('rel'); + }); + } else { + selection = li.find('A').attr('rel'); + } + + // Remember most recently selected item + control.data('selectBox-last-selected', li); + + // Change callback + if( select.val() !== selection ) { + select.val(selection); + setLabel(select); + select.trigger('change'); + } + + return true; + + }; + + + var addHover = function(select, li) { + select = $(select); + li = $(li); + var control = select.data('selectBox-control'), + options = control.data('selectBox-options'); + + options.find('.selectBox-hover').removeClass('selectBox-hover'); + li.addClass('selectBox-hover'); + }; + + + var removeHover = function(select, li) { + select = $(select); + li = $(li); + var control = select.data('selectBox-control'), + options = control.data('selectBox-options'); + options.find('.selectBox-hover').removeClass('selectBox-hover'); + }; + + + var keepOptionInView = function(select, li, center) { + + if( !li || li.length === 0 ) return; + + select = $(select); + var control = select.data('selectBox-control'), + options = control.data('selectBox-options'), + scrollBox = control.hasClass('selectBox-dropdown') ? options : options.parent(), + top = parseInt(li.offset().top - scrollBox.position().top), + bottom = parseInt(top + li.outerHeight()); + + if( center ) { + scrollBox.scrollTop( li.offset().top - scrollBox.offset().top + scrollBox.scrollTop() - (scrollBox.height() / 2) ); + } else { + if( top < 0 ) { + scrollBox.scrollTop( li.offset().top - scrollBox.offset().top + scrollBox.scrollTop() ); + } + if( bottom > scrollBox.height() ) { + scrollBox.scrollTop( (li.offset().top + li.outerHeight()) - scrollBox.offset().top + scrollBox.scrollTop() - scrollBox.height() ); + } + } + + }; + + + var handleKeyDown = function(select, event) { + + // + // Handles open/close and arrow key functionality + // + + select = $(select); + var control = select.data('selectBox-control'), + options = control.data('selectBox-options'), + settings = select.data('selectBox-settings'), + totalOptions = 0, + i = 0; + + if( control.hasClass('selectBox-disabled') ) return; + + switch( event.keyCode ) { + + case 8: // backspace + event.preventDefault(); + typeSearch = ''; + break; + + case 9: // tab + case 27: // esc + hideMenus(); + removeHover(select); + break; + + case 13: // enter + if( control.hasClass('selectBox-menuShowing') ) { + selectOption(select, options.find('LI.selectBox-hover:first'), event); + if( control.hasClass('selectBox-dropdown') ) hideMenus(); + } else { + showMenu(select); + } + break; + + case 38: // up + case 37: // left + + event.preventDefault(); + + if( control.hasClass('selectBox-menuShowing') ) { + + var prev = options.find('.selectBox-hover').prev('LI'); + totalOptions = options.find('LI:not(.selectBox-optgroup)').length; + i = 0; + + while( prev.length === 0 || prev.hasClass('selectBox-disabled') || prev.hasClass('selectBox-optgroup') ) { + prev = prev.prev('LI'); + if( prev.length === 0 ) { + if (settings.loopOptions) { + prev = options.find('LI:last'); + } else { + prev = options.find('LI:first'); + } + } + if( ++i >= totalOptions ) break; + } + + addHover(select, prev); + selectOption(select, prev, event); + keepOptionInView(select, prev); + + } else { + showMenu(select); + } + + break; + + case 40: // down + case 39: // right + + event.preventDefault(); + + if( control.hasClass('selectBox-menuShowing') ) { + + var next = options.find('.selectBox-hover').next('LI'); + totalOptions = options.find('LI:not(.selectBox-optgroup)').length; + i = 0; + + while( next.length === 0 || next.hasClass('selectBox-disabled') || next.hasClass('selectBox-optgroup') ) { + next = next.next('LI'); + if( next.length === 0 ) { + if (settings.loopOptions) { + next = options.find('LI:first'); + } else { + next = options.find('LI:last'); + } + } + if( ++i >= totalOptions ) break; + } + + addHover(select, next); + selectOption(select, next, event); + keepOptionInView(select, next); + + } else { + showMenu(select); + } + + break; + + } + + }; + + + var handleKeyPress = function(select, event) { + + // + // Handles type-to-find functionality + // + + select = $(select); + var control = select.data('selectBox-control'), + options = control.data('selectBox-options'); + + if( control.hasClass('selectBox-disabled') ) return; + + switch( event.keyCode ) { + + case 9: // tab + case 27: // esc + case 13: // enter + case 38: // up + case 37: // left + case 40: // down + case 39: // right + // Don't interfere with the keydown event! + break; + + default: // Type to find + + if( !control.hasClass('selectBox-menuShowing') ) showMenu(select); + + event.preventDefault(); + + clearTimeout(typeTimer); + typeSearch += String.fromCharCode(event.charCode || event.keyCode); + + options.find('A').each( function() { + if( $(this).text().substr(0, typeSearch.length).toLowerCase() === typeSearch.toLowerCase() ) { + addHover(select, $(this).parent()); + keepOptionInView(select, $(this).parent()); + return false; + } + }); + + // Clear after a brief pause + typeTimer = setTimeout( function() { typeSearch = ''; }, 1000); + + break; + + } + + }; + + + var enable = function(select) { + select = $(select); + select.attr('disabled', false); + var control = select.data('selectBox-control'); + if( !control ) return; + control.removeClass('selectBox-disabled'); + }; + + + var disable = function(select) { + select = $(select); + select.attr('disabled', true); + var control = select.data('selectBox-control'); + if( !control ) return; + control.addClass('selectBox-disabled'); + }; + + + var setValue = function(select, value) { + select = $(select); + select.val(value); + value = select.val(); + var control = select.data('selectBox-control'); + if( !control ) return; + var settings = select.data('selectBox-settings'), + options = control.data('selectBox-options'); + + // Update label + setLabel(select); + + // Update control values + options.find('.selectBox-selected').removeClass('selectBox-selected'); + options.find('A').each( function() { + if( typeof(value) === 'object' ) { + for( var i = 0; i < value.length; i++ ) { + if( $(this).attr('rel') == value[i] ) { + $(this).parent().addClass('selectBox-selected'); + } + } + } else { + if( $(this).attr('rel') == value ) { + $(this).parent().addClass('selectBox-selected'); + } + } + }); + + if( settings.change ) settings.change.call(select); + + }; + + + var setOptions = function(select, options) { + + select = $(select); + var control = select.data('selectBox-control'), + settings = select.data('selectBox-settings'); + + switch( typeof(data) ) { + + case 'string': + select.html(data); + break; + + case 'object': + select.html(''); + for( var i in data ) { + if( data[i] === null ) continue; + if( typeof(data[i]) === 'object' ) { + var optgroup = $('<optgroup label="' + i + '" />'); + for( var j in data[i] ) { + optgroup.append('<option value="' + j + '">' + data[i][j] + '</option>'); + } + select.append(optgroup); + } else { + var option = $('<option value="' + i + '">' + data[i] + '</option>'); + select.append(option); + } + } + break; + + } + + if( !control ) return; + + // Remove old options + control.data('selectBox-options').remove(); + + // Generate new options + var type = control.hasClass('selectBox-dropdown') ? 'dropdown' : 'inline'; + options = getOptions(select, type); + control.data('selectBox-options', options); + + switch( type ) { + case 'inline': + control.append(options); + break; + case 'dropdown': + // Update label + setLabel(select); + $("BODY").append(options); + break; + } + + }; + + + var disableSelection = function(selector) { + $(selector) + .css('MozUserSelect', 'none') + .bind('selectstart', function(event) { + event.preventDefault(); + }); + }; + + var generateOptions = function(self, options){ + var li = $('<li />'), + a = $('<a />'); + li.addClass( self.attr('class') ); + li.data( self.data() ); + a.attr('rel', self.val()).text( self.text() ); + li.append(a); + if( self.attr('disabled') ) li.addClass('selectBox-disabled'); + if( self.attr('selected') ) li.addClass('selectBox-selected'); + options.append(li); + }; + + // + // Public methods + // + + switch( method ) { + + case 'control': + return $(this).data('selectBox-control'); + + case 'settings': + if( !data ) return $(this).data('selectBox-settings'); + $(this).each( function() { + $(this).data('selectBox-settings', $.extend(true, $(this).data('selectBox-settings'), data)); + }); + break; + + case 'options': + // Getter + if( data === undefined ) return $(this).data('selectBox-control').data('selectBox-options'); + // Setter + $(this).each( function() { + setOptions(this, data); + }); + break; + + case 'value': + // Empty string is a valid value + if( data === undefined ) return $(this).val(); + $(this).each( function() { + setValue(this, data); + }); + break; + + case 'refresh': + $(this).each( function() { + refresh(this); + }); + break; + + case 'enable': + $(this).each( function() { + enable(this); + }); + break; + + case 'disable': + $(this).each( function() { + disable(this); + }); + break; + + case 'destroy': + $(this).each( function() { + destroy(this); + }); + break; + + default: + $(this).each( function() { + init(this, method); + }); + break; + + } + + return $(this); + + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/resources/library/search/Google Images.wgs/select/jquery.selectBox.min.js b/resources/library/search/Google images.wgs/select/jquery.selectBox.min.js similarity index 100% rename from resources/library/search/Google Images.wgs/select/jquery.selectBox.min.js rename to resources/library/search/Google images.wgs/select/jquery.selectBox.min.js