sequenceserver 0.7.9 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- data/lib/sequenceserver.rb +55 -57
- data/lib/sequenceserver/blast.rb +51 -158
- data/lib/sequenceserver/database.rb +8 -2
- data/lib/sequenceserver/helpers.rb +14 -12
- data/lib/sequenceserver/options.rb +132 -0
- data/lib/sequenceserver/sequencehelpers.rb +4 -30
- data/public/css/bootstrap.dropdown.css +29 -0
- data/public/css/bootstrap.icons.css +155 -0
- data/public/css/bootstrap.min.css +399 -314
- data/public/css/bootstrap.modal.css +28 -0
- data/public/css/custom.css +183 -23
- data/public/img/glyphicons-halflings-white.png +0 -0
- data/public/img/glyphicons-halflings.png +0 -0
- data/public/js/bootstrap-typeahead.js +298 -0
- data/public/js/bootstrap.dropdown.js +92 -0
- data/public/js/bootstrap.modal.js +7 -0
- data/public/js/bootstrap.transition.js +7 -0
- data/public/js/jquery.index.js +67 -0
- data/public/js/jquery.scrollspy.js +74 -0
- data/public/js/jquery.ui.js +57 -0
- data/public/js/sequenceserver.blast.js +96 -37
- data/public/js/sequenceserver.js +157 -85
- data/public/js/store.min.js +2 -0
- data/public/js/yaml.js +24 -0
- data/sequenceserver.gemspec +5 -2
- data/tests/run +26 -0
- data/tests/test_sequencehelpers.rb +10 -18
- data/tests/test_sequenceserver_blast.rb +60 -0
- data/views/_options.erb +144 -0
- data/views/search.erb +133 -145
- metadata +135 -52
@@ -0,0 +1,92 @@
|
|
1
|
+
/* ============================================================
|
2
|
+
* bootstrap-dropdown.js v2.0.2
|
3
|
+
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
|
4
|
+
* ============================================================
|
5
|
+
* Copyright 2012 Twitter, Inc.
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
* ============================================================ */
|
19
|
+
|
20
|
+
|
21
|
+
!function( $ ){
|
22
|
+
|
23
|
+
"use strict"
|
24
|
+
|
25
|
+
/* DROPDOWN CLASS DEFINITION
|
26
|
+
* ========================= */
|
27
|
+
|
28
|
+
var toggle = '[data-toggle="dropdown"]'
|
29
|
+
, Dropdown = function ( element ) {
|
30
|
+
var $el = $(element).on('click.dropdown.data-api', this.toggle)
|
31
|
+
$('html').on('click.dropdown.data-api', function () {
|
32
|
+
$el.parent().removeClass('open')
|
33
|
+
})
|
34
|
+
}
|
35
|
+
|
36
|
+
Dropdown.prototype = {
|
37
|
+
|
38
|
+
constructor: Dropdown
|
39
|
+
|
40
|
+
, toggle: function ( e ) {
|
41
|
+
var $this = $(this)
|
42
|
+
, selector = $this.attr('data-target')
|
43
|
+
, $parent
|
44
|
+
, isActive
|
45
|
+
|
46
|
+
if (!selector) {
|
47
|
+
selector = $this.attr('href')
|
48
|
+
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
49
|
+
}
|
50
|
+
|
51
|
+
$parent = $(selector)
|
52
|
+
$parent.length || ($parent = $this.parent())
|
53
|
+
|
54
|
+
isActive = $parent.hasClass('open')
|
55
|
+
|
56
|
+
clearMenus()
|
57
|
+
!isActive && $parent.toggleClass('open')
|
58
|
+
|
59
|
+
return false
|
60
|
+
}
|
61
|
+
|
62
|
+
}
|
63
|
+
|
64
|
+
function clearMenus() {
|
65
|
+
$(toggle).parent().removeClass('open')
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
/* DROPDOWN PLUGIN DEFINITION
|
70
|
+
* ========================== */
|
71
|
+
|
72
|
+
$.fn.dropdown = function ( option ) {
|
73
|
+
return this.each(function () {
|
74
|
+
var $this = $(this)
|
75
|
+
, data = $this.data('dropdown')
|
76
|
+
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
|
77
|
+
if (typeof option == 'string') data[option].call($this)
|
78
|
+
})
|
79
|
+
}
|
80
|
+
|
81
|
+
$.fn.dropdown.Constructor = Dropdown
|
82
|
+
|
83
|
+
|
84
|
+
/* APPLY TO STANDARD DROPDOWN ELEMENTS
|
85
|
+
* =================================== */
|
86
|
+
|
87
|
+
$(function () {
|
88
|
+
$('html').on('click.dropdown.data-api', clearMenus)
|
89
|
+
$('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
90
|
+
})
|
91
|
+
|
92
|
+
}( window.jQuery );
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* Bootstrap.js by @fat & @mdo
|
3
|
+
* plugins: bootstrap-modal.js
|
4
|
+
* Copyright 2012 Twitter, Inc.
|
5
|
+
* http://www.apache.org/licenses/LICENSE-2.0.txt
|
6
|
+
*/
|
7
|
+
!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c);if(this.isShown||c.isDefaultPrevented())return;a("body").addClass("modal-open"),this.isShown=!0,g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();var e=this;b=a.Event("hide"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* Bootstrap.js by @fat & @mdo
|
3
|
+
* plugins: bootstrap-transition.js
|
4
|
+
* Copyright 2012 Twitter, Inc.
|
5
|
+
* http://www.apache.org/licenses/LICENSE-2.0.txt
|
6
|
+
*/
|
7
|
+
!function(a){a(function(){a.support.transition=function(){var a=function(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"},c;for(c in b)if(a.style[c]!==undefined)return b[c]}();return a&&{end:a}}()})}(window.jQuery)
|
@@ -0,0 +1,67 @@
|
|
1
|
+
;(function ($) {
|
2
|
+
var defaults = {
|
3
|
+
threshold: 1
|
4
|
+
};
|
5
|
+
|
6
|
+
/*
|
7
|
+
Generate an index from the selected elements and add to or replace it
|
8
|
+
in the given container element.
|
9
|
+
|
10
|
+
Events:
|
11
|
+
|
12
|
+
add.index:
|
13
|
+
|
14
|
+
After the index has been created and added to the container.
|
15
|
+
|
16
|
+
remove.index:
|
17
|
+
|
18
|
+
When an index on the selected element is removed.
|
19
|
+
|
20
|
+
Options:
|
21
|
+
|
22
|
+
threshold:
|
23
|
+
|
24
|
+
Maximum number of elements selected with 'map' for which no
|
25
|
+
index is to be created. Or the index should be deleted if
|
26
|
+
already exists.
|
27
|
+
|
28
|
+
container:
|
29
|
+
|
30
|
+
A jQuery selector. The index is appended to or deleted from
|
31
|
+
the container.
|
32
|
+
|
33
|
+
Usage:
|
34
|
+
|
35
|
+
$('.resultn').index({container: '.results'})
|
36
|
+
|
37
|
+
*/
|
38
|
+
$.fn.index = function (options) {
|
39
|
+
var options = $.extend({}, defaults, options);
|
40
|
+
var container = $(options.container);
|
41
|
+
|
42
|
+
if (this.length > options.threshold) {
|
43
|
+
var entries = this.map(function () {
|
44
|
+
var id = $(this).attr('id');
|
45
|
+
var sid = (id.length > 25) ? (id.slice(0, 22) + ' ...') : id // sid => short/display id :P
|
46
|
+
return '<li><a href="#' + id + '" title="' + id + '">' + sid + '</a></li>';
|
47
|
+
});
|
48
|
+
|
49
|
+
var index = $('<ul class="index">' + entries.get().join('') + '</ul>');
|
50
|
+
|
51
|
+
// remove previous index if any
|
52
|
+
container.find('.index').remove();
|
53
|
+
container.trigger('remove.index');
|
54
|
+
|
55
|
+
// add the new one
|
56
|
+
container.append(index);
|
57
|
+
container.trigger('add.index', index);
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
// remove previous index if any
|
61
|
+
container.find('.index').remove();
|
62
|
+
container.trigger('remove.index');
|
63
|
+
}
|
64
|
+
|
65
|
+
return this;
|
66
|
+
}
|
67
|
+
})(jQuery);
|
@@ -0,0 +1,74 @@
|
|
1
|
+
;(function ($) {
|
2
|
+
var defaults = {
|
3
|
+
approach: 0,
|
4
|
+
overtravel: 0
|
5
|
+
};
|
6
|
+
|
7
|
+
/*
|
8
|
+
Trigger appropriate events when the selected element is scrolled in or
|
9
|
+
out of view.
|
10
|
+
|
11
|
+
An element is considered to be in view if the length of document
|
12
|
+
scrolled is greater than or equal to the offset of the element relative
|
13
|
+
to the top of the document and within the vertical span of the element.
|
14
|
+
(its height).
|
15
|
+
|
16
|
+
Vertical span of the element can be modified by adding required
|
17
|
+
'approach' and 'overtravel' length.
|
18
|
+
|
19
|
+
Events:
|
20
|
+
|
21
|
+
enter.scrollspy:
|
22
|
+
|
23
|
+
When the selected element scrolls into the view.
|
24
|
+
|
25
|
+
leave.scrollspy:
|
26
|
+
|
27
|
+
When the selected element scrolls out of the view.
|
28
|
+
|
29
|
+
Options:
|
30
|
+
|
31
|
+
approach:
|
32
|
+
|
33
|
+
Extend vertical span of the element from top. It can be
|
34
|
+
positive or negative.
|
35
|
+
|
36
|
+
overtravel:
|
37
|
+
|
38
|
+
Extend vertical span of the element from bottom. It can be
|
39
|
+
positive or negative.
|
40
|
+
|
41
|
+
The terminology: approach and overtravel, are borrowed from
|
42
|
+
Machining :).
|
43
|
+
|
44
|
+
Usage:
|
45
|
+
|
46
|
+
$('.resultn').scrollspy();
|
47
|
+
|
48
|
+
*/
|
49
|
+
$.fn.scrollspy = function (options) {
|
50
|
+
var elements = this;
|
51
|
+
var options = $.extend({}, defaults, options);
|
52
|
+
|
53
|
+
$(window).scroll(function() {
|
54
|
+
var scrolled = $(this).scrollTop();
|
55
|
+
|
56
|
+
elements.each(function() {
|
57
|
+
var element = $(this);
|
58
|
+
|
59
|
+
//compute threshold
|
60
|
+
var start = element.offset().top - options.approach;
|
61
|
+
var end = start + element.height() + options.overtravel;
|
62
|
+
|
63
|
+
if (scrolled >= start && scrolled <= end){
|
64
|
+
element.trigger('enter.scrollspy');
|
65
|
+
}
|
66
|
+
else {
|
67
|
+
element.trigger('leave.scrollspy');
|
68
|
+
}
|
69
|
+
});
|
70
|
+
});
|
71
|
+
|
72
|
+
return this;
|
73
|
+
}
|
74
|
+
})(jQuery);
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/*! jQuery UI - v1.8.19 - 2012-04-16
|
2
|
+
* https://github.com/jquery/jquery-ui
|
3
|
+
* Includes: jquery.effects.core.js
|
4
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
5
|
+
jQuery.effects||function(a,b){function c(b){var c;return b&&b.constructor==Array&&b.length==3?b:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))?[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:(c=/rgba\(0, 0, 0, 0\)/.exec(b))?e.transparent:e[a.trim(b).toLowerCase()]}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};return a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete,[b,c,d,e]}function l(b){return!b||typeof b=="number"||a.fx.speeds[b]?!0:typeof b=="string"&&!a.effects[b]?!0:!1}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){return a.isFunction(d)&&(e=d,d=null),this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class")||"";a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.19",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){return b=="toggle"&&(b=a.is(":hidden")?"show":"hide"),b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;return b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="show",this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="hide",this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return b==0?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return b<1?-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),(c/=f/2)<1?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){return c<f/2?a.easing.easeInBounce(b,c*2,0,e,f)*.5+d:a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
6
|
+
* https://github.com/jquery/jquery-ui
|
7
|
+
* Includes: jquery.effects.blind.js
|
8
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
9
|
+
(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
10
|
+
* https://github.com/jquery/jquery-ui
|
11
|
+
* Includes: jquery.effects.bounce.js
|
12
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
13
|
+
(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
14
|
+
* https://github.com/jquery/jquery-ui
|
15
|
+
* Includes: jquery.effects.clip.js
|
16
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
17
|
+
(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
18
|
+
* https://github.com/jquery/jquery-ui
|
19
|
+
* Includes: jquery.effects.drop.js
|
20
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
21
|
+
(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
22
|
+
* https://github.com/jquery/jquery-ui
|
23
|
+
* Includes: jquery.effects.explode.js
|
24
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
25
|
+
(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
26
|
+
* https://github.com/jquery/jquery-ui
|
27
|
+
* Includes: jquery.effects.fade.js
|
28
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
29
|
+
(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
30
|
+
* https://github.com/jquery/jquery-ui
|
31
|
+
* Includes: jquery.effects.fold.js
|
32
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
33
|
+
(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
34
|
+
* https://github.com/jquery/jquery-ui
|
35
|
+
* Includes: jquery.effects.highlight.js
|
36
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
37
|
+
(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
38
|
+
* https://github.com/jquery/jquery-ui
|
39
|
+
* Includes: jquery.effects.pulsate.js
|
40
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
41
|
+
(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i<e;i++)c.animate({opacity:h},f,b.options.easing),h=(h+1)%2;c.animate({opacity:h},f,b.options.easing,function(){h==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
42
|
+
* https://github.com/jquery/jquery-ui
|
43
|
+
* Includes: jquery.effects.scale.js
|
44
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
45
|
+
(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){var c=a(this);k&&a.effects.save(c,f);var d={height:c.height(),width:c.width()};c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.options.easing,function(){k&&a.effects.restore(c,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
46
|
+
* https://github.com/jquery/jquery-ui
|
47
|
+
* Includes: jquery.effects.shake.js
|
48
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
49
|
+
(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
50
|
+
* https://github.com/jquery/jquery-ui
|
51
|
+
* Includes: jquery.effects.slide.js
|
52
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
53
|
+
(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*! jQuery UI - v1.8.19 - 2012-04-16
|
54
|
+
* https://github.com/jquery/jquery-ui
|
55
|
+
* Includes: jquery.effects.transfer.js
|
56
|
+
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
|
57
|
+
(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
|
@@ -15,11 +15,11 @@
|
|
15
15
|
sequence_type_changed:
|
16
16
|
When the type (nucleotide or protein) of the input sequence changes.
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
database_type_changed:
|
19
|
+
When a user selects one type of database (nucleotide or protein) over the other.
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
blast_method_changed:
|
22
|
+
When the change in input parameters lead to a change in the preferred blast method.
|
23
23
|
|
24
24
|
TODO: should (probably) access UI objects through some sort of interface
|
25
25
|
*/
|
@@ -29,18 +29,16 @@ SS.blast = (function () {
|
|
29
29
|
// TODO: embedding magic numbers in the code is bad
|
30
30
|
// TODO: magic numbers in JS and Ruby should be in sync
|
31
31
|
var guess_sequence_type = function (sequence) {
|
32
|
-
var putative_NA_count, threshold, i;
|
33
|
-
|
34
|
-
putative_NA_count = 0;
|
35
|
-
|
36
32
|
// remove 'noisy' characters
|
37
33
|
sequence = sequence.replace(/[^A-Z]/gi, '') // non-letter characters
|
38
34
|
sequence = sequence.replace(/[NX]/gi, '') // ambiguous characters
|
39
35
|
|
40
|
-
//
|
41
|
-
if (sequence.length < 10) {
|
42
|
-
|
43
|
-
|
36
|
+
// can't determine the type of ultrashort queries
|
37
|
+
if (sequence.length < 10) { return undefined }
|
38
|
+
|
39
|
+
var putative_NA_count, threshold, i;
|
40
|
+
putative_NA_count = 0;
|
41
|
+
threshold = 0.9 * sequence.length;
|
44
42
|
|
45
43
|
// count the number of putative NA
|
46
44
|
for (i = 0; i < sequence.length; i++) {
|
@@ -49,13 +47,11 @@ SS.blast = (function () {
|
|
49
47
|
}
|
50
48
|
}
|
51
49
|
|
52
|
-
threshold = 0.9 * sequence.length
|
53
|
-
|
54
50
|
return putative_NA_count > threshold ? 'nucleotide' : 'protein'
|
55
51
|
}
|
56
52
|
|
57
53
|
var type_of_sequences = function () {
|
58
|
-
var sequences = $('#sequence').val().split(/>.*/)
|
54
|
+
var sequences = $('#sequence').val().split(/>.*/);
|
59
55
|
var type, tmp, i;
|
60
56
|
|
61
57
|
for (i = 0; i < sequences.length; i++) {
|
@@ -70,27 +66,27 @@ SS.blast = (function () {
|
|
70
66
|
}
|
71
67
|
else if (tmp !== type) {
|
72
68
|
// user has mixed different type of sequences
|
73
|
-
return
|
69
|
+
return 'mixed'
|
74
70
|
}
|
75
71
|
}
|
76
72
|
|
77
73
|
return type;
|
78
74
|
}
|
79
75
|
|
76
|
+
/* */
|
77
|
+
var type_of_databases = function () {
|
78
|
+
return $('.databases input:checked').data('type');
|
79
|
+
}
|
80
|
+
|
80
81
|
/*
|
81
82
|
check if blast is valid (sufficient input to blast or not)
|
82
83
|
*/
|
83
|
-
var
|
84
|
+
var required_params_present = function () {
|
84
85
|
// must enter a query
|
85
86
|
if (!$('#sequence').val()) {
|
86
87
|
return false;
|
87
88
|
}
|
88
89
|
|
89
|
-
// must select a blast method
|
90
|
-
if (!$('.blastmethods input:checked').val()) {
|
91
|
-
return false;
|
92
|
-
}
|
93
|
-
|
94
90
|
// must select atleast one database
|
95
91
|
if (!$('.databases input:checked').val()) {
|
96
92
|
return false;
|
@@ -100,20 +96,6 @@ SS.blast = (function () {
|
|
100
96
|
return true;
|
101
97
|
}
|
102
98
|
|
103
|
-
/*
|
104
|
-
signal blast's validity (sufficient input to blast or not)
|
105
|
-
*/
|
106
|
-
var signal_blast_validity = function () {
|
107
|
-
$('#sequence, .blastmethods, .databases').change(function () {
|
108
|
-
if (is_valid()) {
|
109
|
-
$('form').trigger('blast_valid');
|
110
|
-
}
|
111
|
-
else {
|
112
|
-
$('form').trigger('blast_invalid');
|
113
|
-
}
|
114
|
-
});
|
115
|
-
}
|
116
|
-
|
117
99
|
/*
|
118
100
|
determine input sequence type, and trigger 'sequence_type_changed'
|
119
101
|
event if the input sequence type has changed
|
@@ -133,6 +115,82 @@ SS.blast = (function () {
|
|
133
115
|
});
|
134
116
|
};
|
135
117
|
|
118
|
+
/* determine */
|
119
|
+
var signal_database_type_changed = function () {
|
120
|
+
var type = type_of_databases(), tmp;
|
121
|
+
|
122
|
+
$('.databases input').change(function () {
|
123
|
+
tmp = type_of_databases();
|
124
|
+
|
125
|
+
if (tmp != type) {
|
126
|
+
type = tmp;
|
127
|
+
|
128
|
+
//notify listeners
|
129
|
+
$(this).trigger('database_type_changed', type);
|
130
|
+
}
|
131
|
+
});
|
132
|
+
}
|
133
|
+
|
134
|
+
/* */
|
135
|
+
var signal_blast_method_changed = function () {
|
136
|
+
var method, tmp;
|
137
|
+
|
138
|
+
$('#blast').on('sequence_type_changed database_type_changed',
|
139
|
+
function (event) {
|
140
|
+
tmp = determine_blast_method();
|
141
|
+
|
142
|
+
if (tmp != method) {
|
143
|
+
method = tmp;
|
144
|
+
|
145
|
+
//notify listeners
|
146
|
+
$(this).trigger('blast_method_changed', [method]);
|
147
|
+
}
|
148
|
+
});
|
149
|
+
}
|
150
|
+
|
151
|
+
/*
|
152
|
+
Return a BLAST method to use for the selected database and input
|
153
|
+
sequence type.
|
154
|
+
|
155
|
+
database method
|
156
|
+
------------------------
|
157
|
+
protein blastx
|
158
|
+
protein blastp
|
159
|
+
------------------------
|
160
|
+
nucleotide tblastx
|
161
|
+
nucleotide tblastn
|
162
|
+
nucleotide blastn
|
163
|
+
*/
|
164
|
+
var determine_blast_method = function () {
|
165
|
+
if (!required_params_present()) {
|
166
|
+
return
|
167
|
+
}
|
168
|
+
|
169
|
+
var database_type = type_of_databases();
|
170
|
+
var sequence_type = type_of_sequences();
|
171
|
+
|
172
|
+
//database type is always known
|
173
|
+
switch (database_type) {
|
174
|
+
case 'protein':
|
175
|
+
switch (sequence_type) {
|
176
|
+
case undefined:
|
177
|
+
return ['blastp', 'blastx'];
|
178
|
+
case 'protein':
|
179
|
+
return ['blastp'];
|
180
|
+
case 'nucleotide':
|
181
|
+
return ['blastx'];
|
182
|
+
}
|
183
|
+
case 'nucleotide':
|
184
|
+
switch (sequence_type) {
|
185
|
+
case undefined:
|
186
|
+
return ['tblastn', 'blastn', 'tblastx'];
|
187
|
+
case 'protein':
|
188
|
+
return ['tblastn'];
|
189
|
+
case 'nucleotide':
|
190
|
+
return ['blastn', 'tblastx'];
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
136
194
|
|
137
195
|
/* public interface */
|
138
196
|
|
@@ -142,7 +200,8 @@ SS.blast = (function () {
|
|
142
200
|
|
143
201
|
blast.init = function () {
|
144
202
|
signal_sequence_type_changed();
|
145
|
-
|
203
|
+
signal_database_type_changed();
|
204
|
+
signal_blast_method_changed();
|
146
205
|
}
|
147
206
|
|
148
207
|
return blast;
|