6 new revisions:
Revision: 24bd914adf
Author: surenspost
Date: Wed Nov 24 03:30:13 2010
Log: creating a new app with required views and admin
http://code.google.com/p/codechecker/source/detail?r=24bd914adf
Revision: f72cc7b0bb
Author: surenspost
Date: Wed Nov 24 03:31:05 2010
Log: Moving models.py inside the web app
http://code.google.com/p/codechecker/source/detail?r=f72cc7b0bb
Revision: 3ee7c33b1e
Author: surenspost
Date: Wed Nov 24 03:34:52 2010
Log: 1. move root_urls.py to urls.py...
http://code.google.com/p/codechecker/source/detail?r=3ee7c33b1e
Revision: d53bdbdf26
Author: surenspost
Date: Wed Nov 24 03:43:56 2010
Log: updated to latest js from django-1.2.3 - have to find a better way
of ...
http://code.google.com/p/codechecker/source/detail?r=d53bdbdf26
Revision: c477fe834f
Author: surenspost
Date: Wed Nov 24 03:44:58 2010
Log: Updating CSS now. Same complaint, have to fix this instead of
updating...
http://code.google.com/p/codechecker/source/detail?r=c477fe834f
Revision: 9a8425ec02
Author: surenspost
Date: Wed Nov 24 03:48:00 2010
Log: removing vestigial setter-bin directory
http://code.google.com/p/codechecker/source/detail?r=9a8425ec02
==============================================================================
Revision: 24bd914adf
Author: surenspost
Date: Wed Nov 24 03:30:13 2010
Log: creating a new app with required views and admin
http://code.google.com/p/codechecker/source/detail?r=24bd914adf
Added:
/src/checker/cc_frontend/web/__init__.py
/src/checker/cc_frontend/web/admin.py
/src/checker/cc_frontend/web/contests.py
/src/checker/cc_frontend/web/forms.py
/src/checker/cc_frontend/web/problems.py
/src/checker/cc_frontend/web/submissions.py
/src/checker/cc_frontend/web/urls.py
=======================================
--- /dev/null
+++ /src/checker/cc_frontend/web/__init__.py Wed Nov 24 03:30:13 2010
@@ -0,0 +1,5 @@
+def default(request):
+ pass
+
+def references(request):
+ pass
=======================================
--- /dev/null
+++ /src/checker/cc_frontend/web/admin.py Wed Nov 24 03:30:13 2010
@@ -0,0 +1,62 @@
+import models
+from django.contrib import admin
+
+# Admin interface for the Contest Model
+class ContestAdmin(admin.ModelAdmin):
+ fieldsets = (
+ ( 'General', {
+ 'fields' : ('title','description',)
+ }),
+ ( 'Schedule', {
+ 'fields' : ('startTime', 'endTime',)
+ }),
+ ( 'Status', {
+ 'fields' : ('public', )
+ }),
+ )
+
+#Admin interface for the Problem Model
+class ProblemAdmin(admin.ModelAdmin):
+
+
+ fieldsets = (
+ ( 'General', {
+ 'fields' : ('pcode', 'contest', ),
+ }),
+ ( 'Display', {
+ 'classes': ('wide'),
+ 'fields' : ('statement', 'constraints', 'scoring_info',
+ 'sampleInput', 'sampleOutput', ),
+ }),
+ ( 'Constraints', {
+ 'classes': ('wide'),
+ 'fields' : ('source_limit', 'allowedLangs', ),
+ }),
+ )
+
+#Admin interface for the TestSet Model
+class TestSetAdmin(admin.ModelAdmin):
+ pass
+
+#Admin interface for the TestcaseAdmin Model
+class TestcaseAdmin(admin.ModelAdmin):
+ pass
+
+#Admin interface for the Submission Model
+class SubmissionAdmin(admin.ModelAdmin):
+ pass
+
+#Admin interface for the TestcaseEval Model
+class TestCaseEvalAdmin(admin.ModelAdmin):
+ pass
+
+# Map all the Admin site with the respective models.
+admin.site.register(models.Contest, ContestAdmin)
+admin.site.register(models.Problem, ProblemAdmin)
+admin.site.register(models.TestSet, TestSetAdmin)
+admin.site.register(models.Testcase, TestcaseAdmin)
+admin.site.register(models.Submission, SubmissionAdmin)
+admin.site.register(models.TestcaseEval, TestCaseEvalAdmin)
+
+
+
=======================================
--- /dev/null
+++ /src/checker/cc_frontend/web/urls.py Wed Nov 24 03:30:13 2010
@@ -0,0 +1,14 @@
+from django.conf.urls.defaults import patterns, include
+from django.contrib import admin
+admin.autodiscover()
+
+urlpatterns = patterns( '',
+
+ # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
+ # to INSTALLED_APPS to enable admin documentation:
+ ( r'^admin/doc/', include( 'django.contrib.admindocs.urls' ) ),
+
+ # Uncomment the next line to enable the admin:
+ ( r'^admin/', include( admin.site.urls ) ),
+
+)
==============================================================================
Revision: f72cc7b0bb
Author: surenspost
Date: Wed Nov 24 03:31:05 2010
Log: Moving models.py inside the web app
http://code.google.com/p/codechecker/source/detail?r=f72cc7b0bb
Added:
/src/checker/cc_frontend/web/models.py
Deleted:
/src/checker/cc_frontend/models.py
=======================================
--- /dev/null
+++ /src/checker/cc_frontend/web/models.py Wed Nov 24 03:31:05 2010
@@ -0,0 +1,152 @@
+from django.contrib import admin
+from django.db import models
+from django.contrib.auth.models import User
+from django import forms
+
+# Current Language types that are supported
+LANG_TYPES = (
+ ('c','C'),
+ ('cpp','C++'),
+ ('py','PYTHON 2.6.4'),
+ #(3,'JAVA'),
+)
+
+# Submission Statuses
+RESULT_TYPES = (
+ ('QU', 'QUEUED'),
+ ('CMP', 'COMPILING'),
+ ('CMPE', 'COMPILATION FAILURE'),
+ ('RUN', 'RUNNING'),
+ ('ACC', 'ACCEPTED'),
+ ('WA', 'WRONG ANSWER'),
+ ('TLE', 'TIME LIMIT EXCEEDED'),
+ ('OUTE', 'OUTPUT LIMIT EXCEEDED'),
+ ('SEG', 'SEGMENTATION FAULT'),
+ ('FPE', 'FLOATING POINT ERROR'),
+ ('KILL', 'KILLED'),
+ ('ABRT', 'ABORT SIGNALLED'),
+ ('RTE', 'RUN TIME ERROR'),
+ ('WTF', 'NON ZERO RETURN STATUS'),
+)
+
+# The site is organized as contests, this is a basic contest model
+# Contest has a title, a general description startTime and endTime.
+# Also if it will be publicly viewable by non admins if public is True.
+
+class Contest(models.Model):
+ title = models.CharField(max_length = 25)
+ description = models.TextField()
+ startTime = models.DateTimeField()
+ endTime = models.DateTimeField()
+ public = models.BooleanField(default = False)
+
+ def __unicode__(self):
+ return self.title
+
+# Each Contest has one or more problems. Orphan or non contest problem are
added
+# to a global contest. Each problem has a problem code, statement,
constraint
+# notes, sample input and output, time limit, memory limit, maximum score
for
+# that problem, allowed Languages for submission to that problem and a
penalty
+# for a wrong submission.
+
+class Problem(models.Model):
+
+ #Problem related metadata fields follow
+ contest = models.ForeignKey(Contest, verbose_name = 'Contest')
+ pcode = models.CharField(max_length = 25, verbose_name = 'Problem
Code')
+ penalty = models.IntegerField(verbose_name = 'Penalty')
+ #Fields related to the display of the problem statement follow:
+ statement = models.TextField()
+ constraints = models.TextField() # Info about input constraints.
+ sampleInput = models.TextField(verbose_name = "Sample Input")
+ sampleOutput = models.TextField(verbose_name = "Sample Output")
+ scoring_info = models.TextField(verbose_name = "Scoring Information")
# Info
+ # about how the problem will be
scored.
+ allowedLangs = models.CommaSeparatedIntegerField(max_length=10,
+ verbose_name = "Allowed Languages")
+ source_limit = models.IntegerField(default=50,
+ verbose_name = "Max Source File Size") # The max source file size
allowed
+ # for the problem (in KiB).
+
+ def __unicode__(self):
+ return self.pcode
+
+# Each problem has several TestSet. A Test set is a set of tests a
submission
+# for that problem has to pass to get some score assigned to that TestSet.
+# Testset belongs to a problem and has a maximum score.
+
+class TestSet(models.Model):
+ problem = models.ForeignKey(Problem)
+ maxScore = models.IntegerField()
+ tlimit = models.IntegerField(verbose_name = "Time Limit") # (in
seconds)
+ mlimit = models.IntegerField(verbose_name = "Memory Limit") # (in MiB)
+ is_cust_scored = models.BooleanField(default = False,
+ verbose_name = 'Is custom evaluated')
+ cust_executable = models.FileField(upload_to = "setter-bin/", blank =
True,
+ default = None, verbose_name = 'Custom Evaluation executable')
+
+
+ def __unicode__(self):
+ return str(self.problem) + '-' + str(self.maxScore)
+
+# Each TestSet has Testcases, which is an atomic test for a submission. It
has
+# an input and an corresponding Judge output to that.
+
+class Testcase(models.Model):
+ testSet = models.ForeignKey(TestSet)
+ input = models.TextField()
+ output = models.TextField()
+
+ def __unicode__(self):
+ return str(self.testSet)
+
+# Users can submit their solution to a problem. A submission has a result,
time
+# of submission, penalty for that submission, score for the submission,
+# submitted code and any error message that were generated for the
submission
+# during the evaluation of the submission
+class Submission(models.Model):
+ user = models.ForeignKey(User)
+ problem = models.ForeignKey(Problem)
+ result = models.CharField(max_length=4, choices=RESULT_TYPES,
default="QU")
+ time = models.DateTimeField()
+ language = models.CharField(max_length=10, choices=LANG_TYPES)
+ penalty = models.IntegerField(default=0)
+ score = models.IntegerField(default=0)
+ code = models.TextField()
+ errors = models.TextField()
+
+ def __unicode__(self):
+ return repr(
self.pk)
+
+# This table logs the result of the evaluation of a submission against
+# a testcase. It is to be used in the scoring module for a submission
+# to aggregate the results of each testcase.
+class TestcaseEval(models.Model):
+ submission = models.ForeignKey(Submission)
+ testcase = models.ForeignKey(Testcase)
+ # memusage is in kilobytes
+ mem_usage = models.IntegerField(default=0)
+ # cputime is the total time in seconds (float - microsecond
+ # precision).
+ cpu_time = models.FloatField(default=0)
+ # submission score for this (submission,testcase) pair
+ score = models.IntegerField(default=0)
+ # pass/fail status
+ pass_status = models.CharField(max_length=10)
+ # submission misc info
+ misc_info = models.TextField()
+
+
+# This table logs the result of each testset.
+class TestSetEval(models.Model):
+ submission = models.ForeignKey(Submission)
+ testset = models.ForeignKey(TestSet)
+ score = models.IntegerField(default=0)
+ # TODO: some measure of aggregate CPU time for this testset
+ cpu_time = models.FloatField(default=0)
+ # TODO: some measure of aggregate memory usage for this testset
+ mem_usage = models.IntegerField(default=0)
+ # pass/fail status
+ pass_status = models.CharField(max_length=10)
+ # submission misc info
+ misc_info = models.TextField()
=======================================
--- /src/checker/cc_frontend/models.py Tue Nov 23 08:41:23 2010
+++ /dev/null
@@ -1,152 +0,0 @@
-from django.contrib import admin
-from django.db import models
-from django.contrib.auth.models import User
-from django import forms
-
-# Current Language types that are supported
-LANG_TYPES = (
- ('c','C'),
- ('cpp','C++'),
- ('py','PYTHON 2.6.4'),
- #(3,'JAVA'),
-)
-
-# Submission Statuses
-RESULT_TYPES = (
- ('QU', 'QUEUED'),
- ('CMP', 'COMPILING'),
- ('CMPE', 'COMPILATION FAILURE'),
- ('RUN', 'RUNNING'),
- ('ACC', 'ACCEPTED'),
- ('WA', 'WRONG ANSWER'),
- ('TLE', 'TIME LIMIT EXCEEDED'),
- ('OUTE', 'OUTPUT LIMIT EXCEEDED'),
- ('SEG', 'SEGMENTATION FAULT'),
- ('FPE', 'FLOATING POINT ERROR'),
- ('KILL', 'KILLED'),
- ('ABRT', 'ABORT SIGNALLED'),
- ('RTE', 'RUN TIME ERROR'),
- ('WTF', 'NON ZERO RETURN STATUS'),
-)
-
-# The site is organized as contests, this is a basic contest model
-# Contest has a title, a general description startTime and endTime.
-# Also if it will be publicly viewable by non admins if public is True.
-
-class Contest(models.Model):
- title = models.CharField(max_length = 25)
- description = models.TextField()
- startTime = models.DateTimeField()
- endTime = models.DateTimeField()
- public = models.BooleanField(default = False)
-
- def __unicode__(self):
- return self.title
-
-# Each Contest has one or more problems. Orphan or non contest problem are
added
-# to a global contest. Each problem has a problem code, statement,
constraint
-# notes, sample input and output, time limit, memory limit, maximum score
for
-# that problem, allowed Languages for submission to that problem and a
penalty
-# for a wrong submission.
-
-class Problem(models.Model):
-
- #Problem related metadata fields follow
- contest = models.ForeignKey(Contest, verbose_name = 'Contest')
- pcode = models.CharField(max_length = 25, verbose_name = 'Problem
Code')
- penalty = models.IntegerField(verbose_name = 'Penalty')
- #Fields related to the display of the problem statement follow:
- statement = models.TextField()
- constraints = models.TextField() # Info about input constraints.
- sampleInput = models.TextField(verbose_name = "Sample Input")
- sampleOutput = models.TextField(verbose_name = "Sample Output")
- scoring_info = models.TextField(verbose_name = "Scoring Information")
# Info
- # about how the problem will be
scored.
- allowedLangs = models.CommaSeparatedIntegerField(max_length=10,
- verbose_name = "Allowed Languages")
- source_limit = models.IntegerField(default=50,
- verbose_name = "Max Source File Size") # The max source file size
allowed
- # for the problem (in KiB).
-
- def __unicode__(self):
- return self.pcode
-
-# Each problem has several TestSet. A Test set is a set of tests a
submission
-# for that problem has to pass to get some score assigned to that TestSet.
-# Testset belongs to a problem and has a maximum score.
-
-class TestSet(models.Model):
- problem = models.ForeignKey(Problem)
- maxScore = models.IntegerField()
- tlimit = models.IntegerField(verbose_name = "Time Limit") # (in
seconds)
- mlimit = models.IntegerField(verbose_name = "Memory Limit") # (in MiB)
- is_cust_scored = models.BooleanField(default = False,
- verbose_name = 'Is custom evaluated')
- cust_executable = models.FileField(upload_to = "setter-bin/", blank =
True,
- default = None, verbose_name = 'Custom Evaluation executable')
-
-
- def __unicode__(self):
- return str(self.problem) + '-' + str(self.maxScore)
-
-# Each TestSet has Testcases, which is an atomic test for a submission. It
has
-# an input and an corresponding Judge output to that.
-
-class Testcase(models.Model):
- testSet = models.ForeignKey(TestSet)
- input = models.TextField()
- output = models.TextField()
-
- def __unicode__(self):
- return str(self.testSet)
-
-# Users can submit their solution to a problem. A submission has a result,
time
-# of submission, penalty for that submission, score for the submission,
-# submitted code and any error message that were generated for the
submission
-# during the evaluation of the submission
-class Submission(models.Model):
- user = models.ForeignKey(User)
- problem = models.ForeignKey(Problem)
- result = models.CharField(max_length=4, choices=RESULT_TYPES,
default="QU")
- time = models.DateTimeField()
- language = models.CharField(max_length=10, choices=LANG_TYPES)
- penalty = models.IntegerField(default=0)
- score = models.IntegerField(default=0)
- code = models.TextField()
- errors = models.TextField()
-
- def __unicode__(self):
- return repr(
self.pk)
-
-# This table logs the result of the evaluation of a submission against
-# a testcase. It is to be used in the scoring module for a submission
-# to aggregate the results of each testcase.
-class TestcaseEval(models.Model):
- submission = models.ForeignKey(Submission)
- testcase = models.ForeignKey(Testcase)
- # memusage is in kilobytes
- mem_usage = models.IntegerField(default=0)
- # cputime is the total time in seconds (float - microsecond
- # precision).
- cpu_time = models.FloatField(default=0)
- # submission score for this (submission,testcase) pair
- score = models.IntegerField(default=0)
- # pass/fail status
- pass_status = models.CharField(max_length=10)
- # submission misc info
- misc_info = models.TextField()
-
-
-# This table logs the result of each testset.
-class TestSetEval(models.Model):
- submission = models.ForeignKey(Submission)
- testset = models.ForeignKey(TestSet)
- score = models.IntegerField(default=0)
- # TODO: some measure of aggregate CPU time for this testset
- cpu_time = models.FloatField(default=0)
- # TODO: some measure of aggregate memory usage for this testset
- mem_usage = models.IntegerField(default=0)
- # pass/fail status
- pass_status = models.CharField(max_length=10)
- # submission misc info
- misc_info = models.TextField()
==============================================================================
Revision: 3ee7c33b1e
Author: surenspost
Date: Wed Nov 24 03:34:52 2010
Log: 1. move root_urls.py to urls.py
2. update settings.py accordingly
3. remove views, forms and accordingly update setup.py
4. update django.conf and settings.conf to saner default values
5. add functionality to handle media directory to install.py
http://code.google.com/p/codechecker/source/detail?r=3ee7c33b1e
Deleted:
/src/checker/cc_frontend/forms/__init__.py
/src/checker/cc_frontend/root_url.py
/src/checker/cc_frontend/views/__init__.py
/src/checker/cc_frontend/views/contests.py
/src/checker/cc_frontend/views/problems.py
/src/checker/cc_frontend/views/submissions.py
Modified:
/conf/django.conf
/conf/settings.conf
/install.py
/setup.py
/src/checker/cc_frontend/settings.py
/src/checker/cc_frontend/urls.py
=======================================
--- /src/checker/cc_frontend/root_url.py Tue Nov 23 12:41:56 2010
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.conf.urls.defaults import patterns,include
-import settings
-import urls
-
-# Remove the forward slashes !
-location_root_url = settings.BASE_URL[1:]
-
-urlpatterns = patterns('',
- # Put the root url conf string here.
- (r"%s" % location_root_url, include(urls)),
-)
=======================================
--- /src/checker/cc_frontend/views/__init__.py Tue Nov 23 12:57:04 2010
+++ /dev/null
@@ -1,5 +0,0 @@
-def default(request):
- pass
-
-def references(request):
- pass
=======================================
--- /src/checker/cc_frontend/views/contests.py Tue Nov 23 12:57:04 2010
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.conf.urls.defaults import patterns
-
-urlpatterns = patterns( ( r'^$', 'default' ),
- ( r'^all/$', 'show_all_contests' ),
- ( r'^all/(?P<page>\d+)/$', 'show_all_contests' ),
- ( r'^(?P<contest_id>\d+)/$', 'show_contest' ),
- ( r'^(?P<contest_id>\d+)/(?P<action>\w+)/$', 'show_contest' ),
- (
r'^(?P<contest_id>\d+)/(?P<action>\w+)/(?P<page>\d+)/$', 'show_contest' ),
- )
-
-def default( request ):
- pass
-
-def show_all_contests( request, page = 1 ):
- pass
-
-def show_contest( request, contest_id = None, action = 'view', page = 1 ):
- pass
=======================================
--- /src/checker/cc_frontend/views/problems.py Tue Nov 23 12:57:04 2010
+++ /dev/null
@@ -1,22 +0,0 @@
-from django.conf.urls.defaults import patterns
-
-urlpatterns = patterns( ( r'^$', 'default' ),
- ( r'^all/', 'show_all_problems' ),
- ( r'^all/(?P<page>\d+)/$', 'show_all_problems' ),
- ( r'^(?P<problem_id>\d+)/$', 'show_problem' ),
- ( r'^(?P<problem_id>\d+)/submit/$', 'submit' ),
- ( r'^(?P<problem_id>\d+)/(?P<action>\w+)/$', 'show_problem' ),
- (
r'^(?P<problem_id>\d+)/(?P<action>\w+)/(?P<page>\d+)/$', 'show_problem' ),
- )
-
-def default( request ):
- pass
-
-def show_all_problems( request, page = 1 ):
- pass
-
-def show_problem( request, problem_id, action = 'view', page = 1 ):
- pass
-
-def submit( request, problem_id ):
- pass
=======================================
--- /src/checker/cc_frontend/views/submissions.py Tue Nov 23 12:57:04 2010
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns( ( r'^$', 'default' ),
- ( r'^(?P<page>\d+)/$', 'handle' ),
- ( r'^contests/(?P<contest_id>\d+)/$', 'handle' ),
- ( r'^contests/(?P<contest_id>\d+)/(?P<page>\d+)/$', 'handle' ),
- ( r'^problems/(?P<problem_id>\d+)/$', 'handle' ),
- ( r'^problems/(?P<problem_id>\d+)/(?P<page>\d+)/$', 'handle' ),
- )
-def default( request ):
- pass
-
-def handle( request, page = 1, contest_id = None, problem_id = None ):
- pass
=======================================
--- /conf/django.conf Tue Nov 23 13:06:58 2010
+++ /conf/django.conf Wed Nov 24 03:34:52 2010
@@ -15,7 +15,6 @@
# If the request is for media, serve it. Dont allow .htaccess overridding
# Disable directory listing using -Index
<Directory /media>
- DocumentRoot /usr/share/checker/media
- AllowOverride None
+ AllowOverride None
Options -Indexes
</Directory>
=======================================
--- /conf/settings.conf Tue Nov 23 12:58:47 2010
+++ /conf/settings.conf Wed Nov 24 03:34:52 2010
@@ -1,15 +1,16 @@
[django]
TIME_ZONE=Asia/Kolkata
-MEDIA_URL=
http://checker.example.com/media
-ADMIN_MEDIA_PREFIX=
http://checker.example.com/media
+MEDIA_URL=
http://localhost/media/
+ADMIN_MEDIA_PREFIX=
http://localhost/media/
[database]
DATABASE_ENGINE=
DATABASE_NAME=
-DATABASE_USER=
-DATABASE_PASSWORD=
+DATABASE_USER=
+DATABASE_PASSWORD=
[apache]
BASE_URL=/site/
-SERVERNAME=
checker.example.com
-
+SERVERNAME=localhost
+SERVERALIAS=
checker.example.com
+
=======================================
--- /install.py Tue Nov 23 13:06:58 2010
+++ /install.py Wed Nov 24 03:34:52 2010
@@ -9,7 +9,8 @@
prefix = "/usr/local/"
backend_conf = prefix + 'etc/checker/'
-frontend_conf = prefix + 'etc/apache/'
+frontend_conf = prefix + 'etc/apache/'
+media_dir = prefix + 'share/checker/'
#check if django exists first
try :
@@ -51,6 +52,10 @@
if not os.path.exists( frontend_conf ):
os.mkdir( frontend_conf )
+# create media directory
+if not os.path.exists( media_dir ) :
+ os.mkdir( media_dir )
+
#copy the codechecker.conf to @prefix/etc/checker
shutil.copy( os.path.join( os.getcwd(), 'conf/codechecker.conf'),
os.path.join( backend_conf, 'codechecker.conf' ) )
@@ -59,6 +64,21 @@
shutil.copy( os.path.join( os.getcwd(), 'conf/django.conf'),
os.path.join( frontend_conf, 'django.conf') )
+#copy the media folder to /usr/share/checker/media
+# and remove it if already present
+if os.path.exists( media_dir + 'media/'):
+ shutil.rmtree( media_dir + 'media/' )
+
+if os.path.exists( '/var/www/media/' ):
+ shutil.rmtree('/var/www/media/')
+ exit(1)
+
+shutil.copytree(os.getcwd() + '/media',
+ media_dir + 'media/' )
+
+#this is a temporary copy to /www/media
+shutil.copytree(os.getcwd() + '/media',
+ '/var/www/media/' )
# Now to run syncdb - settings should already be in place
# It would not have come to this level else
=======================================
--- /setup.py Mon Nov 22 06:18:31 2010
+++ /setup.py Wed Nov 24 03:34:52 2010
@@ -18,8 +18,7 @@
'
checker.cc_backend.se',
'checker.cc_backend.store',
'checker.cc_frontend',
- 'checker.cc_frontend.views',
- 'checker.cc_frontend.forms'
+ 'checker.cc_frontend.web',
],
package_dir={'checker' : 'src/checker'}
)
=======================================
--- /src/checker/cc_frontend/settings.py Tue Nov 23 12:38:51 2010
+++ /src/checker/cc_frontend/settings.py Wed Nov 24 03:34:52 2010
@@ -24,7 +24,7 @@
DATABASE_USER = config.get('database', 'DATABASE_USER')
DATABASE_PASSWORD = config.get('database', 'DATABASE_PASSWORD')
-ROOT_URLCONF = 'checker.cc_frontend.root_url'
+ROOT_URLCONF = 'checker.cc_frontend.urls'
TEMPLATE_DIRS = (
os.path.join( os.getcwd(), 'templates/')
)
@@ -37,7 +37,8 @@
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
- 'checker.cc_frontend'
+ 'django.contrib.admindocs',
+ 'cc_frontend.web'
)
# codechecker based custom config
=======================================
--- /src/checker/cc_frontend/urls.py Tue Nov 23 12:57:04 2010
+++ /src/checker/cc_frontend/urls.py Wed Nov 24 03:34:52 2010
@@ -1,27 +1,10 @@
-from django.conf.urls.defaults import patterns, include
-from django.contrib import admin
-admin.autodiscover()
-
-import checker.cc_frontend.views as views
-
-urlpatterns = patterns( '',
-
- # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
- # to INSTALLED_APPS to enable admin documentation:
- ( r'^admin/doc/', include( 'django.contrib.admindocs.urls' ) ),
-
- # Uncomment the next line to enable the admin:
- ( r'^admin/', include( admin.site.urls ) ),
-
- # Contest App based views
- ( r'^contests/', include( views.contests ) ),
- ( r'^problems/', include( views.problems ) ),
- ( r'^submissions/', include( views.submissions ) ),
- ( r'^my-submissions/', include( views.submissions ) ),
-
- # default Generic Views
- ( r'^about/$', views.default, { 'action' : 'about'} ),
- ( r'^references/$', views.references, { 'action' : 'references'} ),
- ( r'^$', views.default ),
-
- )
+from django.conf.urls.defaults import patterns,include
+import settings
+
+# Remove the forward slashes !
+location_root_url = settings.BASE_URL[1:]
+
+urlpatterns = patterns('',
+ # Put the root url conf string here.
+ ( r"%s" % location_root_url, include( 'checker.cc_frontend.web.urls' )
),
+)
==============================================================================
Revision: d53bdbdf26
Author: surenspost
Date: Wed Nov 24 03:43:56 2010
Log: updated to latest js from django-1.2.3 - have to find a better way of
handling this
http://code.google.com/p/codechecker/source/detail?r=d53bdbdf26
Added:
/media/js/LICENSE-JQUERY.txt
/media/js/actions.js
/media/js/actions.min.js
/media/js/collapse.js
/media/js/collapse.min.js
/media/js/compress.py
/media/js/inlines.js
/media/js/inlines.min.js
/media/js/jquery.init.js
/media/js/jquery.js
/media/js/jquery.min.js
/media/js/prepopulate.js
/media/js/prepopulate.min.js
Modified:
/media/js/SelectFilter2.js
/media/js/admin/DateTimeShortcuts.js
/media/js/admin/RelatedObjectLookups.js
/media/js/calendar.js
/media/js/core.js
/media/js/getElementsBySelector.js
=======================================
--- /dev/null
+++ /media/js/LICENSE-JQUERY.txt Wed Nov 24 03:43:56 2010
@@ -0,0 +1,20 @@
+Copyright (c) 2010 John Resig,
http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
=======================================
--- /dev/null
+++ /media/js/actions.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,139 @@
+(function($) {
+ $.fn.actions = function(opts) {
+ var options = $.extend({}, $.fn.actions.defaults, opts);
+ var actionCheckboxes = $(this);
+ var list_editable_changed = false;
+ checker = function(checked) {
+ if (checked) {
+ showQuestion();
+ } else {
+ reset();
+ }
+ $(actionCheckboxes).attr("checked", checked)
+ .parent().parent().toggleClass(options.selectedClass, checked);
+ }
+ updateCounter = function() {
+ var sel = $(actionCheckboxes).filter(":checked").length;
+ $(options.counterContainer).html(interpolate(
+ ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected',
sel), {
+ sel: sel,
+ cnt: _actions_icnt
+ }, true));
+ $(options.allToggle).attr("checked", function() {
+ if (sel == actionCheckboxes.length) {
+ value = true;
+ showQuestion();
+ } else {
+ value = false;
+ clearAcross();
+ }
+ return value;
+ });
+ }
+ showQuestion = function() {
+ $(options.acrossClears).hide();
+ $(options.acrossQuestions).show();
+ $(options.allContainer).hide();
+ }
+ showClear = function() {
+ $(options.acrossClears).show();
+ $(options.acrossQuestions).hide();
+ $(options.actionContainer).toggleClass(options.selectedClass);
+ $(options.allContainer).show();
+ $(options.counterContainer).hide();
+ }
+ reset = function() {
+ $(options.acrossClears).hide();
+ $(options.acrossQuestions).hide();
+ $(options.allContainer).hide();
+ $(options.counterContainer).show();
+ }
+ clearAcross = function() {
+ reset();
+ $(options.acrossInput).val(0);
+ $(options.actionContainer).removeClass(options.selectedClass);
+ }
+ // Show counter by default
+ $(options.counterContainer).show();
+ // Check state of checkboxes and reinit state if needed
+ $(this).filter(":checked").each(function(i) {
+ $(this).parent().parent().toggleClass(options.selectedClass);
+ updateCounter();
+ if ($(options.acrossInput).val() == 1) {
+ showClear();
+ }
+ });
+ $(options.allToggle).show().click(function() {
+ checker($(this).attr("checked"));
+ updateCounter();
+ });
+ $("div.actions span.question a").click(function(event) {
+ event.preventDefault();
+ $(options.acrossInput).val(1);
+ showClear();
+ });
+ $("div.actions span.clear a").click(function(event) {
+ event.preventDefault();
+ $(options.allToggle).attr("checked", false);
+ clearAcross();
+ checker(0);
+ updateCounter();
+ });
+ lastChecked = null;
+ $(actionCheckboxes).click(function(event) {
+ if (!event) { var event = window.event; }
+ var target = event.target ? event.target : event.srcElement;
+ if (lastChecked && $.data(lastChecked) != $.data(target) &&
event.shiftKey == true) {
+ var inrange = false;
+ $(lastChecked).attr("checked", target.checked)
+ .parent().parent().toggleClass(options.selectedClass, target.checked);
+ $(actionCheckboxes).each(function() {
+ if ($.data(this) == $.data(lastChecked) || $.data(this) ==
$.data(target)) {
+ inrange = (inrange) ? false : true;
+ }
+ if (inrange) {
+ $(this).attr("checked", target.checked)
+ .parent().parent().toggleClass(options.selectedClass,
target.checked);
+ }
+ });
+ }
+ $(target).parent().parent().toggleClass(options.selectedClass,
target.checked);
+ lastChecked = target;
+ updateCounter();
+ });
+ $('form#changelist-form table#result_list
tr').find('td:gt(0) :input').change(function() {
+ list_editable_changed = true;
+ });
+ $('form#changelist-form button[name="index"]').click(function(event) {
+ if (list_editable_changed) {
+ return confirm(gettext("You have unsaved changes on individual
editable fields. If you run an action, your unsaved changes will be
lost."));
+ }
+ });
+ $('form#changelist-form input[name="_save"]').click(function(event) {
+ var action_changed = false;
+ $('div.actions select option:selected').each(function() {
+ if ($(this).val()) {
+ action_changed = true;
+ }
+ });
+ if (action_changed) {
+ if (list_editable_changed) {
+ return confirm(gettext("You have selected an action, but you haven't
saved your changes to individual fields yet. Please click OK to save.
You'll need to re-run the action."));
+ } else {
+ return confirm(gettext("You have selected an action, and you haven't
made any changes on individual fields. You're probably looking for the Go
button rather than the Save button."));
+ }
+ }
+ });
+ }
+ /* Setup plugin defaults */
+ $.fn.actions.defaults = {
+ actionContainer: "div.actions",
+ counterContainer: "span.action-counter",
+ allContainer: "div.actions span.all",
+ acrossInput: "div.actions input.select-across",
+ acrossQuestions: "div.actions span.question",
+ acrossClears: "div.actions span.clear",
+ allToggle: "#action-toggle",
+ selectedClass: "selected"
+ }
+})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/actions.min.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,7 @@
+(function(a){a.fn.actions=function(h){var
b=a.extend({},a.fn.actions.defaults,h),e=a(this),f=false;checker=function(c){c?showQuestion():reset();a(e).attr("checked",c).parent().parent().toggleClass(b.selectedClass,c)};updateCounter=function(){var
c=a(e).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s
of %(cnt)s selected","%(sel)s of %(cnt)s
selected",c),{sel:c,cnt:_actions_icnt},true));a(b.allToggle).attr("checked",function(){if(c==e.length){value=true;showQuestion()}else{value=
+false;clearAcross()}return
value})};showQuestion=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()};showClear=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()};reset=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()};clearAcross=function(){reset();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)};
+a(b.counterContainer).show();a(this).filter(":checked").each(function(){a(this).parent().parent().toggleClass(b.selectedClass);updateCounter();a(b.acrossInput).val()==1&&showClear()});a(b.allToggle).show().click(function(){checker(a(this).attr("checked"));updateCounter()});a("div.actions
span.question
a").click(function(c){c.preventDefault();a(b.acrossInput).val(1);showClear()});a("div.actions
span.clear
a").click(function(c){c.preventDefault();a(b.allToggle).attr("checked",false);clearAcross();checker(0);
+updateCounter()});lastChecked=null;a(e).click(function(c){if(!c)c=window.event;var
d=c.target?c.target:c.srcElement;if(lastChecked&&a.data(lastChecked)!=a.data(d)&&c.shiftKey==true){var
g=false;a(lastChecked).attr("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(e).each(function(){if(a.data(this)==a.data(lastChecked)|
|
a.data(this)==a.data(d))g=g?false:true;g&&a(this).attr("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,
+d.checked);lastChecked=d;updateCounter()});a("form#changelist-form
table#result_list
tr").find("td:gt(0) :input").change(function(){f=true});a('form#changelist-form
button[name="index"]').click(function(){if(f)return confirm(gettext("You
have unsaved changes on individual editable fields. If you run an action,
your unsaved changes will be lost."))});a('form#changelist-form
input[name="_save"]').click(function(){var c=false;a("div.actions select
option:selected").each(function(){if(a(this).val())c=
+true});if(c)return f?confirm(gettext("You have selected an action, but you
haven't saved your changes to individual fields yet. Please click OK to
save. You'll need to re-run the action.")):confirm(gettext("You have
selected an action, and you haven't made any changes on individual fields.
You're probably looking for the Go button rather than the Save
button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions
span.all",acrossInput:"div.actions input.select-across",
+acrossQuestions:"div.actions span.question",acrossClears:"div.actions
span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/collapse.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,27 @@
+(function($) {
+ $(document).ready(function() {
+ // Add anchor tag for Show/Hide link
+ $("fieldset.collapse").each(function(i, elem) {
+ // Don't hide if fields in this fieldset have errors
+ if ( $(elem).find("div.errors").length == 0 ) {
+ $(elem).addClass("collapsed");
+ $(elem).find("h2").first().append(' (<a id="fieldsetcollapser' +
+ i +'" class="collapse-toggle" href="#">' + gettext("Show") +
+ '</a>)');
+ }
+ });
+ // Add toggle to anchor tag
+ $("fieldset.collapse a.collapse-toggle").toggle(
+ function() { // Show
+ $(this).text(gettext("Hide"));
+ $(this).closest("fieldset").removeClass("collapsed");
+ return false;
+ },
+ function() { // Hide
+ $(this).text(gettext("Show"));
+ $(this).closest("fieldset").addClass("collapsed");
+ return false;
+ }
+ );
+ });
+})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/collapse.min.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,2 @@
+(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){if(a(b).find("div.errors").length==0){a(b).addClass("collapsed");a(b).find("h2").first().append('
(<a
id="fieldsetcollapser'+c+'" class="collapse-toggle"
href="#">'+gettext("Show")+"</a>)")}});a("fieldset.collapse
a.collapse-toggle").toggle(function(){a(this).text(gettext("Hide"));a(this).closest("fieldset").removeClass("collapsed");return
false},function(){a(this).text(gettext("Show"));a(this).closest("fieldset").addClass("collapsed");
+return false})})})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/compress.py Wed Nov 24 03:43:56 2010
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+import os
+import optparse
+import subprocess
+import sys
+
+here = os.path.dirname(__file__)
+
+def main():
+ usage = "usage: %prog [file1..fileN]"
+ description = """With no file paths given this script will
automatically
+compress all jQuery-based files of the admin app. Requires the Google
Closure
+Compiler library and Java version 6 or later."""
+ parser = optparse.OptionParser(usage, description=description)
+ parser.add_option("-c", dest="compiler", default="~/bin/compiler.jar",
+ help="path to Closure Compiler jar file")
+ parser.add_option("-v", "--verbose",
+ action="store_true", dest="verbose")
+ parser.add_option("-q", "--quiet",
+ action="store_false", dest="verbose")
+ (options, args) = parser.parse_args()
+
+ compiler = os.path.expanduser(options.compiler)
+ if not os.path.exists(compiler):
+ sys.exit("Google Closure compiler jar file %s not found. Please
use the -c option to specify the path." % compiler)
+
+ if not args:
+ if options.verbose:
+ sys.stdout.write("No filenames given; defaulting to admin
scripts\n")
+ args = [os.path.join(here, f) for f in [
+ "actions.js", "collapse.js", "inlines.js", "prepopulate.js"]]
+
+ for arg in args:
+ if not arg.endswith(".js"):
+ arg = arg + ".js"
+ to_compress = os.path.expanduser(arg)
+ if os.path.exists(to_compress):
+ to_compress_min = "%s.min.js" % "".join(arg.rsplit(".js"))
+ cmd = "java -jar %s --js %s --js_output_file %s" % (compiler,
to_compress, to_compress_min)
+ if options.verbose:
+ sys.stdout.write("Running: %s\n" % cmd)
+ subprocess.call(cmd.split())
+ else:
+ sys.stdout.write("File %s not found. Sure it exists?\n" %
to_compress)
+
+if __name__ == '__main__':
+ main()
=======================================
--- /dev/null
+++ /media/js/inlines.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,148 @@
+/**
+ * Django admin inlines
+ *
+ * Based on jQuery Formset 1.1
+ * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
+ * @requires jQuery 1.2.6 or later
+ *
+ * Copyright (c) 2009, Stanislaus Madueke
+ * All rights reserved.
+ *
+ * Spiced up with Code from Zain Memon's GSoC project 2009
+ * and modified for Django by Jannis Leidel
+ *
+ * Licensed under the New BSD License
+ * See:
http://www.opensource.org/licenses/bsd-license.php
+ */
+(function($) {
+ $.fn.formset = function(opts) {
+ var options = $.extend({}, $.fn.formset.defaults, opts);
+ var updateElementIndex = function(el, prefix, ndx) {
+ var id_regex = new RegExp("(" + prefix + "-\\d+)");
+ var replacement = prefix + "-" + ndx;
+ if ($(el).attr("for")) {
+ $(el).attr("for", $(el).attr("for").replace(id_regex, replacement));
+ }
+ if (
el.id) {
+
el.id = el.id.replace(id_regex, replacement);
+ }
+ if (
el.name) {
+
el.name = el.name.replace(id_regex, replacement);
+ }
+ };
+ var totalForms = $("#id_" + options.prefix
+ "-TOTAL_FORMS").attr("autocomplete", "off");
+ var maxForms = $("#id_" + options.prefix
+ "-MAX_NUM_FORMS").attr("autocomplete", "off");
+ // only show the add button if we are allowed to add more items,
+ // note that max_num = None translates to a blank string.
+ var showAddButton = maxForms.val() == '' ||
(maxForms.val()-totalForms.val()) > 0;
+ $(this).each(function(i) {
+ $(this).not("." + options.emptyCssClass).addClass(options.formCssClass);
+ });
+ if ($(this).length && showAddButton) {
+ var addButton;
+ if ($(this).attr("tagName") == "TR") {
+ // If forms are laid out as table rows, insert the
+ // "add" button in a new table row:
+ var numCols = this.eq(0).children().length;
+ $(this).parent().append('<tr class="' + options.addCssClass + '"><td
colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText
+ "</a></tr>");
+ addButton = $(this).parent().find("tr:last a");
+ } else {
+ // Otherwise, insert it immediately after the last form:
+ $(this).filter(":last").after('<div class="' + options.addCssClass
+ '"><a href="javascript:void(0)">' + options.addText + "</a></div>");
+ addButton = $(this).filter(":last").next().find("a");
+ }
+ addButton.click(function() {
+ var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS");
+ var nextIndex = parseInt(totalForms.val());
+ var template = $("#" + options.prefix + "-empty");
+ var row = template.clone(true);
+ row.removeClass(options.emptyCssClass)
+ .addClass(options.formCssClass)
+ .attr("id", options.prefix + "-" + nextIndex)
+ .insertBefore($(template));
+ row.find("*")
+ .filter(function() {
+ var el = $(this);
+ return el.attr("id") && el.attr("id").search(/__prefix__/) >=
0;
+ }).each(function() {
+ var el = $(this);
+ el.attr("id", el.attr("id").replace(/__prefix__/g, nextIndex));
+ })
+ .end()
+ .filter(function() {
+ var el = $(this);
+ return el.attr("name") && el.attr("name").search(/__prefix__/)
>= 0;
+ }).each(function() {
+ var el = $(this);
+ el.attr("name", el.attr("name").replace(/__prefix__/g,
nextIndex));
+ });
+ if (
row.is("tr")) {
+ // If the forms are laid out in table rows, insert
+ // the remove button into the last table cell:
+ row.children(":last").append('<div><a class="' +
options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText
+ "</a></div>");
+ } else if (
row.is("ul") ||
row.is("ol")) {
+ // If they're laid out as an ordered/unordered list,
+ // insert an <li> after the last list item:
+ row.append('<li><a class="' + options.deleteCssClass +'"
href="javascript:void(0)">' + options.deleteText + "</a></li>");
+ } else {
+ // Otherwise, just insert the remove button as the
+ // last child element of the form's container:
+ row.children(":first").append('<span><a class="' +
options.deleteCssClass + '" href="javascript:void(0)">' +
options.deleteText + "</a></span>");
+ }
+ row.find("input,select,textarea,label,a").each(function() {
+ updateElementIndex(this, options.prefix, totalForms.val());
+ });
+ // Update number of total forms
+ $(totalForms).val(nextIndex + 1);
+ // Hide add button in case we've hit the max, except we want to add
infinitely
+ if ((maxForms.val() != '') && (maxForms.val()-totalForms.val()) <= 0) {
+ addButton.parent().hide();
+ }
+ // The delete button of each row triggers a bunch of other things
+ row.find("a." + options.deleteCssClass).click(function() {
+ // Remove the parent form containing this button:
+ var row = $(this).parents("." + options.formCssClass);
+ row.remove();
+ // If a post-delete callback was provided, call it with the deleted
form:
+ if (options.removed) {
+ options.removed(row);
+ }
+ // Update the TOTAL_FORMS form count.
+ var forms = $("." + options.formCssClass);
+ $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length);
+ // Show add button again once we drop below max
+ if ((maxForms.val() == '') || (maxForms.val()-forms.length) > 0) {
+ addButton.parent().show();
+ }
+ // Also, update names and ids for all remaining form controls
+ // so they remain in sequence:
+ for (var i=0, formCount=forms.length; i<formCount; i++)
+ {
+
$(forms.get(i)).find("input,select,textarea,label,a").each(function() {
+ updateElementIndex(this, options.prefix, i);
+ });
+ }
+ return false;
+ });
+ // If a post-add callback was supplied, call it with the added form:
+ if (options.added) {
+ options.added(row);
+ }
+ return false;
+ });
+ }
+ return this;
+ }
+ /* Setup plugin defaults */
+ $.fn.formset.defaults = {
+ prefix: "form", // The form prefix for your django formset
+ addText: "add another", // Text for the add link
+ deleteText: "remove", // Text for the delete link
+ addCssClass: "add-row", // CSS class applied to the add link
+ deleteCssClass: "delete-row", // CSS class applied to the delete link
+ emptyCssClass: "empty-row", // CSS class applied to the empty row
+ formCssClass: "dynamic-form", // CSS class applied to each form in a
formset
+ added: null, // Function called each time a new form is added
+ removed: null // Function called each time a form is deleted
+ }
+})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/inlines.min.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,6 @@
+(function(a){a.fn.formset=function(g){var
b=a.extend({},a.fn.formset.defaults,g),l=function(e,f,j){var d=new
RegExp("("+f+"-\\d+)");f=f+"-"+j;a(e).attr("for")&&a(e).attr("for",a(e).attr("for").replace(d,f));if(
e.id)
e.id=e.id.replace(d,f);if(
e.name)
e.name=e.name.replace(d,f)};g=a("#id_"+b.prefix+"-TOTAL_FORMS").attr("autocomplete","off");var
h=a("#id_"+b.prefix+"-MAX_NUM_FORMS").attr("autocomplete","off");g=h.val()==""|
|
h.val()-g.val()>0;a(this).each(function(){a(this).not("."+b.emptyCssClass).addClass(b.formCssClass)});
+if(a(this).length&&g){var
i;if(a(this).attr("tagName")=="TR"){g=this.eq(0).children().length;a(this).parent().append('<tr
class="'+b.addCssClass+'"><td colspan="'+g+'"><a
href="javascript:void(0)">'+b.addText+"</a></tr>");i=a(this).parent().find("tr:last
a")}else{a(this).filter(":last").after('<div class="'+b.addCssClass+'"><a
href="javascript:void(0)">'+b.addText+"</a></div>");i=a(this).filter(":last").next().find("a")}i.click(function(){var
e=a("#id_"+b.prefix+"-TOTAL_FORMS"),f=parseInt(e.val()),
+j=a("#"+b.prefix+"-empty"),d=j.clone(true);d.removeClass(b.emptyCssClass).addClass(b.formCssClass).attr("id",b.prefix+"-"+f).insertBefore(a(j));d.find("*").filter(function(){var
c=a(this);return
c.attr("id")&&c.attr("id").search(/__prefix__/)>=0}).each(function(){var
c=a(this);c.attr("id",c.attr("id").replace(/__prefix__/g,f))}).end().filter(function(){var
c=a(this);return
c.attr("name")&&c.attr("name").search(/__prefix__/)>=0}).each(function(){var
c=a(this);c.attr("name",c.attr("name").replace(/__prefix__/g,
+f))});if(
d.is("tr"))d.children(":last").append('<div><a
class="'+b.deleteCssClass+'"
href="javascript:void(0)">'+b.deleteText+"</a></div>");else
d.is("ul")||
d.is("ol")?d.append('<li><a class="'+b.deleteCssClass+'"
href="javascript:void(0)">'+b.deleteText+"</a></li>"):d.children(":first").append('<span><a
class="'+b.deleteCssClass+'"
href="javascript:void(0)">'+b.deleteText+"</a></span>");d.find("input,select,textarea,label,a").each(function(){l(this,b.prefix,e.val())});a(e).val(f+1);h.val()!=""&&
+h.val()-e.val()<=0&&i.parent().hide();d.find("a."+b.deleteCssClass).click(function(){var
c=a(this).parents("."+b.formCssClass);c.remove();b.removed&&b.removed(c);c=a("."+b.formCssClass);a("#id_"+b.prefix+"-TOTAL_FORMS").val(c.length);if(h.val()==""|
|
h.val()-c.length>0)i.parent().show();for(var
k=0,m=c.length;k<m;k++)a(c.get(k)).find("input,select,textarea,label,a").each(function(){l(this,b.prefix,k)});return
false});b.added&&b.added(d);return false})}return
this};a.fn.formset.defaults={prefix:"form",
+addText:"add
another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null}})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/jquery.init.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,4 @@
+// Puts the included jQuery into our own namespace
+var django = {
+ "jQuery": jQuery.noConflict(true)
+};
=======================================
--- /dev/null
+++ /media/js/jquery.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,6240 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ *
http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ *
http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function( window, undefined ) {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ indexOf = Array.prototype.indexOf;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) :
ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ if ( elem ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if (
elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && /^\w+$/.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep =
false, options, name, src, copy;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep
copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging object literal values or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) ||
jQuery.isArray(copy) ) ) {
+ var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src)
) ? src
+ : jQuery.isArray(copy) ? [] : {};
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Make sure body exists, at least, in case IE gets a little
overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 13 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn, i = 0;
+ while ( (fn = readyList[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Reset the list of functions
+ readyList = null;
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ return jQuery.ready();
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false
);
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor
property.
+ // Make sure that DOM nodes and window objects don't pass through, as
well
+ if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType ||
obj.setInterval ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor
+ && !hasOwnProperty.call(obj, "constructor")
+ && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwnProperty.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from
http://json.org/json2.js
+ if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|
u[0-9a-fA-F]{4})/g, "@")
+ .replace(/"[^"\\\n\r]*"|true|false|null|
-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ //
http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] ||
document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() ===
name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false
) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value =
object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ if ( array.length == null || typeof array === "string" ||
jQuery.isFunction(array) || (typeof array !== "function" &&
array.setInterval) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length, j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ if ( !inv !== !callback( elems[ i ], i ) ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it
can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details:
http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) |
|
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded,
false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous
(ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ //
http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || ""
);
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+// Mutifunctional method to get and set values to a collection
+// The value/s can be optionally by executed if its a function
+function access( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key )
) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+}
+
+function now() {
+ return (new Date).getTime();
+}
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a'
style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected
property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an
optgroup)
+ optSelected: document.createElement("select").appendChild(
document.createElement("option") ).selected,
+
+ parentNode: div.removeChild( div.appendChild(
document.createElement("div") ) ).parentNode === null,
+
+ // Will be defined later
+ deleteExpando: true,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete script.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest'
checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone =
fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+
+ div = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ //
http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ expando:expando,
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ "object": true,
+ "applet": true
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /media/js/jquery.min.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ *
http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ *
http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function
ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function
Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text|
|b.textContent||b.innerHTML|
|"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var
i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return
a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return
a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return
false}function Z(){return true}function na(a,b,d){d[0].type=a;return
c.event.handle.apply(b,d)}function oa(a){var
b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this|
|!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var
u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"|
|
i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f|
|
f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return
b}}function
pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/
/g,
+"&")}function qa(a){return!a||!a.parentNode||
a.parentNode.nodeType===11}function ra(a,b){var
d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var
f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete
e.handle;e.events={};for(var j in f)for(var i in
f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var
f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof
a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone|
|!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function
K(a,b){var
d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return
d}function
wa(a){return"scrollTo"in
a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var
c=function(a,b){return new
c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|
^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|
\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var
d,f;if(!a)return
this;if(a.nodeType){this.context=this[0]=a;this.length=1;return
this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return
this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||
b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else
a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return
c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(
b.id!==d[2])return
T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return
this}else
if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return
c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else
if(c.isFunction(a))return
T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return
c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return
this.length},toArray:function(){return
R.call(this,0)},get:function(a){return
a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var
f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else
if(b)f.selector=this.selector+"."+b+"("+d+")";return
f},each:function(a,b){return
c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else
Q&&Q.push(a);return this},eq:function(a){return
a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return
this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return
this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return
this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return
this.prevObject||
c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var
a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof
a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof
a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j
in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||
c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else
if(o!==w)a[j]=o}return
a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return
c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return
setTimeout(c.ready,13);c.isReady=true;if(Q){for(var
a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return
c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else
if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var
a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return
$.call(a)==="[object Function]"},isArray:function(a){return
$.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||
$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return
false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||
aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return
true},error:function(a){throw a;},parseJSON:function(a){if(typeof
a!=="string"||!a)return
null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|
u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|
-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return
A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid
JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var
b=s.getElementsByTagName("head")[0]||
s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else
d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return
a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var
f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in
a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else
if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else
for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return
a},trim:function(a){return(a|
|"").replace(Wa,"")},makeArray:function(a,b){b=b||
[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof
a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return
b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var
d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof
b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else
for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return
a},grep:function(a,b,d){for(var
f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return
f},map:function(a,b,d){for(var
f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return
f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof
b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||
this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return
b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||
/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)|
|!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||
[];return{browser:a[1]||"",version:a[2]|
|"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return
ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else
if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var
a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="
<link/><table></table><a href='/a'
style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e|
|!e.length|
|!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete
A[f]}try{delete
b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function
k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input
type='radio'
name='radiotest'
checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var
k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var
n=
+s.createElement("div");k="on"+k;var r=k in
n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return
r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var
G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var
f=a[G],e=c.cache;if(!f&&typeof
b==="string"&&d===w)return null;f||
(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else
if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof
b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var
d=a[G],f=c.cache,e=f[d];if(b){if(e){delete
e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete
a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete
f[d]}}}});c.fn.extend({data:function(a,b){if(typeof
a==="undefined"&&this.length)return c.data(this[0]);else if(typeof
a==="object")return this.each(function(){c.data(this,a)});var
d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var
f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return
f===w&&d[1]?this.data(d[0]):f}else return
this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return
this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b|
|"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||
c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return
f}},dequeue:function(a,b){b=b||"fx";var
d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof
a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var
d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return
this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]|
|a:a;b=b||"fx";return this.queue(b,function(){var
d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return
this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|
style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|
checkbox/;c.fn.extend({attr:function(a,b){return
X(this,a,b,true,c.attr)},removeAttr:function(a){return
this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return
this.each(function(n){var
r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof
a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var
e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else
e.className=a}return
this},removeClass:function(a){if(c.isFunction(a))return
this.each(function(k){var
n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof
a==="string"|
|a===w)for(var b=(a|
|"").split(ca),d=0,f=this.length;d<f;d++){var
e=this[d];if(e.nodeType===1&&e.className)if(a){for(var
j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return
this},toggleClass:function(a,b){var d=typeof a,f=typeof
b==="boolean";if(c.isFunction(a))return this.each(function(e){var
j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return
this.each(function(){if(d==="string")for(var
e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else
if(d==="undefined"||
d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")|
|""}})},hasClass:function(a){a=" "+a+" ";for(var
b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return
true;return false},val:function(a){if(a===w){var
b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var
d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return
null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return
f}if(Ba.test(b.type)&&!c.support.checkOn)return
b.getAttribute("value")===null?"on":b.value;return(b.value|
|"").replace(Za,"")}return w}var o=c.isFunction(a);return
this.each(function(k){var
n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof
r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else
if(c.nodeName(this,"select")){var
u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else
this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a|
|a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return
c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||
b;if(a.nodeType===1){var j=$a.test(b);if(b in
a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type
property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return
a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)|
|cb.test(a.nodeName)&&a.href?0:w;return
a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return
a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return
a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return
a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3|
|
a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var
e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var
i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return
typeof
c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var
k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var
u=i[k],z=c.event.special[k]|
|{};if(!u){u=i[k]=[];if(!z.setup||
z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else
a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3|
|a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof
b==="string"&&b.charAt(0)==="."){b=b||"";for(e in
C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new
RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|
$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||
0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||
k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||
n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var
B=0;B<r.length;B++){u=r[B];if(i||
k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete
z.events;delete
z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var
e=a.type||a;if(!f){a=typeof
a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d|
|
d.nodeType===3||d.nodeType===8)return
w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode|
|
d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else
if(!a.isDefaultPrevented()){f=a.target;var
i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default|
|
k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var
b,d,f,e;a=arguments[0]=c.event.fix(a||
A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|
\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|
$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var
j=d.length;e<j;e++){var i=d[e];if(b||
f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return
a.result},props:"altKey attrChange attrName bubbles button cancelable
charCode clientX clientY ctrlKey currentTarget data detail eventPhase
fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY
originalTarget pageX pageY prevValue relatedNode relatedTarget screenX
screenY shiftKey srcElement target toElement view wheelDelta
which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var
d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement|
|
s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft|
|d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||
0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||
0)}if(!a.which&&(a.charCode||
a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||
a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return
a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var
b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return
b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return
false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var
Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return
new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else
this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var
a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var
a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var
b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var
b=a.target,d=b.type;if((d==="submit"|
|
d==="image")&&c(b).closest("form").length)return
na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var
b=a.target,d=b.type;if((d==="text"||
d==="password")&&c(b).closest("form").length&&a.keyCode===13)return
na("submit",this,arguments)})}else return
false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|
select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||
b==="checkbox")d=a.checked;else
if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return
f.selected}).join("-"):"";else
if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return
d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||
d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||
d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return
c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var
b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||
b.nodeName.toLowerCase()==="select")return
fa.call(this,a)},keydown:function(a){var
b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"|
|a.keyCode===32&&(d==="checkbox"||d==="radio")||
d==="select-multiple")return
fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return
false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return
da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return
da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function
d(f){f=c.event.fix(f);f.type=b;return
c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof
d==="object"){for(var
j in d)this[b](j,f,d[j],e);return
this}if(c.isFunction(f)){e=f;f=w}var
i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return
e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var
o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return
this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var
f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return
this},delegate:function(a,b,d,f){return
this.live(b,d,f,a)},undelegate:function(a,b,d){return
arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return
this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return
a.result}},
+toggle:function(a){for(var
b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return
this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||
0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return
b[e].apply(this,arguments)||false}))},hover:function(a,b){return
this.mouseenter(a).mouseleave(b||a)}});var
Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var
i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d|
|"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"|
|i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||
i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return
this}});c.each("blur focus focusin focusout load resize scroll unload click
dblclick mousedown mouseup mousemove mouseover mouseout mouseenter
mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return
d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var
a in
c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function
a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||
l.nodeType===4)h+=l.nodeValue;else
if(l.nodeType!==8)h+=a(l.childNodes)}return h}function
b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var
y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function
d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var
t=m[q];if(t){t=t[g];for(var
y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof
h!=="string"){if(t===h){y=true;break}}else
if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var
f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|
[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return
0});var
k=function(g,h,l,m){l=l||[];var q=h=h||
s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof
g!=="string")return l;for(var
p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else
for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"|
|
p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else
H=false;for(;p.length;){var
D=p.pop();v=D;if(n.relative[D])v=p.pop();else
D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object
Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true|
|y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else
for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else
l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return
l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var
h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return
g};k.matches=function(g,h){return
k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var
t=n.order[p];if(q=n.leftMatch[t].exec(g)){var
y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]|
|"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m|
|
(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var
q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in
n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var
M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else
y=I=true;if(t)for(var
U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var
Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else
if(Ha){p.push(D);y=true}}if(I!==w){l||
(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else
break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized
expression: "+g;};var
n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|
\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|
\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|
\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|
\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|
\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|
[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|
odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|
\\.)+)(?:\((['"]?)((?:\([^\)]+\)|
[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return
g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof
h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var
q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l|
|p&&p.nodeName.toLowerCase()===h?p||
false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof
h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var
m=0,q=g.length;m<q;m++){var
p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var
m=e++,q=d;if(typeof
h==="string"&&!/\W/.test(h)){var
p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var
m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var
p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof
h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof
h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var
m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return
l.length===0?null:l}},TAG:function(g,h){return
h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return
g;p=0;for(var
v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l|
|m.push(v);else if(l)h[p]=false;return false},ID:function(g){return
g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|
-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"|
|!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||
1)-0;g[3]=h[3]-0}g[0]=e++;return
g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return
g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])|
|"").length>1||
/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l|
|m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||
n.match.CHILD.test(g[0]))return true;return
g},POS:function(g){g.unshift(true);return
g}},filters:{enabled:function(g){return
g.disabled===false&&g.type!=="hidden"},disabled:function(g){return
g.disabled===true},checked:function(g){return
g.checked===true},selected:function(g){return
g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type|
|
g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|
textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return
h===0},last:function(g,h,l,m){return
h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return
h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return
h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return
l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var
q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else
if(q==="contains")return(g.textContent||g.innerText||a([g])|
|"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else
k.error("Syntax error, unrecognized
expression: "+q)},CHILD:function(g,h){var
l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return
false;if(l==="first")return
true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return
false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return
true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var
v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return
l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return
g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return
h==="*"&&g.nodeType===1|
|
g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||
g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var
l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var
m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|
="?l===h|
|l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var
q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in
n.match){n.match[u]=new
RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new
RegExp(/(^(?:.|\r|
\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var
z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return
h}return
g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h|
|[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else
if(typeof g.length==="number")for(var
l=0,m=g.length;l<m;l++)h.push(g[l]);else
for(l=0;g[l];l++)h.push(g[l]);return h}}var
B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|
|
+!h.compareDocumentPosition){if(g==h)i=true;return
g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return
g};else if("sourceIndex"in
s.documentElement)B=function(g,h){if(!g.sourceIndex|
|!h.sourceIndex){if(g==h)i=true;return
g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return
g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument|
|!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var
l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return
g};(function(){var
g=s.createElement("div"),h="script"+(new
Date).getTime();g.innerHTML="<a name='"+h+"'/>";var
l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){
n.find.ID=function(m,q,p){if(typeof
q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?
q.id===m[1]|
|typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};
n.filter.ID=function(m,q){var
p=typeof
m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return
m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var
g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var
m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a
href='#'></a>";
+if(g.firstChild&&typeof
g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return
h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var
g=k,h=s.createElement("div");h.innerHTML="<p
class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q|
|s;if(!v&&q.nodeType===9&&!x(q))try{return
z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in
g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test
e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||
g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof
l.getElementsByClassName!=="undefined"&&!m)return
l.getElementsByClassName(h[1])};g=null}}})();var
E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return
g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument|
|g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var
l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var
p=h.length;q<p;q++)k(g,h[q],l);return
k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var
eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var
Ia=function(a,b,d){if(c.isFunction(b))return
c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else
if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof
b==="string"){var f=c.grep(a,function(e){return
e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else
b=c.filter(b,f)}return c.grep(a,function(e){return
c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var
b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var
i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return
b},has:function(a){var b=c(a);return this.filter(function(){for(var
d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return
true})},not:function(a){return
this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return
this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var
d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||
(j[i]=c.expr.match.POS.test(i)?c(i,b||
this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in
j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete
j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||
this.context):null;return
this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return
r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return
c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof
a==="string"?c(a,b||
this.context):c.makeArray(a);b=c.merge(this.get(),a);return
this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return
this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return
c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return
c.dir(a,"parentNode",
+d)},next:function(a){return
c.nth(a,2,"nextSibling")},prev:function(a){return
c.nth(a,2,"previousSibling")},nextAll:function(a){return
c.dir(a,"nextSibling")},prevAll:function(a){return
c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return
c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return
c.dir(a,"previousSibling",d)},siblings:function(a){return
c.sibling(a.parentNode.firstChild,a)},children:function(a){return
c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||
a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var
e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof
f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1|
|gb.test(f))&&fb.test(a))e=e.reverse();return
this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return
c.find.matches(a,b)},dir:function(a,b,d){var
f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1|
|!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var
f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return
a},sibling:function(a,b){for(var
d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var
Ja=/ jQuery\d+="(?:\d+|
null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|
img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|
&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|
=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select
multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return
this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof
a!=="object"&&a!==w)return
this.empty().append((this[0]&&this[0].ownerDocument||
s).createTextNode(a));return
c.text(this)},wrapAll:function(a){if(c.isFunction(a))return
this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var
b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var
d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return
d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return
this.each(function(b){c(this).wrapInner(a.call(this,b))});return
this.each(function(){var
b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return
this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return
this.parent().each(function(){c.nodeName(this,"body")||
c(this).replaceWith(this.childNodes)}).end()},append:function(){return
this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return
this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return
this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else
if(arguments.length){var
a=c(arguments[0]);a.push.apply(a,this.toArray());return
this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return
this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var
a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return
a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||
c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return
this},empty:function(){for(var
a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var
b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var
d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return
c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else
return
this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return
b},html:function(a){if(a===w)return
this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof
a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace|
|!V.test(a))&&!F[(La.exec(a)||
["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var
b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else
c.isFunction(a)?this.each(function(e){var
j=c(this),i=j.html();j.empty().append(function(){return
a.call(this,e,i)})}):this.empty().append(a);return
this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var
d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof
a!=="string")a=c(a).detach();return this.each(function(){var
b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else
return
this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return
this.remove(a,true)},domManip:function(a,b,d){function f(u){return
c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var
e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof
i==="string"&&ua.test(i))return
this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return
this.each(function(u){var
z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var
n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||
this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return
this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var
f=[];d=c(d);var
e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var
i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return
this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||
s;if(typeof b.createElement==="undefined")b=b.ownerDocument||
b[0]&&b[0].ownerDocument||s;for(var
e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof
i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof
i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||
F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else
e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type|
|
e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return
e},cleanData:function(a){for(var
b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var
k
in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else
o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var
kb=/z-?index|font-?weight|opacity|zoom|
line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return
X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof
e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a|
|a.nodeType===3||a.nodeType===8)return w;if((b==="width"||
b==="height")&&parseFloat(d)<0)d=w;var f=a.style||
a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter|
|c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return
f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return
f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var
e,j=b==="width"?pb:qb;function
i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f|
|(e-=parseFloat(c.curCSS(a,"padding"+this,true))||
0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else
e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||
0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return
Math.max(0,Math.round(e))}return
c.curCSS(a,b,d)},curCSS:function(a,b,d){var
f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter|
|"")?parseFloat(RegExp.$1)/100+"":"";return
f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else
if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return
null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else
if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||
a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var
j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f|
|0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return
f},swap:function(a,b,d){var f={};for(var e in
b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in
b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var
b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return
b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var
sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|
datetime|email|hidden|month|number|password|range|search|tel|text|time|url|
week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|
$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof
a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var
f=a.indexOf(" ");if(f>=0){var
e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else
if(typeof
b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var
j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"|
|o==="notmodified")j.html(e?c("<div
/>").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return
this},
+serialize:function(){return
c.param(this.serializeArray())},serializeArray:function(){return
this.map(function(){return
this.elements?c.makeArray(this.elements):this}).filter(function(){return
this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||
vb.test(this.type))}).map(function(a,b){a=c(this).val();return
a==null?null:c.isArray(a)?c.map(a,function(d){return{name:
b.name,value:d}}):{name:
b.name,value:a}}).get()}});c.each("ajaxStart
ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return
this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||
d;d=b;b=null}return
c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return
c.get(a,null,b,"script")},getJSON:function(a,b,d){return
c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||
d;d=b;b={}}return
c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"|
|!A.ActiveXObject)?function(){return
new
A.XMLHttpRequest}:function(){try{return new
A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml,
text/xml",html:"text/html",script:"text/javascript,
application/javascript",json:"application/json,
text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function
b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function
d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function
f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var
e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||
e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof
e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)|
|(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data|
|!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp|
|"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)|
|N.test(e.url))){j=e.jsonpCallback|
|"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]|
|function(q){o=q;b();d();A[j]=w;try{delete
A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var
r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol|
|r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var
z=s.getElementsByTagName("head")[0]||
s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var
B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||
this.readyState==="loaded"||
this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return
w}var
E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data|
|
a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r|
|
x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+",
*/*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return
false}e.global&&f("ajaxSend",[x,e]);var
g=x.onreadystatechange=function(q){if(!x|
|x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else
if(!E&&x&&(x.readyState===4||
q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var
p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"|
|i==="notmodified")j||b();else
c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var
h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"|
|
n==="PUT"||
n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||
g();return
x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||
a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"|
|a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return
false},httpNotModified:function(a,b){var
d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return
a.status===304||a.status===0},httpData:function(a,b,d){var
f=a.getResponseHeader("content-type")||"",e=b==="xml"|
|!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof
a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"|
|!b&&f.indexOf("javascript")>=0)c.globalEval(a);return
a},param:function(a,b){function
d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||
/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||
c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof
o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function
f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var
e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||
a.jquery)c.each(a,function(){f(
this.name,this.value)});else for(var j in
a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|
hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a|
|a===0)return
this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var
d=c.data(this[a],"olddisplay");
+this[a].style.display=d|
|"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var
f;if(la[d])f=la[d];else{var e=c("<"+d+"
/>").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")|
|"";return this}},hide:function(a,b){if(a||a===0)return
this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var
d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return
this}},_toggle:c.fn.toggle,toggle:function(a,b){var
d=typeof
a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else
a==null||d?this.each(function(){var
f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return
this},fadeTo:function(a,b,d){return
this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var
e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return
this[e.queue===false?"each":"queue"](function(){var
j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i
in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete
a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return
j.complete.call(this);if((i==="height"||
i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||
{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var
z=new
c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var
C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]|
|"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||
1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else
z.custom(B,u,"")}});return true})},stop:function(a,b){var
d=c.timers;a&&this.queue([]);
+this.each(function(){for(var
f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b|
|this.dequeue();return
this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return
this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof
a==="object"?a:{complete:d||!d&&b||
c.isFunction(a)&&a,duration:a,easing:d&&b||
b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||
c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return
f},easing:{linear:function(a,b,d,f){return
d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|
|
+c.fx.step._default)(this);if((this.prop==="height"||
this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style|
|this.elem.style[this.prop]==null))return
this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))|
|0},custom:function(a,b,d){function f(j){return
e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit|
|"px";this.now=this.start;
+this.pos=this.state=0;var
e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"|
|
this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var
b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var
f
in
this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide|
|this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return
false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing|
|
(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]|
|
a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return
true}};c.extend(c.fx,{tick:function(){for(var
a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"|
|
a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else
a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return
c.grep(c.timers,function(b){return
a===b.elem}).length};c.fn.offset="getBoundingClientRect"in
s.documentElement?
+function(a){var b=this[0];if(a)return
this.each(function(e){c.offset.setOffset(this,a,e)});if(!b|
|!b.ownerDocument)return null;if(b===b.ownerDocument.body)return
c.offset.bodyOffset(b);var
d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset|
|c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||
0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||
b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return
this.each(function(r){c.offset.setOffset(this,a,r)});if(!b|
|!b.ownerDocument)return null;if(b===b.ownerDocument.body)return
c.offset.bodyOffset(b);c.offset.initialize();var
d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var
k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|
d|
h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||
0;n+=parseFloat(j.borderLeftWidth)||
0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)|
|0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||
f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var
a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))|
|
0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div
style='position:absolute;top:0;left:0;margin:0;border:5px
solid
#000;padding:0;width:1px;height:1px;'><div></div></div><table
style='position:absolute;top:0;left:0;margin:0;border:5px solid
#000;padding:0;width:1px;height:1px;' cellpadding='0'
cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20|
|
f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var
b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))|
|0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||
0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var
f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||
0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in
b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return
null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|
html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))|
|0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||
0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||
0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||
0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return
this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|
html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return
a})}});c.each(["Left","Top"],function(a,b){var
d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return
null;if(f!==w)return
this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else
this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||
j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var
d=b.toLowerCase();c.fn["inner"+b]=function(){return
this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return
this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var
e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return
this.each(function(j){var
i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]|
|
e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof
f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
=======================================
--- /dev/null
+++ /media/js/prepopulate.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,34 @@
+(function($) {
+ $.fn.prepopulate = function(dependencies, maxLength) {
+ /*
+ Depends on urlify.js
+ Populates a selected field with the values of the dependent
fields,
+ URLifies and shortens the string.
+ dependencies - selected jQuery object of dependent fields
+ maxLength - maximum length of the URLify'd string
+ */
+ return this.each(function() {
+ var field = $(this);
+
+ field.data('_changed', false);
+ field.change(function() {
+ field.data('_changed', true);
+ });
+
+ var populate = function () {
+ // Bail if the fields value has changed
+ if (field.data('_changed') == true) return;
+
+ var values = [];
+ dependencies.each(function() {
+ if ($(this).val().length > 0) {
+ values.push($(this).val());
+ }
+ });
+ field.val(URLify(values.join(' '), maxLength));
+ };
+
+ dependencies.keyup(populate).change(populate).focus(populate);
+ });
+ };
+})(django.jQuery);
=======================================
--- /dev/null
+++ /media/js/prepopulate.min.js Wed Nov 24 03:43:56 2010
@@ -0,0 +1,1 @@
+(function(b){b.fn.prepopulate=function(d,f){return
this.each(function(){var
a=b(this);a.data("_changed",false);a.change(function(){a.data("_changed",true)});var
c=function(){if(a.data("_changed")!=true){var
e=[];d.each(function(){b(this).val().length>0&&e.push(b(this).val())});a.val(URLify(e.join(" "),f))}};d.keyup(c).change(c).focus(c)})}})(django.jQuery);
=======================================
--- /media/js/SelectFilter2.js Mon Feb 15 05:12:32 2010
+++ /media/js/SelectFilter2.js Wed Nov 24 03:43:56 2010
@@ -16,6 +16,10 @@
var SelectFilter = {
init: function(field_id, field_name, is_stacked, admin_media_prefix) {
+ if (field_id.match(/__prefix__/)){
+ // Don't intialize on empty forms.
+ return;
+ }
var from_box = document.getElementById(field_id);
from_box.id += '_from'; // change its ID
from_box.className = 'filtered';
=======================================
--- /media/js/admin/DateTimeShortcuts.js Mon Feb 15 05:12:32 2010
+++ /media/js/admin/DateTimeShortcuts.js Wed Nov 24 03:43:56 2010
@@ -11,17 +11,17 @@
calendarLinkName: 'calendarlink',// name of the link that is used to
toggle
clockDivName: 'clockbox', // name of clock <div> that gets
toggled
clockLinkName: 'clocklink', // name of the link that is used to
toggle
+ shortCutsClass: 'datetimeshortcuts', // class of the clock and cal
shortcuts
admin_media_prefix: '',
init: function() {
- // Deduce admin_media_prefix by looking at the <script>s in the
- // current document and finding the URL of *this* module.
- var scripts = document.getElementsByTagName('script');
- for (var i=0; i<scripts.length; i++) {
- if (scripts[i].src.match(/DateTimeShortcuts/)) {
- var idx =
scripts[i].src.indexOf('js/admin/DateTimeShortcuts');
- DateTimeShortcuts.admin_media_prefix =
scripts[i].src.substring(0, idx);
- break;
- }
+ // Get admin_media_prefix by grabbing it off the window object.
It's
+ // set in the admin/base.html template, so if it's not there,
someone's
+ // overridden the template. In that case, we'll set a
clearly-invalid
+ // value in the hopes that someone will examine HTTP requests and
see it.
+ if (window.__admin_media_prefix__ != undefined) {
+ DateTimeShortcuts.admin_media_prefix =
window.__admin_media_prefix__;
+ } else {
+ DateTimeShortcuts.admin_media_prefix
= '/missing-admin-media-prefix/';
}
var inputs = document.getElementsByTagName('input');
@@ -42,9 +42,10 @@
// Shortcut links (clock icon and "Now" link)
var shortcuts_span = document.createElement('span');
+ shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
var now_link = document.createElement('a');
-
now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date().getHourMinuteSecond());");
+
now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date().strftime('" + get_format('TIME_INPUT_FORMATS')[0]
+ "'));");
now_link.appendChild(document.createTextNode(gettext('Now')));
var clock_link = document.createElement('a');
clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' +
num + ');');
@@ -80,10 +81,11 @@
quickElement('h2', clock_box, gettext('Choose a time'));
time_list = quickElement('ul', clock_box, '');
time_list.className = 'timelist';
- quickElement("a", quickElement("li", time_list, ""),
gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date().getHourMinuteSecond());")
- quickElement("a", quickElement("li", time_list, ""),
gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", '00:00:00');")
- quickElement("a", quickElement("li", time_list, ""), gettext("6
a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num
+ ", '06:00:00');")
- quickElement("a", quickElement("li", time_list, ""),
gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", '12:00:00');")
+ time_format = get_format('TIME_INPUT_FORMATS')[0];
+ quickElement("a", quickElement("li", time_list, ""),
gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date().strftime('" + time_format + "'));");
+ quickElement("a", quickElement("li", time_list, ""),
gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date(1970,1,1,0,0,0,0).strftime('" + time_format + "'));");
+ quickElement("a", quickElement("li", time_list, ""), gettext("6
a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num
+ ", new Date(1970,1,1,6,0,0,0).strftime('" + time_format + "'));");
+ quickElement("a", quickElement("li", time_list, ""),
gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink("
+ num + ", new Date(1970,1,1,12,0,0,0).strftime('" + time_format + "'));");
cancel_p = quickElement('p', clock_box, '');
cancel_p.className = 'calendar-cancel';
@@ -109,14 +111,15 @@
// Show the clock box
clock_box.style.display = 'block';
- addEvent(window, 'click', function() {
DateTimeShortcuts.dismissClock(num); return true; });
+ addEvent(window.document, 'click', function() {
DateTimeShortcuts.dismissClock(num); return true; });
},
dismissClock: function(num) {
document.getElementById(DateTimeShortcuts.clockDivName +
num).style.display = 'none';
- window.onclick = null;
+ window.document.onclick = null;
},
handleClockQuicklink: function(num, val) {
DateTimeShortcuts.clockInputs[num].value = val;
+ DateTimeShortcuts.clockInputs[num].focus();
DateTimeShortcuts.dismissClock(num);
},
// Add calendar widget to a given field.
@@ -127,6 +130,7 @@
// Shortcut links (calendar icon and "Today" link)
var shortcuts_span = document.createElement('span');
+ shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
var today_link = document.createElement('a');
today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink('
+ num + ', 0);');
@@ -195,20 +199,19 @@
openCalendar: function(num) {
var cal_box =
document.getElementById(DateTimeShortcuts.calendarDivName1+num)
var cal_link =
document.getElementById(DateTimeShortcuts.calendarLinkName+num)
- var inp = DateTimeShortcuts.calendarInputs[num];
-
- // Determine if the current value in the input has a valid date.
- // If so, draw the calendar with that date's year and month.
- if (inp.value) {
- var date_parts = inp.value.split('-');
- var year = date_parts[0];
- var month = parseFloat(date_parts[1]);
- if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
- DateTimeShortcuts.calendars[num].drawDate(month, year);
- }
- }
-
-
+ var inp = DateTimeShortcuts.calendarInputs[num];
+
+ // Determine if the current value in the input has a valid date.
+ // If so, draw the calendar with that date's year and month.
+ if (inp.value) {
+ var date_parts = inp.value.split('-');
+ var year = date_parts[0];
+ var month = parseFloat(date_parts[1]);
+ if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
+ DateTimeShortcuts.calendars[num].drawDate(month, year);
+ }
+ }
+
// Recalculate the clockbox position
// is it left-to-right or right-to-left layout ?
if (getStyle(document.body,'direction')!='rtl') {
@@ -224,10 +227,11 @@
cal_box.style.top = findPosY(cal_link) - 75 + 'px';
cal_box.style.display = 'block';
- addEvent(window, 'click', function() {
DateTimeShortcuts.dismissCalendar(num); return true; });
+ addEvent(window.document, 'click', function() {
DateTimeShortcuts.dismissCalendar(num); return true; });
},
dismissCalendar: function(num) {
document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display
= 'none';
+ window.document.onclick = null;
},
drawPrev: function(num) {
DateTimeShortcuts.calendars[num].drawPreviousMonth();
@@ -236,12 +240,28 @@
DateTimeShortcuts.calendars[num].drawNextMonth();
},
handleCalendarCallback: function(num) {
- return "function(y, m, d) {
DateTimeShortcuts.calendarInputs["+num+"].value =
y+'-'+(m<10?'0':'')+m+'-'+(d<10?'0':'')+d;
document.getElementById(DateTimeShortcuts.calendarDivName1+"+num+").style.display='none';}";
+ format = get_format('DATE_INPUT_FORMATS')[0];
+ // the format needs to be escaped a little
+ format = format.replace('\\', '\\\\');
+ format = format.replace('\r', '\\r');
+ format = format.replace('\n', '\\n');
+ format = format.replace('\t', '\\t');
+ format = format.replace("'", "\\'");
+ return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[",
+ num,
+ "].value = new Date(y, m-1, d).strftime('",
+ format,
+ "');DateTimeShortcuts.calendarInputs[",
+ num,
+ "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+",
+ num,
+ ").style.display='none';}"].join('');
},
handleCalendarQuickLink: function(num, offset) {
var d = new Date();
d.setDate(d.getDate() + offset)
- DateTimeShortcuts.calendarInputs[num].value = d.getISODate();
+ DateTimeShortcuts.calendarInputs[num].value =
d.strftime(get_format('DATE_INPUT_FORMATS')[0]);
+ DateTimeShortcuts.calendarInputs[num].focus();
DateTimeShortcuts.dismissCalendar(num);
},
cancelEventPropagation: function(e) {
=======================================
--- /media/js/admin/RelatedObjectLookups.js Mon Feb 15 05:12:32 2010
+++ /media/js/admin/RelatedObjectLookups.js Wed Nov 24 03:43:56 2010
@@ -79,7 +79,11 @@
elem.options[elem.options.length] = o;
o.selected = true;
} else if (elem.nodeName == 'INPUT') {
- elem.value = newId;
+ if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1
&& elem.value) {
+ elem.value += ',' + newId;
+ } else {
+ elem.value = newId;
+ }
}
} else {
var toId = name + "_to";
=======================================
--- /media/js/calendar.js Mon Feb 15 05:12:32 2010
+++ /media/js/calendar.js Wed Nov 24 03:43:56 2010
@@ -25,6 +25,7 @@
var CalendarNamespace = {
monthsOfYear: gettext('January February March April May June July
August September October November December').split(' '),
daysOfWeek: gettext('S M T W T F S').split(' '),
+ firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
isLeapYear: function(year) {
return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
},
@@ -45,6 +46,12 @@
return days;
},
draw: function(month, year, div_id, callback) { // month = 1-12, year
= 1-9999
+ var today = new Date();
+ var todayDay = today.getDate();
+ var todayMonth = today.getMonth()+1;
+ var todayYear = today.getFullYear();
+ var todayClass = '';
+
month = parseInt(month);
year = parseInt(year);
var calDiv = document.getElementById(div_id);
@@ -56,10 +63,10 @@
// Draw days-of-week header
var tableRow = quickElement('tr', tableBody);
for (var i = 0; i < 7; i++) {
- quickElement('th', tableRow, CalendarNamespace.daysOfWeek[i]);
+ quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i +
CalendarNamespace.firstDayOfWeek) % 7]);
}
- var startingPos = new Date(year, month-1, 1).getDay();
+ var startingPos = new Date(year, month-1, 1 -
CalendarNamespace.firstDayOfWeek).getDay();
var days = CalendarNamespace.getDaysInMonth(month, year);
// Draw blanks before first of month
@@ -75,7 +82,13 @@
if (i%7 == 0 && currentDay != 1) {
tableRow = quickElement('tr', tableBody);
}
- var cell = quickElement('td', tableRow, '');
+ if ((currentDay==todayDay) && (month==todayMonth) &&
(year==todayYear)) {
+ todayClass='today';
+ } else {
+ todayClass='';
+ }
+ var cell = quickElement('td', tableRow, '', 'class',
todayClass);
+
quickElement('a', cell, currentDay, 'href', 'javascript:void('
+ callback + '('+year+','+month+','+currentDay+'));');
currentDay++;
}
=======================================
--- /media/js/core.js Mon Feb 15 05:12:32 2010
+++ /media/js/core.js Wed Nov 24 03:43:56 2010
@@ -78,7 +78,7 @@
curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
obj = obj.offsetParent;
}
- // IE offsetParent does not include the top-level
+ // IE offsetParent does not include the top-level
if (isIE && obj.parentElement){
curleft += obj.offsetLeft - obj.scrollLeft;
}
@@ -95,7 +95,7 @@
curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
obj = obj.offsetParent;
}
- // IE offsetParent does not include the top-level
+ // IE offsetParent does not include the top-level
if (isIE && obj.parentElement){
curtop += obj.offsetTop - obj.scrollTop;
}
@@ -114,6 +114,16 @@
var y = this.getYear() % 100;
return (y < 38) ? y + 2000 : y + 1900;
}
+
+Date.prototype.getTwelveHours = function() {
+ hours = this.getHours();
+ if (hours == 0) {
+ return 12;
+ }
+ else {
+ return hours <= 12 ? hours : hours-12
+ }
+}
Date.prototype.getTwoDigitMonth = function() {
return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) :
(this.getMonth()+1);
@@ -122,6 +132,10 @@
Date.prototype.getTwoDigitDate = function() {
return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
}
+
+Date.prototype.getTwoDigitTwelveHour = function() {
+ return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() :
this.getTwelveHours();
+}
Date.prototype.getTwoDigitHour = function() {
return (this.getHours() < 10) ? '0' + this.getHours() :
this.getHours();
@@ -146,6 +160,37 @@
Date.prototype.getHourMinuteSecond = function() {
return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' +
this.getTwoDigitSecond();
}
+
+Date.prototype.strftime = function(format) {
+ var fields = {
+ c: this.toString(),
+ d: this.getTwoDigitDate(),
+ H: this.getTwoDigitHour(),
+ I: this.getTwoDigitTwelveHour(),
+ m: this.getTwoDigitMonth(),
+ M: this.getTwoDigitMinute(),
+ p: (this.getHours() >= 12) ? 'PM' : 'AM',
+ S: this.getTwoDigitSecond(),
+ w: '0' + this.getDay(),
+ x: this.toLocaleDateString(),
+ X: this.toLocaleTimeString(),
+ y: ('' + this.getFullYear()).substr(2, 4),
+ Y: '' + this.getFullYear(),
+ '%' : '%'
+ };
+ var result = '', i = 0;
+ while (i < format.length) {
+ if (format.charAt(i) === '%') {
+ result = result + fields[format.charAt(i + 1)];
+ ++i;
+ }
+ else {
+ result = result + format.charAt(i);
+ }
+ ++i;
+ }
+ return result;
+}
//
----------------------------------------------------------------------------
// String object extensions
=======================================
--- /media/js/getElementsBySelector.js Mon Feb 15 05:12:32 2010
+++ /media/js/getElementsBySelector.js Wed Nov 24 03:43:56 2010
@@ -38,8 +38,8 @@
var tagName = bits[0];
var id = bits[1];
var element = document.getElementById(id);
- if (tagName && element.nodeName.toLowerCase() != tagName) {
- // tag with that ID not found, return false
+ if (!element || (tagName && element.nodeName.toLowerCase() !=
tagName)) {
+ // ID not found or tag with that ID not found, return false.
return new Array();
}
// Set currentContext to contain just this element
==============================================================================
Revision: c477fe834f
Author: surenspost
Date: Wed Nov 24 03:44:58 2010
Log: Updating CSS now. Same complaint, have to fix this instead of updating
our media directory everytime
http://code.google.com/p/codechecker/source/detail?r=c477fe834f
Added:
/media/css/ie.css
Modified:
/media/css/base.css
/media/css/changelists.css
/media/css/dashboard.css
/media/css/forms.css
/media/css/login.css
/media/css/rtl.css
/media/css/widgets.css
=======================================
--- /dev/null
+++ /media/css/ie.css Wed Nov 24 03:44:58 2010
@@ -0,0 +1,57 @@
+/* IE 6 & 7 */
+
+/* Proper fixed width for dashboard in IE6 */
+
+.dashboard #content {
+ *width: 768px;
+}
+
+.dashboard #content-main {
+ *width: 535px;
+}
+
+/* IE 6 ONLY */
+
+/* Keep header from flowing off the page */
+
+#container {
+ _position: static;
+}
+
+/* Put the right sidebars back on the page */
+
+.colMS #content-related {
+ _margin-right: 0;
+ _margin-left: 10px;
+ _position: static;
+}
+
+/* Put the left sidebars back on the page */
+
+.colSM #content-related {
+ _margin-right: 10px;
+ _margin-left: -115px;
+ _position: static;
+}
+
+.form-row {
+ _height: 1%;
+}
+
+/* Fix right margin for changelist filters in IE6 */
+
+#changelist-filter ul {
+ _margin-right: -10px;
+}
+
+/* IE ignores min-height, but treats height as if it were min-height */
+
+.change-list .filtered {
+ _height: 400px;
+}
+
+/* IE doesn't know alpha transparency in PNGs */
+
+.inline-deletelink {
+ background: transparent url(../img/admin/inline-delete-8bit.png)
no-repeat;
+}
=======================================
--- /media/css/base.css Mon Feb 15 05:12:32 2010
+++ /media/css/base.css Wed Nov 24 03:44:58 2010
@@ -1,14 +1,759 @@
/*
- DJANGO Admin
- by Wilson Miner
wil...@lawrence.com
+ DJANGO Admin styles
*/
-/* Block IE 5 */
-@import "null.css?\"\{";
-
-/* Import other styles */
-@import url('global.css');
-@import url('layout.css');
-
-/* Import patch for IE 6 Windows */
-/*\*/ @import "patch-iewin.css"; /**/
+body {
+ margin: 0;
+ padding: 0;
+ font-size: 12px;
+ font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera
Sans",Verdana,Arial,sans-serif;
+ color: #333;
+ background: #fff;
+}
+
+/* LINKS */
+
+a:link, a:visited {
+ color: #5b80b2;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #036;
+}
+
+a img {
+ border: none;
+}
+
+a.section:link, a.section:visited {
+ color: white;
+ text-decoration: none;
+}
+
+/* GLOBAL DEFAULTS */
+
+p, ol, ul, dl {
+ margin: .2em 0 .8em 0;
+}
+
+p {
+ padding: 0;
+ line-height: 140%;
+}
+
+h1,h2,h3,h4,h5 {
+ font-weight: bold;
+}
+
+h1 {
+ font-size: 18px;
+ color: #666;
+ padding: 0 6px 0 0;
+ margin: 0 0 .2em 0;
+}
+
+h2 {
+ font-size: 16px;
+ margin: 1em 0 .5em 0;
+}
+
+h2.subhead {
+ font-weight: normal;
+ margin-top: 0;
+}
+
+h3 {
+ font-size: 14px;
+ margin: .8em 0 .3em 0;
+ color: #666;
+ font-weight: bold;
+}
+
+h4 {
+ font-size: 12px;
+ margin: 1em 0 .8em 0;
+ padding-bottom: 3px;
+}
+
+h5 {
+ font-size: 10px;
+ margin: 1.5em 0 .5em 0;
+ color: #666;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+
+ul li {
+ list-style-type: square;
+ padding: 1px 0;
+}
+
+ul.plainlist {
+ margin-left: 0 !important;
+}
+
+ul.plainlist li {
+ list-style-type: none;
+}
+
+li ul {
+ margin-bottom: 0;
+}
+
+li, dt, dd {
+ font-size: 11px;
+ line-height: 14px;
+}
+
+dt {
+ font-weight: bold;
+ margin-top: 4px;
+}
+
+dd {
+ margin-left: 0;
+}
+
+form {
+ margin: 0;
+ padding: 0;
+}
+
+fieldset {
+ margin: 0;
+ padding: 0;
+}
+
+blockquote {
+ font-size: 11px;
+ color: #777;
+ margin-left: 2px;
+ padding-left: 10px;
+ border-left: 5px solid #ddd;
+}
+
+code, pre {
+ font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New",
Courier, monospace;
+ background: inherit;
+ color: #666;
+ font-size: 11px;
+}
+
+pre.literal-block {
+ margin: 10px;
+ background: #eee;
+ padding: 6px 8px;
+}
+
+code strong {
+ color: #930;
+}
+
+hr {
+ clear: both;
+ color: #eee;
+ background-color: #eee;
+ height: 1px;
+ border: none;
+ margin: 0;
+ padding: 0;
+ font-size: 1px;
+ line-height: 1px;
+}
+
+/* TEXT STYLES & MODIFIERS */
+
+.small {
+ font-size: 11px;
+}
+
+.tiny {
+ font-size: 10px;
+}
+
+p.tiny {
+ margin-top: -2px;
+}
+
+.mini {
+ font-size: 9px;
+}
+
+p.mini {
+ margin-top: -3px;
+}
+
+.help, p.help {
+ font-size: 10px !important;
+ color: #999;
+}
+
+p img, h1 img, h2 img, h3 img, h4 img, td img {
+ vertical-align: middle;
+}
+
+.quiet, a.quiet:link, a.quiet:visited {
+ color: #999 !important;
+ font-weight: normal !important;
+}
+
+.quiet strong {
+ font-weight: bold !important;
+}
+
+.float-right {
+ float: right;
+}
+
+.float-left {
+ float: left;
+}
+
+.clear {
+ clear: both;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-right {
+ text-align: right;
+}
+
+.example {
+ margin: 10px 0;
+ padding: 5px 10px;
+ background: #efefef;
+}
+
+.nowrap {
+ white-space: nowrap;
+}
+
+/* TABLES */
+
+table {
+ border-collapse: collapse;
+ border-color: #ccc;
+}
+
+td, th {
+ font-size: 11px;
+ line-height: 13px;
+ border-bottom: 1px solid #eee;
+ vertical-align: top;
+ padding: 5px;
+ font-family: "Lucida Grande", Verdana, Arial, sans-serif;
+}
+
+th {
+ text-align: left;
+ font-size: 12px;
+ font-weight: bold;
+}
+
+thead th,
+tfoot td {
+ color: #666;
+ padding: 2px 5px;
+ font-size: 11px;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
+ border-left: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+}
+
+tfoot td {
+ border-bottom: none;
+ border-top: 1px solid #ddd;
+}
+
+thead th:first-child,
+tfoot td:first-child {
+ border-left: none !important;
+}
+
+thead th.optional {
+ font-weight: normal !important;
+}
+
+fieldset table {
+ border-right: 1px solid #eee;
+}
+
+tr.row-label td {
+ font-size: 9px;
+ padding-top: 2px;
+ padding-bottom: 0;
+ border-bottom: none;
+ color: #666;
+ margin-top: -1px;
+}
+
+tr.alt {
+ background: #f6f6f6;
+}
+
+.row1 {
+ background: #EDF3FE;
+}
+
+.row2 {
+ background: white;
+}
+
+/* SORTABLE TABLES */
+
+thead th a:link, thead th a:visited {
+ color: #666;
+ display: block;
+}
+
+table thead th.sorted {
+ background-position: bottom left !important;
+}
+
+table thead th.sorted a {
+ padding-right: 13px;
+}
+
+table thead th.ascending a {
+ background: url(../img/admin/arrow-down.gif) right .4em no-repeat;
+}
+
+table thead th.descending a {
+ background: url(../img/admin/arrow-up.gif) right .4em no-repeat;
+}
+
+/* ORDERABLE TABLES */
+
+table.orderable tbody tr td:hover {
+ cursor: move;
+}
+
+table.orderable tbody tr td:first-child {
+ padding-left: 14px;
+ background-image: url(../img/admin/nav-bg-grabber.gif);
+ background-repeat: repeat-y;
+}
+
+table.orderable-initalized .order-cell, body>tr>td.order-cell {
+ display: none;
+}
+
+/* FORM DEFAULTS */
+
+input, textarea, select, .form-row p {
+ margin: 2px 0;
+ padding: 2px 3px;
+ vertical-align: middle;
+ font-family: "Lucida Grande", Verdana, Arial, sans-serif;
+ font-weight: normal;
+ font-size: 11px;
+}
+
+textarea {
+ vertical-align: top !important;
+}
+
+input[type=text], input[type=password], textarea, select, .vTextField {
+ border: 1px solid #ccc;
+}
+
+/* FORM BUTTONS */
+
+.button, input[type=submit], input[type=button], .submit-row input {
+ background: white url(../img/admin/nav-bg.gif) bottom repeat-x;
+ padding: 3px 5px;
+ color: black;
+ border: 1px solid #bbb;
+ border-color: #ddd #aaa #aaa #ddd;
+}
+
+.button:active, input[type=submit]:active, input[type=button]:active {
+ background-image: url(../img/admin/nav-bg-reverse.gif);
+ background-position: top;
+}
+
+.button.default, input[type=submit].default, .submit-row input.default {
+ border: 2px solid #5b80b2;
+ background: #7CA0C7 url(../img/admin/default-bg.gif) bottom repeat-x;
+ font-weight: bold;
+ color: white;
+ float: right;
+}
+
+.button.default:active, input[type=submit].default:active {
+ background-image: url(../img/admin/default-bg-reverse.gif);
+ background-position: top;
+}
+
+/* MODULES */
+
+.module {
+ border: 1px solid #ccc;
+ margin-bottom: 5px;
+ background: white;
+}
+
+.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+.module blockquote {
+ margin-left: 12px;
+}
+
+.module ul, .module ol {
+ margin-left: 1.5em;
+}
+
+.module h3 {
+ margin-top: .6em;
+}
+
+.module h2, .module caption, .inline-group h2 {
+ margin: 0;
+ padding: 2px 5px 3px 5px;
+ font-size: 11px;
+ text-align: left;
+ font-weight: bold;
+ background: #7CA0C7 url(../img/admin/default-bg.gif) top left repeat-x;
+ color: white;
+}
+
+.module table {
+ border-collapse: collapse;
+}
+
+/* MESSAGES & ERRORS */
+
+ul.messagelist {
+ padding: 0 0 5px 0;
+ margin: 0;
+}
+
+ul.messagelist li {
+ font-size: 12px;
+ display: block;
+ padding: 4px 5px 4px 25px;
+ margin: 0 0 3px 0;
+ border-bottom: 1px solid #ddd;
+ color: #666;
+ background: #ffc url(../img/admin/icon_success.gif) 5px .3em no-repeat;
+}
+
+ul.messagelist li.warning{
+ background-image: url(../img/admin/icon_alert.gif);
+}
+
+ul.messagelist li.error{
+ background-image: url(../img/admin/icon_error.gif);
+}
+
+.errornote {
+ font-size: 12px !important;
+ display: block;
+ padding: 4px 5px 4px 25px;
+ margin: 0 0 3px 0;
+ border: 1px solid red;
+ color: red;
+ background: #ffc url(../img/admin/icon_error.gif) 5px .3em no-repeat;
+}
+
+ul.errorlist {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+.errorlist li {
+ font-size: 12px !important;
+ display: block;
+ padding: 4px 5px 4px 25px;
+ margin: 0 0 3px 0;
+ border: 1px solid red;
+ color: white;
+ background: red url(../img/admin/icon_alert.gif) 5px .3em no-repeat;
+}
+
+.errorlist li a {
+ color: white;
+ text-decoration: underline;
+}
+
+td ul.errorlist {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+td ul.errorlist li {
+ margin: 0 !important;
+}
+
+.errors {
+ background: #ffc;
+}
+
+.errors input, .errors select {
+ border: 1px solid red;
+}
+
+div.system-message {
+ background: #ffc;
+ margin: 10px;
+ padding: 6px 8px;
+ font-size: .8em;
+}
+
+div.system-message p.system-message-title {
+ padding: 4px 5px 4px 25px;
+ margin: 0;
+ color: red;
+ background: #ffc url(../img/admin/icon_error.gif) 5px .3em no-repeat;
+}
+
+.description {
+ font-size: 12px;
+ padding: 5px 0 0 12px;
+}
+
+/* BREADCRUMBS */
+
+div.breadcrumbs {
+ background: white url(../img/admin/nav-bg-reverse.gif) 0 -10px
repeat-x;
+ padding: 2px 8px 3px 8px;
+ font-size: 11px;
+ color: #999;
+ border-top: 1px solid white;
+ border-bottom: 1px solid #ccc;
+ text-align: left;
+}
+
+/* ACTION ICONS */
+
+.addlink {
+ padding-left: 12px;
+ background: url(../img/admin/icon_addlink.gif) 0 .2em no-repeat;
+}
+
+.changelink {
+ padding-left: 12px;
+ background: url(../img/admin/icon_changelink.gif) 0 .2em no-repeat;
+}
+
+.deletelink {
+ padding-left: 12px;
+ background: url(../img/admin/icon_deletelink.gif) 0 .25em no-repeat;
+}
+
+a.deletelink:link, a.deletelink:visited {
+ color: #CC3434;
+}
+
+a.deletelink:hover {
+ color: #993333;
+}
+
+/* OBJECT TOOLS */
+
+.object-tools {
+ font-size: 10px;
+ font-weight: bold;
+ font-family: Arial,Helvetica,sans-serif;
+ padding-left: 0;
+ float: right;
+ position: relative;
+ margin-top: -2.4em;
+ margin-bottom: -2em;
+}
+
+.form-row .object-tools {
+ margin-top: 5px;
+ margin-bottom: 5px;
+ float: none;
+ height: 2em;
+ padding-left: 3.5em;
+}
+
+.object-tools li {
+ display: block;
+ float: left;
+ background: url(../img/admin/tool-left.gif) 0 0 no-repeat;
+ padding: 0 0 0 8px;
+ margin-left: 2px;
+ height: 16px;
+}
+
+.object-tools li:hover {
+ background: url(../img/admin/tool-left_over.gif) 0 0 no-repeat;
+}
+
+.object-tools a:link, .object-tools a:visited {
+ display: block;
+ float: left;
+ color: white;
+ padding: .1em 14px .1em 8px;
+ height: 14px;
+ background: #999 url(../img/admin/tool-right.gif) 100% 0 no-repeat;
+}
+
+.object-tools a:hover, .object-tools li:hover a {
+ background: #5b80b2 url(../img/admin/tool-right_over.gif) 100% 0
no-repeat;
+}
+
+.object-tools a.viewsitelink, .object-tools a.golink {
+ background: #999 url(../img/admin/tooltag-arrowright.gif) top right
no-repeat;
+ padding-right: 28px;
+}
+
+.object-tools a.viewsitelink:hover, .object-tools a.golink:hover {
+ background: #5b80b2 url(../img/admin/tooltag-arrowright_over.gif) top
right no-repeat;
+}
+
+.object-tools a.addlink {
+ background: #999 url(../img/admin/tooltag-add.gif) top right no-repeat;
+ padding-right: 28px;
+}
+
+.object-tools a.addlink:hover {
+ background: #5b80b2 url(../img/admin/tooltag-add_over.gif) top right
no-repeat;
+}
+
+/* OBJECT HISTORY */
+
+table#change-history {
+ width: 100%;
+}
+
+table#change-history tbody th {
+ width: 16em;
+}
+
+/* PAGE STRUCTURE */
+
+#container {
+ position: relative;
+ width: 100%;
+ min-width: 760px;
+ padding: 0;
+}
+
+#content {
+ margin: 10px 15px;
+}
+
+#header {
+ width: 100%;
+}
+
+#content-main {
+ float: left;
+ width: 100%;
+}
+
+#content-related {
+ float: right;
+ width: 18em;
+ position: relative;
+ margin-right: -19em;
+}
+
+#footer {
+ clear: both;
+ padding: 10px;
+}
+
+/* COLUMN TYPES */
+
+.colMS {
+ margin-right: 20em !important;
+}
+
+.colSM {
+ margin-left: 20em !important;
+}
+
+.colSM #content-related {
+ float: left;
+ margin-right: 0;
+ margin-left: -19em;
+}
+
+.colSM #content-main {
+ float: right;
+}
+
+.popup .colM {
+ width: 95%;
+}
+
+.subcol {
+ float: left;
+ width: 46%;
+ margin-right: 15px;
+}
+
+.dashboard #content {
+ width: 500px;
+}
+
+/* HEADER */
+
+#header {
+ background: #417690;
+ color: #ffc;
+ overflow: hidden;
+}
+
+#header a:link, #header a:visited {
+ color: white;
+}
+
+#header a:hover {
+ text-decoration: underline;
+}
+
+#branding h1 {
+ padding: 0 10px;
+ font-size: 18px;
+ margin: 8px 0;
+ font-weight: normal;
+ color: #f4f379;
+}
+
+#branding h2 {
+ padding: 0 10px;
+ font-size: 14px;
+ margin: -8px 0 8px 0;
+ font-weight: normal;
+ color: #ffc;
+}
+
+#user-tools {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 1.2em 10px;
+ font-size: 11px;
+ text-align: right;
+}
+
+/* SIDEBAR */
+
+#content-related h3 {
+ font-size: 12px;
+ color: #666;
+ margin-bottom: 3px;
+}
+
+#content-related h4 {
+ font-size: 11px;
+}
+
+#content-related .module h2 {
+ background: #eee url(../img/admin/nav-bg.gif) bottom left repeat-x;
+ color: #666;
+}
+
=======================================
--- /media/css/changelists.css Mon Feb 15 05:12:32 2010
+++ /media/css/changelists.css Wed Nov 24 03:44:58 2010
@@ -1,50 +1,286 @@
-@import url('base.css');
-
/* CHANGELISTS */
-#changelist { position:relative; width:100%; }
-#changelist table { width:100%; }
-.change-list .filtered table { border-right:1px solid #ddd; }
-.change-list .filtered { min-height:400px; }
-.change-list .filtered { background:white
url(../img/admin/changelist-bg.gif) top right repeat-y !important; }
-.change-list .filtered table, .change-list .filtered .paginator, .filtered
#toolbar, .filtered div.xfull { margin-right:160px !important;
width:auto !important; }
-.change-list .filtered table tbody th { padding-right:1em; }
-#changelist .toplinks { border-bottom:1px solid #ccc !important; }
-#changelist .paginator { color:#666; border-top:1px solid #eee;
border-bottom:1px solid #eee; background:white url(../img/admin/nav-bg.gif)
0 180% repeat-x; overflow:hidden; }
-.change-list .filtered .paginator { border-right:1px solid #ddd; }
-
-/* CHANGELIST TABLES */
-#changelist table thead th { white-space:nowrap; }
-#changelist table tbody td { border-left: 1px solid #ddd; }
-#changelist table tfoot { color: #666; }
-
-/* TOOLBAR */
-#changelist #toolbar { padding:3px; border-bottom:1px solid #ddd;
background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
color:#666; }
-#changelist #toolbar form input { font-size:11px; padding:1px 2px; }
-#changelist #toolbar form #searchbar { padding:2px; }
-#changelist #changelist-search img { vertical-align:middle; }
-
-/* FILTER COLUMN */
-#changelist-filter { position:absolute; top:0; right:0; z-index:1000;
width:160px; border-left:1px solid #ddd; background:#efefef; margin:0; }
-#changelist-filter h2 { font-size:11px; padding:2px 5px; border-bottom:1px
solid #ddd; }
-#changelist-filter h3 { font-size:12px; margin-bottom:0; }
-#changelist-filter ul { padding-left:0;margin-left:10px; }
-#changelist-filter li { list-style-type:none; margin-left:0;
padding-left:0; }
-#changelist-filter a { color:#999; }
-#changelist-filter a:hover { color:#036; }
-#changelist-filter li.selected { border-left:5px solid #ccc;
padding-left:5px;margin-left:-10px; }
-#changelist-filter li.selected a { color:#5b80b2 !important; }
-
-/* DATE DRILLDOWN */
-.change-list ul.toplinks { display:block; background:white
url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; border-top:1px solid
white; float:left; padding:0 !important; margin:0 !important; width:100%;
}
-.change-list ul.toplinks li { float: left; width: 9em; padding:3px 6px;
font-weight: bold; list-style-type:none; }
-.change-list ul.toplinks .date-back a { color:#999; }
-.change-list ul.toplinks .date-back a:hover { color:#036; }
+
+#changelist {
+ position: relative;
+ width: 100%;
+}
+
+#changelist table {
+ width: 100%;
+}
+
+.change-list .hiddenfields { display:none; }
+
+.change-list .filtered table {
+ border-right: 1px solid #ddd;
+}
+
+.change-list .filtered {
+ min-height: 400px;
+}
+
+.change-list .filtered {
+ background: white url(../img/admin/changelist-bg.gif) top right
repeat-y !important;
+}
+
+.change-list .filtered table, .change-list .filtered .paginator, .filtered
#toolbar, .filtered div.xfull {
+ margin-right: 160px !important;
+ width: auto !important;
+}
+
+.change-list .filtered table tbody th {
+ padding-right: 1em;
+}
+
+#changelist .toplinks {
+ border-bottom: 1px solid #ccc !important;
+}
+
+#changelist .paginator {
+ color: #666;
+ border-top: 1px solid #eee;
+ border-bottom: 1px solid #eee;
+ background: white url(../img/admin/nav-bg.gif) 0 180% repeat-x;
+ overflow: hidden;
+}
+
+.change-list .filtered .paginator {
+ border-right: 1px solid #ddd;
+}
+
+/* CHANGELIST TABLES */
+
+#changelist table thead th {
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+#changelist table thead th.action-checkbox-column {
+ width: 1.5em;
+ text-align: center;
+}
+
+#changelist table tbody td {
+ border-left: 1px solid #ddd;
+}
+
+#changelist table tbody td:first-child {
+ border-left: 0;
+ border-right: 1px solid #ddd;
+ text-align: center;
+}
+
+#changelist table tfoot {
+ color: #666;
+}
+
+/* TOOLBAR */
+
+#changelist #toolbar {
+ padding: 3px;
+ border-bottom: 1px solid #ddd;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
+ color: #666;
+}
+
+#changelist #toolbar form input {
+ font-size: 11px;
+ padding: 1px 2px;
+}
+
+#changelist #toolbar form #searchbar {
+ padding: 2px;
+}
+
+#changelist #changelist-search img {
+ vertical-align: middle;
+}
+
+/* FILTER COLUMN */
+
+#changelist-filter {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 1000;
+ width: 160px;
+ border-left: 1px solid #ddd;
+ background: #efefef;
+ margin: 0;
+}
+
+#changelist-filter h2 {
+ font-size: 11px;
+ padding: 2px 5px;
+ border-bottom: 1px solid #ddd;
+}
+
+#changelist-filter h3 {
+ font-size: 12px;
+ margin-bottom: 0;
+}
+
+#changelist-filter ul {
+ padding-left: 0;
+ margin-left: 10px;
+}
+
+#changelist-filter li {
+ list-style-type: none;
+ margin-left: 0;
+ padding-left: 0;
+}
+
+#changelist-filter a {
+ color: #999;
+}
+
+#changelist-filter a:hover {
+ color: #036;
+}
+
+#changelist-filter li.selected {
+ border-left: 5px solid #ccc;
+ padding-left: 5px;
+ margin-left: -10px;
+}
+
+#changelist-filter li.selected a {
+ color: #5b80b2 !important;
+}
+
+/* DATE DRILLDOWN */
+
+.change-list ul.toplinks {
+ display: block;
+ background: white url(../img/admin/nav-bg-reverse.gif) 0 -10px
repeat-x;
+ border-top: 1px solid white;
+ float: left;
+ padding: 0 !important;
+ margin: 0 !important;
+ width: 100%;
+}
+
+.change-list ul.toplinks li {
+ float: left;
+ width: 9em;
+ padding: 3px 6px;
+ font-weight: bold;
+ list-style-type: none;
+}
+
+.change-list ul.toplinks .date-back a {
+ color: #999;
+}
+
+.change-list ul.toplinks .date-back a:hover {
+ color: #036;
+}
/* PAGINATOR */
-.paginator { font-size:11px; padding-top:10px; padding-bottom:10px;
line-height:22px; margin:0; border-top:1px solid #ddd; }
-.paginator a:link, .paginator a:visited { padding:2px 6px; border:solid
1px #ccc; background:white; text-decoration:none; }
-.paginator a.showall { padding:0 !important; border:none !important; }
-.paginator a.showall:hover { color:#036 !important;
background:transparent !important; }
-.paginator .end { border-width:2px !important; margin-right:6px; }
-.paginator .this-page { padding:2px 6px; font-weight:bold; font-size:13px;
vertical-align:top; }
-.paginator a:hover { color:white; background:#5b80b2; border-color:#036; }
+
+.paginator {
+ font-size: 11px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 22px;
+ margin: 0;
+ border-top: 1px solid #ddd;
+}
+
+.paginator a:link, .paginator a:visited {
+ padding: 2px 6px;
+ border: solid 1px #ccc;
+ background: white;
+ text-decoration: none;
+}
+
+.paginator a.showall {
+ padding: 0 !important;
+ border: none !important;
+}
+
+.paginator a.showall:hover {
+ color: #036 !important;
+ background: transparent !important;
+}
+
+.paginator .end {
+ border-width: 2px !important;
+ margin-right: 6px;
+}
+
+.paginator .this-page {
+ padding: 2px 6px;
+ font-weight: bold;
+ font-size: 13px;
+ vertical-align: top;
+}
+
+.paginator a:hover {
+ color: white;
+ background: #5b80b2;
+ border-color: #036;
+}
+
+/* ACTIONS */
+
+.filtered .actions {
+ margin-right: 160px !important;
+ border-right: 1px solid #ddd;
+}
+
+#changelist table input {
+ margin: 0;
+}
+
+#changelist table tbody tr.selected {
+ background-color: #FFFFCC;
+}
+
+#changelist .actions {
+ color: #999;
+ padding: 3px;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #ddd;
+ background: white url(../img/admin/nav-bg-reverse.gif) 0 -10px
repeat-x;
+}
+
+#changelist .actions.selected {
+ background: #fffccf;
+ border-top: 1px solid #fffee8;
+ border-bottom: 1px solid #edecd6;
+}
+
+#changelist .actions span.all,
+#changelist .actions span.action-counter,
+#changelist .actions span.clear,
+#changelist .actions span.question {
+ font-size: 11px;
+ margin: 0 0.5em;
+ display: none;
+}
+
+#changelist .actions:last-child {
+ border-bottom: none;
+}
+
+#changelist .actions select {
+ border: 1px solid #aaa;
+ margin-left: 0.5em;
+ padding: 1px 2px;
+}
+
+#changelist .actions label {
+ font-size: 11px;
+ margin-left: 0.5em;
+}
+
+#changelist #action-toggle {
+ display: none;
+}
+
+#changelist .actions .button {
+ font-size: 11px;
+ padding: 1px 2px;
+}
=======================================
--- /media/css/dashboard.css Mon Feb 15 05:12:32 2010
+++ /media/css/dashboard.css Wed Nov 24 03:44:58 2010
@@ -1,10 +1,24 @@
-@import url('base.css');
-
/* DASHBOARD */
-.dashboard .module table th { width:100%; }
-.dashboard .module table td { white-space:nowrap; }
-.dashboard .module table td a { display:block; padding-right:.6em; }
-
-/* RECENT ACTIONS MODULE */
-.module ul.actionlist { margin-left:0; }
-ul.actionlist li { list-style-type:none; }
+
+.dashboard .module table th {
+ width: 100%;
+}
+
+.dashboard .module table td {
+ white-space: nowrap;
+}
+
+.dashboard .module table td a {
+ display: block;
+ padding-right: .6em;
+}
+
+/* RECENT ACTIONS MODULE */
+
+.module ul.actionlist {
+ margin-left: 0;
+}
+
+ul.actionlist li {
+ list-style-type: none;
+}
=======================================
--- /media/css/forms.css Mon Feb 15 05:12:32 2010
+++ /media/css/forms.css Wed Nov 24 03:44:58 2010
@@ -1,84 +1,354 @@
-@import url('base.css');
@import url('widgets.css');
/* FORM ROWS */
-.form-row { overflow:hidden; padding:8px 12px; font-size:11px;
border-bottom:1px solid #eee; }
-.form-row img, .form-row input { vertical-align:middle; }
-form .form-row p { padding-left:0; font-size:11px; }
+
+.form-row {
+ overflow: hidden;
+ padding: 8px 12px;
+ font-size: 11px;
+ border-bottom: 1px solid #eee;
+}
+
+.form-row img, .form-row input {
+ vertical-align: middle;
+}
+
+form .form-row p {
+ padding-left: 0;
+ font-size: 11px;
+}
/* FORM LABELS */
-form h4 { margin:0 !important; padding:0 !important;
border:none !important; }
-label { font-weight:normal !important; color:#666; font-size:12px; }
-.required label, label.required { font-weight:bold !important;
color:#333 !important; }
+
+form h4 {
+ margin: 0 !important;
+ padding: 0 !important;
+ border: none !important;
+}
+
+label {
+ font-weight: normal !important;
+ color: #666;
+ font-size: 12px;
+}
+
+.required label, label.required {
+ font-weight: bold !important;
+ color: #333 !important;
+}
/* RADIO BUTTONS */
-form ul.radiolist li { list-style-type:none; }
-form ul.radiolist label { float:none; display:inline; }
-form ul.inline { margin-left:0; padding:0; }
-form ul.inline li { float:left; padding-right:7px; }
+
+form ul.radiolist li {
+ list-style-type: none;
+}
+
+form ul.radiolist label {
+ float: none;
+ display: inline;
+}
+
+form ul.inline {
+ margin-left: 0;
+ padding: 0;
+}
+
+form ul.inline li {
+ float: left;
+ padding-right: 7px;
+}
/* ALIGNED FIELDSETS */
-.aligned label { display:block; padding:3px 10px 0 0; float:left;
width:8em; }
-.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
width:350px; }
-form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; }
-form .aligned table p { margin-left:0; padding-left:0; }
-form .aligned p.help { padding-left:38px; }
-.aligned .vCheckboxLabel { float:none !important; display:inline;
padding-left:4px; }
-.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
width:610px; }
-.checkbox-row p.help { margin-left:0; padding-left:0 !important; }
-fieldset .field-box { float:left; margin-right: 20px; }
+
+.aligned label {
+ display: block;
+ padding: 3px 10px 0 0;
+ float: left;
+ width: 8em;
+}
+
+.aligned ul label {
+ display: inline;
+ float: none;
+ width: auto;
+}
+
+.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
+ width: 350px;
+}
+
+form .aligned p, form .aligned ul {
+ margin-left: 7em;
+ padding-left: 30px;
+}
+
+form .aligned table p {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+form .aligned p.help {
+ padding-left: 38px;
+}
+
+.aligned .vCheckboxLabel {
+ float: none !important;
+ display: inline;
+ padding-left: 4px;
+}
+
+.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
+ width: 610px;
+}
+
+.checkbox-row p.help {
+ margin-left: 0;
+ padding-left: 0 !important;
+}
+
+fieldset .field-box {
+ float: left;
+ margin-right: 20px;
+}
/* WIDE FIELDSETS */
-.wide label { width:15em !important; }
-form .wide p { margin-left:15em; }
-form .wide p.help { padding-left:38px; }
-.colM fieldset.wide .vLargeTextField, .colM
fieldset.wide .vXMLLargeTextField { width:450px; }
+
+.wide label {
+ width: 15em !important;
+}
+
+form .wide p {
+ margin-left: 15em;
+}
+
+form .wide p.help {
+ padding-left: 38px;
+}
+
+.colM fieldset.wide .vLargeTextField, .colM
fieldset.wide .vXMLLargeTextField {
+ width: 450px;
+}
/* COLLAPSED FIELDSETS */
-fieldset.collapsed * { display:none; }
-fieldset.collapsed h2, fieldset.collapsed { display:block !important; }
-fieldset.collapsed h2 { background-image:url(../img/admin/nav-bg.gif);
background-position:bottom left; color:#999; }
-fieldset.collapsed .collapse-toggle { padding:3px 5px !important;
background:transparent; display:inline !important;}
+
+fieldset.collapsed * {
+ display: none;
+}
+
+fieldset.collapsed h2, fieldset.collapsed {
+ display: block !important;
+}
+
+fieldset.collapsed h2 {
+ background-image: url(../img/admin/nav-bg.gif);
+ background-position: bottom left;
+ color: #999;
+}
+
+fieldset.collapsed .collapse-toggle {
+ background: transparent;
+ display: inline !important;
+}
/* MONOSPACE TEXTAREAS */
-fieldset.monospace textarea { font-family:"Bitstream Vera Sans
Mono",Monaco,"Courier New",Courier,monospace; }
+
+fieldset.monospace textarea {
+ font-family: "Bitstream Vera Sans Mono",Monaco,"Courier
New",Courier,monospace;
+}
/* SUBMIT ROW */
-.submit-row { padding:5px 7px; text-align:right; background:white
url(../img/admin/nav-bg.gif) 0 100% repeat-x; border:1px solid #ccc;
margin:5px 0; overflow:hidden; }
-.submit-row input { margin:0 0 0 5px; }
-.submit-row p { margin:0.3em; }
-.submit-row p.deletelink-box { float: left; }
-.submit-row .deletelink { background:url(../img/admin/icon_deletelink.gif)
0 50% no-repeat; padding-left:14px; }
+
+.submit-row {
+ padding: 5px 7px;
+ text-align: right;
+ background: white url(../img/admin/nav-bg.gif) 0 100% repeat-x;
+ border: 1px solid #ccc;
+ margin: 5px 0;
+ overflow: hidden;
+}
+
+.submit-row input {
+ margin: 0 0 0 5px;
+}
+
+.submit-row p {
+ margin: 0.3em;
+}
+
+.submit-row p.deletelink-box {
+ float: left;
+}
+
+.submit-row .deletelink {
+ background: url(../img/admin/icon_deletelink.gif) 0 50% no-repeat;
+ padding-left: 14px;
+}
/* CUSTOM FORM FIELDS */
-.vSelectMultipleField { vertical-align:top !important; }
-.vCheckboxField { border:none; }
-.vDateField, .vTimeField { margin-right:2px; }
-.vURLField { width:30em; }
-.vLargeTextField, .vXMLLargeTextField { width:48em; }
-.flatpages-flatpage #id_content { height:40.2em; }
-.module table .vPositiveSmallIntegerField { width:2.2em; }
-.vTextField { width:20em; }
-.vIntegerField { width:5em; }
-.vForeignKeyRawIdAdminField { width: 5em; }
+
+.vSelectMultipleField {
+ vertical-align: top !important;
+}
+
+.vCheckboxField {
+ border: none;
+}
+
+.vDateField, .vTimeField {
+ margin-right: 2px;
+}
+
+.vURLField {
+ width: 30em;
+}
+
+.vLargeTextField, .vXMLLargeTextField {
+ width: 48em;
+}
+
+.flatpages-flatpage #id_content {
+ height: 40.2em;
+}
+
+.module table .vPositiveSmallIntegerField {
+ width: 2.2em;
+}
+
+.vTextField {
+ width: 20em;
+}
+
+.vIntegerField {
+ width: 5em;
+}
+
+.vForeignKeyRawIdAdminField {
+ width: 5em;
+}
/* INLINES */
-.inline-group {padding:0; border:1px solid #ccc; margin:10px 0;}
-.inline-group .aligned label { width: 8em; }
-
-.inline-related {position:relative;}
-.inline-related h3 {margin: 0; color:#666; padding:3px 5px;
font-size:11px; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left
repeat-x; border-bottom:1px solid #ddd;}
-.inline-related h3 span.delete {padding-left:20px; position:absolute;
top:2px; right:10px;}
-.inline-related h3 span.delete label {margin-left:2px; font-size: 11px;}
-.inline-related fieldset {margin: 0; background:#fff; border: none; }
-.inline-related fieldset.module h3 { margin:0; padding:2px 5px 3px 5px;
font-size:11px; text-align:left; font-weight:bold; background:#bcd;
color:#fff; }
-.inline-related.tabular fieldset.module table {width:100%;}
-.last-related fieldset {border: none;}
-
-.inline-group .tabular tr.has_original td {padding-top:2em;}
-.inline-group .tabular tr td.original { padding:2px 0 0 0; width:0;
_position:relative; }
-.inline-group .tabular th.original {width:0px; padding:0;}
-.inline-group .tabular td.original p {position:absolute; left:0;
height:1.1em; padding:2px 7px; overflow:hidden; font-size:9px;
font-weight:bold; color:#666; _width:700px; }
-.inline-group ul.tools {padding:0; margin: 0; list-style:none;}
-.inline-group ul.tools li {display:inline; padding:0 5px;}
-.inline-group ul.tools a.add
{background:url(../img/admin/icon_addlink.gif) 0 50% no-repeat;
padding-left:14px;}
+
+.inline-group {
+ padding: 0;
+ border: 1px solid #ccc;
+ margin: 10px 0;
+}
+
+.inline-group .aligned label {
+ width: 8em;
+}
+
+.inline-related {
+ position: relative;
+}
+
+.inline-related h3 {
+ margin: 0;
+ color: #666;
+ padding: 3px 5px;
+ font-size: 11px;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
+ border-bottom: 1px solid #ddd;
+}
+
+.inline-related h3 span.delete {
+ float: right;
+}
+
+.inline-related h3 span.delete label {
+ margin-left: 2px;
+ font-size: 11px;
+}
+
+.inline-related fieldset {
+ margin: 0;
+ background: #fff;
+ border: none;
+}
+
+.inline-related fieldset.module h3 {
+ margin: 0;
+ padding: 2px 5px 3px 5px;
+ font-size: 11px;
+ text-align: left;
+ font-weight: bold;
+ background: #bcd;
+ color: #fff;
+}
+
+.inline-group .tabular fieldset.module {
+ border: none;
+ border-bottom: 1px solid #ddd;
+}
+
+.inline-related.tabular fieldset.module table {
+ width: 100%;
+}
+
+.last-related fieldset {
+ border: none;
+}
+
+.inline-group .tabular tr.has_original td {
+ padding-top: 2em;
+}
+
+.inline-group .tabular tr td.original {
+ padding: 2px 0 0 0;
+ width: 0;
+ _position: relative;
+}
+
+.inline-group .tabular th.original {
+ width: 0px;
+ padding: 0;
+}
+
+.inline-group .tabular td.original p {
+ position: absolute;
+ left: 0;
+ height: 1.1em;
+ padding: 2px 7px;
+ overflow: hidden;
+ font-size: 9px;
+ font-weight: bold;
+ color: #666;
+ _width: 700px;
+}
+
+.inline-group ul.tools {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+.inline-group ul.tools li {
+ display: inline;
+ padding: 0 5px;
+}
+
+.inline-group div.add-row,
+.inline-group .tabular tr.add-row td {
+ color: #666;
+ padding: 3px 5px;
+ border-bottom: 1px solid #ddd;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
+}
+
+.inline-group .tabular tr.add-row td {
+ padding: 4px 5px 3px;
+ border-bottom: none;
+}
+
+.inline-group ul.tools a.add,
+.inline-group div.add-row a,
+.inline-group .tabular tr.add-row td a {
+ background: url(../img/admin/icon_addlink.gif) 0 50% no-repeat;
+ padding-left: 14px;
+ font-size: 11px;
+ outline: 0; /* Remove dotted border around link */
+}
+
+.empty-form {
+ display: none;
+}
=======================================
--- /media/css/login.css Mon Feb 15 05:12:32 2010
+++ /media/css/login.css Wed Nov 24 03:44:58 2010
@@ -1,13 +1,54 @@
-@import url('base.css');
-@import url('layout.css');
-
/* LOGIN FORM */
-body.login { background:#eee; }
-.login #container { background:white; border:1px solid #ccc; width:28em;
min-width:300px; margin-left:auto; margin-right:auto; margin-top:100px; }
-.login #content-main { width:100%; }
-.login form { margin-top:1em; }
-.login .form-row { padding:4px 0; float:left; width:100%; }
-.login .form-row label { float:left; width:9em; padding-right:0.5em;
line-height:2em; text-align:right; font-size:1em; color:#333; }
-.login .form-row #id_username, .login .form-row #id_password { width:14em;
}
-.login span.help { font-size:10px; display:block; }
-.login .submit-row { clear:both; padding:1em 0 0 9.4em; }
+
+body.login {
+ background: #eee;
+}
+
+.login #container {
+ background: white;
+ border: 1px solid #ccc;
+ width: 28em;
+ min-width: 300px;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 100px;
+}
+
+.login #content-main {
+ width: 100%;
+}
+
+.login form {
+ margin-top: 1em;
+}
+
+.login .form-row {
+ padding: 4px 0;
+ float: left;
+ width: 100%;
+}
+
+.login .form-row label {
+ float: left;
+ width: 9em;
+ padding-right: 0.5em;
+ line-height: 2em;
+ text-align: right;
+ font-size: 1em;
+ color: #333;
+}
+
+.login .form-row #id_username, .login .form-row #id_password {
+ width: 14em;
+}
+
+.login span.help {
+ font-size: 10px;
+ display: block;
+}
+
+.login .submit-row {
+ clear: both;
+ padding: 1em 0 0 9.4em;
+}
+
=======================================
--- /media/css/rtl.css Mon Feb 15 05:12:32 2010
+++ /media/css/rtl.css Wed Nov 24 03:44:58 2010
@@ -1,56 +1,217 @@
-body { direction: rtl; }
-
-/* login styles */
-
-.login .form-row { float:right; }
-.login .form-row label { float:right; padding-left:0.5em; padding-right:0;
text-align:left;}
-.login .submit-row { clear:both; padding:1em 9.4em 0 0; }
-
-
-/* global styles */
-th { text-align: right; }
-.module h2, .module caption { text-align: right; }
-.addlink, .changelink { padding-left:0px; padding-right:12px;
background-position:100% 0.2em; }
-.deletelink { padding-left:0px; padding-right:12px;
background-position:100% 0.25em; }
-.object-tools { float:left; }
-
-
-/* layout styles */
-#user-tools { right:auto; left:0; text-align:left; }
-div.breadcrumbs { text-align:right; }
-#content-main { float:right;}
-#content-related { float:left; margin-left:-19em; margin-right:auto;}
-.colMS { margin-left:20em !important; margin-right:10px !important;}
+body {
+ direction: rtl;
+}
+
+/* LOGIN */
+
+.login .form-row {
+ float: right;
+}
+
+.login .form-row label {
+ float: right;
+ padding-left: 0.5em;
+ padding-right: 0;
+ text-align: left;
+}
+
+.login .submit-row {
+ clear: both;
+ padding: 1em 9.4em 0 0;
+}
+
+/* GLOBAL */
+
+th {
+ text-align: right;
+}
+
+.module h2, .module caption {
+ text-align: right;
+}
+
+.addlink, .changelink {
+ padding-left: 0px;
+ padding-right: 12px;
+ background-position: 100% 0.2em;
+}
+
+.deletelink {
+ padding-left: 0px;
+ padding-right: 12px;
+ background-position: 100% 0.25em;
+}
+
+.object-tools {
+ float: left;
+}
+
+/* LAYOUT */
+
+#user-tools {
+ right: auto;
+ left: 0;
+ text-align: left;
+}
+
+div.breadcrumbs {
+ text-align: right;
+}
+
+#content-main {
+ float: right;
+}
+
+#content-related {
+ float: left;
+ margin-left: -19em;
+ margin-right: auto;
+}
+
+.colMS {
+ margin-left: 20em !important;
+ margin-right: 10px !important;
+}
/* dashboard styles */
-.dashboard .module table td a { padding-left:.6em; padding-right:12px; }
+
+.dashboard .module table td a {
+ padding-left: .6em;
+ padding-right: 12px;
+}
/* changelists styles */
-.change-list .filtered { background:white
url(../img/admin/changelist-bg_rtl.gif) top left repeat-y !important; }
-.change-list .filtered table { border-left:1px solid #ddd;
border-right:0px none; }
-#changelist-filter { right:auto; left:0; border-left:0px none;
border-right:1px solid #ddd;}
-.change-list .filtered table, .change-list .filtered .paginator, .filtered
#toolbar, .filtered div.xfull { margin-right:0px !important;
margin-left:160px !important; }
-#changelist-filter li.selected { border-left:0px none; padding-left:0px;
margin-left:0; border-right:5px solid #ccc;
padding-right:5px;margin-right:-10px; }
-
-/* form styles */
-.aligned label { padding:0 0 3px 1em; float:right; }
-.submit-row { text-align: left }
-.submit-row p.deletelink-box { float: right;}
-.submit-row .deletelink { background:url(../img/admin/icon_deletelink.gif)
0 50% no-repeat; padding-right:14px; }
-.vDateField, .vTimeField { margin-left:2px; }
-form ul.inline li { float:right; padding-right:0; padding-left:7px; }
-input[type=submit].default, .submit-row input.default { float:left; }
-fieldset .field-box { float:right; margin-left: 20px; }
-.errorlist li {background-position: 100% .3em; padding: 4px 25px 4px 5px; }
-.errornote {background-position: 100% .3em; padding: 4px 25px 4px 5px;
-
-/* widget styles */
-.calendarnav-previous { top:0; left:auto; right:0; }
-.calendarnav-next { top:0; right:auto; left:0;}
-.calendar caption, .calendarbox h2 { text-align:center; }
-
-.selector { float: right;}
-.selector .selector-filter { text-align: right;}
-
-/* x unsorted */
-.inline-related h2 { text-align:right }
+
+.change-list .filtered {
+ background: white url(../img/admin/changelist-bg_rtl.gif) top left
repeat-y !important;
+}
+
+.change-list .filtered table {
+ border-left: 1px solid #ddd;
+ border-right: 0px none;
+}
+
+#changelist-filter {
+ right: auto;
+ left: 0;
+ border-left: 0px none;
+ border-right: 1px solid #ddd;
+}
+
+.change-list .filtered table, .change-list .filtered .paginator, .filtered
#toolbar, .filtered div.xfull {
+ margin-right: 0px !important;
+ margin-left: 160px !important;
+}
+
+#changelist-filter li.selected {
+ border-left: 0px none;
+ padding-left: 0px;
+ margin-left: 0;
+ border-right: 5px solid #ccc;
+ padding-right: 5px;
+ margin-right: -10px;
+}
+
+.filtered .actions {
+ border-left:1px solid #DDDDDD;
+ margin-left:160px !important;
+ border-right: 0 none;
+ margin-right:0 !important;
+}
+
+/* FORMS */
+
+.aligned label {
+ padding: 0 0 3px 1em;
+ float: right;
+}
+
+.submit-row {
+ text-align: left
+}
+
+.submit-row p.deletelink-box {
+ float: right;
+}
+
+.submit-row .deletelink {
+ background: url(../img/admin/icon_deletelink.gif) 0 50% no-repeat;
+ padding-right: 14px;
+}
+
+.vDateField, .vTimeField {
+ margin-left: 2px;
+}
+
+form ul.inline li {
+ float: right;
+ padding-right: 0;
+ padding-left: 7px;
+}
+
+input[type=submit].default, .submit-row input.default {
+ float: left;
+}
+
+fieldset .field-box {
+ float: right;
+ margin-left: 20px;
+}
+
+.errorlist li {
+ background-position: 100% .3em;
+ padding: 4px 25px 4px 5px;
+}
+
+.errornote {
+ background-position: 100% .3em;
+ padding: 4px 25px 4px 5px;
+}
+
+/* WIDGETS */
+
+.calendarnav-previous {
+ top: 0;
+ left: auto;
+ right: 0;
+}
+
+.calendarnav-next {
+ top: 0;
+ right: auto;
+ left: 0;
+}
+
+.calendar caption, .calendarbox h2 {
+ text-align: center;
+}
+
+.selector {
+ float: right;
+}
+
+.selector .selector-filter {
+ text-align: right;
+}
+
+.inline-deletelink {
+ float: left;
+}
+
+/* MISC */
+
+.inline-related h2, .inline-group h2 {
+ text-align: right
+}
+
+.inline-related h3 span.delete {
+ padding-right: 20px;
+ padding-left: inherit;
+ left: 10px;
+ right: inherit;
+}
+
+.inline-related h3 span.delete label {
+ margin-left: inherit;
+ margin-right: 2px;
+}
=======================================
--- /media/css/widgets.css Mon Feb 15 05:12:32 2010
+++ /media/css/widgets.css Wed Nov 24 03:44:58 2010
@@ -1,100 +1,506 @@
/* SELECTOR (FILTER INTERFACE) */
-.selector { width:580px; float:left; }
-.selector select { width:270px; height:17.2em; }
-.selector-available, .selector-chosen { float:left; width:270px;
text-align:center; margin-bottom:5px; }
-.selector-available h2, .selector-chosen h2 { border:1px solid #ccc; }
-.selector .selector-available h2 { background:white
url(../img/admin/nav-bg.gif) bottom left repeat-x; color:#666; }
-.selector .selector-filter { background:white; border:1px solid #ccc;
border-width:0 1px; padding:3px; color:#999; font-size:10px; margin:0;
text-align:left; }
-.selector .selector-chosen .selector-filter { padding:4px 5px; }
-.selector .selector-available input { width:230px; }
-.selector ul.selector-chooser { float:left; width:22px; height:50px;
background:url(../img/admin/chooser-bg.gif) top center no-repeat;
margin:8em 3px 0 3px; padding:0; }
-.selector-chooser li { margin:0; padding:3px; list-style-type:none; }
-.selector select { margin-bottom:5px; margin-top:0; }
-.selector-add, .selector-remove { width:16px; height:16px; display:block;
text-indent:-3000px; }
-.selector-add { background:url(../img/admin/selector-add.gif) top center
no-repeat; margin-bottom:2px; }
-.selector-remove { background:url(../img/admin/selector-remove.gif) top
center no-repeat; }
-a.selector-chooseall, a.selector-clearall { display:block; width:6em;
text-align:left; margin-left:auto; margin-right:auto; font-weight:bold;
color:#666; padding:3px 0 3px 18px; }
-a.selector-chooseall:hover, a.selector-clearall:hover { color:#036; }
-a.selector-chooseall { width:7em;
background:url(../img/admin/selector-addall.gif) left center no-repeat; }
-a.selector-clearall { background:url(../img/admin/selector-removeall.gif)
left center no-repeat; }
+
+.selector {
+ width: 580px;
+ float: left;
+}
+
+.selector select {
+ width: 270px;
+ height: 17.2em;
+}
+
+.selector-available, .selector-chosen {
+ float: left;
+ width: 270px;
+ text-align: center;
+ margin-bottom: 5px;
+}
+
+.selector-available h2, .selector-chosen h2 {
+ border: 1px solid #ccc;
+}
+
+.selector .selector-available h2 {
+ background: white url(../img/admin/nav-bg.gif) bottom left repeat-x;
+ color: #666;
+}
+
+.selector .selector-filter {
+ background: white;
+ border: 1px solid #ccc;
+ border-width: 0 1px;
+ padding: 3px;
+ color: #999;
+ font-size: 10px;
+ margin: 0;
+ text-align: left;
+}
+
+.selector .selector-chosen .selector-filter {
+ padding: 4px 5px;
+}
+
+.selector .selector-available input {
+ width: 230px;
+}
+
+.selector ul.selector-chooser {
+ float: left;
+ width: 22px;
+ height: 50px;
+ background: url(../img/admin/chooser-bg.gif) top center no-repeat;
+ margin: 8em 3px 0 3px;
+ padding: 0;
+}
+
+.selector-chooser li {
+ margin: 0;
+ padding: 3px;
+ list-style-type: none;
+}
+
+.selector select {
+ margin-bottom: 5px;
+ margin-top: 0;
+}
+
+.selector-add, .selector-remove {
+ width: 16px;
+ height: 16px;
+ display: block;
+ text-indent: -3000px;
+}
+
+.selector-add {
+ background: url(../img/admin/selector-add.gif) top center no-repeat;
+ margin-bottom: 2px;
+}
+
+.selector-remove {
+ background: url(../img/admin/selector-remove.gif) top center no-repeat;
+}
+
+a.selector-chooseall, a.selector-clearall {
+ display: block;
+ width: 6em;
+ text-align: left;
+ margin-left: auto;
+ margin-right: auto;
+ font-weight: bold;
+ color: #666;
+ padding: 3px 0 3px 18px;
+}
+
+a.selector-chooseall:hover, a.selector-clearall:hover {
+ color: #036;
+}
+
+a.selector-chooseall {
+ width: 7em;
+ background: url(../img/admin/selector-addall.gif) left center
no-repeat;
+}
+
+a.selector-clearall {
+ background: url(../img/admin/selector-removeall.gif) left center
no-repeat;
+}
+
/* STACKED SELECTORS */
-.stacked { float:left; width:500px; }
-.stacked select { width:480px; height:10.1em; }
-.stacked .selector-available, .stacked .selector-chosen { width:480px; }
-.stacked .selector-available { margin-bottom:0; }
-.stacked .selector-available input { width:442px; }
-.stacked ul.selector-chooser { height:22px; width:50px; margin:0 0 3px
40%; background:url(../img/admin/chooser_stacked-bg.gif) top center
no-repeat; }
-.stacked .selector-chooser li { float:left; padding:3px 3px 3px 5px; }
-.stacked .selector-chooseall, .stacked .selector-clearall { display:none; }
-.stacked .selector-add {
background-image:url(../img/admin/selector_stacked-add.gif); }
-.stacked .selector-remove {
background-image:url(../img/admin/selector_stacked-remove.gif); }
+
+.stacked {
+ float: left;
+ width: 500px;
+}
+
+.stacked select {
+ width: 480px;
+ height: 10.1em;
+}
+
+.stacked .selector-available, .stacked .selector-chosen {
+ width: 480px;
+}
+
+.stacked .selector-available {
+ margin-bottom: 0;
+}
+
+.stacked .selector-available input {
+ width: 442px;
+}
+
+.stacked ul.selector-chooser {
+ height: 22px;
+ width: 50px;
+ margin: 0 0 3px 40%;
+ background: url(../img/admin/chooser_stacked-bg.gif) top center
no-repeat;
+}
+
+.stacked .selector-chooser li {
+ float: left;
+ padding: 3px 3px 3px 5px;
+}
+
+.stacked .selector-chooseall, .stacked .selector-clearall {
+ display: none;
+}
+
+.stacked .selector-add {
+ background-image: url(../img/admin/selector_stacked-add.gif);
+}
+
+.stacked .selector-remove {
+ background-image: url(../img/admin/selector_stacked-remove.gif);
+}
+
/* DATE AND TIME */
-p.datetime { line-height:20px; margin:0; padding:0; color:#666;
font-size:11px; font-weight:bold; }
-.datetime span { font-size:11px; color:#ccc; font-weight:normal;
white-space:nowrap; }
-table p.datetime { font-size:10px; margin-left:0; padding-left:0; }
+
+p.datetime {
+ line-height: 20px;
+ margin: 0;
+ padding: 0;
+ color: #666;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+.datetime span {
+ font-size: 11px;
+ color: #ccc;
+ font-weight: normal;
+ white-space: nowrap;
+}
+
+table p.datetime {
+ font-size: 10px;
+ margin-left: 0;
+ padding-left: 0;
+}
/* FILE UPLOADS */
-p.file-upload { line-height:20px; margin:0; padding:0; color:#666;
font-size:11px; font-weight:bold; }
-.file-upload a { font-weight:normal; }
-.file-upload .deletelink { margin-left:5px; }
+
+p.file-upload {
+ line-height: 20px;
+ margin: 0;
+ padding: 0;
+ color: #666;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+.file-upload a {
+ font-weight: normal;
+}
+
+.file-upload .deletelink {
+ margin-left: 5px;
+}
/* CALENDARS & CLOCKS */
-.calendarbox, .clockbox { margin:5px auto; font-size:11px; width:16em;
text-align:center; background:white; position:relative; }
-.clockbox { width:auto; }
-.calendar { margin:0; padding: 0; }
-.calendar table { margin:0; padding:0; border-collapse:collapse;
background:white; width:99%; }
-.calendar caption, .calendarbox h2 { margin: 0; font-size:11px;
text-align:center; border-top:none; }
-.calendar th { font-size:10px; color:#666; padding:2px 3px;
text-align:center; background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50%
repeat-x; border-bottom:1px solid #ddd; }
-.calendar td { font-size:11px; text-align: center; padding: 0;
border-top:1px solid #eee; border-bottom:none; }
-.calendar td.selected a { background: #C9DBED; }
-.calendar td.nonday { background:#efefef; }
-.calendar td.today a { background:#ffc; }
-.calendar td a, .timelist a { display: block; font-weight:bold;
padding:4px; text-decoration: none; color:#444; }
-.calendar td a:hover, .timelist a:hover { background: #5b80b2;
color:white; }
-.calendar td a:active, .timelist a:active { background: #036; color:white;
}
-.calendarnav { font-size:10px; text-align: center; color:#ccc; margin:0;
padding:1px 3px; }
-.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { color:
#999; }
-.calendar-shortcuts { background:white; font-size:10px; line-height:11px;
border-top:1px solid #eee; padding:3px 0 4px; color:#ccc; }
-.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {
display:block; position:absolute; font-weight:bold; font-size:12px;
background:#C9DBED url(../img/admin/default-bg.gif) bottom left repeat-x;
padding:1px 4px 2px 4px; color:white; }
-.calendarnav-previous:hover, .calendarnav-next:hover { background:#036; }
-.calendarnav-previous { top:0; left:0; }
-.calendarnav-next { top:0; right:0; }
-.calendar-cancel { margin:0 !important; padding:0; font-size:10px;
background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x;
border-top:1px solid #ddd; }
-.calendar-cancel a { padding:2px; color:#999; }
-ul.timelist, .timelist li { list-style-type:none; margin:0; padding:0; }
-.timelist a { padding:2px; }
+
+.calendarbox, .clockbox {
+ margin: 5px auto;
+ font-size: 11px;
+ width: 16em;
+ text-align: center;
+ background: white;
+ position: relative;
+}
+
+.clockbox {
+ width: auto;
+}
+
+.calendar {
+ margin: 0;
+ padding: 0;
+}
+
+.calendar table {
+ margin: 0;
+ padding: 0;
+ border-collapse: collapse;
+ background: white;
+ width: 99%;
+}
+
+.calendar caption, .calendarbox h2 {
+ margin: 0;
+ font-size: 11px;
+ text-align: center;
+ border-top: none;
+}
+
+.calendar th {
+ font-size: 10px;
+ color: #666;
+ padding: 2px 3px;
+ text-align: center;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x;
+ border-bottom: 1px solid #ddd;
+}
+
+.calendar td {
+ font-size: 11px;
+ text-align: center;
+ padding: 0;
+ border-top: 1px solid #eee;
+ border-bottom: none;
+}
+
+.calendar td.selected a {
+ background: #C9DBED;
+}
+
+.calendar td.nonday {
+ background: #efefef;
+}
+
+.calendar td.today a {
+ background: #ffc;
+}
+
+.calendar td a, .timelist a {
+ display: block;
+ font-weight: bold;
+ padding: 4px;
+ text-decoration: none;
+ color: #444;
+}
+
+.calendar td a:hover, .timelist a:hover {
+ background: #5b80b2;
+ color: white;
+}
+
+.calendar td a:active, .timelist a:active {
+ background: #036;
+ color: white;
+}
+
+.calendarnav {
+ font-size: 10px;
+ text-align: center;
+ color: #ccc;
+ margin: 0;
+ padding: 1px 3px;
+}
+
+.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {
+ color: #999;
+}
+
+.calendar-shortcuts {
+ background: white;
+ font-size: 10px;
+ line-height: 11px;
+ border-top: 1px solid #eee;
+ padding: 3px 0 4px;
+ color: #ccc;
+}
+
+.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {
+ display: block;
+ position: absolute;
+ font-weight: bold;
+ font-size: 12px;
+ background: #C9DBED url(../img/admin/default-bg.gif) bottom left
repeat-x;
+ padding: 1px 4px 2px 4px;
+ color: white;
+}
+
+.calendarnav-previous:hover, .calendarnav-next:hover {
+ background: #036;
+}
+
+.calendarnav-previous {
+ top: 0;
+ left: 0;
+}
+
+.calendarnav-next {
+ top: 0;
+ right: 0;
+}
+
+.calendar-cancel {
+ margin: 0 !important;
+ padding: 0;
+ font-size: 10px;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x;
+ border-top: 1px solid #ddd;
+}
+
+.calendar-cancel a {
+ padding: 2px;
+ color: #999;
+}
+
+ul.timelist, .timelist li {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+.timelist a {
+ padding: 2px;
+}
/* INLINE ORDERER */
-ul.orderer { position:relative; padding:0 !important;
margin:0 !important; list-style-type:none; }
-ul.orderer li { list-style-type:none; display:block; padding:0; margin:0;
border:1px solid #bbb; border-width:0 1px 1px 0; white-space:nowrap;
overflow:hidden; background:#e2e2e2 url(../img/admin/nav-bg-grabber.gif)
repeat-y; }
-ul.orderer li:hover { cursor:move; background-color:#ddd; }
-ul.orderer li a.selector { margin-left:12px; overflow:hidden; width:83%;
font-size:10px !important; padding:0.6em 0; }
-ul.orderer li a:link, ul.orderer li a:visited { color:#333; }
-ul.orderer li .inline-deletelink { position:absolute; right:4px;
margin-top:0.6em; }
-ul.orderer li.selected { background-color:#f8f8f8;
border-right-color:#f8f8f8; }
-ul.orderer li.deleted { background:#bbb
url(../img/admin/deleted-overlay.gif); }
-ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {
color:#888; }
-ul.orderer li.deleted .inline-deletelink {
background-image:url(../img/admin/inline-restore.png); }
-ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {
cursor:default; }
+
+ul.orderer {
+ position: relative;
+ padding: 0 !important;
+ margin: 0 !important;
+ list-style-type: none;
+}
+
+ul.orderer li {
+ list-style-type: none;
+ display: block;
+ padding: 0;
+ margin: 0;
+ border: 1px solid #bbb;
+ border-width: 0 1px 1px 0;
+ white-space: nowrap;
+ overflow: hidden;
+ background: #e2e2e2 url(../img/admin/nav-bg-grabber.gif) repeat-y;
+}
+
+ul.orderer li:hover {
+ cursor: move;
+ background-color: #ddd;
+}
+
+ul.orderer li a.selector {
+ margin-left: 12px;
+ overflow: hidden;
+ width: 83%;
+ font-size: 10px !important;
+ padding: 0.6em 0;
+}
+
+ul.orderer li a:link, ul.orderer li a:visited {
+ color: #333;
+}
+
+ul.orderer li .inline-deletelink {
+ position: absolute;
+ right: 4px;
+ margin-top: 0.6em;
+}
+
+ul.orderer li.selected {
+ background-color: #f8f8f8;
+ border-right-color: #f8f8f8;
+}
+
+ul.orderer li.deleted {
+ background: #bbb url(../img/admin/deleted-overlay.gif);
+}
+
+ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {
+ color: #888;
+}
+
+ul.orderer li.deleted .inline-deletelink {
+ background-image: url(../img/admin/inline-restore.png);
+}
+
+ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {
+ cursor: default;
+}
/* EDIT INLINE */
-.inline-deletelink { display:block; text-indent:-9999px;
background:transparent url(../img/admin/inline-delete.png) no-repeat;
width:15px; height:15px; margin:0.4em 0; border: 0px none; }
-.inline-deletelink:hover { background-position:-15px 0; cursor:pointer; }
-.editinline button.addlink { border: 0px none; color: #5b80b2; font-size:
100%; cursor: pointer; }
-.editinline button.addlink:hover { color: #036; cursor: pointer; }
-.editinline table .help { text-align:right; float:right; padding-left:2em;
}
-.editinline tfoot .addlink { white-space:nowrap; }
-.editinline table thead th:last-child { border-left:none; }
-.editinline tr.deleted { background:#ddd
url(../img/admin/deleted-overlay.gif); }
-.editinline tr.deleted .inline-deletelink {
background-image:url(../img/admin/inline-restore.png); }
-.editinline tr.deleted td:hover { cursor:default; }
-.editinline tr.deleted td:first-child { background-image:none !important; }
+
+.inline-deletelink {
+ float: right;
+ text-indent: -9999px;
+ background: transparent url(../img/admin/inline-delete.png) no-repeat;
+ width: 15px;
+ height: 15px;
+ border: 0px none;
+ outline: 0; /* Remove dotted border around link */
+}
+
+.inline-deletelink:hover {
+ background-position: -15px 0;
+ cursor: pointer;
+}
+
+.editinline button.addlink {
+ border: 0px none;
+ color: #5b80b2;
+ font-size: 100%;
+ cursor: pointer;
+}
+
+.editinline button.addlink:hover {
+ color: #036;
+ cursor: pointer;
+}
+
+.editinline table .help {
+ text-align: right;
+ float: right;
+ padding-left: 2em;
+}
+
+.editinline tfoot .addlink {
+ white-space: nowrap;
+}
+
+.editinline table thead th:last-child {
+ border-left: none;
+}
+
+.editinline tr.deleted {
+ background: #ddd url(../img/admin/deleted-overlay.gif);
+}
+
+.editinline tr.deleted .inline-deletelink {
+ background-image: url(../img/admin/inline-restore.png);
+}
+
+.editinline tr.deleted td:hover {
+ cursor: default;
+}
+
+.editinline tr.deleted td:first-child {
+ background-image: none !important;
+}
/* EDIT INLINE - STACKED */
-.editinline-stacked { min-width:758px; }
-.editinline-stacked .inline-object { margin-left:210px; background:white; }
-.editinline-stacked .inline-source { float:left; width:200px;
background:#f8f8f8; }
-.editinline-stacked .inline-splitter { float:left; width:9px;
background:#f8f8f8 url(../img/admin/inline-splitter-bg.gif) 50% 50%
no-repeat; border-right:1px solid #ccc; }
-.editinline-stacked .controls { clear:both; background:#e1e1e1
url(../img/admin/nav-bg.gif) top left repeat-x; padding:3px 4px;
font-size:11px; border-top:1px solid #ddd; }
+
+.editinline-stacked {
+ min-width: 758px;
+}
+
+.editinline-stacked .inline-object {
+ margin-left: 210px;
+ background: white;
+}
+
+.editinline-stacked .inline-source {
+ float: left;
+ width: 200px;
+ background: #f8f8f8;
+}
+
+.editinline-stacked .inline-splitter {
+ float: left;
+ width: 9px;
+ background: #f8f8f8 url(../img/admin/inline-splitter-bg.gif) 50% 50%
no-repeat;
+ border-right: 1px solid #ccc;
+}
+
+.editinline-stacked .controls {
+ clear: both;
+ background: #e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x;
+ padding: 3px 4px;
+ font-size: 11px;
+ border-top: 1px solid #ddd;
+}
+
==============================================================================
Revision: 9a8425ec02
Author: surenspost
Date: Wed Nov 24 03:48:00 2010
Log: removing vestigial setter-bin directory
http://code.google.com/p/codechecker/source/detail?r=9a8425ec02
Deleted:
/media/setter-bin/README
=======================================
--- /media/setter-bin/README Thu Apr 8 22:58:18 2010
+++ /dev/null
@@ -1,2 +0,0 @@
-This folder will contain binaries submitted by problem that are to be
-used for custom evaluation.