/* * jQuery UI 1.7.2 * * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * http://docs.jquery.com/UI */
;jQuery.ui || (function($){var _remove = $.fn.remove, isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);//Helper functions and ui object$.ui ={version:"1.7.2", //$.ui.plugin is deprecated.  Use the proxy pattern instead.plugin:{add:function(module,option,set){var proto = $.ui[module].prototype;for(var i in set){proto.plugins[i] = proto.plugins[i] || [];proto.plugins[i].push([option,set[i]]);}
}
, call:function(instance,name,args){var set = instance.plugins[name];if(!set || !instance.element[0].parentNode){return; }
for (var i = 0; i < set.length; i++){if (instance.options[set[i][0]]){set[i][1].apply(instance.element,args);}
}
}
}
, contains:function(a,b){return document.compareDocumentPosition? a.compareDocumentPosition(b) & 16:a !== b && a.contains(b);}
, hasScroll:function(el,a){//If overflow is hidden,the element might have extra content,but the user wants to hide itif ($(el).css('overflow') == 'hidden'){return false; }
var scroll = (a && a == 'left') ? 'scrollLeft':'scrollTop', has = false;if (el[scroll] > 0){return true; }
// TODO:determine which cases actually cause this to happen// if the element doesn't have the scroll set,see if it's possible to// set the scrollel[scroll] = 1;has = (el[scroll] > 0);el[scroll] = 0;return has;}
, isOverAxis:function(x,reference,size){//Determines when x coordinate is over "b" element axisreturn (x > reference) && (x < (reference + size));}
, isOver:function(y,x,top,left,height,width){//Determines when x,y coordinates is over "b" elementreturn $.ui.isOverAxis(y,top,height) && $.ui.isOverAxis(x,left,width);}
, 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}
}
;// WAI-ARIA normalizationif (isFF2){var attr = $.attr, removeAttr = $.fn.removeAttr, ariaNS = "http://www.w3.org/2005/07/aaa", ariaState = /^aria-/, ariaRole = /^wairole:/;$.attr = function(elem,name,value){var set = value !== undefined;return (name == 'role'? (set? attr.call(this,elem,name,"wairole:" + value):(attr.apply(this,arguments) || "").replace(ariaRole,"")):(ariaState.test(name)? (set? elem.setAttributeNS(ariaNS,name.replace(ariaState,"aaa:"),value):attr.call(this,elem,name.replace(ariaState,"aaa:"))):attr.apply(this,arguments)));}
;$.fn.removeAttr = function(name){return (ariaState.test(name)? this.each(function(){this.removeAttributeNS(ariaNS,name.replace(ariaState,""));}
):removeAttr.call(this,name));}
;}
//jQuery plugins$.fn.extend({remove:function(){//Safari has a native remove event which actually removes DOM elements, //so we have to use triggerHandler instead of trigger (#3037).$("*",this).add(this).each(function(){$(this).triggerHandler("remove");}
);return _remove.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 scrollParent;if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))){scrollParent = this.parents().filter(function(){return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}
).eq(0);}
else{scrollParent = this.parents().filter(function(){return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}
).eq(0);}
return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document):scrollParent;}
}
);//Additional selectors$.extend($.expr[':'],{data:function(elem,i,match){return !!$.data(elem,match[3]);}
, focusable:function(element){var nodeName = element.nodeName.toLowerCase(), tabIndex = $.attr(element,'tabindex');return (/input|select|textarea|button|object/.test(nodeName)? !element.disabled:'a' == nodeName || 'area' == nodeName? element.href || !isNaN(tabIndex):!isNaN(tabIndex))// the element and all of its ancestors must be visible// the browser may report that the area is hidden&& !$(element)['area' == nodeName ? 'parents':'closest'](':hidden').length;}
, tabbable:function(element){var tabIndex = $.attr(element,'tabindex');return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');}
}
);// $.widget is a factory to create jQuery plugins// taking some boilerplate code out of the plugin codefunction getter(namespace,plugin,method,args){function getMethods(type){var methods = $[namespace][plugin][type] || [];return (typeof methods == 'string' ? methods.split(/,?\s+/):methods);}
var methods = getMethods('getter');if (args.length == 1 && typeof args[0] == 'string'){methods = methods.concat(getMethods('getterSetter'));}
return ($.inArray(method,methods) != -1);}
$.widget = function(name,prototype){var namespace = name.split(".")[0];name = name.split(".")[1];// create plugin method$.fn[name] = function(options){var isMethodCall = (typeof options == 'string'), args = Array.prototype.slice.call(arguments,1);// prevent calls to internal methodsif (isMethodCall && options.substring(0,1) == '_'){return this;}
// handle getter methodsif (isMethodCall && getter(namespace,name,options,args)){var instance = $.data(this[0],name);return (instance ? instance[options].apply(instance,args):undefined);}
// handle initialization and non-getter methodsreturn this.each(function(){var instance = $.data(this,name);// constructor(!instance && !isMethodCall &&$.data(this,name,new $[namespace][name](this,options))._init());// method call(instance && isMethodCall && $.isFunction(instance[options]) &&instance[options].apply(instance,args));}
);}
;// create widget constructor$[namespace] = $[namespace] ||{}
;$[namespace][name] = function(element,options){var self = this;this.namespace = namespace;this.widgetName = name;this.widgetEventPrefix = $[namespace][name].eventPrefix || name;this.widgetBaseClass = namespace + '-' + name;this.options = $.extend({}
,$.widget.defaults,$[namespace][name].defaults,$.metadata && $.metadata.get(element)[name], options);this.element = $(element).bind('setData.' + name,function(event,key,value){if (event.target == element){return self._setData(key,value);}
}
).bind('getData.' + name,function(event,key){if (event.target == element){return self._getData(key);}
}
).bind('remove',function(){return self.destroy();}
);}
;// add widget prototype$[namespace][name].prototype = $.extend({}
,$.widget.prototype,prototype);// TODO:merge getter and getterSetter properties from widget prototype// and plugin prototype$[namespace][name].getterSetter = 'option';}
;$.widget.prototype ={_init:function(){}
, destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled').removeAttr('aria-disabled');}
, option:function(key,value){var options = key, self = this;if (typeof key == "string"){if (value === undefined){return this._getData(key);}
options ={}
;options[key] = value;}
$.each(options,function(key,value){self._setData(key,value);}
);}
, _getData:function(key){return this.options[key];}
, _setData:function(key,value){this.options[key] = value;if (key == 'disabled'){this.element[value ? 'addClass':'removeClass'](this.widgetBaseClass + '-disabled' + ' ' +this.namespace + '-state-disabled').attr("aria-disabled",value);}
}
, enable:function(){this._setData('disabled',false);}
, disable:function(){this._setData('disabled',true);}
, _trigger:function(type,event,data){var callback = this.options[type], eventName = (type == this.widgetEventPrefix? type:this.widgetEventPrefix + type);event = $.Event(event);event.type = eventName;// copy original event properties over to the new event// this would happen if we could call $.event.fix instead of $.Event// but we don't have a way to force an event to be fixed multiple timesif (event.originalEvent){for (var i = $.event.props.length,prop; i;){prop = $.event.props[--i];event[prop] = event.originalEvent[prop];}
}
this.element.trigger(event,data);return !($.isFunction(callback) && callback.call(this.element[0],event,data) === false|| event.isDefaultPrevented());}
}
;$.widget.defaults ={disabled:false}
;
/** Mouse Interaction Plugin **/
$.ui.mouse ={_mouseInit:function(){var self = this;this.element.bind('mousedown.'+this.widgetName,function(event){return self._mouseDown(event);}
).bind('click.'+this.widgetName,function(event){if(self._preventClickEvent){self._preventClickEvent = false;event.stopImmediatePropagation();return false;}
}
);// Prevent text selection in IEif ($.browser.msie){this._mouseUnselectable = this.element.attr('unselectable');this.element.attr('unselectable','on');}
this.started = false;}
, //TODO:make sure destroying one instance of mouse doesn't mess with// other instances of mouse_mouseDestroy:function(){this.element.unbind('.'+this.widgetName);// Restore text selection in IE($.browser.msie&& this.element.attr('unselectable',this._mouseUnselectable));}
, _mouseDown:function(event){//don't let more than one widget handle mouseStart// TODO:figure out why we have to use originalEventevent.originalEvent = event.originalEvent ||{}
;if (event.originalEvent.mouseHandled){return; }
// we may have missed mouseup (out of window)(this._mouseStarted && this._mouseUp(event));this._mouseDownEvent = event;var self = this, btnIsLeft = (event.which == 1), elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length:false);if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)){return true;}
this.mouseDelayMet = !this.options.delay;if (!this.mouseDelayMet){this._mouseDelayTimer = setTimeout(function(){self.mouseDelayMet = true;}
,this.options.delay);}
if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)){this._mouseStarted = (this._mouseStart(event) !== false);if (!this._mouseStarted){event.preventDefault();return true;}
}
// these delegates are required to keep contextthis._mouseMoveDelegate = function(event){return self._mouseMove(event);}
;this._mouseUpDelegate = function(event){return self._mouseUp(event);}
;$(document).bind('mousemove.'+this.widgetName,this._mouseMoveDelegate).bind('mouseup.'+this.widgetName,this._mouseUpDelegate);// preventDefault() is used to prevent the selection of text here -// however,in Safari,this causes select boxes not to be selectable// anymore,so this fix is needed($.browser.safari || event.preventDefault());event.originalEvent.mouseHandled = true;return true;}
, _mouseMove:function(event){//IE mouseup check - mouseup happened when mouse was out of windowif ($.browser.msie && !event.button){return this._mouseUp(event);}
if (this._mouseStarted){this._mouseDrag(event);return event.preventDefault();}
if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)){this._mouseStarted =(this._mouseStart(this._mouseDownEvent,event) !== false);(this._mouseStarted ? this._mouseDrag(event):this._mouseUp(event));}
return !this._mouseStarted;}
, _mouseUp:function(event){$(document).unbind('mousemove.'+this.widgetName,this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName,this._mouseUpDelegate);if (this._mouseStarted){this._mouseStarted = false;this._preventClickEvent = (event.target == this._mouseDownEvent.target);this._mouseStop(event);}
return false;}
, _mouseDistanceMet:function(event){return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance);}
, _mouseDelayMet:function(event){return this.mouseDelayMet;}
, //These are placeholder methods,to be overriden by extending plugin_mouseStart:function(event){}
, _mouseDrag:function(event){}
, _mouseStop:function(event){}
, _mouseCapture:function(event){return true; }
}
;$.ui.mouse.defaults ={cancel:null, distance:1, delay:0}
;}
)(jQuery
