init
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
test/instrumented/
|
9
CHANGELOG.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
X-editable changelog
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Version 1.0.0 wip
|
||||||
|
----------------------------
|
||||||
|
Initial release. Based on bootstrap-editable 1.1.4, but strongly refactored.
|
||||||
|
- support of bootstrap, jqueryui or pure jquery as core library
|
||||||
|
- directory structure re-arranged: split on several js files
|
||||||
|
- all known bugs of bootstrap-editable closed
|
278
LICENSE-GPL
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
22
LICENSE-MIT
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Copyright (c) 2012 Vitaliy Potapov
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
43
README.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# X-editable
|
||||||
|
|
||||||
|
In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery.
|
||||||
|
|
||||||
|
## Description
|
||||||
|
X-editable is new life of [bootstrap-editable](http://github.com/vitalets/bootstrap-editable) that was strongly refactored and extended.
|
||||||
|
|
||||||
|
## Demo & Documentation
|
||||||
|
|
||||||
|
**http://vitalets.github.com/x-editable**
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
Please make all pull requests against `dev` branch. Thanks!
|
||||||
|
|
||||||
|
### Important notes
|
||||||
|
Please don't edit files in the `dist` subdirectory as they are generated via grunt. You'll find source code in the `src` subdirectory!
|
||||||
|
While grunt can run the included unit tests via PhantomJS, this shouldn't be considered a substitute for the real thing. Please be sure to test the `test/*.html` unit test file(s) in _actual_ browsers.
|
||||||
|
|
||||||
|
### Installing grunt
|
||||||
|
_This assumes you have [node.js](http://nodejs.org/) and [npm](http://npmjs.org/) installed already._
|
||||||
|
|
||||||
|
1. Test that grunt is installed globally by running `grunt --version` at the command-line.
|
||||||
|
1. If grunt isn't installed globally, run `npm install -g grunt` to install the latest version. _You may need to run `sudo npm install -g grunt`._
|
||||||
|
1. From the root directory of this project, run `npm install` to install the project's dependencies.
|
||||||
|
|
||||||
|
### Installing PhantomJS
|
||||||
|
|
||||||
|
In order for the qunit task to work properly, [PhantomJS](http://www.phantomjs.org/) must be installed and in the system PATH (if you can run "phantomjs" at the command line, this task should work).
|
||||||
|
|
||||||
|
Unfortunately, PhantomJS cannot be installed automatically via npm or grunt, so you need to install it yourself. There are a number of ways to install PhantomJS.
|
||||||
|
|
||||||
|
* [PhantomJS and Mac OS X](http://ariya.ofilabs.com/2012/02/phantomjs-and-mac-os-x.html)
|
||||||
|
* [PhantomJS Installation](http://code.google.com/p/phantomjs/wiki/Installation) (PhantomJS wiki)
|
||||||
|
|
||||||
|
Note that the `phantomjs` executable needs to be in the system `PATH` for grunt to see it.
|
||||||
|
|
||||||
|
* [How to set the path and environment variables in Windows](http://www.computerhope.com/issues/ch000549.htm)
|
||||||
|
* [Where does $PATH get set in OS X 10.6 Snow Leopard?](http://superuser.com/questions/69130/where-does-path-get-set-in-os-x-10-6-snow-leopard)
|
||||||
|
* [How do I change the PATH variable in Linux](https://www.google.com/search?q=How+do+I+change+the+PATH+variable+in+Linux)
|
||||||
|
|
||||||
|
## License
|
||||||
|
Copyright (c) 2012 Vitaliy Potapov
|
||||||
|
Licensed under the MIT, GPL licenses.
|
228
grunt.js
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
/*global module:false*/
|
||||||
|
module.exports = function(grunt) {
|
||||||
|
|
||||||
|
grunt.loadNpmTasks('grunt-contrib');
|
||||||
|
|
||||||
|
//grunt.loadTasks('tasks/');
|
||||||
|
|
||||||
|
//directories
|
||||||
|
var
|
||||||
|
lib = 'src/',
|
||||||
|
forms = lib+'editable-form/',
|
||||||
|
inputs = lib+'inputs/',
|
||||||
|
containers = lib+'containers/';
|
||||||
|
|
||||||
|
//config for different cores of lib
|
||||||
|
var config = {
|
||||||
|
bootstrap: {
|
||||||
|
form: [forms+'editable-form-bootstrap.js'],
|
||||||
|
container: [containers+'editable-popover.js'],
|
||||||
|
inputs: [inputs+'date/date.js', inputs+'date/bootstrap-datepicker.js'],
|
||||||
|
css: [inputs+'date/datepicker.css']
|
||||||
|
},
|
||||||
|
jqueryui: {
|
||||||
|
form: [forms+'editable-form-jqueryui.js'],
|
||||||
|
container: [containers+'editable-tooltip.js'],
|
||||||
|
inputs: [inputs+'dateui.js'],
|
||||||
|
css: []
|
||||||
|
},
|
||||||
|
jquery: {
|
||||||
|
form: [],
|
||||||
|
container: [containers+'editable-poshytip.js'],
|
||||||
|
inputs: [inputs+'dateui.js'],
|
||||||
|
css: []
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var inline = [containers+'editable-inline.js'];
|
||||||
|
|
||||||
|
//common js files
|
||||||
|
var js = [
|
||||||
|
'<banner:meta.banner>',
|
||||||
|
forms+'editable-form.js',
|
||||||
|
forms+'editable-form-utils.js',
|
||||||
|
containers+'editable-container.js',
|
||||||
|
lib+'element/editable-element.js',
|
||||||
|
inputs+'abstract.js',
|
||||||
|
inputs+'text.js',
|
||||||
|
inputs+'textarea.js',
|
||||||
|
inputs+'select.js'
|
||||||
|
];
|
||||||
|
|
||||||
|
//common css files
|
||||||
|
var css = [
|
||||||
|
'<banner:meta.banner>',
|
||||||
|
forms+'editable-form.css',
|
||||||
|
containers+'editable-container.css',
|
||||||
|
lib+'element/editable-element.css'
|
||||||
|
];
|
||||||
|
|
||||||
|
//create grunt concat task
|
||||||
|
var task, folder, dest, concat_files = {}, min_files = {};
|
||||||
|
for(var k in config) {
|
||||||
|
folder = '<%= dist %>/'+k+'-editable/';
|
||||||
|
|
||||||
|
//popup
|
||||||
|
task = k+'_popup_js';
|
||||||
|
dest = folder+'js/'+k+'-editable'+ (k === 'jquery' ? '-poshytip' : '');
|
||||||
|
concat_files[task] = {
|
||||||
|
src: js.concat(config[k].form).concat(config[k].container).concat(config[k].inputs),
|
||||||
|
dest: dest+'.js'
|
||||||
|
};
|
||||||
|
min_files[task] = {
|
||||||
|
src: ['<banner:meta.banner>', '<config:concat.'+task+'.dest>'],
|
||||||
|
dest: dest + '.min.js'
|
||||||
|
};
|
||||||
|
|
||||||
|
//inline
|
||||||
|
task = k+'_inline_js';
|
||||||
|
dest = folder+'js/'+k+'-editable-inline';
|
||||||
|
concat_files[task] = {
|
||||||
|
src: js.concat(config[k].form).concat(inline).concat(config[k].inputs),
|
||||||
|
dest: dest+'.js'
|
||||||
|
};
|
||||||
|
min_files[task] = {
|
||||||
|
src: ['<banner:meta.banner>', '<config:concat.'+task+'.dest>'],
|
||||||
|
dest: dest + '.min.js'
|
||||||
|
};
|
||||||
|
|
||||||
|
//css
|
||||||
|
concat_files[k+'_css'] = {
|
||||||
|
src: css.concat(config[k].css),
|
||||||
|
dest: folder+'css/'+k+'-editable.css'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var module = '';
|
||||||
|
//module = '&module=textarea';
|
||||||
|
//module = '&module=select';
|
||||||
|
//module = '&module=text';
|
||||||
|
|
||||||
|
|
||||||
|
// Project configuration.
|
||||||
|
grunt.initConfig({
|
||||||
|
pkg: '<json:package.json>',
|
||||||
|
dist: 'dist',
|
||||||
|
meta: {
|
||||||
|
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> \n' +
|
||||||
|
'* <%= pkg.description %>\n' +
|
||||||
|
'* <%= pkg.homepage %>\n' +
|
||||||
|
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
||||||
|
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
|
||||||
|
},
|
||||||
|
clean: ['<config:dist>'],
|
||||||
|
concat: concat_files,
|
||||||
|
min: min_files,
|
||||||
|
qunit: {
|
||||||
|
bootstrap: [
|
||||||
|
'http://localhost:8000/test/index.html?f=bootstrap&c=popup'+module,
|
||||||
|
'http://localhost:8000/test/index.html?f=bootstrap&c=inline'+module
|
||||||
|
],
|
||||||
|
jqueryui: [
|
||||||
|
'http://localhost:8000/test/index.html?f=jqueryui&c=popup'+module,
|
||||||
|
'http://localhost:8000/test/index.html?f=jqueryui&c=inline'+module
|
||||||
|
],
|
||||||
|
plain: [
|
||||||
|
'http://localhost:8000/test/index.html?f=plain&c=popup'+module,
|
||||||
|
'http://localhost:8000/test/index.html?f=plain&c=inline'+module
|
||||||
|
]
|
||||||
|
// files: ['test/index.html']
|
||||||
|
},
|
||||||
|
server: {
|
||||||
|
port: 8000,
|
||||||
|
base: '.'
|
||||||
|
},
|
||||||
|
|
||||||
|
lint: {
|
||||||
|
//TODO: lint tests files
|
||||||
|
//files: ['grunt.js', 'src/js/*.js', 'test/**/*.js']
|
||||||
|
files: ['grunt.js',
|
||||||
|
'src/editable-form/*.js',
|
||||||
|
'src/containers/*.js',
|
||||||
|
'src/inputs/*.js',
|
||||||
|
'src/element/*.js',
|
||||||
|
'src/inputs/*.js',
|
||||||
|
'src/inputs/date/date.js'
|
||||||
|
//do not check bootstrap-datepicker
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
watch: {
|
||||||
|
files: '<config:lint.files>',
|
||||||
|
tasks: 'lint qunit'
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
jshint: {
|
||||||
|
options: {
|
||||||
|
curly: true,
|
||||||
|
eqeqeq: true,
|
||||||
|
immed: true,
|
||||||
|
latedef: true,
|
||||||
|
newcap: true,
|
||||||
|
noarg: true,
|
||||||
|
sub: true,
|
||||||
|
undef: true,
|
||||||
|
boss: true,
|
||||||
|
eqnull: true,
|
||||||
|
browser: true,
|
||||||
|
evil: false
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
jQuery: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
copy: {
|
||||||
|
dist: {
|
||||||
|
files: {
|
||||||
|
'<%= dist %>/bootstrap-editable/css/img' : 'src/editable-form/img/*',
|
||||||
|
'<%= dist %>/jqueryui-editable/css/img' : 'src/editable-form/img/*',
|
||||||
|
'<%= dist %>/jquery-editable/css/img' : 'src/editable-form/img/*',
|
||||||
|
'<%= dist %>/bootstrap-editable/js/locales' : 'src/inputs/date/locales/*',
|
||||||
|
'<%= dist %>': ['LICENSE-GPL', 'LICENSE-MIT', 'README.md', 'CHANGELOG.txt']
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
flatten: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//compress does not work properly for MAC OS (see https://github.com/vitalets/bootstrap-editable/issues/19)
|
||||||
|
//zip will be created manually
|
||||||
|
/*
|
||||||
|
compress: {
|
||||||
|
zip: {
|
||||||
|
options: {
|
||||||
|
mode: "zip",
|
||||||
|
//TODO: unfortunatly here <%= dist_source %> and <config:dist_source> does not work
|
||||||
|
basePath: "dist"
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
"<%= dist %>/bootstrap-editable-v<%= pkg.version %>.zip": ["<%= dist_source %>/ **", "<%= dist %>/libs/ **"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tgz: {
|
||||||
|
options: {
|
||||||
|
mode: "tgz",
|
||||||
|
basePath: "dist"
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
"<%= dist %>/bootstrap-editable-v<%= pkg.version %>.tar.gz": ["<%= dist_source %>/ **", "<%= dist %>/libs/ **"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
uglify: {}
|
||||||
|
});
|
||||||
|
|
||||||
|
//test task
|
||||||
|
grunt.registerTask('test', 'server qunit:bootstrap');
|
||||||
|
grunt.registerTask('testall', 'server qunit');
|
||||||
|
|
||||||
|
// Default task.
|
||||||
|
// grunt.registerTask('default', 'lint qunit');
|
||||||
|
grunt.registerTask('default', 'clean concat min copy');
|
||||||
|
|
||||||
|
// build
|
||||||
|
grunt.registerTask('build', 'clean lint concat min copy');
|
||||||
|
|
||||||
|
//to run particular task use ":", e.g. copy:libs
|
||||||
|
};
|
815
libs/bootstrap204/css/bootstrap-responsive.css
vendored
Normal file
@ -0,0 +1,815 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap Responsive v2.0.4
|
||||||
|
*
|
||||||
|
* Copyright 2012 Twitter, Inc
|
||||||
|
* Licensed under the Apache License v2.0
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.clearfix {
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-text {
|
||||||
|
font: 0/0 a;
|
||||||
|
color: transparent;
|
||||||
|
text-shadow: none;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-block-level {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 28px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.visible-phone {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.visible-tablet {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden-desktop {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.visible-phone {
|
||||||
|
display: inherit !important;
|
||||||
|
}
|
||||||
|
.hidden-phone {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.hidden-desktop {
|
||||||
|
display: inherit !important;
|
||||||
|
}
|
||||||
|
.visible-desktop {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) and (max-width: 979px) {
|
||||||
|
.visible-tablet {
|
||||||
|
display: inherit !important;
|
||||||
|
}
|
||||||
|
.hidden-tablet {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.hidden-desktop {
|
||||||
|
display: inherit !important;
|
||||||
|
}
|
||||||
|
.visible-desktop {
|
||||||
|
display: none !important ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.nav-collapse {
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
.page-header h1 small {
|
||||||
|
display: block;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.form-horizontal .control-group > label {
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
padding-top: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.form-horizontal .controls {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.form-horizontal .control-list {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-actions {
|
||||||
|
padding-right: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
.modal {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 10px;
|
||||||
|
left: 10px;
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.modal.fade.in {
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
.modal-header .close {
|
||||||
|
padding: 10px;
|
||||||
|
margin: -10px;
|
||||||
|
}
|
||||||
|
.carousel-caption {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
body {
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
margin-right: -20px;
|
||||||
|
margin-left: -20px;
|
||||||
|
}
|
||||||
|
.container-fluid {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.dl-horizontal dt {
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
clear: none;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.dl-horizontal dd {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.row-fluid {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.row,
|
||||||
|
.thumbnails {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
[class*="span"],
|
||||||
|
.row-fluid [class*="span"] {
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.input-large,
|
||||||
|
.input-xlarge,
|
||||||
|
.input-xxlarge,
|
||||||
|
input[class*="span"],
|
||||||
|
select[class*="span"],
|
||||||
|
textarea[class*="span"],
|
||||||
|
.uneditable-input {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 28px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.input-prepend input,
|
||||||
|
.input-append input,
|
||||||
|
.input-prepend input[class*="span"],
|
||||||
|
.input-append input[class*="span"] {
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) and (max-width: 979px) {
|
||||||
|
.row {
|
||||||
|
margin-left: -20px;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
.row:before,
|
||||||
|
.row:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.row:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
[class*="span"] {
|
||||||
|
float: left;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
.container,
|
||||||
|
.navbar-fixed-top .container,
|
||||||
|
.navbar-fixed-bottom .container {
|
||||||
|
width: 724px;
|
||||||
|
}
|
||||||
|
.span12 {
|
||||||
|
width: 724px;
|
||||||
|
}
|
||||||
|
.span11 {
|
||||||
|
width: 662px;
|
||||||
|
}
|
||||||
|
.span10 {
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
.span9 {
|
||||||
|
width: 538px;
|
||||||
|
}
|
||||||
|
.span8 {
|
||||||
|
width: 476px;
|
||||||
|
}
|
||||||
|
.span7 {
|
||||||
|
width: 414px;
|
||||||
|
}
|
||||||
|
.span6 {
|
||||||
|
width: 352px;
|
||||||
|
}
|
||||||
|
.span5 {
|
||||||
|
width: 290px;
|
||||||
|
}
|
||||||
|
.span4 {
|
||||||
|
width: 228px;
|
||||||
|
}
|
||||||
|
.span3 {
|
||||||
|
width: 166px;
|
||||||
|
}
|
||||||
|
.span2 {
|
||||||
|
width: 104px;
|
||||||
|
}
|
||||||
|
.span1 {
|
||||||
|
width: 42px;
|
||||||
|
}
|
||||||
|
.offset12 {
|
||||||
|
margin-left: 764px;
|
||||||
|
}
|
||||||
|
.offset11 {
|
||||||
|
margin-left: 702px;
|
||||||
|
}
|
||||||
|
.offset10 {
|
||||||
|
margin-left: 640px;
|
||||||
|
}
|
||||||
|
.offset9 {
|
||||||
|
margin-left: 578px;
|
||||||
|
}
|
||||||
|
.offset8 {
|
||||||
|
margin-left: 516px;
|
||||||
|
}
|
||||||
|
.offset7 {
|
||||||
|
margin-left: 454px;
|
||||||
|
}
|
||||||
|
.offset6 {
|
||||||
|
margin-left: 392px;
|
||||||
|
}
|
||||||
|
.offset5 {
|
||||||
|
margin-left: 330px;
|
||||||
|
}
|
||||||
|
.offset4 {
|
||||||
|
margin-left: 268px;
|
||||||
|
}
|
||||||
|
.offset3 {
|
||||||
|
margin-left: 206px;
|
||||||
|
}
|
||||||
|
.offset2 {
|
||||||
|
margin-left: 144px;
|
||||||
|
}
|
||||||
|
.offset1 {
|
||||||
|
margin-left: 82px;
|
||||||
|
}
|
||||||
|
.row-fluid {
|
||||||
|
width: 100%;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
.row-fluid:before,
|
||||||
|
.row-fluid:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.row-fluid:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.row-fluid [class*="span"] {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 28px;
|
||||||
|
margin-left: 2.762430939%;
|
||||||
|
*margin-left: 2.709239449638298%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.row-fluid [class*="span"]:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.row-fluid .span12 {
|
||||||
|
width: 99.999999993%;
|
||||||
|
*width: 99.9468085036383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span11 {
|
||||||
|
width: 91.436464082%;
|
||||||
|
*width: 91.38327259263829%;
|
||||||
|
}
|
||||||
|
.row-fluid .span10 {
|
||||||
|
width: 82.87292817100001%;
|
||||||
|
*width: 82.8197366816383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span9 {
|
||||||
|
width: 74.30939226%;
|
||||||
|
*width: 74.25620077063829%;
|
||||||
|
}
|
||||||
|
.row-fluid .span8 {
|
||||||
|
width: 65.74585634900001%;
|
||||||
|
*width: 65.6926648596383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span7 {
|
||||||
|
width: 57.182320438000005%;
|
||||||
|
*width: 57.129128948638304%;
|
||||||
|
}
|
||||||
|
.row-fluid .span6 {
|
||||||
|
width: 48.618784527%;
|
||||||
|
*width: 48.5655930376383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span5 {
|
||||||
|
width: 40.055248616%;
|
||||||
|
*width: 40.0020571266383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span4 {
|
||||||
|
width: 31.491712705%;
|
||||||
|
*width: 31.4385212156383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span3 {
|
||||||
|
width: 22.928176794%;
|
||||||
|
*width: 22.874985304638297%;
|
||||||
|
}
|
||||||
|
.row-fluid .span2 {
|
||||||
|
width: 14.364640883%;
|
||||||
|
*width: 14.311449393638298%;
|
||||||
|
}
|
||||||
|
.row-fluid .span1 {
|
||||||
|
width: 5.801104972%;
|
||||||
|
*width: 5.747913482638298%;
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
.uneditable-input {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
input.span12,
|
||||||
|
textarea.span12,
|
||||||
|
.uneditable-input.span12 {
|
||||||
|
width: 714px;
|
||||||
|
}
|
||||||
|
input.span11,
|
||||||
|
textarea.span11,
|
||||||
|
.uneditable-input.span11 {
|
||||||
|
width: 652px;
|
||||||
|
}
|
||||||
|
input.span10,
|
||||||
|
textarea.span10,
|
||||||
|
.uneditable-input.span10 {
|
||||||
|
width: 590px;
|
||||||
|
}
|
||||||
|
input.span9,
|
||||||
|
textarea.span9,
|
||||||
|
.uneditable-input.span9 {
|
||||||
|
width: 528px;
|
||||||
|
}
|
||||||
|
input.span8,
|
||||||
|
textarea.span8,
|
||||||
|
.uneditable-input.span8 {
|
||||||
|
width: 466px;
|
||||||
|
}
|
||||||
|
input.span7,
|
||||||
|
textarea.span7,
|
||||||
|
.uneditable-input.span7 {
|
||||||
|
width: 404px;
|
||||||
|
}
|
||||||
|
input.span6,
|
||||||
|
textarea.span6,
|
||||||
|
.uneditable-input.span6 {
|
||||||
|
width: 342px;
|
||||||
|
}
|
||||||
|
input.span5,
|
||||||
|
textarea.span5,
|
||||||
|
.uneditable-input.span5 {
|
||||||
|
width: 280px;
|
||||||
|
}
|
||||||
|
input.span4,
|
||||||
|
textarea.span4,
|
||||||
|
.uneditable-input.span4 {
|
||||||
|
width: 218px;
|
||||||
|
}
|
||||||
|
input.span3,
|
||||||
|
textarea.span3,
|
||||||
|
.uneditable-input.span3 {
|
||||||
|
width: 156px;
|
||||||
|
}
|
||||||
|
input.span2,
|
||||||
|
textarea.span2,
|
||||||
|
.uneditable-input.span2 {
|
||||||
|
width: 94px;
|
||||||
|
}
|
||||||
|
input.span1,
|
||||||
|
textarea.span1,
|
||||||
|
.uneditable-input.span1 {
|
||||||
|
width: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
.row {
|
||||||
|
margin-left: -30px;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
.row:before,
|
||||||
|
.row:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.row:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
[class*="span"] {
|
||||||
|
float: left;
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
.container,
|
||||||
|
.navbar-fixed-top .container,
|
||||||
|
.navbar-fixed-bottom .container {
|
||||||
|
width: 1170px;
|
||||||
|
}
|
||||||
|
.span12 {
|
||||||
|
width: 1170px;
|
||||||
|
}
|
||||||
|
.span11 {
|
||||||
|
width: 1070px;
|
||||||
|
}
|
||||||
|
.span10 {
|
||||||
|
width: 970px;
|
||||||
|
}
|
||||||
|
.span9 {
|
||||||
|
width: 870px;
|
||||||
|
}
|
||||||
|
.span8 {
|
||||||
|
width: 770px;
|
||||||
|
}
|
||||||
|
.span7 {
|
||||||
|
width: 670px;
|
||||||
|
}
|
||||||
|
.span6 {
|
||||||
|
width: 570px;
|
||||||
|
}
|
||||||
|
.span5 {
|
||||||
|
width: 470px;
|
||||||
|
}
|
||||||
|
.span4 {
|
||||||
|
width: 370px;
|
||||||
|
}
|
||||||
|
.span3 {
|
||||||
|
width: 270px;
|
||||||
|
}
|
||||||
|
.span2 {
|
||||||
|
width: 170px;
|
||||||
|
}
|
||||||
|
.span1 {
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
.offset12 {
|
||||||
|
margin-left: 1230px;
|
||||||
|
}
|
||||||
|
.offset11 {
|
||||||
|
margin-left: 1130px;
|
||||||
|
}
|
||||||
|
.offset10 {
|
||||||
|
margin-left: 1030px;
|
||||||
|
}
|
||||||
|
.offset9 {
|
||||||
|
margin-left: 930px;
|
||||||
|
}
|
||||||
|
.offset8 {
|
||||||
|
margin-left: 830px;
|
||||||
|
}
|
||||||
|
.offset7 {
|
||||||
|
margin-left: 730px;
|
||||||
|
}
|
||||||
|
.offset6 {
|
||||||
|
margin-left: 630px;
|
||||||
|
}
|
||||||
|
.offset5 {
|
||||||
|
margin-left: 530px;
|
||||||
|
}
|
||||||
|
.offset4 {
|
||||||
|
margin-left: 430px;
|
||||||
|
}
|
||||||
|
.offset3 {
|
||||||
|
margin-left: 330px;
|
||||||
|
}
|
||||||
|
.offset2 {
|
||||||
|
margin-left: 230px;
|
||||||
|
}
|
||||||
|
.offset1 {
|
||||||
|
margin-left: 130px;
|
||||||
|
}
|
||||||
|
.row-fluid {
|
||||||
|
width: 100%;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
.row-fluid:before,
|
||||||
|
.row-fluid:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.row-fluid:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.row-fluid [class*="span"] {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 28px;
|
||||||
|
margin-left: 2.564102564%;
|
||||||
|
*margin-left: 2.510911074638298%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.row-fluid [class*="span"]:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.row-fluid .span12 {
|
||||||
|
width: 100%;
|
||||||
|
*width: 99.94680851063829%;
|
||||||
|
}
|
||||||
|
.row-fluid .span11 {
|
||||||
|
width: 91.45299145300001%;
|
||||||
|
*width: 91.3997999636383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span10 {
|
||||||
|
width: 82.905982906%;
|
||||||
|
*width: 82.8527914166383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span9 {
|
||||||
|
width: 74.358974359%;
|
||||||
|
*width: 74.30578286963829%;
|
||||||
|
}
|
||||||
|
.row-fluid .span8 {
|
||||||
|
width: 65.81196581200001%;
|
||||||
|
*width: 65.7587743226383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span7 {
|
||||||
|
width: 57.264957265%;
|
||||||
|
*width: 57.2117657756383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span6 {
|
||||||
|
width: 48.717948718%;
|
||||||
|
*width: 48.6647572286383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span5 {
|
||||||
|
width: 40.170940171000005%;
|
||||||
|
*width: 40.117748681638304%;
|
||||||
|
}
|
||||||
|
.row-fluid .span4 {
|
||||||
|
width: 31.623931624%;
|
||||||
|
*width: 31.5707401346383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span3 {
|
||||||
|
width: 23.076923077%;
|
||||||
|
*width: 23.0237315876383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span2 {
|
||||||
|
width: 14.529914530000001%;
|
||||||
|
*width: 14.4767230406383%;
|
||||||
|
}
|
||||||
|
.row-fluid .span1 {
|
||||||
|
width: 5.982905983%;
|
||||||
|
*width: 5.929714493638298%;
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
.uneditable-input {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
input.span12,
|
||||||
|
textarea.span12,
|
||||||
|
.uneditable-input.span12 {
|
||||||
|
width: 1160px;
|
||||||
|
}
|
||||||
|
input.span11,
|
||||||
|
textarea.span11,
|
||||||
|
.uneditable-input.span11 {
|
||||||
|
width: 1060px;
|
||||||
|
}
|
||||||
|
input.span10,
|
||||||
|
textarea.span10,
|
||||||
|
.uneditable-input.span10 {
|
||||||
|
width: 960px;
|
||||||
|
}
|
||||||
|
input.span9,
|
||||||
|
textarea.span9,
|
||||||
|
.uneditable-input.span9 {
|
||||||
|
width: 860px;
|
||||||
|
}
|
||||||
|
input.span8,
|
||||||
|
textarea.span8,
|
||||||
|
.uneditable-input.span8 {
|
||||||
|
width: 760px;
|
||||||
|
}
|
||||||
|
input.span7,
|
||||||
|
textarea.span7,
|
||||||
|
.uneditable-input.span7 {
|
||||||
|
width: 660px;
|
||||||
|
}
|
||||||
|
input.span6,
|
||||||
|
textarea.span6,
|
||||||
|
.uneditable-input.span6 {
|
||||||
|
width: 560px;
|
||||||
|
}
|
||||||
|
input.span5,
|
||||||
|
textarea.span5,
|
||||||
|
.uneditable-input.span5 {
|
||||||
|
width: 460px;
|
||||||
|
}
|
||||||
|
input.span4,
|
||||||
|
textarea.span4,
|
||||||
|
.uneditable-input.span4 {
|
||||||
|
width: 360px;
|
||||||
|
}
|
||||||
|
input.span3,
|
||||||
|
textarea.span3,
|
||||||
|
.uneditable-input.span3 {
|
||||||
|
width: 260px;
|
||||||
|
}
|
||||||
|
input.span2,
|
||||||
|
textarea.span2,
|
||||||
|
.uneditable-input.span2 {
|
||||||
|
width: 160px;
|
||||||
|
}
|
||||||
|
input.span1,
|
||||||
|
textarea.span1,
|
||||||
|
.uneditable-input.span1 {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.thumbnails {
|
||||||
|
margin-left: -30px;
|
||||||
|
}
|
||||||
|
.thumbnails > li {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
.row-fluid .thumbnails {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 979px) {
|
||||||
|
body {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top .navbar-inner,
|
||||||
|
.navbar-fixed-bottom .navbar-inner {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.navbar .container {
|
||||||
|
width: auto;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.navbar .brand {
|
||||||
|
padding-right: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin: 0 0 0 -5px;
|
||||||
|
}
|
||||||
|
.nav-collapse {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav {
|
||||||
|
float: none;
|
||||||
|
margin: 0 0 9px;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li > a {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > .divider-vertical {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav .nav-header {
|
||||||
|
color: #999999;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li > a,
|
||||||
|
.nav-collapse .dropdown-menu a {
|
||||||
|
padding: 6px 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #999999;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.nav-collapse .btn {
|
||||||
|
padding: 4px 10px 4px;
|
||||||
|
font-weight: normal;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu li + li a {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li > a:hover,
|
||||||
|
.nav-collapse .dropdown-menu a:hover {
|
||||||
|
background-color: #222222;
|
||||||
|
}
|
||||||
|
.nav-collapse.in .btn-group {
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu {
|
||||||
|
position: static;
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
max-width: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 15px;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
-moz-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu:before,
|
||||||
|
.nav-collapse .dropdown-menu:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu .divider {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .navbar-form,
|
||||||
|
.nav-collapse .navbar-search {
|
||||||
|
float: none;
|
||||||
|
padding: 9px 15px;
|
||||||
|
margin: 9px 0;
|
||||||
|
border-top: 1px solid #222222;
|
||||||
|
border-bottom: 1px solid #222222;
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.navbar .nav-collapse .nav.pull-right {
|
||||||
|
float: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.nav-collapse,
|
||||||
|
.nav-collapse.collapse {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.navbar .btn-navbar {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.navbar-static .navbar-inner {
|
||||||
|
padding-right: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 980px) {
|
||||||
|
.nav-collapse.collapse {
|
||||||
|
height: auto !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
}
|
9
libs/bootstrap204/css/bootstrap-responsive.min.css
vendored
Normal file
4983
libs/bootstrap204/css/bootstrap.css
vendored
Normal file
9
libs/bootstrap204/css/bootstrap.min.css
vendored
Normal file
BIN
libs/bootstrap204/img/glyphicons-halflings-white.png
Normal file
After ![]() (image error) Size: 8.6 KiB |
BIN
libs/bootstrap204/img/glyphicons-halflings.png
Normal file
After ![]() (image error) Size: 14 KiB |
1825
libs/bootstrap204/js/bootstrap.js
vendored
Normal file
6
libs/bootstrap204/js/bootstrap.min.js
vendored
Normal file
1058
libs/bootstrap211/css/bootstrap-responsive.css
vendored
Normal file
9
libs/bootstrap211/css/bootstrap-responsive.min.css
vendored
Normal file
5774
libs/bootstrap211/css/bootstrap.css
vendored
Normal file
9
libs/bootstrap211/css/bootstrap.min.css
vendored
Normal file
BIN
libs/bootstrap211/img/glyphicons-halflings-white.png
Normal file
After ![]() (image error) Size: 8.6 KiB |
BIN
libs/bootstrap211/img/glyphicons-halflings.png
Normal file
After ![]() (image error) Size: 12 KiB |
2027
libs/bootstrap211/js/bootstrap.js
vendored
Normal file
6
libs/bootstrap211/js/bootstrap.min.js
vendored
Normal file
1088
libs/bootstrap221/css/bootstrap-responsive.css
vendored
Normal file
9
libs/bootstrap221/css/bootstrap-responsive.min.css
vendored
Normal file
5893
libs/bootstrap221/css/bootstrap.css
vendored
Normal file
9
libs/bootstrap221/css/bootstrap.min.css
vendored
Normal file
BIN
libs/bootstrap221/img/glyphicons-halflings-white.png
Normal file
After ![]() (image error) Size: 8.6 KiB |
BIN
libs/bootstrap221/img/glyphicons-halflings.png
Normal file
After ![]() (image error) Size: 12 KiB |
2025
libs/bootstrap221/js/bootstrap.js
vendored
Normal file
6
libs/bootstrap221/js/bootstrap.min.js
vendored
Normal file
After ![]() (image error) Size: 180 B |
After ![]() (image error) Size: 182 B |
After ![]() (image error) Size: 162 B |
After ![]() (image error) Size: 123 B |
After ![]() (image error) Size: 119 B |
BIN
libs/jquery-ui-1.9.1.custom/css/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
Normal file
After ![]() (image error) Size: 3.4 KiB |
BIN
libs/jquery-ui-1.9.1.custom/css/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
Normal file
After ![]() (image error) Size: 104 B |
BIN
libs/jquery-ui-1.9.1.custom/css/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
Normal file
After ![]() (image error) Size: 88 B |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
461
libs/jquery-ui-1.9.1.custom/css/redmond/jquery-ui-1.9.1.custom.css
vendored
Normal file
@ -0,0 +1,461 @@
|
|||||||
|
/*! jQuery UI - v1.9.1 - 2012-11-05
|
||||||
|
* http://jqueryui.com
|
||||||
|
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
|
||||||
|
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
||||||
|
* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */
|
||||||
|
|
||||||
|
/* Layout helpers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-helper-hidden { display: none; }
|
||||||
|
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||||
|
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||||
|
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
|
||||||
|
.ui-helper-clearfix:after { clear: both; }
|
||||||
|
.ui-helper-clearfix { zoom: 1; }
|
||||||
|
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||||
|
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-disabled { cursor: default !important; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||||
|
.ui-resizable { position: relative;}
|
||||||
|
.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
|
||||||
|
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||||
|
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
||||||
|
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
||||||
|
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||||
|
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||||
|
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||||
|
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
||||||
|
.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
|
||||||
|
.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
|
||||||
|
.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
|
||||||
|
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
|
||||||
|
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
|
||||||
|
.ui-autocomplete {
|
||||||
|
position: absolute;
|
||||||
|
top: 0; /* #8656 */
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
||||||
|
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
||||||
|
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
|
||||||
|
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
||||||
|
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
||||||
|
.ui-button-icons-only { width: 3.4em; }
|
||||||
|
button.ui-button-icons-only { width: 3.7em; }
|
||||||
|
|
||||||
|
/*button text element */
|
||||||
|
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
||||||
|
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
||||||
|
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
||||||
|
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
||||||
|
/* no icon support for input elements, provide padding by default */
|
||||||
|
input.ui-button { padding: .4em 1em; }
|
||||||
|
|
||||||
|
/*button icon element(s) */
|
||||||
|
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
|
||||||
|
/*button sets*/
|
||||||
|
.ui-buttonset { margin-right: 7px; }
|
||||||
|
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
||||||
|
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||||
|
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
||||||
|
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||||
|
.ui-datepicker select.ui-datepicker-month,
|
||||||
|
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||||
|
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||||
|
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||||
|
.ui-datepicker td { border: 0; padding: 1px; }
|
||||||
|
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||||
|
|
||||||
|
/* with multiple calendars */
|
||||||
|
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||||
|
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||||
|
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||||
|
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||||
|
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
|
||||||
|
|
||||||
|
/* RTL support */
|
||||||
|
.ui-datepicker-rtl { direction: rtl; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
|
||||||
|
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||||
|
.ui-datepicker-cover {
|
||||||
|
position: absolute; /*must have*/
|
||||||
|
z-index: -1; /*must have*/
|
||||||
|
filter: mask(); /*must have*/
|
||||||
|
top: -4px; /*must have*/
|
||||||
|
left: -4px; /*must have*/
|
||||||
|
width: 200px; /*must have*/
|
||||||
|
height: 200px; /*must have*/
|
||||||
|
}.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
||||||
|
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||||
|
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
||||||
|
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||||
|
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||||
|
.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
|
||||||
|
.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
|
||||||
|
.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
|
||||||
|
.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
|
||||||
|
.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-focus,
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
|
||||||
|
|
||||||
|
.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
|
||||||
|
.ui-menu .ui-state-disabled a { cursor: default; }
|
||||||
|
|
||||||
|
/* icon support */
|
||||||
|
.ui-menu-icons { position: relative; }
|
||||||
|
.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
|
||||||
|
|
||||||
|
/* left-aligned */
|
||||||
|
.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
|
||||||
|
|
||||||
|
/* right-aligned */
|
||||||
|
.ui-menu .ui-menu-icon { position: static; float: right; }
|
||||||
|
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
|
||||||
|
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }
|
||||||
|
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||||
|
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||||
|
|
||||||
|
.ui-slider-horizontal { height: .8em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||||
|
|
||||||
|
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||||
|
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||||
|
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
|
||||||
|
.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
|
||||||
|
.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
|
||||||
|
.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
|
||||||
|
.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
|
||||||
|
.ui-spinner-up { top: 0; }
|
||||||
|
.ui-spinner-down { bottom: 0; }
|
||||||
|
|
||||||
|
/* TR overrides */
|
||||||
|
.ui-spinner .ui-icon-triangle-1-s {
|
||||||
|
/* need to fix icons sprite */
|
||||||
|
background-position:-65px -16px;
|
||||||
|
}
|
||||||
|
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
||||||
|
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
|
||||||
|
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||||
|
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
|
||||||
|
.ui-tooltip {
|
||||||
|
padding: 8px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 9999;
|
||||||
|
max-width: 300px;
|
||||||
|
-webkit-box-shadow: 0 0 5px #aaa;
|
||||||
|
box-shadow: 0 0 5px #aaa;
|
||||||
|
}
|
||||||
|
/* Fades and background-images don't work well together in IE6, drop the image */
|
||||||
|
* html .ui-tooltip {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
body .ui-tooltip { border-width: 2px; }
|
||||||
|
|
||||||
|
/* Component containers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-widget { font-family: Lucida Grande,Lucida Sans,Arial,sans-serif; font-size: 1.1em; }
|
||||||
|
.ui-widget .ui-widget { font-size: 1em; }
|
||||||
|
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande,Lucida Sans,Arial,sans-serif; font-size: 1em; }
|
||||||
|
.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
|
||||||
|
.ui-widget-content a { color: #222222; }
|
||||||
|
.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||||
|
.ui-widget-header a { color: #ffffff; }
|
||||||
|
|
||||||
|
/* Interaction states
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
|
||||||
|
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
|
||||||
|
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
|
||||||
|
.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #1d5987; text-decoration: none; }
|
||||||
|
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
|
||||||
|
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
|
||||||
|
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||||
|
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
|
||||||
|
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
|
||||||
|
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
|
||||||
|
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||||
|
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||||
|
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||||
|
.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
|
||||||
|
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
|
||||||
|
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
|
||||||
|
.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
|
||||||
|
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
|
||||||
|
.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
|
||||||
|
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
|
||||||
|
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
|
||||||
|
|
||||||
|
/* positioning */
|
||||||
|
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||||
|
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||||
|
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||||
|
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||||
|
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||||
|
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||||
|
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||||
|
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||||
|
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||||
|
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||||
|
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||||
|
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||||
|
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||||
|
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||||
|
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||||
|
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||||
|
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||||
|
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||||
|
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||||
|
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||||
|
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||||
|
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||||
|
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||||
|
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||||
|
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||||
|
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||||
|
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||||
|
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||||
|
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||||
|
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||||
|
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||||
|
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||||
|
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||||
|
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||||
|
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||||
|
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||||
|
.ui-icon-extlink { background-position: -32px -80px; }
|
||||||
|
.ui-icon-newwin { background-position: -48px -80px; }
|
||||||
|
.ui-icon-refresh { background-position: -64px -80px; }
|
||||||
|
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||||
|
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||||
|
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||||
|
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||||
|
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||||
|
.ui-icon-document { background-position: -32px -96px; }
|
||||||
|
.ui-icon-document-b { background-position: -48px -96px; }
|
||||||
|
.ui-icon-note { background-position: -64px -96px; }
|
||||||
|
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||||
|
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||||
|
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||||
|
.ui-icon-comment { background-position: -128px -96px; }
|
||||||
|
.ui-icon-person { background-position: -144px -96px; }
|
||||||
|
.ui-icon-print { background-position: -160px -96px; }
|
||||||
|
.ui-icon-trash { background-position: -176px -96px; }
|
||||||
|
.ui-icon-locked { background-position: -192px -96px; }
|
||||||
|
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||||
|
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||||
|
.ui-icon-tag { background-position: -240px -96px; }
|
||||||
|
.ui-icon-home { background-position: 0 -112px; }
|
||||||
|
.ui-icon-flag { background-position: -16px -112px; }
|
||||||
|
.ui-icon-calendar { background-position: -32px -112px; }
|
||||||
|
.ui-icon-cart { background-position: -48px -112px; }
|
||||||
|
.ui-icon-pencil { background-position: -64px -112px; }
|
||||||
|
.ui-icon-clock { background-position: -80px -112px; }
|
||||||
|
.ui-icon-disk { background-position: -96px -112px; }
|
||||||
|
.ui-icon-calculator { background-position: -112px -112px; }
|
||||||
|
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||||
|
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||||
|
.ui-icon-search { background-position: -160px -112px; }
|
||||||
|
.ui-icon-wrench { background-position: -176px -112px; }
|
||||||
|
.ui-icon-gear { background-position: -192px -112px; }
|
||||||
|
.ui-icon-heart { background-position: -208px -112px; }
|
||||||
|
.ui-icon-star { background-position: -224px -112px; }
|
||||||
|
.ui-icon-link { background-position: -240px -112px; }
|
||||||
|
.ui-icon-cancel { background-position: 0 -128px; }
|
||||||
|
.ui-icon-plus { background-position: -16px -128px; }
|
||||||
|
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||||
|
.ui-icon-minus { background-position: -48px -128px; }
|
||||||
|
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||||
|
.ui-icon-close { background-position: -80px -128px; }
|
||||||
|
.ui-icon-closethick { background-position: -96px -128px; }
|
||||||
|
.ui-icon-key { background-position: -112px -128px; }
|
||||||
|
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||||
|
.ui-icon-scissors { background-position: -144px -128px; }
|
||||||
|
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||||
|
.ui-icon-copy { background-position: -176px -128px; }
|
||||||
|
.ui-icon-contact { background-position: -192px -128px; }
|
||||||
|
.ui-icon-image { background-position: -208px -128px; }
|
||||||
|
.ui-icon-video { background-position: -224px -128px; }
|
||||||
|
.ui-icon-script { background-position: -240px -128px; }
|
||||||
|
.ui-icon-alert { background-position: 0 -144px; }
|
||||||
|
.ui-icon-info { background-position: -16px -144px; }
|
||||||
|
.ui-icon-notice { background-position: -32px -144px; }
|
||||||
|
.ui-icon-help { background-position: -48px -144px; }
|
||||||
|
.ui-icon-check { background-position: -64px -144px; }
|
||||||
|
.ui-icon-bullet { background-position: -80px -144px; }
|
||||||
|
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||||
|
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||||
|
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||||
|
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||||
|
.ui-icon-play { background-position: 0 -160px; }
|
||||||
|
.ui-icon-pause { background-position: -16px -160px; }
|
||||||
|
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||||
|
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||||
|
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||||
|
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||||
|
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||||
|
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||||
|
.ui-icon-stop { background-position: -96px -160px; }
|
||||||
|
.ui-icon-eject { background-position: -112px -160px; }
|
||||||
|
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||||
|
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||||
|
.ui-icon-power { background-position: 0 -176px; }
|
||||||
|
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||||
|
.ui-icon-signal { background-position: -32px -176px; }
|
||||||
|
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||||
|
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||||
|
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||||
|
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||||
|
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||||
|
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||||
|
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||||
|
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||||
|
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||||
|
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||||
|
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||||
|
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||||
|
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||||
|
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||||
|
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||||
|
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||||
|
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||||
|
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||||
|
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||||
|
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||||
|
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||||
|
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||||
|
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||||
|
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||||
|
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||||
|
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||||
|
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||||
|
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||||
|
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||||
|
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Corner radius */
|
||||||
|
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
|
||||||
|
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
|
||||||
|
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
|
||||||
|
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
|
||||||
|
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
|
5
libs/jquery-ui-1.9.1.custom/css/redmond/jquery-ui-1.9.1.custom.min.css
vendored
Normal file
After ![]() (image error) Size: 180 B |
After ![]() (image error) Size: 178 B |
After ![]() (image error) Size: 120 B |
After ![]() (image error) Size: 105 B |
After ![]() (image error) Size: 111 B |
After ![]() (image error) Size: 110 B |
After ![]() (image error) Size: 119 B |
BIN
libs/jquery-ui-1.9.1.custom/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
Normal file
After ![]() (image error) Size: 101 B |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
461
libs/jquery-ui-1.9.1.custom/css/smoothness/jquery-ui-1.9.1.custom.css
vendored
Normal file
@ -0,0 +1,461 @@
|
|||||||
|
/*! jQuery UI - v1.9.1 - 2012-10-25
|
||||||
|
* http://jqueryui.com
|
||||||
|
* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
|
||||||
|
* To view and modify this theme, visit http://jqueryui.com/themeroller/
|
||||||
|
* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */
|
||||||
|
|
||||||
|
/* Layout helpers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-helper-hidden { display: none; }
|
||||||
|
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||||
|
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||||
|
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
|
||||||
|
.ui-helper-clearfix:after { clear: both; }
|
||||||
|
.ui-helper-clearfix { zoom: 1; }
|
||||||
|
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||||
|
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-disabled { cursor: default !important; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||||
|
.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
|
||||||
|
.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
|
||||||
|
.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
|
||||||
|
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
|
||||||
|
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
|
||||||
|
.ui-autocomplete {
|
||||||
|
position: absolute;
|
||||||
|
top: 0; /* #8656 */
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
||||||
|
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
||||||
|
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
|
||||||
|
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
||||||
|
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
||||||
|
.ui-button-icons-only { width: 3.4em; }
|
||||||
|
button.ui-button-icons-only { width: 3.7em; }
|
||||||
|
|
||||||
|
/*button text element */
|
||||||
|
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
||||||
|
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
||||||
|
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
||||||
|
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
||||||
|
/* no icon support for input elements, provide padding by default */
|
||||||
|
input.ui-button { padding: .4em 1em; }
|
||||||
|
|
||||||
|
/*button icon element(s) */
|
||||||
|
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
|
||||||
|
/*button sets*/
|
||||||
|
.ui-buttonset { margin-right: 7px; }
|
||||||
|
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
||||||
|
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||||
|
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
||||||
|
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||||
|
.ui-datepicker select.ui-datepicker-month,
|
||||||
|
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||||
|
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||||
|
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||||
|
.ui-datepicker td { border: 0; padding: 1px; }
|
||||||
|
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||||
|
|
||||||
|
/* with multiple calendars */
|
||||||
|
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||||
|
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||||
|
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||||
|
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||||
|
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
|
||||||
|
|
||||||
|
/* RTL support */
|
||||||
|
.ui-datepicker-rtl { direction: rtl; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
|
||||||
|
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||||
|
.ui-datepicker-cover {
|
||||||
|
position: absolute; /*must have*/
|
||||||
|
z-index: -1; /*must have*/
|
||||||
|
filter: mask(); /*must have*/
|
||||||
|
top: -4px; /*must have*/
|
||||||
|
left: -4px; /*must have*/
|
||||||
|
width: 200px; /*must have*/
|
||||||
|
height: 200px; /*must have*/
|
||||||
|
}.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
||||||
|
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||||
|
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
||||||
|
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||||
|
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||||
|
.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
|
||||||
|
.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
|
||||||
|
.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
|
||||||
|
.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
|
||||||
|
.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-focus,
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
|
||||||
|
|
||||||
|
.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
|
||||||
|
.ui-menu .ui-state-disabled a { cursor: default; }
|
||||||
|
|
||||||
|
/* icon support */
|
||||||
|
.ui-menu-icons { position: relative; }
|
||||||
|
.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
|
||||||
|
|
||||||
|
/* left-aligned */
|
||||||
|
.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
|
||||||
|
|
||||||
|
/* right-aligned */
|
||||||
|
.ui-menu .ui-menu-icon { position: static; float: right; }
|
||||||
|
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
|
||||||
|
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-resizable { position: relative;}
|
||||||
|
.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
|
||||||
|
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||||
|
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
||||||
|
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
||||||
|
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||||
|
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||||
|
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||||
|
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
||||||
|
.ui-slider { position: relative; text-align: left; }
|
||||||
|
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||||
|
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||||
|
|
||||||
|
.ui-slider-horizontal { height: .8em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||||
|
|
||||||
|
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||||
|
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||||
|
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
|
||||||
|
.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
|
||||||
|
.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
|
||||||
|
.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
|
||||||
|
.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
|
||||||
|
.ui-spinner-up { top: 0; }
|
||||||
|
.ui-spinner-down { bottom: 0; }
|
||||||
|
|
||||||
|
/* TR overrides */
|
||||||
|
.ui-spinner .ui-icon-triangle-1-s {
|
||||||
|
/* need to fix icons sprite */
|
||||||
|
background-position:-65px -16px;
|
||||||
|
}
|
||||||
|
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
||||||
|
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
|
||||||
|
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||||
|
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
|
||||||
|
.ui-tooltip {
|
||||||
|
padding: 8px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 9999;
|
||||||
|
max-width: 300px;
|
||||||
|
-webkit-box-shadow: 0 0 5px #aaa;
|
||||||
|
box-shadow: 0 0 5px #aaa;
|
||||||
|
}
|
||||||
|
/* Fades and background-images don't work well together in IE6, drop the image */
|
||||||
|
* html .ui-tooltip {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
body .ui-tooltip { border-width: 2px; }
|
||||||
|
|
||||||
|
/* Component containers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
|
||||||
|
.ui-widget .ui-widget { font-size: 1em; }
|
||||||
|
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
|
||||||
|
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
|
||||||
|
.ui-widget-content a { color: #222222; }
|
||||||
|
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
|
||||||
|
.ui-widget-header a { color: #222222; }
|
||||||
|
|
||||||
|
/* Interaction states
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
|
||||||
|
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
|
||||||
|
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
|
||||||
|
.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }
|
||||||
|
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
|
||||||
|
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
|
||||||
|
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||||
|
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
|
||||||
|
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
|
||||||
|
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
|
||||||
|
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||||
|
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||||
|
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||||
|
.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||||
|
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||||
|
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||||
|
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
|
||||||
|
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
|
||||||
|
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
|
||||||
|
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
|
||||||
|
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
|
||||||
|
|
||||||
|
/* positioning */
|
||||||
|
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||||
|
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||||
|
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||||
|
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||||
|
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||||
|
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||||
|
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||||
|
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||||
|
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||||
|
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||||
|
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||||
|
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||||
|
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||||
|
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||||
|
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||||
|
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||||
|
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||||
|
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||||
|
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||||
|
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||||
|
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||||
|
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||||
|
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||||
|
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||||
|
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||||
|
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||||
|
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||||
|
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||||
|
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||||
|
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||||
|
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||||
|
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||||
|
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||||
|
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||||
|
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||||
|
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||||
|
.ui-icon-extlink { background-position: -32px -80px; }
|
||||||
|
.ui-icon-newwin { background-position: -48px -80px; }
|
||||||
|
.ui-icon-refresh { background-position: -64px -80px; }
|
||||||
|
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||||
|
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||||
|
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||||
|
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||||
|
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||||
|
.ui-icon-document { background-position: -32px -96px; }
|
||||||
|
.ui-icon-document-b { background-position: -48px -96px; }
|
||||||
|
.ui-icon-note { background-position: -64px -96px; }
|
||||||
|
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||||
|
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||||
|
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||||
|
.ui-icon-comment { background-position: -128px -96px; }
|
||||||
|
.ui-icon-person { background-position: -144px -96px; }
|
||||||
|
.ui-icon-print { background-position: -160px -96px; }
|
||||||
|
.ui-icon-trash { background-position: -176px -96px; }
|
||||||
|
.ui-icon-locked { background-position: -192px -96px; }
|
||||||
|
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||||
|
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||||
|
.ui-icon-tag { background-position: -240px -96px; }
|
||||||
|
.ui-icon-home { background-position: 0 -112px; }
|
||||||
|
.ui-icon-flag { background-position: -16px -112px; }
|
||||||
|
.ui-icon-calendar { background-position: -32px -112px; }
|
||||||
|
.ui-icon-cart { background-position: -48px -112px; }
|
||||||
|
.ui-icon-pencil { background-position: -64px -112px; }
|
||||||
|
.ui-icon-clock { background-position: -80px -112px; }
|
||||||
|
.ui-icon-disk { background-position: -96px -112px; }
|
||||||
|
.ui-icon-calculator { background-position: -112px -112px; }
|
||||||
|
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||||
|
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||||
|
.ui-icon-search { background-position: -160px -112px; }
|
||||||
|
.ui-icon-wrench { background-position: -176px -112px; }
|
||||||
|
.ui-icon-gear { background-position: -192px -112px; }
|
||||||
|
.ui-icon-heart { background-position: -208px -112px; }
|
||||||
|
.ui-icon-star { background-position: -224px -112px; }
|
||||||
|
.ui-icon-link { background-position: -240px -112px; }
|
||||||
|
.ui-icon-cancel { background-position: 0 -128px; }
|
||||||
|
.ui-icon-plus { background-position: -16px -128px; }
|
||||||
|
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||||
|
.ui-icon-minus { background-position: -48px -128px; }
|
||||||
|
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||||
|
.ui-icon-close { background-position: -80px -128px; }
|
||||||
|
.ui-icon-closethick { background-position: -96px -128px; }
|
||||||
|
.ui-icon-key { background-position: -112px -128px; }
|
||||||
|
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||||
|
.ui-icon-scissors { background-position: -144px -128px; }
|
||||||
|
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||||
|
.ui-icon-copy { background-position: -176px -128px; }
|
||||||
|
.ui-icon-contact { background-position: -192px -128px; }
|
||||||
|
.ui-icon-image { background-position: -208px -128px; }
|
||||||
|
.ui-icon-video { background-position: -224px -128px; }
|
||||||
|
.ui-icon-script { background-position: -240px -128px; }
|
||||||
|
.ui-icon-alert { background-position: 0 -144px; }
|
||||||
|
.ui-icon-info { background-position: -16px -144px; }
|
||||||
|
.ui-icon-notice { background-position: -32px -144px; }
|
||||||
|
.ui-icon-help { background-position: -48px -144px; }
|
||||||
|
.ui-icon-check { background-position: -64px -144px; }
|
||||||
|
.ui-icon-bullet { background-position: -80px -144px; }
|
||||||
|
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||||
|
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||||
|
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||||
|
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||||
|
.ui-icon-play { background-position: 0 -160px; }
|
||||||
|
.ui-icon-pause { background-position: -16px -160px; }
|
||||||
|
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||||
|
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||||
|
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||||
|
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||||
|
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||||
|
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||||
|
.ui-icon-stop { background-position: -96px -160px; }
|
||||||
|
.ui-icon-eject { background-position: -112px -160px; }
|
||||||
|
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||||
|
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||||
|
.ui-icon-power { background-position: 0 -176px; }
|
||||||
|
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||||
|
.ui-icon-signal { background-position: -32px -176px; }
|
||||||
|
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||||
|
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||||
|
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||||
|
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||||
|
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||||
|
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||||
|
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||||
|
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||||
|
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||||
|
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||||
|
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||||
|
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||||
|
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||||
|
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||||
|
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||||
|
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||||
|
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||||
|
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||||
|
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||||
|
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||||
|
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||||
|
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||||
|
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||||
|
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||||
|
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||||
|
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||||
|
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||||
|
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||||
|
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||||
|
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Corner radius */
|
||||||
|
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
||||||
|
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||||
|
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||||
|
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
|
||||||
|
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
|
5
libs/jquery-ui-1.9.1.custom/css/smoothness/jquery-ui-1.9.1.custom.min.css
vendored
Normal file
23
libs/jquery-ui-1.9.1.custom/jquery.ui.datepicker-ru.js
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
|
||||||
|
/* Written by Andrew Stromnov (stromnov@gmail.com). */
|
||||||
|
jQuery(function($){
|
||||||
|
$.datepicker.regional['ru'] = {
|
||||||
|
closeText: 'Закрыть',
|
||||||
|
prevText: '<Пред',
|
||||||
|
nextText: 'След>',
|
||||||
|
currentText: 'Сегодня',
|
||||||
|
monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
|
||||||
|
'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
|
||||||
|
monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
|
||||||
|
'Июл','Авг','Сен','Окт','Ноя','Дек'],
|
||||||
|
dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
|
||||||
|
dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
|
||||||
|
dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
|
||||||
|
weekHeader: 'Нед',
|
||||||
|
dateFormat: 'dd.mm.yy',
|
||||||
|
firstDay: 1,
|
||||||
|
isRTL: false,
|
||||||
|
showMonthAfterYear: false,
|
||||||
|
yearSuffix: ''};
|
||||||
|
$.datepicker.setDefaults($.datepicker.regional['ru']);
|
||||||
|
});
|
9440
libs/jquery-ui-1.9.1.custom/js/jquery-1.8.2.js
vendored
Normal file
14823
libs/jquery-ui-1.9.1.custom/js/jquery-ui-1.9.1.custom.js
vendored
Normal file
6
libs/jquery-ui-1.9.1.custom/js/jquery-ui-1.9.1.custom.min.js
vendored
Normal file
9440
libs/jquery-ui-datepicker/js/jquery-1.8.2.js
vendored
Normal file
3454
libs/jquery-ui-datepicker/js/jquery-ui-1.9.1.custom.js
vendored
Normal file
6
libs/jquery-ui-datepicker/js/jquery-ui-1.9.1.custom.min.js
vendored
Normal file
9440
libs/jquery/jquery-1.8.2.js
vendored
Normal file
2
libs/jquery/jquery-1.8.2.min.js
vendored
Normal file
521
libs/mockjax/jquery.mockjax.js
Normal file
@ -0,0 +1,521 @@
|
|||||||
|
/*!
|
||||||
|
* MockJax - jQuery Plugin to Mock Ajax requests
|
||||||
|
*
|
||||||
|
* Version: 1.5.0pre
|
||||||
|
* Released:
|
||||||
|
* Home: http://github.com/appendto/jquery-mockjax
|
||||||
|
* Author: Jonathan Sharp (http://jdsharp.com)
|
||||||
|
* License: MIT,GPL
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011 appendTo LLC.
|
||||||
|
* Dual licensed under the MIT or GPL licenses.
|
||||||
|
* http://appendto.com/open-source-licenses
|
||||||
|
*/
|
||||||
|
(function($) {
|
||||||
|
var _ajax = $.ajax,
|
||||||
|
mockHandlers = [],
|
||||||
|
CALLBACK_REGEX = /=\?(&|$)/,
|
||||||
|
jsc = (new Date()).getTime();
|
||||||
|
|
||||||
|
|
||||||
|
// Parse the given XML string.
|
||||||
|
function parseXML(xml) {
|
||||||
|
if ( window['DOMParser'] == undefined && window.ActiveXObject ) {
|
||||||
|
DOMParser = function() { };
|
||||||
|
DOMParser.prototype.parseFromString = function( xmlString ) {
|
||||||
|
var doc = new ActiveXObject('Microsoft.XMLDOM');
|
||||||
|
doc.async = 'false';
|
||||||
|
doc.loadXML( xmlString );
|
||||||
|
return doc;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' );
|
||||||
|
if ( $.isXMLDoc( xmlDoc ) ) {
|
||||||
|
var err = $('parsererror', xmlDoc);
|
||||||
|
if ( err.length == 1 ) {
|
||||||
|
throw('Error: ' + $(xmlDoc).text() );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw('Unable to parse XML');
|
||||||
|
}
|
||||||
|
} catch( e ) {
|
||||||
|
var msg = ( e.name == undefined ? e : e.name + ': ' + e.message );
|
||||||
|
$(document).trigger('xmlParseError', [ msg ]);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return xmlDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trigger a jQuery event
|
||||||
|
function trigger(s, type, args) {
|
||||||
|
(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the data field on the mock handler and the request match. This
|
||||||
|
// can be used to restrict a mock handler to being used only when a certain
|
||||||
|
// set of data is passed to it.
|
||||||
|
function isMockDataEqual( mock, live ) {
|
||||||
|
var identical = false;
|
||||||
|
// Test for situations where the data is a querystring (not an object)
|
||||||
|
if (typeof live === 'string') {
|
||||||
|
// Querystring may be a regex
|
||||||
|
return $.isFunction( mock.test ) ? mock.test(live) : mock == live;
|
||||||
|
}
|
||||||
|
$.each(mock, function(k, v) {
|
||||||
|
if ( live[k] === undefined ) {
|
||||||
|
identical = false;
|
||||||
|
return identical;
|
||||||
|
} else {
|
||||||
|
identical = true;
|
||||||
|
if ( typeof live[k] == 'object' ) {
|
||||||
|
return isMockDataEqual(mock[k], live[k]);
|
||||||
|
} else {
|
||||||
|
if ( $.isFunction( mock[k].test ) ) {
|
||||||
|
identical = mock[k].test(live[k]);
|
||||||
|
} else {
|
||||||
|
identical = ( mock[k] == live[k] );
|
||||||
|
}
|
||||||
|
return identical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return identical;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the given handler should mock the given request
|
||||||
|
function getMockForRequest( handler, requestSettings ) {
|
||||||
|
// If the mock was registered with a function, let the function decide if we
|
||||||
|
// want to mock this request
|
||||||
|
if ( $.isFunction(handler) ) {
|
||||||
|
return handler( requestSettings );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inspect the URL of the request and check if the mock handler's url
|
||||||
|
// matches the url for this ajax request
|
||||||
|
if ( $.isFunction(handler.url.test) ) {
|
||||||
|
// The user provided a regex for the url, test it
|
||||||
|
if ( !handler.url.test( requestSettings.url ) ) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Look for a simple wildcard '*' or a direct URL match
|
||||||
|
var star = handler.url.indexOf('*');
|
||||||
|
if (handler.url !== requestSettings.url && star === -1 ||
|
||||||
|
!new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g, "\\$&").replace('*', '.+')).test(requestSettings.url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inspect the data submitted in the request (either POST body or GET query string)
|
||||||
|
if ( handler.data && requestSettings.data ) {
|
||||||
|
if ( !isMockDataEqual(handler.data, requestSettings.data) ) {
|
||||||
|
// They're not identical, do not mock this request
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Inspect the request type
|
||||||
|
if ( handler && handler.type &&
|
||||||
|
handler.type.toLowerCase() != requestSettings.type.toLowerCase() ) {
|
||||||
|
// The request type doesn't match (GET vs. POST)
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If logging is enabled, log the mock to the console
|
||||||
|
function logMock( mockHandler, requestSettings ) {
|
||||||
|
var c = $.extend({}, $.mockjaxSettings, mockHandler);
|
||||||
|
if ( c.log && $.isFunction(c.log) ) {
|
||||||
|
c.log('MOCK ' + requestSettings.type.toUpperCase() + ': ' + requestSettings.url, $.extend({}, requestSettings));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process the xhr objects send operation
|
||||||
|
function _xhrSend(mockHandler, requestSettings, origSettings) {
|
||||||
|
|
||||||
|
// This is a substitute for < 1.4 which lacks $.proxy
|
||||||
|
var process = (function(that) {
|
||||||
|
return function() {
|
||||||
|
return (function() {
|
||||||
|
// The request has returned
|
||||||
|
this.status = mockHandler.status;
|
||||||
|
this.statusText = mockHandler.statusText;
|
||||||
|
this.readyState = 4;
|
||||||
|
|
||||||
|
// We have an executable function, call it to give
|
||||||
|
// the mock handler a chance to update it's data
|
||||||
|
if ( $.isFunction(mockHandler.response) ) {
|
||||||
|
mockHandler.response(origSettings);
|
||||||
|
}
|
||||||
|
// Copy over our mock to our xhr object before passing control back to
|
||||||
|
// jQuery's onreadystatechange callback
|
||||||
|
if ( requestSettings.dataType == 'json' && ( typeof mockHandler.responseText == 'object' ) ) {
|
||||||
|
this.responseText = JSON.stringify(mockHandler.responseText);
|
||||||
|
} else if ( requestSettings.dataType == 'xml' ) {
|
||||||
|
if ( typeof mockHandler.responseXML == 'string' ) {
|
||||||
|
this.responseXML = parseXML(mockHandler.responseXML);
|
||||||
|
} else {
|
||||||
|
this.responseXML = mockHandler.responseXML;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.responseText = mockHandler.responseText;
|
||||||
|
}
|
||||||
|
if( typeof mockHandler.status == 'number' || typeof mockHandler.status == 'string' ) {
|
||||||
|
this.status = mockHandler.status;
|
||||||
|
}
|
||||||
|
if( typeof mockHandler.statusText === "string") {
|
||||||
|
this.statusText = mockHandler.statusText;
|
||||||
|
}
|
||||||
|
// jQuery < 1.4 doesn't have onreadystate change for xhr
|
||||||
|
if ( $.isFunction(this.onreadystatechange) ) {
|
||||||
|
if( mockHandler.isTimeout) {
|
||||||
|
this.status = -1;
|
||||||
|
}
|
||||||
|
this.onreadystatechange( mockHandler.isTimeout ? 'timeout' : undefined );
|
||||||
|
} else if ( mockHandler.isTimeout ) {
|
||||||
|
// Fix for 1.3.2 timeout to keep success from firing.
|
||||||
|
this.status = -1;
|
||||||
|
}
|
||||||
|
}).apply(that);
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
|
||||||
|
if ( mockHandler.proxy ) {
|
||||||
|
// We're proxying this request and loading in an external file instead
|
||||||
|
_ajax({
|
||||||
|
global: false,
|
||||||
|
url: mockHandler.proxy,
|
||||||
|
type: mockHandler.proxyType,
|
||||||
|
data: mockHandler.data,
|
||||||
|
dataType: requestSettings.dataType === "script" ? "text/plain" : requestSettings.dataType,
|
||||||
|
complete: function(xhr, txt) {
|
||||||
|
mockHandler.responseXML = xhr.responseXML;
|
||||||
|
mockHandler.responseText = xhr.responseText;
|
||||||
|
mockHandler.status = xhr.status;
|
||||||
|
mockHandler.statusText = xhr.statusText;
|
||||||
|
this.responseTimer = setTimeout(process, mockHandler.responseTime || 0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// type == 'POST' || 'GET' || 'DELETE'
|
||||||
|
if ( requestSettings.async === false ) {
|
||||||
|
// TODO: Blocking delay
|
||||||
|
process();
|
||||||
|
} else {
|
||||||
|
this.responseTimer = setTimeout(process, mockHandler.responseTime || 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct a mocked XHR Object
|
||||||
|
function xhr(mockHandler, requestSettings, origSettings, origHandler) {
|
||||||
|
// Extend with our default mockjax settings
|
||||||
|
mockHandler = $.extend({}, $.mockjaxSettings, mockHandler);
|
||||||
|
|
||||||
|
if (typeof mockHandler.headers === 'undefined') {
|
||||||
|
mockHandler.headers = {};
|
||||||
|
}
|
||||||
|
if ( mockHandler.contentType ) {
|
||||||
|
mockHandler.headers['content-type'] = mockHandler.contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: mockHandler.status,
|
||||||
|
statusText: mockHandler.statusText,
|
||||||
|
readyState: 1,
|
||||||
|
open: function() { },
|
||||||
|
send: function() {
|
||||||
|
origHandler.fired = true;
|
||||||
|
_xhrSend.call(this, mockHandler, requestSettings, origSettings);
|
||||||
|
},
|
||||||
|
abort: function() {
|
||||||
|
clearTimeout(this.responseTimer);
|
||||||
|
},
|
||||||
|
setRequestHeader: function(header, value) {
|
||||||
|
mockHandler.headers[header] = value;
|
||||||
|
},
|
||||||
|
getResponseHeader: function(header) {
|
||||||
|
// 'Last-modified', 'Etag', 'content-type' are all checked by jQuery
|
||||||
|
if ( mockHandler.headers && mockHandler.headers[header] ) {
|
||||||
|
// Return arbitrary headers
|
||||||
|
return mockHandler.headers[header];
|
||||||
|
} else if ( header.toLowerCase() == 'last-modified' ) {
|
||||||
|
return mockHandler.lastModified || (new Date()).toString();
|
||||||
|
} else if ( header.toLowerCase() == 'etag' ) {
|
||||||
|
return mockHandler.etag || '';
|
||||||
|
} else if ( header.toLowerCase() == 'content-type' ) {
|
||||||
|
return mockHandler.contentType || 'text/plain';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getAllResponseHeaders: function() {
|
||||||
|
var headers = '';
|
||||||
|
$.each(mockHandler.headers, function(k, v) {
|
||||||
|
headers += k + ': ' + v + "\n";
|
||||||
|
});
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process a JSONP mock request.
|
||||||
|
function processJsonpMock( requestSettings, mockHandler, origSettings ) {
|
||||||
|
// Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here
|
||||||
|
// because there isn't an easy hook for the cross domain script tag of jsonp
|
||||||
|
|
||||||
|
processJsonpUrl( requestSettings );
|
||||||
|
|
||||||
|
requestSettings.dataType = "json";
|
||||||
|
if(requestSettings.data && CALLBACK_REGEX.test(requestSettings.data) || CALLBACK_REGEX.test(requestSettings.url)) {
|
||||||
|
createJsonpCallback(requestSettings, mockHandler);
|
||||||
|
|
||||||
|
// We need to make sure
|
||||||
|
// that a JSONP style response is executed properly
|
||||||
|
|
||||||
|
var rurl = /^(\w+:)?\/\/([^\/?#]+)/,
|
||||||
|
parts = rurl.exec( requestSettings.url ),
|
||||||
|
remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
|
||||||
|
|
||||||
|
requestSettings.dataType = "script";
|
||||||
|
if(requestSettings.type.toUpperCase() === "GET" && remote ) {
|
||||||
|
var newMockReturn = processJsonpRequest( requestSettings, mockHandler, origSettings );
|
||||||
|
|
||||||
|
// Check if we are supposed to return a Deferred back to the mock call, or just
|
||||||
|
// signal success
|
||||||
|
if(newMockReturn) {
|
||||||
|
return newMockReturn;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append the required callback parameter to the end of the request URL, for a JSONP request
|
||||||
|
function processJsonpUrl( requestSettings ) {
|
||||||
|
if ( requestSettings.type.toUpperCase() === "GET" ) {
|
||||||
|
if ( !CALLBACK_REGEX.test( requestSettings.url ) ) {
|
||||||
|
requestSettings.url += (/\?/.test( requestSettings.url ) ? "&" : "?") +
|
||||||
|
(requestSettings.jsonp || "callback") + "=?";
|
||||||
|
}
|
||||||
|
} else if ( !requestSettings.data || !CALLBACK_REGEX.test(requestSettings.data) ) {
|
||||||
|
requestSettings.data = (requestSettings.data ? requestSettings.data + "&" : "") + (requestSettings.jsonp || "callback") + "=?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process a JSONP request by evaluating the mocked response text
|
||||||
|
function processJsonpRequest( requestSettings, mockHandler, origSettings ) {
|
||||||
|
// Synthesize the mock request for adding a script tag
|
||||||
|
var callbackContext = origSettings && origSettings.context || requestSettings,
|
||||||
|
newMock = null;
|
||||||
|
|
||||||
|
|
||||||
|
// If the response handler on the moock is a function, call it
|
||||||
|
if ( mockHandler.response && $.isFunction(mockHandler.response) ) {
|
||||||
|
mockHandler.response(origSettings);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Evaluate the responseText javascript in a global context
|
||||||
|
if( typeof mockHandler.responseText === 'object' ) {
|
||||||
|
$.globalEval( '(' + JSON.stringify( mockHandler.responseText ) + ')');
|
||||||
|
} else {
|
||||||
|
$.globalEval( '(' + mockHandler.responseText + ')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Successful response
|
||||||
|
jsonpSuccess( requestSettings, mockHandler );
|
||||||
|
jsonpComplete( requestSettings, mockHandler );
|
||||||
|
|
||||||
|
// If we are running under jQuery 1.5+, return a deferred object
|
||||||
|
if(jQuery.Deferred){
|
||||||
|
newMock = new jQuery.Deferred();
|
||||||
|
if(typeof mockHandler.responseText == "object"){
|
||||||
|
newMock.resolve( mockHandler.responseText );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
newMock.resolve( jQuery.parseJSON( mockHandler.responseText ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newMock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Create the required JSONP callback function for the request
|
||||||
|
function createJsonpCallback( requestSettings, mockHandler ) {
|
||||||
|
jsonp = requestSettings.jsonpCallback || ("jsonp" + jsc++);
|
||||||
|
|
||||||
|
// Replace the =? sequence both in the query string and the data
|
||||||
|
if ( requestSettings.data ) {
|
||||||
|
requestSettings.data = (requestSettings.data + "").replace(CALLBACK_REGEX, "=" + jsonp + "$1");
|
||||||
|
}
|
||||||
|
|
||||||
|
requestSettings.url = requestSettings.url.replace(CALLBACK_REGEX, "=" + jsonp + "$1");
|
||||||
|
|
||||||
|
|
||||||
|
// Handle JSONP-style loading
|
||||||
|
window[ jsonp ] = window[ jsonp ] || function( tmp ) {
|
||||||
|
data = tmp;
|
||||||
|
jsonpSuccess( requestSettings, mockHandler );
|
||||||
|
jsonpComplete( requestSettings, mockHandler );
|
||||||
|
// Garbage collect
|
||||||
|
window[ jsonp ] = undefined;
|
||||||
|
|
||||||
|
try {
|
||||||
|
delete window[ jsonp ];
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
|
if ( head ) {
|
||||||
|
head.removeChild( script );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// The JSONP request was successful
|
||||||
|
function jsonpSuccess(requestSettings, mockHandler) {
|
||||||
|
// If a local callback was specified, fire it and pass it the data
|
||||||
|
if ( requestSettings.success ) {
|
||||||
|
requestSettings.success.call( callbackContext, ( mockHandler.response ? mockHandler.response.toString() : mockHandler.responseText || ''), status, {} );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fire the global callback
|
||||||
|
if ( requestSettings.global ) {
|
||||||
|
trigger(requestSettings, "ajaxSuccess", [{}, requestSettings] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The JSONP request was completed
|
||||||
|
function jsonpComplete(requestSettings, mockHandler) {
|
||||||
|
// Process result
|
||||||
|
if ( requestSettings.complete ) {
|
||||||
|
requestSettings.complete.call( callbackContext, {} , status );
|
||||||
|
}
|
||||||
|
|
||||||
|
// The request was completed
|
||||||
|
if ( requestSettings.global ) {
|
||||||
|
trigger( "ajaxComplete", [{}, requestSettings] );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle the global AJAX counter
|
||||||
|
if ( requestSettings.global && ! --jQuery.active ) {
|
||||||
|
jQuery.event.trigger( "ajaxStop" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The core $.ajax replacement.
|
||||||
|
function handleAjax( url, origSettings ) {
|
||||||
|
var mockRequest, requestSettings, mockHandler;
|
||||||
|
|
||||||
|
// If url is an object, simulate pre-1.5 signature
|
||||||
|
if ( typeof url === "object" ) {
|
||||||
|
origSettings = url;
|
||||||
|
url = undefined;
|
||||||
|
} else {
|
||||||
|
// work around to support 1.5 signature
|
||||||
|
origSettings.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend the original settings for the request
|
||||||
|
requestSettings = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
|
||||||
|
|
||||||
|
// Iterate over our mock handlers (in registration order) until we find
|
||||||
|
// one that is willing to intercept the request
|
||||||
|
for(var k = 0; k < mockHandlers.length; k++) {
|
||||||
|
if ( !mockHandlers[k] ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mockHandler = getMockForRequest( mockHandlers[k], requestSettings );
|
||||||
|
if(!mockHandler) {
|
||||||
|
// No valid mock found for this request
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle console logging
|
||||||
|
logMock( mockHandler, requestSettings );
|
||||||
|
|
||||||
|
|
||||||
|
if ( requestSettings.dataType === "jsonp" ) {
|
||||||
|
if ((mockRequest = processJsonpMock( requestSettings, mockHandler, origSettings ))) {
|
||||||
|
// This mock will handle the JSONP request
|
||||||
|
return mockRequest;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Removed to fix #54 - keep the mocking data object intact
|
||||||
|
//mockHandler.data = requestSettings.data;
|
||||||
|
|
||||||
|
mockHandler.cache = requestSettings.cache;
|
||||||
|
mockHandler.timeout = requestSettings.timeout;
|
||||||
|
mockHandler.global = requestSettings.global;
|
||||||
|
|
||||||
|
(function(mockHandler, requestSettings, origSettings, origHandler) {
|
||||||
|
mockRequest = _ajax.call($, $.extend(true, {}, origSettings, {
|
||||||
|
// Mock the XHR object
|
||||||
|
xhr: function() { return xhr( mockHandler, requestSettings, origSettings, origHandler ) }
|
||||||
|
}));
|
||||||
|
})(mockHandler, requestSettings, origSettings, mockHandlers[k]);
|
||||||
|
|
||||||
|
return mockRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We don't have a mock request, trigger a normal request
|
||||||
|
return _ajax.apply($, [origSettings]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Public
|
||||||
|
|
||||||
|
$.extend({
|
||||||
|
ajax: handleAjax
|
||||||
|
});
|
||||||
|
|
||||||
|
$.mockjaxSettings = {
|
||||||
|
//url: null,
|
||||||
|
//type: 'GET',
|
||||||
|
log: function(msg) {
|
||||||
|
window['console'] && window.console.log && window.console.log(msg);
|
||||||
|
},
|
||||||
|
status: 200,
|
||||||
|
statusText: "OK",
|
||||||
|
responseTime: 500,
|
||||||
|
isTimeout: false,
|
||||||
|
contentType: 'text/plain',
|
||||||
|
response: '',
|
||||||
|
responseText: '',
|
||||||
|
responseXML: '',
|
||||||
|
proxy: '',
|
||||||
|
proxyType: 'GET',
|
||||||
|
|
||||||
|
lastModified: null,
|
||||||
|
etag: '',
|
||||||
|
headers: {
|
||||||
|
etag: 'IJF@H#@923uf8023hFO@I#H#',
|
||||||
|
'content-type' : 'text/plain'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.mockjax = function(settings) {
|
||||||
|
var i = mockHandlers.length;
|
||||||
|
mockHandlers[i] = settings;
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
$.mockjaxClear = function(i) {
|
||||||
|
if ( arguments.length == 1 ) {
|
||||||
|
mockHandlers[i] = null;
|
||||||
|
} else {
|
||||||
|
mockHandlers = [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$.mockjax.handler = function(i) {
|
||||||
|
if ( arguments.length == 1 ) {
|
||||||
|
return mockHandlers[i];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(jQuery);
|
470
libs/poshytip/jquery.poshytip.js
Normal file
@ -0,0 +1,470 @@
|
|||||||
|
/*
|
||||||
|
* Poshy Tip jQuery plugin v1.1
|
||||||
|
* http://vadikom.com/tools/poshy-tip-jquery-plugin-for-stylish-tooltips/
|
||||||
|
* Copyright 2010-2011, Vasil Dinkov, http://vadikom.com/
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
var tips = [],
|
||||||
|
reBgImage = /^url\(["']?([^"'\)]*)["']?\);?$/i,
|
||||||
|
rePNG = /\.png$/i,
|
||||||
|
ie6 = $.browser.msie && $.browser.version == 6;
|
||||||
|
|
||||||
|
// make sure the tips' position is updated on resize
|
||||||
|
function handleWindowResize() {
|
||||||
|
$.each(tips, function() {
|
||||||
|
this.refresh(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(window).resize(handleWindowResize);
|
||||||
|
|
||||||
|
$.Poshytip = function(elm, options) {
|
||||||
|
this.$elm = $(elm);
|
||||||
|
this.opts = $.extend({}, $.fn.poshytip.defaults, options);
|
||||||
|
this.$tip = $(['<div class="',this.opts.className,'">',
|
||||||
|
'<div class="tip-inner tip-bg-image"></div>',
|
||||||
|
'<div class="tip-arrow tip-arrow-top tip-arrow-right tip-arrow-bottom tip-arrow-left"></div>',
|
||||||
|
'</div>'].join('')).appendTo(document.body);
|
||||||
|
this.$arrow = this.$tip.find('div.tip-arrow');
|
||||||
|
this.$inner = this.$tip.find('div.tip-inner');
|
||||||
|
this.disabled = false;
|
||||||
|
this.content = null;
|
||||||
|
this.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
$.Poshytip.prototype = {
|
||||||
|
init: function() {
|
||||||
|
tips.push(this);
|
||||||
|
|
||||||
|
// save the original title and a reference to the Poshytip object
|
||||||
|
var title = this.$elm.attr('title');
|
||||||
|
this.$elm.data('title.poshytip', title !== undefined ? title : null)
|
||||||
|
.data('poshytip', this);
|
||||||
|
|
||||||
|
// hook element events
|
||||||
|
if (this.opts.showOn != 'none') {
|
||||||
|
this.$elm.bind({
|
||||||
|
'mouseenter.poshytip': $.proxy(this.mouseenter, this),
|
||||||
|
'mouseleave.poshytip': $.proxy(this.mouseleave, this)
|
||||||
|
});
|
||||||
|
switch (this.opts.showOn) {
|
||||||
|
case 'hover':
|
||||||
|
if (this.opts.alignTo == 'cursor')
|
||||||
|
this.$elm.bind('mousemove.poshytip', $.proxy(this.mousemove, this));
|
||||||
|
if (this.opts.allowTipHover)
|
||||||
|
this.$tip.hover($.proxy(this.clearTimeouts, this), $.proxy(this.mouseleave, this));
|
||||||
|
break;
|
||||||
|
case 'focus':
|
||||||
|
this.$elm.bind({
|
||||||
|
'focus.poshytip': $.proxy(this.show, this),
|
||||||
|
'blur.poshytip': $.proxy(this.hide, this)
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mouseenter: function(e) {
|
||||||
|
if (this.disabled)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.$elm.attr('title', '');
|
||||||
|
if (this.opts.showOn == 'focus')
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.clearTimeouts();
|
||||||
|
this.showTimeout = setTimeout($.proxy(this.show, this), this.opts.showTimeout);
|
||||||
|
},
|
||||||
|
mouseleave: function(e) {
|
||||||
|
if (this.disabled || this.asyncAnimating && (this.$tip[0] === e.relatedTarget || jQuery.contains(this.$tip[0], e.relatedTarget)))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
var title = this.$elm.data('title.poshytip');
|
||||||
|
if (title !== null)
|
||||||
|
this.$elm.attr('title', title);
|
||||||
|
if (this.opts.showOn == 'focus')
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.clearTimeouts();
|
||||||
|
this.hideTimeout = setTimeout($.proxy(this.hide, this), this.opts.hideTimeout);
|
||||||
|
},
|
||||||
|
mousemove: function(e) {
|
||||||
|
if (this.disabled)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.eventX = e.pageX;
|
||||||
|
this.eventY = e.pageY;
|
||||||
|
if (this.opts.followCursor && this.$tip.data('active')) {
|
||||||
|
this.calcPos();
|
||||||
|
this.$tip.css({left: this.pos.l, top: this.pos.t});
|
||||||
|
if (this.pos.arrow)
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-' + this.pos.arrow;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show: function() {
|
||||||
|
if (this.disabled || this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.reset();
|
||||||
|
this.update();
|
||||||
|
this.display();
|
||||||
|
if (this.opts.timeOnScreen)
|
||||||
|
setTimeout($.proxy(this.hide, this), this.opts.timeOnScreen);
|
||||||
|
},
|
||||||
|
hide: function() {
|
||||||
|
if (this.disabled || !this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.display(true);
|
||||||
|
},
|
||||||
|
reset: function() {
|
||||||
|
this.$tip.queue([]).detach().css('visibility', 'hidden').data('active', false);
|
||||||
|
this.$inner.find('*').poshytip('hide');
|
||||||
|
if (this.opts.fade)
|
||||||
|
this.$tip.css('opacity', this.opacity);
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-top tip-arrow-right tip-arrow-bottom tip-arrow-left';
|
||||||
|
this.asyncAnimating = false;
|
||||||
|
},
|
||||||
|
update: function(content, dontOverwriteOption) {
|
||||||
|
if (this.disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var async = content !== undefined;
|
||||||
|
if (async) {
|
||||||
|
if (!dontOverwriteOption)
|
||||||
|
this.opts.content = content;
|
||||||
|
if (!this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
content = this.opts.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update content only if it has been changed since last time
|
||||||
|
var self = this,
|
||||||
|
newContent = typeof content == 'function' ?
|
||||||
|
content.call(this.$elm[0], function(newContent) {
|
||||||
|
self.update(newContent);
|
||||||
|
}) :
|
||||||
|
content == '[title]' ? this.$elm.data('title.poshytip') : content;
|
||||||
|
if (this.content !== newContent) {
|
||||||
|
this.$inner.empty().append(newContent);
|
||||||
|
this.content = newContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.refresh(async);
|
||||||
|
},
|
||||||
|
refresh: function(async) {
|
||||||
|
if (this.disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (async) {
|
||||||
|
if (!this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
// save current position as we will need to animate
|
||||||
|
var currPos = {left: this.$tip.css('left'), top: this.$tip.css('top')};
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset position to avoid text wrapping, etc.
|
||||||
|
this.$tip.css({left: 0, top: 0}).appendTo(document.body);
|
||||||
|
|
||||||
|
// save default opacity
|
||||||
|
if (this.opacity === undefined)
|
||||||
|
this.opacity = this.$tip.css('opacity');
|
||||||
|
|
||||||
|
// check for images - this code is here (i.e. executed each time we show the tip and not on init) due to some browser inconsistencies
|
||||||
|
var bgImage = this.$tip.css('background-image').match(reBgImage),
|
||||||
|
arrow = this.$arrow.css('background-image').match(reBgImage);
|
||||||
|
|
||||||
|
if (bgImage) {
|
||||||
|
var bgImagePNG = rePNG.test(bgImage[1]);
|
||||||
|
// fallback to background-color/padding/border in IE6 if a PNG is used
|
||||||
|
if (ie6 && bgImagePNG) {
|
||||||
|
this.$tip.css('background-image', 'none');
|
||||||
|
this.$inner.css({margin: 0, border: 0, padding: 0});
|
||||||
|
bgImage = bgImagePNG = false;
|
||||||
|
} else {
|
||||||
|
this.$tip.prepend('<table border="0" cellpadding="0" cellspacing="0"><tr><td class="tip-top tip-bg-image" colspan="2"><span></span></td><td class="tip-right tip-bg-image" rowspan="2"><span></span></td></tr><tr><td class="tip-left tip-bg-image" rowspan="2"><span></span></td><td></td></tr><tr><td class="tip-bottom tip-bg-image" colspan="2"><span></span></td></tr></table>')
|
||||||
|
.css({border: 0, padding: 0, 'background-image': 'none', 'background-color': 'transparent'})
|
||||||
|
.find('.tip-bg-image').css('background-image', 'url("' + bgImage[1] +'")').end()
|
||||||
|
.find('td').eq(3).append(this.$inner);
|
||||||
|
}
|
||||||
|
// disable fade effect in IE due to Alpha filter + translucent PNG issue
|
||||||
|
if (bgImagePNG && !$.support.opacity)
|
||||||
|
this.opts.fade = false;
|
||||||
|
}
|
||||||
|
// IE arrow fixes
|
||||||
|
if (arrow && !$.support.opacity) {
|
||||||
|
// disable arrow in IE6 if using a PNG
|
||||||
|
if (ie6 && rePNG.test(arrow[1])) {
|
||||||
|
arrow = false;
|
||||||
|
this.$arrow.css('background-image', 'none');
|
||||||
|
}
|
||||||
|
// disable fade effect in IE due to Alpha filter + translucent PNG issue
|
||||||
|
this.opts.fade = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $table = this.$tip.find('table');
|
||||||
|
if (ie6) {
|
||||||
|
// fix min/max-width in IE6
|
||||||
|
this.$tip[0].style.width = '';
|
||||||
|
$table.width('auto').find('td').eq(3).width('auto');
|
||||||
|
var tipW = this.$tip.width(),
|
||||||
|
minW = parseInt(this.$tip.css('min-width')),
|
||||||
|
maxW = parseInt(this.$tip.css('max-width'));
|
||||||
|
if (!isNaN(minW) && tipW < minW)
|
||||||
|
tipW = minW;
|
||||||
|
else if (!isNaN(maxW) && tipW > maxW)
|
||||||
|
tipW = maxW;
|
||||||
|
this.$tip.add($table).width(tipW).eq(0).find('td').eq(3).width('100%');
|
||||||
|
} else if ($table[0]) {
|
||||||
|
// fix the table width if we are using a background image
|
||||||
|
// IE9, FF4 use float numbers for width/height so use getComputedStyle for them to avoid text wrapping
|
||||||
|
// for details look at: http://vadikom.com/dailies/offsetwidth-offsetheight-useless-in-ie9-firefox4/
|
||||||
|
$table.width('auto').find('td').eq(3).width('auto').end().end().width(document.defaultView && document.defaultView.getComputedStyle && parseFloat(document.defaultView.getComputedStyle(this.$tip[0], null).width) || this.$tip.width()).find('td').eq(3).width('100%');
|
||||||
|
}
|
||||||
|
this.tipOuterW = this.$tip.outerWidth();
|
||||||
|
this.tipOuterH = this.$tip.outerHeight();
|
||||||
|
|
||||||
|
this.calcPos();
|
||||||
|
|
||||||
|
// position and show the arrow image
|
||||||
|
if (arrow && this.pos.arrow) {
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-' + this.pos.arrow;
|
||||||
|
this.$arrow.css('visibility', 'inherit');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (async) {
|
||||||
|
this.asyncAnimating = true;
|
||||||
|
var self = this;
|
||||||
|
this.$tip.css(currPos).animate({left: this.pos.l, top: this.pos.t}, 200, function() { self.asyncAnimating = false; });
|
||||||
|
} else {
|
||||||
|
this.$tip.css({left: this.pos.l, top: this.pos.t});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
display: function(hide) {
|
||||||
|
var active = this.$tip.data('active');
|
||||||
|
if (active && !hide || !active && hide)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.$tip.stop();
|
||||||
|
if ((this.opts.slide && this.pos.arrow || this.opts.fade) && (hide && this.opts.hideAniDuration || !hide && this.opts.showAniDuration)) {
|
||||||
|
var from = {}, to = {};
|
||||||
|
// this.pos.arrow is only undefined when alignX == alignY == 'center' and we don't need to slide in that rare case
|
||||||
|
if (this.opts.slide && this.pos.arrow) {
|
||||||
|
var prop, arr;
|
||||||
|
if (this.pos.arrow == 'bottom' || this.pos.arrow == 'top') {
|
||||||
|
prop = 'top';
|
||||||
|
arr = 'bottom';
|
||||||
|
} else {
|
||||||
|
prop = 'left';
|
||||||
|
arr = 'right';
|
||||||
|
}
|
||||||
|
var val = parseInt(this.$tip.css(prop));
|
||||||
|
from[prop] = val + (hide ? 0 : (this.pos.arrow == arr ? -this.opts.slideOffset : this.opts.slideOffset));
|
||||||
|
to[prop] = val + (hide ? (this.pos.arrow == arr ? this.opts.slideOffset : -this.opts.slideOffset) : 0) + 'px';
|
||||||
|
}
|
||||||
|
if (this.opts.fade) {
|
||||||
|
from.opacity = hide ? this.$tip.css('opacity') : 0;
|
||||||
|
to.opacity = hide ? 0 : this.opacity;
|
||||||
|
}
|
||||||
|
this.$tip.css(from).animate(to, this.opts[hide ? 'hideAniDuration' : 'showAniDuration']);
|
||||||
|
}
|
||||||
|
hide ? this.$tip.queue($.proxy(this.reset, this)) : this.$tip.css('visibility', 'inherit');
|
||||||
|
this.$tip.data('active', !active);
|
||||||
|
},
|
||||||
|
disable: function() {
|
||||||
|
this.reset();
|
||||||
|
this.disabled = true;
|
||||||
|
},
|
||||||
|
enable: function() {
|
||||||
|
this.disabled = false;
|
||||||
|
},
|
||||||
|
destroy: function() {
|
||||||
|
this.reset();
|
||||||
|
this.$tip.remove();
|
||||||
|
delete this.$tip;
|
||||||
|
this.content = null;
|
||||||
|
this.$elm.unbind('.poshytip').removeData('title.poshytip').removeData('poshytip');
|
||||||
|
tips.splice($.inArray(this, tips), 1);
|
||||||
|
},
|
||||||
|
clearTimeouts: function() {
|
||||||
|
if (this.showTimeout) {
|
||||||
|
clearTimeout(this.showTimeout);
|
||||||
|
this.showTimeout = 0;
|
||||||
|
}
|
||||||
|
if (this.hideTimeout) {
|
||||||
|
clearTimeout(this.hideTimeout);
|
||||||
|
this.hideTimeout = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
calcPos: function() {
|
||||||
|
var pos = {l: 0, t: 0, arrow: ''},
|
||||||
|
$win = $(window),
|
||||||
|
win = {
|
||||||
|
l: $win.scrollLeft(),
|
||||||
|
t: $win.scrollTop(),
|
||||||
|
w: $win.width(),
|
||||||
|
h: $win.height()
|
||||||
|
}, xL, xC, xR, yT, yC, yB;
|
||||||
|
if (this.opts.alignTo == 'cursor') {
|
||||||
|
xL = xC = xR = this.eventX;
|
||||||
|
yT = yC = yB = this.eventY;
|
||||||
|
} else { // this.opts.alignTo == 'target'
|
||||||
|
var elmOffset = this.$elm.offset(),
|
||||||
|
elm = {
|
||||||
|
l: elmOffset.left,
|
||||||
|
t: elmOffset.top,
|
||||||
|
w: this.$elm.outerWidth(),
|
||||||
|
h: this.$elm.outerHeight()
|
||||||
|
};
|
||||||
|
xL = elm.l + (this.opts.alignX != 'inner-right' ? 0 : elm.w); // left edge
|
||||||
|
xC = xL + Math.floor(elm.w / 2); // h center
|
||||||
|
xR = xL + (this.opts.alignX != 'inner-left' ? elm.w : 0); // right edge
|
||||||
|
yT = elm.t + (this.opts.alignY != 'inner-bottom' ? 0 : elm.h); // top edge
|
||||||
|
yC = yT + Math.floor(elm.h / 2); // v center
|
||||||
|
yB = yT + (this.opts.alignY != 'inner-top' ? elm.h : 0); // bottom edge
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep in viewport and calc arrow position
|
||||||
|
switch (this.opts.alignX) {
|
||||||
|
case 'right':
|
||||||
|
case 'inner-left':
|
||||||
|
pos.l = xR + this.opts.offsetX;
|
||||||
|
if (pos.l + this.tipOuterW > win.l + win.w)
|
||||||
|
pos.l = win.l + win.w - this.tipOuterW;
|
||||||
|
if (this.opts.alignX == 'right' || this.opts.alignY == 'center')
|
||||||
|
pos.arrow = 'left';
|
||||||
|
break;
|
||||||
|
case 'center':
|
||||||
|
pos.l = xC - Math.floor(this.tipOuterW / 2);
|
||||||
|
if (pos.l + this.tipOuterW > win.l + win.w)
|
||||||
|
pos.l = win.l + win.w - this.tipOuterW;
|
||||||
|
else if (pos.l < win.l)
|
||||||
|
pos.l = win.l;
|
||||||
|
break;
|
||||||
|
default: // 'left' || 'inner-right'
|
||||||
|
pos.l = xL - this.tipOuterW - this.opts.offsetX;
|
||||||
|
if (pos.l < win.l)
|
||||||
|
pos.l = win.l;
|
||||||
|
if (this.opts.alignX == 'left' || this.opts.alignY == 'center')
|
||||||
|
pos.arrow = 'right';
|
||||||
|
}
|
||||||
|
switch (this.opts.alignY) {
|
||||||
|
case 'bottom':
|
||||||
|
case 'inner-top':
|
||||||
|
pos.t = yB + this.opts.offsetY;
|
||||||
|
// 'left' and 'right' need priority for 'target'
|
||||||
|
if (!pos.arrow || this.opts.alignTo == 'cursor')
|
||||||
|
pos.arrow = 'top';
|
||||||
|
if (pos.t + this.tipOuterH > win.t + win.h) {
|
||||||
|
pos.t = yT - this.tipOuterH - this.opts.offsetY;
|
||||||
|
if (pos.arrow == 'top')
|
||||||
|
pos.arrow = 'bottom';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'center':
|
||||||
|
pos.t = yC - Math.floor(this.tipOuterH / 2);
|
||||||
|
if (pos.t + this.tipOuterH > win.t + win.h)
|
||||||
|
pos.t = win.t + win.h - this.tipOuterH;
|
||||||
|
else if (pos.t < win.t)
|
||||||
|
pos.t = win.t;
|
||||||
|
break;
|
||||||
|
default: // 'top' || 'inner-bottom'
|
||||||
|
pos.t = yT - this.tipOuterH - this.opts.offsetY;
|
||||||
|
// 'left' and 'right' need priority for 'target'
|
||||||
|
if (!pos.arrow || this.opts.alignTo == 'cursor')
|
||||||
|
pos.arrow = 'bottom';
|
||||||
|
if (pos.t < win.t) {
|
||||||
|
pos.t = yB + this.opts.offsetY;
|
||||||
|
if (pos.arrow == 'bottom')
|
||||||
|
pos.arrow = 'top';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.pos = pos;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.poshytip = function(options) {
|
||||||
|
if (typeof options == 'string') {
|
||||||
|
var args = arguments,
|
||||||
|
method = options;
|
||||||
|
Array.prototype.shift.call(args);
|
||||||
|
// unhook live events if 'destroy' is called
|
||||||
|
if (method == 'destroy')
|
||||||
|
this.die('mouseenter.poshytip').die('focus.poshytip');
|
||||||
|
return this.each(function() {
|
||||||
|
var poshytip = $(this).data('poshytip');
|
||||||
|
if (poshytip && poshytip[method])
|
||||||
|
poshytip[method].apply(poshytip, args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts = $.extend({}, $.fn.poshytip.defaults, options);
|
||||||
|
|
||||||
|
// generate CSS for this tip class if not already generated
|
||||||
|
if (!$('#poshytip-css-' + opts.className)[0])
|
||||||
|
$(['<style id="poshytip-css-',opts.className,'" type="text/css">',
|
||||||
|
'div.',opts.className,'{visibility:hidden;position:absolute;top:0;left:0;}',
|
||||||
|
'div.',opts.className,' table, div.',opts.className,' td{margin:0;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;}',
|
||||||
|
'div.',opts.className,' td.tip-bg-image span{display:block;font:1px/1px sans-serif;height:',opts.bgImageFrameSize,'px;width:',opts.bgImageFrameSize,'px;overflow:hidden;}',
|
||||||
|
'div.',opts.className,' td.tip-right{background-position:100% 0;}',
|
||||||
|
'div.',opts.className,' td.tip-bottom{background-position:100% 100%;}',
|
||||||
|
'div.',opts.className,' td.tip-left{background-position:0 100%;}',
|
||||||
|
'div.',opts.className,' div.tip-inner{background-position:-',opts.bgImageFrameSize,'px -',opts.bgImageFrameSize,'px;}',
|
||||||
|
'div.',opts.className,' div.tip-arrow{visibility:hidden;position:absolute;overflow:hidden;font:1px/1px sans-serif;}',
|
||||||
|
'</style>'].join('')).appendTo('head');
|
||||||
|
|
||||||
|
// check if we need to hook live events
|
||||||
|
if (opts.liveEvents && opts.showOn != 'none') {
|
||||||
|
var deadOpts = $.extend({}, opts, { liveEvents: false });
|
||||||
|
switch (opts.showOn) {
|
||||||
|
case 'hover':
|
||||||
|
this.live('mouseenter.poshytip', function() {
|
||||||
|
var $this = $(this);
|
||||||
|
if (!$this.data('poshytip'))
|
||||||
|
$this.poshytip(deadOpts).poshytip('mouseenter');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'focus':
|
||||||
|
this.live('focus.poshytip', function() {
|
||||||
|
var $this = $(this);
|
||||||
|
if (!$this.data('poshytip'))
|
||||||
|
$this.poshytip(deadOpts).poshytip('show');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
new $.Poshytip(this, opts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// default settings
|
||||||
|
$.fn.poshytip.defaults = {
|
||||||
|
content: '[title]', // content to display ('[title]', 'string', element, function(updateCallback){...}, jQuery)
|
||||||
|
className: 'tip-yellow', // class for the tips
|
||||||
|
bgImageFrameSize: 10, // size in pixels for the background-image (if set in CSS) frame around the inner content of the tip
|
||||||
|
showTimeout: 500, // timeout before showing the tip (in milliseconds 1000 == 1 second)
|
||||||
|
hideTimeout: 100, // timeout before hiding the tip
|
||||||
|
timeOnScreen: 0, // timeout before automatically hiding the tip after showing it (set to > 0 in order to activate)
|
||||||
|
showOn: 'hover', // handler for showing the tip ('hover', 'focus', 'none') - use 'none' to trigger it manually
|
||||||
|
liveEvents: false, // use live events
|
||||||
|
alignTo: 'cursor', // align/position the tip relative to ('cursor', 'target')
|
||||||
|
alignX: 'right', // horizontal alignment for the tip relative to the mouse cursor or the target element
|
||||||
|
// ('right', 'center', 'left', 'inner-left', 'inner-right') - 'inner-*' matter if alignTo:'target'
|
||||||
|
alignY: 'top', // vertical alignment for the tip relative to the mouse cursor or the target element
|
||||||
|
// ('bottom', 'center', 'top', 'inner-bottom', 'inner-top') - 'inner-*' matter if alignTo:'target'
|
||||||
|
offsetX: -22, // offset X pixels from the default position - doesn't matter if alignX:'center'
|
||||||
|
offsetY: 18, // offset Y pixels from the default position - doesn't matter if alignY:'center'
|
||||||
|
allowTipHover: true, // allow hovering the tip without hiding it onmouseout of the target - matters only if showOn:'hover'
|
||||||
|
followCursor: false, // if the tip should follow the cursor - matters only if showOn:'hover' and alignTo:'cursor'
|
||||||
|
fade: true, // use fade animation
|
||||||
|
slide: true, // use slide animation
|
||||||
|
slideOffset: 8, // slide animation offset
|
||||||
|
showAniDuration: 300, // show animation duration - set to 0 if you don't want show animation
|
||||||
|
hideAniDuration: 300 // hide animation duration - set to 0 if you don't want hide animation
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery);
|
7
libs/poshytip/jquery.poshytip.min.js
vendored
Normal file
470
libs/poshytip/jquery.poshytip_corrected.js
Normal file
@ -0,0 +1,470 @@
|
|||||||
|
/*
|
||||||
|
* Poshy Tip jQuery plugin v1.1
|
||||||
|
* http://vadikom.com/tools/poshy-tip-jquery-plugin-for-stylish-tooltips/
|
||||||
|
* Copyright 2010-2011, Vasil Dinkov, http://vadikom.com/
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
var tips = [],
|
||||||
|
reBgImage = /^url\(["']?([^"'\)]*)["']?\);?$/i,
|
||||||
|
rePNG = /\.png$/i,
|
||||||
|
ie6 = $.browser.msie && $.browser.version == 6;
|
||||||
|
|
||||||
|
// make sure the tips' position is updated on resize
|
||||||
|
function handleWindowResize() {
|
||||||
|
$.each(tips, function() {
|
||||||
|
this.refresh(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(window).resize(handleWindowResize);
|
||||||
|
|
||||||
|
$.Poshytip = function(elm, options) {
|
||||||
|
this.$elm = $(elm);
|
||||||
|
this.opts = $.extend({}, $.fn.poshytip.defaults, options);
|
||||||
|
this.$tip = $(['<div class="',this.opts.className,'">',
|
||||||
|
'<div class="tip-inner tip-bg-image"></div>',
|
||||||
|
'<div class="tip-arrow tip-arrow-top tip-arrow-right tip-arrow-bottom tip-arrow-left"></div>',
|
||||||
|
'</div>'].join('')).appendTo(document.body);
|
||||||
|
this.$arrow = this.$tip.find('div.tip-arrow');
|
||||||
|
this.$inner = this.$tip.find('div.tip-inner');
|
||||||
|
this.disabled = false;
|
||||||
|
this.content = null;
|
||||||
|
this.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
$.Poshytip.prototype = {
|
||||||
|
init: function() {
|
||||||
|
tips.push(this);
|
||||||
|
|
||||||
|
// save the original title and a reference to the Poshytip object
|
||||||
|
var title = this.$elm.attr('title');
|
||||||
|
this.$elm.data('title.poshytip', title !== undefined ? title : null)
|
||||||
|
.data('poshytip', this);
|
||||||
|
|
||||||
|
// hook element events
|
||||||
|
if (this.opts.showOn != 'none') {
|
||||||
|
this.$elm.bind({
|
||||||
|
'mouseenter.poshytip': $.proxy(this.mouseenter, this),
|
||||||
|
'mouseleave.poshytip': $.proxy(this.mouseleave, this)
|
||||||
|
});
|
||||||
|
switch (this.opts.showOn) {
|
||||||
|
case 'hover':
|
||||||
|
if (this.opts.alignTo == 'cursor')
|
||||||
|
this.$elm.bind('mousemove.poshytip', $.proxy(this.mousemove, this));
|
||||||
|
if (this.opts.allowTipHover)
|
||||||
|
this.$tip.hover($.proxy(this.clearTimeouts, this), $.proxy(this.mouseleave, this));
|
||||||
|
break;
|
||||||
|
case 'focus':
|
||||||
|
this.$elm.bind({
|
||||||
|
'focus.poshytip': $.proxy(this.show, this),
|
||||||
|
'blur.poshytip': $.proxy(this.hide, this)
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mouseenter: function(e) {
|
||||||
|
if (this.disabled)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.$elm.attr('title', '');
|
||||||
|
if (this.opts.showOn == 'focus')
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.clearTimeouts();
|
||||||
|
this.showTimeout = setTimeout($.proxy(this.show, this), this.opts.showTimeout);
|
||||||
|
},
|
||||||
|
mouseleave: function(e) {
|
||||||
|
if (this.disabled || this.asyncAnimating && (this.$tip[0] === e.relatedTarget || jQuery.contains(this.$tip[0], e.relatedTarget)))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
var title = this.$elm.data('title.poshytip');
|
||||||
|
if (title !== null)
|
||||||
|
this.$elm.attr('title', title);
|
||||||
|
if (this.opts.showOn == 'focus')
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.clearTimeouts();
|
||||||
|
this.hideTimeout = setTimeout($.proxy(this.hide, this), this.opts.hideTimeout);
|
||||||
|
},
|
||||||
|
mousemove: function(e) {
|
||||||
|
if (this.disabled)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this.eventX = e.pageX;
|
||||||
|
this.eventY = e.pageY;
|
||||||
|
if (this.opts.followCursor && this.$tip.data('active')) {
|
||||||
|
this.calcPos();
|
||||||
|
this.$tip.css({left: this.pos.l, top: this.pos.t});
|
||||||
|
if (this.pos.arrow)
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-' + this.pos.arrow;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show: function() {
|
||||||
|
if (this.disabled || this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.reset();
|
||||||
|
this.update();
|
||||||
|
this.display();
|
||||||
|
if (this.opts.timeOnScreen)
|
||||||
|
setTimeout($.proxy(this.hide, this), this.opts.timeOnScreen);
|
||||||
|
},
|
||||||
|
hide: function() {
|
||||||
|
if (this.disabled || !this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.display(true);
|
||||||
|
},
|
||||||
|
reset: function() {
|
||||||
|
this.$tip.queue([]).detach().css('visibility', 'hidden').data('active', false);
|
||||||
|
this.$inner.find('*').poshytip('hide');
|
||||||
|
if (this.opts.fade)
|
||||||
|
this.$tip.css('opacity', this.opacity);
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-top tip-arrow-right tip-arrow-bottom tip-arrow-left';
|
||||||
|
this.asyncAnimating = false;
|
||||||
|
},
|
||||||
|
update: function(content, dontOverwriteOption) {
|
||||||
|
if (this.disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var async = content !== undefined;
|
||||||
|
if (async) {
|
||||||
|
if (!dontOverwriteOption)
|
||||||
|
this.opts.content = content;
|
||||||
|
if (!this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
content = this.opts.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update content only if it has been changed since last time
|
||||||
|
var self = this,
|
||||||
|
newContent = typeof content == 'function' ?
|
||||||
|
content.call(this.$elm[0], function(newContent) {
|
||||||
|
self.update(newContent);
|
||||||
|
}) :
|
||||||
|
content == '[title]' ? this.$elm.data('title.poshytip') : content;
|
||||||
|
if (this.content !== newContent) {
|
||||||
|
this.$inner.empty().append(newContent);
|
||||||
|
this.content = newContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.refresh(async);
|
||||||
|
},
|
||||||
|
refresh: function(async) {
|
||||||
|
if (this.disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (async) {
|
||||||
|
if (!this.$tip.data('active'))
|
||||||
|
return;
|
||||||
|
// save current position as we will need to animate
|
||||||
|
var currPos = {left: this.$tip.css('left'), top: this.$tip.css('top')};
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset position to avoid text wrapping, etc.
|
||||||
|
this.$tip.css({left: 0, top: 0}).appendTo(document.body);
|
||||||
|
|
||||||
|
// save default opacity
|
||||||
|
if (this.opacity === undefined)
|
||||||
|
this.opacity = this.$tip.css('opacity');
|
||||||
|
|
||||||
|
// check for images - this code is here (i.e. executed each time we show the tip and not on init) due to some browser inconsistencies
|
||||||
|
var bgImage = this.$tip.css('background-image').match(reBgImage),
|
||||||
|
arrow = this.$arrow.css('background-image').match(reBgImage);
|
||||||
|
|
||||||
|
if (bgImage) {
|
||||||
|
var bgImagePNG = rePNG.test(bgImage[1]);
|
||||||
|
// fallback to background-color/padding/border in IE6 if a PNG is used
|
||||||
|
if (ie6 && bgImagePNG) {
|
||||||
|
this.$tip.css('background-image', 'none');
|
||||||
|
this.$inner.css({margin: 0, border: 0, padding: 0});
|
||||||
|
bgImage = bgImagePNG = false;
|
||||||
|
} else {
|
||||||
|
this.$tip.prepend('<table class="fallback" border="0" cellpadding="0" cellspacing="0"><tr><td class="tip-top tip-bg-image" colspan="2"><span></span></td><td class="tip-right tip-bg-image" rowspan="2"><span></span></td></tr><tr><td class="tip-left tip-bg-image" rowspan="2"><span></span></td><td></td></tr><tr><td class="tip-bottom tip-bg-image" colspan="2"><span></span></td></tr></table>')
|
||||||
|
.css({border: 0, padding: 0, 'background-image': 'none', 'background-color': 'transparent'})
|
||||||
|
.find('.tip-bg-image').css('background-image', 'url("' + bgImage[1] +'")').end()
|
||||||
|
.find('td').eq(3).append(this.$inner);
|
||||||
|
}
|
||||||
|
// disable fade effect in IE due to Alpha filter + translucent PNG issue
|
||||||
|
if (bgImagePNG && !$.support.opacity)
|
||||||
|
this.opts.fade = false;
|
||||||
|
}
|
||||||
|
// IE arrow fixes
|
||||||
|
if (arrow && !$.support.opacity) {
|
||||||
|
// disable arrow in IE6 if using a PNG
|
||||||
|
if (ie6 && rePNG.test(arrow[1])) {
|
||||||
|
arrow = false;
|
||||||
|
this.$arrow.css('background-image', 'none');
|
||||||
|
}
|
||||||
|
// disable fade effect in IE due to Alpha filter + translucent PNG issue
|
||||||
|
this.opts.fade = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $table = this.$tip.find('table.fallback');
|
||||||
|
if (ie6) {
|
||||||
|
// fix min/max-width in IE6
|
||||||
|
this.$tip[0].style.width = '';
|
||||||
|
$table.width('auto').find('td').eq(3).width('auto');
|
||||||
|
var tipW = this.$tip.width(),
|
||||||
|
minW = parseInt(this.$tip.css('min-width')),
|
||||||
|
maxW = parseInt(this.$tip.css('max-width'));
|
||||||
|
if (!isNaN(minW) && tipW < minW)
|
||||||
|
tipW = minW;
|
||||||
|
else if (!isNaN(maxW) && tipW > maxW)
|
||||||
|
tipW = maxW;
|
||||||
|
this.$tip.add($table).width(tipW).eq(0).find('td').eq(3).width('100%');
|
||||||
|
} else if ($table[0]) {
|
||||||
|
// fix the table width if we are using a background image
|
||||||
|
// IE9, FF4 use float numbers for width/height so use getComputedStyle for them to avoid text wrapping
|
||||||
|
// for details look at: http://vadikom.com/dailies/offsetwidth-offsetheight-useless-in-ie9-firefox4/
|
||||||
|
$table.width('auto').find('td').eq(3).width('auto').end().end().width(document.defaultView && document.defaultView.getComputedStyle && parseFloat(document.defaultView.getComputedStyle(this.$tip[0], null).width) || this.$tip.width()).find('td').eq(3).width('100%');
|
||||||
|
}
|
||||||
|
this.tipOuterW = this.$tip.outerWidth();
|
||||||
|
this.tipOuterH = this.$tip.outerHeight();
|
||||||
|
|
||||||
|
this.calcPos();
|
||||||
|
|
||||||
|
// position and show the arrow image
|
||||||
|
if (arrow && this.pos.arrow) {
|
||||||
|
this.$arrow[0].className = 'tip-arrow tip-arrow-' + this.pos.arrow;
|
||||||
|
this.$arrow.css('visibility', 'inherit');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (async) {
|
||||||
|
this.asyncAnimating = true;
|
||||||
|
var self = this;
|
||||||
|
this.$tip.css(currPos).animate({left: this.pos.l, top: this.pos.t}, 200, function() { self.asyncAnimating = false; });
|
||||||
|
} else {
|
||||||
|
this.$tip.css({left: this.pos.l, top: this.pos.t});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
display: function(hide) {
|
||||||
|
var active = this.$tip.data('active');
|
||||||
|
if (active && !hide || !active && hide)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.$tip.stop();
|
||||||
|
if ((this.opts.slide && this.pos.arrow || this.opts.fade) && (hide && this.opts.hideAniDuration || !hide && this.opts.showAniDuration)) {
|
||||||
|
var from = {}, to = {};
|
||||||
|
// this.pos.arrow is only undefined when alignX == alignY == 'center' and we don't need to slide in that rare case
|
||||||
|
if (this.opts.slide && this.pos.arrow) {
|
||||||
|
var prop, arr;
|
||||||
|
if (this.pos.arrow == 'bottom' || this.pos.arrow == 'top') {
|
||||||
|
prop = 'top';
|
||||||
|
arr = 'bottom';
|
||||||
|
} else {
|
||||||
|
prop = 'left';
|
||||||
|
arr = 'right';
|
||||||
|
}
|
||||||
|
var val = parseInt(this.$tip.css(prop));
|
||||||
|
from[prop] = val + (hide ? 0 : (this.pos.arrow == arr ? -this.opts.slideOffset : this.opts.slideOffset));
|
||||||
|
to[prop] = val + (hide ? (this.pos.arrow == arr ? this.opts.slideOffset : -this.opts.slideOffset) : 0) + 'px';
|
||||||
|
}
|
||||||
|
if (this.opts.fade) {
|
||||||
|
from.opacity = hide ? this.$tip.css('opacity') : 0;
|
||||||
|
to.opacity = hide ? 0 : this.opacity;
|
||||||
|
}
|
||||||
|
this.$tip.css(from).animate(to, this.opts[hide ? 'hideAniDuration' : 'showAniDuration']);
|
||||||
|
}
|
||||||
|
hide ? this.$tip.queue($.proxy(this.reset, this)) : this.$tip.css('visibility', 'inherit');
|
||||||
|
this.$tip.data('active', !active);
|
||||||
|
},
|
||||||
|
disable: function() {
|
||||||
|
this.reset();
|
||||||
|
this.disabled = true;
|
||||||
|
},
|
||||||
|
enable: function() {
|
||||||
|
this.disabled = false;
|
||||||
|
},
|
||||||
|
destroy: function() {
|
||||||
|
this.reset();
|
||||||
|
this.$tip.remove();
|
||||||
|
delete this.$tip;
|
||||||
|
this.content = null;
|
||||||
|
this.$elm.unbind('.poshytip').removeData('title.poshytip').removeData('poshytip');
|
||||||
|
tips.splice($.inArray(this, tips), 1);
|
||||||
|
},
|
||||||
|
clearTimeouts: function() {
|
||||||
|
if (this.showTimeout) {
|
||||||
|
clearTimeout(this.showTimeout);
|
||||||
|
this.showTimeout = 0;
|
||||||
|
}
|
||||||
|
if (this.hideTimeout) {
|
||||||
|
clearTimeout(this.hideTimeout);
|
||||||
|
this.hideTimeout = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
calcPos: function() {
|
||||||
|
var pos = {l: 0, t: 0, arrow: ''},
|
||||||
|
$win = $(window),
|
||||||
|
win = {
|
||||||
|
l: $win.scrollLeft(),
|
||||||
|
t: $win.scrollTop(),
|
||||||
|
w: $win.width(),
|
||||||
|
h: $win.height()
|
||||||
|
}, xL, xC, xR, yT, yC, yB;
|
||||||
|
if (this.opts.alignTo == 'cursor') {
|
||||||
|
xL = xC = xR = this.eventX;
|
||||||
|
yT = yC = yB = this.eventY;
|
||||||
|
} else { // this.opts.alignTo == 'target'
|
||||||
|
var elmOffset = this.$elm.offset(),
|
||||||
|
elm = {
|
||||||
|
l: elmOffset.left,
|
||||||
|
t: elmOffset.top,
|
||||||
|
w: this.$elm.outerWidth(),
|
||||||
|
h: this.$elm.outerHeight()
|
||||||
|
};
|
||||||
|
xL = elm.l + (this.opts.alignX != 'inner-right' ? 0 : elm.w); // left edge
|
||||||
|
xC = xL + Math.floor(elm.w / 2); // h center
|
||||||
|
xR = xL + (this.opts.alignX != 'inner-left' ? elm.w : 0); // right edge
|
||||||
|
yT = elm.t + (this.opts.alignY != 'inner-bottom' ? 0 : elm.h); // top edge
|
||||||
|
yC = yT + Math.floor(elm.h / 2); // v center
|
||||||
|
yB = yT + (this.opts.alignY != 'inner-top' ? elm.h : 0); // bottom edge
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep in viewport and calc arrow position
|
||||||
|
switch (this.opts.alignX) {
|
||||||
|
case 'right':
|
||||||
|
case 'inner-left':
|
||||||
|
pos.l = xR + this.opts.offsetX;
|
||||||
|
if (pos.l + this.tipOuterW > win.l + win.w)
|
||||||
|
pos.l = win.l + win.w - this.tipOuterW;
|
||||||
|
if (this.opts.alignX == 'right' || this.opts.alignY == 'center')
|
||||||
|
pos.arrow = 'left';
|
||||||
|
break;
|
||||||
|
case 'center':
|
||||||
|
pos.l = xC - Math.floor(this.tipOuterW / 2);
|
||||||
|
if (pos.l + this.tipOuterW > win.l + win.w)
|
||||||
|
pos.l = win.l + win.w - this.tipOuterW;
|
||||||
|
else if (pos.l < win.l)
|
||||||
|
pos.l = win.l;
|
||||||
|
break;
|
||||||
|
default: // 'left' || 'inner-right'
|
||||||
|
pos.l = xL - this.tipOuterW - this.opts.offsetX;
|
||||||
|
if (pos.l < win.l)
|
||||||
|
pos.l = win.l;
|
||||||
|
if (this.opts.alignX == 'left' || this.opts.alignY == 'center')
|
||||||
|
pos.arrow = 'right';
|
||||||
|
}
|
||||||
|
switch (this.opts.alignY) {
|
||||||
|
case 'bottom':
|
||||||
|
case 'inner-top':
|
||||||
|
pos.t = yB + this.opts.offsetY;
|
||||||
|
// 'left' and 'right' need priority for 'target'
|
||||||
|
if (!pos.arrow || this.opts.alignTo == 'cursor')
|
||||||
|
pos.arrow = 'top';
|
||||||
|
if (pos.t + this.tipOuterH > win.t + win.h) {
|
||||||
|
pos.t = yT - this.tipOuterH - this.opts.offsetY;
|
||||||
|
if (pos.arrow == 'top')
|
||||||
|
pos.arrow = 'bottom';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'center':
|
||||||
|
pos.t = yC - Math.floor(this.tipOuterH / 2);
|
||||||
|
if (pos.t + this.tipOuterH > win.t + win.h)
|
||||||
|
pos.t = win.t + win.h - this.tipOuterH;
|
||||||
|
else if (pos.t < win.t)
|
||||||
|
pos.t = win.t;
|
||||||
|
break;
|
||||||
|
default: // 'top' || 'inner-bottom'
|
||||||
|
pos.t = yT - this.tipOuterH - this.opts.offsetY;
|
||||||
|
// 'left' and 'right' need priority for 'target'
|
||||||
|
if (!pos.arrow || this.opts.alignTo == 'cursor')
|
||||||
|
pos.arrow = 'bottom';
|
||||||
|
if (pos.t < win.t) {
|
||||||
|
pos.t = yB + this.opts.offsetY;
|
||||||
|
if (pos.arrow == 'bottom')
|
||||||
|
pos.arrow = 'top';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.pos = pos;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.poshytip = function(options) {
|
||||||
|
if (typeof options == 'string') {
|
||||||
|
var args = arguments,
|
||||||
|
method = options;
|
||||||
|
Array.prototype.shift.call(args);
|
||||||
|
// unhook live events if 'destroy' is called
|
||||||
|
if (method == 'destroy')
|
||||||
|
this.die('mouseenter.poshytip').die('focus.poshytip');
|
||||||
|
return this.each(function() {
|
||||||
|
var poshytip = $(this).data('poshytip');
|
||||||
|
if (poshytip && poshytip[method])
|
||||||
|
poshytip[method].apply(poshytip, args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts = $.extend({}, $.fn.poshytip.defaults, options);
|
||||||
|
|
||||||
|
// generate CSS for this tip class if not already generated
|
||||||
|
if (!$('#poshytip-css-' + opts.className)[0])
|
||||||
|
$(['<style id="poshytip-css-',opts.className,'" type="text/css">',
|
||||||
|
'div.',opts.className,'{visibility:hidden;position:absolute;top:0;left:0;}',
|
||||||
|
'div.',opts.className,' table, div.',opts.className,' td{margin:0;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;}',
|
||||||
|
'div.',opts.className,' td.tip-bg-image span{display:block;font:1px/1px sans-serif;height:',opts.bgImageFrameSize,'px;width:',opts.bgImageFrameSize,'px;overflow:hidden;}',
|
||||||
|
'div.',opts.className,' td.tip-right{background-position:100% 0;}',
|
||||||
|
'div.',opts.className,' td.tip-bottom{background-position:100% 100%;}',
|
||||||
|
'div.',opts.className,' td.tip-left{background-position:0 100%;}',
|
||||||
|
'div.',opts.className,' div.tip-inner{background-position:-',opts.bgImageFrameSize,'px -',opts.bgImageFrameSize,'px;}',
|
||||||
|
'div.',opts.className,' div.tip-arrow{visibility:hidden;position:absolute;overflow:hidden;font:1px/1px sans-serif;}',
|
||||||
|
'</style>'].join('')).appendTo('head');
|
||||||
|
|
||||||
|
// check if we need to hook live events
|
||||||
|
if (opts.liveEvents && opts.showOn != 'none') {
|
||||||
|
var deadOpts = $.extend({}, opts, { liveEvents: false });
|
||||||
|
switch (opts.showOn) {
|
||||||
|
case 'hover':
|
||||||
|
this.live('mouseenter.poshytip', function() {
|
||||||
|
var $this = $(this);
|
||||||
|
if (!$this.data('poshytip'))
|
||||||
|
$this.poshytip(deadOpts).poshytip('mouseenter');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'focus':
|
||||||
|
this.live('focus.poshytip', function() {
|
||||||
|
var $this = $(this);
|
||||||
|
if (!$this.data('poshytip'))
|
||||||
|
$this.poshytip(deadOpts).poshytip('show');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
new $.Poshytip(this, opts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// default settings
|
||||||
|
$.fn.poshytip.defaults = {
|
||||||
|
content: '[title]', // content to display ('[title]', 'string', element, function(updateCallback){...}, jQuery)
|
||||||
|
className: 'tip-yellow', // class for the tips
|
||||||
|
bgImageFrameSize: 10, // size in pixels for the background-image (if set in CSS) frame around the inner content of the tip
|
||||||
|
showTimeout: 500, // timeout before showing the tip (in milliseconds 1000 == 1 second)
|
||||||
|
hideTimeout: 100, // timeout before hiding the tip
|
||||||
|
timeOnScreen: 0, // timeout before automatically hiding the tip after showing it (set to > 0 in order to activate)
|
||||||
|
showOn: 'hover', // handler for showing the tip ('hover', 'focus', 'none') - use 'none' to trigger it manually
|
||||||
|
liveEvents: false, // use live events
|
||||||
|
alignTo: 'cursor', // align/position the tip relative to ('cursor', 'target')
|
||||||
|
alignX: 'right', // horizontal alignment for the tip relative to the mouse cursor or the target element
|
||||||
|
// ('right', 'center', 'left', 'inner-left', 'inner-right') - 'inner-*' matter if alignTo:'target'
|
||||||
|
alignY: 'top', // vertical alignment for the tip relative to the mouse cursor or the target element
|
||||||
|
// ('bottom', 'center', 'top', 'inner-bottom', 'inner-top') - 'inner-*' matter if alignTo:'target'
|
||||||
|
offsetX: -22, // offset X pixels from the default position - doesn't matter if alignX:'center'
|
||||||
|
offsetY: 18, // offset Y pixels from the default position - doesn't matter if alignY:'center'
|
||||||
|
allowTipHover: true, // allow hovering the tip without hiding it onmouseout of the target - matters only if showOn:'hover'
|
||||||
|
followCursor: false, // if the tip should follow the cursor - matters only if showOn:'hover' and alignTo:'cursor'
|
||||||
|
fade: true, // use fade animation
|
||||||
|
slide: true, // use slide animation
|
||||||
|
slideOffset: 8, // slide animation offset
|
||||||
|
showAniDuration: 300, // show animation duration - set to 0 if you don't want show animation
|
||||||
|
hideAniDuration: 300 // hide animation duration - set to 0 if you don't want hide animation
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery);
|
62
libs/poshytip/tip-darkgray/tip-darkgray.css
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
.tip-darkgray {
|
||||||
|
opacity:0.95;
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
text-shadow:#444 0 1px 1px;
|
||||||
|
border:1px solid #888;
|
||||||
|
padding:8px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:530px;
|
||||||
|
color:#fff;
|
||||||
|
background-color:#999;
|
||||||
|
background-image:url(tip-darkgray.png); /* bgImageFrameSize >= 11 should work fine */
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-darkgray .tip-inner {
|
||||||
|
font:bold 12px/18px arial,helvetica,sans-serif;
|
||||||
|
margin-top:-1px;
|
||||||
|
padding:0 4px 3px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-darkgray .tip-arrow-top {
|
||||||
|
margin-top:-7px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:16px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-darkgray_arrows.png) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-darkgray .tip-arrow-right {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-7px;
|
||||||
|
top:50%;
|
||||||
|
left:100%;
|
||||||
|
width:11px;
|
||||||
|
height:21px;
|
||||||
|
background:url(tip-darkgray_arrows.png) no-repeat -22px 0;
|
||||||
|
}
|
||||||
|
.tip-darkgray .tip-arrow-bottom {
|
||||||
|
margin-top:-7px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:100%;
|
||||||
|
left:0;
|
||||||
|
width:22px;
|
||||||
|
height:13px;
|
||||||
|
background:url(tip-darkgray_arrows.png) no-repeat -44px 0;
|
||||||
|
}
|
||||||
|
.tip-darkgray .tip-arrow-left {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-6px;
|
||||||
|
top:50%;
|
||||||
|
left:0;
|
||||||
|
width:11px;
|
||||||
|
height:21px;
|
||||||
|
background:url(tip-darkgray_arrows.png) no-repeat -66px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-darkgray/tip-darkgray.png
Normal file
After ![]() (image error) Size: 5.1 KiB |
BIN
libs/poshytip/tip-darkgray/tip-darkgray_arrows.png
Normal file
After ![]() (image error) Size: 1.2 KiB |
57
libs/poshytip/tip-green/tip-green.css
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.tip-green {
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
border:1px solid #bdde98;
|
||||||
|
padding:7px 10px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:300px;
|
||||||
|
color:#860404;
|
||||||
|
background-color:#dff6c6;
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-green .tip-inner {
|
||||||
|
font:bold 12px/14px arial,helvetica,sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-green .tip-arrow-top {
|
||||||
|
margin-top:-10px;
|
||||||
|
margin-left:6px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:10px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-green_arrows.gif) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-green .tip-arrow-right {
|
||||||
|
margin-top:6px;
|
||||||
|
margin-left:0;
|
||||||
|
top:0;
|
||||||
|
left:100%;
|
||||||
|
width:10px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-green_arrows.gif) no-repeat -10px 0;
|
||||||
|
}
|
||||||
|
.tip-green .tip-arrow-bottom {
|
||||||
|
margin-top:0;
|
||||||
|
margin-left:6px;
|
||||||
|
top:100%;
|
||||||
|
left:0;
|
||||||
|
width:10px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-green_arrows.gif) no-repeat -20px 0;
|
||||||
|
}
|
||||||
|
.tip-green .tip-arrow-left {
|
||||||
|
margin-top:6px;
|
||||||
|
margin-left:-10px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:10px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-green_arrows.gif) no-repeat -30px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-green/tip-green_arrows.gif
Normal file
After ![]() (image error) Size: 118 B |
58
libs/poshytip/tip-skyblue/tip-skyblue.css
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
.tip-skyblue {
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
padding:8px 10px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:300px;
|
||||||
|
color:#37356c;
|
||||||
|
background-color:#b9f3f8;
|
||||||
|
background-image:url(tip-skyblue.png); /* bgImageFrameSize == 9 works fine */
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-skyblue .tip-inner {
|
||||||
|
font:bold 13px/15px 'trebuchet ms',arial,helvetica,sans-serif;
|
||||||
|
padding:0 3px 1px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-skyblue .tip-arrow-top {
|
||||||
|
margin-top:-12px;
|
||||||
|
margin-left:0;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:11px;
|
||||||
|
height:19px;
|
||||||
|
background:url(tip-skyblue_arrows.png) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-skyblue .tip-arrow-right {
|
||||||
|
margin-top:0;
|
||||||
|
margin-left:-7px;
|
||||||
|
top:0;
|
||||||
|
left:100%;
|
||||||
|
width:18px;
|
||||||
|
height:13px;
|
||||||
|
background:url(tip-skyblue_arrows.png) no-repeat -20px 0;
|
||||||
|
}
|
||||||
|
.tip-skyblue .tip-arrow-bottom {
|
||||||
|
margin-top:-8px;
|
||||||
|
margin-left:0;
|
||||||
|
top:100%;
|
||||||
|
left:0;
|
||||||
|
width:11px;
|
||||||
|
height:20px;
|
||||||
|
background:url(tip-skyblue_arrows.png) no-repeat -40px 0;
|
||||||
|
}
|
||||||
|
.tip-skyblue .tip-arrow-left {
|
||||||
|
margin-top:0;
|
||||||
|
margin-left:-11px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:18px;
|
||||||
|
height:13px;
|
||||||
|
background:url(tip-skyblue_arrows.png) no-repeat -60px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-skyblue/tip-skyblue.png
Normal file
After ![]() (image error) Size: 4.6 KiB |
BIN
libs/poshytip/tip-skyblue/tip-skyblue_arrows.png
Normal file
After ![]() (image error) Size: 896 B |
59
libs/poshytip/tip-twitter/tip-twitter.css
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
.tip-twitter {
|
||||||
|
opacity:0.8;
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
border-radius:4px;
|
||||||
|
-moz-border-radius:4px;
|
||||||
|
-webkit-border-radius:4px;
|
||||||
|
padding:8px 8px;
|
||||||
|
max-width:200px;
|
||||||
|
color:#fff;
|
||||||
|
background-color:#000;
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-twitter .tip-inner {
|
||||||
|
font:bold 11px/14px 'Lucida Grande',sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-twitter .tip-arrow-top {
|
||||||
|
margin-top:-5px;
|
||||||
|
margin-left:-5px; /* approx. half the width to center it */
|
||||||
|
top:0;
|
||||||
|
left:50%;
|
||||||
|
width:9px;
|
||||||
|
height:5px;
|
||||||
|
background:url(tip-twitter_arrows.gif) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-twitter .tip-arrow-right {
|
||||||
|
margin-top:-4px; /* approx. half the height to center it */
|
||||||
|
margin-left:0;
|
||||||
|
top:50%;
|
||||||
|
left:100%;
|
||||||
|
width:5px;
|
||||||
|
height:9px;
|
||||||
|
background:url(tip-twitter_arrows.gif) no-repeat -9px 0;
|
||||||
|
}
|
||||||
|
.tip-twitter .tip-arrow-bottom {
|
||||||
|
margin-top:0;
|
||||||
|
margin-left:-5px; /* approx. half the width to center it */
|
||||||
|
top:100%;
|
||||||
|
left:50%;
|
||||||
|
width:9px;
|
||||||
|
height:5px;
|
||||||
|
background:url(tip-twitter_arrows.gif) no-repeat -18px 0;
|
||||||
|
}
|
||||||
|
.tip-twitter .tip-arrow-left {
|
||||||
|
margin-top:-4px; /* approx. half the height to center it */
|
||||||
|
margin-left:-5px;
|
||||||
|
top:50%;
|
||||||
|
left:0;
|
||||||
|
width:5px;
|
||||||
|
height:9px;
|
||||||
|
background:url(tip-twitter_arrows.gif) no-repeat -27px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-twitter/tip-twitter_arrows.gif
Normal file
After ![]() (image error) Size: 87 B |
60
libs/poshytip/tip-violet/tip-violet.css
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.tip-violet {
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
border:1px solid #afafaf;
|
||||||
|
padding:7px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:530px;
|
||||||
|
color:#860404;
|
||||||
|
background-color:#f2e7fd;
|
||||||
|
background-image:url(tip-violet.png); /* bgImageFrameSize >= 9 should work fine */
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-violet .tip-inner {
|
||||||
|
font:bold 12px/18px 'trebuchet ms',arial,helvetica,sans-serif;
|
||||||
|
margin-top:-1px;
|
||||||
|
padding:0 3px 2px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-violet .tip-arrow-top {
|
||||||
|
margin-top:-7px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:16px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-violet_arrows.png) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-violet .tip-arrow-right {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-4px;
|
||||||
|
top:50%;
|
||||||
|
left:100%;
|
||||||
|
width:10px;
|
||||||
|
height:20px;
|
||||||
|
background:url(tip-violet_arrows.png) no-repeat -16px 0;
|
||||||
|
}
|
||||||
|
.tip-violet .tip-arrow-bottom {
|
||||||
|
margin-top:-6px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:100%;
|
||||||
|
left:0;
|
||||||
|
width:16px;
|
||||||
|
height:13px;
|
||||||
|
background:url(tip-violet_arrows.png) no-repeat -32px 0;
|
||||||
|
}
|
||||||
|
.tip-violet .tip-arrow-left {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-6px;
|
||||||
|
top:50%;
|
||||||
|
left:0;
|
||||||
|
width:10px;
|
||||||
|
height:20px;
|
||||||
|
background:url(tip-violet_arrows.png) no-repeat -48px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-violet/tip-violet.png
Normal file
After ![]() (image error) Size: 4.8 KiB |
BIN
libs/poshytip/tip-violet/tip-violet_arrows.png
Normal file
After ![]() (image error) Size: 1.4 KiB |
60
libs/poshytip/tip-yellow/tip-yellow.css
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.tip-yellow {
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
border:1px solid #939393;
|
||||||
|
padding:7px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:530px;
|
||||||
|
color:#8c3901;
|
||||||
|
background-color:#fef9d9;
|
||||||
|
background-image:url(tip-yellow.png); /* bgImageFrameSize >= 10 should work fine */
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-yellow .tip-inner {
|
||||||
|
font:bold 13px/18px 'trebuchet ms',arial,helvetica,sans-serif;
|
||||||
|
margin-top:-2px;
|
||||||
|
padding:0 3px 1px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-yellow .tip-arrow-top {
|
||||||
|
margin-top:-7px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:16px;
|
||||||
|
height:10px;
|
||||||
|
background:url(tip-yellow_arrows.png) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-yellow .tip-arrow-right {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-4px;
|
||||||
|
top:50%;
|
||||||
|
left:100%;
|
||||||
|
width:10px;
|
||||||
|
height:20px;
|
||||||
|
background:url(tip-yellow_arrows.png) no-repeat -16px 0;
|
||||||
|
}
|
||||||
|
.tip-yellow .tip-arrow-bottom {
|
||||||
|
margin-top:-6px;
|
||||||
|
margin-left:15px;
|
||||||
|
top:100%;
|
||||||
|
left:0;
|
||||||
|
width:16px;
|
||||||
|
height:13px;
|
||||||
|
background:url(tip-yellow_arrows.png) no-repeat -32px 0;
|
||||||
|
}
|
||||||
|
.tip-yellow .tip-arrow-left {
|
||||||
|
margin-top:-9px; /* approx. half the height to center it */
|
||||||
|
margin-left:-6px;
|
||||||
|
top:50%;
|
||||||
|
left:0;
|
||||||
|
width:10px;
|
||||||
|
height:20px;
|
||||||
|
background:url(tip-yellow_arrows.png) no-repeat -48px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-yellow/tip-yellow.png
Normal file
After ![]() (image error) Size: 5.0 KiB |
BIN
libs/poshytip/tip-yellow/tip-yellow_arrows.png
Normal file
After ![]() (image error) Size: 1.4 KiB |
60
libs/poshytip/tip-yellowsimple/tip-yellowsimple.css
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.tip-yellowsimple {
|
||||||
|
z-index:1000;
|
||||||
|
text-align:left;
|
||||||
|
border:1px solid #c7bf93;
|
||||||
|
border-radius:4px;
|
||||||
|
-moz-border-radius:4px;
|
||||||
|
-webkit-border-radius:4px;
|
||||||
|
padding:6px 8px;
|
||||||
|
min-width:50px;
|
||||||
|
max-width:300px;
|
||||||
|
color:#000;
|
||||||
|
background-color:#fff9c9;
|
||||||
|
/**
|
||||||
|
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||||
|
* You can set any padding to .tip-inner instead if you need.
|
||||||
|
* - If you want a tiled background-image and border/padding for the tip,
|
||||||
|
* set the background-image to .tip-inner instead.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.tip-yellowsimple .tip-inner {
|
||||||
|
font:12px/16px arial,helvetica,sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||||
|
.tip-yellowsimple .tip-arrow-top {
|
||||||
|
margin-top:-6px;
|
||||||
|
margin-left:-5px; /* approx. half the width to center it */
|
||||||
|
top:0;
|
||||||
|
left:50%;
|
||||||
|
width:9px;
|
||||||
|
height:6px;
|
||||||
|
background:url(tip-yellowsimple_arrows.gif) no-repeat;
|
||||||
|
}
|
||||||
|
.tip-yellowsimple .tip-arrow-right {
|
||||||
|
margin-top:-4px; /* approx. half the height to center it */
|
||||||
|
margin-left:0;
|
||||||
|
top:50%;
|
||||||
|
left:100%;
|
||||||
|
width:6px;
|
||||||
|
height:9px;
|
||||||
|
background:url(tip-yellowsimple_arrows.gif) no-repeat -9px 0;
|
||||||
|
}
|
||||||
|
.tip-yellowsimple .tip-arrow-bottom {
|
||||||
|
margin-top:0;
|
||||||
|
margin-left:-5px; /* approx. half the width to center it */
|
||||||
|
top:100%;
|
||||||
|
left:50%;
|
||||||
|
width:9px;
|
||||||
|
height:6px;
|
||||||
|
background:url(tip-yellowsimple_arrows.gif) no-repeat -18px 0;
|
||||||
|
}
|
||||||
|
.tip-yellowsimple .tip-arrow-left {
|
||||||
|
margin-top:-4px; /* approx. half the height to center it */
|
||||||
|
margin-left:-6px;
|
||||||
|
top:50%;
|
||||||
|
left:0;
|
||||||
|
width:6px;
|
||||||
|
height:9px;
|
||||||
|
background:url(tip-yellowsimple_arrows.gif) no-repeat -27px 0;
|
||||||
|
}
|
BIN
libs/poshytip/tip-yellowsimple/tip-yellowsimple_arrows.gif
Normal file
After ![]() (image error) Size: 107 B |
235
libs/qunit/qunit-1.10.0.css
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
/**
|
||||||
|
* QUnit v1.10.0 - A JavaScript Unit Testing Framework
|
||||||
|
*
|
||||||
|
* http://qunitjs.com
|
||||||
|
*
|
||||||
|
* Copyright 2012 jQuery Foundation and other contributors
|
||||||
|
* Released under the MIT license.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Font Family and Sizes */
|
||||||
|
|
||||||
|
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
||||||
|
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
|
||||||
|
#qunit-tests { font-size: smaller; }
|
||||||
|
|
||||||
|
|
||||||
|
/** Resets */
|
||||||
|
|
||||||
|
#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Header */
|
||||||
|
|
||||||
|
#qunit-header {
|
||||||
|
padding: 0.5em 0 0.5em 1em;
|
||||||
|
|
||||||
|
color: #8699a4;
|
||||||
|
background-color: #0d3349;
|
||||||
|
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
font-weight: normal;
|
||||||
|
|
||||||
|
border-radius: 5px 5px 0 0;
|
||||||
|
-moz-border-radius: 5px 5px 0 0;
|
||||||
|
-webkit-border-top-right-radius: 5px;
|
||||||
|
-webkit-border-top-left-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-header a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #c2ccd1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-header a:hover,
|
||||||
|
#qunit-header a:focus {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-testrunner-toolbar label {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 .5em 0 .1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-banner {
|
||||||
|
height: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-testrunner-toolbar {
|
||||||
|
padding: 0.5em 0 0.5em 2em;
|
||||||
|
color: #5E740B;
|
||||||
|
background-color: #eee;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-userAgent {
|
||||||
|
padding: 0.5em 0 0.5em 2.5em;
|
||||||
|
background-color: #2b81af;
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-modulefilter-container {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Tests: Pass/Fail */
|
||||||
|
|
||||||
|
#qunit-tests {
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests li {
|
||||||
|
padding: 0.4em 0.5em 0.4em 2.5em;
|
||||||
|
border-bottom: 1px solid #fff;
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests li strong {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests li a {
|
||||||
|
padding: 0.5em;
|
||||||
|
color: #c2ccd1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
#qunit-tests li a:hover,
|
||||||
|
#qunit-tests li a:focus {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests ol {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
border-radius: 5px;
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-top: .2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests th {
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 0 .5em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests td {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests pre {
|
||||||
|
margin: 0;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests del {
|
||||||
|
background-color: #e0f2be;
|
||||||
|
color: #374e0c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests ins {
|
||||||
|
background-color: #ffcaca;
|
||||||
|
color: #500;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Test Counts */
|
||||||
|
|
||||||
|
#qunit-tests b.counts { color: black; }
|
||||||
|
#qunit-tests b.passed { color: #5E740B; }
|
||||||
|
#qunit-tests b.failed { color: #710909; }
|
||||||
|
|
||||||
|
#qunit-tests li li {
|
||||||
|
padding: 5px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: none;
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Passing Styles */
|
||||||
|
|
||||||
|
#qunit-tests li li.pass {
|
||||||
|
color: #3c510c;
|
||||||
|
background-color: #fff;
|
||||||
|
border-left: 10px solid #C6E746;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
|
||||||
|
#qunit-tests .pass .test-name { color: #366097; }
|
||||||
|
|
||||||
|
#qunit-tests .pass .test-actual,
|
||||||
|
#qunit-tests .pass .test-expected { color: #999999; }
|
||||||
|
|
||||||
|
#qunit-banner.qunit-pass { background-color: #C6E746; }
|
||||||
|
|
||||||
|
/*** Failing Styles */
|
||||||
|
|
||||||
|
#qunit-tests li li.fail {
|
||||||
|
color: #710909;
|
||||||
|
background-color: #fff;
|
||||||
|
border-left: 10px solid #EE5757;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests > li:last-child {
|
||||||
|
border-radius: 0 0 5px 5px;
|
||||||
|
-moz-border-radius: 0 0 5px 5px;
|
||||||
|
-webkit-border-bottom-right-radius: 5px;
|
||||||
|
-webkit-border-bottom-left-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qunit-tests .fail { color: #000000; background-color: #EE5757; }
|
||||||
|
#qunit-tests .fail .test-name,
|
||||||
|
#qunit-tests .fail .module-name { color: #000000; }
|
||||||
|
|
||||||
|
#qunit-tests .fail .test-actual { color: #EE5757; }
|
||||||
|
#qunit-tests .fail .test-expected { color: green; }
|
||||||
|
|
||||||
|
#qunit-banner.qunit-fail { background-color: #EE5757; }
|
||||||
|
|
||||||
|
|
||||||
|
/** Result */
|
||||||
|
|
||||||
|
#qunit-testresult {
|
||||||
|
padding: 0.5em 0.5em 0.5em 2.5em;
|
||||||
|
|
||||||
|
color: #2b81af;
|
||||||
|
background-color: #D2E0E6;
|
||||||
|
|
||||||
|
border-bottom: 1px solid white;
|
||||||
|
}
|
||||||
|
#qunit-testresult .module-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Fixture */
|
||||||
|
|
||||||
|
#qunit-fixture {
|
||||||
|
position: absolute;
|
||||||
|
top: -10000px;
|
||||||
|
left: -10000px;
|
||||||
|
width: 1000px;
|
||||||
|
height: 1000px;
|
||||||
|
}
|
1977
libs/qunit/qunit-1.10.0.js
Normal file
10
makezip
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cd dist
|
||||||
|
|
||||||
|
#extract version
|
||||||
|
version=$(head -1 bootstrap-editable/js/bootstrap-editable.js | sed -n 's/^.*v\([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p')
|
||||||
|
|
||||||
|
mkdir -p zip
|
||||||
|
rm -rf zip/*.zip
|
||||||
|
zip -rT zip/bootstrap-editable-$version.zip bootstrap-editable LICENSE-GPL LICENSE-MIT README.md CHANGELOG.txt
|
||||||
|
zip -rT zip/jqueryui-editable-$version.zip jqueryui-editable LICENSE-GPL LICENSE-MIT README.md CHANGELOG.txt
|
||||||
|
zip -rT zip/jquery-editable-$version.zip jquery-editable LICENSE-GPL LICENSE-MIT README.md CHANGELOG.txt
|
37
package.json
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"name": "x-editable",
|
||||||
|
"title": "X-editable",
|
||||||
|
"description": "In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"homepage": "https://github.com/vitalets/x-editable",
|
||||||
|
"author": {
|
||||||
|
"name": "Vitaliy Potapov",
|
||||||
|
"email": "noginsk@rambler.ru"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/vitalets/x-editable.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/vitalets/x-editable/issues"
|
||||||
|
},
|
||||||
|
"licenses": [
|
||||||
|
{
|
||||||
|
"type": "MIT",
|
||||||
|
"url": "https://github.com/vitalets/x-editable/blob/master/LICENSE-MIT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GPL",
|
||||||
|
"url": "https://github.com/vitalets/x-editable/blob/master/LICENSE-GPL"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"jquery": ">= 1.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"grunt": "~0.3.11",
|
||||||
|
"grunt-contrib": "0.1.1",
|
||||||
|
"moment": "1.7.0"
|
||||||
|
},
|
||||||
|
"keywords": []
|
||||||
|
}
|
5
src/containers/editable-container.css
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
.editable-container,
|
||||||
|
.editable-container .popover-inner {
|
||||||
|
width: auto;
|
||||||
|
max-width: none;
|
||||||
|
}
|
153
src/containers/editable-container.js
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
/**
|
||||||
|
* Editable Container
|
||||||
|
* Container can be popover, inline form or whatever
|
||||||
|
* Container must provide following:
|
||||||
|
* 1. methods:
|
||||||
|
* show(),
|
||||||
|
* hide(),
|
||||||
|
* tip() - returns jquery object of container element
|
||||||
|
* option()
|
||||||
|
*
|
||||||
|
* 2. events:
|
||||||
|
* - save
|
||||||
|
* - cancel
|
||||||
|
*
|
||||||
|
* 3. settings: trigger, value, placement
|
||||||
|
*/
|
||||||
|
(function ($) {
|
||||||
|
|
||||||
|
//Constructor
|
||||||
|
var EditableContainer = function (element, options) {
|
||||||
|
this.init(element, options);
|
||||||
|
};
|
||||||
|
|
||||||
|
//methods
|
||||||
|
EditableContainer.prototype = {
|
||||||
|
containerName: null, //tbd in child class
|
||||||
|
innerCss: null, //tbd in child class
|
||||||
|
init: function(element, options) {
|
||||||
|
this.$element = $(element);
|
||||||
|
this.options = $.extend({}, $.fn.editableContainer.defaults, $.fn.editableform.utils.getConfigData(this.$element), options);
|
||||||
|
this.initContainer();
|
||||||
|
|
||||||
|
//bind 'destroyed' listener to destroy container when element is removed from dom
|
||||||
|
this.$element.on('destroyed', $.proxy(function(){
|
||||||
|
this.destroy();
|
||||||
|
}, this));
|
||||||
|
},
|
||||||
|
|
||||||
|
initContainer: function(){
|
||||||
|
this.call(this.options);
|
||||||
|
},
|
||||||
|
|
||||||
|
initForm: function() {
|
||||||
|
this.$form = $('<div>')
|
||||||
|
.editableform(this.options)
|
||||||
|
.on({
|
||||||
|
save: $.proxy(this.save, this),
|
||||||
|
cancel: $.proxy(this.cancel, this),
|
||||||
|
show: $.proxy(this.setPosition, this),
|
||||||
|
rendering: $.proxy(this.setPosition, this)
|
||||||
|
});
|
||||||
|
return this.$form;
|
||||||
|
},
|
||||||
|
|
||||||
|
tip: function() {
|
||||||
|
return this.container().$tip;
|
||||||
|
},
|
||||||
|
|
||||||
|
//return instance of container
|
||||||
|
container: function() {
|
||||||
|
return this.$element.data(this.containerName);
|
||||||
|
},
|
||||||
|
|
||||||
|
//call container's method
|
||||||
|
call: function() {
|
||||||
|
this.$element[this.containerName].apply(this.$element, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
show: function () {
|
||||||
|
this.call('show');
|
||||||
|
this.tip().addClass('editable-container');
|
||||||
|
|
||||||
|
this.initForm();
|
||||||
|
this.tip().find(this.innerCss).empty().append(this.$form);
|
||||||
|
this.$form.editableform('render');
|
||||||
|
},
|
||||||
|
|
||||||
|
hide: function() {
|
||||||
|
this.call('hide');
|
||||||
|
},
|
||||||
|
|
||||||
|
setPosition: function() {
|
||||||
|
//tbd in child class
|
||||||
|
},
|
||||||
|
|
||||||
|
cancel: function() {
|
||||||
|
if(this.options.autohide) {
|
||||||
|
this.hide();
|
||||||
|
}
|
||||||
|
this.$element.triggerHandler('cancel');
|
||||||
|
},
|
||||||
|
|
||||||
|
save: function(e, params) {
|
||||||
|
if(this.options.autohide) {
|
||||||
|
this.hide();
|
||||||
|
}
|
||||||
|
this.$element.triggerHandler('save', params);
|
||||||
|
},
|
||||||
|
|
||||||
|
option: function(key, value) {
|
||||||
|
this.options[key] = value;
|
||||||
|
this.call('option', key, value);
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
this.call('destroy');
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//jQuery plugin definition
|
||||||
|
$.fn.editableContainer = function (option) {
|
||||||
|
var args = arguments;
|
||||||
|
return this.each(function () {
|
||||||
|
var $this = $(this),
|
||||||
|
dataKey = 'editableContainer',
|
||||||
|
data = $this.data(dataKey),
|
||||||
|
options = typeof option === 'object' && option;
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
$this.data(dataKey, (data = new EditableContainer(this, options)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof option === 'string') { //call method
|
||||||
|
data[option].apply(data, Array.prototype.slice.call(args, 1));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
//store constructor
|
||||||
|
$.fn.editableContainer.Constructor = EditableContainer;
|
||||||
|
|
||||||
|
//defaults - must be redefined!
|
||||||
|
$.fn.editableContainer.defaults = {
|
||||||
|
trigger: 'manual',
|
||||||
|
value: null,
|
||||||
|
placement: 'top',
|
||||||
|
autohide: true
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* workaround to have 'destroyed' event to destroy popover when element is destroyed
|
||||||
|
* see http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom
|
||||||
|
*/
|
||||||
|
jQuery.event.special.destroyed = {
|
||||||
|
remove: function(o) {
|
||||||
|
if (o.handler) {
|
||||||
|
o.handler();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}(window.jQuery));
|
60
src/containers/editable-inline.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* Editable Inline
|
||||||
|
* ---------------------
|
||||||
|
*/
|
||||||
|
(function ($) {
|
||||||
|
|
||||||
|
//extend methods
|
||||||
|
$.extend($.fn.editableContainer.Constructor.prototype, {
|
||||||
|
containerName: 'editableform',
|
||||||
|
innerCss: null,
|
||||||
|
|
||||||
|
initContainer: function(){
|
||||||
|
//no init for container
|
||||||
|
//only convert anim to miliseconds
|
||||||
|
if(!this.options.anim) {
|
||||||
|
this.options.anim = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
tip: function() {
|
||||||
|
return this.$form;
|
||||||
|
},
|
||||||
|
|
||||||
|
show: function () {
|
||||||
|
this.$element.hide();
|
||||||
|
|
||||||
|
if(this.$form) {
|
||||||
|
this.$form.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.initForm();
|
||||||
|
this.tip().addClass('editable-container').addClass('editable-inline');
|
||||||
|
this.$form.insertAfter(this.$element);
|
||||||
|
this.$form.show(this.options.anim);
|
||||||
|
this.$form.editableform('render');
|
||||||
|
},
|
||||||
|
|
||||||
|
hide: function () {
|
||||||
|
this.$form.hide(this.options.anim, $.proxy(function() {
|
||||||
|
this.$element.show();
|
||||||
|
//return focus on element
|
||||||
|
if (this.options.enablefocus) {
|
||||||
|
this.$element.focus();
|
||||||
|
}
|
||||||
|
}, this));
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
this.tip().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//defaults
|
||||||
|
$.fn.editableContainer.defaults = $.extend({}, $.fn.editableContainer.defaults, {
|
||||||
|
anim: 'fast',
|
||||||
|
enablefocus: false
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}(window.jQuery));
|