├── .gitignore ├── mongolog ├── __init__.py └── handlers.py ├── test.py ├── tests ├── __init__.py ├── logging-test.config ├── test_handler.py └── test_config.py ├── tools └── webui │ ├── settings.py │ ├── static │ ├── css │ │ └── ui-darkness │ │ │ ├── images │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_4b8e0b_256x240.png │ │ │ ├── ui-icons_a83300_256x240.png │ │ │ ├── ui-icons_cccccc_256x240.png │ │ │ ├── ui-icons_ffffff_256x240.png │ │ │ ├── ui-bg_flat_30_cccccc_40x100.png │ │ │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ │ │ ├── ui-bg_glass_20_555555_1x400.png │ │ │ ├── ui-bg_glass_40_0078a3_1x400.png │ │ │ ├── ui-bg_glass_40_ffc73d_1x400.png │ │ │ ├── ui-bg_gloss-wave_25_333333_500x100.png │ │ │ ├── ui-bg_inset-soft_25_000000_1x100.png │ │ │ ├── ui-bg_inset-soft_30_f58400_1x100.png │ │ │ └── ui-bg_highlight-soft_80_eeeeee_1x100.png │ │ │ └── jquery-ui-1.7.2.custom.css │ └── js │ │ └── jquery-1.3.2.min.js │ ├── templates │ ├── base.html │ └── index.html │ └── webui.py ├── README.md ├── setup.py ├── samples └── simple_logging.py └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.swp 3 | -------------------------------------------------------------------------------- /mongolog/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | __author__ = 'Andrei Savu ' 3 | __version__ = (0, 1, 0) 4 | -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | 2 | import unittest 3 | 4 | from tests import * 5 | 6 | if __name__ == '__main__': 7 | unittest.main() 8 | 9 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | import sys 3 | sys.path = ['..'] + sys.path 4 | 5 | from test_handler import * 6 | from test_config import * 7 | 8 | -------------------------------------------------------------------------------- /tools/webui/settings.py: -------------------------------------------------------------------------------- 1 | 2 | MONGO = { 3 | 'db' : 'mongolog', 4 | 'collection' : 'log', 5 | 'host' : 'localhost', 6 | 'port' : None 7 | } 8 | 9 | -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-icons_a83300_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-icons_a83300_256x240.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-icons_cccccc_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-icons_cccccc_256x240.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | __This project is now developed & maintained by [Jorge Puente Sarrín](https://github.com/puentesarrin) at 2 | [https://github.com/puentesarrin/mongodb-log](https://github.com/puentesarrin/mongodb-log)__ 3 | 4 | -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andreisavu/mongodb-log/HEAD/tools/webui/static/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | 2 | try: 3 | from setuptools import setup 4 | except ImportError: 5 | from distutils import setup 6 | 7 | setup( 8 | name='mongodb-log', 9 | version='0.1.0', 10 | description='Centralized logging made simple using mongodb', 11 | author='Andrei Savu', 12 | author_email='contact@andreisavu.ro', 13 | url='https://github.com/andreisavu/mongodb-log/tree/master', 14 | packages=['mongolog'], 15 | install_requires=['pymongo'] 16 | ) 17 | -------------------------------------------------------------------------------- /tests/logging-test.config: -------------------------------------------------------------------------------- 1 | [loggers] 2 | keys=root,test 3 | 4 | [handlers] 5 | keys=mongo 6 | 7 | [formatters] 8 | keys=brief 9 | 10 | [logger_root] 11 | level=NOTSET 12 | handlers=mongo 13 | qualname=example 14 | propagate=1 15 | 16 | [logger_test] 17 | level=DEBUG 18 | handlers=mongo 19 | qualname=example 20 | propagate=1 21 | 22 | [handler_mongo] 23 | class=mongolog.handlers.MongoHandler 24 | args=('log_test','_mongolog_test',) 25 | 26 | [formatter_brief] 27 | format=%(asctime)s %(message)s 28 | -------------------------------------------------------------------------------- /samples/simple_logging.py: -------------------------------------------------------------------------------- 1 | 2 | import sys 3 | sys.path.append('..') 4 | 5 | import logging 6 | 7 | from pymongo.connection import Connection 8 | from mongolog.handlers import MongoHandler 9 | 10 | if __name__ == '__main__': 11 | 12 | log = logging.getLogger('example') 13 | log.setLevel(logging.DEBUG) 14 | 15 | log.addHandler(MongoHandler.to('mongolog', 'log')) 16 | 17 | log.debug("1 - debug message") 18 | log.info("2 - info message") 19 | log.warn("3 - warn message") 20 | log.error("4 - error message") 21 | log.critical("5 - critical message") 22 | 23 | -------------------------------------------------------------------------------- /tools/webui/templates/base.html: -------------------------------------------------------------------------------- 1 | $def with (content) 2 | 3 | 4 | MongoDB Centralized Logging 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |

Centralized logging made simple using MongoDB

14 |
15 | 16 | 17 | $:content 18 | 19 | 22 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /tools/webui/templates/index.html: -------------------------------------------------------------------------------- 1 | $def with (logs) 2 | 3 | Filters: 4 | [all] 5 | [info] 6 | [debug] 7 | [warning] 8 | [error] 9 | [critical] 10 | 11 |

12 | 13 | Latest 100 log message in reverse chronological order: 14 | 15 |

16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $for record in logs: 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
LevelLoggerHostLineNoFuncNameFileUserMessageTime
$record['level']$record['name']$record['host']$record['line_no']$record['funcname']$record['file']$record['user']$record['msg']$record['time']
42 | 43 | -------------------------------------------------------------------------------- /tools/webui/webui.py: -------------------------------------------------------------------------------- 1 | 2 | import web 3 | 4 | from pymongo.connection import Connection 5 | from pymongo import ASCENDING, DESCENDING 6 | 7 | import settings 8 | 9 | urls = ( 10 | '/(.*)', 'index' 11 | ) 12 | 13 | def get_mongo_collection(db, collection, host, port): 14 | return Connection(host, port)[db][collection] 15 | 16 | app = web.application(urls, globals()) 17 | render = web.template.render('templates/', base='base') 18 | db = get_mongo_collection(**settings.MONGO) 19 | 20 | class index: 21 | def GET(self, level): 22 | args = {} 23 | if level and level in ['info', 'debug', 'warning', 'error', 'critical']: 24 | args = {'level':level} 25 | 26 | def fill_missing(el): 27 | if not 'host' in el: 28 | el['host'] = '(unknow)' 29 | return el 30 | logs = map(fill_missing, db.find(args, limit=100).sort('$natural', DESCENDING)) 31 | 32 | return render.index(logs) 33 | 34 | if __name__ == '__main__': 35 | app.run() 36 | 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009, Andrei Savu. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, 4 | are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright notice, 7 | this list of conditions and the following disclaimer. 8 | 9 | * Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 17 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /mongolog/handlers.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import getpass 3 | from datetime import datetime 4 | from socket import gethostname 5 | from pymongo.connection import Connection 6 | from bson import InvalidDocument 7 | 8 | 9 | class MongoFormatter(logging.Formatter): 10 | def format(self, record): 11 | """Format exception object as a string""" 12 | data = record.__dict__.copy() 13 | 14 | if record.args: 15 | record.msg = record.msg % record.args 16 | 17 | data.update( 18 | username=getpass.getuser(), 19 | time=datetime.now(), 20 | host=gethostname(), 21 | message=record.msg, 22 | args=tuple(unicode(arg) for arg in record.args) 23 | ) 24 | if 'exc_info' in data and data['exc_info']: 25 | data['exc_info'] = self.formatException(data['exc_info']) 26 | return data 27 | 28 | 29 | class MongoHandler(logging.Handler): 30 | """ Custom log handler 31 | 32 | Logs all messages to a mongo collection. This handler is 33 | designed to be used with the standard python logging mechanism. 34 | """ 35 | 36 | @classmethod 37 | def to(cls, db, collection, host='localhost', port=None, level=logging.NOTSET): 38 | """ Create a handler for a given """ 39 | return cls(Connection(host, port)[db][collection], level) 40 | 41 | def __init__(self, collection, db='mongolog', host='localhost', port=None, level=logging.NOTSET): 42 | """ Init log handler and store the collection handle """ 43 | logging.Handler.__init__(self, level) 44 | if (type(collection) == str): 45 | self.collection = Connection(host, port)[db][collection] 46 | else: 47 | self.collection = collection 48 | self.formatter = MongoFormatter() 49 | 50 | def emit(self,record): 51 | """ Store the record to the collection. Async insert """ 52 | try: 53 | self.collection.save(self.format(record)) 54 | except InvalidDocument, e: 55 | logging.error("Unable to save log record: %s", e.message ,exc_info=True) 56 | 57 | -------------------------------------------------------------------------------- /tests/test_handler.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import logging 3 | 4 | from pymongo.connection import Connection 5 | 6 | from mongolog.handlers import MongoHandler 7 | 8 | 9 | class TestRootLoggerHandler(unittest.TestCase): 10 | """ 11 | Test Handler attached to RootLogger 12 | """ 13 | def setUp(self): 14 | """ Create an empty database that could be used for logging """ 15 | self.db_name = '_mongolog_test' 16 | 17 | self.conn = Connection('localhost') 18 | self.conn.drop_database(self.db_name) 19 | 20 | self.db = self.conn[self.db_name] 21 | self.collection = self.db['log'] 22 | 23 | def tearDown(self): 24 | """ Drop used database """ 25 | self.conn.drop_database(self.db_name) 26 | 27 | 28 | def testLogging(self): 29 | """ Simple logging example """ 30 | log = logging.getLogger('') 31 | log.setLevel(logging.DEBUG) 32 | 33 | log.addHandler(MongoHandler(self.collection)) 34 | log.debug('test') 35 | 36 | r = self.collection.find_one({'levelname':'DEBUG', 'msg':'test'}) 37 | self.assertEquals(r['msg'], 'test') 38 | 39 | def testLoggingException(self): 40 | """ Logging example with exception """ 41 | log = logging.getLogger('') 42 | log.setLevel(logging.DEBUG) 43 | 44 | log.addHandler(MongoHandler(self.collection)) 45 | 46 | try: 47 | 1/0 48 | except ZeroDivisionError: 49 | log.error('test zero division', exc_info=True) 50 | 51 | r = self.collection.find_one({'levelname':'ERROR', 'msg':'test zero division'}) 52 | self.assertTrue(r['exc_info'].startswith('Traceback')) 53 | 54 | def testQueryableMessages(self): 55 | """ Logging example with dictionary """ 56 | log = logging.getLogger('query') 57 | log.setLevel(logging.DEBUG) 58 | 59 | log.addHandler(MongoHandler(self.collection)) 60 | 61 | log.info({'address': '340 N 12th St', 'state': 'PA', 'country': 'US'}) 62 | log.info({'address': '340 S 12th St', 'state': 'PA', 'country': 'US'}) 63 | log.info({'address': '1234 Market St', 'state': 'PA', 'country': 'US'}) 64 | 65 | cursor = self.collection.find({'level':'info', 'msg.address': '340 N 12th St'}) 66 | self.assertEquals(cursor.count(), 1, "Expected query to return 1 " 67 | "message; it returned %d" % cursor.count()) 68 | self.assertEquals(cursor[0]['msg']['address'], '340 N 12th St') 69 | 70 | cursor = self.collection.find({'level':'info', 'msg.state': 'PA'}) 71 | 72 | self.assertEquals(cursor.count(), 3, "Didn't find all three documents") 73 | -------------------------------------------------------------------------------- /tests/test_config.py: -------------------------------------------------------------------------------- 1 | 2 | import unittest 3 | import logging 4 | 5 | from pymongo.connection import Connection 6 | 7 | from os.path import dirname 8 | from logging.config import fileConfig, dictConfig 9 | 10 | class TestConfig(unittest.TestCase): 11 | def setUp(self): 12 | filename = dirname(__file__) + '/logging-test.config' 13 | fileConfig(filename) 14 | 15 | """ Create an empty database that could be used for logging """ 16 | self.db_name = '_mongolog_test' 17 | self.collection_name = 'log_test' 18 | 19 | self.conn = Connection('localhost') 20 | self.conn.drop_database(self.db_name) 21 | 22 | def tearDown(self): 23 | """ Drop used database """ 24 | self.conn.drop_database(self.db_name) 25 | 26 | def testLoggingFileConfiguration(self): 27 | log = logging.getLogger('example') 28 | log.debug('test') 29 | 30 | r = self.conn[self.db_name][self.collection_name] 31 | 32 | message = r.find_one({'level':'debug', 'msg':'test'}) 33 | self.assertEquals(message['msg'], 'test') 34 | 35 | class TestDictConfig(unittest.TestCase): 36 | def setUp(self): 37 | """ Create an empty database that could be used for logging """ 38 | self.db_name = '_mongolog_test_dict' 39 | self.collection_name = 'log_test' 40 | 41 | self.configDict = { 42 | 'version': 1, 43 | 'handlers': { 44 | 'mongo': { 45 | 'class': 'mongolog.handlers.MongoHandler', 46 | 'db': self.db_name, 47 | 'collection': self.collection_name, 48 | 'level': 'INFO' 49 | } 50 | }, 51 | 'root': { 52 | 'handlers': ['mongo'], 53 | 'level': 'INFO' 54 | } 55 | } 56 | 57 | self.conn = Connection('localhost') 58 | self.conn.drop_database(self.db_name) 59 | 60 | def testLoggingDictConfiguration(self): 61 | dictConfig(self.configDict) 62 | log = logging.getLogger('dict_example') 63 | log.debug('testing dictionary config') 64 | 65 | r = self.conn[self.db_name][self.collection_name] 66 | 67 | message = r.find_one({'level':'debug', 'msg':'dict_example'}) 68 | self.assertEquals(message, None, 69 | "Logger put debug message in when info level handler requested") 70 | 71 | log.info('dict_example') 72 | message = r.find_one({'level':'info', 'msg':'dict_example'}) 73 | self.assertNotEquals(message, None, 74 | "Logger didn't insert message into database") 75 | self.assertEquals(message['msg'], 'dict_example', 76 | "Logger didn't insert correct message into database") 77 | 78 | def tearDown(self): 79 | """ Drop used database """ 80 | self.conn.drop_database(self.db_name) 81 | 82 | 83 | -------------------------------------------------------------------------------- /tools/webui/static/css/ui-darkness/jquery-ui-1.7.2.custom.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 3 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 4 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 5 | */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { display: none; } 10 | .ui-helper-hidden-accessible { position: absolute; left: -99999999px; } 11 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 12 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 13 | .ui-helper-clearfix { display: inline-block; } 14 | /* required comment for clearfix to work in Opera \*/ 15 | * html .ui-helper-clearfix { height:1%; } 16 | .ui-helper-clearfix { display:block; } 17 | /* end clearfix */ 18 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 19 | 20 | 21 | /* Interaction Cues 22 | ----------------------------------*/ 23 | .ui-state-disabled { cursor: default !important; } 24 | 25 | 26 | /* Icons 27 | ----------------------------------*/ 28 | 29 | /* states and images */ 30 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 31 | 32 | 33 | /* Misc visuals 34 | ----------------------------------*/ 35 | 36 | /* Overlays */ 37 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 38 | 39 | 40 | 41 | /* 42 | * jQuery UI CSS Framework 43 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 44 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 45 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=02_glass.png&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=02_glass.png&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px 46 | */ 47 | 48 | 49 | /* Component containers 50 | ----------------------------------*/ 51 | .ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; } 52 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; } 53 | .ui-widget-content { border: 1px solid #666666; background: #000000 url(images/ui-bg_inset-soft_25_000000_1x100.png) 50% bottom repeat-x; color: #ffffff; } 54 | .ui-widget-content a { color: #ffffff; } 55 | .ui-widget-header { border: 1px solid #333333; background: #333333 url(images/ui-bg_gloss-wave_25_333333_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } 56 | .ui-widget-header a { color: #ffffff; } 57 | 58 | /* Interaction states 59 | ----------------------------------*/ 60 | .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #666666; background: #555555 url(images/ui-bg_glass_20_555555_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eeeeee; outline: none; } 61 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; outline: none; } 62 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #59b4d4; background: #0078a3 url(images/ui-bg_glass_40_0078a3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; outline: none; } 63 | .ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; outline: none; } 64 | .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #ffaf0f; background: #f58400 url(images/ui-bg_inset-soft_30_f58400_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; outline: none; } 65 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; outline: none; text-decoration: none; } 66 | 67 | /* Interaction Cues 68 | ----------------------------------*/ 69 | .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; } 70 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #2e7db2; } 71 | .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; } 72 | .ui-state-error a, .ui-widget-content .ui-state-error a { color: #111111; } 73 | .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #111111; } 74 | .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 75 | .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } 76 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 77 | 78 | /* Icons 79 | ----------------------------------*/ 80 | 81 | /* states and images */ 82 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); } 83 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); } 84 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } 85 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); } 86 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } 87 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 88 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); } 89 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); } 90 | 91 | /* positioning */ 92 | .ui-icon-carat-1-n { background-position: 0 0; } 93 | .ui-icon-carat-1-ne { background-position: -16px 0; } 94 | .ui-icon-carat-1-e { background-position: -32px 0; } 95 | .ui-icon-carat-1-se { background-position: -48px 0; } 96 | .ui-icon-carat-1-s { background-position: -64px 0; } 97 | .ui-icon-carat-1-sw { background-position: -80px 0; } 98 | .ui-icon-carat-1-w { background-position: -96px 0; } 99 | .ui-icon-carat-1-nw { background-position: -112px 0; } 100 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 101 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 102 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 103 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 104 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 105 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 106 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 107 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 108 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 109 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 110 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 111 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 112 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 113 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 114 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 115 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 116 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 117 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 118 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 119 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 120 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 121 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 122 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 123 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 124 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 125 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 126 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 127 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 128 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 129 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 130 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 131 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 132 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 133 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 134 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 135 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 136 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 137 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 138 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 139 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 140 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 141 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 142 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 143 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 144 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 145 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 146 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 147 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 148 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 149 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 150 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 151 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 152 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 153 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 154 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 155 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 156 | .ui-icon-arrow-4 { background-position: 0 -80px; } 157 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 158 | .ui-icon-extlink { background-position: -32px -80px; } 159 | .ui-icon-newwin { background-position: -48px -80px; } 160 | .ui-icon-refresh { background-position: -64px -80px; } 161 | .ui-icon-shuffle { background-position: -80px -80px; } 162 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 163 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 164 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 165 | .ui-icon-folder-open { background-position: -16px -96px; } 166 | .ui-icon-document { background-position: -32px -96px; } 167 | .ui-icon-document-b { background-position: -48px -96px; } 168 | .ui-icon-note { background-position: -64px -96px; } 169 | .ui-icon-mail-closed { background-position: -80px -96px; } 170 | .ui-icon-mail-open { background-position: -96px -96px; } 171 | .ui-icon-suitcase { background-position: -112px -96px; } 172 | .ui-icon-comment { background-position: -128px -96px; } 173 | .ui-icon-person { background-position: -144px -96px; } 174 | .ui-icon-print { background-position: -160px -96px; } 175 | .ui-icon-trash { background-position: -176px -96px; } 176 | .ui-icon-locked { background-position: -192px -96px; } 177 | .ui-icon-unlocked { background-position: -208px -96px; } 178 | .ui-icon-bookmark { background-position: -224px -96px; } 179 | .ui-icon-tag { background-position: -240px -96px; } 180 | .ui-icon-home { background-position: 0 -112px; } 181 | .ui-icon-flag { background-position: -16px -112px; } 182 | .ui-icon-calendar { background-position: -32px -112px; } 183 | .ui-icon-cart { background-position: -48px -112px; } 184 | .ui-icon-pencil { background-position: -64px -112px; } 185 | .ui-icon-clock { background-position: -80px -112px; } 186 | .ui-icon-disk { background-position: -96px -112px; } 187 | .ui-icon-calculator { background-position: -112px -112px; } 188 | .ui-icon-zoomin { background-position: -128px -112px; } 189 | .ui-icon-zoomout { background-position: -144px -112px; } 190 | .ui-icon-search { background-position: -160px -112px; } 191 | .ui-icon-wrench { background-position: -176px -112px; } 192 | .ui-icon-gear { background-position: -192px -112px; } 193 | .ui-icon-heart { background-position: -208px -112px; } 194 | .ui-icon-star { background-position: -224px -112px; } 195 | .ui-icon-link { background-position: -240px -112px; } 196 | .ui-icon-cancel { background-position: 0 -128px; } 197 | .ui-icon-plus { background-position: -16px -128px; } 198 | .ui-icon-plusthick { background-position: -32px -128px; } 199 | .ui-icon-minus { background-position: -48px -128px; } 200 | .ui-icon-minusthick { background-position: -64px -128px; } 201 | .ui-icon-close { background-position: -80px -128px; } 202 | .ui-icon-closethick { background-position: -96px -128px; } 203 | .ui-icon-key { background-position: -112px -128px; } 204 | .ui-icon-lightbulb { background-position: -128px -128px; } 205 | .ui-icon-scissors { background-position: -144px -128px; } 206 | .ui-icon-clipboard { background-position: -160px -128px; } 207 | .ui-icon-copy { background-position: -176px -128px; } 208 | .ui-icon-contact { background-position: -192px -128px; } 209 | .ui-icon-image { background-position: -208px -128px; } 210 | .ui-icon-video { background-position: -224px -128px; } 211 | .ui-icon-script { background-position: -240px -128px; } 212 | .ui-icon-alert { background-position: 0 -144px; } 213 | .ui-icon-info { background-position: -16px -144px; } 214 | .ui-icon-notice { background-position: -32px -144px; } 215 | .ui-icon-help { background-position: -48px -144px; } 216 | .ui-icon-check { background-position: -64px -144px; } 217 | .ui-icon-bullet { background-position: -80px -144px; } 218 | .ui-icon-radio-off { background-position: -96px -144px; } 219 | .ui-icon-radio-on { background-position: -112px -144px; } 220 | .ui-icon-pin-w { background-position: -128px -144px; } 221 | .ui-icon-pin-s { background-position: -144px -144px; } 222 | .ui-icon-play { background-position: 0 -160px; } 223 | .ui-icon-pause { background-position: -16px -160px; } 224 | .ui-icon-seek-next { background-position: -32px -160px; } 225 | .ui-icon-seek-prev { background-position: -48px -160px; } 226 | .ui-icon-seek-end { background-position: -64px -160px; } 227 | .ui-icon-seek-first { background-position: -80px -160px; } 228 | .ui-icon-stop { background-position: -96px -160px; } 229 | .ui-icon-eject { background-position: -112px -160px; } 230 | .ui-icon-volume-off { background-position: -128px -160px; } 231 | .ui-icon-volume-on { background-position: -144px -160px; } 232 | .ui-icon-power { background-position: 0 -176px; } 233 | .ui-icon-signal-diag { background-position: -16px -176px; } 234 | .ui-icon-signal { background-position: -32px -176px; } 235 | .ui-icon-battery-0 { background-position: -48px -176px; } 236 | .ui-icon-battery-1 { background-position: -64px -176px; } 237 | .ui-icon-battery-2 { background-position: -80px -176px; } 238 | .ui-icon-battery-3 { background-position: -96px -176px; } 239 | .ui-icon-circle-plus { background-position: 0 -192px; } 240 | .ui-icon-circle-minus { background-position: -16px -192px; } 241 | .ui-icon-circle-close { background-position: -32px -192px; } 242 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 243 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 244 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 245 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 246 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 247 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 248 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 249 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 250 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 251 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 252 | .ui-icon-circle-check { background-position: -208px -192px; } 253 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 254 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 255 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 256 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 257 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 258 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 259 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 260 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 261 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 262 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 263 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 264 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 265 | 266 | 267 | /* Misc visuals 268 | ----------------------------------*/ 269 | 270 | /* Corner radius */ 271 | .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; } 272 | .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; } 273 | .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; } 274 | .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } 275 | .ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; } 276 | .ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } 277 | .ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } 278 | .ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; } 279 | .ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; } 280 | 281 | /* Overlays */ 282 | .ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } 283 | .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion 284 | ----------------------------------*/ 285 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 286 | .ui-accordion .ui-accordion-li-fix { display: inline; } 287 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 288 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } 289 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 290 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } 291 | .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker 292 | ----------------------------------*/ 293 | .ui-datepicker { width: 17em; padding: .2em .2em 0; } 294 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 295 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 296 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 297 | .ui-datepicker .ui-datepicker-prev { left:2px; } 298 | .ui-datepicker .ui-datepicker-next { right:2px; } 299 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 300 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 301 | .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; } 302 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 303 | .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } 304 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 305 | .ui-datepicker select.ui-datepicker-month, 306 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 307 | .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } 308 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 309 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 310 | .ui-datepicker td { border: 0; padding: 1px; } 311 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 312 | .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; } 313 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 314 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 315 | 316 | /* with multiple calendars */ 317 | .ui-datepicker.ui-datepicker-multi { width:auto; } 318 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 319 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 320 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 321 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 322 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 323 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 324 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 325 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 326 | .ui-datepicker-row-break { clear:both; width:100%; } 327 | 328 | /* RTL support */ 329 | .ui-datepicker-rtl { direction: rtl; } 330 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 331 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 332 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 333 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 334 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 335 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 336 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 337 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 338 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 339 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 340 | 341 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 342 | .ui-datepicker-cover { 343 | display: none; /*sorry for IE5*/ 344 | display/**/: block; /*sorry for IE5*/ 345 | position: absolute; /*must have*/ 346 | z-index: -1; /*must have*/ 347 | filter: mask(); /*must have*/ 348 | top: -4px; /*must have*/ 349 | left: -4px; /*must have*/ 350 | width: 200px; /*must have*/ 351 | height: 200px; /*must have*/ 352 | }/* Dialog 353 | ----------------------------------*/ 354 | .ui-dialog { position: relative; padding: .2em; width: 300px; } 355 | .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } 356 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } 357 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 358 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 359 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 360 | .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 361 | .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; } 362 | .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } 363 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 364 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 365 | /* Progressbar 366 | ----------------------------------*/ 367 | .ui-progressbar { height:2em; text-align: left; } 368 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable 369 | ----------------------------------*/ 370 | .ui-resizable { position: relative;} 371 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} 372 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 373 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } 374 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } 375 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } 376 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } 377 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 378 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 379 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 380 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider 381 | ----------------------------------*/ 382 | .ui-slider { position: relative; text-align: left; } 383 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 384 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } 385 | 386 | .ui-slider-horizontal { height: .8em; } 387 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 388 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 389 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 390 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 391 | 392 | .ui-slider-vertical { width: .8em; height: 100px; } 393 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 394 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 395 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 396 | .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs 397 | ----------------------------------*/ 398 | .ui-tabs { padding: .2em; zoom: 1; } 399 | .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } 400 | .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } 401 | .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } 402 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } 403 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 404 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 405 | .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } 406 | .ui-tabs .ui-tabs-hide { display: none !important; } 407 | -------------------------------------------------------------------------------- /tools/webui/static/js/jquery-1.3.2.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery JavaScript Library v1.3.2 3 | * http://jquery.com/ 4 | * 5 | * Copyright (c) 2009 John Resig 6 | * Dual licensed under the MIT and GPL licenses. 7 | * http://docs.jquery.com/License 8 | * 9 | * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) 10 | * Revision: 6246 11 | */ 12 | (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); 13 | /* 14 | * Sizzle CSS Selector Engine - v0.9.3 15 | * Copyright 2009, The Dojo Foundation 16 | * Released under the MIT, BSD, and GPL Licenses. 17 | * More information: http://sizzlejs.com/ 18 | */ 19 | (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); --------------------------------------------------------------------------------