This commit is contained in:
Johnson Chetty 2013-09-23 14:51:13 +02:00
commit cea99f7677
285 changed files with 42292 additions and 132 deletions

View File

@ -24,7 +24,7 @@ def splitSearch(string):
def get_real_ctype(module_name):
for c in ContentType.objects.filter(model=module_name):
try:
if c.model_class().is_itf_model == True:
if c.model_class() is not None:
return c
except:
pass
@ -80,6 +80,7 @@ class ItfModel(models.Model):
def add_note(self, user, text):
from itfprofiles.models import Note
if self.user_has_perms(user):
n = Note(user=user, text=text, content_object=self)
n.save()
@ -113,7 +114,7 @@ class ItfModel(models.Model):
# d['add_form'] = self.__class__.get_add_form()
d['forms'] = self.__class__.get_forms()
d['obj'] = self
d['content_type'] = ContentType.objects.filter(model=self.__class__._meta.module_name)[0]
d['content_type'] = self.get_content_type()
try:
edit_url = self.get_edit_url()
d['edit_url'] = edit_url
@ -122,6 +123,11 @@ class ItfModel(models.Model):
pass
return d
def get_content_type(self):
for c in ContentType.objects.filter(model=self.__class__._meta.module_name):
if c.model_class() is not None:
return c
raise
def get_gallery_image(self):
from mediagallery.models import Photo
@ -246,34 +252,36 @@ class ItfModel(models.Model):
Get the main image thumbnail for this object - checks if object has either a field or custom method called 'main_image', then checks for default_images on the ModelExtra for this model.
'''
def get_main_image(self, size="142x150"):
if hasattr(self, 'main_image'):
main_image_getter = self.main_image
if type(main_image_getter).__name__ == 'instancemethod':
imgfield = main_image_getter()
else:
imgfield = main_image_getter
main_image_getter = self.main_image
if type(main_image_getter).__name__ == 'instancemethod':
imgfield = main_image_getter()
else:
imgfield = main_image_getter
else:
imgfield = self.get_modelextra().default_image #FIXME!!
if imgfield is None or imgfield.name == '':
if imgfield is None or imgfield.name == '' and self.get_modelextra():
imgfield = self.get_modelextra().default_image
if imgfield:
#try:
thumb = get_thumbnail(imgfield, size, crop="center").url
#except:
# print imgfield.url
# thumb = 'http://placehold.it/%s' % size
try:
thumb = get_thumbnail(imgfield, size, crop="center").url
except:
thumb = self.get_placeholder(size)
else:
thumb = 'http://placehold.it/%s' % size # Add default image for site
thumb = self.get_placeholder(size) # Add default image for site
return {
'thumb': thumb
'thumb': thumb
}
'''
def main_image(self):
return None
'''
def get_placeholder(self, size):
return 'http://placehold.it/%s' % size
'''
The templates for objects are stored following the convention templates/modules/<app_label>/<model_name>.html

View File

@ -366,6 +366,7 @@ class TheatreGroup(ItfModel):
return False
def get_dict(self):
return {
#'object':self,
'name': self.name,
@ -383,6 +384,8 @@ class TheatreGroup(ItfModel):
'resources': [obj for obj in self.resources.all()],
'buzzitems': [obj for obj in self.buzzitems.all()],
'productions': [obj for obj in self.production_set.all() ],
'workshops': [obj for obj in self.event_set.filter(event_type='workshop')],
'other_events': [obj for obj in self.event_set.exclude(event_type='workshop')],
'scripts': [obj for obj in self.script_set.all() ],
'people' : [obj for obj in self.persongroup_set.all() ],
'worked_with_people': self.worked_with_people()

View File

@ -183,7 +183,7 @@ def contact_group(request):
send_mail("Contact on theatreforum.in", message, frm, [to_email])
return HttpResponse("Your message has been sent, thanks.")
@csrf_exempt
def add_note(request, content_type, object_id):
model_class = ContentType.objects.get(pk=content_type).model_class()
obj = model_class.objects.get(pk=object_id)

View File

@ -4,7 +4,7 @@ from tagging.fields import TagField
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.contrib.contenttypes import generic
from app.models import ItfModel
from itfprofiles.models import TheatreGroup
from itfprofiles.models import TheatreGroup, Note
from mediagallery.models import GalleryAlbum
GENRES = (
@ -47,6 +47,7 @@ class Script(ItfModel):
theatre_group = models.ForeignKey(TheatreGroup, help_text="Theatre Group, if any")
related_scripts = models.ManyToManyField("Script", through="ScriptScript", related_name='related_script')
galleries = generic.GenericRelation(GalleryAlbum)
notes = generic.GenericRelation(Note)
# add_form = 'ScriptForm'
#Meta

BIN
itf/static/js/html5Forms.js/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
ref: refs/heads/master

View File

@ -0,0 +1,11 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/zoltan-dulac/html5Forms.js.git
[branch "master"]
remote = origin
merge = refs/heads/master

View File

@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -0,0 +1,15 @@
#!/bin/sh
#
# An example hook script to check the commit log message taken by
# applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit. The hook is
# allowed to edit the commit message file.
#
# To enable this hook, rename this file to "applypatch-msg".
. git-sh-setup
test -x "$GIT_DIR/hooks/commit-msg" &&
exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
:

View File

@ -0,0 +1,24 @@
#!/bin/sh
#
# An example hook script to check the commit log message.
# Called by "git commit" with one argument, the name of the file
# that has the commit message. The hook should exit with non-zero
# status after issuing an appropriate message if it wants to stop the
# commit. The hook is allowed to edit the commit message file.
#
# To enable this hook, rename this file to "commit-msg".
# Uncomment the below to add a Signed-off-by line to the message.
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
# hook is more suited to it.
#
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
# This example catches duplicate Signed-off-by lines.
test "" = "$(grep '^Signed-off-by: ' "$1" |
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
echo >&2 Duplicate Signed-off-by lines.
exit 1
}

View File

@ -0,0 +1,8 @@
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
exec git update-server-info

View File

@ -0,0 +1,14 @@
#!/bin/sh
#
# An example hook script to verify what is about to be committed
# by applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-applypatch".
. git-sh-setup
test -x "$GIT_DIR/hooks/pre-commit" &&
exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
:

View File

@ -0,0 +1,50 @@
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# If you want to allow non-ascii filenames set this variable to true.
allownonascii=$(git config hooks.allownonascii)
# Redirect output to stderr.
exec 1>&2
# Cross platform projects tend to avoid non-ascii filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
# Note that the use of brackets around a tr range is ok here, (it's
# even required, for portability to Solaris 10's /usr/bin/tr), since
# the square bracket bytes happen to fall in the designated range.
test $(git diff --cached --name-only --diff-filter=A -z $against |
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
echo "Error: Attempt to add a non-ascii file name."
echo
echo "This can cause problems if you want to work"
echo "with people on other platforms."
echo
echo "To be portable it is advisable to rename the file ..."
echo
echo "If you know what you are doing you can disable this"
echo "check using:"
echo
echo " git config hooks.allownonascii true"
echo
exit 1
fi
# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --

View File

@ -0,0 +1,169 @@
#!/bin/sh
#
# Copyright (c) 2006, 2008 Junio C Hamano
#
# The "pre-rebase" hook is run just before "git rebase" starts doing
# its job, and can prevent the command from running by exiting with
# non-zero status.
#
# The hook is called with the following parameters:
#
# $1 -- the upstream the series was forked from.
# $2 -- the branch being rebased (or empty when rebasing the current branch).
#
# This sample shows how to prevent topic branches that are already
# merged to 'next' branch from getting rebased, because allowing it
# would result in rebasing already published history.
publish=next
basebranch="$1"
if test "$#" = 2
then
topic="refs/heads/$2"
else
topic=`git symbolic-ref HEAD` ||
exit 0 ;# we do not interrupt rebasing detached HEAD
fi
case "$topic" in
refs/heads/??/*)
;;
*)
exit 0 ;# we do not interrupt others.
;;
esac
# Now we are dealing with a topic branch being rebased
# on top of master. Is it OK to rebase it?
# Does the topic really exist?
git show-ref -q "$topic" || {
echo >&2 "No such branch $topic"
exit 1
}
# Is topic fully merged to master?
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
if test -z "$not_in_master"
then
echo >&2 "$topic is fully merged to master; better remove it."
exit 1 ;# we could allow it, but there is no point.
fi
# Is topic ever merged to next? If so you should not be rebasing it.
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
only_next_2=`git rev-list ^master ${publish} | sort`
if test "$only_next_1" = "$only_next_2"
then
not_in_topic=`git rev-list "^$topic" master`
if test -z "$not_in_topic"
then
echo >&2 "$topic is already up-to-date with master"
exit 1 ;# we could allow it, but there is no point.
else
exit 0
fi
else
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
/usr/bin/perl -e '
my $topic = $ARGV[0];
my $msg = "* $topic has commits already merged to public branch:\n";
my (%not_in_next) = map {
/^([0-9a-f]+) /;
($1 => 1);
} split(/\n/, $ARGV[1]);
for my $elem (map {
/^([0-9a-f]+) (.*)$/;
[$1 => $2];
} split(/\n/, $ARGV[2])) {
if (!exists $not_in_next{$elem->[0]}) {
if ($msg) {
print STDERR $msg;
undef $msg;
}
print STDERR " $elem->[1]\n";
}
}
' "$topic" "$not_in_next" "$not_in_master"
exit 1
fi
<<\DOC_END
This sample hook safeguards topic branches that have been
published from being rewound.
The workflow assumed here is:
* Once a topic branch forks from "master", "master" is never
merged into it again (either directly or indirectly).
* Once a topic branch is fully cooked and merged into "master",
it is deleted. If you need to build on top of it to correct
earlier mistakes, a new topic branch is created by forking at
the tip of the "master". This is not strictly necessary, but
it makes it easier to keep your history simple.
* Whenever you need to test or publish your changes to topic
branches, merge them into "next" branch.
The script, being an example, hardcodes the publish branch name
to be "next", but it is trivial to make it configurable via
$GIT_DIR/config mechanism.
With this workflow, you would want to know:
(1) ... if a topic branch has ever been merged to "next". Young
topic branches can have stupid mistakes you would rather
clean up before publishing, and things that have not been
merged into other branches can be easily rebased without
affecting other people. But once it is published, you would
not want to rewind it.
(2) ... if a topic branch has been fully merged to "master".
Then you can delete it. More importantly, you should not
build on top of it -- other people may already want to
change things related to the topic as patches against your
"master", so if you need further changes, it is better to
fork the topic (perhaps with the same name) afresh from the
tip of "master".
Let's look at this example:
o---o---o---o---o---o---o---o---o---o "next"
/ / / /
/ a---a---b A / /
/ / / /
/ / c---c---c---c B /
/ / / \ /
/ / / b---b C \ /
/ / / / \ /
---o---o---o---o---o---o---o---o---o---o---o "master"
A, B and C are topic branches.
* A has one fix since it was merged up to "next".
* B has finished. It has been fully merged up to "master" and "next",
and is ready to be deleted.
* C has not merged to "next" at all.
We would want to allow C to be rebased, refuse A, and encourage
B to be deleted.
To compute (1):
git rev-list ^master ^topic next
git rev-list ^master next
if these match, topic has not merged in next at all.
To compute (2):
git rev-list master..topic
if this is empty, it is fully merged to "master".
DOC_END

View File

@ -0,0 +1,36 @@
#!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by "git commit" with the name of the file that has the
# commit message, followed by the description of the commit
# message's source. The hook's purpose is to edit the commit
# message file. If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, rename this file to "prepare-commit-msg".
# This hook includes three examples. The first comments out the
# "Conflicts:" part of a merge commit.
#
# The second includes the output of "git diff --name-status -r"
# into the message, just before the "git status" output. It is
# commented because it doesn't cope with --amend or with squashed
# commits.
#
# The third example adds a Signed-off-by line to the message, that can
# still be edited. This is rarely a good idea.
case "$2,$3" in
merge,)
/usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
# ,|template,)
# /usr/bin/perl -i.bak -pe '
# print "\n" . `git diff --cached --name-status -r`
# if /^#/ && $first++ == 0' "$1" ;;
*) ;;
esac
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

View File

@ -0,0 +1,128 @@
#!/bin/sh
#
# An example hook script to blocks unannotated tags from entering.
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
#
# To enable this hook, rename this file to "update".
#
# Config
# ------
# hooks.allowunannotated
# This boolean sets whether unannotated tags will be allowed into the
# repository. By default they won't be.
# hooks.allowdeletetag
# This boolean sets whether deleting tags will be allowed in the
# repository. By default they won't be.
# hooks.allowmodifytag
# This boolean sets whether a tag may be modified after creation. By default
# it won't be.
# hooks.allowdeletebranch
# This boolean sets whether deleting branches will be allowed in the
# repository. By default they won't be.
# hooks.denycreatebranch
# This boolean sets whether remotely creating branches will be denied
# in the repository. By default this is allowed.
#
# --- Command line
refname="$1"
oldrev="$2"
newrev="$3"
# --- Safety check
if [ -z "$GIT_DIR" ]; then
echo "Don't run this script from the command line." >&2
echo " (if you want, you could supply GIT_DIR then run" >&2
echo " $0 <ref> <oldrev> <newrev>)" >&2
exit 1
fi
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
exit 1
fi
# --- Config
allowunannotated=$(git config --bool hooks.allowunannotated)
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
denycreatebranch=$(git config --bool hooks.denycreatebranch)
allowdeletetag=$(git config --bool hooks.allowdeletetag)
allowmodifytag=$(git config --bool hooks.allowmodifytag)
# check for no description
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
case "$projectdesc" in
"Unnamed repository"* | "")
echo "*** Project description file hasn't been set" >&2
exit 1
;;
esac
# --- Check types
# if $newrev is 0000...0000, it's a commit to delete a ref.
zero="0000000000000000000000000000000000000000"
if [ "$newrev" = "$zero" ]; then
newrev_type=delete
else
newrev_type=$(git cat-file -t $newrev)
fi
case "$refname","$newrev_type" in
refs/tags/*,commit)
# un-annotated tag
short_refname=${refname##refs/tags/}
if [ "$allowunannotated" != "true" ]; then
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
exit 1
fi
;;
refs/tags/*,delete)
# delete tag
if [ "$allowdeletetag" != "true" ]; then
echo "*** Deleting a tag is not allowed in this repository" >&2
exit 1
fi
;;
refs/tags/*,tag)
# annotated tag
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
then
echo "*** Tag '$refname' already exists." >&2
echo "*** Modifying a tag is not allowed in this repository." >&2
exit 1
fi
;;
refs/heads/*,commit)
# branch
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
echo "*** Creating a branch is not allowed in this repository" >&2
exit 1
fi
;;
refs/heads/*,delete)
# delete branch
if [ "$allowdeletebranch" != "true" ]; then
echo "*** Deleting a branch is not allowed in this repository" >&2
exit 1
fi
;;
refs/remotes/*,commit)
# tracking branch
;;
refs/remotes/*,delete)
# delete tracking branch
if [ "$allowdeletebranch" != "true" ]; then
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
exit 1
fi
;;
*)
# Anything else (is there anything else?)
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
exit 1
;;
esac
# --- Finished
exit 0

Binary file not shown.

View File

@ -0,0 +1,6 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

View File

@ -0,0 +1 @@
0000000000000000000000000000000000000000 d390bb89714a6c7eba09f9eb29660560e07d35cb Sanjay B <b@pad.ma> 1379876216 +0530 clone: from https://github.com/zoltan-dulac/html5Forms.js.git

View File

@ -0,0 +1 @@
0000000000000000000000000000000000000000 d390bb89714a6c7eba09f9eb29660560e07d35cb Sanjay B <b@pad.ma> 1379876216 +0530 clone: from https://github.com/zoltan-dulac/html5Forms.js.git

View File

@ -0,0 +1,2 @@
# pack-refs with: peeled
d390bb89714a6c7eba09f9eb29660560e07d35cb refs/remotes/origin/master

View File

@ -0,0 +1 @@
d390bb89714a6c7eba09f9eb29660560e07d35cb

View File

@ -0,0 +1 @@
ref: refs/remotes/origin/master

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>html5Widgets</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

View File

@ -0,0 +1,43 @@
HTML5Forms.js is a JavaScript polyfill that implements a subset of the HTML5
Forms module in all browsers. The script will only add support for the
different parts of the module when there doesn't exist a native
implementation. HTML5Forms supports the following HTML5 input types:
* range
* date
* datetime
* datetime-local
* week
* color
It also supports:
* form validation (via "required" and "pattern" attributes)
* the autofocus attribute (i.e. focusing on a particular form element onload)
* the placeholder attribute (i.e. descriptive text of what should be in a form
field)
* the output tag (solves equations of form elements)
* CSS styling of form validation states (simulates :invalid and :valid in
unsupported browsers like IE9 and lower)
* CSS styling of form elements that are not included in the CSS3 UI
specification, but I think are useful for developers:
- .wf2_isBlank, .wf2_notBlank these classes are applied to form field when
a form element is blank/not blank repectively.
- .wf2_lostFocus -this class is applied to a form element when a form field
loses focus.
- .wf2_submitAttempted this class is applied to a <form> tag when a form
submission is attempted.
More information about how this works is available at:
http://www.useragentman.com/blog/2010/07/27/cross-browser-html5-forms-using-modernizr-webforms2-and-html5widgets/
http://www.useragentman.com/blog/2012/05/14/cross-browser-styling-of-html5-forms-even-in-older-browsers/
Note that this package was originally released in 2010 as html5Widgets,
and was renamed to a more accurate and descriptive name. Also note that
the version of webforms2 that is included in this package does not
include support for the depricated repetition module -- it will be
put back in as a separate module at a later date.

Binary file not shown.

View File

@ -0,0 +1,35 @@
.html5-numberControls {
display: block;
vertical-align:top;
position: absolute;
top: 0;
right: 0em;
height: 1.5em;
border: solid 1px #666666;
border-radius: 5px;
width: 0.8em;
color: #666666;
margin-top: 0.3em;
}
.html5-numberWrapper {
position: absolute;
height: 1em;
}
.html5-numberControls a{
margin: 0 0 0 0.2em;
padding:0;
border:0;
background-color:transparent;
width: 0.9em;
cursor:pointer;
position:absolute;
font-size: 0.6em;
}
.html5-numberControls .upbutton{top:0px;}
.html5-numberControls .dnbutton{bottom: 0px;}

View File

@ -0,0 +1,169 @@
/*
Slider CSS, style as you please.
Note: The png images used for this demo were originally located at http://www.schillmania.com/
Remove the -moz & -khtml styles if you want the css to validate.
Change the image paths to suit you installation.
*/
/* Styles for the horizontal slider */
.fd-slider
{
position:relative;
width:100%;
height:20px;
text-align:center;
border:0 none;
text-decoration:none;
display:block;
-moz-user-select:none;
-khtml-user-select:none
cursor:pointer;
}
.fd-slider-inner
{
position:relative;
display:block;
z-index:1;
height:18px;
text-align:left;
background:#fcfcfc;
border:1px solid #ccc;
border-radius:5px;
-moz-border-radius:5px;
}
.fd-slider-bar
{
position:absolute;
display:block;
z-index:2;
height:2px;
border:1px solid #bbb;
border-bottom:1px solid #aaa;
border-right:1px solid #aaa;
background:#ddd;
margin:0;
padding:0;
overflow:hidden;
line-height:4px;
top:8px;
bottom:none;
left:10px;
right:10px;
border-radius:2px;
-moz-border-radius:2px;
}
/* Styles for the vertical slider */
.fd-slider-vertical
{
position:relative;
border:0 none;
text-decoration:none;
display:block;
width:20px;
height:100%;
text-align:center;
-moz-user-select:none;
-khtml-user-select:none
cursor:pointer;
cursor:hand;
}
.fd-slider-vertical .fd-slider-inner
{
display:block;
width:18px;
height:100%;
text-align:left;
background:#fcfcfc;
border:1px solid #ccc;
}
.fd-slider-vertical .fd-slider-bar
{
width:2px;
top:10px;
bottom:10px;
left:8px;
right:none;
height:auto;
}
.fd-slider-vertical .fd-slider-handle
{
cursor:N-resize;
}
.focused .fd-slider-inner
{
background:#eee !important;
border:1px solid #aaa !important;
}
/* black handle, no glow */
.fd-slider-handle
{
position:absolute;
display:block;
padding:0;
border:0 none;
margin:0;
z-index:3;
top:0;
left:0;
width:20px;
height:20px;
outline:0px none;
background:transparent url(../images/slider/slider-disabled.png) no-repeat 0px 0px;
cursor:W-resize;
line-height:20px;
font-size:20px;
-webkit-user-select: none;
-moz-user-select:none;
-moz-user-focus:none;
-moz-outline:0px none;
}
.fd-slider-handle:focus
{
outline:0px none;
border:0 none;
-moz-user-focus:normal;
}
button.fd-slider-handle:focus::-moz-focus-inner { border-color: transparent; }
/* black handle, glow */
.fd-slider-hover .fd-slider-handle
{
background:transparent url(../images/slider/slider-disabled-1.png) no-repeat 0px 0px;
}
/* blue handle, no glow */
.focused .fd-slider-handle
{
background:transparent url(../images/slider/slider.png) no-repeat 0px 0px;
}
/* blue handle glow */
.focused.fd-slider-hover .fd-slider-handle
{
background:transparent url(../images/slider/slider-1.png) no-repeat 0px 0px;
}
body.slider-drag-vertical
{
cursor:N-resize !important;
}
body.slider-drag-horizontal
{
cursor:W-resize !important;
}
.fd_hide_slider_input
{
display:none;
}
/* Disabled Sliders */
.slider-disabled
{
opacity:.8;
filter:alpha(opacity=80);
}
.slider-disabled .fd-slider-handle
{
cursor:auto !important;
}

View File

@ -0,0 +1,41 @@
.fd-slider-handle
{
background:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='http://www.frequency-decoder.com/demo/slider-revisited/slider-disabled.png');
outline:expression(hideFocus='true');
}
.fd-slider-hover .fd-slider-handle
{
background:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='http://www.frequency-decoder.com/demo/slider-revisited/slider-disabled-1.png');
}
.focused .fd-slider-handle
{
background:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='http://www.frequency-decoder.com/demo/slider-revisited/slider.png');
}
.fd-fc-slider-hover .fd-slider-handle
{
background:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='http://www.frequency-decoder.com/demo/slider-revisited/slider-1.png');
}
.fd-slider
{
cursor:hand;
}
.fd-slider-bar
{
top:8px;
bottom:none;
left:10px;
right:none;
width:expression((this.parentNode.offsetWidth - 20) + "px");
}
.fd-slider-vertical .fd-slider-bar
{
top:10px;
bottom:none;
left:8px;
right:none;
height:expression((this.parentNode.offsetHeight - 20) + "px");
}

View File

@ -0,0 +1,114 @@
body {
margin: 0px;
padding: 0px;
}
body#myExample {
font-family: "Arial", "Helvetica", sans-serif;
}
#exampleBlurb {
background: #2f2626 !important;
text-align: justify !important;
color: white !important;
font: 14px Georgia, Serif !important;
position: relative;
margin-top: -1em;
padding-top: 1em;
zoom: 1;
width: 100% !important;
z-index: 9999 !important;
line-height: 2.4em;
padding-bottom: 1em;
}
#exampleBlurb p {
padding: 0 10px;
line-height: 1.7em;
}
#exampleBlurb a {
color: #ccccff;
}
#thirdPartyExample {
margin: 10px;
}
#myExample fieldset {
width: 50em;
margin: 1em auto;
padding: 1em;
}
#myExample legend {
font-weight: bold;
}
.formTable {
width: 40em;
margin: 0 auto;
}
.formTable th {
vertical-align: top;
text-align: right;
width: 20em;
}
.formTable td,
.formTable input,
.formTable textarea {
width: 20em;
}
.formTable td input[type="checkbox"],
.formTable td input[type="radio"] {
width: auto;
}
.formTable textarea {
height: 8em;
}
.formTable input.small {
width: 4em;
}
.buttonRow {
text-align: center;
}
#exampleIntro {
opacity: 0.7;
position: absolute;
padding: 0.7em;
top: 0;
left: 0;
background: #2f2626 !important;
text-align: justify !important;
color:white !important;
font: 14px Georgia, Serif !important;
position: relative;
zoom: 1;
z-index: 10000 !important;
}
#exampleIntro p {
line-height: 2.4em;
}
#exampleIntro a {
color: #ccccff;
}
.initiallyHidden {
display: none;
}
ul.exampleList > li {
margin-bottom: 2em;
}

View File

@ -0,0 +1,23 @@
.visibleIf, .visibleif {
display: none;
}
.visibleIf-visible, .visibleif-visible {
display: block;
}
span.visibleIf-visible, span.visibleif-visible {
display: inline;
}
tr.visibleIf-visible, tr.visibleif-visible {
display: block;
display: table-row;
}
.visibleIf-rule, .mandatoryIf-rule, .visibleif-rule, .mandatoryif-rule {
display: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

View File

@ -0,0 +1,486 @@
/*******************************************************************************
* This notice must be untouched at all times.
*
* This javascript library contains helper routines to assist with event
* handling consinstently among browsers
*
* EventHelpers.js v.1.4 available at http://www.useragentman.com/
*
* released under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
* Chagelog: 1.4: fix fireEvent to work correctly for IE9.
*
*******************************************************************************/
var EventHelpers = new function(){
var me = this;
var safariTimer;
var isSafari = /WebKit/i.test(navigator.userAgent);
var globalEvent;
me.init = function () {
if (me.hasPageLoadHappened(arguments)) {
return;
}
/* This is for fireEvent */
if (document.createEvent) {
globalEvent = document.createEvent("HTMLEvents");
} else if (document.createEventObject){
// dispatch for IE8 and lower.
globalEvent = document.createEventObject();
}
me.docIsLoaded = true;
}
/**
* Adds an event to the document. Examples of usage:
* me.addEvent(window, "load", myFunction);
* me.addEvent(docunent, "keydown", keyPressedFunc);
* me.addEvent(document, "keyup", keyPressFunc);
*
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/
* @param {Object} obj - a javascript object.
* @param {String} evType - an event to attach to the object.
* @param {Function} fn - the function that is attached to the event.
*/
me.addEvent = function(obj, evType, fn){
if (obj.addEventListener) {
obj.addEventListener(evType, fn, false);
} else if (obj.attachEvent) {
obj['e' + evType + fn] = fn;
obj[evType + fn] = function(){
obj["e" + evType + fn](self.event);
}
obj.attachEvent("on" + evType, obj[evType + fn]);
}
}
/**
* Removes an event that is attached to a javascript object.
*
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/ * @param {Object} obj - a javascript object.
* @param {String} evType - an event attached to the object.
* @param {Function} fn - the function that is called when the event fires.
*/
me.removeEvent = function(obj, evType, fn){
if (obj.removeEventListener) {
obj.removeEventListener(evType, fn, false);
} else if (obj.detachEvent) {
try {
obj.detachEvent("on" + evType, obj[evType + fn]);
obj[evType + fn] = null;
obj["e" + evType + fn] = null;
}
catch (ex) {
// do nothing;
}
}
}
function removeEventAttribute(obj, beginName){
var attributes = obj.attributes;
for (var i = 0; i < attributes.length; i++) {
var attribute = attributes[i]
var name = attribute.name
if (name.indexOf(beginName) == 0) {
//obj.removeAttributeNode(attribute);
attribute.specified = false;
}
}
}
me.addScrollWheelEvent = function(obj, fn){
if (obj.addEventListener) {
/** DOMMouseScroll is for mozilla. */
obj.addEventListener('DOMMouseScroll', fn, true);
}
/** IE/Opera. */
if (obj.attachEvent) {
obj.attachEvent("onmousewheel", fn);
}
}
me.removeScrollWheelEvent = function(obj, fn){
if (obj.removeEventListener) {
/** DOMMouseScroll is for mozilla. */
obj.removeEventListener('DOMMouseScroll', fn, true);
}
/** IE/Opera. */
if (obj.detachEvent) {
obj.detatchEvent("onmousewheel", fn);
}
}
me.getMouseCoords = function (e) {
if (!e) {
return;
}
// IE
if (e.clientX != null) {
return {
x: e.clientX,
y: e.clientY
}
}
// NS4
else if (e.pageX != null) {
return {
x: e.pageX,
y: e.pageY
}
// W3C
} else if (window.event != null && window.event.clientX != null
&& document.body != null &&
document.body.scrollLeft != null) {
return {
x: window.event.clientX + document.body.scrollLeft,
y: window.event.clientY + document.body.scrollTop
}
} else {
return null;
}
}
/**
* Given a mouse event, get the mouse pointer's x-coordinate.
*
* @param {Object} e - a DOM Event object.
* @return {int} - the mouse pointer's x-coordinate.
*/
me.getMouseX = function(e){
if (!e) {
return;
}
// NS4
if (e.pageX != null) {
return e.pageX;
// IE
} else if (window.event != null && window.event.clientX != null &&
document.body != null &&
document.body.scrollLeft != null)
return window.event.clientX + document.body.scrollLeft;
// W3C
else if (e.clientX != null)
return e.clientX;
else
return null;
}
/**
* Given a mouse event, get the mouse pointer's y-coordinate.
* @param {Object} e - a DOM Event Object.
* @return {int} - the mouse pointer's y-coordinate.
*/
me.getMouseY = function(e){
// NS4
if (e.pageY != null)
return e.pageY;
// IE
else if (window.event != null && window.event.clientY != null &&
document.body != null &&
document.body.scrollTop != null)
return window.event.clientY + document.body.scrollTop;
// W3C
else if (e.clientY != null) {
return e.clientY;
}
}
/**
* Given a mouse scroll wheel event, get the "delta" of how fast it moved.
* @param {Object} e - a DOM Event Object.
* @return {int} - the mouse wheel's delta. It is greater than 0, the
* scroll wheel was spun upwards; if less than 0, downwards.
*/
me.getScrollWheelDelta = function(e){
var delta = 0;
if (!e) /* For IE. */
e = window.event;
if (e.wheelDelta) { /* IE/Opera. */
delta = e.wheelDelta / 120;
/** In Opera 9, delta differs in sign as compared to IE.
*/
if (window.opera) {
delta = -delta;
}
} else if (e.detail) { /** Mozilla case. */
/** In Mozilla, sign of delta is different than in IE.
* Also, delta is multiple of 3.
*/
delta = -e.detail / 3;
}
return delta
}
/**
* Sets a mouse move event of a document.
*
* @deprecated - use only if compatibility with IE4 and NS4 is necessary. Otherwise, just
* use EventHelpers.addEvent(window, 'mousemove', func) instead. Cannot be used to add
* multiple mouse move event handlers.
*
* @param {Function} func - the function that you want a mouse event to fire.
*/
me.addMouseEvent = function(func){
if (document.captureEvents) {
document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = func;
window.onmousemove = func;
window.onmouseover = func;
}
/**
* Find the HTML object that fired an Event.
*
* @param {Object} e - an HTML object
* @return {Object} - the HTML object that fired the event.
*/
me.getEventTarget = function(e){
// first, IE method for mouse events(also supported by Safari and Opera)
if (e.toElement) {
return e.toElement;
// W3C
} else if (e.currentTarget) {
return e.currentTarget;
// MS way
} else if (e.srcElement) {
return e.srcElement;
} else {
return null;
}
}
/**
* Given an event fired by the keyboard, find the key associated with that event.
*
* @param {Object} e - an event object.
* @return {String} - the ASCII character code representing the key associated with the event.
*/
me.getKey = function(e){
if (e.keyCode) {
return e.keyCode;
} else if (e.event && e.event.keyCode) {
return window.event.keyCode;
} else if (e.which) {
return e.which;
}
}
/**
* Will execute a function when the page's DOM has fully loaded (and before all attached images, iframes,
* etc., are).
*
* Usage:
*
* EventHelpers.addPageLoadEvent('init');
*
* where the function init() has this code at the beginning:
*
* function init() {
*
* if (EventHelpers.hasPageLoadHappened(arguments)) return;
*
* // rest of code
* ....
* }
*
* @author This code is based off of code from http://dean.edwards.name/weblog/2005/09/busted/ by Dean
* Edwards, with a modification by me.
*
* @param {String} funcName - a string containing the function to be called.
*/
me.addPageLoadEvent = function(funcName){
var func = eval(funcName);
// for Internet Explorer (using conditional comments)
/*@cc_on @*/
/*@if (@_win32)
pageLoadEventArray.push(func);
return;
/*@end @*/
if (isSafari) { // sniff
pageLoadEventArray.push(func);
if (!safariTimer) {
safariTimer = setInterval(function(){
if (/loaded|complete/.test(document.readyState)) {
clearInterval(safariTimer);
/*
* call the onload handler
* func();
*/
me.runPageLoadEvents();
return;
}
set = true;
}, 10);
}
/* for Mozilla */
} else if (document.addEventListener) {
var x = document.addEventListener("DOMContentLoaded", func, null);
/* Others */
} else {
me.addEvent(window, 'load', func);
}
}
var pageLoadEventArray = new Array();
me.runPageLoadEvents = function(e){
if (isSafari || e.srcElement.readyState == "complete") {
for (var i = 0; i < pageLoadEventArray.length; i++) {
pageLoadEventArray[i]();
}
}
}
/**
* Determines if either addPageLoadEvent('funcName') or addEvent(window, 'load', funcName)
* has been executed.
*
* @see addPageLoadEvent
* @param {Function} funcArgs - the arguments of the containing. function
*/
me.hasPageLoadHappened = function(funcArgs){
// If the function already been called, return true;
if (funcArgs.callee.done)
return true;
// flag this function so we don't do the same thing twice
funcArgs.callee.done = true;
}
/**
* Used in an event method/function to indicate that the default behaviour of the event
* should *not* happen.
*
* @param {Object} e - an event object.
* @return {Boolean} - always false
*/
me.preventDefault = function(e){
if (e.preventDefault) {
e.preventDefault();
}
try {
e.returnValue = false;
}
catch (ex) {
// do nothing
}
}
me.cancelBubble = function(e){
if (e.stopPropagation) {
e.stopPropagation();
}
try {
e.cancelBubble = true;
}
catch (ex) {
// do nothing
}
}
/*
* Fires an event manually.
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/
* @param {Object} obj - a javascript object.
* @param {String} evType - an event attached to the object.
* @param {Function} fn - the function that is called when the event fires.
*
*/
me.fireEvent = function (element,event, options){
if(!element) {
return;
}
if (element.dispatchEvent) {
// dispatch for firefox + ie9 + others
globalEvent.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(globalEvent);
} else if (document.createEventObject){
return element.fireEvent('on' + event, globalEvent)
} else {
return false;
}
}
/*
* Detects whether the event "eventName" is supported on a tag with name
* "nodeName". Based on code from
* http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
*/
me.isSupported = function (eventName, nodeName) {
var el = document.createElement(nodeName);
eventName = 'on' + eventName;
var isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, 'return;');
isSupported = typeof el[eventName] == 'function';
}
el = null;
return isSupported;
}
/* EventHelpers.init () */
function init(){
// Conditional comment alert: Do not remove comments. Leave intact.
// The detection if the page is secure or not is important. If
// this logic is removed, Internet Explorer will give security
// alerts.
/*@cc_on @*/
/*@if (@_win32)
document.write('<script id="__ie_onload" defer src="' +
((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>');
var script = document.getElementById("__ie_onload");
me.addEvent(script, 'readystatechange', me.runPageLoadEvents);
/*@end @*/
}
init();
}
EventHelpers.addPageLoadEvent('EventHelpers.init');

View File

@ -0,0 +1,137 @@
/*
* Timer.js - object oriented friendly timeout object
* From code originally found on:
*
* http://www.codingforums.com/archive/index.php/index.php?t-10531.html
*
* The problems with the setTimeout and setInterval functions
* provided in Javascript are twofold. First, you can't call a local
* object method without losing your scope, and second, you can't pass
* objects to the function, since the function call is implemented as a string.
*
* The Timer class solves these difficulties by employing a static array
* to store the parent object and function arguments until the function is
* called.
*
* This class is provided as-is and pro bono, so go ahead and muck with
* it if you see things that could be done better.
*
* Thanks to WA for giving me the idea for this (albeit indirectly)!
*
* Updated 4/18/2003: Footprint decreased, minor code improvements.
* Updated 5/3/2003: Minor comment clarification; no code changes.
* Updated 5/10/2003: Minor code improvements.
*/
// The constructor should be called with
// the parent object (optional, defaults to window).
function
Timer ()
{
this.obj = (arguments.length) ? arguments[0] : window;
return this;
}
// The set functions should be called with:
// - The name of the object method (as a string) (required)
// - The millisecond delay (required)
// - Any number of extra arguments, which will all be
// passed to the method when it is evaluated.
Timer.prototype.setInterval = function (func, msec)
{
var i = Timer.getNew ();
var t = Timer.buildCall (this.obj, i, arguments);
Timer.set[i].timer = window.setInterval (t, msec);
return i;
}
Timer.prototype.setTimeout = function (func, msec)
{
var i = Timer.getNew ();
Timer.buildCall (this.obj, i, arguments);
Timer.set[i].timer = window.setTimeout ("Timer.callOnce(" + i + ");", msec);
return i;
}
// The clear functions should be called with
// the return value from the equivalent set function.
Timer.prototype.clearInterval = function (i)
{
if (!Timer.set[i])
return;
window.clearInterval (Timer.set[i].timer);
Timer.set[i] = null;
}
Timer.prototype.clearTimeout = function (i)
{
if (!Timer.set[i])
return;
window.clearTimeout (Timer.set[i].timer);
Timer.set[i] = null;
}
// Private data
Timer.set = new Array ();
Timer.buildCall = function (obj, i, args)
{
var t = "";
Timer.set[i] = new Array ();
if (obj != window)
{
Timer.set[i].obj = obj;
t = "Timer.set[" + i + "].obj.";
}
t += args[0] + "(";
if (args.length > 2)
{
Timer.set[i][0] = args[2];
t += "Timer.set[" + i + "][0]";
for (var j = 1; (j + 2) < args.length; j++)
{
Timer.set[i][j] = args[j + 2];
t += ", Timer.set[" + i + "][" + j + "]";
}
}
t += ");";
Timer.set[i].call = t;
return t;
}
Timer.callOnce = function (i)
{
if (!Timer.set[i])
return;
eval (Timer.set[i].call);
Timer.set[i] = null;
}
Timer.getNew = function ()
{
var i = 0;
while (Timer.set[i])
i++;
return i;
}
/*
Here 's an example of the code in action:
function Ticker ()
{
this.count = 0;
this.timer = new Timer (this);
}
Ticker.prototype.tick = function (d)
{
this.count += d;
window.status = "" + this.count;
this.timer.setTimeout ("tick", 1000, d);
}
window.onload = function ()
{
var ticker = new Ticker ();
ticker.tick (1);
}
*/

View File

@ -0,0 +1,3 @@
/index.html/1.1/Tue Jun 1 04:46:08 2010//
D/turnOffInExplorer////
D/xml////

View File

@ -0,0 +1 @@
screengenerator/htdocs/tests/autocomplete

View File

@ -0,0 +1 @@
:pserver:tv@192.168.2.25:/home/tv/cvs

View File

@ -0,0 +1,387 @@
var autocomplete = new function () {
var me = this;
var inputNodes;
var listContainerNode;
var bodyNode;
var minLength;
var req;
var currentLookupString = "";
var currentFocusedInputNode = null;
var numberCurrentValues;
var lastLookupString ="", lastLookupValues;
me.values = null;
me.x = -1;
me.y = -1;
me.init = function () {
if (EventHelpers.hasPageLoadHappened(arguments)) return;
bodyNode = document.getElementsByTagName('body')[0];
minLength = config.getIntegerValue('autocomplete.values.minLength', 0);
createListContainerNode();
setInitialEvents();
}
function createListContainerNode () {
listContainerNode = document.createElement('div');
listContainerNode.style.display = 'none';
listContainerNode.style.position= 'absolute';
listContainerNode.id = 'autocomplete-selection'
bodyNode.appendChild(listContainerNode);
}
function setInitialEvents () {
inputNodes = CSSHelpers.getElementsByClassName(document,
'autocomplete_input');
for (var i=0; i<inputNodes.length; i++) {
EventHelpers.addEvent(inputNodes[i], 'keyup', keyUpEvent);
EventHelpers.addEvent(inputNodes[i], 'keypress', keyPressEvent);
formNode = DOMHelpers.getAncestorByTagName(inputNodes[i], 'form');
turnOffNativeAutocomplete(formNode);
}
EventHelpers.addEvent(bodyNode, 'click', hideAutocompleteBox);
EventHelpers.addEvent(document, 'click', hideAutocompleteBox)
}
function keyUpEvent(e) {
var key = EventHelpers.getKey(e);
currentFocusedInputNode = EventHelpers.getEventTarget(e);
switch (key) {
case CharCode.DOWN:
moveFocusOnListEvent(e);
break;
case CharCode.ESC:
break;
case CharCode.ENTER:
EventHelpers.preventDefault(e);
break;
default:
getListEvent(e);
}
//getListEvent(e);
}
function keyPressEvent(e) {
var key = EventHelpers.getKey(e);
switch (key) {
case CharCode.DOWN:
moveFocusOnListEvent(e);
EventHelpers.preventDefault(e);
break;
case CharCode.ENTER:
EventHelpers.preventDefault(e);
break;
}
}
function moveFocusOnListEvent(e) {
activeInputNode = EventHelpers.getEventTarget(e);
activeInputNode.blur();
var listNode = getListNode();
// jslog.debug(listNode.nodeName)
var listItemNodes = getListItemNodes();
var firstListItemNode;
if (listItemNodes.length > 0) {
firstListItemNode = listItemNodes[0]
} else {
firstListItemNode = listItemNodes;
}
jslog.debug('firstListItemNode: ' + firstListItemNode.nodeName)
if (firstListItemNode) {
switch (firstListItemNode.nodeName) {
case "OPTION":
//listNode.focus();
//jslog.debug(DebugHelpers.getProperties(firstListItemNode));
firstListItemNode.selected = 'selected';
replaceValue(firstListItemNode);
listNode.focus();
break;
}
//firstListItemNode.focus();
}
//jslog.debug('listNode properties: ' + DebugHelpers.getProperties(listNode))
}
function getListEvent(e) {
activeInputNode = EventHelpers.getEventTarget(e);
currentLookupString=activeInputNode.value;
if (currentLookupString.length < minLength) {
listContainerNode.innerHTML = "";
return;
}
me.x = CSSHelpers.getAbsoluteLeft(activeInputNode);
me.y = CSSHelpers.getAbsoluteTop(activeInputNode)
+ CSSHelpers.getHeight(activeInputNode);
var id=activeInputNode.name.replace(/ /g, '_' );
var URL = config.getScriptedValue('autocomplete.urls.' + id,
{
inputID: id,
inputValue: currentLookupString
});
listContainerNode.innerHTML = config.getValue('autocomplete.templates.pleaseWait');
showAutocompleteBox();
/*
* if this is not the old request with a few letters tacked on,
* do an httpRequest to this. Otherwise, do call setValues().
*/
if (lastLookupString != "" && currentLookupString.toLowerCase().indexOf(lastLookupString.toLowerCase()) == 0) {
showDropDown(lastLookupValues);
} else {
if (req) {
req.abort();
}
req = XMLHelpers.getXMLHttpRequest(URL, getListRequest);
}
}
function getListRequest() {
if (!req) {
//DebugHelpers.log("XMLHttpRequest was null: exiting");
return;
}
if (req.readyState == ReadyState.COMPLETED) {
// only if "OK"
if (req.status == HttpCode.OK) {
var values = req.responseText.split('\n');
showDropDown(values);
lastLookupString=currentLookupString;
lastLookupValues=values;
}
}
}
function showDropDown(values) {
removeAutocompleteBoxEvents();
me.setValues(values);
jslog.debug(numberCurrentValues)
if (numberCurrentValues == 0) {
hideAutocompleteBox();
} else {
jslog.debug('not zeri')
setAutocompleteBoxEvents();
showAutocompleteBox();
}
}
me.setValues = function (values) {
me.values = values;
var lastElement = me.values.pop();
if (lastElement.trim() != "") {
me.values.push(lastElement)
}
if (me.values.length == 0) {
listContainerNode.innerHTML = "";
}
else {
var valuesHTMLSb = new StringBuffer();
numberCurrentValues = 0;
for (var i = 0; i < me.values.length; i++) {
var value = me.values[i].trim();
if (value != "" && value.toLowerCase().indexOf(currentLookupString.toLowerCase()) == 0 ) {
numberCurrentValues++;
valuesHTMLSb.append(config.getScriptedValue('autocomplete.templates.listItem', {
listItem: me.values[i]
}))
}
}
listContainerNode.innerHTML = config.getScriptedValue('autocomplete.templates.list', {
listItemsHTML: valuesHTMLSb.toString()
});
}
}
function selectKeyEvent (e) {
var key = EventHelpers.getKey(e);
switch(key){
case CharCode.ESC:
case CharCode.ENTER:
hideAutocompleteBox(e);
currentFocusedInputNode.focus();
break;
case CharCode.TAB:
focusOnInputField(e);
break;
case CharCode.BACKSPACE:
currentFocusedInputNode.value = "";
hideAutocompleteBox(e);
currentFocusedInputNode.focus();
// prevents browser from going back a page.
EventHelpers.preventDefault(e);
break;
}
}
function focusOnInputField(e) {
currentFocusedInputNode.focus();
if (BrowserDetect.browser == "Explorer") {
EventHelpers.preventDefault(e);
}
}
function showAutocompleteBox () {
CSSHelpers.moveTo(listContainerNode, me.x, me.y)
listContainerNode.style.display = 'block';
}
function hideAutocompleteBox(e) {
listContainerNode.style.display = 'none';
removeAutocompleteBoxEvents();
listContainerNode.innerHTML = '';
}
function getListItemNodes () {
var valueNodes = cssQuery(
config.getValue('autocomplete.selectors.listItem'),
listContainerNode
);
return valueNodes;
}
function getListNode () {
var listNodes = cssQuery(
config.getValue('autocomplete.selectors.list'),
listContainerNode
);
if (listNodes && listNodes.length > 0) {
return listNodes[0];
}
else {
return null;
}
}
function setAutocompleteBoxEvents() {
var valueNodes = getListItemNodes();
var listNode = getListNode();
if (listNode) {
EventHelpers.addEvent(listNode, 'change', replaceValueEvent);
EventHelpers.addEvent(listNode, 'blur', hideAutocompleteBox);
EventHelpers.addEvent(listNode, 'keyup', selectKeyEvent);
EventHelpers.addEvent(listNode, 'keydown', selectKeyEvent);
EventHelpers.addEvent(listNode, 'blur', focusOnInputField);
}
if (valueNodes) {
for (var i = 0; i < valueNodes.length; i++) {
EventHelpers.addEvent(valueNodes[i], 'click', replaceValueEvent);
}
}
}
function removeAutocompleteBoxEvents() {
var valueNodes = getListItemNodes();
var listNode = getListNode();
if (listNode) {
EventHelpers.removeEvent(listNode, 'change', replaceValueEvent);
EventHelpers.removeEvent(listNode, 'blur', hideAutocompleteBox);
}
if (valueNodes) {
for (var i = 0; i < valueNodes.length; i++) {
EventHelpers.removeEvent(valueNodes[i], 'click', replaceValueEvent);
}
}
}
function replaceValueEvent(e){
var valueNode = EventHelpers.getEventTarget(e);
replaceValue(valueNode)
}
function replaceValue(valueNode) {
var value = valueNode.value;
jslog.debug(valueNode.value);
if (!value) {
value = valueNode.innerHTML;
}
activeInputNode.value = value;
}
function turnOffNativeAutocomplete(formNode) {
formNode.setAttribute('autocomplete', 'off');
}
}
EventHelpers.addPageLoadEvent('autocomplete.init');

View File

@ -0,0 +1,34 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<!-- <script type="text/javascript" src="../../shared/js/jslog.js"></script> -->
<script type="text/javascript" src="../../shared/js/helpers.js"></script>
<script type="text/javascript" src="../../shared/js/config.js"></script>
<script type="text/javascript" src="../../shared/js/cssQuery-p.js"></script>
<script type="text/javascript" src="../../shared/js/autocomplete.js"></script>
<link type="text/css" href="../../shared/css/autocomplete.css" rel="stylesheet" media="all" />
</head>
<body>
<form action="http://www.useragentman.com/testForm.php">
<table class="formTable">
<tr>
<th>Homing City #1:</th>
<td><input type="text" id="city" name="city" value="" class="autocomplete_input" /></td>
</tr>
<tr>
<th>Homing City #2:</th>
<td><input type="text" id="city" name="city2" value="" class="autocomplete_input" /></td>
</tr>
</table>
</form>
<div id="config">
<!--
xml=xml/config.xml
-->
</div>
</body>
</html>

View File

@ -0,0 +1 @@
/index.html/1.1/Tue Jun 1 04:45:15 2010//

View File

@ -0,0 +1 @@
screengenerator/htdocs/tests/autocomplete/turnOffInExplorer

View File

@ -0,0 +1 @@
:pserver:tv@192.168.2.25:/home/tv/cvs

View File

@ -0,0 +1,30 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<form action="http://www.useragentman.com/testForm.php">
<table>
<tr>
<th>Username:</th>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<th>Password:</th>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" />
</td>
</tr>
</table>
</form>
</body>
</html>

View File

@ -0,0 +1 @@
/config.xml/1.1/Tue Jun 1 04:45:42 2010//

View File

@ -0,0 +1 @@
screengenerator/htdocs/tests/autocomplete/xml

View File

@ -0,0 +1 @@
:pserver:tv@192.168.2.25:/home/tv/cvs

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<autocomplete>
<urls>
<city>/bin/getList.cgi?inputValue=@inputValue&amp;inputID=cities</city>
<city2>/bin/getList.cgi?inputValue=@inputValue&amp;inputID=cities</city2>
</urls>
<templates>
<list><![CDATA[
<select size="10">@listItemsHTML</select>
]]></list>
<listItem><![CDATA[
<option value="@listItem">@listItem</option>
]]></listItem>
<pleaseWait><![CDATA[
<div id="autocomplete-pleaseWait">
<strong><img src="../../shared/images/icons/spinner.gif" />Please Wait</strong>
</div>
]]></pleaseWait>
</templates>
<selectors>
<listItem>option</listItem>
<list>select</list>
</selectors>
<values>
<minLength>1</minLength>
</values>
</autocomplete>
</config>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,797 @@
/*
Unobtrusive Slider Control by frequency decoder v2.6 (http://www.frequency-decoder.com/)
Released under a creative commons Attribution-Share Alike 3.0 Unported license (http://creativecommons.org/licenses/by-sa/3.0/)
You are free:
* to copy, distribute, display, and perform the work
* to make derivative works
* to make commercial use of the work
Under the following conditions:
by Attribution.
--------------
You must attribute the work in the manner specified by the author or licensor.
sa
--
Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one.
* For any reuse or distribution, you must make clear to others the license terms of this work.
* Any of these conditions can be waived if you get permission from the copyright holder.
*/
var fdSliderController = (function() {
var sliders = {},
uniqueid = 0,
mouseWheelEnabled = true;
var removeMouseWheelSupport = function() {
mouseWheelEnabled = false;
};
var addEvent = function(obj, type, fn) {
if( obj.attachEvent ) {
obj["e"+type+fn] = fn;
obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
obj.attachEvent( "on"+type, obj[type+fn] );
} else { obj.addEventListener( type, fn, true ); }
};
var removeEvent = function(obj, type, fn) {
if( obj.detachEvent ) {
try {
obj.detachEvent( "on"+type, obj[type+fn] );
obj[type+fn] = null;
} catch(err) { };
} else { obj.removeEventListener( type, fn, true ); }
};
var stopEvent = function(e) {
if(e == null) e = document.parentWindow.event;
if(e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
};
/*@cc_on@*/
/*@if(@_win32)
e.cancelBubble = true;
e.returnValue = false;
/*@end@*/
return false;
};
var joinNodeLists = function() {
if(!arguments.length) { return []; };
var nodeList = [];
for (var i = 0; i < arguments.length; i++) {
for (var j = 0, item; item = arguments[i][j]; j++) { nodeList[nodeList.length] = item; };
};
return nodeList;
};
// Function by Artem B. with a minor change by f.d.
var parseCallbacks = function(cbs) {
if(cbs == null) { return {}; };
var func,
type,
cbObj = {},
parts,
obj;
for(var i = 0, fn; fn = cbs[i]; i++) {
type = fn.match(/(fd_slider_cb_(update|create|destroy|redraw|move|focus|blur|enable|disable)_)([^\s|$]+)/i)[1];
fn = fn.replace(new RegExp("^"+type), "").replace(/-/g, ".");
type = type.replace(/^fd_slider_cb_/i, "").replace(/_$/, "");
try {
if(fn.indexOf(".") != -1) {
parts = fn.split('.');
obj = window;
for (var x = 0, part; part = obj[parts[x]]; x++) {
if(part instanceof Function) {
(function() {
var method = part;
func = function (data) { method.apply(obj, [data]) };
})();
} else {
obj = part;
};
};
} else {
func = window[fn];
};
if(!(func instanceof Function)) continue;
if(!(type in cbObj)) { cbObj[type] = []; };
cbObj[type][cbObj[type].length] = func;
} catch (err) {};
};
return cbObj;
};
var parseClassNames = function(cbs) {
if(cbs == null) { return ""; };
var cns = [];
for(var i = 0, cn; cn = cbs[i]; i++) {
cns[cns.length] = cn.replace(/^fd_slider_cn_/, "");
};
return cns.join(" ");
};
var createSlider = function(options) {
if(!options || !options.inp || !options.inp.id) { return false; };
destroySingleSlider(options.inp.id);
sliders[options.inp.id] = new fdSlider(options);
return true;
};
var init = function( elem ) {
var ranges = /fd_range_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/i,
increment = /fd_inc_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/,
kIncrement = /fd_maxinc_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/,
callbacks = /((fd_slider_cb_(update|create|destroy|redraw|move|focus|blur|enable|disable)_)([^\s|$]+))/ig,
classnames = /(fd_slider_cn_([a-zA-Z0-9_\-]+))/ig,
inputs = elem && elem.tagName && elem.tagName.search(/input|select/i) != -1 ? [elem] : joinNodeLists(document.getElementsByTagName('input'), document.getElementsByTagName('select')),
range,
tmp,
options;
for(var i = 0, inp; inp = inputs[i]; i++) {
if((inp.tagName.toLowerCase() == "input" && inp.type == "text" && (inp.className.search(ranges) != -1 || inp.className.search(/fd_slider/) != -1)) || (inp.tagName.toLowerCase() == "select" && inp.className.search(/fd_slider/) != -1)) {
// If we haven't been passed a specific id and the slider exists then continue
if(!elem && inp.id && document.getElementById("fd-slider-"+inp.id)) { continue; };
// Create an id if necessary
if(!inp.id) { inp.id == "sldr" + uniqueid++; };
options = {
inp: inp,
inc: inp.className.search(increment) != -1 ? inp.className.match(increment)[0].replace("fd_inc_", "").replace("d",".") : "1",
maxInc: inp.className.search(kIncrement) != -1 ? inp.className.match(kIncrement)[0].replace("fd_maxinc_", "").replace("d",".") : false,
range: [0,100],
callbacks: parseCallbacks(inp.className.match(callbacks)),
classNames: parseClassNames(inp.className.match(classnames)),
tween: inp.className.search(/fd_tween/i) != -1,
vertical: inp.className.search(/fd_vertical/i) != -1,
hideInput: inp.className.search(/fd_hide_input/i) != -1,
clickJump: inp.className.search(/fd_jump/i) != -1,
fullARIA: inp.className.search(/fd_full_aria/i) != -1,
noMouseWheel: inp.className.search(/fd_disable_mousewheel/i) != -1
};
if(inp.tagName.toLowerCase() == "select") {
options.range = [0, inp.options.length - 1];
} else if(inp.className.search(ranges) != -1) {
range = inp.className.match(ranges)[0].replace("fd_range_", "").replace(/d/g,".").split("_");
options.range = [range[0], range[1]];
};
createSlider(options);
};
};
return true;
};
var destroySingleSlider = function(id) {
if(id in sliders) {
sliders[id].destroy();
delete sliders[id];
return true;
};
return false;
};
var destroyAllsliders = function(e) {
for(slider in sliders) { sliders[slider].destroy(); };
};
var unload = function(e) {
destroyAllsliders();
sliders = null;
removeEvent(window, "unload", unload);
removeEvent(window, "resize", resize);
removeOnloadEvent();
};
var resize = function(e) {
for(slider in sliders) { sliders[slider].onResize(); };
};
var removeOnloadEvent = function() {
removeEvent(window, "load", init);
/*@cc_on@*/
/*@if(@_win32)
removeEvent(window, "load", function() { setTimeout(onload, 200) });
/*@end@*/
};
function fdSlider(options) {
var inp = options.inp,
disabled = false,
tagName = inp.tagName.toLowerCase(),
min = +options.range[0],
max = +options.range[1],
range = Math.abs(max - min),
inc = tagName == "select" ? 1 : +options.inc||1,
maxInc = options.maxInc && options.maxInc != 'undefined' ? options.maxInc : inc * 2;
// alert(options.maxInc + "," + maxInc)
var precision = options.inc.search(".") != -1 ? options.inc.substr(options.inc.indexOf(".")+1, options.inc.length - 1).length : 0,
steps = Math.ceil(range / inc),
useTween = !!options.tween,
fullARIA = !!options.fullARIA,
hideInput = !!options.hideInput,
clickJump = useTween ? false : !!options.clickJump,
vertical = !!options.vertical,
callbacks = options.callbacks,
classNames = options.classNames,
noMWheel = !!options.noMouseWheel,
timer = null,
kbEnabled = true,
sliderH = 0,
sliderW = 0,
tweenX = 0,
tweenB = 0,
tweenC = 0,
tweenD = 0,
frame = 0,
x = 0,
y = 0,
maxPx = 0,
handlePos = 0,
destPos = 0,
mousePos = 0,
deltaPx = 0,
stepPx = 0,
self = this,
changeList = {},
initVal = null,
outerWrapper,
wrapper,
handle,
bar;
if(max < min) {
inc = -inc;
maxInc = -maxInc;
};
function disableSlider(noCallback) {
if(disabled && !noCallback) { return; };
try {
removeEvent(outerWrapper, "mouseover", onMouseOver);
removeEvent(outerWrapper, "mouseout", onMouseOut);
removeEvent(outerWrapper, "mousedown", onMouseDown);
removeEvent(handle, "focus", onFocus);
removeEvent(handle, "blur", onBlur);
if(!window.opera) {
removeEvent(handle, "keydown", onKeyDown);
removeEvent(handle, "keypress", onKeyPress);
} else {
removeEvent(handle, "keypress", onKeyDown);
};
removeEvent(handle, "mousedown", onHandleMouseDown);
removeEvent(handle, "mouseup", onHandleMouseUp);
if(mouseWheelEnabled && !noMWheel) {
if (window.addEventListener && !window.devicePixelRatio) window.removeEventListener('DOMMouseScroll', trackMouseWheel, false);
else {
removeEvent(document, "mousewheel", trackMouseWheel);
removeEvent(window, "mousewheel", trackMouseWheel);
};
};
} catch(err) {};
clearTimeout(timer);
outerWrapper.className = outerWrapper.className.replace("slider-disabled", "") + " slider-disabled";
outerWrapper.setAttribute("aria-disabled", true);
inp.disabled = disabled = true;
if(!noCallback) {
callback("disable");
};
};
function enableSlider(noCallback) {
if(!disabled && !noCallback) return;
addEvent(outerWrapper, "mouseover", onMouseOver);
addEvent(outerWrapper, "mouseout", onMouseOut);
addEvent(outerWrapper, "mousedown", onMouseDown);
if(!window.opera) {
addEvent(handle, "keydown", onKeyDown);
addEvent(handle, "keypress", onKeyPress);
} else {
addEvent(handle, "keypress", onKeyDown);
};
addEvent(handle, "focus", onFocus);
addEvent(handle, "blur", onBlur);
addEvent(handle, "mousedown", onHandleMouseDown);
addEvent(handle, "mouseup", onHandleMouseUp);
outerWrapper.className = outerWrapper.className.replace("slider-disabled", "");
outerWrapper.setAttribute("aria-disabled", false);
inp.disabled = disabled = false;
if(!noCallback) {
callback("enable");
};
};
function destroySlider() {
try {
disableSlider();
outerWrapper.parentNode.removeChild(outerWrapper);
} catch(err) {};
wrapper = bar = handle = outerWrapper = timer = null;
callback("destroy");
callbacks = null;
};
function redraw() {
locate();
// Internet Explorer requires the try catch
try {
var sW = outerWrapper.offsetWidth,
sH = outerWrapper.offsetHeight,
hW = handle.offsetWidth,
hH = handle.offsetHeight,
bH = bar.offsetHeight,
bW = bar.offsetWidth;
maxPx = vertical ? sH - hH : sW - hW;
stepPx = maxPx / steps;
deltaPx = maxPx / Math.ceil(range / maxInc);
sliderW = sW;
sliderH = sH;
valueToPixels();
} catch(err) { };
callback("redraw");
};
function callback(type) {
var cbObj = {"elem":inp, "value":tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value};
if(type in callbacks) {
for(var i = 0, func; func = callbacks[type][i]; i++) {
func(cbObj);
};
};
};
function onFocus(e) {
outerWrapper.className = outerWrapper.className.replace('focused','') + ' focused';
if(mouseWheelEnabled && !noMWheel) {
addEvent(window, 'DOMMouseScroll', trackMouseWheel);
addEvent(document, 'mousewheel', trackMouseWheel);
if(!window.opera) addEvent(window, 'mousewheel', trackMouseWheel);
};
callback("focus");
};
function onBlur(e) {
outerWrapper.className = outerWrapper.className.replace(/focused|fd-fc-slider-hover|fd-slider-hover/g,'');
if(mouseWheelEnabled && !noMWheel) {
removeEvent(document, 'mousewheel', trackMouseWheel);
removeEvent(window, 'DOMMouseScroll', trackMouseWheel);
if(!window.opera) removeEvent(window, 'mousewheel', trackMouseWheel);
};
callback("blur");
};
function trackMouseWheel(e) {
if(!kbEnabled) return;
e = e || window.event;
var delta = 0;
if (e.wheelDelta) {
delta = e.wheelDelta/120;
if (window.opera && window.opera.version() < 9.2) delta = -delta;
} else if(e.detail) {
delta = -e.detail/3;
};
if(vertical) { delta = -delta; };
if(delta) {
var xtmp = vertical ? handle.offsetTop : handle.offsetLeft;
xtmp = (delta < 0) ? Math.ceil(xtmp + deltaPx) : Math.floor(xtmp - deltaPx);
pixelsToValue(Math.min(Math.max(xtmp, 0), maxPx));
}
return stopEvent(e);
};
function onKeyPress(e) {
e = e || document.parentWindow.event;
if ((e.keyCode >= 33 && e.keyCode <= 40) || !kbEnabled || e.keyCode == 45 || e.keyCode == 46) {
return stopEvent(e);
};
return true;
};
function onKeyDown(e) {
if(!kbEnabled) return true;
e = e || document.parentWindow.event;
var kc = e.keyCode != null ? e.keyCode : e.charCode;
if ( kc < 33 || (kc > 40 && (kc != 45 && kc != 46))) return true;
var value = tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
if( kc == 37 || kc == 40 || kc == 46 || kc == 34) {
// left, down, ins, page down
value -= (e.ctrlKey || kc == 34 ? maxInc : inc)
} else if( kc == 39 || kc == 38 || kc == 45 || kc == 33) {
// right, up, del, page up
value += (e.ctrlKey || kc == 33 ? maxInc : inc)
} else if( kc == 35 ) {
// max
value = max;
} else if( kc == 36 ) {
// min
value = min;
};
valueToPixels(value);
callback("update");
// Opera doesn't let us cancel key events so the up/down arrows and home/end buttons will scroll the screen - which sucks
return stopEvent(e);
};
function onMouseOver( e ) {
/*@cc_on@*/
/*@if(@_jscript_version <= 5.6)
if(this.className.search(/focused/) != -1) {
this.className = this.className.replace("fd-fc-slider-hover", "") +' fd-fc-slider-hover';
return;
}
/*@end@*/
this.className = this.className.replace(/fd\-slider\-hover/g,"") +' fd-slider-hover';
};
function onMouseOut( e ) {
/*@cc_on@*/
/*@if(@_jscript_version <= 5.6)
if(this.className.search(/focused/) != -1) {
this.className = this.className.replace("fd-fc-slider-hover", "");
return;
}
/*@end@*/
this.className = this.className.replace(/fd\-slider\-hover/g,"");
};
function onHandleMouseUp(e) {
e = e || window.event;
removeEvent(document, 'mousemove', trackMouse);
removeEvent(document, 'mouseup', onHandleMouseUp);
kbEnabled = true;
// Opera fires the blur event when the mouseup event occurs on a button, so we attept to force a focus
if(window.opera) try { setTimeout(function() { onfocus(); }, 0); } catch(err) {};
document.body.className = document.body.className.replace(/slider-drag-vertical|slider-drag-horizontal/g, "");
return stopEvent(e);
};
function onHandleMouseDown(e) {
e = e || window.event;
mousePos = vertical ? e.clientY : e.clientX;
handlePos = parseInt(vertical ? handle.offsetTop : handle.offsetLeft)||0;
kbEnabled = false;
clearTimeout(timer);
timer = null;
addEvent(document, 'mousemove', trackMouse);
addEvent(document, 'mouseup', onHandleMouseUp);
// Force a "focus" on the button on mouse events
if(window.devicePixelRatio || (document.all && !window.opera)) try { setTimeout(function() { handle.focus(); }, 0); } catch(err) {};
document.body.className += " slider-drag-" + (vertical ? "vertical" : "horizontal");
};
function onMouseUp( e ) {
e = e || window.event;
removeEvent(document, 'mouseup', onMouseUp);
if(!useTween) {
clearTimeout(timer);
timer = null;
kbEnabled = true;
};
return stopEvent(e);
};
function trackMouse( e ) {
e = e || window.event;
pixelsToValue(snapToNearestValue(handlePos + (vertical ? e.clientY - mousePos : e.clientX - mousePos)));
};
function onMouseDown( e ) {
e = e || window.event;
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) targ = targ.parentNode;
if(targ.className.search("fd-slider-handle") != -1) { return true; };
try { setTimeout(function() { handle.focus(); }, 0); } catch(err) { };
clearTimeout(timer);
locate();
timer = null;
kbEnabled = false;
var posx = 0,
sLft = 0,
sTop = 0;
// Internet Explorer doctype woes
if (document.documentElement && document.documentElement.scrollTop) {
sTop = document.documentElement.scrollTop;
sLft = document.documentElement.scrollLeft;
} else if (document.body) {
sTop = document.body.scrollTop;
sLft = document.body.scrollLeft;
};
if (e.pageX) posx = vertical ? e.pageY : e.pageX;
else if (e.clientX) posx = vertical ? e.clientY + sTop : e.clientX + sLft;
posx -= vertical ? y + Math.round(handle.offsetHeight / 2) : x + Math.round(handle.offsetWidth / 2);
posx = snapToNearestValue(posx);
if(useTween) {
tweenTo(posx);
} else if(clickJump) {
pixelsToValue(posx);
} else {
addEvent(document, 'mouseup', onMouseUp);
destPos = posx;
onTimer();
};
};
function incrementHandle(numOfSteps) {
var value = tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
value += inc * numOfSteps;
valueToPixels(value);
};
function snapToNearestValue(px) {
var rem = px % stepPx;
if(rem && rem >= (stepPx / 2)) { px += (stepPx - rem); }
else { px -= rem; };
return Math.min(Math.max(parseInt(px, 10), 0), maxPx);
};
function locate(){
var curleft = 0,
curtop = 0,
obj = outerWrapper;
// Try catch for IE's benefit
try {
while (obj.offsetParent) {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
obj = obj.offsetParent;
};
} catch(err) {};
x = curleft;
y = curtop;
};
function onTimer() {
var xtmp = vertical ? handle.offsetTop : handle.offsetLeft;
xtmp = Math.round((destPos < xtmp) ? Math.max(destPos, Math.floor(xtmp - deltaPx)) : Math.min(destPos, Math.ceil(xtmp + deltaPx)));
pixelsToValue(xtmp);
if(xtmp != destPos) timer = setTimeout(onTimer, steps > 20 ? 50 : 100);
else kbEnabled = true;
};
var tween = function(){
frame++;
var c = tweenC,
d = 20,
t = frame,
b = tweenB,
x = Math.ceil((t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b);
pixelsToValue(t == d ? tweenX : x);
callback("move");
if(t!=d) timer = setTimeout(tween, 20);
else {
clearTimeout(timer);
timer = null;
kbEnabled = true;
};
};
function tweenTo(tx){
kbEnabled = false;
tweenX = parseInt(tx, 10);
tweenB = parseInt(vertical ? handle.style.top : handle.style.left, 10);
tweenC = tweenX - tweenB;
tweenD = 20;
frame = 0;
if(!timer) timer = setTimeout(tween, 20);
};
function pixelsToValue(px) {
//jslog.debug(DebugHelpers.getStackTrace())
handle.style[vertical ? "top" : "left"] = px + "px";
var val = min + (Math.round(px / stepPx) * inc);
setInputValue((tagName == "select" || inc == 1) ? Math.round(val) : val);
};
function valueToPixels(val) {
var value = isNaN(val) ? tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex : val;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
else if(value > Math.max(min,max)) value = Math.max(min,max);
setInputValue(value);
handle.style[vertical ? "top" : "left"] = Math.round(((value - min) / inc) * stepPx) + "px";
};
function setInputValue(val) {
val = isNaN(val) ? min : val;
if(tagName == "select") {
try {
val = parseInt(val, 10);
if(inp.selectedIndex == val) return;
inp.options[val].selected = true;
} catch (err) {};
} else {
val = (min + (Math.round((val - min) / inc) * inc)).toFixed(precision);
if(inp.value == val) return;
inp.value = val;
};
updateAriaValues();
callback("update");
};
function findLabel() {
var label;
if(inp.parentNode && inp.parentNode.tagName.toLowerCase() == "label") label = inp.parentNode;
else {
var labelList = document.getElementsByTagName('label');
// loop through label array attempting to match each 'for' attribute to the id of the current element
for(var i = 0, lbl; lbl = labelList[i]; i++) {
// Internet Explorer requires the htmlFor test
if((lbl['htmlFor'] && lbl['htmlFor'] == inp.id) || (lbl.getAttribute('for') == inp.id)) {
label = lbl;
break;
};
};
};
if(label && !label.id) { label.id = inp.id + "_label"; };
return label;
};
function updateAriaValues() {
handle.setAttribute("aria-valuenow", tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value);
handle.setAttribute("aria-valuetext", tagName == "select" ? inp.options[inp.selectedIndex].text : inp.value);
};
function onChange( e ) {
valueToPixels();
callback("update");
return true;
};
(function() {
if(hideInput) { inp.className += " fd_hide_slider_input"; }
else { addEvent(inp, 'change', onChange); };
outerWrapper = document.createElement('div');
outerWrapper.className = "fd-slider" + (vertical ? "-vertical " : " ") + classNames;
outerWrapper.id = "fd-slider-" + inp.id;
wrapper = document.createElement('span');
wrapper.className = "fd-slider-inner";
bar = document.createElement('span');
bar.className = "fd-slider-bar";
if(fullARIA) {
handle = document.createElement('span');
handle.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "0");
} else {
handle = document.createElement('button');
handle.setAttribute("type", "button");
};
handle.className = "fd-slider-handle";
handle.appendChild(document.createTextNode(String.fromCharCode(160)));
outerWrapper.appendChild(wrapper);
outerWrapper.appendChild(bar);
outerWrapper.appendChild(handle);
inp.parentNode.insertBefore(outerWrapper, inp);
/*@cc_on@*/
/*@if(@_win32)
handle.unselectable = "on";
bar.unselectable = "on";
wrapper.unselectable = "on";
outerWrapper.unselectable = "on";
/*@end@*/
// Add ARIA accessibility info programmatically
handle.setAttribute("role", "slider");
handle.setAttribute("aria-valuemin", min);
handle.setAttribute("aria-valuemax", max);
var lbl = findLabel();
if(lbl) {
handle.setAttribute("aria-labelledby", lbl.id);
handle.id = "fd-slider-handle-" + inp.id;
/*@cc_on
/*@if(@_win32)
lbl.setAttribute("htmlFor", handle.id);
@else @*/
lbl.setAttribute("for", handle.id);
/*@end
@*/
};
// Are there page instructions - the creation of the instructions has been left up to you fine reader...
if(document.getElementById("fd_slider_describedby")) {
handle.setAttribute("aria-describedby", "fd_slider_describedby"); // aaa:describedby
};
if(inp.getAttribute("disabled") == true) {
disableSlider(true);
} else {
enableSlider(true);
};
updateAriaValues();
callback("create");
redraw();
})();
return {
onResize: function(e) { if(outerWrapper.offsetHeight != sliderH || outerWrapper.offsetWidth != sliderW) { redraw(); }; },
destroy: function() { destroySlider(); },
reset: function() { valueToPixels(); },
increment: function(n) { incrementHandle(n); },
disable: function() { disableSlider(); },
enable: function() { enableSlider(); }
};
};
addEvent(window, "load", init);
addEvent(window, "unload", unload);
addEvent(window, "resize", resize);
/*@cc_on@*/
/*@if(@_win32)
var onload = function(e) {
for(slider in sliders) { sliders[slider].reset(); }
};
addEvent(window, "load", function() { setTimeout(onload, 200) });
/*@end@*/
return {
create: function(elem) { init(elem) },
createSlider: function(opts) { createSlider(opts); },
destroyAll: function() { destroyAllsliders(); },
destroySlider: function(id) { return destroySingleSlider(id); },
redrawAll: function() { resize(); },
increment: function(id, numSteps) { if(!(id in sliders)) { return false; }; sliders[id].increment(numSteps); },
addEvent: addEvent,
removeEvent: removeEvent,
stopEvent: stopEvent,
updateSlider: function(id) { if(!(id in sliders)) { return false; }; sliders[id].reset(); },
disableMouseWheel: function() { removeMouseWheelSupport(); },
removeOnLoadEvent: function() { removeOnloadEvent(); },
disableSlider: function(id) { if(!(id in sliders)) { return false; }; sliders[id].disable(); },
enableSlider: function(id) { if(!(id in sliders)) { return false; }; sliders[id].enable(); }
}
})();

View File

@ -0,0 +1,121 @@
// For discussion and comments, see: http://remysharp.com/2009/01/07/html5-enabling-script/
(function(){if(!/*@cc_on!@*/0)return;var e = "abbr,article,aside,audio,canvas,datalist,details,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video".split(','),i=e.length;while(i--){document.createElement(e[i])}})()
var html5 = new function () {
var me = this;
/**
* Given an HTML or XML object, find the an attribute by name.
*
* @param {Object} obj - a DOM object.
* @param {String} attrName - the name of an attribute inside the DOM object.
* @return {Object} - the attribute object or null if there isn't one.
*/
me.getAttributeByName = function (obj, attrName) {
var i;
var attributes = obj.attributes;
for (i=0; i<attributes.length; i++) {
var attr = attributes[i]
if (attr.nodeName == attrName && attr.specified) {
return attr;
}
}
return null;
}
/**
* Given an HTML or XML object, find the value of an attribute.
*
* @param {Object} obj - a DOM object.
* @param {String} attrName - the name of an attribute inside the DOM object.
* @return {String} - the value of the attribute.
*/
me.getAttributeValue = function (obj, attrName) {
var attr = me.getAttributeByName(obj, attrName);
if (attr != null) {
return attr.nodeValue;
} else {
return null;
}
}
/**
* Given an HTML or XML object, set the value of an attribute.
*
* @param {Object} obj - a DOM object.
* @param {String} attrName - the name of an attribute inside the DOM object.
* @param {String} attrValue - the value of the attribute.
*/
me.setAttributeValue = function (obj, attrName, attrValue) {
var attr = me.getAttributeByName(obj, attrName);
if (attr != null) {
attr.nodeValue = attrValue;
} else {
return;
}
}
me.getDefinedAttributes = function (obj) {
var attrs = obj.attributes;
var r = new Array();
for (var i=0; i<attrs.length; i++) {
attr = attrs[i];
if (attr.specified) {
r[attr.name] = attr.value;
}
}
return r;
}
/*
* HTML5 dataset
*/
me.getDataset = function (obj) {
var r = new Array();
var attributes = me.getDefinedAttributes(obj);
//jslog.debug('entered')
for (var i=0; i<attributes.length; i++) {
var attr = attributes[i];
if (attr.indexOf('data-') == 0) {
//jslog.debug('adding ' + name)
var name = attr.substring(5);
//jslog.debug('adding ' + name)
r[name] = attr.value;
}
}
//jslog.debug('dataset = ' + DebugHelpers.getProperties(r))
return r;
}
me.getDatasetItem = function (obj, name) {
var r = me.getAttributeValue(obj, 'data-' + name);
if (!r) {
r = me.getAttributeValue(obj, 'data-' + name.toLowerCase())
}
return r;
}
me.setDatasetItem = function (obj, name, value) {
var attrName = 'data-' + name.toLowerCase();
var val = me.setAttributeValue(obj, attrName, value);
if (me.getAttributeValue(obj, attrName) == null) {
obj[attrName] = value;
}
}
}

View File

@ -0,0 +1,892 @@
var html5Forms = new function () {
var me = this;
var scriptNode = null,
scriptDir = null,
isScriptCompressed = false,
// WebKit less than 534 doesn't show validation UI - we need to check for this (from http://stackoverflow.com/questions/6030522/html5-form-validation-modernizr-safari)
hasNativeBubbles = navigator.userAgent.indexOf('WebKit') < 0 || parseInt(navigator.userAgent.match(/AppleWebKit\/([^ ]*)/)[1].split('.')[0]) > 534,
hasBadValidationImplementation = !hasNativeBubbles; // making another var for this in case we have more criteria in the future.
var globalEvent = document.addEventListener?document.createEvent("HTMLEvents"):null;
function getBrowserLanguage() {
var r = navigator.language;
if (!r) {
r = navigator.browserLanguage;
}
return r;
}
me.start = function () {
var split = navigator.userAgent.split('Firefox/');
//Firefox 3.6 gives a wierd error when using the Twitter API
//unless you do this onload.
if (split.length>=1 && parseFloat(split[1]) <= 3.6) {
EventHelpers.addEvent(window, 'load', me.init);
} else {
me.init();
}
}
me.init = function () {
var scriptNodes = document.getElementsByTagName('script');
for (var i=0; i<scriptNodes.length; i++) {
scriptNode = scriptNodes[i];
if (scriptNode.src.match('html5Forms(_src|-p|)\.js$')) {
scriptNode = scriptNode;
scriptDir = getScriptDir();
if (scriptNode.src.indexOf('html5Forms-p.js') >= 0) {
isScriptCompressed = true;
}
break;
}
}
if (scriptNode) {
if (window.yepnope) {
var inputSupport = Modernizr.inputtypes;
/* let's load the supporting scripts according to what is in data-webforms2-support */
var supportArray = scriptNode.getAttribute('data-webforms2-support');
me.forceJSValidation = (scriptNode.getAttribute('data-webforms2-force-js-validation') == 'true');
me.turnOffValidation = (scriptNode.getAttribute('data-webforms2-turn-off-validation') == 'true');
me.forceJSDatePicker = (scriptNode.getAttribute('data-webforms2-force-js-date-picker') == 'true');
if (!supportArray) {
return;
} else if (trim(supportArray) == 'all') {
supportArray="validation,number,color,date,ouput,range,placeholder";
}
supportArray = supportArray.split(',');
var toLoad = [];
var toRunAfterLoad = [];
var loadHTML5Widgets = false;
for (var i=0; i<supportArray.length; i++) {
var supportReq = trim(supportArray[i]);
switch(supportReq) {
case "validation":
case "autofocus":
if (me.turnOffValidation) {
//me.turnOffNativeValidation();
EventHelpers.addPageLoadEvent('html5Forms.turnOffNativeValidation')
} else {
if (!Modernizr.input.required || hasBadValidationImplementation || me.forceJSValidation) {
if (isScriptCompressed) {
toLoad = toLoad.concat([
scriptDir + '../../shared/js/weston.ruter.net/webforms2/webforms2-p.js']);
} else {
toLoad = toLoad.concat([
scriptDir + '../../shared/js/weston.ruter.net/webforms2/webforms2_src.js']);
}
if (supportReq == 'autofocus') {
loadHTML5Widgets = true;
}
}
}
break;
case "number":
if (!inputSupport.number) {
toLoad = toLoad.concat([
scriptDir + '../../shared/css/number.css']);
loadHTML5Widgets = true;
}
break;
case "color":
if (!inputSupport.color) {
toLoad = toLoad.concat([ scriptDir + '../../shared/js/jscolor/jscolor.js']);
loadHTML5Widgets = true;
}
break;
case "datetime":
case "date":
var lang = scriptNode.getAttribute('data-lang');
/* If data-lang is not set, or is set to an unsupported language, use English by default. */
if (!lang ||
!lang.match(/^(af|al|bg|big5|br|ca|cn|cs|da|de|du|el|en|es|fi|fr|he|hr|hu|it|jp|ko|ko|lt|lt|lv|nl|no|pl|pl|pt|ro|ru|si|sk|sp|sv|tr|zh)$/)){
lang = getBrowserLanguage().split('-')[0];
}
if (!inputSupport.date || me.forceJSDatePicker) {
toLoad = toLoad.concat([
scriptDir + '../../shared/js/jscalendar-1.0/calendar-win2k-1.css',
scriptDir + '../../shared/js/jscalendar-1.0/calendar.js',
scriptDir + '../../shared/js/jscalendar-1.0/lang/calendar-' + lang + '.js',
scriptDir + '../../shared/js/jscalendar-1.0/calendar-setup.js']);
loadHTML5Widgets = true;
}
break;
case "output":
if(!supportsOutput()) {
loadHTML5Widgets = true;
}
break;
case "range":
/* yepnope({
load: ['ie6!' + scriptDir + '../../shared/css/slider.css']
}); */
if(!inputSupport.range) {
toLoad = toLoad.concat([ scriptDir + '../../shared/css/slider.css',
scriptDir + '../../shared/js/frequency-decoder.com/slider.js']);
loadHTML5Widgets = true;
toRunAfterLoad.push('fdSliderController.redrawAll');
}
break;
case "placeholder":
case "autofocus":
if (!Modernizr.input[supportReq]) {
loadHTML5Widgets = true;
}
}
}
if (toLoad.length == 0) {
loadWidgets();
// allow browsers that don't need webforms2 to handle custom error messages populated
// in the data-errormessage attribute
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', setupExtraFeatures, false);
}
} else {
yepnope({
load: toLoad,
complete: function (){
loadWidgets();
setupExtraFeatures();
}
});
}
}
}
function loadWidgets() {
yepnope({
test: loadHTML5Widgets,
yep: scriptDir + '../../shared/js/html5Widgets.js',
complete: function () {
if (loadHTML5Widgets) {
for (var i=0; i<toRunAfterLoad.length; i++) {
eval(toRunAfterLoad[i] + '()');
}
EventHelpers.init();
html5Widgets.init();
//toRunAfterLoad.push('html5Widgets.init');
}
}
})
}
/*
* This should work even when webforms2 is not loaded.
* It sets up extra features for HTML5Forms like:
* 1) Setting custom error messages on form elements.
* 2) setting up isBlank and isBlurred classes.
* 3) settung up form.wf2_submitAttempted
*/
function setupExtraFeatures() {
var nodeNames = ["input", "select", "textarea"];
for (var i=0; i<nodeNames.length; i++) {
var nodes = document.getElementsByTagName(nodeNames[i]);
for (var j=0; j<nodes.length; j++) {
var node = nodes[j];
setErrorMessageEvents(node);
setCustomClassesEvents(node);
setNodeClasses(node, true);
}
if (i==0 && node.type=="submit") {
EventHelpers.addEvent(node, 'click', submitClickEvent);
}
}
var forms = document.getElementsByTagName('form');
for (var i=0; i<forms.length; i++) {
EventHelpers.addEvent(forms[i], 'submit', submitEvent);
EventHelpers.addEvent(forms[i], 'reset', resetEvent);
}
}
function submitEvent(e) {
var target = EventHelpers.getEventTarget(e);
markSubmitAttempt(target);
}
function resetEvent(e) {
var target = EventHelpers.getEventTarget(e);
resetForm(target);
}
function submitClickEvent(e) {
var target = EventHelpers.getEventTarget(e);
markSubmitAttempt(target.form);
}
function markSubmitAttempt(form) {
me.css.addClass(form, 'wf2_submitAttempted');
}
function removeSubmitAttempt(form) {
me.css.removeClass(form, 'wf2_submitAttempted');
}
function resetForm(form) {
removeSubmitAttempt(form);
var nodeNames = ["input", "select", "textarea"];
for (var i=0; i<nodeNames.length; i++) {
var nodes = form.getElementsByTagName(nodeNames[i]);
for (var j=0; j<nodes.length; j++) {
var node = nodes[j];
me.css.removeClass(node, 'wf2_lostFocus');
me.css.removeClass(node, 'wf2_notBlank');
me.css.addClass(node, 'wf2_isBlank');
}
}
}
function setCustomClassesEvents(node) {
EventHelpers.addEvent(node, 'keyup', nodeChangeEvent);
EventHelpers.addEvent(node, 'change', nodeChangeEvent);
EventHelpers.addEvent(node, 'blur', nodeBlurEvent);
}
function nodeChangeEvent(e) {
var node = EventHelpers.getEventTarget(e);
setNodeClasses(node);
}
function setNodeClasses(node, isLoadEvent) {
if (node.value === '') {
me.css.addClass(node, 'wf2_isBlank');
me.css.removeClass(node, 'wf2_notBlank');
} else {
me.css.addClass(node, 'wf2_notBlank');
me.css.removeClass(node, 'wf2_isBlank');
}
if (isLoadEvent && node.nodeName == 'SELECT') {
node.setAttribute('data-wf2-initialvalue', node.value)
}
if ((node.nodeName == 'SELECT' && me.getAttributeValue(node, 'data-wf2-initialvalue') != node.value)
|| (node.nodeName != 'SELECT' && me.getAttributeValue(node, 'value') != node.value)) {
me.css.removeClass(node, 'wf2_defaultValue');
me.css.addClass(node, 'wf2_notDefaultValue');
} else {
me.css.addClass(node, 'wf2_defaultValue');
me.css.removeClass(node, 'wf2_notDefaultValue');
}
}
function nodeBlurEvent(e) {
var node = EventHelpers.getEventTarget(e);
me.css.addClass(node, 'wf2_lostFocus');
}
function setErrorMessageEvents(node) {
var message = me.getAttributeValue(node, 'data-errormessage');
if (message) {
if(document.addEventListener){
node.addEventListener('invalid', showCustomMessageEvent, false);
node.addEventListener('focus', showCustomMessageEvent, false);
// Opera doesn't work well with this.
if (!window.opera) {
node.addEventListener('keypress', clearMessageIfValidEvent, false);
}
node.addEventListener('input', clearMessageIfValidEvent, false);
if (node.nodeName == 'SELECT') {
node.addEventListener('change', clearMessageIfValidEvent, false);
node.addEventListener('click', clearMessageIfValidEvent, false);
}
} else {
var invalidEvent = ' this.setCustomValidity("' + message + '");';
if (node.oninvalid) {
node.oninvalid += invalidEvent;
} else {
node.oninvalid = invalidEvent;
}
node.oninvalid = new Function('event', node.oninvalid);
// IE freaks a little on keypress here, so change to keydown.
node.attachEvent('onkeydown', clearMessageIfValidEvent);
node.attachEvent('oninput', clearMessageIfValidEvent);
if (node.nodeName == 'SELECT') {
node.attachEvent('change', clearMessageIfValidEvent, false);
node.attachEvent('click', clearMessageIfValidEvent, false);
}
}
clearMessageIfValid(node);
}
}
function showCustomMessageEvent(event) {
var node = event.currentTarget || event.srcElement;
showCustomMessage(node);
}
function showCustomMessage(node) {
if (node.validity.valid) {
return;
}
var message = me.getAttributeValue(node, 'data-errormessage');
node.setCustomValidity(message)
//console.log('set custom validity')
}
function clearMessageIfValidEvent (event) {
//console.log(event.type)
var node = event.currentTarget || event.srcElement;
clearMessageIfValid(node);
}
function clearMessageIfValid(node) {
if (!node.setCustomValidity) {
// this happens when webforms2 is not loaded yet. Bail.
return;
}
node.setCustomValidity('');
if (!node.checkValidity()) {
showCustomMessage(node);
//console.log('invalid')
if (document.addEventListener) {
globalEvent.initEvent('invalid', true, true); // event type,bubbling,cancelable
node.dispatchEvent(globalEvent);
}
} else {
//console.log('valid')
}
}
}
me.turnOffNativeValidation = function () {
var formNodes = document.getElementsByTagName('form');
for (var i=0; i<formNodes.length; i++) {
formNodes[i].setAttribute('novalidate', 'novalidate');
}
}
var supportsOutput = function () {
var outputEl = document.createElement('output');
return (outputEl.value != undefined && (outputEl.onforminput !== undefined || outputEl.oninput !== undefined));
}
var getScriptDir = function () {
var arr = scriptNode.src.split('/');
arr.pop();
return arr.join('/') + '/';
}
me.getAttributeByName = function (obj, attrName) {
var i;
var attributes = obj.attributes;
for (var i=0; i<attributes.length; i++) {
var attr = attributes[i]
if (attr.nodeName == attrName && attr.specified) {
return attr;
}
}
return null;
}
me.getAttributeValue = function (obj, attrName) {
var attr = me.getAttributeByName(obj, attrName);
if (attr != null) {
return attr.nodeValue;
} else {
return null;
}
}
var initWhitespaceRe = /^\s\s*/;
var endWhitespaceRe = /\s\s*$/;
function trim(str) {
return str.replace(initWhitespaceRe, '')
.replace(endWhitespaceRe, '');
}
me.css = new function () {
var me = this;
var blankRe = new RegExp('\\s');
/**
* Generates a regular expression string that can be used to detect a class name
* in a tag's class attribute. It is used by a few methods, so I
* centralized it.
*
* @param {String} className - a name of a CSS class.
*/
function getClassReString(className) {
return '\\s'+className+'\\s|^' + className + '\\s|\\s' + className + '$|' + '^' + className +'$';
}
function getClassPrefixReString(className) {
return '\\s'+className+'-[0-9a-zA-Z_]+\\s|^' + className + '[0-9a-zA-Z_]+\\s|\\s' + className + '[0-9a-zA-Z_]+$|' + '^' + className +'[0-9a-zA-Z_]+$';
}
/**
* Make an HTML object be a member of a certain class.
*
* @param {Object} obj - an HTML object
* @param {String} className - a CSS class name.
*/
me.addClass = function (obj, className) {
if (blankRe.test(className)) {
return;
}
// only add class if the object is not a member of it yet.
if (!me.isMemberOfClass(obj, className)) {
obj.className += " " + className;
}
}
/**
* Make an HTML object *not* be a member of a certain class.
*
* @param {Object} obj - an HTML object
* @param {Object} className - a CSS class name.
*/
me.removeClass = function (obj, className) {
if (blankRe.test(className)) {
return;
}
var re = new RegExp(getClassReString(className) , "g");
var oldClassName = obj.className;
if (obj.className) {
obj.className = oldClassName.replace(re, ' ');
}
}
/**
* Determines if an HTML object is a member of a specific class.
* @param {Object} obj - an HTML object.
* @param {Object} className - the CSS class name.
*/
me.isMemberOfClass = function (obj, className) {
if (blankRe.test(className))
return false;
var re = new RegExp(getClassReString(className) , "g");
return (re.test(obj.className));
}
}
}
/*******************************************************************************
* This notice must be untouched at all times.
*
* This javascript library contains helper routines to assist with event
* handling consistently among browsers
*
* EventHelpers.js v.1.4 available at http://www.useragentman.com/
*
* released under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
* Chagelog: 1.4: fix fireEvent to work correctly for IE9.
*
*******************************************************************************/
var EventHelpers = new function(){
var me = this;
var safariTimer;
var isSafari = /WebKit/i.test(navigator.userAgent);
var isIEPolling = false;
var globalEvent;
var safariVer = navigator.userAgent.match(/Version\/([^\s]*)/);
if (safariVer != null && safariVer.length == 2) {
safariVer = parseFloat(safariVer[1]);
}
me.init = function () {
if (me.hasPageLoadHappened(arguments)) {
return;
}
/* This is for fireEvent */
if (document.createEvent) {
globalEvent = document.createEvent("HTMLEvents");
} else if (document.createEventObject){
// dispatch for IE8 and lower.
globalEvent = document.createEventObject();
}
me.docIsLoaded = true;
}
/**
* Adds an event to the document. Examples of usage:
* me.addEvent(window, "load", myFunction);
* me.addEvent(docunent, "keydown", keyPressedFunc);
* me.addEvent(document, "keyup", keyPressFunc);
*
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/
* @param {Object} obj - a javascript object.
* @param {String} evType - an event to attach to the object.
* @param {Function} fn - the function that is attached to the event.
*/
me.addEvent = function(obj, evType, fn){
if (obj.addEventListener) {
obj.addEventListener(evType, fn, false);
} else if (obj.attachEvent) {
obj['e' + evType + fn] = fn;
obj[evType + fn] = function(){
obj["e" + evType + fn](self.event);
}
obj.attachEvent("on" + evType, obj[evType + fn]);
}
}
/**
* Removes an event that is attached to a javascript object.
*
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/ * @param {Object} obj - a javascript object.
* @param {String} evType - an event attached to the object.
* @param {Function} fn - the function that is called when the event fires.
*/
me.removeEvent = function(obj, evType, fn){
if (obj.removeEventListener) {
obj.removeEventListener(evType, fn, false);
} else if (obj.detachEvent) {
try {
obj.detachEvent("on" + evType, obj[evType + fn]);
obj[evType + fn] = null;
obj["e" + evType + fn] = null;
}
catch (ex) {
// do nothing;
}
}
}
/**
* Find the HTML object that fired an Event.
*
* @param {Object} e - an HTML object
* @return {Object} - the HTML object that fired the event.
*/
me.getEventTarget = function(e){
// first, IE method for mouse events(also supported by Safari and Opera)
if (e.toElement) {
return e.toElement;
// W3C
} else if (e.currentTarget) {
return e.currentTarget;
// MS way
} else if (e.srcElement) {
return e.srcElement;
} else {
return null;
}
}
/**
* Given an event fired by the keyboard, find the key associated with that event.
*
* @param {Object} e - an event object.
* @return {String} - the ASCII character code representing the key associated with the event.
*/
me.getKey = function(e){
if (e.keyCode) {
return e.keyCode;
} else if (e.event && e.event.keyCode) {
return window.event.keyCode;
} else if (e.which) {
return e.which;
}
}
function mylog(s) {
if (window.console && window.console.log) {
console.log(s);
}
}
/**
* Will execute a function when the page's DOM has fully loaded (and before all attached images, iframes,
* etc., are).
*
* Usage:
*
* EventHelpers.addPageLoadEvent('init');
*
* where the function init() has this code at the beginning:
*
* function init() {
*
* if (EventHelpers.hasPageLoadHappened(arguments)) return;
*
* // rest of code
* ....
* }
*
* @author This code is based off of code from http://dean.edwards.name/weblog/2005/09/busted/ by Dean
* Edwards, with a modification by me.
*
* @param {String} funcName - a string containing the function to be called.
*/
me.addPageLoadEvent = function(funcName, timerForIE){
var func = eval(funcName);
// for Internet Explorer < 9 (using conditional comments)
/*@cc_on @*/
/*@if (@_win32 && @_jscript_version < 10)
if (timerForIE) {
isIEPolling = true;
} else {
pageLoadEventArray.push(func);
return;
}
/*@end @*/
// if document is already loaded, then just execute.
if (!isIEPolling && /loaded|complete|interactive/.test(document.readyState)) {
mylog('execute immediately')
func();
return;
}
if ((isSafari && safariVer < 3.1) || isIEPolling) { // sniff
mylog('polling')
pageLoadEventArray.push(func);
if (!safariTimer) {
safariTimer = setInterval(function(){
if (/loaded|complete/.test(document.readyState)) {
clearInterval(safariTimer);
/*
* call the onload handler
* func();
*/
me.runPageLoadEvents();
return;
}
set = true;
}, 10);
}
/* for Mozilla */
} else if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", func, null);
mylog("DOMContentLoaded " + document.readyState);
/* Others */
} else {
mylog('window.load')
me.addEvent(window, 'load', func);
}
}
var pageLoadEventArray = new Array();
me.runPageLoadEvents = function(e){
if (isSafari || isIEPolling || e.srcElement.readyState == "complete") {
for (var i = 0; i < pageLoadEventArray.length; i++) {
pageLoadEventArray[i]();
}
}
}
/**
* Determines if either addPageLoadEvent('funcName') or addEvent(window, 'load', funcName)
* has been executed.
*
* @see addPageLoadEvent
* @param {Function} funcArgs - the arguments of the containing. function
*/
me.hasPageLoadHappened = function(funcArgs){
// If the function already been called, return true;
if (funcArgs.callee.done)
return true;
// flag this function so we don't do the same thing twice
funcArgs.callee.done = true;
}
/**
* Used in an event method/function to indicate that the default behaviour of the event
* should *not* happen.
*
* @param {Object} e - an event object.
* @return {Boolean} - always false
*/
me.preventDefault = function(e){
if (e.preventDefault) {
e.preventDefault();
}
try {
e.returnValue = false;
}
catch (ex) {
// do nothing
}
}
/*
* Fires an event manually.
* @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events
* @author John Resig - http://ejohn.org/projects/flexible-javascript-events/
* @param {Object} obj - a javascript object.
* @param {String} evType - an event attached to the object.
* @param {Function} fn - the function that is called when the event fires.
*
*/
me.fireEvent = function (element,event, options){
if(!element) {
return;
}
if (element.dispatchEvent) {
// dispatch for firefox + ie9 + others
globalEvent.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(globalEvent);
} else if (document.createEventObject){
return element.fireEvent('on' + event, globalEvent)
} else {
return false;
}
}
/*
* Detects whether the event "eventName" is supported on a tag with name
* "nodeName". Based on code from
* http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
*/
me.isSupported = function (eventName, nodeName) {
var el = document.createElement(nodeName);
eventName = 'on' + eventName;
var isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, 'return;');
isSupported = typeof el[eventName] == 'function';
}
el = null;
return isSupported;
}
/* EventHelpers.init () */
function init(){
// Conditional comment alert: Do not remove comments. Leave intact.
// The detection if the page is secure or not is important. If
// this logic is removed, Internet Explorer will give security
// alerts.
/*@cc_on @*/
/*@if (@_win32)
document.write('<script id="__ie_onload" defer src="' +
((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>');
var script = document.getElementById("__ie_onload");
me.addEvent(script, 'readystatechange', me.runPageLoadEvents);
/*@end @*/
}
if (!window.html5Forms) {
init();
}
}
html5Forms.start();

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,761 @@
2005-03-07 Mihai Bazon <mihai_bazon@yahoo.com>
* skins/aqua/theme.css: *** empty log message ***
* release-notes.html: updated release notes
* calendar-setup.js:
use a better approach to initialize the calendar--don't call _init twice,
it's the most time consuming function in the calendar. Instead, determine
the date beforehand if possible and pass it to the calendar at constructor.
* calendar.js:
avoid keyboard operation when 'multiple dates' is set (very buggy for now)
* calendar.js:
fixed keyboard handling problems: now it works fine when "showsOtherMonths"
is passed; it also seems to be fine with disabled dates (won't normally
allow selection)--however this area is still likely to be buggy, i.e. in a
month that has all the dates disabled.
* calendar.js:
some trivial performance improvements in the _init function
Added Date.parseDate (old Calendar.prototype.parseDate now calls this one)
2005-03-05 Mihai Bazon <mihai_bazon@yahoo.com>
* release-notes.html: updated release notes
* dayinfo.html: *** empty log message ***
* calendar-setup.js:
bugfix--update an inputField even if flat calendar is selected
* calendar.js:
fixed bugs in parseDate function (if for some reason the input string is
totally broken, then check numbers for NaN and use values from the current
date instead)
* make-release.pl: copy the skins subdirectory and all skins
* index.html: added Aqua skin
* skins/aqua/active-bg.gif, skins/aqua/dark-bg.gif, skins/aqua/hover-bg.gif, skins/aqua/menuarrow.gif, skins/aqua/normal-bg.gif, skins/aqua/rowhover-bg.gif, skins/aqua/status-bg.gif, skins/aqua/theme.css, skins/aqua/title-bg.gif, skins/aqua/today-bg.gif:
in the future, skins will go to this directory, each in a separate subdir; for now there's only Aqua, an excellent new skin
* calendar.js: workaround IE bug, needed in the Aqua theme
don't hide select elements unless browser is IE or Opera
* lang/calendar-bg.js, lang/calendar-big5-utf8.js, lang/calendar-big5.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-utf8.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-de.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fi.js, lang/calendar-fr.js, lang/calendar-he-utf8.js, lang/calendar-hu.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-lt-utf8.js, lang/calendar-lt.js, lang/calendar-lv.js, lang/calendar-nl.js, lang/calendar-no.js, lang/calendar-pl-utf8.js, lang/calendar-pl.js, lang/calendar-pt.js, lang/calendar-ro.js, lang/calendar-ru.js, lang/calendar-ru_win_.js, lang/calendar-si.js, lang/calendar-sk.js, lang/calendar-sp.js, lang/calendar-sv.js, lang/calendar-zh.js, lang/cn_utf8.js:
updated urls, copyright notices
* doc/reference.tex: updated documentation
* calendar.js, index.html:
renamed the global variable to _dynarch_popupCalendar to avoid name clashes
* multiple-dates.html: start with an empty array
* calendar.js:
fixed bugs in the time selector (12:XX pm was wrongfully understood as 12:XX am)
* calendar.js:
using innerHTML instead of text nodes; works better in Safari and also makes
a smaller, cleaner code
2005-03-04 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
fixed a performance regression that occurred after adding support for multiple dates
fixed the time selection bug (now it keeps time correctly)
clicking today will close the calendar if "today" is already selected
* lang/cn_utf8.js: new translation
2005-02-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ar-utf8.zip: Added arabic translation
2004-10-19 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-zh.js: updated
2004-09-20 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: updated (Daniel Holmen)
2004-09-20 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: updated (Daniel Holmen)
2004-08-11 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-nl.js: updated language file (thanks to Arjen Duursma)
* lang/calendar-sp.js: updated (thanks to Rafael Velasco)
2004-07-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated
* calendar-setup.js: fixed bug (dateText)
2004-07-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated
* calendar-setup.js: fixed bug (dateText)
2004-07-04 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-lv.js:
added LV translation (thanks to Juris Valdovskis)
2004-06-25 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
fixed bug in IE (el.calendar.tooltips is null or not an object)
2004-06-24 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed latex compilation
* index.html: linking other sample files
* calendar-setup.js, calendar.js, dayinfo.html:
ability to display day info (dateText parameter) + sample file
2004-06-23 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex, lang/calendar-bg.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-nl.js, lang/calendar-sv.js, README, calendar.js, index.html:
email address changed
2004-06-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-cs-utf8.js, lang/calendar-cs-win.js:
updated translations
* calendar-system.css: added z-index to drop downs
* lang/calendar-en.js:
first day of week can now be part of the language file
* lang/calendar-es.js:
updated language file (thanks to Servilio Afre Puentes)
* calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar-blue.css:
added z-index property to drop downs (fixes bug)
2004-06-13 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js: fixed bug (apply showOthers to flat calendars too)
2004-06-06 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
firstDay defaults to "null", in which case the value in the language file
will be used
* calendar.js:
firstDayOfWeek can now default to a value specified in the language definition file
* index.html: first day of week is now numeric
2004-06-02 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: added date tooltip function
2004-05-28 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated (thanks to Marcos Pont)
* calendar-setup.js: fixed small bug
2004-05-01 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js: returns the calendar object
2004-04-28 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
patch to read the date value from the inputField, according to ifFormat (if
both are passed), for flat calendars. (thanks Colin T. Hill)
2004-04-20 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js, calendar.js, multiple-dates.html:
added support for multiple dates selection
* lang/calendar-nl.js:
updated Dutch translation, thanks to Jeroen Wolsink
* lang/calendar-big5-utf8.js, lang/calendar-big5.js:
Traditional Chinese language (thanks GaryFu)
2004-03-26 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js, lang/calendar-pt.js: updated
* lang/calendar-ru_win_.js, lang/calendar-ru.js:
updated, thanks to Sly Golovanov
2004-03-25 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: updated (thanks to David Duret)
2004-03-24 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-da.js: updated (thanks to Michael Thingmand Henriksen)
2004-03-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ca.js: updated (thanks to David Valls)
2004-03-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-de.js: updated to UTF8 (thanks to Jack (tR))
2004-03-09 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-bg.js: Bulgarian translation
2004-03-08 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-he-utf8.js: Hebrew translation (thanks to Idan Sofer)
* lang/calendar-hu.js: updated (thanks to Istvan Karaszi)
2004-02-27 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-it.js: updated (thanks to Fabio Di Bernardini)
2004-02-25 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: fix for Safari (thanks to Olivier Chirouze / XPWeb)
2004-02-22 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-al.js: Albanian language file
2004-02-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: fixed
* lang/calendar-fr.js:
FR translation updated (thanks to SIMON Alexandre)
* lang/calendar-es.js: ES translation updated, thanks to David Gonzales
2004-02-10 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pt.js:
updated Portugese translation, thanks to Elcio Ferreira
2004-02-09 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated
2004-02-06 Mihai Bazon <mihai_bazon@yahoo.com>
* README: describe the PHP files
* make-release.pl: includes php files
* make-release.pl: ChangeLog included in the distribution (if found)
* calendar.js, doc/reference.tex, index.html: switched to version 0.9.6
* doc/Calendar.setup.tex, doc/reference.tex: updated documentation
* release-notes.html: updated release notes
* calendar.js: Fixed bug: Feb/29 and year change now keeps Feb in view
* calendar.js: fixed the "ESC" problem (call the close handler)
* calendar.js: fixed day of year range (1 to 366 instead of 0 to 365)
* calendar.js: fixed week number calculations
* doc/reference.tex: fixed (date input format)
* calendar.php: removed comment
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js:
workaround for IE bug (you can't normally specify through CSS the style for
an element having two classes or more; we had to change a classname)
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
smaller fonts on days that are in neighbor months
2004-02-04 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: first demo shows the "showOtherMonths" capability
* calendar-setup.js: support new parameters in the calendar.
added: firstDay, showOthers, cache.
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, lang/calendar-en.js, lang/calendar-ro.js:
new parameters: firstDayOfWeek, showsOtherMonths; removed mondayFirst.
This adds support for setting any day to be the first day of week (by just
clicking the day name in the display); also, if showsOtherMonths is enabled
then dates belonging to adjacent months that are in the current view will be
displayed and the calendar will have a fixed height.
all themes updated.
* test.php: test for calendar.php
* calendar.php: fixed bug (pass numeric values as numbers)
2004-02-01 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.php: added PHP wrapper
* img.gif: icon updated
* TODO: updated TODO list
2004-01-27 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
Janusz Piwowarski sent over a patch for IE5 compatibility which is much more
elegant than the atrocities that I had wrote :-D I'm gettin' old.. Thanks Janusz!
* lang/calendar-fi.js: updated
2004-01-15 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated TODO list
* calendar-setup.js: default align changed to "Br"
* doc/reference.tex: changed default value for "align"
* calendar-setup.js: calling onchange event handler, if available
* calendar-setup.js: added "position" option
* simple-1.html: demonstrates "step" option
* calendar-setup.js: added "step" option
* calendar.js: added yearStep config parameter
* calendar.js:
fixed parseDate routine (the NaN bug which occurred when there was a space
after the date and no time)
2004-01-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-en.js: added "Time:"
* test-position.html: test for the new position algorithm
* index.html: do not destroy() the calendar
avoid bug in parseDate (%p must be separated by non-word characters)
* menuarrow2.gif: for calendar-blue2.css
* calendar-setup.js: honor "date" parameter if passed
* calendar.js: IE5 support is back
performance improvements in IE6 (mouseover combo boxes)
display "Time:" beside the clock area, if defined in the language file
new positioning algorithm (try to keep the calendar in page)
rewrote parseDate a little cleaner
* lang/calendar-el.js:
updated Greek translation (thanks Alexandros Pappas)
2004-01-13 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: added style blue2, using utf-8 instead of iso-8859-2
* calendar.js: performance under IE (which sucks, by the way)
* doc/reference.tex: Sunny added to sponsor list
* doc/Calendar.setup.tex: documenting parameter 'electric'
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
fixed IE text size problems
2004-01-08 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pl.js:
Polish translation updated to UTF-8 (thanks to Artur Filipiak)
2004-01-07 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-si.js: updated (David Milost)
* lang/calendar-si.js: Slovenian translation (thanks to David Milost)
2003-12-21 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated TODO list
* lang/calendar-de.js: German translation (thanks to Peter Strotmann)
2003-12-19 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: Thank you, Ian Barrak
2003-12-18 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed documentation bug (thanks Mike)
2003-12-05 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ko-utf8.js:
UTF8 version of the Korean language (hopefully correct)
* lang/calendar-pl-utf8.js, lang/calendar-pl.js:
updated Polish translation (thanks to Janusz Piwowarski)
2003-12-04 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js:
French translation updated (thanks to Angiras Rama)
2003-11-22 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-da.js: updated (thanks to Jesper M. Christensen)
2003-11-20 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-blue2.css, calendar-tas.css:
new styles (thanks to Wendall Mosemann for blue2, Mark Lynch for tas)
* lang/calendar-lt-utf8.js, lang/calendar-lt.js:
Lithuanian translation (thanks to Martynas Majeris)
* lang/calendar-sp.js: updated
2003-11-17 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: added TODO list
2003-11-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ko.js: Korean translation (thanks to Yourim Yi)
2003-11-12 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-jp.js: small bug fixed (thanks to TAHARA Yusei)
2003-11-10 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: translation updated, thanks to Florent Ramiere
* calendar-setup.js:
added new parameter: electric (if false then the field will not get updated on each move)
* index.html: fixed DOCTYPE
2003-11-07 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
fixed minor problem (maybe we're passing object reference instead of ID for
the flat calendar parent)
2003-11-06 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fi.js:
added Finnish translation (thanks to Antti Tuppurainen)
2003-11-05 Mihai Bazon <mihai_bazon@yahoo.com>
* release-notes.html: fixed typo
* doc/reference.tex, index.html, calendar.js: 0.9.5
* README: fixed license statement
* release-notes.html: updated release notes (0.9.5)
2003-11-03 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-de.js:
updated German translation (thanks to Gerhard Neiner)
* calendar-setup.js: fixed license statement
* calendar.js: whitespace
* calendar.js: fixed license statement
* calendar.js:
fixed positioning problem when input field is inside scrolled divs
2003-11-01 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-af.js: Afrikaan language (thanks to Derick Olivier)
2003-10-31 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-it.js:
updated IT translation (thanks to Christian Blaser)
* lang/calendar-es.js: updated ES translation, thanks to Raul
2003-10-30 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-hu.js: updated thanks to Istvan Karaszi
* index.html, simple-1.html, simple-2.html, simple-3.html:
switched to utf-8 all encodings
* lang/calendar-sk.js:
added Slovak translation (thanks to Peter Valach)
* lang/calendar-ro.js: switched to utf-8
2003-10-29 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-es.js:
updated translation, thanks to Jose Ma. Martinez Miralles
* doc/reference.tex:
fixed the footnote problem (thanks Dominique de Waleffe for the tip)
* lang/calendar-ro.js: fixed typo
* lang/calendar-sv.js: oops, license should be LGPL
* lang/calendar-sw.js: new swedish translation is calendar-sv.js
* menuarrow.gif, menuarrow.png:
oops, forgot little drop-down menu arrows
* lang/calendar-sv.js: swedish translation thanks to Leonard Norrgard
* index.html: oops, some other minor changes
* index.html, release-notes.html:
latest changes in release-notes and index page for 0.9.4
* doc/reference.tex, calendar.js:
added %s date format (# of seconds since Epoch)
* calendar.js:
A click on TODAY will not close the calendar, even in single-click mode
2003-10-28 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: previous cal.html
* cal.html: moved to index.html
* README, cal.html, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, release-notes.html:
LGPL license, forever.
* doc/Calendar.setup.tex, simple-1.html:
doc updated for the onUpdate parameter to Calendar.setup
2003-10-26 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: fixed bug (correct display of the dropdown menus)
* doc/Calendar.setup.tex, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-setup.js, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, release-notes.html, simple-1.html, simple-3.html:
lots of changes for the 0.9.4 release (see the release-notes.html)
2003-10-15 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex:
documentation updated for 0.9.4 (not yet finished though)
2003-10-07 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js, doc/reference.tex, release-notes.html, README, cal.html, calendar-setup.js:
modified project website
2003-10-06 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
added some properties (onSelect, onClose, date) (thanks altblue)
2003-09-24 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-3.html: dateIsSpecial does not need the "date" argument ;-)
2003-09-24 fsoft <fsoft@mishoo>
* calendar.js, simple-3.html:
added year, month, day to getDateStatus() function
2003-09-24 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-3.html: example on how to use special dates
* calendar-setup.js, calendar.js, simple-1.html:
support for special dates (thanks fabio)
2003-09-17 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed error in section 3.
2003-08-01 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-jp.js: added Japanese translation
2003-07-16 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-1.html: fixed problem with first example [IE,Opera]
2003-07-09 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/Calendar.setup.tex: fixed typo (closing parenthesis)
* lang/calendar-de.js:
added German translation, thanks to Hartwig Weinkauf
2003-07-08 Mihai Bazon <mihai_bazon@yahoo.com>
* cal.html: added link to release-notes
* release-notes.html: 0.9.3 release notes
* make-release.pl:
Script to create distribution archive. It needs some additional packages:
- LaTeX
- tex2page
- jscrunch (JS compressor)
* doc/html/makedoc.sh, doc/html/reference.css, doc/reference.tex, doc/makedoc.sh:
documentation updates...
* calendar.js: added semicolon to make the code "compressible"
2003-07-06 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: spell checked
* doc/reference.tex: [minor] changed credits order
* doc/reference.tex: various improvements and additions
* doc/html/reference.css: minor eye-candy tweaks
2003-07-05 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/html/Calendar.setup.html.tex, doc/html/makedoc.sh, doc/html/reference.css, doc/html/reference.t2p, doc/hyperref.cfg, doc/makedoc.sh, doc/reference.tex, doc/Calendar.setup.tex, doc/Calendar.setup.pdf.tex:
full documentation in LaTeX, for PDF and HTML formats
* simple-2.html:
added demonstration of flat calendar with Calendar.setup
* simple-1.html:
modified some links, added link to documentation, added demonstration of
disableFunc property
* calendar-setup.js: added the ability to create flat calendar too
* cal.html: added links to documentation and simple-[12].html pages
* README: up-to-date...
* calendar-setup.html: removed: the documentation is unified
2003-07-03 Mihai Bazon <mihai_bazon@yahoo.com>
* cal.html: some links to newly added files
* calendar-setup.html, calendar-setup.js, img.gif, simple-1.html:
added some files to simplify calendar creation for non-(JS)-programmers
* lang/calendar-zh.js: added simplified chinese (thanks ATang)
2003-07-02 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: * "yy"-related... [small fix]
* calendar.js:
* #721833 fixed (yy format will understand years prior to 29 as 20xx)
* calendar.js: * added refresh() function
* calendar.js: * fixed bug when in single click mode
* added alignment options to "showAtElement" member function
2003-06-25 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pt.js:
added portugese translation (thanks Nuno Barreto)
2003-06-24 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
call user handler when the date was changed using the keyboard
* bugtest-hidden-selects.html:
file to test bug with hidden select-s (thanks Ying Zhang for reporting and for this test file)
* lang/calendar-hr-utf8.js:
added croatian translation in utf8 (thanks Krunoslav Zubrinic)
2003-06-23 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-hu.js: added hungarian translation
* lang/calendar-hr.js:
added croatian translation (thanks to Krunoslav Zubrinic)
2003-06-22 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
* #723335 fixed (clicking TODAY will not select the today date if the
disabledHandler rejects it)
* cal.html: * new code for to work with fix for bug #703238
* switch to new version
* calendar.js:
* some patches to make code compatible with Opera 7 (well, almost compatible)
* bug #703238 fixed (fix breaks compatibility with older code that uses
calendar in single-click mode)
* bug #703814 fixed
2003-04-09 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-tr.js: added turkish lang file
2003-03-19 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ru.js: russian translation added
* lang/calendar-no.js: norwegian translation added
2003-03-15 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: norwegian translation
2003-03-12 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pl.js: added polish translation
2003-03-11 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
bugfix in parseDate (added base to parseInt, thanks Alan!)
2003-03-05 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
New file.
* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
moved to CVS at sourceforge.net
release: 0.9.2 + new language packs
* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
New file.
* README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
moved to CVS at sourceforge.net
release: 0.9.2 + new language packs

View File

@ -0,0 +1,33 @@
The DHTML Calendar
-------------------
Author: Mihai Bazon, <mihai_bazon@yahoo.com>
http://dynarch.com/mishoo/
This program is free software published under the
terms of the GNU Lesser General Public License.
For the entire license text please refer to
http://www.gnu.org/licenses/lgpl.html
Contents
---------
calendar.js -- the main program file
lang/*.js -- internalization files
*.css -- color themes
cal.html -- example usage file
doc/ -- documentation, in PDF and HTML
simple-1.html -- quick setup examples [popup calendars]
simple-2.html -- quick setup example for flat calendar
calendar.php -- PHP wrapper
test.php -- test file for the PHP wrapper
Homepage
---------
For details and latest versions please refer to calendar
homepage, located on my website:
http://dynarch.com/mishoo/calendar.epl

View File

@ -0,0 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>calendar test</title>
<link type="text/css" rel="stylesheet" href="calendar-system.css" />
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript" src="lang/calendar-en.js" ></script>
<script type="text/javascript" src="calendar-setup.js"></script>
<script type="text/javascript" src="calendar-handler.js"></script>
</head>
<body>
<form action="http://www.useragentman.com/testForm.php" method="get">
<div>
<input type="hidden" id="f_date" name="date" />
<button type="reset" class="submit button" id="f_date_trigger">...</button>
<span id="f_date_show">click the button for a calendar</span>
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,108 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">
<head>
<title>Bug</title>
<link rel="stylesheet" type="text/css" media="all" href="calendar-win2k-1.css" title="win2k-1" />
<!-- import the calendar script -->
<script type="text/javascript" src="calendar.js"></script>
<!-- import the language module -->
<script type="text/javascript" src="lang/calendar-en.js"></script>
<!-- helper script that uses the calendar -->
<script type="text/javascript">
// This function gets called when the end-user clicks on some date.
function selected(cal, date) {
cal.sel.value = date; // just update the date in the input field.
if (cal.sel.id == "sel1" || cal.sel.id == "sel3")
// if we add this call we close the calendar on single-click.
// just to exemplify both cases, we are using this only for the 1st
// and the 3rd field, while 2nd and 4th will still require double-click.
cal.callCloseHandler();
}
// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button. It just hides the calendar without
// destroying it.
function closeHandler(cal) {
cal.hide(); // hide the calendar
}
// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id, format) {
var el = document.getElementById(id);
if (calendar != null) {
// we already have some calendar created
calendar.hide(); // so we hide it first.
} else {
// first-time call, create the calendar.
var cal = new Calendar(false, null, selected, closeHandler);
// uncomment the following line to hide the week numbers
// cal.weekNumbers = false;
calendar = cal; // remember it in the global var
cal.setRange(1900, 2070); // min/max year allowed.
cal.create();
}
calendar.setDateFormat(format); // set the specified date format
calendar.parseDate(el.value); // try to parse the text in field
calendar.sel = el; // inform it what input field we use
calendar.showAtElement(el); // show the calendar below it
return false;
}
var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;
// If this handler returns true then the "date" given as
// parameter will be disabled. In this example we enable
// only days within a range of 10 days from the current
// date.
// You can use the functions date.getFullYear() -- returns the year
// as 4 digit number, date.getMonth() -- returns the month as 0..11,
// and date.getDate() -- returns the date of the month as 1..31, to
// make heavy calculations here. However, beware that this function
// should be very fast, as it is called for each day in a month when
// the calendar is (re)constructed.
function isDisabled(date) {
var today = new Date();
return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
}
</script>
</head>
<body>
<form action="http://www.useragentman.com/testForm.php">
<b>Date:</b>
<br>
<input type="text" name="date1" id="sel1" size="30">
<input type="button" value="..." onclick="return showCalendar('sel1', 'y-m-d');">
<p>
<br>
<br><b>Visible &lt;select&gt;, hides and unhides as expected</b>
<br>
<select name="foo" multiple>
<option value="1">can use the functions date.getFullYear() -- returns</option>
<option value="2">4 digit number, date.getMonth() -- returns the month</option>
<option value="3">heavy calculations here. However, beware that this</option>
</select>
<p>
<br><b>Hidden &lt;select&gt;, it should stay hidden (but doesn't)</b>
<br>
<select name="foo2" multiple style="visibility: hidden">
<option value="1">this should</option>
<option value="2">remain hidden right?</option>
</select>
<p>
<br><b>Hidden textbox below, it stays hidden as expected</b>
<br>
<input type="text" name="foo3" value="this stays hidden just fine" style="visibility: hidden">
</form>
</body></html>

View File

@ -0,0 +1,232 @@
/* The main calendar widget. DIV containing a table. */
div.calendar { position: relative; }
.calendar, .calendar table {
border: 1px solid #556;
font-size: 11px;
color: #000;
cursor: default;
background: #eef;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
}
.calendar .nav {
background: #778 url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
background: #fff;
color: #000;
padding: 2px;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
background: #778;
color: #fff;
}
.calendar thead .daynames { /* Row <TR> containing the day names */
background: #bdf;
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #556;
padding: 2px;
text-align: center;
color: #000;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #a66;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
background-color: #aaf;
color: #000;
border: 1px solid #04f;
padding: 1px;
}
.calendar thead .active { /* Active (pressed) buttons in header */
background-color: #77c;
padding: 2px 0px 0px 2px;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
color: #456;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #bbb;
}
.calendar tbody .day.othermonth.oweekend {
color: #fbb;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #bdf;
}
.calendar tbody .rowhilite td {
background: #def;
}
.calendar tbody .rowhilite td.wn {
background: #eef;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
background: #def;
padding: 1px 3px 1px 1px;
border: 1px solid #bbb;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
background: #cde;
padding: 2px 2px 0px 2px;
}
.calendar tbody td.selected { /* Cell showing today date */
font-weight: bold;
border: 1px solid #000;
padding: 1px 3px 1px 1px;
background: #fff;
color: #000;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #a66;
}
.calendar tbody td.today { /* Cell showing selected date */
font-weight: bold;
color: #00f;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #556;
color: #fff;
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #fff;
color: #445;
border-top: 1px solid #556;
padding: 1px;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
background: #aaf;
border: 1px solid #04f;
color: #000;
padding: 1px;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
background: #77c;
padding: 2px 0px 0px 2px;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 4em;
cursor: default;
border: 1px solid #655;
background: #def;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .hilite {
background: #acf;
}
.calendar .combo .active {
border-top: 1px solid #46a;
border-bottom: 1px solid #46a;
background: #eef;
font-weight: bold;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #f4f0e8;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #667;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,236 @@
/* The main calendar widget. DIV containing a table. */
div.calendar { position: relative; }
.calendar, .calendar table {
border: 1px solid #206A9B;
font-size: 11px;
color: #000;
cursor: default;
background: #F1F8FC;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
}
.calendar .nav {
background: #007ED1 url(menuarrow2.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
background: #000;
color: #fff;
padding: 2px;
}
.calendar thead tr { /* Row <TR> containing navigation buttons */
background: #007ED1;
color: #fff;
}
.calendar thead .daynames { /* Row <TR> containing the day names */
background: #C7E1F3;
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #206A9B;
padding: 2px;
text-align: center;
color: #000;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #a66;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
background-color: #34ABFA;
color: #000;
border: 1px solid #016DC5;
padding: 1px;
}
.calendar thead .active { /* Active (pressed) buttons in header */
background-color: #006AA9;
border: 1px solid #008AFF;
padding: 2px 0px 0px 2px;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
color: #456;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #bbb;
}
.calendar tbody .day.othermonth.oweekend {
color: #fbb;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #C7E1F3;
}
.calendar tbody .rowhilite td {
background: #def;
}
.calendar tbody .rowhilite td.wn {
background: #F1F8FC;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
background: #def;
padding: 1px 3px 1px 1px;
border: 1px solid #8FC4E8;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
background: #cde;
padding: 2px 2px 0px 2px;
}
.calendar tbody td.selected { /* Cell showing today date */
font-weight: bold;
border: 1px solid #000;
padding: 1px 3px 1px 1px;
background: #fff;
color: #000;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #a66;
}
.calendar tbody td.today { /* Cell showing selected date */
font-weight: bold;
color: #D50000;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #206A9B;
color: #fff;
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #000;
color: #fff;
border-top: 1px solid #206A9B;
padding: 1px;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
background: #B8DAF0;
border: 1px solid #178AEB;
color: #000;
padding: 1px;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
background: #006AA9;
padding: 2px 0px 0px 2px;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 4em;
cursor: default;
border: 1px solid #655;
background: #def;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .hilite {
background: #34ABFA;
border-top: 1px solid #46a;
border-bottom: 1px solid #46a;
font-weight: bold;
}
.calendar .combo .active {
border-top: 1px solid #46a;
border-bottom: 1px solid #46a;
background: #F1F8FC;
font-weight: bold;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #E3F0F9;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #F1F8FC;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #267DB7;
color: #fff;
}
.calendar td.time span.active {
border-color: red;
background-color: #000;
color: #A5FF00;
}

View File

@ -0,0 +1,225 @@
/* The main calendar widget. DIV containing a table. */
div.calendar { position: relative; }
.calendar, .calendar table {
border: 1px solid #655;
font-size: 11px;
color: #000;
cursor: default;
background: #ffd;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
}
.calendar .nav {
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
background: #654;
color: #fed;
padding: 2px;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
background: #edc;
color: #000;
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #655;
padding: 2px;
text-align: center;
color: #000;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
background-color: #faa;
color: #000;
border: 1px solid #f40;
padding: 1px;
}
.calendar thead .active { /* Active (pressed) buttons in header */
background-color: #c77;
padding: 2px 0px 0px 2px;
}
.calendar thead .daynames { /* Row <TR> containing the day names */
background: #fed;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #bbb;
}
.calendar tbody .day.othermonth.oweekend {
color: #fbb;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #fed;
}
.calendar tbody .rowhilite td {
background: #ddf;
}
.calendar tbody .rowhilite td.wn {
background: #efe;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
background: #ffe;
padding: 1px 3px 1px 1px;
border: 1px solid #bbb;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
background: #ddc;
padding: 2px 2px 0px 2px;
}
.calendar tbody td.selected { /* Cell showing today date */
font-weight: bold;
border: 1px solid #000;
padding: 1px 3px 1px 1px;
background: #fea;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { font-weight: bold; }
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #988;
color: #000;
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
border-top: 1px solid #655;
background: #dcb;
color: #840;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
background: #faa;
border: 1px solid #f40;
padding: 1px;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
background: #c77;
padding: 2px 0px 0px 2px;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 4em;
cursor: default;
border: 1px solid #655;
background: #ffe;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .hilite {
background: #fc8;
}
.calendar .combo .active {
border-top: 1px solid #a64;
border-bottom: 1px solid #a64;
background: #fee;
font-weight: bold;
}
.calendar td.time {
border-top: 1px solid #a88;
padding: 1px 0px;
text-align: center;
background-color: #fed;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #988;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #866;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,229 @@
/* The main calendar widget. DIV containing a table. */
div.calendar { position: relative; }
.calendar, .calendar table {
border: 1px solid #565;
font-size: 11px;
color: #000;
cursor: default;
background: #efe;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
background: #676;
color: #fff;
font-size: 90%;
}
.calendar .nav {
background: #676 url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
padding: 2px;
background: #250;
color: #efa;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #565;
padding: 2px;
text-align: center;
color: #000;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #a66;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
background-color: #afa;
color: #000;
border: 1px solid #084;
padding: 1px;
}
.calendar thead .active { /* Active (pressed) buttons in header */
background-color: #7c7;
padding: 2px 0px 0px 2px;
}
.calendar thead .daynames { /* Row <TR> containing the day names */
background: #dfb;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
color: #564;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #bbb;
}
.calendar tbody .day.othermonth.oweekend {
color: #fbb;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #8a8;
background: #dfb;
}
.calendar tbody .rowhilite td {
background: #dfd;
}
.calendar tbody .rowhilite td.wn {
background: #efe;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
background: #efd;
padding: 1px 3px 1px 1px;
border: 1px solid #bbb;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
background: #dec;
padding: 2px 2px 0px 2px;
}
.calendar tbody td.selected { /* Cell showing today date */
font-weight: bold;
border: 1px solid #000;
padding: 1px 3px 1px 1px;
background: #f8fff8;
color: #000;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #a66;
}
.calendar tbody td.today { font-weight: bold; color: #0a0; }
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #565;
color: #fff;
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
padding: 2px;
background: #250;
color: #efa;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
background: #afa;
border: 1px solid #084;
color: #000;
padding: 1px;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
background: #7c7;
padding: 2px 0px 0px 2px;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 4em;
cursor: default;
border: 1px solid #565;
background: #efd;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .hilite {
background: #af8;
}
.calendar .combo .active {
border-top: 1px solid #6a4;
border-bottom: 1px solid #6a4;
background: #efe;
font-weight: bold;
}
.calendar td.time {
border-top: 1px solid #8a8;
padding: 1px 0px;
text-align: center;
background-color: #dfb;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #898;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #686;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,42 @@
var DateDisabled = {
0 : [ 21, 25, 28, 29, 30 ],
1 : [ 15, 16, 17, 19 ]
};
var CDate = {};
(function (date) {
CDate = {
w: date.getDay(),
d: date.getDate(),
m: date.getMonth(),
y: date.getFullYear(),
date: date,
};
})(new Date);
function dateStatus (date, y, m, d) {
var diff = date - CDate.date;
if (diff < 172800000 || diff > 5356800000) return true;
if (DateDisabled && DateDisabled[m]) {
for (var i in DateDisabled[m])
if (DateDisabled[m][i] == d)
return true;
}
return false;
};
window.onload = function () {
Calendar.setup({
inputField: 'f_date',
ifFormat: '%u, %e, %m, %Y',
displayArea: 'f_date_show',
daFormat: '%A, %B %e, %Y',
button: 'f_date_trigger',
firstDay: 1,
weekNumbers: false,
range: [CDate.y, CDate.y],
dateStatusFunc: dateStatus
});
};

View File

@ -0,0 +1 @@
var DateDisabled={0:[21,25,28,29,30],1:[15,16,17,19]};var CDate={};(function(date){CDate={w:date.getDay(),d:date.getDate(),m:date.getMonth(),y:date.getFullYear(),date:date,};})(new Date);function dateStatus(date,y,m,d){var diff=date-CDate.date;if(diff<172800000||diff>5356800000)return true;if(DateDisabled&&DateDisabled[m]){for(var i in DateDisabled[m])if(DateDisabled[m][i]==d)return true;}return false;};window.onload=function(){Calendar.setup({inputField:'f_date',ifFormat:'%u, %e, %m, %Y',displayArea:'f_date_show',daFormat:'%A, %B %e, %Y',button:'f_date_trigger',firstDay:1,weekNumbers:false,range:[CDate.y,CDate.y],dateStatusFunc:dateStatus});};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,203 @@
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
* ---------------------------------------------------------------------------
*
* The DHTML Calendar
*
* Details and latest version at:
* http://dynarch.com/mishoo/calendar.epl
*
* This script is distributed under the GNU Lesser General Public License.
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
*
* This file defines helper functions for setting up the calendar. They are
* intended to help non-programmers get a working calendar on their site
* quickly. This script should not be seen as part of the calendar. It just
* shows you what one can do with the calendar, while in the same time
* providing a quick and simple method for setting it up. If you need
* exhaustive customization of the calendar creation process feel free to
* modify this code to suit your needs (this is recommended and much better
* than modifying calendar.js itself).
*/
// $Id: calendar-setup.js,v 1.1 2010-06-01 04:29:24 tv Exp $
/**
* This function "patches" an input field (or other element) to use a calendar
* widget for date selection.
*
* The "params" is a single object that can have the following properties:
*
* prop. name | description
* -------------------------------------------------------------------------------------------------
* inputField | the ID of an input field to store the date
* displayArea | the ID of a DIV or other element to show the date
* button | ID of a button or other element that will trigger the calendar
* eventName | event that will trigger the calendar, without the "on" prefix (default: "click")
* ifFormat | date format that will be stored in the input field
* daFormat | the date format that will be used to display the date in displayArea
* singleClick | (true/false) wether the calendar is in single click mode or not (default: true)
* firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc.
* align | alignment (default: "Br"); if you don't know what's this see the calendar documentation
* range | array with 2 elements. Default: [1900, 2999] -- the range of years available
* weekNumbers | (true/false) if it's true (default) the calendar will display week numbers
* flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
* flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
* disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
* onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay)
* onClose | function that gets called when the calendar is closed. [default]
* onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar.
* date | the date that the calendar will be initially displayed to
* showsTime | default: false; if true the calendar will include a time selector
* timeFormat | the time format; can be "12" or "24", default is "12"
* electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
* step | configures the step of the years in drop-down boxes; default: 1 (it was 2 ... have no idea why)
* position | configures the calendar absolute position; default: null
* cache | if "true" (but default: "false") it will reuse the same calendar object, where possible
* showOthers | if "true" (but default: "false") it will show days from other months too
*
* None of them is required, they all have default values. However, if you
* pass none of "inputField", "displayArea" or "button" you'll get a warning
* saying "nothing to setup".
*/
Calendar.setup = function (params) {
function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
param_default("inputField", null);
param_default("displayArea", null);
param_default("button", null);
param_default("eventName", "click");
param_default("ifFormat", "%Y/%m/%d");
param_default("daFormat", "%Y/%m/%d");
param_default("singleClick", true);
param_default("disableFunc", null);
param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined
param_default("dateTooltipFunc", null);
param_default("dateText", null);
param_default("firstDay", null);
param_default("align", "Br");
param_default("range", [1900, 2999]);
param_default("weekNumbers", true);
param_default("flat", null);
param_default("flatCallback", null);
param_default("onSelect", null);
param_default("onClose", null);
param_default("onUpdate", null);
param_default("date", null);
param_default("showsTime", false);
param_default("timeFormat", "24");
param_default("electric", true);
param_default("step", 1);
param_default("position", null);
param_default("cache", false);
param_default("showOthers", false);
param_default("multiple", null);
var tmp = ["inputField", "displayArea", "button"];
for (var i in tmp) {
if (typeof params[tmp[i]] == "string") {
params[tmp[i]] = document.getElementById(params[tmp[i]]);
}
}
if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");
return false;
}
function onSelect(cal) {
var p = cal.params;
var update = (cal.dateClicked || p.electric);
if (update && p.inputField) {
p.inputField.value = cal.date.print(p.ifFormat);
if (typeof p.inputField.onchange == "function")
p.inputField.onchange();
}
if (update && p.displayArea)
p.displayArea.innerHTML = cal.date.print(p.daFormat);
if (update && typeof p.onUpdate == "function")
p.onUpdate(cal);
if (update && p.flat) {
if (typeof p.flatCallback == "function")
p.flatCallback(cal);
}
if (update && p.singleClick && cal.dateClicked)
cal.callCloseHandler();
};
if (params.flat != null) {
if (typeof params.flat == "string")
params.flat = document.getElementById(params.flat);
if (!params.flat) {
alert("Calendar.setup:\n Flat specified but can't find parent.");
return false;
}
var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
cal.setDateToolTipHandler(params.dateTooltipFunc);
cal.showsOtherMonths = params.showOthers;
cal.showsTime = params.showsTime;
cal.time24 = (params.timeFormat == "24");
cal.params = params;
cal.weekNumbers = params.weekNumbers;
cal.setRange(params.range[0], params.range[1]);
cal.setDateStatusHandler(params.dateStatusFunc);
cal.getDateText = params.dateText;
if (params.ifFormat) {
cal.setDateFormat(params.ifFormat);
}
if (params.inputField && typeof params.inputField.value == "string") {
cal.parseDate(params.inputField.value);
}
cal.create(params.flat);
cal.show();
return false;
}
var triggerEl = params.button || params.displayArea || params.inputField;
triggerEl["on" + params.eventName] = function() {
var dateEl = params.inputField || params.displayArea;
var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
var mustCreate = false;
var cal = window.calendar;
if (dateEl)
params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
if (!(cal && params.cache)) {
window.calendar = cal = new Calendar(params.firstDay,
params.date,
params.onSelect || onSelect,
params.onClose || function(cal) { cal.hide(); });
cal.setDateToolTipHandler(params.dateTooltipFunc);
cal.showsTime = params.showsTime;
cal.time24 = (params.timeFormat == "24");
cal.weekNumbers = params.weekNumbers;
mustCreate = true;
} else {
if (params.date)
cal.setDate(params.date);
cal.hide();
}
if (params.multiple) {
cal.multiple = {};
for (var i = params.multiple.length; --i >= 0;) {
var d = params.multiple[i];
var ds = d.print("%Y%m%d");
cal.multiple[ds] = d;
}
}
cal.showsOtherMonths = params.showOthers;
cal.yearStep = params.step;
cal.setRange(params.range[0], params.range[1]);
cal.params = params;
cal.setDateStatusHandler(params.dateStatusFunc);
cal.getDateText = params.dateText;
cal.setDateFormat(dateFmt);
if (mustCreate)
cal.create();
cal.refresh();
if (!params.position)
cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
else
cal.showAt(params.position[0], params.position[1]);
return false;
};
return cal;
};

View File

@ -0,0 +1,21 @@
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
* ---------------------------------------------------------------------------
*
* The DHTML Calendar
*
* Details and latest version at:
* http://dynarch.com/mishoo/calendar.epl
*
* This script is distributed under the GNU Lesser General Public License.
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
*
* This file defines helper functions for setting up the calendar. They are
* intended to help non-programmers get a working calendar on their site
* quickly. This script should not be seen as part of the calendar. It just
* shows you what one can do with the calendar, while in the same time
* providing a quick and simple method for setting it up. If you need
* exhaustive customization of the calendar creation process feel free to
* modify this code to suit your needs (this is recommended and much better
* than modifying calendar.js itself).
*/
Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateTooltipFunc",null);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.setDateToolTipHandler(params.dateTooltipFunc);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.setDateToolTipHandler(params.dateTooltipFunc);cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};

View File

@ -0,0 +1,251 @@
/* The main calendar widget. DIV containing a table. */
.calendar {
position: relative;
display: none;
border: 1px solid;
border-color: #fff #000 #000 #fff;
font-size: 11px;
cursor: default;
background: Window;
color: WindowText;
font-family: tahoma,verdana,sans-serif;
}
.calendar table {
border: 1px solid;
border-color: #fff #000 #000 #fff;
font-size: 11px;
cursor: default;
background: Window;
color: WindowText;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center;
padding: 1px;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
background: ButtonFace;
}
.calendar .nav {
background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold;
padding: 1px;
border: 1px solid #000;
background: ActiveCaption;
color: CaptionText;
text-align: center;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .daynames { /* Row <TR> containing the day names */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid ButtonShadow;
padding: 2px;
text-align: center;
background: ButtonFace;
color: ButtonText;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
border: 2px solid;
padding: 0px;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.calendar thead .active { /* Active (pressed) buttons in header */
border-width: 1px;
padding: 2px 0px 0px 2px;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid ButtonShadow;
background: ButtonFace;
color: ButtonText;
}
.calendar tbody .rowhilite td {
background: Highlight;
color: HighlightText;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
padding: 1px 3px 1px 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
padding: 2px 2px 0px 2px;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
.calendar tbody td.selected { /* Cell showing selected date */
font-weight: bold;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
padding: 2px 2px 0px 2px;
background: ButtonFace;
color: ButtonText;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { /* Cell showing today date */
font-weight: bold;
color: #00f;
}
.calendar tbody td.disabled { color: GrayText; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: ButtonFace;
padding: 1px;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
color: ButtonText;
text-align: center;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
padding: 1px;
background: #e4e0d8;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
width: 4em;
top: 0px;
left: 0px;
cursor: default;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
background: Menu;
color: MenuText;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .active {
padding: 0px;
border: 1px solid #000;
}
.calendar .combo .hilite {
background: Highlight;
color: HighlightText;
}
.calendar td.time {
border-top: 1px solid ButtonShadow;
padding: 1px 0px;
text-align: center;
background-color: ButtonFace;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: Menu;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: Highlight;
color: HighlightText;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,239 @@
/* The main calendar widget. DIV containing a table. */
div.calendar { position: relative; }
.calendar, .calendar table {
border: 1px solid #655;
font-size: 11px;
color: #000;
cursor: default;
background: #ffd;
font-family: tahoma,verdana,sans-serif;
filter:
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
color:#363636;
}
.calendar .nav {
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
background: #654;
color: #363636;
padding: 2px;
filter:
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#dddccc);
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
/*background: #3B86A0;*/
color: #363636;
font-weight: bold;
filter:
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#3b86a0);
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #655;
padding: 2px;
text-align: center;
color: #363636;
filter:
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
background-color: #ffcc86;
color: #000;
border: 1px solid #b59345;
padding: 1px;
}
.calendar thead .active { /* Active (pressed) buttons in header */
background-color: #c77;
padding: 2px 0px 0px 2px;
}
.calendar thead .daynames { /* Row <TR> containing the day names */
background: #fed;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #fed;
}
.calendar tbody .rowhilite td {
background: #ddf;
}
.calendar tbody .rowhilite td.wn {
background: #efe;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
background: #ffe;
padding: 1px 3px 1px 1px;
border: 1px solid #bbb;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
background: #ddc;
padding: 2px 2px 0px 2px;
}
.calendar tbody td.selected { /* Cell showing today date */
font-weight: bold;
border: 1px solid #000;
padding: 1px 3px 1px 1px;
background: #fea;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { font-weight: bold; }
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #988;
color: #000;
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
border-top: 1px solid #655;
background: #dcb;
color: #363636;
font-weight: bold;
filter:
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,EndColorStr=#DDDCCC);
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
background: #faa;
border: 1px solid #f40;
padding: 1px;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
background: #c77;
padding: 2px 0px 0px 2px;
}
/* Combo boxes (menus that display months/years for direct selection) */
.combo {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 4em;
cursor: default;
border: 1px solid #655;
background: #ffe;
color: #000;
font-size: smaller;
z-index: 100;
}
.combo .label,
.combo .label-IEfix {
text-align: center;
padding: 1px;
}
.combo .label-IEfix {
width: 4em;
}
.combo .hilite {
background: #fc8;
}
.combo .active {
border-top: 1px solid #a64;
border-bottom: 1px solid #a64;
background: #fee;
font-weight: bold;
}
.calendar td.time {
border-top: 1px solid #a88;
padding: 1px 0px;
text-align: center;
background-color: #fed;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #988;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #866;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,271 @@
/* The main calendar widget. DIV containing a table. */
.calendar {
position: relative;
display: none;
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
font-size: 11px;
color: #000;
cursor: default;
background: #d4d0c8;
font-family: tahoma,verdana,sans-serif;
}
.calendar table {
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
font-size: 11px;
color: #000;
cursor: default;
background: #d4d0c8;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center;
padding: 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar .nav {
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold;
padding: 1px;
border: 1px solid #000;
background: #848078;
color: #fff;
text-align: center;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .daynames { /* Row <TR> containing the day names */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #000;
padding: 2px;
text-align: center;
background: #f4f0e8;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
padding: 0px;
background-color: #e4e0d8;
}
.calendar thead .active { /* Active (pressed) buttons in header */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
background-color: #c4c0b8;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #f4f0e8;
}
.calendar tbody .rowhilite td {
background: #e4e0d8;
}
.calendar tbody .rowhilite td.wn {
background: #d4d0c8;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
padding: 1px 3px 1px 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
padding: 2px 2px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar tbody td.selected { /* Cell showing selected date */
font-weight: bold;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
padding: 2px 2px 0px 2px;
background: #e4e0d8;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { /* Cell showing today date */
font-weight: bold;
color: #00f;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #f4f0e8;
padding: 1px;
border: 1px solid #000;
background: #848078;
color: #fff;
text-align: center;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
padding: 1px;
background: #e4e0d8;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
width: 4em;
top: 0px;
left: 0px;
cursor: default;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
background: #e4e0d8;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .active {
background: #c4c0b8;
padding: 0px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar .combo .hilite {
background: #048;
color: #fea;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #f4f0e8;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #766;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,271 @@
/* The main calendar widget. DIV containing a table. */
.calendar {
position: relative;
display: none;
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
font-size: 11px;
color: #000;
cursor: default;
background: #d4c8d0;
font-family: tahoma,verdana,sans-serif;
}
.calendar table {
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
font-size: 11px;
color: #000;
cursor: default;
background: #d4c8d0;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center;
padding: 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar .nav {
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold;
padding: 1px;
border: 1px solid #000;
background: #847880;
color: #fff;
text-align: center;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .daynames { /* Row <TR> containing the day names */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #000;
padding: 2px;
text-align: center;
background: #f4e8f0;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
padding: 0px;
background-color: #e4d8e0;
}
.calendar thead .active { /* Active (pressed) buttons in header */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
background-color: #c4b8c0;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #f4e8f0;
}
.calendar tbody .rowhilite td {
background: #e4d8e0;
}
.calendar tbody .rowhilite td.wn {
background: #d4c8d0;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
padding: 1px 3px 1px 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
padding: 2px 2px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar tbody td.selected { /* Cell showing selected date */
font-weight: bold;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
padding: 2px 2px 0px 2px;
background: #e4d8e0;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { /* Cell showing today date */
font-weight: bold;
color: #00f;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #f4e8f0;
padding: 1px;
border: 1px solid #000;
background: #847880;
color: #fff;
text-align: center;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
padding: 1px;
background: #e4d8e0;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
width: 4em;
top: 0px;
left: 0px;
cursor: default;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
background: #e4d8e0;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .active {
background: #d4c8d0;
padding: 0px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar .combo .hilite {
background: #408;
color: #fea;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #f4f0e8;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #766;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,265 @@
/* The main calendar widget. DIV containing a table. */
.calendar {
position: relative;
display: none;
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
font-size: 11px;
color: #000;
cursor: default;
background: #c8d0d4;
font-family: tahoma,verdana,sans-serif;
}
.calendar table {
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
font-size: 11px;
color: #000;
cursor: default;
background: #c8d0d4;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center;
padding: 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar .nav {
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold;
padding: 1px;
border: 1px solid #000;
background: #788084;
color: #fff;
text-align: center;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .daynames { /* Row <TR> containing the day names */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #000;
padding: 2px;
text-align: center;
background: #e8f0f4;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
padding: 0px;
background-color: #d8e0e4;
}
.calendar thead .active { /* Active (pressed) buttons in header */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
background-color: #b8c0c4;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #e8f4f0;
}
.calendar tbody .rowhilite td {
background: #d8e4e0;
}
.calendar tbody .rowhilite td.wn {
background: #c8d4d0;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
padding: 1px 3px 1px 1px;
border: 1px solid;
border-color: #fff #000 #000 #fff;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
padding: 2px 2px 0px 2px;
border: 1px solid;
border-color: #000 #fff #fff #000;
}
.calendar tbody td.selected { /* Cell showing selected date */
font-weight: bold;
padding: 2px 2px 0px 2px;
border: 1px solid;
border-color: #000 #fff #fff #000;
background: #d8e0e4;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { /* Cell showing today date */
font-weight: bold;
color: #00f;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #e8f0f4;
padding: 1px;
border: 1px solid #000;
background: #788084;
color: #fff;
text-align: center;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
padding: 1px;
background: #d8e0e4;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
width: 4em;
top: 0px;
left: 0px;
cursor: default;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
background: #d8e0e4;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .active {
background: #c8d0d4;
padding: 0px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar .combo .hilite {
background: #048;
color: #aef;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #e8f0f4;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #667;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

View File

@ -0,0 +1,271 @@
/* The main calendar widget. DIV containing a table. */
.calendar {
position: relative;
display: none;
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
font-size: 11px;
color: #000;
cursor: default;
background: #c8d4d0;
font-family: tahoma,verdana,sans-serif;
}
.calendar table {
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
font-size: 11px;
color: #000;
cursor: default;
background: #c8d4d0;
font-family: tahoma,verdana,sans-serif;
}
/* Header part -- contains navigation buttons and day names. */
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center;
padding: 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar .nav {
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
}
.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold;
padding: 1px;
border: 1px solid #000;
background: #788480;
color: #fff;
text-align: center;
}
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
}
.calendar thead .daynames { /* Row <TR> containing the day names */
}
.calendar thead .name { /* Cells <TD> containing the day names */
border-bottom: 1px solid #000;
padding: 2px;
text-align: center;
background: #e8f4f0;
}
.calendar thead .weekend { /* How a weekend day name shows in header */
color: #f00;
}
.calendar thead .hilite { /* How do the buttons in header appear when hover */
border-top: 2px solid #fff;
border-right: 2px solid #000;
border-bottom: 2px solid #000;
border-left: 2px solid #fff;
padding: 0px;
background-color: #d8e4e0;
}
.calendar thead .active { /* Active (pressed) buttons in header */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
background-color: #b8c4c0;
}
/* The body part -- contains all the days in month. */
.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
text-align: right;
padding: 2px 4px 2px 2px;
}
.calendar tbody .day.othermonth {
font-size: 80%;
color: #aaa;
}
.calendar tbody .day.othermonth.oweekend {
color: #faa;
}
.calendar table .wn {
padding: 2px 3px 2px 2px;
border-right: 1px solid #000;
background: #e8f4f0;
}
.calendar tbody .rowhilite td {
background: #d8e4e0;
}
.calendar tbody .rowhilite td.wn {
background: #c8d4d0;
}
.calendar tbody td.hilite { /* Hovered cells <TD> */
padding: 1px 3px 1px 1px;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
}
.calendar tbody td.active { /* Active (pressed) cells <TD> */
padding: 2px 2px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar tbody td.selected { /* Cell showing selected date */
font-weight: bold;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
padding: 2px 2px 0px 2px;
background: #d8e4e0;
}
.calendar tbody td.weekend { /* Cells showing weekend days */
color: #f00;
}
.calendar tbody td.today { /* Cell showing today date */
font-weight: bold;
color: #00f;
}
.calendar tbody .disabled { color: #999; }
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
}
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
display: none;
}
/* The footer part -- status bar and "Close" button */
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
}
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
background: #e8f4f0;
padding: 1px;
border: 1px solid #000;
background: #788480;
color: #fff;
text-align: center;
}
.calendar tfoot .hilite { /* Hover style for buttons in footer */
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
padding: 1px;
background: #d8e4e0;
}
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
padding: 2px 0px 0px 2px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
/* Combo boxes (menus that display months/years for direct selection) */
.calendar .combo {
position: absolute;
display: none;
width: 4em;
top: 0px;
left: 0px;
cursor: default;
border-top: 1px solid #fff;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #fff;
background: #d8e4e0;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,
.calendar .combo .label-IEfix {
text-align: center;
padding: 1px;
}
.calendar .combo .label-IEfix {
width: 4em;
}
.calendar .combo .active {
background: #c8d4d0;
padding: 0px;
border-top: 1px solid #000;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-left: 1px solid #000;
}
.calendar .combo .hilite {
background: #048;
color: #aef;
}
.calendar td.time {
border-top: 1px solid #000;
padding: 1px 0px;
text-align: center;
background-color: #e8f0f4;
}
.calendar td.time .hour,
.calendar td.time .minute,
.calendar td.time .ampm {
padding: 0px 3px 0px 4px;
border: 1px solid #889;
font-weight: bold;
background-color: #fff;
}
.calendar td.time .ampm {
text-align: center;
}
.calendar td.time .colon {
padding: 0px 2px 0px 3px;
font-weight: bold;
}
.calendar td.time span.hilite {
border-color: #000;
background-color: #667;
color: #fff;
}
.calendar td.time span.active {
border-color: #f00;
background-color: #000;
color: #0f0;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
<?php
/**
* File: calendar.php | (c) dynarch.com 2004
* Distributed as part of "The Coolest DHTML Calendar"
* under the same terms.
* -----------------------------------------------------------------
* This file implements a simple PHP wrapper for the calendar. It
* allows you to easily include all the calendar files and setup the
* calendar by instantiating and calling a PHP object.
*/
define('NEWLINE', "\n");
class DHTML_Calendar {
var $calendar_lib_path;
var $calendar_file;
var $calendar_lang_file;
var $calendar_setup_file;
var $calendar_theme_file;
var $calendar_options;
function DHTML_Calendar($calendar_lib_path = '/calendar/',
$lang = 'en',
$theme = 'calendar-win2k-1',
$stripped = true) {
if ($stripped) {
$this->calendar_file = 'calendar_stripped.js';
$this->calendar_setup_file = 'calendar-setup_stripped.js';
} else {
$this->calendar_file = 'calendar.js';
$this->calendar_setup_file = 'calendar-setup.js';
}
$this->calendar_lang_file = 'lang/calendar-' . $lang . '.js';
$this->calendar_theme_file = $theme.'.css';
$this->calendar_lib_path = preg_replace('/\/+$/', '/', $calendar_lib_path);
$this->calendar_options = array('ifFormat' => '%Y/%m/%d',
'daFormat' => '%Y/%m/%d');
}
function set_option($name, $value) {
$this->calendar_options[$name] = $value;
}
function load_files() {
echo $this->get_load_files_code();
}
function get_load_files_code() {
$code = ( '<link rel="stylesheet" type="text/css" media="all" href="' .
$this->calendar_lib_path . $this->calendar_theme_file .
'" />' . NEWLINE );
$code .= ( '<script type="text/javascript" src="' .
$this->calendar_lib_path . $this->calendar_file .
'"></script>' . NEWLINE );
$code .= ( '<script type="text/javascript" src="' .
$this->calendar_lib_path . $this->calendar_lang_file .
'"></script>' . NEWLINE );
$code .= ( '<script type="text/javascript" src="' .
$this->calendar_lib_path . $this->calendar_setup_file .
'"></script>' );
return $code;
}
function _make_calendar($other_options = array()) {
$js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
$code = ( '<script type="text/javascript">Calendar.setup({' .
$js_options .
'});</script>' );
return $code;
}
function make_input_field($cal_options = array(), $field_attributes = array(), $output = true) {
$result = "";
$id = $this->_gen_id();
$attrstr = $this->_make_html_attr(array_merge($field_attributes,
array('id' => $this->_field_id($id),
'type' => 'text')));
$result.= '<input ' . $attrstr .'/>';
$result.= '<a href="#" id="'. $this->_trigger_id($id) . '">' .
'<img align="middle" border="0" src="' . $this->calendar_lib_path . 'img.gif" alt="" /></a>';
$options = array_merge($cal_options,
array('inputField' => $this->_field_id($id),
'button' => $this->_trigger_id($id)));
$result.= $this->_make_calendar($options);
if ($output)
echo $output;
return $output;
}
/// PRIVATE SECTION
function _field_id($id) { return 'f-calendar-field-' . $id; }
function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
function _gen_id() { static $id = 0; return ++$id; }
function _make_js_hash($array) {
$jstr = '';
reset($array);
while (list($key, $val) = each($array)) {
if (is_bool($val))
$val = $val ? 'true' : 'false';
else if (!is_numeric($val))
$val = '"'.$val.'"';
if ($jstr) $jstr .= ',';
$jstr .= '"' . $key . '":' . $val;
}
return $jstr;
}
function _make_html_attr($array) {
$attrstr = '';
reset($array);
while (list($key, $val) = each($array)) {
$attrstr .= $key . '="' . $val . '" ';
}
return $attrstr;
}
};
?>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,109 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <head>
<title>How to include additional info in day cells</title>
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript" src="lang/calendar-en.js"></script>
<script type="text/javascript" src="calendar-setup.js"></script>
<script type="text/javascript">
// define info for dates in this table:
var dateInfo = {
"20050308" : "Mishoo's&nbsp;birthday",
"20050310" : "foo",
"20050315" : "bar",
"20050318" : "25$",
"20050324" : "60$"
};
</script>
<style type="text/css">
@import url(calendar-win2k-1.css);
.calendar .inf { font-size: 80%; color: #444; }
.calendar .wn { font-weight: bold; vertical-align: top; }
</style>
</head>
<body>
<h1>How to include additional info in day cells</h1>
<div id="flatcal" style="float: right"></div>
<script type="text/javascript">
function getDateText(date, d) {
var inf = dateInfo[date.print("%Y%m%d")];
if (!inf) {
return d + "<div class='inf'>&nbsp;</div>";
} else {
return d + "<div class='inf'>" + inf + "</div>";
}
};
function flatCallback(cal) {
if (cal.dateClicked) {
// do something here
window.status = "Selected: " + cal.date;
var inf = dateInfo[cal.date.print("%Y%m%d")];
if (inf) {
window.status += ". Additional info: " + inf;
}
}
};
Calendar.setup({
flat: "flatcal",
dateText: getDateText,
flatCallback: flatCallback
});
</script>
<p>The idea is simple:</p>
<ol>
<li>
<p>Define a callback that takes two parameters like this:</p>
<pre>function getDateText(date, d)</pre>
<p>
This function will receive the date object as the first
parameter and the current date number (1..31) as the second (you
can get it as well by calling date.getDate() but since it's very
probably useful I thought I'd pass it too so that we can avoid a
function call).
</p>
<p>
This function <em>must</em> return the text to be inserted in
the cell of the passed date. That is, one should at least
"return d;".
</p>
</li>
<li>
Pass the above function as the "dateText" parameter to
Calendar.setup.
</li>
</ol>
<p>
The function could simply look like:
</p>
<pre
> function getDateText(date, d) {
if (d == 12) {
return "12th";
} else if (d == 13) {
return "bad luck";
} /* ... etc ... */
}</pre>
<p>
but it's easy to imagine that this approach sucks. For a better
way, see the source of this page and note the usage of an externally
defined "dateText" object which maps "date" to "date info", also
taking into account the year and month. This object can be easily
generated from a database, and the getDateText function becomes
extremely simple (and static).
</p>
<p>
Cheers!
</p>
<hr />
<address><a href="http://dynarch.com/mishoo/">mishoo</a></address>
<!-- hhmts start --> Last modified: Sat Mar 5 17:18:06 EET 2005 <!-- hhmts end -->
</body> </html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,195 @@
body {
color: black;
/* background-color: #e5e5e5;*/
background-color: #ffffff;
/*background-color: beige;*/
margin-top: 2em;
margin-left: 8%;
margin-right: 8%;
}
h1,h2,h3,h4,h5,h6 {
margin-top: .5em;
}
.title {
font-size: 200%;
font-weight: normal;
margin-top: 2.8em;
text-align: center;
}
.partheading {
font-size: 100%;
}
.chapterheading {
font-size: 100%;
}
.beginsection {
font-size: 110%;
}
.tiny {
font-size: 40%;
}
.scriptsize {
font-size: 60%;
}
.footnotesize {
font-size: 75%;
}
.small {
font-size: 90%;
}
.normalsize {
font-size: 100%;
}
.large {
font-size: 120%;
}
.largecap {
font-size: 150%;
}
.largeup {
font-size: 200%;
}
.huge {
font-size: 300%;
}
.hugecap {
font-size: 350%;
}
pre {
margin-left: 2em;
}
blockquote {
margin-left: 2em;
}
ol {
list-style-type: decimal;
}
ol ol {
list-style-type: lower-alpha;
}
ol ol ol {
list-style-type: lower-roman;
}
ol ol ol ol {
list-style-type: upper-alpha;
}
tt i {
font-family: serif;
}
.verbatim em {
font-family: serif;
}
/*
.verbatim {
color: #4d0000;
}
*/
.scheme em {
color: black;
font-family: serif;
}
.scheme {
color: brown;
}
.scheme .keyword {
color: #990000;
font-weight: bold;
}
.scheme .builtin {
color: #990000;
}
.scheme .variable {
color: navy;
}
.scheme .global {
color: purple;
}
.scheme .selfeval {
color: green;
}
.scheme .comment {
color: teal;
}
.schemeresponse {
color: green;
}
.navigation {
color: red;
text-align: right;
font-size: medium;
font-style: italic;
}
.disable {
/* color: #e5e5e5; */
color: gray;
}
.smallcaps {
font-size: 75%;
}
.smallprint {
color: gray;
font-size: 75%;
text-align: right;
}
/*
.smallprint hr {
text-align: left;
width: 40%;
}
*/
.footnoterule {
text-align: left;
width: 40%;
}
.colophon {
color: gray;
font-size: 80%;
font-style: italic;
text-align: right;
}
.colophon a {
color: gray;
}

View File

@ -0,0 +1,34 @@
html { margin: 0px; padding: 0px; background-color: #08f; color: #444; font-family: georgia,serif; }
body { margin: 2em 8%; background-color: #fff; padding: 1em; border: 2px ridge #048; }
a:link, a:visited { text-decoration: none; color: #00f; }
a:hover { color: #f00; text-decoration: underline; }
a:active { color: #f84; }
h1, h2, h3, h4, h5, h6 { font-family: tahoma,verdana,sans-serif; }
h2, h3 { font-weight: normal; }
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover { text-decoration: none; }
h1 { font-size: 170%; border: 2px ridge #048; letter-spacing: 2px; color: #000; margin-left: -2em; margin-right: -2em;
background-color: #fff; padding: 2px 1em; background-color: #def; }
h2 { font-size: 140%; color: #222; }
h3 { font-size: 120%; color: #444; }
h1.title { font-size: 300%; font-family: georgia,serif; font-weight: normal; color: #846; letter-spacing: -1px;
border: none;
padding: none;
background-color: #fff;
border-bottom: 3px double #624; padding-bottom: 2px; margin-left: 8%; margin-right: 8%; }
.colophon { padding-top: 2em; color: #999; font-size: 90%; font-family: georgia,"times new roman",serif; }
.colophon a:link, .colophon a:visited { color: #755; }
.colophon a:hover { color: #422; text-decoration: underline; }
.footnote { font-size: 90%; font-style: italic; font-family: georgia,"times new roman",serif; margin: 0px 3em; }
.footnote sup { font-size: 120%; padding: 0px 0.3em; position: relative; top: -0.2em; }
.small { font-size: 90%; }
.verbatim { background-color: #eee; padding: 0.2em 1em; border: 1px solid #aaa; }

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- $Id: index.html,v 1.1 2010-06-01 04:29:22 tv Exp $ -->
<head>
<meta http-equiv="content-type" content="text/xml; charset=utf-8" />
<title>The Coolest DHTML Calendar - Online Demo</title>
<link rel="stylesheet" type="text/css" media="all" href="skins/aqua/theme.css" title="Aqua" />
<link rel="alternate stylesheet" type="text/css" media="all" href="skins/tiger/theme.css" title="Tiger" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-blue.css" title="winter" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-blue2.css" title="blue" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-brown.css" title="summer" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-green.css" title="green" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-1.css" title="win2k-1" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-2.css" title="win2k-2" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-cold-1.css" title="win2k-cold-1" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-cold-2.css" title="win2k-cold-2" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-system.css" title="system" />
<!-- import the calendar script -->
<script type="text/javascript" src="calendar.js"></script>
<!-- import the language module -->
<script type="text/javascript" src="lang/calendar-en.js"></script>
<!-- other languages might be available in the lang directory; please check
your distribution archive. -->
<!-- helper script that uses the calendar -->
<script type="text/javascript">
var oldLink = null;
// code to change the active stylesheet
function setActiveStyleSheet(link, title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
if (oldLink) oldLink.style.fontWeight = 'normal';
oldLink = link;
link.style.fontWeight = 'bold';
return false;
}
// This function gets called when the end-user clicks on some date.
function selected(cal, date) {
cal.sel.value = date; // just update the date in the input field.
if (cal.dateClicked && (cal.sel.id == "sel1" || cal.sel.id == "sel3"))
// if we add this call we close the calendar on single-click.
// just to exemplify both cases, we are using this only for the 1st
// and the 3rd field, while 2nd and 4th will still require double-click.
cal.callCloseHandler();
}
// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button. It just hides the calendar without
// destroying it.
function closeHandler(cal) {
cal.hide(); // hide the calendar
// cal.destroy();
_dynarch_popupCalendar = null;
}
// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id, format, showsTime, showsOtherMonths) {
var el = document.getElementById(id);
if (_dynarch_popupCalendar != null) {
// we already have some calendar created
_dynarch_popupCalendar.hide(); // so we hide it first.
} else {
// first-time call, create the calendar.
var cal = new Calendar(1, null, selected, closeHandler);
// uncomment the following line to hide the week numbers
// cal.weekNumbers = false;
if (typeof showsTime == "string") {
cal.showsTime = true;
cal.time24 = (showsTime == "24");
}
if (showsOtherMonths) {
cal.showsOtherMonths = true;
}
_dynarch_popupCalendar = cal; // remember it in the global var
cal.setRange(1900, 2070); // min/max year allowed.
cal.create();
}
_dynarch_popupCalendar.setDateFormat(format); // set the specified date format
_dynarch_popupCalendar.parseDate(el.value); // try to parse the text in field
_dynarch_popupCalendar.sel = el; // inform it what input field we use
// the reference element that we pass to showAtElement is the button that
// triggers the calendar. In this example we align the calendar bottom-right
// to the button.
_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br"); // show the calendar
return false;
}
var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;
// If this handler returns true then the "date" given as
// parameter will be disabled. In this example we enable
// only days within a range of 10 days from the current
// date.
// You can use the functions date.getFullYear() -- returns the year
// as 4 digit number, date.getMonth() -- returns the month as 0..11,
// and date.getDate() -- returns the date of the month as 1..31, to
// make heavy calculations here. However, beware that this function
// should be very fast, as it is called for each day in a month when
// the calendar is (re)constructed.
function isDisabled(date) {
var today = new Date();
return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
}
function flatSelected(cal, date) {
var el = document.getElementById("preview");
el.innerHTML = date;
}
function showFlatCalendar() {
var parent = document.getElementById("display");
// construct a calendar giving only the "selected" handler.
var cal = new Calendar(0, null, flatSelected);
// hide week numbers
cal.weekNumbers = false;
// We want some dates to be disabled; see function isDisabled above
cal.setDisabledHandler(isDisabled);
cal.setDateFormat("%A, %B %e");
// this call must be the last as it might use data initialized above; if
// we specify a parent, as opposite to the "showCalendar" function above,
// then we create a flat calendar -- not popup. Hidden, though, but...
cal.create(parent);
// ... we can show it here.
cal.show();
}
</script>
<style type="text/css">
.ex { font-weight: bold; background: #fed; color: #080 }
.help { color: #080; font-style: italic; }
body { background: #fea; font: 10pt tahoma,verdana,sans-serif; }
table { font: 13px verdana,tahoma,sans-serif; }
a { color: #00f; }
a:visited { color: #00f; }
a:hover { color: #f00; background: #fefaf0; }
a:active { color: #08f; }
.key { border: 1px solid #000; background: #fff; color: #008;
padding: 0px 5px; cursor: default; font-size: 80%; }
</style>
</head>
<body onload="showFlatCalendar()">
<h2><a href="http://www.dynarch.com/projects/calendar/"
title="Visit the project website">jscalendar</a>-1.0
"It is happening again"</h2>
<p>
<div style="float: right; border: 1px solid #b87; padding: 2px; font-size: 90%; background: #ffb;">
Theme:<br />
<a href="#" id="defaultTheme" onclick="return setActiveStyleSheet(this, 'Aqua');">Aqua</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'Tiger');">Tiger</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'winter');">winter</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'blue');">blue</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'summer');">summer</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'green');">green</a>
<br />
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-1');">win2k-1</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-2');">win2k-2</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-cold-1');">win2k-cold-1</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-cold-2');">win2k-cold-2</a>
<br />
<a href="#" onclick="return setActiveStyleSheet(this, 'system');">system</a>
<script type="text/javascript">
setActiveStyleSheet(document.getElementById("defaultTheme"), "Aqua");
</script>
</div>
<a href="release-notes.html">Release notes</a>.
<br />
Set it up in minutes:
<a href="simple-1.html">popup calendar</a>,
<a href="simple-2.html">flat calendar</a>.
Other samples:
<a href="simple-3.html">special days</a>,
<a href="dayinfo.html">day info</a>,
<a href="multiple-dates.html">multiple dates selection</a>
<br />
Documentation:
<a href="doc/html/reference.html">HTML</a>,
<a href="doc/reference.pdf">PDF</a>.
<br />
</p>
<div style="padding-left:20px; font-size: 90%; font-style: italic;">
</div>
<table style="width: 100%">
<tr valign="top">
<td style="background: #ffa; padding: 5px; border: 1px solid #995;">
<form action="http://www.useragentman.com/testForm.php">
<div style="background: #995; color: #ffa; font-weight: bold; padding: 2px;">
Popup examples
</div>
<br />
<b>Date #1:</b> <input type="text" name="date1" id="sel1" size="30"
><input type="reset" value=" ... "
onclick="return showCalendar('sel1', '%Y-%m-%d [%W] %H:%M', '24', true);"> %Y-%m-%d [%W] %H:%M -- single
click<br />
<b>Date #2:</b> <input type="text" name="date2" id="sel2" size="30"
><input type="reset" value=" ... "
onclick="return showCalendar('sel2', '%a, %b %e, %Y [%I:%M %p]', '12');"> %a, %b %e, %Y [%I:%M %p]
-- double click
<br /><br />
<!--
if you remove this comment and leave the following HTML code
you will see a horrible effect, in all supported browsers (IE and Mozilla).
-->
<SELECT multiple size="4" name="component-select">
<OPTION selected value="Component_1_a">Component_1</OPTION>
<OPTION selected value="Component_1_b">Component_2</OPTION>
<OPTION>Component_3</OPTION>
<OPTION>Component_4</OPTION>
<OPTION>Component_5</OPTION>
<OPTION>Component_6</OPTION>
<OPTION>Component_7</OPTION>
</SELECT>
this select should hide when the calendar is above it.
<br /><br />
<b>Date #3:</b> <input type="text" name="date3" id="sel3" size="30"
><input type="reset" value=" ... "
onclick="return showCalendar('sel3', '%d/%m/%Y');"> %d/%m/%Y
-- single click
<br />
<b>Date #4:</b> <input type="text" name="date4" id="sel4" size="30"
><input type="reset" value=" ... "
onclick="return showCalendar('sel4', '%A, %B %e, %Y');"> %A, %B %e, %Y --
double click
</form>
<p>This is release <b>1.0</b>. Works on MSIE/Win 5.0 or better (really),
Opera 7+, Mozilla, Firefox, Netscape 6.x, 7.0 and all other Gecko-s,
Konqueror and Safari.</p>
<h4>Keyboard navigation</h4>
<p>Starting with version 0.9.2, you can also use the keyboard to select
dates (only for popup calendars; does <em>not</em> work with Opera
7 or Konqueror/Safari). The following keys are available:</p>
<ul>
<li><span class="key">&larr;</span> , <span class="key">&rarr;</span> ,
<span class="key">&uarr;</span> , <span class="key">&darr;</span> -- select date</li>
<li><span class="key">CTRL</span> + <span class="key">&larr;</span> ,
<span class="key">&rarr;</span> -- select month</li>
<li><span class="key">CTRL</span> + <span class="key">&uarr;</span> ,
<span class="key">&darr;</span> -- select year</li>
<li><span class="key">SPACE</span> -- go to <em>today</em> date</li>
<li><span class="key">ENTER</span> -- accept the currently selected date</li>
<li><span class="key">ESC</span> -- cancel selection</li>
</ul>
</td>
<td style="padding: 5px; margin: 5px; border: 1px solid #984; background: #ed9; width: 19em;">
<div style="background: #984; color: #fea; font-weight: bold; padding: 2px; text-align: center">
Flat calendar
</div>
<p style="width: 12em"><small>A non-popup version will appear below as soon
as the page is loaded. Note that it doesn't show the week number.</small></p>
<!-- the calendar will be inserted here -->
<div id="display" style="float: right; clear: both;"></div>
<div id="preview" style="font-size: 80%; text-align: center; padding: 2px">&nbsp;</div>
<p style="clear: both;"><small>
The example above uses the <code>setDisabledHandler()</code> member function
to setup a handler that would only enable days withing a range of 10 days,
forward or backward, from the current date.
</small></p>
</div>
</td>
</tr>
</table>
<hr /><address>
&copy; <a href="http://www.dynarch.com/">dynarch.com</a> 2002-2005 <br />
Author: <a href="http://www.bazon.net/mishoo/">Mihai
Bazon</a><br /> Distributed under the <a
href="http://www.gnu.org/licenses/lgpl.html">GNU LGPL</a>.</address>
<p style="font-size: smaller">If you use this script on a public page we
would love it if you would <a href="http://www.dynarch.com/contact.html">let us
know</a>.</p>
</body></html>

View File

@ -0,0 +1,39 @@
// ** I18N Afrikaans
Calendar._DN = new Array
("Sondag",
"Maandag",
"Dinsdag",
"Woensdag",
"Donderdag",
"Vrydag",
"Saterdag",
"Sondag");
Calendar._MN = new Array
("Januarie",
"Februarie",
"Maart",
"April",
"Mei",
"Junie",
"Julie",
"Augustus",
"September",
"Oktober",
"November",
"Desember");
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
Calendar._TT["GO_TODAY"] = "Gaan na vandag";
Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
Calendar._TT["SEL_DATE"] = "Kies datum";
Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
Calendar._TT["PART_TODAY"] = " (vandag)";
Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
Calendar._TT["SUN_FIRST"] = "Display Sunday first";
Calendar._TT["CLOSE"] = "Close";
Calendar._TT["TODAY"] = "Today";

View File

@ -0,0 +1,101 @@
// Calendar ALBANIAN language
//author Rigels Gordani rige@hotmail.com
// ditet
Calendar._DN = new Array
("E Diele",
"E Hene",
"E Marte",
"E Merkure",
"E Enjte",
"E Premte",
"E Shtune",
"E Diele");
//ditet shkurt
Calendar._SDN = new Array
("Die",
"Hen",
"Mar",
"Mer",
"Enj",
"Pre",
"Sht",
"Die");
// muajt
Calendar._MN = new Array
("Janar",
"Shkurt",
"Mars",
"Prill",
"Maj",
"Qeshor",
"Korrik",
"Gusht",
"Shtator",
"Tetor",
"Nentor",
"Dhjetor");
// muajte shkurt
Calendar._SMN = new Array
("Jan",
"Shk",
"Mar",
"Pri",
"Maj",
"Qes",
"Kor",
"Gus",
"Sht",
"Tet",
"Nen",
"Dhj");
// ndihmesa
Calendar._TT = {};
Calendar._TT["INFO"] = "Per kalendarin";
Calendar._TT["ABOUT"] =
"Zgjedhes i ores/dates ne DHTML \n" +
"\n\n" +"Zgjedhja e Dates:\n" +
"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
"- Perdor butonat" + String.fromCharCode(0x2039) + ", " +
String.fromCharCode(0x203a) +
" per te zgjedhur muajin\n" +
"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Zgjedhja e kohes:\n" +
"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
"- ose kliko me Shift per ta zvogeluar ate\n" +
"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
Calendar._TT["GO_TODAY"] = "Sot";
Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
Calendar._TT["SEL_DATE"] = "Zgjidh daten";
Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
Calendar._TT["PART_TODAY"] = " (sot)";
// "%s" eshte dita e pare e javes
// %s do te zevendesohet me emrin e dite
Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Mbyll";
Calendar._TT["TODAY"] = "Sot";
Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar
vleren";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "Java";
Calendar._TT["TIME"] = "Koha:";

View File

@ -0,0 +1,124 @@
// ** I18N
// Calendar BG language
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Translator: Valentin Sheiretsky, <valio@valio.eu.org>
// Encoding: Windows-1251
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("Íåäåëÿ",
"Ïîíåäåëíèê",
"Âòîðíèê",
"Ñðÿäà",
"×åòâúðòúê",
"Ïåòúê",
"Ñúáîòà",
"Íåäåëÿ");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("Íåä",
"Ïîí",
"Âòî",
"Ñðÿ",
"×åò",
"Ïåò",
"Ñúá",
"Íåä");
// full month names
Calendar._MN = new Array
("ßíóàðè",
"Ôåâðóàðè",
"Ìàðò",
"Àïðèë",
"Ìàé",
"Þíè",
"Þëè",
"Àâãóñò",
"Ñåïòåìâðè",
"Îêòîìâðè",
"Íîåìâðè",
"Äåêåìâðè");
// short month names
Calendar._SMN = new Array
("ßíó",
"Ôåâ",
"Ìàð",
"Àïð",
"Ìàé",
"Þíè",
"Þëè",
"Àâã",
"Ñåï",
"Îêò",
"Íîå",
"Äåê");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "Èíôîðìàöèÿ çà êàëåíäàðà";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Date selection:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
"- Hold mouse button on any of the above buttons for faster selection.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- Click on any of the time parts to increase it\n" +
"- or Shift-click to decrease it\n" +
"- or click and drag for faster selection.";
Calendar._TT["PREV_YEAR"] = "Ïðåäíà ãîäèíà (çàäðúæòå çà ìåíþ)";
Calendar._TT["PREV_MONTH"] = "Ïðåäåí ìåñåö (çàäðúæòå çà ìåíþ)";
Calendar._TT["GO_TODAY"] = "Èçáåðåòå äíåñ";
Calendar._TT["NEXT_MONTH"] = "Ñëåäâàù ìåñåö (çàäðúæòå çà ìåíþ)";
Calendar._TT["NEXT_YEAR"] = "Ñëåäâàùà ãîäèíà (çàäðúæòå çà ìåíþ)";
Calendar._TT["SEL_DATE"] = "Èçáåðåòå äàòà";
Calendar._TT["DRAG_TO_MOVE"] = "Ïðåìåñòâàíå";
Calendar._TT["PART_TODAY"] = " (äíåñ)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "%s êàòî ïúðâè äåí";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Çàòâîðåòå";
Calendar._TT["TODAY"] = "Äíåñ";
Calendar._TT["TIME_PART"] = "(Shift-)Click èëè drag çà äà ïðîìåíèòå ñòîéíîñòòà";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
Calendar._TT["WK"] = "Ñåäì";
Calendar._TT["TIME"] = "×àñ:";

View File

@ -0,0 +1,123 @@
// ** I18N
// Calendar big5-utf8 language
// Author: Gary Fu, <gary@garyfu.idv.tw>
// Encoding: utf8
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
"星期日");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("日",
"一",
"二",
"三",
"四",
"五",
"六",
"日");
// full month names
Calendar._MN = new Array
("一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月");
// short month names
Calendar._SMN = new Array
("一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "關於";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"日期選擇方法:\n" +
"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
"- 按住上面的按鈕可以加快選取";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"時間選擇方法:\n" +
"- 點擊任何的時間部份可增加其值\n" +
"- 同時按Shift鍵再點擊可減少其值\n" +
"- 點擊並拖曳可加快改變的值";
Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
Calendar._TT["GO_TODAY"] = "到今日";
Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
Calendar._TT["SEL_DATE"] = "選擇日期";
Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
Calendar._TT["PART_TODAY"] = " (今日)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "關閉";
Calendar._TT["TODAY"] = "今日";
Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "週";
Calendar._TT["TIME"] = "Time:";

View File

@ -0,0 +1,123 @@
// ** I18N
// Calendar big5 language
// Author: Gary Fu, <gary@garyfu.idv.tw>
// Encoding: big5
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
"星期日");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("日",
"一",
"二",
"三",
"四",
"五",
"六",
"日");
// full month names
Calendar._MN = new Array
("一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月");
// short month names
Calendar._SMN = new Array
("一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "關於";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"日期選擇方法:\n" +
"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
"- 按住上面的按鈕可以加快選取";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"時間選擇方法:\n" +
"- 點擊任何的時間部份可增加其值\n" +
"- 同時按Shift鍵再點擊可減少其值\n" +
"- 點擊並拖曳可加快改變的值";
Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
Calendar._TT["GO_TODAY"] = "到今日";
Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
Calendar._TT["SEL_DATE"] = "選擇日期";
Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
Calendar._TT["PART_TODAY"] = " (今日)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "關閉";
Calendar._TT["TODAY"] = "今日";
Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "週";
Calendar._TT["TIME"] = "Time:";

View File

@ -0,0 +1,108 @@
// ** I18N
// Calendar pt-BR language
// Author: Fernando Dourado, <fernando.dourado@ig.com.br>
// Encoding: any
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("Domingo",
"Segunda",
"Terça",
"Quarta",
"Quinta",
"Sexta",
"Sabádo",
"Domingo");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
// [No changes using default values]
// full month names
Calendar._MN = new Array
("Janeiro",
"Fevereiro",
"Março",
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"Dezembro");
// short month names
// [No changes using default values]
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "Sobre o calendário";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado@ig.com.br)\n" +
"Tradução para o português Brasil (pt-BR) por Fernando Dourado (fernando.dourado@ig.com.br)" +
"\n\n" +
"Selecionar data:\n" +
"- Use as teclas \xab, \xbb para selecionar o ano\n" +
"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mês\n" +
"- Clique e segure com o mouse em qualquer botão para selecionar rapidamente.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Selecionar hora:\n" +
"- Clique em qualquer uma das partes da hora para aumentar\n" +
"- ou Shift-clique para diminuir\n" +
"- ou clique e arraste para selecionar rapidamente.";
Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
Calendar._TT["PREV_MONTH"] = "Mês anterior (clique e segure para menu)";
Calendar._TT["GO_TODAY"] = "Ir para a data atual";
Calendar._TT["NEXT_MONTH"] = "Próximo mês (clique e segure para menu)";
Calendar._TT["NEXT_YEAR"] = "Próximo ano (clique e segure para menu)";
Calendar._TT["SEL_DATE"] = "Selecione uma data";
Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
Calendar._TT["PART_TODAY"] = " (hoje)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Fechar";
Calendar._TT["TODAY"] = "Hoje";
Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
Calendar._TT["WK"] = "sem";
Calendar._TT["TIME"] = "Hora:";

View File

@ -0,0 +1,123 @@
// ** I18N
// Calendar CA language
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Encoding: any
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("Diumenge",
"Dilluns",
"Dimarts",
"Dimecres",
"Dijous",
"Divendres",
"Dissabte",
"Diumenge");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("Diu",
"Dil",
"Dmt",
"Dmc",
"Dij",
"Div",
"Dis",
"Diu");
// full month names
Calendar._MN = new Array
("Gener",
"Febrer",
"Març",
"Abril",
"Maig",
"Juny",
"Juliol",
"Agost",
"Setembre",
"Octubre",
"Novembre",
"Desembre");
// short month names
Calendar._SMN = new Array
("Gen",
"Feb",
"Mar",
"Abr",
"Mai",
"Jun",
"Jul",
"Ago",
"Set",
"Oct",
"Nov",
"Des");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "Sobre el calendari";
Calendar._TT["ABOUT"] =
"DHTML Selector de Data/Hora\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Sel.lecció de Dates:\n" +
"- Fes servir els botons \xab, \xbb per sel.leccionar l'any\n" +
"- Fes servir els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per se.lecciconar el mes\n" +
"- Manté el ratolí apretat en qualsevol dels anteriors per sel.lecció ràpida.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- claca en qualsevol de les parts de la hora per augmentar-les\n" +
"- o Shift-click per decrementar-la\n" +
"- or click and arrastra per sel.lecció ràpida.";
Calendar._TT["PREV_YEAR"] = "Any anterior (Mantenir per menu)";
Calendar._TT["PREV_MONTH"] = "Mes anterior (Mantenir per menu)";
Calendar._TT["GO_TODAY"] = "Anar a avui";
Calendar._TT["NEXT_MONTH"] = "Mes següent (Mantenir per menu)";
Calendar._TT["NEXT_YEAR"] = "Any següent (Mantenir per menu)";
Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
Calendar._TT["PART_TODAY"] = " (avui)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Tanca";
Calendar._TT["TODAY"] = "Avui";
Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "st";
Calendar._TT["TIME"] = "Hora:";

View File

@ -0,0 +1,123 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Encoding: any
// Translator : Niko <nikoused@gmail.com>
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("\u5468\u65e5",//\u5468\u65e5
"\u5468\u4e00",//\u5468\u4e00
"\u5468\u4e8c",//\u5468\u4e8c
"\u5468\u4e09",//\u5468\u4e09
"\u5468\u56db",//\u5468\u56db
"\u5468\u4e94",//\u5468\u4e94
"\u5468\u516d",//\u5468\u516d
"\u5468\u65e5");//\u5468\u65e5
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("\u5468\u65e5",
"\u5468\u4e00",
"\u5468\u4e8c",
"\u5468\u4e09",
"\u5468\u56db",
"\u5468\u4e94",
"\u5468\u516d",
"\u5468\u65e5");
// full month names
Calendar._MN = new Array
("\u4e00\u6708",
"\u4e8c\u6708",
"\u4e09\u6708",
"\u56db\u6708",
"\u4e94\u6708",
"\u516d\u6708",
"\u4e03\u6708",
"\u516b\u6708",
"\u4e5d\u6708",
"\u5341\u6708",
"\u5341\u4e00\u6708",
"\u5341\u4e8c\u6708");
// short month names
Calendar._SMN = new Array
("\u4e00\u6708",
"\u4e8c\u6708",
"\u4e09\u6708",
"\u56db\u6708",
"\u4e94\u6708",
"\u516d\u6708",
"\u4e03\u6708",
"\u516b\u6708",
"\u4e5d\u6708",
"\u5341\u6708",
"\u5341\u4e00\u6708",
"\u5341\u4e8c\u6708");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "\u5173\u4e8e";
Calendar._TT["ABOUT"] =
" DHTML \u65e5\u8d77/\u65f6\u95f4\u9009\u62e9\u63a7\u4ef6\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: \u6700\u65b0\u7248\u672c\u8bf7\u767b\u9646http://www.dynarch.com/projects/calendar/\u5bdf\u770b\n" +
"\u9075\u5faaGNU LGPL. \u7ec6\u8282\u53c2\u9605 http://gnu.org/licenses/lgpl.html" +
"\n\n" +
"\u65e5\u671f\u9009\u62e9:\n" +
"- \u70b9\u51fb\xab(\xbb)\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e00\u5e74\u5ea6.\n" +
"- \u70b9\u51fb" + String.fromCharCode(0x2039) + "(" + String.fromCharCode(0x203a) + ")\u6309\u94ae\u9009\u62e9\u4e0a(\u4e0b)\u4e2a\u6708\u4efd.\n" +
"- \u957f\u65f6\u95f4\u6309\u7740\u6309\u94ae\u5c06\u51fa\u73b0\u66f4\u591a\u9009\u62e9\u9879.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"\u65f6\u95f4\u9009\u62e9:\n" +
"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u589e\u52a0\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\n" +
"-\u5728\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2)\u4e0a\u6309\u4f4fShift\u952e\u540e\u5355\u51fb\u9f20\u6807\u5de6\u952e\u6765\u51cf\u5c11\u5f53\u524d\u65f6\u95f4\u90e8\u5206(\u5206\u6216\u8005\u79d2).";
Calendar._TT["PREV_YEAR"] = "\u4e0a\u4e00\u5e74";
Calendar._TT["PREV_MONTH"] = "\u4e0a\u4e2a\u6708";
Calendar._TT["GO_TODAY"] = "\u5230\u4eca\u5929";
Calendar._TT["NEXT_MONTH"] = "\u4e0b\u4e2a\u6708";
Calendar._TT["NEXT_YEAR"] = "\u4e0b\u4e00\u5e74";
Calendar._TT["SEL_DATE"] = "\u9009\u62e9\u65e5\u671f";
Calendar._TT["DRAG_TO_MOVE"] = "\u62d6\u52a8";
Calendar._TT["PART_TODAY"] = " (\u4eca\u5929)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "%s\u4e3a\u8fd9\u5468\u7684\u7b2c\u4e00\u5929";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "\u5173\u95ed";
Calendar._TT["TODAY"] = "\u4eca\u5929";
Calendar._TT["TIME_PART"] = "(\u6309\u7740Shift\u952e)\u5355\u51fb\u6216\u62d6\u52a8\u6539\u53d8\u503c";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e\u65e5";
Calendar._TT["WK"] = "\u5468";
Calendar._TT["TIME"] = "\u65f6\u95f4:";

View File

@ -0,0 +1,65 @@
/*
calendar-cs-win.js
language: Czech
encoding: windows-1250
author: Lubos Jerabek (xnet@seznam.cz)
Jan Uhlir (espinosa@centrum.cz)
*/
// ** I18N
Calendar._DN = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
Calendar._MN = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "O komponentě kalendář";
Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
Calendar._TT["GO_TODAY"] = "Dnešní datum";
Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
Calendar._TT["SEL_DATE"] = "Vyber datum";
Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
Calendar._TT["PART_TODAY"] = " (dnes)";
Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Výběr datumu:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Výběr času:\n" +
"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
"- nebo Shift-click pro snížení\n" +
"- nebo klikněte a táhněte pro rychlejší výběr.";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Zavřít";
Calendar._TT["TODAY"] = "Dnes";
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Čas:";

View File

@ -0,0 +1,65 @@
/*
calendar-cs-win.js
language: Czech
encoding: windows-1250
author: Lubos Jerabek (xnet@seznam.cz)
Jan Uhlir (espinosa@centrum.cz)
*/
// ** I18N
Calendar._DN = new Array('Nedìle','Pondìlí','Úterý','Støeda','Ètvrtek','Pátek','Sobota','Nedìle');
Calendar._SDN = new Array('Ne','Po','Út','St','Èt','Pá','So','Ne');
Calendar._MN = new Array('Leden','Únor','Bøezen','Duben','Kvìten','Èerven','Èervenec','Srpen','Záøí','Øíjen','Listopad','Prosinec');
Calendar._SMN = new Array('Led','Úno','Bøe','Dub','Kvì','Èrv','Èvc','Srp','Záø','Øíj','Lis','Pro');
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "O komponentì kalendáø";
Calendar._TT["TOGGLE"] = "Zmìna prvního dne v týdnu";
Calendar._TT["PREV_YEAR"] = "Pøedchozí rok (pøidrž pro menu)";
Calendar._TT["PREV_MONTH"] = "Pøedchozí mìsíc (pøidrž pro menu)";
Calendar._TT["GO_TODAY"] = "Dnešní datum";
Calendar._TT["NEXT_MONTH"] = "Další mìsíc (pøidrž pro menu)";
Calendar._TT["NEXT_YEAR"] = "Další rok (pøidrž pro menu)";
Calendar._TT["SEL_DATE"] = "Vyber datum";
Calendar._TT["DRAG_TO_MOVE"] = "Chy<68> a táhni, pro pøesun";
Calendar._TT["PART_TODAY"] = " (dnes)";
Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondìlí";
//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Nedìli";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Výbìr datumu:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Použijte tlaèítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výbìru mìsíce\n" +
"- Podržte tlaèítko myši na jakémkoliv z tìch tlaèítek pro rychlejší výbìr.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Výbìr èasu:\n" +
"- Kliknìte na jakoukoliv z èástí výbìru èasu pro zvýšení.\n" +
"- nebo Shift-click pro snížení\n" +
"- nebo kliknìte a táhnìte pro rychlejší výbìr.";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Zavøít";
Calendar._TT["TODAY"] = "Dnes";
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro zmìnu hodnoty";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Èas:";

View File

@ -0,0 +1,65 @@
/*
calendar-cs-win.js
language: Czech
encoding: windows-1250
author: Lubos Jerabek (xnet@seznam.cz)
Jan Uhlir (espinosa@centrum.cz)
*/
// ** I18N
Calendar._DN = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
Calendar._MN = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "O komponentě kalendář";
Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
Calendar._TT["GO_TODAY"] = "Dnešní datum";
Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
Calendar._TT["SEL_DATE"] = "Vyber datum";
Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
Calendar._TT["PART_TODAY"] = " (dnes)";
Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Výběr datumu:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Výběr času:\n" +
"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
"- nebo Shift-click pro snížení\n" +
"- nebo klikněte a táhněte pro rychlejší výběr.";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Zavřít";
Calendar._TT["TODAY"] = "Dnes";
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Čas:";

Some files were not shown because too many files have changed in this diff Show More