[js/css] remove old versions of ui.tabs/slider etc.; closes #1625085

authorAdrien Di Mascio <Adrien.DiMascio@logilab.fr>
changeset614f23606091
branchdefault
phasepublic
hiddenno
parent revision#18bcb98d129a [widgets] handle no value label for tristate radios, put default separator on class for easier redefinition - closes #1624839
child revision#69aa3e68c231 [js] update jquery.corner.js to the latest version (uses native css support for browser that provide it); closes #1625065
files modified by this revision
doc/tools/pyjsrest.py
web/data/cubicweb.css
web/data/cubicweb.old.css
web/data/tab.png
web/data/ui.core.js
web/data/ui.slider.js
web/data/ui.tabs.css
web/data/ui.tabs.js
web/facet.py
web/views/tabs.py
# HG changeset patch
# User Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
# Date 1303148060 -7200
# Mon Apr 18 19:34:20 2011 +0200
# Node ID 614f236060915e0367a7cea87a5aa3b2688aff5f
# Parent 18bcb98d129a80c65a2f3644e380b5514314d2ff
[js/css] remove old versions of ui.tabs/slider etc.; closes #1625085

diff --git a/doc/tools/pyjsrest.py b/doc/tools/pyjsrest.py
@@ -151,13 +151,10 @@
1      'jquery.tablesorter.js',
2      'jquery.timePicker.js',
3      'jquery.flot.js',
4      'jquery.corner.js',
5      'jquery.ui.js',
6 -    'ui.core.js',
7 -    'ui.tabs.js',
8 -    'ui.slider.js',
9      'excanvas.js',
10      'gmap.utility.labeledmarker.js',
11 
12      'cubicweb.fckcwconfig.js',
13      'cubicweb.fckcwconfig-full.js',
diff --git a/web/data/cubicweb.css b/web/data/cubicweb.css
@@ -991,27 +991,53 @@
14  .ui-menu li.ui-menu-item {
15    /* remove background image (orange bullet) for autocomplete suggestions */
16    background-image: none;
17  }
18 
19 -/* ui.tabs.css */
20 -ul.ui-tabs-nav,
21 -div.ui-tabs-panel {
22 -  font-family: %(defaultFontFamily)s;
23 -  font-size: %(defaultSize)s;
24 +/* jquery-ui tabs */
25 +
26 +div.ui-tabs.ui-widget-content {
27 +  background:none;
28 +  border:none;
29 +  color:inherit;
30 +}
31 +
32 +div.ui-tabs ul.ui-tabs-nav {
33 +  padding-left: 0.5em;
34 +}
35 +
36 +div.ui-tabs ul.ui-tabs-nav a {
37 +  color:#27537A;
38 +  padding: 0.3em 0.6em;
39 +}
40 +
41 +div.ui-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
42 +  color:black;
43  }
44 
45 -div.ui-tabs-panel {
46 -  border-top:1px solid #b6b6b6;
47 +div.ui-tabs ul.ui-tabs-nav li.ui-state-hover {
48 +  background:none;
49 +}
50 +
51 +div.ui-tabs .ui-widget-header {
52 +  background:none;
53 +  border:none;
54  }
55 
56 -ul.ui-tabs-nav a {
57 -  color: #3d3d3d;
58 +div.ui-tabs .ui-widget-header li {
59 +  border-color:#333333;
60  }
61 
62 -ul.ui-tabs-nav a:hover {
63 -  color: #000;
64 +div.ui-tabs .ui-tabs-panel {
65 +  border-top:1px solid #97A5B0;
66 +  padding-left:0.5em;
67 +  color:inherit;
68 +}
69 +
70 +div.ui-tabs .ui-tabs-nav, div.ui-tabs .ui-tabs-panel {
71 +  font-family: %(defaultFontFamily)s;
72 +  font-size: %(defaultSize)s;
73  }
74 
75  img.ui-datepicker-trigger {
76    margin-left: 0.5em;
77    vertical-align: bottom;
diff --git a/web/data/cubicweb.old.css b/web/data/cubicweb.old.css
@@ -974,5 +974,44 @@
78 
79  .ui-menu li.ui-menu-item {
80    /* remove background image (orange bullet) for autocomplete suggestions */
81    background-image: none;
82  }
83 +
84 +div.ui-tabs.ui-widget-content {
85 +  background:none;
86 +  border:none;
87 +  color:inherit;
88 +}
89 +
90 +div.ui-tabs ul.ui-tabs-nav {
91 +  padding-left: 0.5em;
92 +}
93 +
94 +div.ui-tabs ul.ui-tabs-nav a {
95 +  color:#27537A;
96 +  padding: 0.3em 0.6em;
97 +  outline:0;
98 +}
99 +
100 +div.ui-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
101 +  color:black;
102 +}
103 +
104 +div.ui-tabs ul.ui-tabs-nav li.ui-state-hover, div.ui-tabs ul.ui-tabs-nav li.ui-state-focus {
105 +  background:white;
106 +}
107 +
108 +div.ui-tabs .ui-widget-header {
109 +  background:none;
110 +  border:none;
111 +}
112 +
113 +div.ui-tabs .ui-widget-header li {
114 +  border-color:#333333;
115 +}
116 +
117 +div.ui-tabs .ui-tabs-panel {
118 +  border-top:1px solid #97A5B0;
119 +  padding-left:0.5em;
120 +  color:inherit;
121 +}
diff --git a/web/data/tab.png b/web/data/tab.png
diff --git a/web/data/ui.core.js b/web/data/ui.core.js
@@ -1,431 +0,0 @@
122 -/*
123 - * jQuery UI @VERSION
124 - *
125 - * Copyright (c) 2010 Paul Bakaus (ui.jquery.com)
126 - * Dual licensed under the MIT (MIT-LICENSE.txt)
127 - * and GPL (GPL-LICENSE.txt) licenses.
128 - *
129 - * http://docs.jquery.com/UI
130 - */
131 -;(function($) {
132 -
133 -/** jQuery core modifications and additions **/
134 -
135 -var _remove = $.fn.remove;
136 -$.fn.remove = function() {
137 -	$("*", this).add(this).triggerHandler("remove");
138 -	return _remove.apply(this, arguments );
139 -};
140 -
141 -function isVisible(element) {
142 -	function checkStyles(element) {
143 -		var style = element.style;
144 -		return (style.display != 'none' && style.visibility != 'hidden');
145 -	}
146 -	
147 -	var visible = checkStyles(element);
148 -	
149 -	(visible && $.each($.dir(element, 'parentNode'), function() {
150 -		return (visible = checkStyles(this));
151 -	}));
152 -	
153 -	return visible;
154 -}
155 -
156 -$.extend($.expr[':'], {
157 -	data: function(a, i, m) {
158 -		return $.data(a, m[3]);
159 -	},
160 -	
161 -	// TODO: add support for object, area
162 -	tabbable: function(a, i, m) {
163 -		var nodeName = a.nodeName.toLowerCase();
164 -		
165 -		return (
166 -			// in tab order
167 -			a.tabIndex >= 0 &&
168 -			
169 -			( // filter node types that participate in the tab order
170 -				
171 -				// anchor tag
172 -				('a' == nodeName && a.href) ||
173 -				
174 -				// enabled form element
175 -				(/input|select|textarea|button/.test(nodeName) &&
176 -					'hidden' != a.type && !a.disabled)
177 -			) &&
178 -			
179 -			// visible on page
180 -			isVisible(a)
181 -		);
182 -	}
183 -});
184 -
185 -$.keyCode = {
186 -	BACKSPACE: 8,
187 -	CAPS_LOCK: 20,
188 -	COMMA: 188,
189 -	CONTROL: 17,
190 -	DELETE: 46,
191 -	DOWN: 40,
192 -	END: 35,
193 -	ENTER: 13,
194 -	ESCAPE: 27,
195 -	HOME: 36,
196 -	INSERT: 45,
197 -	LEFT: 37,
198 -	NUMPAD_ADD: 107,
199 -	NUMPAD_DECIMAL: 110,
200 -	NUMPAD_DIVIDE: 111,
201 -	NUMPAD_ENTER: 108,
202 -	NUMPAD_MULTIPLY: 106,
203 -	NUMPAD_SUBTRACT: 109,
204 -	PAGE_DOWN: 34,
205 -	PAGE_UP: 33,
206 -	PERIOD: 190,
207 -	RIGHT: 39,
208 -	SHIFT: 16,
209 -	SPACE: 32,
210 -	TAB: 9,
211 -	UP: 38
212 -};
213 -
214 -// $.widget is a factory to create jQuery plugins
215 -// taking some boilerplate code out of the plugin code
216 -// created by Scott González and Jörn Zaefferer
217 -function getter(namespace, plugin, method, args) {
218 -	function getMethods(type) {
219 -		var methods = $[namespace][plugin][type] || [];
220 -		return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
221 -	}
222 -	
223 -	var methods = getMethods('getter');
224 -	if (args.length == 1 && typeof args[0] == 'string') {
225 -		methods = methods.concat(getMethods('getterSetter'));
226 -	}
227 -	return ($.inArray(method, methods) != -1);
228 -}
229 -
230 -$.widget = function(name, prototype) {
231 -	var namespace = name.split(".")[0];
232 -	name = name.split(".")[1];
233 -	
234 -	// create plugin method
235 -	$.fn[name] = function(options) {
236 -		var isMethodCall = (typeof options == 'string'),
237 -			args = Array.prototype.slice.call(arguments, 1);
238 -		
239 -		// prevent calls to internal methods
240 -		if (isMethodCall && options.substring(0, 1) == '_') {
241 -			return this;
242 -		}
243 -		
244 -		// handle getter methods
245 -		if (isMethodCall && getter(namespace, name, options, args)) {
246 -			var instance = $.data(this[0], name);
247 -			return (instance ? instance[options].apply(instance, args)
248 -				: undefined);
249 -		}
250 -		
251 -		// handle initialization and non-getter methods
252 -		return this.each(function() {
253 -			var instance = $.data(this, name);
254 -			
255 -			// constructor
256 -			(!instance && !isMethodCall &&
257 -				$.data(this, name, new $[namespace][name](this, options)));
258 -			
259 -			// method call
260 -			(instance && isMethodCall && $.isFunction(instance[options]) &&
261 -				instance[options].apply(instance, args));
262 -		});
263 -	};
264 -	
265 -	// create widget constructor
266 -	$[namespace][name] = function(element, options) {
267 -		var self = this;
268 -		
269 -		this.widgetName = name;
270 -		this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
271 -		this.widgetBaseClass = namespace + '-' + name;
272 -		
273 -		this.options = $.extend({},
274 -			$.widget.defaults,
275 -			$[namespace][name].defaults,
276 -			$.metadata && $.metadata.get(element)[name],
277 -			options);
278 -		
279 -		this.element = $(element)
280 -			.bind('setData.' + name, function(e, key, value) {
281 -				return self._setData(key, value);
282 -			})
283 -			.bind('getData.' + name, function(e, key) {
284 -				return self._getData(key);
285 -			})
286 -			.bind('remove', function() {
287 -				return self.destroy();
288 -			});
289 -		
290 -		this._init();
291 -	};
292 -	
293 -	// add widget prototype
294 -	$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
295 -	
296 -	// TODO: merge getter and getterSetter properties from widget prototype
297 -	// and plugin prototype
298 -	$[namespace][name].getterSetter = 'option';
299 -};
300 -
301 -$.widget.prototype = {
302 -	_init: function() {},
303 -	destroy: function() {
304 -		this.element.removeData(this.widgetName);
305 -	},
306 -	
307 -	option: function(key, value) {
308 -		var options = key,
309 -			self = this;
310 -		
311 -		if (typeof key == "string") {
312 -			if (value === undefined) {
313 -				return this._getData(key);
314 -			}
315 -			options = {};
316 -			options[key] = value;
317 -		}
318 -		
319 -		$.each(options, function(key, value) {
320 -			self._setData(key, value);
321 -		});
322 -	},
323 -	_getData: function(key) {
324 -		return this.options[key];
325 -	},
326 -	_setData: function(key, value) {
327 -		this.options[key] = value;
328 -		
329 -		if (key == 'disabled') {
330 -			this.element[value ? 'addClass' : 'removeClass'](
331 -				this.widgetBaseClass + '-disabled');
332 -		}
333 -	},
334 -	
335 -	enable: function() {
336 -		this._setData('disabled', false);
337 -	},
338 -	disable: function() {
339 -		this._setData('disabled', true);
340 -	},
341 -	
342 -	_trigger: function(type, e, data) {
343 -		var eventName = (type == this.widgetEventPrefix
344 -			? type : this.widgetEventPrefix + type);
345 -		e = e  || $.event.fix({ type: eventName, target: this.element[0] });
346 -		return this.element.triggerHandler(eventName, [e, data], this.options[type]);
347 -	}
348 -};
349 -
350 -$.widget.defaults = {
351 -	disabled: false
352 -};
353 -
354 -
355 -/** jQuery UI core **/
356 -
357 -$.ui = {
358 -	plugin: {
359 -		add: function(module, option, set) {
360 -			var proto = $.ui[module].prototype;
361 -			for(var i in set) {
362 -				proto.plugins[i] = proto.plugins[i] || [];
363 -				proto.plugins[i].push([option, set[i]]);
364 -			}
365 -		},
366 -		call: function(instance, name, args) {
367 -			var set = instance.plugins[name];
368 -			if(!set) { return; }
369 -			
370 -			for (var i = 0; i < set.length; i++) {
371 -				if (instance.options[set[i][0]]) {
372 -					set[i][1].apply(instance.element, args);
373 -				}
374 -			}
375 -		}	
376 -	},
377 -	cssCache: {},
378 -	css: function(name) {
379 -		if ($.ui.cssCache[name]) { return $.ui.cssCache[name]; }
380 -		var tmp = $('<div class="ui-gen">').addClass(name).css({position:'absolute', top:'-5000px', left:'-5000px', display:'block'}).appendTo('body');
381 -		
382 -		//if (!$.browser.safari)
383 -			//tmp.appendTo('body'); 
384 -		
385 -		//Opera and Safari set width and height to 0px instead of auto
386 -		//Safari returns rgba(0,0,0,0) when bgcolor is not set
387 -		$.ui.cssCache[name] = !!(
388 -			(!(/auto|default/).test(tmp.css('cursor')) || (/^[1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) || 
389 -			!(/none/).test(tmp.css('backgroundImage')) || !(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor')))
390 -		);
391 -		try { $('body').get(0).removeChild(tmp.get(0));	} catch(e){}
392 -		return $.ui.cssCache[name];
393 -	},
394 -	disableSelection: function(el) {
395 -		$(el)
396 -			.attr('unselectable', 'on')
397 -			.css('MozUserSelect', 'none')
398 -			.bind('selectstart.ui', function() { return false; });
399 -	},
400 -	enableSelection: function(el) {
401 -		$(el)
402 -			.attr('unselectable', 'off')
403 -			.css('MozUserSelect', '')
404 -			.unbind('selectstart.ui');
405 -	},
406 -	hasScroll: function(e, a) {
407 -		var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
408 -			has = false;
409 -		
410 -		if (e[scroll] > 0) { return true; }
411 -		
412 -		// TODO: determine which cases actually cause this to happen
413 -		// if the element doesn't have the scroll set, see if it's possible to
414 -		// set the scroll
415 -		e[scroll] = 1;
416 -		has = (e[scroll] > 0);
417 -		e[scroll] = 0;
418 -		return has;
419 -	}
420 -};
421 -
422 -
423 -/** Mouse Interaction Plugin **/
424 -
425 -$.ui.mouse = {
426 -	_mouseInit: function() {
427 -		var self = this;
428 -	
429 -		this.element.bind('mousedown.'+this.widgetName, function(e) {
430 -			return self._mouseDown(e);
431 -		});
432 -		
433 -		// Prevent text selection in IE
434 -		if ($.browser.msie) {
435 -			this._mouseUnselectable = this.element.attr('unselectable');
436 -			this.element.attr('unselectable', 'on');
437 -		}
438 -		
439 -		this.started = false;
440 -	},
441 -	
442 -	// TODO: make sure destroying one instance of mouse doesn't mess with
443 -	// other instances of mouse
444 -	_mouseDestroy: function() {
445 -		this.element.unbind('.'+this.widgetName);
446 -		
447 -		// Restore text selection in IE
448 -		($.browser.msie
449 -			&& this.element.attr('unselectable', this._mouseUnselectable));
450 -	},
451 -	
452 -	_mouseDown: function(e) {
453 -		// we may have missed mouseup (out of window)
454 -		(this._mouseStarted && this._mouseUp(e));
455 -		
456 -		this._mouseDownEvent = e;
457 -		
458 -		var self = this,
459 -			btnIsLeft = (e.which == 1),
460 -			elIsCancel = (typeof this.options.cancel == "string" ? $(e.target).parents().add(e.target).filter(this.options.cancel).length : false);
461 -		if (!btnIsLeft || elIsCancel || !this._mouseCapture(e)) {
462 -			return true;
463 -		}
464 -		
465 -		this.mouseDelayMet = !this.options.delay;
466 -		if (!this.mouseDelayMet) {
467 -			this._mouseDelayTimer = setTimeout(function() {
468 -				self.mouseDelayMet = true;
469 -			}, this.options.delay);
470 -		}
471 -		
472 -		if (this._mouseDistanceMet(e) && this._mouseDelayMet(e)) {
473 -			this._mouseStarted = (this._mouseStart(e) !== false);
474 -			if (!this._mouseStarted) {
475 -				e.preventDefault();
476 -				return true;
477 -			}
478 -		}
479 -		
480 -		// these delegates are required to keep context
481 -		this._mouseMoveDelegate = function(e) {
482 -			return self._mouseMove(e);
483 -		};
484 -		this._mouseUpDelegate = function(e) {
485 -			return self._mouseUp(e);
486 -		};
487 -		$(document)
488 -			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
489 -			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
490 -		
491 -		return false;
492 -	},
493 -	
494 -	_mouseMove: function(e) {
495 -		// IE mouseup check - mouseup happened when mouse was out of window
496 -		if ($.browser.msie && !e.button) {
497 -			return this._mouseUp(e);
498 -		}
499 -		
500 -		if (this._mouseStarted) {
501 -			this._mouseDrag(e);
502 -			return false;
503 -		}
504 -		
505 -		if (this._mouseDistanceMet(e) && this._mouseDelayMet(e)) {
506 -			this._mouseStarted =
507 -				(this._mouseStart(this._mouseDownEvent, e) !== false);
508 -			(this._mouseStarted ? this._mouseDrag(e) : this._mouseUp(e));
509 -		}
510 -		
511 -		return !this._mouseStarted;
512 -	},
513 -	
514 -	_mouseUp: function(e) {
515 -		$(document)
516 -			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
517 -			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
518 -		
519 -		if (this._mouseStarted) {
520 -			this._mouseStarted = false;
521 -			this._mouseStop(e);
522 -		}
523 -		
524 -		return false;
525 -	},
526 -	
527 -	_mouseDistanceMet: function(e) {
528 -		return (Math.max(
529 -				Math.abs(this._mouseDownEvent.pageX - e.pageX),
530 -				Math.abs(this._mouseDownEvent.pageY - e.pageY)
531 -			) >= this.options.distance
532 -		);
533 -	},
534 -	
535 -	_mouseDelayMet: function(e) {
536 -		return this.mouseDelayMet;
537 -	},
538 -	
539 -	// These are placeholder methods, to be overriden by extending plugin
540 -	_mouseStart: function(e) {},
541 -	_mouseDrag: function(e) {},
542 -	_mouseStop: function(e) {},
543 -	_mouseCapture: function(e) { return true; }
544 -};
545 -
546 -$.ui.mouse.defaults = {
547 -	cancel: null,
548 -	distance: 1,
549 -	delay: 0
550 -};
551 -
552 -})(jQuery);
diff --git a/web/data/ui.slider.js b/web/data/ui.slider.js
@@ -1,43 +0,0 @@
553 -/*

554 - * jQuery UI 1.7.1

555 - *

556 - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)

557 - * Dual licensed under the MIT (MIT-LICENSE.txt)

558 - * and GPL (GPL-LICENSE.txt) licenses.

559 - *

560 - * http://docs.jquery.com/UI

561 - */
jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.1",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*

562 - * jQuery UI Draggable 1.7.1

563 - *

564 - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)

565 - * Dual licensed under the MIT (MIT-LICENSE.txt)

566 - * and GPL (GPL-LICENSE.txt) licenses.

567 - *

568 - * http://docs.jquery.com/UI/Draggables

569 - *

570 - * Depends:

571 - *	ui.core.js

572 - */
(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.1",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/*

573 - * jQuery UI Droppable 1.7.1

574 - *

575 - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)

576 - * Dual licensed under the MIT (MIT-LICENSE.txt)

577 - * and GPL (GPL-LICENSE.txt) licenses.

578 - *

579 - * http://docs.jquery.com/UI/Droppables

580 - *

581 - * Depends:

582 - *	ui.core.js

583 - *	ui.draggable.js

584 - */
(function(a){a.widget("ui.droppable",{_init:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.options.accept=this.options.accept&&a.isFunction(this.options.accept)?this.options.accept:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[this.options.scope]=a.ui.ddmanager.droppables[this.options.scope]||[];a.ui.ddmanager.droppables[this.options.scope].push(this);(this.options.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable")},_setData:function(b,c){if(b=="accept"){this.options.accept=c&&a.isFunction(c)?c:function(e){return e.is(c)}}else{a.widget.prototype._setData.apply(this,arguments)}},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.7.1",eventPrefix:"drop",defaults:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"}});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].options.accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);;/*

585 - * jQuery UI Slider 1.7.1

586 - *

587 - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)

588 - * Dual licensed under the MIT (MIT-LICENSE.txt)

589 - * and GPL (GPL-LICENSE.txt) licenses.

590 - *

591 - * http://docs.jquery.com/UI/Slider

592 - *

593 - * Depends:

594 - *	ui.core.js

595 - */
(function(a){a.widget("ui.slider",a.extend({},a.ui.mouse,{_init:function(){var b=this,c=this.options;this._keySliding=false;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");this.range=a([]);if(c.range){if(c.range===true){this.range=a("<div></div>");if(!c.values){c.values=[this._valueMin(),this._valueMin()]}if(c.values.length&&c.values.length!=2){c.values=[c.values[0],c.values[0]]}}else{this.range=a("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(c.range=="min"||c.range=="max"){this.range.addClass("ui-slider-range-"+c.range)}this.range.addClass("ui-widget-header")}if(a(".ui-slider-handle",this.element).length==0){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(c.values&&c.values.length){while(a(".ui-slider-handle",this.element).length<c.values.length){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=a(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(d){d.preventDefault()}).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(d){a(this).data("index.ui-slider-handle",d)});this.handles.keydown(function(i){var f=true;var e=a(this).data("index.ui-slider-handle");if(b.options.disabled){return}switch(i.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!b._keySliding){b._keySliding=true;a(this).addClass("ui-state-active");b._start(i,e)}break}var g,d,h=b._step();if(b.options.values&&b.options.values.length){g=d=b.values(e)}else{g=d=b.value()}switch(i.keyCode){case a.ui.keyCode.HOME:d=b._valueMin();break;case a.ui.keyCode.END:d=b._valueMax();break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g==b._valueMax()){return}d=g+h;break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g==b._valueMin()){return}d=g-h;break}b._slide(i,e,d);return f}).keyup(function(e){var d=a(this).data("index.ui-slider-handle");if(b._keySliding){b._stop(e,d);b._change(e,d);b._keySliding=false;a(this).removeClass("ui-state-active")}});this._refreshValue()},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy()},_mouseCapture:function(d){var e=this.options;if(e.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var h={x:d.pageX,y:d.pageY};var j=this._normValueFromMouse(h);var c=this._valueMax()-this._valueMin()+1,f;var k=this,i;this.handles.each(function(l){var m=Math.abs(j-k.values(l));if(c>m){c=m;f=a(this);i=l}});if(e.range==true&&this.values(1)==e.min){f=a(this.handles[++i])}this._start(d,i);k._handleIndex=i;f.addClass("ui-state-active").focus();var g=f.offset();var b=!a(d.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=b?{left:0,top:0}:{left:d.pageX-g.left-(f.width()/2),top:d.pageY-g.top-(f.height()/2)-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};j=this._normValueFromMouse(h);this._slide(d,i,j);return true},_mouseStart:function(b){return true},_mouseDrag:function(d){var b={x:d.pageX,y:d.pageY};var c=this._normValueFromMouse(b);this._slide(d,this._handleIndex,c);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._handleIndex=null;this._clickOffset=null;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c,h;if("horizontal"==this.orientation){c=this.elementSize.width;h=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;h=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var f=(h/c);if(f>1){f=1}if(f<0){f=0}if("vertical"==this.orientation){f=1-f}var e=this._valueMax()-this._valueMin(),i=f*e,b=i%this.options.step,g=this._valueMin()+i-b;if(b>(this.options.step/2)){g+=this.options.step}return parseFloat(g.toFixed(5))},_start:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("start",d,b)},_slide:function(f,e,d){var g=this.handles[e];if(this.options.values&&this.options.values.length){var b=this.values(e?0:1);if((e==0&&d>=b)||(e==1&&d<=b)){d=b}if(d!=this.values(e)){var c=this.values();c[e]=d;var h=this._trigger("slide",f,{handle:this.handles[e],value:d,values:c});var b=this.values(e?0:1);if(h!==false){this.values(e,d,(f.type=="mousedown"&&this.options.animate),true)}}}else{if(d!=this.value()){var h=this._trigger("slide",f,{handle:this.handles[e],value:d});if(h!==false){this._setData("value",d,(f.type=="mousedown"&&this.options.animate))}}}},_stop:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("stop",d,b)},_change:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("change",d,b)},value:function(b){if(arguments.length){this._setData("value",b);this._change(null,0)}return this._value()},values:function(b,e,c,d){if(arguments.length>1){this.options.values[b]=e;this._refreshValue(c);if(!d){this._change(null,b)}}if(arguments.length){if(this.options.values&&this.options.values.length){return this._values(b)}else{return this.value()}}else{return this._values()}},_setData:function(b,d,c){a.widget.prototype._setData.apply(this,arguments);switch(b){case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue(c);break;case"value":this._refreshValue(c);break}},_step:function(){var b=this.options.step;return b},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_values:function(b){if(arguments.length){var c=this.options.values[b];if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c}else{return this.options.values}},_valueMin:function(){var b=this.options.min;return b},_valueMax:function(){var b=this.options.max;return b},_refreshValue:function(c){var f=this.options.range,d=this.options,l=this;if(this.options.values&&this.options.values.length){var i,h;this.handles.each(function(p,n){var o=(l.values(p)-l._valueMin())/(l._valueMax()-l._valueMin())*100;var m={};m[l.orientation=="horizontal"?"left":"bottom"]=o+"%";a(this).stop(1,1)[c?"animate":"css"](m,d.animate);if(l.options.range===true){if(l.orientation=="horizontal"){(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({left:o+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({width:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}else{(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({bottom:(o)+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({height:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}}lastValPercent=o})}else{var j=this.value(),g=this._valueMin(),k=this._valueMax(),e=k!=g?(j-g)/(k-g)*100:0;var b={};b[l.orientation=="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[c?"animate":"css"](b,d.animate);(f=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[c?"animate":"css"]({width:e+"%"},d.animate);(f=="max")&&(this.orientation=="horizontal")&&this.range[c?"animate":"css"]({width:(100-e)+"%"},{queue:false,duration:d.animate});(f=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[c?"animate":"css"]({height:e+"%"},d.animate);(f=="max")&&(this.orientation=="vertical")&&this.range[c?"animate":"css"]({height:(100-e)+"%"},{queue:false,duration:d.animate})}}}));a.extend(a.ui.slider,{getter:"value values",version:"1.7.1",eventPrefix:"slide",defaults:{animate:false,delay:0,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null}})})(jQuery);;
596 \ No newline at end of file
diff --git a/web/data/ui.tabs.css b/web/data/ui.tabs.css
@@ -1,125 +0,0 @@
597 -/* Caution! Ensure accessibility in print and other media types... */
598 -@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */
599 -    .ui-tabs-hide {
600 -        display: none;
601 -    }
602 -}
603 -
604 -/* Hide useless elements in print layouts... */
605 -@media print {
606 -    .ui-tabs-nav {
607 -        display: none;
608 -    }
609 -}
610 -
611 -/* Skin */
612 -.ui-tabs-nav, .ui-tabs-panel {
613 -    font-family: "Trebuchet MS", Trebuchet, Verdana, Helvetica, Arial, sans-serif;
614 -    font-size: 12px;
615 -
616 -}
617 -.ui-tabs-nav {
618 -    list-style: none;
619 -    margin: 0px;
620 -    padding: 0px 0px 0px 4px; 
621 -
622 -}
623 -.ui-tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */
624 -    display: block;
625 -    clear: both;
626 -    content: " ";
627 -}
628 -.ui-tabs-nav li {
629 -    float: left;
630 -    margin: 0 0 0 1px;
631 -    min-width: 84px; /* be nice to Opera */
632 -    list-style: none;
633 -    background: none;
634 -    padding: 0px 0px 1px 1px;
635 -}
636 -.ui-tabs-nav a, .ui-tabs-nav a span {
637 -    display: block;
638 -    padding: 0 10px;
639 -    background: url(tab.png) no-repeat;
640 -}
641 -.ui-tabs-nav a {
642 -    margin: 1px 0 0; /* position: relative makes opacity fail for disabled tab in IE */
643 -    padding-left: 0;
644 -    color: #27537a;
645 -    font-weight: bold;
646 -    line-height: 1.2;
647 -    text-align: center;
648 -    text-decoration: none;
649 -    white-space: nowrap; /* required in IE 6 */    
650 -    outline: 0; /* prevent dotted border in Firefox */
651 -}
652 -.ui-tabs-nav .ui-tabs-selected a {
653 -    position: relative;
654 -    top: 1px;
655 -    z-index: 2;
656 -    margin-top: 0;
657 -    color: #000;
658 -}
659 -.ui-tabs-nav a span {
660 -    width: 64px; /* IE 6 treats width as min-width */
661 -    min-width: 64px;
662 -    height: 18px; /* IE 6 treats height as min-height */
663 -    min-height: 18px;
664 -    padding-top: 6px;
665 -    padding-right: 0;
666 -}
667 -*>.ui-tabs-nav a span { /* hide from IE 6 */
668 -    width: auto;
669 -    height: auto;
670 -}
671 -.ui-tabs-nav .ui-tabs-selected a span {
672 -    padding-bottom: 1px;
673 -}
674 -.ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active {
675 -    background-position: 100% -150px;
676 -}
677 -.ui-tabs-nav a, .ui-tabs-nav .ui-tabs-disabled a:hover, .ui-tabs-nav .ui-tabs-disabled a:focus, .ui-tabs-nav .ui-tabs-disabled a:active {
678 -    background-position: 100% -100px;
679 -}
680 -.ui-tabs-nav .ui-tabs-selected a span, .ui-tabs-nav a:hover span, .ui-tabs-nav a:focus span, .ui-tabs-nav a:active span {
681 -    background-position: 0 -50px;
682 -}
683 -.ui-tabs-nav a span, .ui-tabs-nav .ui-tabs-disabled a:hover span, .ui-tabs-nav .ui-tabs-disabled a:focus span, .ui-tabs-nav .ui-tabs-disabled a:active span {
684 -    background-position: 0 0;
685 -}
686 -.ui-tabs-nav .ui-tabs-selected a:link, .ui-tabs-nav .ui-tabs-selected a:visited, .ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */
687 -    cursor: text;
688 -}
689 -.ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active,
690 -.ui-tabs-nav .ui-tabs-unselect a:hover, .ui-tabs-nav .ui-tabs-unselect a:focus, .ui-tabs-nav .ui-tabs-unselect a:active { /* @ Opera, we need to be explicit again here now... */
691 -    cursor: pointer;
692 -}
693 -.ui-tabs-disabled {
694 -    opacity: .4;
695 -    filter: alpha(opacity=40);
696 -}
697 -.ui-tabs-panel {
698 -    border-top: 1px solid #97a5b0;
699 -    padding: 1em 8px;
700 -    margin-top:-1px;  /* Logilab style */
701 -    background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */
702 -}
703 -.ui-tabs-loading em {
704 -    padding: 0 0 0 20px;
705 -    background: url(loading.gif) no-repeat 0 50%;
706 -}
707 -
708 -/* Additional IE specific bug fixes... */
709 -* html .ui-tabs-nav { /* auto clear, @ IE 6 & IE 7 Quirks Mode */
710 -    display: inline-block;
711 -}
712 -*:first-child+html .ui-tabs-nav  { /* @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */
713 -    display: inline-block;
714 -}
715 -
716 -/* ========= Lobilab styles =========== */
717 -
718 -/* added by katia */
719 -* html .ui-tabs-panel{  
720 -    width:100%;
721 -}
722 \ No newline at end of file
diff --git a/web/data/ui.tabs.js b/web/data/ui.tabs.js
@@ -1,587 +0,0 @@
723 -/*
724 - * jQuery UI Tabs @VERSION
725 - *
726 - * Copyright (c) 2007, 2010 Klaus Hartl (stilbuero.de)
727 - * Dual licensed under the MIT (MIT-LICENSE.txt)
728 - * and GPL (GPL-LICENSE.txt) licenses.
729 - *
730 - * http://docs.jquery.com/UI/Tabs
731 - *
732 - * Depends:
733 - *	ui.core.js
734 - */
735 -(function($) {
736 -
737 -$.widget("ui.tabs", {
738 -	_init: function() {
739 -		this.options.event += '.tabs'; // namespace event
740 -		
741 -		// create tabs
742 -		this._tabify(true);
743 -	},
744 -	_setData: function(key, value) {
745 -		if ((/^selected/).test(key))
746 -			this.select(value);
747 -		else {
748 -			this.options[key] = value;
749 -			this._tabify();
750 -		}
751 -	},
752 -	length: function() {
753 -		return this.$tabs.length;
754 -	},
755 -	_tabId: function(a) {
756 -		return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '')
757 -			|| this.options.idPrefix + $.data(a);
758 -	},
759 -	ui: function(tab, panel) {
760 -		return {
761 -			options: this.options,
762 -			tab: tab,
763 -			panel: panel,
764 -			index: this.$tabs.index(tab)
765 -		};
766 -	},
767 -	_tabify: function(init) {
768 -
769 -		this.$lis = $('li:has(a[href])', this.element);
770 -		this.$tabs = this.$lis.map(function() { return $('a', this)[0]; });
771 -		this.$panels = $([]);
772 -
773 -		var self = this, o = this.options;
774 -
775 -		this.$tabs.each(function(i, a) {
776 -			// inline tab
777 -			if (a.hash && a.hash.replace('#', '')) // Safari 2 reports '#' for an empty hash
778 -				self.$panels = self.$panels.add(a.hash);
779 -			// remote tab
780 -			else if ($(a).attr('href') != '#') { // prevent loading the page itself if href is just "#"
781 -				$.data(a, 'href.tabs', a.href); // required for restore on destroy
782 -				$.data(a, 'load.tabs', a.href); // mutable
783 -				var id = self._tabId(a);
784 -				a.href = '#' + id;
785 -				var $panel = $('#' + id);
786 -				if (!$panel.length) {
787 -					$panel = $(o.panelTemplate).attr('id', id).addClass(o.panelClass)
788 -						.insertAfter( self.$panels[i - 1] || self.element );
789 -					$panel.data('destroy.tabs', true);
790 -				}
791 -				self.$panels = self.$panels.add( $panel );
792 -			}
793 -			// invalid tab href
794 -			else
795 -				o.disabled.push(i + 1);
796 -		});
797 -
798 -		// initialization from scratch
799 -		if (init) {
800 -
801 -			// attach necessary classes for styling if not present
802 -			this.element.addClass(o.navClass);
803 -			this.$panels.each(function() {
804 -				var $this = $(this);
805 -				$this.addClass(o.panelClass);
806 -			});
807 -
808 -			// Selected tab
809 -			// use "selected" option or try to retrieve:
810 -			// 1. from fragment identifier in url
811 -			// 2. from cookie
812 -			// 3. from selected class attribute on <li>
813 -			if (o.selected === undefined) {
814 -				if (location.hash) {
815 -					this.$tabs.each(function(i, a) {
816 -						if (a.hash == location.hash) {
817 -							o.selected = i;
818 -							// prevent page scroll to fragment
819 -							if ($.browser.msie || $.browser.opera) { // && !o.remote
820 -								var $toShow = $(location.hash), toShowId = $toShow.attr('id');
821 -								$toShow.attr('id', '');
822 -								setTimeout(function() {
823 -									$toShow.attr('id', toShowId); // restore id
824 -								}, 500);
825 -							}
826 -							scrollTo(0, 0);
827 -							return false; // break
828 -						}
829 -					});
830 -				}
831 -				else if (o.cookie) {
832 -					var index = parseInt($.cookie('ui-tabs-' + $.data(self.element[0])), 10);
833 -					if (index && self.$tabs[index])
834 -						o.selected = index;
835 -				}
836 -				else if (self.$lis.filter('.' + o.selectedClass).length)
837 -					o.selected = self.$lis.index( self.$lis.filter('.' + o.selectedClass)[0] );
838 -			}
839 -			o.selected = o.selected === null || o.selected !== undefined ? o.selected : 0; // first tab selected by default
840 -
841 -			// Take disabling tabs via class attribute from HTML
842 -			// into account and update option properly.
843 -			// A selected tab cannot become disabled.
844 -			o.disabled = $.unique(o.disabled.concat(
845 -				$.map(this.$lis.filter('.' + o.disabledClass),
846 -					function(n, i) { return self.$lis.index(n); } )
847 -			)).sort();
848 -			if ($.inArray(o.selected, o.disabled) != -1)
849 -				o.disabled.splice($.inArray(o.selected, o.disabled), 1);
850 -			
851 -			// highlight selected tab
852 -			this.$panels.addClass(o.hideClass);
853 -			this.$lis.removeClass(o.selectedClass);
854 -			if (o.selected !== null) {
855 -				this.$panels.eq(o.selected).show().removeClass(o.hideClass); // use show and remove class to show in any case no matter how it has been hidden before
856 -				this.$lis.eq(o.selected).addClass(o.selectedClass);
857 -				
858 -				// seems to be expected behavior that the show callback is fired
859 -				var onShow = function() {
860 -					self._trigger('show', null,
861 -						self.ui(self.$tabs[o.selected], self.$panels[o.selected]));
862 -				};
863 -
864 -				// load if remote tab
865 -				if ($.data(this.$tabs[o.selected], 'load.tabs'))
866 -					this.load(o.selected, onShow);
867 -				// just trigger show event
868 -				else
869 -					onShow();
870 -			}
871 -			
872 -			// clean up to avoid memory leaks in certain versions of IE 6
873 -			$(window).bind('unload', function() {
874 -				self.$tabs.unbind('.tabs');
875 -				self.$lis = self.$tabs = self.$panels = null;
876 -			});
877 -
878 -		}
879 -		// update selected after add/remove
880 -		else
881 -			o.selected = this.$lis.index( this.$lis.filter('.' + o.selectedClass)[0] );
882 -
883 -		// set or update cookie after init and add/remove respectively
884 -		if (o.cookie)
885 -			$.cookie('ui-tabs-' + $.data(self.element[0]), o.selected, o.cookie);
886 -		
887 -		// disable tabs
888 -		for (var i = 0, li; li = this.$lis[i]; i++)
889 -			$(li)[$.inArray(i, o.disabled) != -1 && !$(li).hasClass(o.selectedClass) ? 'addClass' : 'removeClass'](o.disabledClass);
890 -
891 -		// reset cache if switching from cached to not cached
892 -		if (o.cache === false)
893 -			this.$tabs.removeData('cache.tabs');
894 -		
895 -		// set up animations
896 -		var hideFx, showFx, baseFx = { 'min-width': 0, duration: 1 }, baseDuration = 'normal';
897 -		if (o.fx && o.fx.constructor == Array)
898 -			hideFx = o.fx[0] || baseFx, showFx = o.fx[1] || baseFx;
899 -		else
900 -			hideFx = showFx = o.fx || baseFx;
901 -
902 -		// reset some styles to maintain print style sheets etc.
903 -		var resetCSS = { display: '', overflow: '', height: '' };
904 -		if (!$.browser.msie) // not in IE to prevent ClearType font issue
905 -			resetCSS.opacity = '';
906 -
907 -		// Hide a tab, animation prevents browser scrolling to fragment,
908 -		// $show is optional.
909 -		function hideTab(clicked, $hide, $show) {
910 -			$hide.animate(hideFx, hideFx.duration || baseDuration, function() { //
911 -				$hide.addClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc.
912 -				if ($.browser.msie && hideFx.opacity)
913 -					$hide[0].style.filter = '';
914 -				if ($show)
915 -					showTab(clicked, $show, $hide);
916 -			});
917 -		}
918 -
919 -		// Show a tab, animation prevents browser scrolling to fragment,
920 -		// $hide is optional.
921 -		function showTab(clicked, $show, $hide) {
922 -			if (showFx === baseFx)
923 -				$show.css('display', 'block'); // prevent occasionally occuring flicker in Firefox cause by gap between showing and hiding the tab panels
924 -			$show.animate(showFx, showFx.duration || baseDuration, function() {
925 -				$show.removeClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc.
926 -				if ($.browser.msie && showFx.opacity)
927 -					$show[0].style.filter = '';
928 -
929 -				// callback
930 -				self._trigger('show', null, self.ui(clicked, $show[0]));
931 -			});
932 -		}
933 -
934 -		// switch a tab
935 -		function switchTab(clicked, $li, $hide, $show) {
936 -			/*if (o.bookmarkable && trueClick) { // add to history only if true click occured, not a triggered click
937 -				$.ajaxHistory.update(clicked.hash);
938 -			}*/
939 -			$li.addClass(o.selectedClass)
940 -				.siblings().removeClass(o.selectedClass);
941 -			hideTab(clicked, $hide, $show);
942 -		}
943 -
944 -		// attach tab event handler, unbind to avoid duplicates from former tabifying...
945 -		this.$tabs.unbind('.tabs').bind(o.event, function() {
946 -
947 -			//var trueClick = e.clientX; // add to history only if true click occured, not a triggered click
948 -			var $li = $(this).parents('li:eq(0)'),
949 -				$hide = self.$panels.filter(':visible'),
950 -				$show = $(this.hash);
951 -
952 -			// If tab is already selected and not unselectable or tab disabled or 
953 -			// or is already loading or click callback returns false stop here.
954 -			// Check if click handler returns false last so that it is not executed
955 -			// for a disabled or loading tab!
956 -			if (($li.hasClass(o.selectedClass) && !o.unselect)
957 -				|| $li.hasClass(o.disabledClass) 
958 -				|| $(this).hasClass(o.loadingClass)
959 -				|| self._trigger('select', null, self.ui(this, $show[0])) === false
960 -				) {
961 -				this.blur();
962 -				return false;
963 -			}
964 -
965 -			self.options.selected = self.$tabs.index(this);
966 -
967 -			// if tab may be closed
968 -			if (o.unselect) {
969 -				if ($li.hasClass(o.selectedClass)) {
970 -					self.options.selected = null;
971 -					$li.removeClass(o.selectedClass);
972 -					self.$panels.stop();
973 -					hideTab(this, $hide);
974 -					this.blur();
975 -					return false;
976 -				} else if (!$hide.length) {
977 -					self.$panels.stop();
978 -					var a = this;
979 -					self.load(self.$tabs.index(this), function() {
980 -						$li.addClass(o.selectedClass).addClass(o.unselectClass);
981 -						showTab(a, $show);
982 -					});
983 -					this.blur();
984 -					return false;
985 -				}
986 -			}
987 -
988 -			if (o.cookie)
989 -				$.cookie('ui-tabs-' + $.data(self.element[0]), self.options.selected, o.cookie);
990 -
991 -			// stop possibly running animations
992 -			self.$panels.stop();
993 -
994 -			// show new tab
995 -			if ($show.length) {
996 -
997 -				// prevent scrollbar scrolling to 0 and than back in IE7, happens only if bookmarking/history is enabled
998 -				/*if ($.browser.msie && o.bookmarkable) {
999 -					var showId = this.hash.replace('#', '');
1000 -					$show.attr('id', '');
1001 -					setTimeout(function() {
1002 -						$show.attr('id', showId); // restore id
1003 -					}, 0);
1004 -				}*/
1005 -
1006 -				var a = this;
1007 -				self.load(self.$tabs.index(this), $hide.length ? 
1008 -					function() {
1009 -						switchTab(a, $li, $hide, $show);
1010 -					} :
1011 -					function() {
1012 -						$li.addClass(o.selectedClass);
1013 -						showTab(a, $show);
1014 -					}
1015 -				);
1016 -
1017 -				// Set scrollbar to saved position - need to use timeout with 0 to prevent browser scroll to target of hash
1018 -				/*var scrollX = window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft || 0;
1019 -				var scrollY = window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop || 0;
1020 -				setTimeout(function() {
1021 -					scrollTo(scrollX, scrollY);
1022 -				}, 0);*/
1023 -
1024 -			} else
1025 -				throw 'jQuery UI Tabs: Mismatching fragment identifier.';
1026 -
1027 -			// Prevent IE from keeping other link focussed when using the back button
1028 -			// and remove dotted border from clicked link. This is controlled in modern
1029 -			// browsers via CSS, also blur removes focus from address bar in Firefox
1030 -			// which can become a usability and annoying problem with tabsRotate.
1031 -			if ($.browser.msie)
1032 -				this.blur();
1033 -
1034 -			//return o.bookmarkable && !!trueClick; // convert trueClick == undefined to Boolean required in IE
1035 -			return false;
1036 -
1037 -		});
1038 -
1039 -		// disable click if event is configured to something else
1040 -		if (!(/^click/).test(o.event))
1041 -			this.$tabs.bind('click.tabs', function() { return false; });
1042 -
1043 -	},
1044 -	add: function(url, label, index) {
1045 -		if (index == undefined) 
1046 -			index = this.$tabs.length; // append by default
1047 -
1048 -		var o = this.options;
1049 -		var $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label));
1050 -		$li.data('destroy.tabs', true);
1051 -
1052 -		var id = url.indexOf('#') == 0 ? url.replace('#', '') : this._tabId( $('a:first-child', $li)[0] );
1053 -
1054 -		// try to find an existing element before creating a new one
1055 -		var $panel = $('#' + id);
1056 -		if (!$panel.length) {
1057 -			$panel = $(o.panelTemplate).attr('id', id)
1058 -				.addClass(o.hideClass)
1059 -				.data('destroy.tabs', true);
1060 -		}
1061 -		$panel.addClass(o.panelClass);
1062 -		if (index >= this.$lis.length) {
1063 -			$li.appendTo(this.element);
1064 -			$panel.appendTo(this.element[0].parentNode);
1065 -		} else {
1066 -			$li.insertBefore(this.$lis[index]);
1067 -			$panel.insertBefore(this.$panels[index]);
1068 -		}
1069 -		
1070 -		o.disabled = $.map(o.disabled,
1071 -			function(n, i) { return n >= index ? ++n : n });
1072 -			
1073 -		this._tabify();
1074 -
1075 -		if (this.$tabs.length == 1) {
1076 -			$li.addClass(o.selectedClass);
1077 -			$panel.removeClass(o.hideClass);
1078 -			var href = $.data(this.$tabs[0], 'load.tabs');
1079 -			if (href)
1080 -				this.load(index, href);
1081 -		}
1082 -
1083 -		// callback
1084 -		this._trigger('add', null, this.ui(this.$tabs[index], this.$panels[index]));
1085 -	},
1086 -	remove: function(index) {
1087 -		var o = this.options, $li = this.$lis.eq(index).remove(),
1088 -			$panel = this.$panels.eq(index).remove();
1089 -
1090 -		// If selected tab was removed focus tab to the right or
1091 -		// in case the last tab was removed the tab to the left.
1092 -		if ($li.hasClass(o.selectedClass) && this.$tabs.length > 1)
1093 -			this.select(index + (index + 1 < this.$tabs.length ? 1 : -1));
1094 -
1095 -		o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
1096 -			function(n, i) { return n >= index ? --n : n });
1097 -
1098 -		this._tabify();
1099 -
1100 -		// callback
1101 -		this._trigger('remove', null, this.ui($li.find('a')[0], $panel[0]));
1102 -	},
1103 -	enable: function(index) {
1104 -		var o = this.options;
1105 -		if ($.inArray(index, o.disabled) == -1)
1106 -			return;
1107 -			
1108 -		var $li = this.$lis.eq(index).removeClass(o.disabledClass);
1109 -		if ($.browser.safari) { // fix disappearing tab (that used opacity indicating disabling) after enabling in Safari 2...
1110 -			$li.css('display', 'inline-block');
1111 -			setTimeout(function() {
1112 -				$li.css('display', 'block');
1113 -			}, 0);
1114 -		}
1115 -
1116 -		o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });
1117 -
1118 -		// callback
1119 -		this._trigger('enable', null, this.ui(this.$tabs[index], this.$panels[index]));
1120 -	},
1121 -	disable: function(index) {
1122 -		var self = this, o = this.options;
1123 -		if (index != o.selected) { // cannot disable already selected tab
1124 -			this.$lis.eq(index).addClass(o.disabledClass);
1125 -
1126 -			o.disabled.push(index);
1127 -			o.disabled.sort();
1128 -
1129 -			// callback
1130 -			this._trigger('disable', null, this.ui(this.$tabs[index], this.$panels[index]));
1131 -		}
1132 -	},
1133 -	select: function(index) {
1134 -		if (typeof index == 'string')
1135 -			index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] );
1136 -		this.$tabs.eq(index).trigger(this.options.event);
1137 -	},
1138 -	load: function(index, callback) { // callback is for internal usage only
1139 -		
1140 -		var self = this, o = this.options, $a = this.$tabs.eq(index), a = $a[0],
1141 -				bypassCache = callback == undefined || callback === false, url = $a.data('load.tabs');
1142 -
1143 -		callback = callback || function() {};
1144 -		
1145 -		// no remote or from cache - just finish with callback
1146 -		if (!url || !bypassCache && $.data(a, 'cache.tabs')) {
1147 -			callback();
1148 -			return;
1149 -		}
1150 -
1151 -		// load remote from here on
1152 -		
1153 -		var inner = function(parent) {
1154 -			var $parent = $(parent), $inner = $parent.find('*:last');
1155 -			return $inner.length && $inner.is(':not(img)') && $inner || $parent;
1156 -		};
1157 -		var cleanup = function() {
1158 -			self.$tabs.filter('.' + o.loadingClass).removeClass(o.loadingClass)
1159 -						.each(function() {
1160 -							if (o.spinner)
1161 -								inner(this).parent().html(inner(this).data('label.tabs'));
1162 -						});
1163 -			self.xhr = null;
1164 -		};
1165 -		
1166 -		if (o.spinner) {
1167 -			var label = inner(a).html();
1168 -			inner(a).wrapInner('<em></em>')
1169 -				.find('em').data('label.tabs', label).html(o.spinner);
1170 -		}
1171 -
1172 -		var ajaxOptions = $.extend({}, o.ajaxOptions, {
1173 -			url: url,
1174 -			success: function(r, s) {
1175 -				$(a.hash).html(r);
1176 -				cleanup();
1177 -				
1178 -				if (o.cache)
1179 -					$.data(a, 'cache.tabs', true); // if loaded once do not load them again
1180 -
1181 -				// callbacks
1182 -				self._trigger('load', null, self.ui(self.$tabs[index], self.$panels[index]));
1183 -				o.ajaxOptions.success && o.ajaxOptions.success(r, s);
1184 -				
1185 -				// This callback is required because the switch has to take
1186 -				// place after loading has completed. Call last in order to 
1187 -				// fire load before show callback...
1188 -				callback();
1189 -			}
1190 -		});
1191 -		if (this.xhr) {
1192 -			// terminate pending requests from other tabs and restore tab label
1193 -			this.xhr.abort();
1194 -			cleanup();
1195 -		}
1196 -		$a.addClass(o.loadingClass);
1197 -		setTimeout(function() { // timeout is again required in IE, "wait" for id being restored
1198 -			self.xhr = $.ajax(ajaxOptions);
1199 -		}, 0);
1200 -
1201 -	},
1202 -	url: function(index, url) {
1203 -		this.$tabs.eq(index).removeData('cache.tabs').data('load.tabs', url);
1204 -	},
1205 -	destroy: function() {
1206 -		var o = this.options;
1207 -		this.element.unbind('.tabs')
1208 -			.removeClass(o.navClass).removeData('tabs');
1209 -		this.$tabs.each(function() {
1210 -			var href = $.data(this, 'href.tabs');
1211 -			if (href)
1212 -				this.href = href;
1213 -			var $this = $(this).unbind('.tabs');
1214 -			$.each(['href', 'load', 'cache'], function(i, prefix) {
1215 -				$this.removeData(prefix + '.tabs');
1216 -			});
1217 -		});
1218 -		this.$lis.add(this.$panels).each(function() {
1219 -			if ($.data(this, 'destroy.tabs'))
1220 -				$(this).remove();
1221 -			else
1222 -				$(this).removeClass([o.selectedClass, o.unselectClass,
1223 -					o.disabledClass, o.panelClass, o.hideClass].join(' '));
1224 -		});
1225 -	}
1226 -});
1227 -
1228 -$.ui.tabs.defaults = {
1229 -	// basic setup
1230 -	unselect: false,
1231 -	event: 'click',
1232 -	disabled: [],
1233 -	cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
1234 -	// TODO history: false,
1235 -
1236 -	// Ajax
1237 -	spinner: 'Loading&#8230;',
1238 -	cache: false,
1239 -	idPrefix: 'ui-tabs-',
1240 -	ajaxOptions: {},
1241 -
1242 -	// animations
1243 -	fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
1244 -
1245 -	// templates
1246 -	tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>',
1247 -	panelTemplate: '<div></div>',
1248 -
1249 -	// CSS classes
1250 -	navClass: 'ui-tabs-nav',
1251 -	selectedClass: 'ui-tabs-selected',
1252 -	unselectClass: 'ui-tabs-unselect',
1253 -	disabledClass: 'ui-tabs-disabled',
1254 -	panelClass: 'ui-tabs-panel',
1255 -	hideClass: 'ui-tabs-hide',
1256 -	loadingClass: 'ui-tabs-loading'
1257 -};
1258 -
1259 -$.ui.tabs.getter = "length";
1260 -
1261 -/*
1262 - * Tabs Extensions
1263 - */
1264 -
1265 -/*
1266 - * Rotate
1267 - */
1268 -$.extend($.ui.tabs.prototype, {
1269 -	rotation: null,
1270 -	rotate: function(ms, continuing) {
1271 -		
1272 -		continuing = continuing || false;
1273 -		
1274 -		var self = this, t = this.options.selected;
1275 -		
1276 -		function start() {
1277 -			self.rotation = setInterval(function() {
1278 -				t = ++t < self.$tabs.length ? t : 0;
1279 -				self.select(t);
1280 -			}, ms); 
1281 -		}
1282 -		
1283 -		function stop(e) {
1284 -			if (!e || e.clientX) { // only in case of a true click
1285 -				clearInterval(self.rotation);
1286 -			}
1287 -		}
1288 -		
1289 -		// start interval
1290 -		if (ms) {
1291 -			start();
1292 -			if (!continuing)
1293 -				this.$tabs.bind(this.options.event, stop);
1294 -			else
1295 -				this.$tabs.bind(this.options.event, function() {
1296 -					stop();
1297 -					t = self.options.selected;
1298 -					start();
1299 -				});
1300 -		}
1301 -		// stop interval
1302 -		else {
1303 -			stop();
1304 -			this.$tabs.unbind(this.options.event, stop);
1305 -		}
1306 -	}
1307 -});
1308 -
1309 -})(jQuery);
diff --git a/web/facet.py b/web/facet.py
@@ -1123,12 +1123,12 @@
1310          self.minvalue = minvalue
1311          self.maxvalue = maxvalue
1312 
1313      def _render(self):
1314          facet = self.facet
1315 -        facet._cw.add_js('ui.slider.js')
1316 -        facet._cw.add_css('ui.all.css')
1317 +        facet._cw.add_js('jquery.ui.js')
1318 +        facet._cw.add_css('jquery.ui.css')
1319          sliderid = make_uid('theslider')
1320          facetid = xml_escape(self.facet.__regid__)
1321          facet._cw.html_headers.add_onload(self.onload % {
1322              'sliderid': sliderid,
1323              'facetid': facetid,
diff --git a/web/views/tabs.py b/web/views/tabs.py
@@ -125,12 +125,12 @@
1324          # delegate to the default tab if there is more than one entity
1325          # in the result set (tabs are pretty useless there)
1326          if entity and len(self.cw_rset) > 1:
1327              entity.view(default, w=self.w)
1328              return
1329 -        self._cw.add_css('ui.tabs.css')
1330 -        self._cw.add_js(('ui.core.js', 'ui.tabs.js', 'cubicweb.ajax.js'))
1331 +        self._cw.add_css('jquery.ui.css')
1332 +        self._cw.add_js(('jquery.ui.js', 'cubicweb.ajax.js'))
1333          # prune tabs : not all are to be shown
1334          tabs, active_tab = self.prune_tabs(tabs, default)
1335          # build the html structure
1336          w = self.w
1337          uid = entity and entity.eid or utils.make_uid('tab')
@@ -146,23 +146,23 @@
1338              w(u'</a>')
1339              w(u'</li>')
1340              if domid == active_tab:
1341                  active_tab_idx = i
1342          w(u'</ul>')
1343 -        w(u'</div>')
1344          for tabid, domid, tabkwargs in tabs:
1345              w(u'<div id="%s">' % domid)
1346              tabkwargs.setdefault('tabid', domid)
1347              tabkwargs.setdefault('vid', tabid)
1348              tabkwargs.setdefault('rset', self.cw_rset)
1349              self.lazyview(**tabkwargs)
1350              w(u'</div>')
1351 +        w(u'</div>')
1352          # call the setTab() JS function *after* each tab is generated
1353          # because the callback binding needs to be done before
1354          # XXX make work history: true
1355          self._cw.add_onload(u"""
1356 -  jQuery('#entity-tabs-%(eeid)s > ul').tabs( { selected: %(tabindex)s });
1357 +  jQuery('#entity-tabs-%(eeid)s').tabs( { selected: %(tabindex)s });
1358    setTab('%(domid)s', '%(cookiename)s');
1359  """ % {'tabindex'   : active_tab_idx,
1360         'domid'        : active_tab,
1361         'eeid'       : (entity and entity.eid or uid),
1362         'cookiename' : self.cookie_name})