launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #15507
[Merge] lp:~stevenk/launchpad/destroy-yui2-good-riddance into lp:launchpad
Steve Kowalik has proposed merging lp:~stevenk/launchpad/destroy-yui2-good-riddance into lp:launchpad.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~stevenk/launchpad/destroy-yui2-good-riddance/+merge/160013
Building on the work in https://code.launchpad.net/~stevenk/launchpad/new-yui3-calendar/+merge/160006, we can now destroy YUI 2 from our tree. Good riddance!
--
The attached diff has been truncated due to its size.
https://code.launchpad.net/~stevenk/launchpad/destroy-yui2-good-riddance/+merge/160013
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~stevenk/launchpad/destroy-yui2-good-riddance into lp:launchpad.
=== modified file 'Makefile'
--- Makefile 2013-04-19 02:34:25 +0000
+++ Makefile 2013-04-22 06:59:53 +0000
@@ -25,7 +25,6 @@
JS_BUILD_DIR := build/js
YUI_VERSIONS := 3.9.1
YUI_BUILDS := $(patsubst %,$(JS_BUILD_DIR)/yui-%, $(YUI_VERSIONS))
-YUI2_BUILD:= $(JS_BUILD_DIR)/yui2
YUI_DEFAULT := yui-3.9.1
YUI_DEFAULT_SYMLINK := $(JS_BUILD_DIR)/yui
LP_JS_BUILD := $(JS_BUILD_DIR)/lp
@@ -181,11 +180,7 @@
find $@ -name 'tests' -type d | xargs rm -rf
bin/lpjsmin -p $@
-$(YUI2_BUILD): lib/canonical/launchpad/icing/yui_2.7.0b/build
- mkdir -p $@
- cp -a $</* $@
-
-jsbuild: $(LP_JS_BUILD) $(YUI_DEFAULT_SYMLINK) $(YUI2_BUILD)
+jsbuild: $(LP_JS_BUILD) $(YUI_DEFAULT_SYMLINK)
utilities/js-deps -n LP_MODULES -s build/js/lp -x '-min.js' -o \
build/js/lp/meta.js >/dev/null
utilities/check-js-deps
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam'
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/ajax-loader.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/ajax-loader.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/ajax-loader.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/asc.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/asc.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/asc.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/autocomplete.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/autocomplete.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/autocomplete.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-ac{position:relative;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:100%;}.yui-skin-sam .yui-ac-input{position:absolute;width:100%;}.yui-skin-sam .yui-ac-container{position:absolute;top:1.6em;width:100%;}.yui-skin-sam .yui-ac-content{position:absolute;width:100%;border:1px solid #808080;background:#fff;overflow:hidden;z-index:9050;}.yui-skin-sam .yui-ac-shadow{position:absolute;margin:.3em;width:100%;background:#000;-moz-opacity:.10;opacity:.10;filter:alpha(opacity=10);z-index:9049;}.yui-skin-sam .yui-ac iframe{opacity:0;filter:alpha(opacity=0);padding-right:.3em;padding-bottom:.3em;}.yui-skin-sam .yui-ac-content ul{margin:0;padding:0;width:100%;}.yui-skin-sam .yui-ac-content li{margin:0;padding:2px 5px;cursor:default;white-space:nowrap;list-style:none;zoom:1;}.yui-skin-sam .yui-ac-content li.yui-ac-prehighlight{background:#B3D4FF;}.yui-skin-sam .yui-ac-content li.yui-ac-highlight{background:#426FD9;color:#FFF;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-h.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-h.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-h.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-v.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-v.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/bg-v.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/blankimage.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/blankimage.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/blankimage.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/button.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/button.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/button.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-button{display:-moz-inline-box;display:inline-block;vertical-align:text-bottom;}.yui-button .first-child{display:block;*display:inline-block;}.yui-button button,.yui-button a{display:block;*display:inline-block;border:none;margin:0;}.yui-button button{background-color:transparent;*overflow:visible;cursor:pointer;}.yui-button a{text-decoration:none;}.yui-skin-sam .yui-button{border-width:1px 0;border-style:solid;border-color:#808080;background:url(sprite.png) repeat-x 0 0;margin:auto .25em;}.yui-skin-sam .yui-button .first-child{border-width:0 1px;border-style:solid;border-color:#808080;margin:0 -1px;_margin:0;}.yui-skin-sam .yui-button button,.yui-skin-sam .yui-button a{padding:0 10px;font-size:93%;line-height:2;*line-height:1.7;min-height:2em;*min-height:auto;color:#000;}.yui-skin-sam .yui-button a{*line-height:1.875;*padding-bottom:1px;}.yui-skin-sam .yui-split-button button,.yui-skin-sam .yui-menu-button button{padding-right:20px;background-position:right center;background-repeat:no-repeat;}.yui-skin-sam .yui-menu-button button{background-image:url(menu-button-arrow.png);}.yui-skin-sam .yui-split-button button{background-image:url(split-button-arrow.png);}.yui-skin-sam .yui-button-focus{border-color:#7D98B8;background-position:0 -1300px;}.yui-skin-sam .yui-button-focus .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-focus button,.yui-skin-sam .yui-button-focus a{color:#000;}.yui-skin-sam .yui-split-button-focus button{background-image:url(split-button-arrow-focus.png);}.yui-skin-sam .yui-button-hover{border-color:#7D98B8;background-position:0 -1300px;}.yui-skin-sam .yui-button-hover .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-hover button,.yui-skin-sam .yui-button-hover a{color:#000;}.yui-skin-sam .yui-split-button-hover button{background-image:url(split-button-arrow-hover.png);}.yui-skin-sam .yui-button-active{border-color:#7D98B8;background-position:0 -1700px;}.yui-skin-sam .yui-button-active .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-active button,.yui-skin-sam .yui-button-active a{color:#000;}.yui-skin-sam .yui-split-button-activeoption{border-color:#808080;background-position:0 0;}.yui-skin-sam .yui-split-button-activeoption .first-child{border-color:#808080;}.yui-skin-sam .yui-split-button-activeoption button{background-image:url(split-button-arrow-active.png);}.yui-skin-sam .yui-radio-button-checked,.yui-skin-sam .yui-checkbox-button-checked{border-color:#304369;background-position:0 -1400px;}.yui-skin-sam .yui-radio-button-checked .first-child,.yui-skin-sam .yui-checkbox-button-checked .first-child{border-color:#304369;}.yui-skin-sam .yui-radio-button-checked button,.yui-skin-sam .yui-checkbox-button-checked button{color:#fff;}.yui-skin-sam .yui-button-disabled{border-color:#ccc;background-position:0 -1500px;}.yui-skin-sam .yui-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-button-disabled button,.yui-skin-sam .yui-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-menu-button-disabled button{background-image:url(menu-button-arrow-disabled.png);}.yui-skin-sam .yui-split-button-disabled button{background-image:url(split-button-arrow-disabled.png);}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/calendar.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/calendar.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/calendar.css 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-calcontainer{position:relative;float:left;_overflow:hidden;}.yui-calcontainer iframe{position:absolute;border:none;margin:0;padding:0;z-index:0;width:100%;height:100%;left:0;top:0;}.yui-calcontainer iframe.fixedsize{width:50em;height:50em;top:-1px;left:-1px;}.yui-calcontainer.multi .groupcal{z-index:1;float:left;position:relative;}.yui-calcontainer .title{position:relative;z-index:1;}.yui-calcontainer .close-icon{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar{position:relative;}.yui-calendar .calnavleft{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calnavright{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calheader{position:relative;width:100%;text-align:center;}.yui-calcontainer .yui-cal-nav-mask{position:absolute;z-index:2;margin:0;padding:0;width:100%;height:100%;_width:0;_height:0;left:0;top:0;display:none;}.yui-calcontainer .yui-cal-nav{position:absolute;z-index:3;top:0;display:none;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{display:-moz-inline-box;display:inline-block;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{display:block;*display:inline-block;*overflow:visible;border:none;background-color:transparent;cursor:pointer;}.yui-calendar .calbody a:hover{background:inherit;}p#clear{clear:left;padding-top:10px;}.yui-skin-sam .yui-calcontainer{background-color:#f2f2f2;border:1px solid #808080;padding:10px;}.yui-skin-sam .yui-calcontainer.multi{padding:0 5px 0 5px;}.yui-skin-sam .yui-calcontainer.multi .groupcal{background-color:transparent;border:none;padding:10px 5px 10px 5px;margin:0;}.yui-skin-sam .yui-calcontainer .title{background:url(sprite.png) repeat-x 0 0;border-bottom:1px solid #ccc;font:100% sans-serif;color:#000;font-weight:bold;height:auto;padding:.4em;margin:0 -10px 10px -10px;top:0;left:0;text-align:left;}.yui-skin-sam .yui-calcontainer.multi .title{margin:0 -5px 0 -5px;}.yui-skin-sam .yui-calcontainer.withtitle{padding-top:0;}.yui-skin-sam .yui-calcontainer .calclose{background:url(sprite.png) no-repeat 0 -300px;width:25px;height:15px;top:.4em;right:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar{border-spacing:0;border-collapse:collapse;font:100% sans-serif;text-align:center;margin:0;}.yui-skin-sam .yui-calendar .calhead{background:transparent;border:none;vertical-align:middle;padding:0;}.yui-skin-sam .yui-calendar .calheader{background:transparent;font-weight:bold;padding:0 0 .6em 0;text-align:center;}.yui-skin-sam .yui-calendar .calheader img{border:none;}.yui-skin-sam .yui-calendar .calnavleft{background:url(sprite.png) no-repeat 0 -450px;width:25px;height:15px;top:0;bottom:0;left:-10px;margin-left:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar .calnavright{background:url(sprite.png) no-repeat 0 -500px;width:25px;height:15px;top:0;bottom:0;right:-10px;margin-right:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar .calweekdayrow{height:2em;}.yui-skin-sam .yui-calendar .calweekdayrow th{padding:0;border:none;}.yui-skin-sam .yui-calendar .calweekdaycell{color:#000;font-weight:bold;text-align:center;width:2em;}.yui-skin-sam .yui-calendar .calfoot{background-color:#f2f2f2;}.yui-skin-sam .yui-calendar .calrowhead,.yui-skin-sam .yui-calendar .calrowfoot{color:#a6a6a6;font-size:85%;font-style:normal;font-weight:normal;border:none;}.yui-skin-sam .yui-calendar .calrowhead{text-align:right;padding:0 2px 0 0;}.yui-skin-sam .yui-calendar .calrowfoot{text-align:left;padding:0 0 0 2px;}.yui-skin-sam .yui-calendar td.calcell{border:1px solid #ccc;background:#fff;padding:1px;height:1.6em;line-height:1.6em;text-align:center;white-space:nowrap;}.yui-skin-sam .yui-calendar td.calcell a{color:#06c;display:block;height:100%;text-decoration:none;}.yui-skin-sam .yui-calendar td.calcell.today{background-color:#000;}.yui-skin-sam .yui-calendar td.calcell.today a{background-color:#fff;}.yui-skin-sam .yui-calendar td.calcell.oom{background-color:#ccc;color:#a6a6a6;cursor:default;}.yui-skin-sam .yui-calendar td.calcell.selected{background-color:#fff;color:#000;}.yui-skin-sam .yui-calendar td.calcell.selected a{background-color:#b3d4ff;color:#000;}.yui-skin-sam .yui-calendar td.calcell.calcellhover{background-color:#426fd9;color:#fff;cursor:pointer;}.yui-skin-sam .yui-calendar td.calcell.calcellhover a{background-color:#426fd9;color:#fff;}.yui-skin-sam .yui-calendar td.calcell.previous{color:#e0e0e0;}.yui-skin-sam .yui-calendar td.calcell.restricted{text-decoration:line-through;}.yui-skin-sam .yui-calendar td.calcell.highlight1{background-color:#cf9;}.yui-skin-sam .yui-calendar td.calcell.highlight2{background-color:#9cf;}.yui-skin-sam .yui-calendar td.calcell.highlight3{background-color:#fcc;}.yui-skin-sam .yui-calendar td.calcell.highlight4{background-color:#cf9;}.yui-skin-sam .yui-calendar a.calnav{border:1px solid #f2f2f2;padding:0 4px;text-decoration:none;color:#000;zoom:1;}.yui-skin-sam .yui-calendar a.calnav:hover{background:url(sprite.png) repeat-x 0 0;border-color:#A0A0A0;cursor:pointer;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-calcontainer .yui-cal-nav{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:93%;border:1px solid #808080;left:50%;margin-left:-7em;width:14em;padding:0;top:2.5em;background-color:#f2f2f2;}.yui-skin-sam .yui-calcontainer.withtitle .yui-cal-nav{top:4.5em;}.yui-skin-sam .yui-calcontainer.multi .yui-cal-nav{width:16em;margin-left:-8em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-y,.yui-skin-sam .yui-calcontainer .yui-cal-nav-m,.yui-skin-sam .yui-calcontainer .yui-cal-nav-b{padding:5px 10px 5px 10px;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-b{text-align:center;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-e{margin-top:5px;padding:5px;background-color:#EDF5FF;border-top:1px solid black;display:none;}.yui-skin-sam .yui-calcontainer .yui-cal-nav label{display:block;font-weight:bold;}
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-mc{width:100%;_width:auto;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-y input.yui-invalid{background-color:#FFEE69;border:1px solid #000;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-yc{width:4em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{border:1px solid #808080;background:url(sprite.png) repeat-x 0 0;background-color:#ccc;margin:auto .15em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{padding:0 8px;font-size:93%;line-height:2;*line-height:1.7;min-height:2em;*min-height:auto;color:#000;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default{border:1px solid #304369;background-color:#426fd9;background:url(sprite.png) repeat-x 0 -1400px;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button{color:#fff;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/carousel.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/carousel.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/carousel.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-carousel{visibility:hidden;overflow:hidden;position:relative;text-align:left;zoom:1;}.yui-carousel.yui-carousel-visible{visibility:visible;}.yui-carousel-content{overflow:hidden;position:relative;}.yui-carousel-element{margin:5px 0;overflow:hidden;padding:0;position:relative;width:32000px;z-index:1;}.yui-carousel-vertical .yui-carousel-element{margin:0 5px;}.yui-carousel-element li{border:1px solid #ccc;float:left;list-style:none;margin:1px;overflow:hidden;padding:0;text-align:center;*float:none;*display:inline-block;*zoom:1;*display:inline;}.yui-carousel .yui-carousel-item-selected{border:1px dashed #000;margin:1px;}.yui-carousel-vertical{height:32000px;margin:0 5px;width:auto;}.yui-carousel-vertical .yui-carousel-element li{display:block;float:none;}.yui-log .carousel{background:#f2e886;}.yui-carousel-nav{zoom:1;}.yui-carousel-nav:after{clear:both;content:"";display:block;}.yui-carousel-button-focus{outline:1px dotted #000;}.yui-carousel-min-width .yui-carousel-content{margin:0 auto;}.yui-skin-sam .yui-carousel,.yui-skin-sam .yui-carousel-vertical{border:1px solid #808080;}.yui-skin-sam .yui-carousel-nav{background:url(sprite.png) repeat-x 0 0;padding:3px;text-align:right;}.yui-skin-sam .yui-carousel-button{background:url(sprite.png) no-repeat 0 -600px;float:right;height:19px;margin:5px;overflow:hidden;width:40px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-button{background-position:0 -800px;}.yui-skin-sam .yui-carousel-button-disabled{background-position:0 -2000px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-button-disabled{background-position:0 -2100px;}.yui-skin-sam .yui-carousel-button input,.yui-skin-sam .yui-carousel-button button{background-color:transparent;border:0;cursor:pointer;display:block;height:44px;margin:-2px 0 0 -2px;padding:0 0 0 50px;}.yui-skin-sam span.yui-carousel-first-button{background-position:0 -550px;margin-left:-100px;margin-right:50px;*margin:5px 5px 5px -90px;}.yui-skin-sam .yui-carousel-vertical span.yui-carousel-first-button{background-position:0 -750px;}.yui-skin-sam span.yui-carousel-first-button-disabled{background-position:0 -1950px;}.yui-skin-sam .yui-carousel-vertical span.yui-carousel-first-button-disabled{background-position:0 -2050px;}.yui-skin-sam .yui-carousel-nav ul{float:right;height:19px;margin:0;margin-left:-220px;margin-right:100px;*margin-left:-160px;*margin-right:0;padding:0;}.yui-skin-sam .yui-carousel-min-width .yui-carousel-nav ul{*margin-left:-170px;}.yui-skin-sam .yui-carousel-nav select{position:relative;*right:50px;top:4px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-nav ul,.yui-skin-sam .yui-carousel-vertical .yui-carousel-nav select{float:none;margin:0;*zoom:1;}.yui-skin-sam .yui-carousel-nav ul li{background:url(sprite.png) no-repeat 0 -650px;cursor:pointer;float:left;height:9px;list-style:none;margin:10px 0 0 5px;overflow:hidden;padding:0;width:9px;}.yui-skin-sam .yui-carousel-nav ul:after{clear:both;content:"";display:block;}.yui-skin-sam .yui-carousel-nav ul li a{left:-10000px;position:absolute;}.yui-skin-sam .yui-carousel-nav ul li.yui-carousel-nav-page-focus{outline:1px dotted #000;}.yui-skin-sam .yui-carousel-nav ul li.yui-carousel-nav-page-selected{background-position:0 -700px;}.yui-skin-sam .yui-carousel-item-loading{background:url(ajax-loader.gif) no-repeat 50% 50%;position:relative;text-indent:-150px;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/colorpicker.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/colorpicker.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/colorpicker.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-picker-panel{background:#e3e3e3;border-color:#888;}.yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.yui-picker{position:relative;}.yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../../build/colorpicker/assets/picker_mask.png',sizingMethod='scale');}.yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.yui-picker-controls .hd{background:transparent;border-width:0!important;}.yui-picker-controls .bd{height:100px;border-width:0!important;}.yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.yui-picker-controls li{padding:2px;list-style:none;margin:0;}.yui-picker-controls input{font-size:.85em;width:2.4em;}.yui-picker-hex-controls{clear:both;padding:2px;}.yui-picker-hex-controls input{width:4.6em;}.yui-picker-controls a{font:1em bitstream vera sans, dejavu sans, verdana, sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/container.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/container.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/container.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-overlay,.yui-panel-container{visibility:hidden;position:absolute;z-index:2;}.yui-panel{position:relative;}.yui-panel-container form{margin:0;}.mask{z-index:1;display:none;position:absolute;top:0;left:0;right:0;bottom:0;}.mask.block-scrollbars{overflow:auto;}.masked select,.drag select,.hide-select select{_visibility:hidden;}.yui-panel-container select{_visibility:inherit;}.hide-scrollbars,.hide-scrollbars *{overflow:hidden;}.hide-scrollbars select{display:none;}.show-scrollbars{overflow:auto;}.yui-panel-container.show-scrollbars,.yui-tt.show-scrollbars{overflow:visible;}.yui-panel-container.show-scrollbars .underlay,.yui-tt.show-scrollbars .yui-tt-shadow{overflow:auto;}.yui-panel-container.shadow .underlay.yui-force-redraw{padding-bottom:1px;}.yui-effect-fade .underlay,.yui-effect-fade .yui-tt-shadow{display:none;}.yui-tt-shadow{position:absolute;}.yui-override-padding{padding:0!important;}.yui-panel-container .container-close{overflow:hidden;text-indent:-10000em;text-decoration:none;}.yui-overlay.yui-force-redraw,.yui-panel-container.yui-force-redraw{margin-bottom:1px;}.yui-skin-sam .mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-panel-container{padding:0 1px;*padding:2px;}.yui-skin-sam .yui-panel{position:relative;left:0;top:0;border-style:solid;border-width:1px 0;border-color:#808080;z-index:1;*border-width:1px;*zoom:1;_zoom:normal;}.yui-skin-sam .yui-panel .hd,.yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{border-style:solid;border-width:0 1px;border-color:#808080;margin:0 -1px;*margin:0;*border:0;}.yui-skin-sam .yui-panel .hd{border-bottom:solid 1px #ccc;}.yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{background-color:#F2F2F2;}.yui-skin-sam .yui-panel .hd{padding:0 10px;font-size:93%;line-height:2;*line-height:1.9;font-weight:bold;color:#000;background:url(sprite.png) repeat-x 0 -200px;}.yui-skin-sam .yui-panel .bd{padding:10px;}.yui-skin-sam .yui-panel .ft{border-top:solid 1px #808080;padding:5px 10px;font-size:77%;}.yui-skin-sam .container-close{position:absolute;top:5px;right:6px;width:25px;height:15px;background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;}.yui-skin-sam .yui-panel-container .underlay{right:-1px;left:-1px;}.yui-skin-sam .yui-panel-container.matte{padding:9px 10px;background-color:#fff;}.yui-skin-sam .yui-panel-container.shadow{_padding:2px 4px 0 2px;}.yui-skin-sam .yui-panel-container.shadow .underlay{position:absolute;top:2px;left:-3px;right:-3px;bottom:-3px;*top:4px;*left:-1px;*right:-1px;*bottom:-1px;_top:0;_left:0;_right:0;_bottom:0;_margin-top:3px;_margin-left:-1px;background-color:#000;opacity:.12;filter:alpha(opacity=12);}.yui-skin-sam .yui-dialog .ft{border-top:none;padding:0 10px 10px 10px;font-size:100%;}.yui-skin-sam .yui-dialog .ft .button-group{display:block;text-align:right;}.yui-skin-sam .yui-dialog .ft button.default{font-weight:bold;}.yui-skin-sam .yui-dialog .ft span.default{border-color:#304369;background-position:0 -1400px;}.yui-skin-sam .yui-dialog .ft span.default .first-child{border-color:#304369;}.yui-skin-sam .yui-dialog .ft span.default button{color:#fff;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled{background-position:0 -1500px;border-color:#ccc;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled button{color:#a6a6a6;}.yui-skin-sam .yui-simple-dialog .bd .yui-icon{background:url(sprite.png) no-repeat 0 0;width:16px;height:16px;margin-right:10px;float:left;}.yui-skin-sam .yui-simple-dialog .bd span.blckicon{background-position:0 -1100px;}.yui-skin-sam .yui-simple-dialog .bd span.alrticon{background-position:0 -1050px;}.yui-skin-sam .yui-simple-dialog .bd span.hlpicon{background-position:0 -1150px;}.yui-skin-sam .yui-simple-dialog .bd span.infoicon{background-position:0 -1200px;}.yui-skin-sam .yui-simple-dialog .bd span.warnicon{background-position:0 -1900px;}.yui-skin-sam .yui-simple-dialog .bd span.tipicon{background-position:0 -1250px;}.yui-skin-sam .yui-tt .bd{position:relative;top:0;left:0;z-index:1;color:#000;padding:2px 5px;border-color:#D4C237 #A6982B #A6982B #A6982B;border-width:1px;border-style:solid;background-color:#FFEE69;}.yui-skin-sam .yui-tt.show-scrollbars .bd{overflow:auto;}.yui-skin-sam .yui-tt-shadow{top:2px;right:-3px;left:-3px;bottom:-3px;background-color:#000;}.yui-skin-sam .yui-tt-shadow-visible{opacity:.12;filter:alpha(opacity=12);}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/datatable.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/datatable.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/datatable.css 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-dt-mask{position:absolute;z-index:9500;}.yui-dt-tmp{position:absolute;left:-9000px;}.yui-dt-scrollable .yui-dt-bd{overflow:auto;}.yui-dt-scrollable .yui-dt-hd{overflow:hidden;position:relative;}.yui-dt-scrollable .yui-dt-bd thead tr,.yui-dt-scrollable .yui-dt-bd thead th{position:absolute;left:-1500px;}.yui-dt-scrollable tbody{-moz-outline:none;}.yui-skin-sam thead .yui-dt-sortable{cursor:pointer;}.yui-skin-sam thead .yui-dt-draggable{cursor:move;}.yui-dt-coltarget{position:absolute;z-index:999;}.yui-dt-hd{zoom:1;}th.yui-dt-resizeable .yui-dt-resizerliner{position:relative;}.yui-dt-resizer{position:absolute;right:0;bottom:0;height:100%;cursor:e-resize;cursor:col-resize;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}.yui-dt-resizerproxy{visibility:hidden;position:absolute;z-index:9000;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}th.yui-dt-hidden .yui-dt-liner,td.yui-dt-hidden .yui-dt-liner,th.yui-dt-hidden .yui-dt-resizer{display:none;}.yui-dt-editor{position:absolute;z-index:9000;}.yui-skin-sam .yui-dt table{margin:0;padding:0;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:inherit;border-collapse:separate;*border-collapse:collapse;border-spacing:0;border:1px solid #7F7F7F;}.yui-skin-sam .yui-dt thead{border-spacing:0;}.yui-skin-sam .yui-dt caption{color:#000;font-size:85%;font-weight:normal;font-style:italic;line-height:1;padding:1em 0;text-align:center;}.yui-skin-sam .yui-dt th{background:#D8D8DA url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-dt th,.yui-skin-sam .yui-dt th a{font-weight:normal;text-decoration:none;color:#000;vertical-align:bottom;}.yui-skin-sam .yui-dt th{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;}.yui-skin-sam .yui-dt tr.yui-dt-first td{border-top:1px solid #7F7F7F;}.yui-skin-sam .yui-dt th .yui-dt-liner{white-space:nowrap;}.yui-skin-sam .yui-dt-liner{margin:0;padding:0;padding:4px 10px 4px 10px;}.yui-skin-sam .yui-dt-coltarget{width:5px;background-color:red;}.yui-skin-sam .yui-dt td{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;text-align:left;}.yui-skin-sam .yui-dt-list td{border-right:none;}.yui-skin-sam .yui-dt-resizer{width:6px;}.yui-skin-sam .yui-dt-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-dt-message{background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable table{border:none;}.yui-skin-sam .yui-dt-scrollable .yui-dt-hd{border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;}.yui-skin-sam .yui-dt-scrollable .yui-dt-bd{border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td{border-bottom:1px solid #7F7F7F;}.yui-skin-sam th.yui-dt-asc,.yui-skin-sam th.yui-dt-desc{background:url(sprite.png) repeat-x 0 -100px;}.yui-skin-sam th.yui-dt-sortable .yui-dt-label{margin-right:10px;}.yui-skin-sam th.yui-dt-asc .yui-dt-liner{background:url(dt-arrow-up.png) no-repeat right;}.yui-skin-sam th.yui-dt-desc .yui-dt-liner{background:url(dt-arrow-dn.png) no-repeat right;}tbody .yui-dt-editable{cursor:pointer;}.yui-dt-editor{text-align:left;background-color:#F2F2F2;border:1px solid #808080;padding:6px;}.yui-dt-editor label{padding-left:4px;padding-right:6px;}.yui-dt-editor .yui-dt-button{padding-top:6px;text-align:right;}.yui-dt-editor .yui-dt-button button{background:url(sprite.png) repeat-x 0 0;border:1px solid #999;width:4em;height:1.8em;margin-left:6px;}.yui-dt-editor .yui-dt-button button.yui-dt-default{background:url(sprite.png) repeat-x 0 -1400px;background-color:#5584E0;border:1px solid #304369;color:#FFF;}.yui-dt-editor .yui-dt-button button:hover{background:url(sprite.png) repeat-x 0 -1300px;color:#000;}.yui-dt-editor .yui-dt-button button:active{background:url(sprite.png) repeat-x 0 -1700px;color:#000;}.yui-skin-sam tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam tr.yui-dt-odd{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc{background-color:#DBEAFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam th.yui-dt-highlighted,.yui-skin-sam th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam tr.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam th.yui-dt-selected,.yui-skin-sam th.yui-dt-selected a{background-color:#446CD7;}.yui-skin-sam tr.yui-dt-selected td,.yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-list th.yui-dt-selected,.yui-skin-sam .yui-dt-list th.yui-dt-selected a{background-color:#446CD7;}
-.yui-skin-sam .yui-dt-list tr.yui-dt-selected td,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-paginator{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-dt-paginator .yui-dt-first,.yui-skin-sam .yui-dt-paginator .yui-dt-last,.yui-skin-sam .yui-dt-paginator .yui-dt-selected{padding:2px 6px;}.yui-skin-sam .yui-dt-paginator a.yui-dt-first,.yui-skin-sam .yui-dt-paginator a.yui-dt-last{text-decoration:none;}.yui-skin-sam .yui-dt-paginator .yui-dt-previous,.yui-skin-sam .yui-dt-paginator .yui-dt-next{display:none;}.yui-skin-sam a.yui-dt-page{border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;background-color:#fff;}.yui-skin-sam .yui-dt-selected{border:1px solid #fff;background-color:#fff;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/desc.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/desc.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/desc.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-dn.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-dn.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-dn.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-up.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-up.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/dt-arrow-up.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-knob.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-knob.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-knob.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite-active.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite-active.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite-active.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor-sprite.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor.css 1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-busy{cursor:wait!important;}.yui-toolbar-container fieldset,.yui-editor-container fieldset{padding:0;margin:0;border:0;}.yui-toolbar-container legend{display:none;}.yui-toolbar-container .yui-toolbar-subcont{padding:.25em 0;zoom:1;}.yui-toolbar-container-collapsed .yui-toolbar-subcont{display:none;}.yui-toolbar-container .yui-toolbar-subcont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container span.yui-toolbar-draghandle{cursor:move;border-left:1px solid #999;border-right:1px solid #999;overflow:hidden;text-indent:77777px;width:2px;height:20px;display:block;clear:none;float:left;margin:0 0 0 .2em;}.yui-toolbar-container .yui-toolbar-titlebar.draggable{cursor:move;}.yui-toolbar-container .yui-toolbar-titlebar{position:relative;}.yui-toolbar-container .yui-toolbar-titlebar h2{font-weight:bold;letter-spacing:0;border:none;color:#000;margin:0;padding:.2em;}.yui-toolbar-container .yui-toolbar-titlebar h2 a{text-decoration:none;color:#000;cursor:default;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-draghandle{height:40px;}.yui-toolbar-container .yui-toolbar-group{float:left;margin-right:.5em;zoom:1;}.yui-toolbar-container .yui-toolbar-group:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container .yui-toolbar-group h3{font-size:75%;padding:0 0 0 .25em;margin:0;}.yui-toolbar-container span.yui-toolbar-separator{width:2px;padding:0;height:18px;margin:.2em 0 .2em .1em;display:none;float:left;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-separator{height:45px;*height:50px;}.yui-toolbar-container.yui-toolbar-grouped .yui-toolbar-group span.yui-toolbar-separator{height:18px;display:block;}.yui-toolbar-container ul li{margin:0;padding:0;list-style-type:none;}.yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-toolbar-container .yui-push-button,.yui-toolbar-container .yui-color-button,.yui-toolbar-container .yui-menu-button{position:relative;cursor:pointer;}.yui-toolbar-container .yui-button .first-child,.yui-toolbar-container .yui-button .first-child a{height:100%;width:100%;overflow:hidden;font-size:0;}.yui-toolbar-container .yui-button-disabled{cursor:default;}.yui-toolbar-container .yui-button-disabled .yui-toolbar-icon{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button-disabled .up,.yui-toolbar-container .yui-button-disabled .down{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button a{overflow:hidden;}.yui-toolbar-container .yui-toolbar-select .first-child a{cursor:pointer;}.yui-toolbar-fontname-arial{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-arial-black{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-comic-sans-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-courier-new{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-times-new-roman{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-verdana{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-impact{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-lucida-console{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-tahoma{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-trebuchet-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-container .yui-toolbar-spinbutton{position:relative;}.yui-toolbar-container .yui-toolbar-spinbutton .first-child a{z-index:0;opacity:1;}.yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-toolbar-container .yui-toolbar-spinbutton a.down{position:absolute;display:block right:0;cursor:pointer;z-index:1;padding:0;margin:0;}.yui-toolbar-container .yui-overlay{position:absolute;}.yui-toolbar-container .yui-overlay ul li{margin:0;list-style-type:none;}.yui-toolbar-container{z-index:1;}.yui-editor-container .yui-editor-editable-container{position:relative;z-index:0;width:100%;}.yui-editor-container .yui-editor-masked{background-color:#CCC;height:100%;width:100%;position:absolute;top:0;left:0;opacity:.5;filter:alpha(opacity=50);}.yui-editor-container iframe{border:0;padding:0;margin:0;zoom:1;display:block;}.yui-editor-container .yui-editor-editable{padding:0;margin:0;}.yui-editor-container .dompath{font-size:85%;}.yui-editor-panel .hd{text-align:left;position:relative;}.yui-editor-panel .hd h3{font-weight:bold;padding:.25em 0 .25em .25em;margin:0;}.yui-editor-panel .bd{width:100%;zoom:1;position:relative;}.yui-editor-panel .bd div.yui-editor-body-cont{padding:.25em .1em;zoom:1;}.yui-editor-panel .bd .gecko form{overflow:auto;}.yui-editor-panel .bd div.yui-editor-body-cont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-editor-panel .ft{text-align:right;width:99%;float:left;clear:both;}.yui-editor-panel .ft span.tip{display:block;position:relative;padding:.5em .5em .5em 23px;text-align:left;zoom:1;}.yui-editor-panel label{clear:both;float:left;padding:0;width:100%;text-align:left;zoom:1;}.yui-editor-panel .gecko label{overflow:auto;}.yui-editor-panel label strong{float:left;width:6em;}.yui-editor-panel .removeLink{width:80%;text-align:right;}.yui-editor-panel label input{margin-left:.25em;float:left;}.yui-editor-panel .yui-toolbar-group{margin-bottom:.75em;}.yui-editor-panel .height-width{float:left;}.yui-editor-panel .height-width span{font-style:italic;display:block;float:left;overflow:visible;}.yui-editor-panel .height-width span.info{font-size:70%;margin-top:3px;}.yui-editor-panel .yui-toolbar-bordersize,.yui-editor-panel .yui-toolbar-bordertype{font-size:75%;}.yui-editor-panel .yui-toolbar-container span.yui-toolbar-separator{border:none;}.yui-editor-panel .yui-toolbar-bordersize span a span,.yui-editor-panel .yui-toolbar-bordertype span a span{display:block;height:8px;left:4px;position:absolute;top:3px;_top:-5px;width:24px;text-indent:52px;font-size:0;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-solid{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dotted{border-bottom:1px dotted black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dashed{border-bottom:1px dashed black;}
-.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-0{*top:0;text-indent:0;font-size:75%;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-1{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-2{border-bottom:2px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-3{top:2px;*top:-5px;border-bottom:3px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-4{top:1px;*top:-5px;border-bottom:4px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-5{top:1px;*top:-5px;border-bottom:5px solid black;}.yui-toolbar-container .yui-toolbar-bordersize-menu,.yui-toolbar-container .yui-toolbar-bordertype-menu{width:95px!important;}.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel,.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel:hover{margin:0 3px 7px 17px;}.yui-toolbar-bordersize-menu .yuimenuitemlabel .checkedindicator,.yui-toolbar-bordertype-menu .yuimenuitemlabel .checkedindicator{position:absolute;left:-12px;*top:14px;*left:0;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-1 a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-2 a{border-bottom:2px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-3 a{border-bottom:3px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-4 a{border-bottom:4px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-5 a{border-bottom:5px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-solid a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dashed a{border-bottom:1px dashed black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dotted a{border-bottom:1px dotted black;height:14px;}h2.yui-editor-skipheader,h3.yui-editor-skipheader{height:0;margin:0;padding:0;border:none;width:0;overflow:hidden;position:absolute;}.yui-toolbar-colors{width:133px;zoom:1;display:none;z-index:100;overflow:hidden;}.yui-toolbar-colors:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors a{height:9px;width:9px;float:left;display:block;overflow:hidden;text-indent:999px;margin:0;cursor:pointer;border:1px solid #F6F7EE;}.yui-toolbar-colors a:hover{border:1px solid black;}.yui-color-button-menu{overflow:visible;background-color:transparent;}.yui-toolbar-colors span{position:relative;display:block;padding:3px;overflow:hidden;float:left;width:100%;zoom:1;}.yui-toolbar-colors span:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors span em{height:35px;width:30px;float:left;display:block;overflow:hidden;text-indent:999px;margin:.75px;border:1px solid black;}.yui-toolbar-colors span strong{font-weight:normal;padding-left:3px;display:block;font-size:85%;float:left;width:65%;}.yui-toolbar-group-undoredo h3,.yui-toolbar-group-insertitem h3,.yui-toolbar-group-indentlist h3{width:68px;}.yui-toolbar-group-indentlist2 h3{width:122px;}.yui-toolbar-group-alignment h3{width:130px;}.yui-skin-sam .yui-editor-container{border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container{zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar{background:url(sprite.png) repeat-x 0 -200px;position:relative;}.yui-skin-sam .yui-editor-container .draggable .yui-toolbar-titlebar{cursor:move;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar h2{color:#000;font-weight:bold;margin:0;padding:.3em 1em;font-size:100%;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-group h3{color:#808080;font-size:75%;margin:1em 0 0;padding-bottom:0;padding-left:.25em;text-align:left;}.yui-toolbar-container span.yui-toolbar-separator{border:none;text-indent:33px;overflow:hidden;margin:0 .25em;}.yui-skin-sam .yui-toolbar-container{background-color:#F2F2F2;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subcont{padding:0 1em .35em;border-bottom:1px solid #808080;}.yui-skin-sam .yui-toolbar-container-collapsed .yui-toolbar-titlebar{border-bottom:1px solid #808080;}.yui-skin-sam .yui-editor-container .visible .yui-menu-shadow,.yui-skin-sam .yui-editor-panel .visible .yui-menu-shadow{display:none;}.yui-skin-sam .yui-editor-container ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-container ul li{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-toolbar-group ul li.yui-toolbar-groupitem{float:left;}.yui-skin-sam .yui-editor-container .dompath{background-color:#F2F2F2;border-top:1px solid #808080;color:#999;text-align:left;padding:.25em;}.yui-skin-sam .yui-toolbar-container .collapse{background:url(sprite.png) no-repeat 0 -400px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar span.collapse{cursor:pointer;position:absolute;top:4px;right:2px;display:block;overflow:hidden;height:15px;width:15px;text-indent:9999px;}.yui-skin-sam .yui-toolbar-container .yui-push-button,.yui-skin-sam .yui-toolbar-container .yui-color-button,.yui-skin-sam .yui-toolbar-container .yui-menu-button{background:url(sprite.png) repeat-x 0 0;position:relative;display:block;height:22px;width:30px;_font-size:0;margin:0;border-color:#808080;color:#f2f2f2;border-style:solid;border-width:1px 0;zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-push-button a,.yui-skin-sam .yui-toolbar-container .yui-color-button a,.yui-skin-sam .yui-toolbar-container .yui-menu-button a{padding-left:35px;height:20px;text-decoration:none;font-size:0;line-height:2;display:block;color:#000;overflow:hidden;white-space:nowrap;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a,.yui-skin-sam .yui-toolbar-container .yui-toolbar-select a{font-size:12px;}
-.yui-skin-sam .yui-toolbar-container .yui-push-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button .first-child{border-color:#808080;border-style:solid;border-width:0 1px;margin:0 -1px;display:block;position:relative;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-button .first-child{*left:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-fontname{width:135px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-heading{width:92px;}.yui-skin-sam .yui-toolbar-container .yui-button-hover{background:url(sprite.png) repeat-x 0 -1300px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-button-selected{background:url(sprite.png) repeat-x 0 -1700px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels .yui-toolbar-group{margin-top:.75em;}.yui-skin-sam .yui-toolbar-container .yui-push-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-color-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-menu-button span.yui-toolbar-icon{display:block;position:absolute;top:2px;height:18px;width:18px;overflow:hidden;background:url(editor-sprite.gif) no-repeat 30px 30px;}.yui-skin-sam .yui-toolbar-container .yui-button-selected span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-button-hover span.yui-toolbar-icon{background-image:url(editor-sprite-active.gif);}.yui-skin-sam .yui-toolbar-container .visible .yuimenuitemlabel{cursor:pointer;color:#000;*position:relative;}.yui-skin-sam .yui-toolbar-container .yui-button-menu{background-color:#fff;}.yui-skin-sam .yui-toolbar-container .yui-button-menu .yui-menu-body-scrolled{position:relative;}.yui-skin-sam div.yuimenu li.selected{background-color:#B3D4FF;}.yui-skin-sam div.yuimenu li.selected a.selected{color:#000;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bold span.yui-toolbar-icon{background-position:0 0;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-strikethrough span.yui-toolbar-icon{background-position:0 -108px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-italic span.yui-toolbar-icon{background-position:0 -36px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-undo span.yui-toolbar-icon{background-position:0 -1326px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-redo span.yui-toolbar-icon{background-position:0 -1355px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-underline span.yui-toolbar-icon{background-position:0 -72px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subscript span.yui-toolbar-icon{background-position:0 -180px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-superscript span.yui-toolbar-icon{background-position:0 -144px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-forecolor span.yui-toolbar-icon{background-position:0 -216px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-backcolor span.yui-toolbar-icon{background-position:0 -288px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyleft span.yui-toolbar-icon{background-position:0 -324px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifycenter span.yui-toolbar-icon{background-position:0 -360px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyright span.yui-toolbar-icon{background-position:0 -396px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyfull span.yui-toolbar-icon{background-position:0 -432px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-indent span.yui-toolbar-icon{background-position:0 -720px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-outdent span.yui-toolbar-icon{background-position:0 -684px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-createlink span.yui-toolbar-icon{background-position:0 -792px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertimage span.yui-toolbar-icon{background-position:1px -756px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-left span.yui-toolbar-icon{background-position:0 -972px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-right span.yui-toolbar-icon{background-position:0 -936px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-inline span.yui-toolbar-icon{background-position:0 -900px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-block span.yui-toolbar-icon{background-position:0 -864px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bordercolor span.yui-toolbar-icon{background-position:0 -252px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-removeformat span.yui-toolbar-icon{background-position:0 -1080px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-hiddenelements span.yui-toolbar-icon{background-position:0 -1044px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertunorderedlist span.yui-toolbar-icon{background-position:0 -468px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertorderedlist span.yui-toolbar-icon{background-position:0 -504px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child{width:35px;}
-.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child a{padding-left:2px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton span.yui-toolbar-icon{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{right:2px;background:url(editor-sprite.gif) no-repeat 0 -1222px;overflow:hidden;height:6px;width:7px;min-height:0;padding:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up{top:2px;background-position:0 -1222px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{bottom:2px;background-position:0 -1187px;}.yui-skin-sam .yui-toolbar-container select{height:22px;border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select .first-child a{padding-left:5px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select span.yui-toolbar-icon{background:url(editor-sprite.gif) no-repeat 0 -1144px;overflow:hidden;right:-2px;top:0;height:20px;}.yui-skin-sam .yui-editor-panel .yui-color-button-menu .bd{background-color:transparent;border:none;width:135px;}.yui-skin-sam .yui-color-button-menu .yui-toolbar-colors{border:1px solid #808080;}.yui-skin-sam .yui-editor-panel{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;position:absolute;}.yui-skin-sam .yui-editor-panel .hd{margin:10px 0 0;padding:0;border:none;}.yui-skin-sam .yui-editor-panel .hd h3{color:#000;border:1px solid #808080;background:url(sprite.png) repeat-x 0 -200px;width:99%;position:relative;margin:0;padding:3px 0 0 0;font-size:93%;text-indent:5px;height:20px;}.yui-skin-sam .yui-editor-panel .bd{background-color:#F2F2F2;border-left:1px solid #808080;border-right:1px solid #808080;width:99%;margin:0;padding:0;overflow:visible;}.yui-skin-sam .yui-editor-panel ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-panel ul li{margin:0;padding:0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .yui-toolbar-subcont{padding:0;border:none;margin-top:.35em;}.yui-skin-sam .yui-editor-panel .yui-toolbar-bordersize,.yui-skin-sam .yui-editor-panel .yui-toolbar-bordertype{width:50px;}.yui-skin-sam .yui-editor-panel label{display:block;float:none;padding:4px 0;margin-bottom:7px;}.yui-skin-sam .yui-editor-panel label strong{font-weight:normal;font-size:93%;text-align:right;padding-top:2px;}.yui-skin-sam .yui-editor-panel label input{width:75%;}.yui-skin-sam .yui-editor-panel .createlink_target,.yui-skin-sam .yui-editor-panel .insertimage_target{width:auto;margin-right:5px;}.yui-skin-sam .yui-editor-panel .removeLink{width:98%;}.yui-skin-sam .yui-editor-panel label input.warning{background-color:#FFEE69;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group h3{color:#000;float:left;font-weight:normal;font-size:93%;margin:5px 0 0 0;padding:0 3px 0 0;text-align:right;}.yui-skin-sam .yui-editor-panel .height-width h3{margin:3px 0 0 10px;}.yui-skin-sam .yui-editor-panel .height-width{margin:3px 0 0 35px;*margin-left:14px;width:42%;*width:44%;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-border{width:190px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-border{width:210px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding{width:203px;_width:198px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-padding{width:172px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding h3{margin-left:25px;*margin-left:12px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-textflow{width:182px;}.yui-skin-sam .yui-editor-panel .hd{background:none;}.yui-skin-sam .yui-editor-panel .ft{background-color:#F2F2F2;border:1px solid #808080;border-top:none;padding:0;margin:0 0 2px 0;}.yui-skin-sam .yui-editor-panel .hd span.close{background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;display:block;height:16px;overflow:hidden;position:absolute;right:5px;text-indent:500px;top:2px;width:26px;}.yui-skin-sam .yui-editor-panel .ft span.tip{background-color:#EDF5FF;border-top:1px solid #808080;font-size:85%;}.yui-skin-sam .yui-editor-panel .ft span.tip strong{display:block;float:left;margin:0 2px 8px 0;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon{background:url(editor-sprite.gif) no-repeat 0 -1260px;display:block;height:20px;left:2px;position:absolute;top:8px;width:20px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-info{background-position:2px -1260px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-warn{background-position:2px -1296px;}.yui-skin-sam .yui-editor-panel .hd span.knob{position:absolute;height:10px;width:28px;top:-10px;left:25px;text-indent:9999px;overflow:hidden;background:url(editor-knob.gif) no-repeat 0 0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container{float:left;width:100%;background-image:none;border:none;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .bd{background-color:#fff;}.yui-editor-blankimage{background-image:url(blankimage.png);}.yui-skin-sam .yui-editor-container .yui-resize-handle-br{height:11px;width:11px;background-position:-20px -60px;background-color:transparent;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/header_background.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/header_background.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/header_background.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/hue_bg.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/hue_bg.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/hue_bg.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/imagecropper.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/imagecropper.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/imagecropper.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-crop{position:relative;}.yui-crop .yui-crop-mask{position:absolute;top:0;left:0;height:100%;width:100%;}.yui-crop .yui-resize{position:absolute;top:10px;left:10px;border:0;}.yui-crop .yui-crop-resize-mask{position:absolute;top:0;left:0;height:100%;width:100%;background-position:-10px -10px;overflow:hidden;}.yui-skin-sam .yui-crop .yui-crop-mask{background-color:#000;opacity:.5;filter:alpha(opacity=50);}.yui-skin-sam .yui-crop .yui-resize{border:1px dashed #fff;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-layout-loading{visibility:hidden;}body.yui-layout{overflow:hidden;position:relative;padding:0;margin:0;}.yui-layout-doc{position:relative;overflow:hidden;padding:0;margin:0;}.yui-layout-unit{height:50px;width:50px;padding:0;margin:0;float:none;z-index:0;}.yui-layout-unit-top{position:absolute;top:0;left:0;width:100%;}.yui-layout-unit-left{position:absolute;top:0;left:0;}.yui-layout-unit-right{position:absolute;top:0;right:0;}.yui-layout-unit-bottom{position:absolute;bottom:0;left:0;width:100%;}.yui-layout-unit-center{position:absolute;top:0;left:0;width:100%;}.yui-layout div.yui-layout-hd{position:absolute;top:0;left:0;zoom:1;width:100%;}.yui-layout div.yui-layout-bd{position:absolute;top:0;left:0;zoom:1;width:100%;}.yui-layout .yui-layout-noscroll div.yui-layout-bd{overflow:hidden;}.yui-layout .yui-layout-scroll div.yui-layout-bd{overflow:auto;}.yui-layout div.yui-layout-ft{position:absolute;bottom:0;left:0;width:100%;zoom:1;}.yui-layout .yui-layout-unit div.yui-layout-hd h2{text-align:left;}.yui-layout .yui-layout-unit div.yui-layout-hd .collapse{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0;}.yui-layout .yui-layout-unit div.yui-layout-hd .close{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0;}.yui-layout .yui-layout-unit div.yui-layout-hd .collapse-close{right:25px;}.yui-layout .yui-layout-clip{position:absolute;height:20px;background-color:#c0c0c0;display:none;}.yui-layout .yui-layout-clip .collapse{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0px;}.yui-layout .yui-layout-wrap{height:100%;width:100%;position:absolute;left:0;}.yui-skin-sam .yui-layout .yui-resize-proxy{border:none;font-size:0;margin:0;padding:0;}.yui-skin-sam .yui-layout .yui-resize-resizing .yui-resize-handle{visibility:hidden;}.yui-skin-sam .yui-layout .yui-resize-proxy div{position:absolute;border:1px solid #808080;background-color:#EDF5FF;}.yui-skin-sam .yui-layout .yui-resize .yui-resize-handle-active{}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-l{width:5px;height:100%;top:0;left:0;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-r{width:5px;top:0;right:0;height:100%;position:absolute;zoom:1;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-b{width:100%;bottom:0;left:0;height:5px;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-t{width:100%;top:0;left:0;height:5px;}.yui-skin-sam .yui-layout .yui-layout-unit-left div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -160px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-left .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -140px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-right div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -200px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-right .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -120px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-top div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -220px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-top .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -240px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-bottom div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -260px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-bottom .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -180px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-hd .close{background:transparent url(layout_sprite.png) no-repeat -20px -100px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-hd{background:url(sprite.png) repeat-x 0 -1400px;border:1px solid #808080;}.yui-skin-sam .yui-layout{background-color:#EDF5FF;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-hd h2{font-weight:bold;color:#fff;padding:3px;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd{border:1px solid #808080;border-bottom:none;border-top:none;*border-bottom-width:0;*border-top-width:0;background-color:#f2f2f2;text-align:left;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-noft{border-bottom:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd{border-top:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip{position:absolute;height:20px;background-color:#EDF5FF;display:none;border:1px solid #808080;}.yui-skin-sam .yui-layout div.yui-layout-ft{border:1px solid #808080;border-top:none;*border-top-width:0;background-color:#f2f2f2;}.yui-skin-sam .yui-layout-unit .yui-resize-handle{background-color:transparent;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-r{right:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-l{left:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-b{right:0;bottom:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-t{right:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-r .yui-layout-resize-knob,.yui-skin-sam .yui-layout-unit .yui-resize-handle-l .yui-layout-resize-knob{position:absolute;height:16px;width:6px;top:45%;left:0px;background:transparent url(layout_sprite.png) no-repeat 0 -5px;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-t .yui-layout-resize-knob,.yui-skin-sam .yui-layout-unit .yui-resize-handle-b .yui-layout-resize-knob{position:absolute;height:6px;width:16px;left:45%;background:transparent url(layout_sprite.png) no-repeat -20px 0;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout_sprite.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout_sprite.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/layout_sprite.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/loading.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/loading.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/loading.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/logger.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/logger.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/logger.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-log{padding:1em;width:31em;background-color:#AAA;color:#000;border:1px solid black;font-family:monospace;font-size:77%;text-align:left;z-index:9000;}.yui-skin-sam .yui-log-container{position:absolute;top:1em;right:1em;}.yui-skin-sam .yui-log input{margin:0;padding:0;font-family:bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:100%;font-weight:normal;}.yui-skin-sam .yui-log .yui-log-btns{position:relative;float:right;bottom:.25em;}.yui-skin-sam .yui-log .yui-log-hd{margin-top:1em;padding:.5em;background-color:#575757;}.yui-skin-sam .yui-log .yui-log-hd h4{margin:0;padding:0;font-size:108%;font-weight:bold;color:#FFF;}.yui-skin-sam .yui-log .yui-log-bd{width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}.yui-skin-sam .yui-log p{margin:1px;padding:.1em;}.yui-skin-sam .yui-log pre{margin:0;padding:0;}.yui-skin-sam .yui-log pre.yui-log-verbose{white-space:pre-wrap;white-space:-moz-pre-wrap !important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}.yui-skin-sam .yui-log .yui-log-ft{margin-top:.5em;}.yui-skin-sam .yui-log .yui-log-ft .yui-log-categoryfilters{}.yui-skin-sam .yui-log .yui-log-ft .yui-log-sourcefilters{width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}.yui-skin-sam .yui-log .yui-log-filtergrp{margin-right:.5em;}.yui-skin-sam .yui-log .info{background-color:#A7CC25;}.yui-skin-sam .yui-log .warn{background-color:#F58516;}.yui-skin-sam .yui-log .error{background-color:#E32F0B;}.yui-skin-sam .yui-log .time{background-color:#A6C9D7;}.yui-skin-sam .yui-log .window{background-color:#F2E886;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow-disabled.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow-disabled.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow-disabled.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu-button-arrow.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menu.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yuimenu{top:-999em;left:-999em;}.yuimenubar{position:static;}.yuimenu .yuimenu,.yuimenubar .yuimenu{position:absolute;}.yuimenubar li,.yuimenu li{list-style-type:none;}.yuimenubar ul,.yuimenu ul,.yuimenubar li,.yuimenu li,.yuimenu h6,.yuimenubar h6{margin:0;padding:0;}.yuimenuitemlabel,.yuimenubaritemlabel{text-align:left;white-space:nowrap;}.yuimenubar ul{*zoom:1;}.yuimenubar .yuimenu ul{*zoom:normal;}.yuimenubar>.bd>ul:after{content:".";display:block;clear:both;visibility:hidden;height:0;line-height:0;}.yuimenubaritem{float:left;}.yuimenubaritemlabel,.yuimenuitemlabel{display:block;}.yuimenuitemlabel .helptext{font-style:normal;display:block;margin:-1em 0 0 10em;}.yui-menu-shadow{position:absolute;visibility:hidden;z-index:-1;}.yui-menu-shadow-visible{top:2px;right:-3px;left:-3px;bottom:-3px;visibility:visible;}.hide-scrollbars *{overflow:hidden;}.hide-scrollbars select{display:none;}.yuimenu.show-scrollbars,.yuimenubar.show-scrollbars{overflow:visible;}.yuimenu.hide-scrollbars .yui-menu-shadow,.yuimenubar.hide-scrollbars .yui-menu-shadow{overflow:hidden;}.yuimenu.show-scrollbars .yui-menu-shadow,.yuimenubar.show-scrollbars .yui-menu-shadow{overflow:auto;}.yui-overlay.yui-force-redraw{margin-bottom:1px;}.yui-skin-sam .yuimenubar{font-size:93%;line-height:2;*line-height:1.9;border:solid 1px #808080;background:url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yuimenubarnav .yuimenubaritem{border-right:solid 1px #ccc;}.yui-skin-sam .yuimenubaritemlabel{padding:0 10px;color:#000;text-decoration:none;cursor:default;border-style:solid;border-color:#808080;border-width:1px 0;*position:relative;margin:-1px 0;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel{padding-right:20px;*display:inline-block;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-hassubmenu{background:url(menubaritem_submenuindicator.png) right center no-repeat;}.yui-skin-sam .yuimenubaritem-selected{background:url(sprite.png) repeat-x 0 -1700px;}.yui-skin-sam .yuimenubaritemlabel-selected{border-color:#7D98B8;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-selected{border-left-width:1px;margin-left:-1px;*left:-1px;}.yui-skin-sam .yuimenubaritemlabel-disabled{cursor:default;color:#A6A6A6;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-hassubmenu-disabled{background-image:url(menubaritem_submenuindicator_disabled.png);}.yui-skin-sam .yuimenu{font-size:93%;line-height:1.5;*line-height:1.45;}.yui-skin-sam .yuimenubar .yuimenu,.yui-skin-sam .yuimenu .yuimenu{font-size:100%;}.yui-skin-sam .yuimenu .bd{*zoom:1;_zoom:normal;border:solid 1px #808080;background-color:#fff;}.yui-skin-sam .yuimenu .yuimenu .bd{*zoom:normal;}.yui-skin-sam .yuimenu ul{padding:3px 0;border-width:1px 0 0 0;border-color:#ccc;border-style:solid;}.yui-skin-sam .yuimenu ul.first-of-type{border-width:0;}.yui-skin-sam .yuimenu h6{font-weight:bold;border-style:solid;border-color:#ccc;border-width:1px 0 0 0;color:#a4a4a4;padding:3px 10px 0 10px;}.yui-skin-sam .yuimenu ul.hastitle,.yui-skin-sam .yuimenu h6.first-of-type{border-width:0;}.yui-skin-sam .yuimenu .yui-menu-body-scrolled{border-color:#ccc #808080;overflow:hidden;}.yui-skin-sam .yuimenu .topscrollbar,.yui-skin-sam .yuimenu .bottomscrollbar{height:16px;border:solid 1px #808080;background:#fff url(sprite.png) no-repeat 0 0;}.yui-skin-sam .yuimenu .topscrollbar{border-bottom-width:0;background-position:center -950px;}.yui-skin-sam .yuimenu .topscrollbar_disabled{background-position:center -975px;}.yui-skin-sam .yuimenu .bottomscrollbar{border-top-width:0;background-position:center -850px;}.yui-skin-sam .yuimenu .bottomscrollbar_disabled{background-position:center -875px;}.yui-skin-sam .yuimenuitem{_border-bottom:solid 1px #fff;}.yui-skin-sam .yuimenuitemlabel{padding:0 20px;color:#000;text-decoration:none;cursor:default;}.yui-skin-sam .yuimenuitemlabel .helptext{margin-top:-1.5em;*margin-top:-1.45em;}.yui-skin-sam .yuimenuitem-hassubmenu{background-image:url(menuitem_submenuindicator.png);background-position:right center;background-repeat:no-repeat;}.yui-skin-sam .yuimenuitem-checked{background-image:url(menuitem_checkbox.png);background-position:left center;background-repeat:no-repeat;}.yui-skin-sam .yui-menu-shadow-visible{background-color:#000;opacity:.12;filter:alpha(opacity=12);}.yui-skin-sam .yuimenuitem-selected{background-color:#B3D4FF;}.yui-skin-sam .yuimenuitemlabel-disabled{cursor:default;color:#A6A6A6;}.yui-skin-sam .yuimenuitem-hassubmenu-disabled{background-image:url(menuitem_submenuindicator_disabled.png);}.yui-skin-sam .yuimenuitem-checked-disabled{background-image:url(menuitem_checkbox_disabled.png);}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator_disabled.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator_disabled.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menubaritem_submenuindicator_disabled.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox_disabled.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox_disabled.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_checkbox_disabled.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator_disabled.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator_disabled.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/menuitem_submenuindicator_disabled.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/paginator.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/paginator.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/paginator.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-pg-container{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-pg-first,.yui-skin-sam .yui-pg-previous,.yui-skin-sam .yui-pg-next,.yui-skin-sam .yui-pg-last,.yui-skin-sam .yui-pg-current,.yui-skin-sam .yui-pg-pages,.yui-skin-sam .yui-pg-page{display:inline-block;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;padding:3px 6px;zoom:1;}.yui-skin-sam .yui-pg-pages{padding:0;}.yui-skin-sam .yui-pg-current{padding:3px 0;}.yui-skin-sam a.yui-pg-first:link,.yui-skin-sam a.yui-pg-first:visited,.yui-skin-sam a.yui-pg-first:active,.yui-skin-sam a.yui-pg-first:hover,.yui-skin-sam a.yui-pg-previous:link,.yui-skin-sam a.yui-pg-previous:visited,.yui-skin-sam a.yui-pg-previous:active,.yui-skin-sam a.yui-pg-previous:hover,.yui-skin-sam a.yui-pg-next:link,.yui-skin-sam a.yui-pg-next:visited,.yui-skin-sam a.yui-pg-next:active,.yui-skin-sam a.yui-pg-next:hover,.yui-skin-sam a.yui-pg-last:link,.yui-skin-sam a.yui-pg-last:visited,.yui-skin-sam a.yui-pg-last:active,.yui-skin-sam a.yui-pg-last:hover,.yui-skin-sam a.yui-pg-page:link,.yui-skin-sam a.yui-pg-page:visited,.yui-skin-sam a.yui-pg-page:active,.yui-skin-sam a.yui-pg-page:hover{color:#06c;text-decoration:underline;outline:0;}.yui-skin-sam span.yui-pg-first,.yui-skin-sam span.yui-pg-previous,.yui-skin-sam span.yui-pg-next,.yui-skin-sam span.yui-pg-last{color:#a6a6a6;}.yui-skin-sam .yui-pg-page{background-color:#fff;border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;}.yui-skin-sam .yui-pg-current-page{background-color:transparent;border:none;font-weight:bold;padding:3px 6px;}.yui-skin-sam .yui-pg-page{margin-left:1px;margin-right:1px;}.yui-skin-sam .yui-pg-first,.yui-skin-sam .yui-pg-previous{padding-left:0;}.yui-skin-sam .yui-pg-next,.yui-skin-sam .yui-pg-last{padding-right:0;}.yui-skin-sam .yui-pg-current,.yui-skin-sam .yui-pg-rpp-options{margin-left:1em;margin-right:1em;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/picker_mask.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/picker_mask.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/picker_mask.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/profilerviewer.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/profilerviewer.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/profilerviewer.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-pv{background-color:#4a4a4a;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;position:relative;width:99%;z-index:1000;margin-bottom:1em;overflow:hidden;}.yui-skin-sam .yui-pv .hd{background:url(header_background.png) repeat-x;min-height:30px;overflow:hidden;zoom:1;padding:2px 0;}.yui-skin-sam .yui-pv .hd h4{padding:8px 10px;margin:0;font:bold 14px bitstream vera sans, dejavu sans, verdana, sans-serif;color:#fff;}.yui-skin-sam .yui-pv .hd a{background:#3f6bc3;font:bold 11px bitstream vera sans, dejavu sans, verdana, sans-serif;color:#fff;padding:4px;margin:3px 10px 0 0;border:1px solid #3f567d;cursor:pointer;display:block;float:right;}.yui-skin-sam .yui-pv .hd span{display:none;}.yui-skin-sam .yui-pv .hd span.yui-pv-busy{height:18px;width:18px;background:url(wait.gif) no-repeat;overflow:hidden;display:block;float:right;margin:4px 10px 0 0;}.yui-skin-sam .yui-pv .hd:after,.yui-pv .bd:after,.yui-skin-sam .yui-pv-chartlegend dl:after{content:'.';visibility:hidden;clear:left;height:0;display:block;}.yui-skin-sam .yui-pv .bd{position:relative;zoom:1;overflow-x:auto;overflow-y:hidden;}.yui-skin-sam .yui-pv .yui-pv-table{padding:0 10px;margin:5px 0 10px 0;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-bd td{color:#eeee5c;font:12px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd{background:#929292;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even{background:#58637a;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-desc{background:#384970;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-desc{background:#6F6E6E;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th{background-image:none;background:#2E2D2D;}.yui-skin-sam .yui-pv th.yui-dt-asc .yui-dt-liner{background:transparent url(asc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv th.yui-dt-desc .yui-dt-liner{background:transparent url(desc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th a{color:#fff;font:bold 12px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-desc{background:#333;}.yui-skin-sam .yui-pv-chartcontainer{padding:0 10px;}.yui-skin-sam .yui-pv-chart{height:250px;clear:right;margin:5px 0 0 0;color:#fff;}.yui-skin-sam .yui-pv-chartlegend div{float:right;margin:0 0 0 10px;_width:250px;}.yui-skin-sam .yui-pv-chartlegend dl{border:1px solid #999;padding:.2em 0 .2em .5em;zoom:1;margin:5px 0;}.yui-skin-sam .yui-pv-chartlegend dt{float:left;display:block;height:.7em;width:.7em;padding:0;}.yui-skin-sam .yui-pv-chartlegend dd{float:left;display:block;color:#fff;margin:0 1em 0 .5em;padding:0;font:11px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv-minimized{height:35px;}.yui-skin-sam .yui-pv-minimized .bd{top:-3000px;}.yui-skin-sam .yui-pv-minimized .hd a.yui-pv-refresh{display:none;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/resize.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/resize.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/resize.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-resize{position:relative;zoom:1;z-index:0;}.yui-resize-wrap{zoom:1;}.yui-draggable{cursor:move;}.yui-resize .yui-resize-handle{position:absolute;z-index:1;font-size:0;margin:0;padding:0;zoom:1;height:1px;width:1px;}.yui-resize .yui-resize-handle-br{height:5px;width:5px;bottom:0;right:0;cursor:se-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-bl{height:5px;width:5px;bottom:0;left:0;cursor:sw-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-tl{height:5px;width:5px;top:0;left:0;cursor:nw-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-tr{height:5px;width:5px;top:0;right:0;cursor:ne-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-r{width:5px;height:100%;top:0;right:0;cursor:e-resize;zoom:1;}.yui-resize .yui-resize-handle-l{height:100%;width:5px;top:0;left:0;cursor:w-resize;zoom:1;}.yui-resize .yui-resize-handle-b{width:100%;height:5px;bottom:0;right:0;cursor:s-resize;zoom:1;}.yui-resize .yui-resize-handle-t{width:100%;height:5px;top:0;right:0;cursor:n-resize;zoom:1;}.yui-resize-proxy{position:absolute;border:1px dashed #000;visibility:hidden;z-index:1000;}.yui-resize-hover .yui-resize-handle,.yui-resize-hidden .yui-resize-handle{opacity:0;filter:alpha(opacity=0);}.yui-resize-ghost{opacity:.5;filter:alpha(opacity=50);}.yui-resize-knob .yui-resize-handle{height:6px;width:6px;}.yui-resize-knob .yui-resize-handle-tr{right:-3px;top:-3px;}.yui-resize-knob .yui-resize-handle-tl{left:-3px;top:-3px;}.yui-resize-knob .yui-resize-handle-bl{left:-3px;bottom:-3px;}.yui-resize-knob .yui-resize-handle-br{right:-3px;bottom:-3px;}.yui-resize-knob .yui-resize-handle-t{left:45%;top:-3px;}.yui-resize-knob .yui-resize-handle-r{right:-3px;top:45%;}.yui-resize-knob .yui-resize-handle-l{left:-3px;top:45%;}.yui-resize-knob .yui-resize-handle-b{left:45%;bottom:-3px;}.yui-resize-status{position:absolute;top:-999px;left:-999px;padding:2px;font-size:80%;display:none;zoom:1;z-index:9999;}.yui-resize-status strong,.yui-resize-status em{font-weight:normal;font-style:normal;padding:1px;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle{background-color:#F2F2F2;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle-active{background-color:#7D98B8;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle-l,.yui-skin-sam .yui-resize .yui-resize-handle-r,.yui-skin-sam .yui-resize .yui-resize-handle-l-active,.yui-skin-sam .yui-resize .yui-resize-handle-r-active{height:100%;zoom:1;}.yui-skin-sam .yui-resize-knob .yui-resize-handle{border:1px solid #808080;}.yui-skin-sam .yui-resize-hover .yui-resize-handle-active{opacity:1;filter:alpha(opacity=100);}.yui-skin-sam .yui-resize-proxy{border:1px dashed #426FD9;}.yui-skin-sam .yui-resize-status{border:1px solid #A6982B;border-top:1px solid #D4C237;background-color:#FFEE69;color:#000;}.yui-skin-sam .yui-resize-status strong,.yui-skin-sam .yui-resize-status em{float:left;display:block;clear:both;padding:1px;text-align:center;}.yui-skin-sam .yui-resize .yui-resize-handle-inner-r,.yui-skin-sam .yui-resize .yui-resize-handle-inner-l{background:transparent url(layout_sprite.png) no-repeat 0 -5px;height:16px;width:5px;position:absolute;top:45%;}.yui-skin-sam .yui-resize .yui-resize-handle-inner-t,.yui-skin-sam .yui-resize .yui-resize-handle-inner-b{background:transparent url(layout_sprite.png) no-repeat -20px 0;height:5px;width:16px;position:absolute;left:50%;}.yui-skin-sam .yui-resize .yui-resize-handle-br{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -62px;}.yui-skin-sam .yui-resize .yui-resize-handle-tr{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -42px;}.yui-skin-sam .yui-resize .yui-resize-handle-tl{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -82px;}.yui-skin-sam .yui-resize .yui-resize-handle-bl{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -23px;}.yui-skin-sam .yui-resize-knob .yui-resize-handle-t,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-b,.yui-skin-sam .yui-resize-knob .yui-resize-handle-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-tl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-tr,.yui-skin-sam .yui-resize-knob .yui-resize-handle-bl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-br,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-t,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-b,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-tl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-tr,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-bl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-br{background-image:none;}.yui-skin-sam .yui-resize-knob .yui-resize-handle-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-l-active,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r-active{height:6px;width:6px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-r{right:-8px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-b{bottom:-8px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-br{right:-8px;bottom:-8px;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/simpleeditor.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/simpleeditor.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/simpleeditor.css 1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-busy{cursor:wait!important;}.yui-toolbar-container fieldset,.yui-editor-container fieldset{padding:0;margin:0;border:0;}.yui-toolbar-container legend{display:none;}.yui-toolbar-container .yui-toolbar-subcont{padding:.25em 0;zoom:1;}.yui-toolbar-container-collapsed .yui-toolbar-subcont{display:none;}.yui-toolbar-container .yui-toolbar-subcont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container span.yui-toolbar-draghandle{cursor:move;border-left:1px solid #999;border-right:1px solid #999;overflow:hidden;text-indent:77777px;width:2px;height:20px;display:block;clear:none;float:left;margin:0 0 0 .2em;}.yui-toolbar-container .yui-toolbar-titlebar.draggable{cursor:move;}.yui-toolbar-container .yui-toolbar-titlebar{position:relative;}.yui-toolbar-container .yui-toolbar-titlebar h2{font-weight:bold;letter-spacing:0;border:none;color:#000;margin:0;padding:.2em;}.yui-toolbar-container .yui-toolbar-titlebar h2 a{text-decoration:none;color:#000;cursor:default;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-draghandle{height:40px;}.yui-toolbar-container .yui-toolbar-group{float:left;margin-right:.5em;zoom:1;}.yui-toolbar-container .yui-toolbar-group:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container .yui-toolbar-group h3{font-size:75%;padding:0 0 0 .25em;margin:0;}.yui-toolbar-container span.yui-toolbar-separator{width:2px;padding:0;height:18px;margin:.2em 0 .2em .1em;display:none;float:left;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-separator{height:45px;*height:50px;}.yui-toolbar-container.yui-toolbar-grouped .yui-toolbar-group span.yui-toolbar-separator{height:18px;display:block;}.yui-toolbar-container ul li{margin:0;padding:0;list-style-type:none;}.yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-toolbar-container .yui-push-button,.yui-toolbar-container .yui-color-button,.yui-toolbar-container .yui-menu-button{position:relative;cursor:pointer;}.yui-toolbar-container .yui-button .first-child,.yui-toolbar-container .yui-button .first-child a{height:100%;width:100%;overflow:hidden;font-size:0;}.yui-toolbar-container .yui-button-disabled{cursor:default;}.yui-toolbar-container .yui-button-disabled .yui-toolbar-icon{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button-disabled .up,.yui-toolbar-container .yui-button-disabled .down{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button a{overflow:hidden;}.yui-toolbar-container .yui-toolbar-select .first-child a{cursor:pointer;}.yui-toolbar-fontname-arial{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-arial-black{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-comic-sans-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-courier-new{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-times-new-roman{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-verdana{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-impact{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-lucida-console{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-tahoma{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-trebuchet-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-container .yui-toolbar-spinbutton{position:relative;}.yui-toolbar-container .yui-toolbar-spinbutton .first-child a{z-index:0;opacity:1;}.yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-toolbar-container .yui-toolbar-spinbutton a.down{position:absolute;display:block right:0;cursor:pointer;z-index:1;padding:0;margin:0;}.yui-toolbar-container .yui-overlay{position:absolute;}.yui-toolbar-container .yui-overlay ul li{margin:0;list-style-type:none;}.yui-toolbar-container{z-index:1;}.yui-editor-container .yui-editor-editable-container{position:relative;z-index:0;width:100%;}.yui-editor-container .yui-editor-masked{background-color:#CCC;height:100%;width:100%;position:absolute;top:0;left:0;opacity:.5;filter:alpha(opacity=50);}.yui-editor-container iframe{border:0;padding:0;margin:0;zoom:1;display:block;}.yui-editor-container .yui-editor-editable{padding:0;margin:0;}.yui-editor-container .dompath{font-size:85%;}.yui-editor-panel .hd{text-align:left;position:relative;}.yui-editor-panel .hd h3{font-weight:bold;padding:.25em 0 .25em .25em;margin:0;}.yui-editor-panel .bd{width:100%;zoom:1;position:relative;}.yui-editor-panel .bd div.yui-editor-body-cont{padding:.25em .1em;zoom:1;}.yui-editor-panel .bd .gecko form{overflow:auto;}.yui-editor-panel .bd div.yui-editor-body-cont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-editor-panel .ft{text-align:right;width:99%;float:left;clear:both;}.yui-editor-panel .ft span.tip{display:block;position:relative;padding:.5em .5em .5em 23px;text-align:left;zoom:1;}.yui-editor-panel label{clear:both;float:left;padding:0;width:100%;text-align:left;zoom:1;}.yui-editor-panel .gecko label{overflow:auto;}.yui-editor-panel label strong{float:left;width:6em;}.yui-editor-panel .removeLink{width:80%;text-align:right;}.yui-editor-panel label input{margin-left:.25em;float:left;}.yui-editor-panel .yui-toolbar-group{margin-bottom:.75em;}.yui-editor-panel .height-width{float:left;}.yui-editor-panel .height-width span{font-style:italic;display:block;float:left;overflow:visible;}.yui-editor-panel .height-width span.info{font-size:70%;margin-top:3px;}.yui-editor-panel .yui-toolbar-bordersize,.yui-editor-panel .yui-toolbar-bordertype{font-size:75%;}.yui-editor-panel .yui-toolbar-container span.yui-toolbar-separator{border:none;}.yui-editor-panel .yui-toolbar-bordersize span a span,.yui-editor-panel .yui-toolbar-bordertype span a span{display:block;height:8px;left:4px;position:absolute;top:3px;_top:-5px;width:24px;text-indent:52px;font-size:0;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-solid{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dotted{border-bottom:1px dotted black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dashed{border-bottom:1px dashed black;}
-.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-0{*top:0;text-indent:0;font-size:75%;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-1{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-2{border-bottom:2px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-3{top:2px;*top:-5px;border-bottom:3px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-4{top:1px;*top:-5px;border-bottom:4px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-5{top:1px;*top:-5px;border-bottom:5px solid black;}.yui-toolbar-container .yui-toolbar-bordersize-menu,.yui-toolbar-container .yui-toolbar-bordertype-menu{width:95px!important;}.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel,.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel:hover{margin:0 3px 7px 17px;}.yui-toolbar-bordersize-menu .yuimenuitemlabel .checkedindicator,.yui-toolbar-bordertype-menu .yuimenuitemlabel .checkedindicator{position:absolute;left:-12px;*top:14px;*left:0;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-1 a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-2 a{border-bottom:2px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-3 a{border-bottom:3px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-4 a{border-bottom:4px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-5 a{border-bottom:5px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-solid a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dashed a{border-bottom:1px dashed black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dotted a{border-bottom:1px dotted black;height:14px;}h2.yui-editor-skipheader,h3.yui-editor-skipheader{height:0;margin:0;padding:0;border:none;width:0;overflow:hidden;position:absolute;}.yui-toolbar-colors{width:133px;zoom:1;display:none;z-index:100;overflow:hidden;}.yui-toolbar-colors:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors a{height:9px;width:9px;float:left;display:block;overflow:hidden;text-indent:999px;margin:0;cursor:pointer;border:1px solid #F6F7EE;}.yui-toolbar-colors a:hover{border:1px solid black;}.yui-color-button-menu{overflow:visible;background-color:transparent;}.yui-toolbar-colors span{position:relative;display:block;padding:3px;overflow:hidden;float:left;width:100%;zoom:1;}.yui-toolbar-colors span:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors span em{height:35px;width:30px;float:left;display:block;overflow:hidden;text-indent:999px;margin:.75px;border:1px solid black;}.yui-toolbar-colors span strong{font-weight:normal;padding-left:3px;display:block;font-size:85%;float:left;width:65%;}.yui-toolbar-group-undoredo h3,.yui-toolbar-group-insertitem h3,.yui-toolbar-group-indentlist h3{width:68px;}.yui-toolbar-group-indentlist2 h3{width:122px;}.yui-toolbar-group-alignment h3{width:130px;}.yui-skin-sam .yui-editor-container{border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container{zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar{background:url(sprite.png) repeat-x 0 -200px;position:relative;}.yui-skin-sam .yui-editor-container .draggable .yui-toolbar-titlebar{cursor:move;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar h2{color:#000;font-weight:bold;margin:0;padding:.3em 1em;font-size:100%;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-group h3{color:#808080;font-size:75%;margin:1em 0 0;padding-bottom:0;padding-left:.25em;text-align:left;}.yui-toolbar-container span.yui-toolbar-separator{border:none;text-indent:33px;overflow:hidden;margin:0 .25em;}.yui-skin-sam .yui-toolbar-container{background-color:#F2F2F2;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subcont{padding:0 1em .35em;border-bottom:1px solid #808080;}.yui-skin-sam .yui-toolbar-container-collapsed .yui-toolbar-titlebar{border-bottom:1px solid #808080;}.yui-skin-sam .yui-editor-container .visible .yui-menu-shadow,.yui-skin-sam .yui-editor-panel .visible .yui-menu-shadow{display:none;}.yui-skin-sam .yui-editor-container ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-container ul li{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-toolbar-group ul li.yui-toolbar-groupitem{float:left;}.yui-skin-sam .yui-editor-container .dompath{background-color:#F2F2F2;border-top:1px solid #808080;color:#999;text-align:left;padding:.25em;}.yui-skin-sam .yui-toolbar-container .collapse{background:url(sprite.png) no-repeat 0 -400px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar span.collapse{cursor:pointer;position:absolute;top:4px;right:2px;display:block;overflow:hidden;height:15px;width:15px;text-indent:9999px;}.yui-skin-sam .yui-toolbar-container .yui-push-button,.yui-skin-sam .yui-toolbar-container .yui-color-button,.yui-skin-sam .yui-toolbar-container .yui-menu-button{background:url(sprite.png) repeat-x 0 0;position:relative;display:block;height:22px;width:30px;_font-size:0;margin:0;border-color:#808080;color:#f2f2f2;border-style:solid;border-width:1px 0;zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-push-button a,.yui-skin-sam .yui-toolbar-container .yui-color-button a,.yui-skin-sam .yui-toolbar-container .yui-menu-button a{padding-left:35px;height:20px;text-decoration:none;font-size:0;line-height:2;display:block;color:#000;overflow:hidden;white-space:nowrap;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a,.yui-skin-sam .yui-toolbar-container .yui-toolbar-select a{font-size:12px;}
-.yui-skin-sam .yui-toolbar-container .yui-push-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button .first-child{border-color:#808080;border-style:solid;border-width:0 1px;margin:0 -1px;display:block;position:relative;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-button .first-child{*left:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-fontname{width:135px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-heading{width:92px;}.yui-skin-sam .yui-toolbar-container .yui-button-hover{background:url(sprite.png) repeat-x 0 -1300px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-button-selected{background:url(sprite.png) repeat-x 0 -1700px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels .yui-toolbar-group{margin-top:.75em;}.yui-skin-sam .yui-toolbar-container .yui-push-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-color-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-menu-button span.yui-toolbar-icon{display:block;position:absolute;top:2px;height:18px;width:18px;overflow:hidden;background:url(editor-sprite.gif) no-repeat 30px 30px;}.yui-skin-sam .yui-toolbar-container .yui-button-selected span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-button-hover span.yui-toolbar-icon{background-image:url(editor-sprite-active.gif);}.yui-skin-sam .yui-toolbar-container .visible .yuimenuitemlabel{cursor:pointer;color:#000;*position:relative;}.yui-skin-sam .yui-toolbar-container .yui-button-menu{background-color:#fff;}.yui-skin-sam .yui-toolbar-container .yui-button-menu .yui-menu-body-scrolled{position:relative;}.yui-skin-sam div.yuimenu li.selected{background-color:#B3D4FF;}.yui-skin-sam div.yuimenu li.selected a.selected{color:#000;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bold span.yui-toolbar-icon{background-position:0 0;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-strikethrough span.yui-toolbar-icon{background-position:0 -108px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-italic span.yui-toolbar-icon{background-position:0 -36px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-undo span.yui-toolbar-icon{background-position:0 -1326px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-redo span.yui-toolbar-icon{background-position:0 -1355px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-underline span.yui-toolbar-icon{background-position:0 -72px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subscript span.yui-toolbar-icon{background-position:0 -180px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-superscript span.yui-toolbar-icon{background-position:0 -144px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-forecolor span.yui-toolbar-icon{background-position:0 -216px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-backcolor span.yui-toolbar-icon{background-position:0 -288px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyleft span.yui-toolbar-icon{background-position:0 -324px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifycenter span.yui-toolbar-icon{background-position:0 -360px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyright span.yui-toolbar-icon{background-position:0 -396px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyfull span.yui-toolbar-icon{background-position:0 -432px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-indent span.yui-toolbar-icon{background-position:0 -720px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-outdent span.yui-toolbar-icon{background-position:0 -684px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-createlink span.yui-toolbar-icon{background-position:0 -792px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertimage span.yui-toolbar-icon{background-position:1px -756px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-left span.yui-toolbar-icon{background-position:0 -972px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-right span.yui-toolbar-icon{background-position:0 -936px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-inline span.yui-toolbar-icon{background-position:0 -900px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-block span.yui-toolbar-icon{background-position:0 -864px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bordercolor span.yui-toolbar-icon{background-position:0 -252px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-removeformat span.yui-toolbar-icon{background-position:0 -1080px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-hiddenelements span.yui-toolbar-icon{background-position:0 -1044px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertunorderedlist span.yui-toolbar-icon{background-position:0 -468px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertorderedlist span.yui-toolbar-icon{background-position:0 -504px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child{width:35px;}
-.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child a{padding-left:2px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton span.yui-toolbar-icon{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{right:2px;background:url(editor-sprite.gif) no-repeat 0 -1222px;overflow:hidden;height:6px;width:7px;min-height:0;padding:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up{top:2px;background-position:0 -1222px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{bottom:2px;background-position:0 -1187px;}.yui-skin-sam .yui-toolbar-container select{height:22px;border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select .first-child a{padding-left:5px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select span.yui-toolbar-icon{background:url(editor-sprite.gif) no-repeat 0 -1144px;overflow:hidden;right:-2px;top:0;height:20px;}.yui-skin-sam .yui-editor-panel .yui-color-button-menu .bd{background-color:transparent;border:none;width:135px;}.yui-skin-sam .yui-color-button-menu .yui-toolbar-colors{border:1px solid #808080;}.yui-skin-sam .yui-editor-panel{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;position:absolute;}.yui-skin-sam .yui-editor-panel .hd{margin:10px 0 0;padding:0;border:none;}.yui-skin-sam .yui-editor-panel .hd h3{color:#000;border:1px solid #808080;background:url(sprite.png) repeat-x 0 -200px;width:99%;position:relative;margin:0;padding:3px 0 0 0;font-size:93%;text-indent:5px;height:20px;}.yui-skin-sam .yui-editor-panel .bd{background-color:#F2F2F2;border-left:1px solid #808080;border-right:1px solid #808080;width:99%;margin:0;padding:0;overflow:visible;}.yui-skin-sam .yui-editor-panel ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-panel ul li{margin:0;padding:0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .yui-toolbar-subcont{padding:0;border:none;margin-top:.35em;}.yui-skin-sam .yui-editor-panel .yui-toolbar-bordersize,.yui-skin-sam .yui-editor-panel .yui-toolbar-bordertype{width:50px;}.yui-skin-sam .yui-editor-panel label{display:block;float:none;padding:4px 0;margin-bottom:7px;}.yui-skin-sam .yui-editor-panel label strong{font-weight:normal;font-size:93%;text-align:right;padding-top:2px;}.yui-skin-sam .yui-editor-panel label input{width:75%;}.yui-skin-sam .yui-editor-panel .createlink_target,.yui-skin-sam .yui-editor-panel .insertimage_target{width:auto;margin-right:5px;}.yui-skin-sam .yui-editor-panel .removeLink{width:98%;}.yui-skin-sam .yui-editor-panel label input.warning{background-color:#FFEE69;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group h3{color:#000;float:left;font-weight:normal;font-size:93%;margin:5px 0 0 0;padding:0 3px 0 0;text-align:right;}.yui-skin-sam .yui-editor-panel .height-width h3{margin:3px 0 0 10px;}.yui-skin-sam .yui-editor-panel .height-width{margin:3px 0 0 35px;*margin-left:14px;width:42%;*width:44%;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-border{width:190px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-border{width:210px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding{width:203px;_width:198px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-padding{width:172px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding h3{margin-left:25px;*margin-left:12px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-textflow{width:182px;}.yui-skin-sam .yui-editor-panel .hd{background:none;}.yui-skin-sam .yui-editor-panel .ft{background-color:#F2F2F2;border:1px solid #808080;border-top:none;padding:0;margin:0 0 2px 0;}.yui-skin-sam .yui-editor-panel .hd span.close{background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;display:block;height:16px;overflow:hidden;position:absolute;right:5px;text-indent:500px;top:2px;width:26px;}.yui-skin-sam .yui-editor-panel .ft span.tip{background-color:#EDF5FF;border-top:1px solid #808080;font-size:85%;}.yui-skin-sam .yui-editor-panel .ft span.tip strong{display:block;float:left;margin:0 2px 8px 0;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon{background:url(editor-sprite.gif) no-repeat 0 -1260px;display:block;height:20px;left:2px;position:absolute;top:8px;width:20px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-info{background-position:2px -1260px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-warn{background-position:2px -1296px;}.yui-skin-sam .yui-editor-panel .hd span.knob{position:absolute;height:10px;width:28px;top:-10px;left:25px;text-indent:9999px;overflow:hidden;background:url(editor-knob.gif) no-repeat 0 0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container{float:left;width:100%;background-image:none;border:none;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .bd{background-color:#fff;}.yui-editor-blankimage{background-image:url(blankimage.png);}.yui-skin-sam .yui-editor-container .yui-resize-handle-br{height:11px;width:11px;background-position:-20px -60px;background-color:transparent;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/skin.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/skin.css 2009-10-13 20:59:13 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/skin.css 1970-01-01 00:00:00 +0000
@@ -1,35 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-skin-sam .yui-ac{position:relative;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:100%;}.yui-skin-sam .yui-ac-input{position:absolute;width:100%;}.yui-skin-sam .yui-ac-container{position:absolute;top:1.6em;width:100%;}.yui-skin-sam .yui-ac-content{position:absolute;width:100%;border:1px solid #808080;background:#fff;overflow:hidden;z-index:9050;}.yui-skin-sam .yui-ac-shadow{position:absolute;margin:.3em;width:100%;background:#000;-moz-opacity:.10;opacity:.10;filter:alpha(opacity=10);z-index:9049;}.yui-skin-sam .yui-ac iframe{opacity:0;filter:alpha(opacity=0);padding-right:.3em;padding-bottom:.3em;}.yui-skin-sam .yui-ac-content ul{margin:0;padding:0;width:100%;}.yui-skin-sam .yui-ac-content li{margin:0;padding:2px 5px;cursor:default;white-space:nowrap;list-style:none;zoom:1;}.yui-skin-sam .yui-ac-content li.yui-ac-prehighlight{background:#B3D4FF;}.yui-skin-sam .yui-ac-content li.yui-ac-highlight{background:#426FD9;color:#FFF;}
-.yui-button{display:-moz-inline-box;display:inline-block;vertical-align:text-bottom;}.yui-button .first-child{display:block;*display:inline-block;}.yui-button button,.yui-button a{display:block;*display:inline-block;border:none;margin:0;}.yui-button button{background-color:transparent;*overflow:visible;cursor:pointer;}.yui-button a{text-decoration:none;}.yui-skin-sam .yui-button{border-width:1px 0;border-style:solid;border-color:#808080;background:url(sprite.png) repeat-x 0 0;margin:auto .25em;}.yui-skin-sam .yui-button .first-child{border-width:0 1px;border-style:solid;border-color:#808080;margin:0 -1px;_margin:0;}.yui-skin-sam .yui-button button,.yui-skin-sam .yui-button a{padding:0 10px;font-size:93%;line-height:2;*line-height:1.7;min-height:2em;*min-height:auto;color:#000;}.yui-skin-sam .yui-button a{*line-height:1.875;*padding-bottom:1px;}.yui-skin-sam .yui-split-button button,.yui-skin-sam .yui-menu-button button{padding-right:20px;background-position:right center;background-repeat:no-repeat;}.yui-skin-sam .yui-menu-button button{background-image:url(menu-button-arrow.png);}.yui-skin-sam .yui-split-button button{background-image:url(split-button-arrow.png);}.yui-skin-sam .yui-button-focus{border-color:#7D98B8;background-position:0 -1300px;}.yui-skin-sam .yui-button-focus .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-focus button,.yui-skin-sam .yui-button-focus a{color:#000;}.yui-skin-sam .yui-split-button-focus button{background-image:url(split-button-arrow-focus.png);}.yui-skin-sam .yui-button-hover{border-color:#7D98B8;background-position:0 -1300px;}.yui-skin-sam .yui-button-hover .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-hover button,.yui-skin-sam .yui-button-hover a{color:#000;}.yui-skin-sam .yui-split-button-hover button{background-image:url(split-button-arrow-hover.png);}.yui-skin-sam .yui-button-active{border-color:#7D98B8;background-position:0 -1700px;}.yui-skin-sam .yui-button-active .first-child{border-color:#7D98B8;}.yui-skin-sam .yui-button-active button,.yui-skin-sam .yui-button-active a{color:#000;}.yui-skin-sam .yui-split-button-activeoption{border-color:#808080;background-position:0 0;}.yui-skin-sam .yui-split-button-activeoption .first-child{border-color:#808080;}.yui-skin-sam .yui-split-button-activeoption button{background-image:url(split-button-arrow-active.png);}.yui-skin-sam .yui-radio-button-checked,.yui-skin-sam .yui-checkbox-button-checked{border-color:#304369;background-position:0 -1400px;}.yui-skin-sam .yui-radio-button-checked .first-child,.yui-skin-sam .yui-checkbox-button-checked .first-child{border-color:#304369;}.yui-skin-sam .yui-radio-button-checked button,.yui-skin-sam .yui-checkbox-button-checked button{color:#fff;}.yui-skin-sam .yui-button-disabled{border-color:#ccc;background-position:0 -1500px;}.yui-skin-sam .yui-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-button-disabled button,.yui-skin-sam .yui-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-menu-button-disabled button{background-image:url(menu-button-arrow-disabled.png);}.yui-skin-sam .yui-split-button-disabled button{background-image:url(split-button-arrow-disabled.png);}
-.yui-calcontainer{position:relative;float:left;_overflow:hidden;}.yui-calcontainer iframe{position:absolute;border:none;margin:0;padding:0;z-index:0;width:100%;height:100%;left:0;top:0;}.yui-calcontainer iframe.fixedsize{width:50em;height:50em;top:-1px;left:-1px;}.yui-calcontainer.multi .groupcal{z-index:1;float:left;position:relative;}.yui-calcontainer .title{position:relative;z-index:1;}.yui-calcontainer .close-icon{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar{position:relative;}.yui-calendar .calnavleft{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calnavright{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calheader{position:relative;width:100%;text-align:center;}.yui-calcontainer .yui-cal-nav-mask{position:absolute;z-index:2;margin:0;padding:0;width:100%;height:100%;_width:0;_height:0;left:0;top:0;display:none;}.yui-calcontainer .yui-cal-nav{position:absolute;z-index:3;top:0;display:none;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{display:-moz-inline-box;display:inline-block;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{display:block;*display:inline-block;*overflow:visible;border:none;background-color:transparent;cursor:pointer;}.yui-calendar .calbody a:hover{background:inherit;}p#clear{clear:left;padding-top:10px;}.yui-skin-sam .yui-calcontainer{background-color:#f2f2f2;border:1px solid #808080;padding:10px;}.yui-skin-sam .yui-calcontainer.multi{padding:0 5px 0 5px;}.yui-skin-sam .yui-calcontainer.multi .groupcal{background-color:transparent;border:none;padding:10px 5px 10px 5px;margin:0;}.yui-skin-sam .yui-calcontainer .title{background:url(sprite.png) repeat-x 0 0;border-bottom:1px solid #ccc;font:100% sans-serif;color:#000;font-weight:bold;height:auto;padding:.4em;margin:0 -10px 10px -10px;top:0;left:0;text-align:left;}.yui-skin-sam .yui-calcontainer.multi .title{margin:0 -5px 0 -5px;}.yui-skin-sam .yui-calcontainer.withtitle{padding-top:0;}.yui-skin-sam .yui-calcontainer .calclose{background:url(sprite.png) no-repeat 0 -300px;width:25px;height:15px;top:.4em;right:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar{border-spacing:0;border-collapse:collapse;font:100% sans-serif;text-align:center;margin:0;}.yui-skin-sam .yui-calendar .calhead{background:transparent;border:none;vertical-align:middle;padding:0;}.yui-skin-sam .yui-calendar .calheader{background:transparent;font-weight:bold;padding:0 0 .6em 0;text-align:center;}.yui-skin-sam .yui-calendar .calheader img{border:none;}.yui-skin-sam .yui-calendar .calnavleft{background:url(sprite.png) no-repeat 0 -450px;width:25px;height:15px;top:0;bottom:0;left:-10px;margin-left:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar .calnavright{background:url(sprite.png) no-repeat 0 -500px;width:25px;height:15px;top:0;bottom:0;right:-10px;margin-right:.4em;cursor:pointer;}.yui-skin-sam .yui-calendar .calweekdayrow{height:2em;}.yui-skin-sam .yui-calendar .calweekdayrow th{padding:0;border:none;}.yui-skin-sam .yui-calendar .calweekdaycell{color:#000;font-weight:bold;text-align:center;width:2em;}.yui-skin-sam .yui-calendar .calfoot{background-color:#f2f2f2;}.yui-skin-sam .yui-calendar .calrowhead,.yui-skin-sam .yui-calendar .calrowfoot{color:#a6a6a6;font-size:85%;font-style:normal;font-weight:normal;border:none;}.yui-skin-sam .yui-calendar .calrowhead{text-align:right;padding:0 2px 0 0;}.yui-skin-sam .yui-calendar .calrowfoot{text-align:left;padding:0 0 0 2px;}.yui-skin-sam .yui-calendar td.calcell{border:1px solid #ccc;background:#fff;padding:1px;height:1.6em;line-height:1.6em;text-align:center;white-space:nowrap;}.yui-skin-sam .yui-calendar td.calcell a{color:#06c;display:block;height:100%;text-decoration:none;}.yui-skin-sam .yui-calendar td.calcell.today{background-color:#000;}.yui-skin-sam .yui-calendar td.calcell.today a{background-color:#fff;}.yui-skin-sam .yui-calendar td.calcell.oom{background-color:#ccc;color:#a6a6a6;cursor:default;}.yui-skin-sam .yui-calendar td.calcell.selected{background-color:#fff;color:#000;}.yui-skin-sam .yui-calendar td.calcell.selected a{background-color:#b3d4ff;color:#000;}.yui-skin-sam .yui-calendar td.calcell.calcellhover{background-color:#426fd9;color:#fff;cursor:pointer;}.yui-skin-sam .yui-calendar td.calcell.calcellhover a{background-color:#426fd9;color:#fff;}.yui-skin-sam .yui-calendar td.calcell.previous{color:#e0e0e0;}.yui-skin-sam .yui-calendar td.calcell.restricted{text-decoration:line-through;}.yui-skin-sam .yui-calendar td.calcell.highlight1{background-color:#cf9;}.yui-skin-sam .yui-calendar td.calcell.highlight2{background-color:#9cf;}.yui-skin-sam .yui-calendar td.calcell.highlight3{background-color:#fcc;}.yui-skin-sam .yui-calendar td.calcell.highlight4{background-color:#cf9;}.yui-skin-sam .yui-calendar a.calnav{border:1px solid #f2f2f2;padding:0 4px;text-decoration:none;color:#000;zoom:1;}.yui-skin-sam .yui-calendar a.calnav:hover{background:url(sprite.png) repeat-x 0 0;border-color:#A0A0A0;cursor:pointer;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-calcontainer .yui-cal-nav{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:93%;border:1px solid #808080;left:50%;margin-left:-7em;width:14em;padding:0;top:2.5em;background-color:#f2f2f2;}.yui-skin-sam .yui-calcontainer.withtitle .yui-cal-nav{top:4.5em;}.yui-skin-sam .yui-calcontainer.multi .yui-cal-nav{width:16em;margin-left:-8em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-y,.yui-skin-sam .yui-calcontainer .yui-cal-nav-m,.yui-skin-sam .yui-calcontainer .yui-cal-nav-b{padding:5px 10px 5px 10px;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-b{text-align:center;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-e{margin-top:5px;padding:5px;background-color:#EDF5FF;border-top:1px solid black;display:none;}.yui-skin-sam .yui-calcontainer .yui-cal-nav label{display:block;font-weight:bold;}
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-mc{width:100%;_width:auto;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-y input.yui-invalid{background-color:#FFEE69;border:1px solid #000;}.yui-skin-sam .yui-calcontainer .yui-cal-nav-yc{width:4em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{border:1px solid #808080;background:url(sprite.png) repeat-x 0 0;background-color:#ccc;margin:auto .15em;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{padding:0 8px;font-size:93%;line-height:2;*line-height:1.7;min-height:2em;*min-height:auto;color:#000;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default{border:1px solid #304369;background-color:#426fd9;background:url(sprite.png) repeat-x 0 -1400px;}.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button{color:#fff;}
-.yui-carousel{visibility:hidden;overflow:hidden;position:relative;text-align:left;zoom:1;}.yui-carousel.yui-carousel-visible{visibility:visible;}.yui-carousel-content{overflow:hidden;position:relative;}.yui-carousel-element{margin:5px 0;overflow:hidden;padding:0;position:relative;width:32000px;z-index:1;}.yui-carousel-vertical .yui-carousel-element{margin:0 5px;}.yui-carousel-element li{border:1px solid #ccc;float:left;list-style:none;margin:1px;overflow:hidden;padding:0;text-align:center;*float:none;*display:inline-block;*zoom:1;*display:inline;}.yui-carousel .yui-carousel-item-selected{border:1px dashed #000;margin:1px;}.yui-carousel-vertical{height:32000px;margin:0 5px;width:auto;}.yui-carousel-vertical .yui-carousel-element li{display:block;float:none;}.yui-log .carousel{background:#f2e886;}.yui-carousel-nav{zoom:1;}.yui-carousel-nav:after{clear:both;content:"";display:block;}.yui-carousel-button-focus{outline:1px dotted #000;}.yui-carousel-min-width .yui-carousel-content{margin:0 auto;}.yui-skin-sam .yui-carousel,.yui-skin-sam .yui-carousel-vertical{border:1px solid #808080;}.yui-skin-sam .yui-carousel-nav{background:url(sprite.png) repeat-x 0 0;padding:3px;text-align:right;}.yui-skin-sam .yui-carousel-button{background:url(sprite.png) no-repeat 0 -600px;float:right;height:19px;margin:5px;overflow:hidden;width:40px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-button{background-position:0 -800px;}.yui-skin-sam .yui-carousel-button-disabled{background-position:0 -2000px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-button-disabled{background-position:0 -2100px;}.yui-skin-sam .yui-carousel-button input,.yui-skin-sam .yui-carousel-button button{background-color:transparent;border:0;cursor:pointer;display:block;height:44px;margin:-2px 0 0 -2px;padding:0 0 0 50px;}.yui-skin-sam span.yui-carousel-first-button{background-position:0 -550px;margin-left:-100px;margin-right:50px;*margin:5px 5px 5px -90px;}.yui-skin-sam .yui-carousel-vertical span.yui-carousel-first-button{background-position:0 -750px;}.yui-skin-sam span.yui-carousel-first-button-disabled{background-position:0 -1950px;}.yui-skin-sam .yui-carousel-vertical span.yui-carousel-first-button-disabled{background-position:0 -2050px;}.yui-skin-sam .yui-carousel-nav ul{float:right;height:19px;margin:0;margin-left:-220px;margin-right:100px;*margin-left:-160px;*margin-right:0;padding:0;}.yui-skin-sam .yui-carousel-min-width .yui-carousel-nav ul{*margin-left:-170px;}.yui-skin-sam .yui-carousel-nav select{position:relative;*right:50px;top:4px;}.yui-skin-sam .yui-carousel-vertical .yui-carousel-nav ul,.yui-skin-sam .yui-carousel-vertical .yui-carousel-nav select{float:none;margin:0;*zoom:1;}.yui-skin-sam .yui-carousel-nav ul li{background:url(sprite.png) no-repeat 0 -650px;cursor:pointer;float:left;height:9px;list-style:none;margin:10px 0 0 5px;overflow:hidden;padding:0;width:9px;}.yui-skin-sam .yui-carousel-nav ul:after{clear:both;content:"";display:block;}.yui-skin-sam .yui-carousel-nav ul li a{left:-10000px;position:absolute;}.yui-skin-sam .yui-carousel-nav ul li.yui-carousel-nav-page-focus{outline:1px dotted #000;}.yui-skin-sam .yui-carousel-nav ul li.yui-carousel-nav-page-selected{background-position:0 -700px;}.yui-skin-sam .yui-carousel-item-loading{background:url(ajax-loader.gif) no-repeat 50% 50%;position:relative;text-indent:-150px;}
-.yui-picker-panel{background:#e3e3e3;border-color:#888;}.yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.yui-picker{position:relative;}.yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../../build/colorpicker/assets/picker_mask.png',sizingMethod='scale');}.yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.yui-picker-controls .hd{background:transparent;border-width:0!important;}.yui-picker-controls .bd{height:100px;border-width:0!important;}.yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.yui-picker-controls li{padding:2px;list-style:none;margin:0;}.yui-picker-controls input{font-size:.85em;width:2.4em;}.yui-picker-hex-controls{clear:both;padding:2px;}.yui-picker-hex-controls input{width:4.6em;}.yui-picker-controls a{font:1em bitstream vera sans, dejavu sans, verdana, sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
-.yui-overlay,.yui-panel-container{visibility:hidden;position:absolute;z-index:2;}.yui-panel{position:relative;}.yui-panel-container form{margin:0;}.mask{z-index:1;display:none;position:absolute;top:0;left:0;right:0;bottom:0;}.mask.block-scrollbars{overflow:auto;}.masked select,.drag select,.hide-select select{_visibility:hidden;}.yui-panel-container select{_visibility:inherit;}.hide-scrollbars,.hide-scrollbars *{overflow:hidden;}.hide-scrollbars select{display:none;}.show-scrollbars{overflow:auto;}.yui-panel-container.show-scrollbars,.yui-tt.show-scrollbars{overflow:visible;}.yui-panel-container.show-scrollbars .underlay,.yui-tt.show-scrollbars .yui-tt-shadow{overflow:auto;}.yui-panel-container.shadow .underlay.yui-force-redraw{padding-bottom:1px;}.yui-effect-fade .underlay,.yui-effect-fade .yui-tt-shadow{display:none;}.yui-tt-shadow{position:absolute;}.yui-override-padding{padding:0!important;}.yui-panel-container .container-close{overflow:hidden;text-indent:-10000em;text-decoration:none;}.yui-overlay.yui-force-redraw,.yui-panel-container.yui-force-redraw{margin-bottom:1px;}.yui-skin-sam .mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-panel-container{padding:0 1px;*padding:2px;}.yui-skin-sam .yui-panel{position:relative;left:0;top:0;border-style:solid;border-width:1px 0;border-color:#808080;z-index:1;*border-width:1px;*zoom:1;_zoom:normal;}.yui-skin-sam .yui-panel .hd,.yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{border-style:solid;border-width:0 1px;border-color:#808080;margin:0 -1px;*margin:0;*border:0;}.yui-skin-sam .yui-panel .hd{border-bottom:solid 1px #ccc;}.yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{background-color:#F2F2F2;}.yui-skin-sam .yui-panel .hd{padding:0 10px;font-size:93%;line-height:2;*line-height:1.9;font-weight:bold;color:#000;background:url(sprite.png) repeat-x 0 -200px;}.yui-skin-sam .yui-panel .bd{padding:10px;}.yui-skin-sam .yui-panel .ft{border-top:solid 1px #808080;padding:5px 10px;font-size:77%;}.yui-skin-sam .container-close{position:absolute;top:5px;right:6px;width:25px;height:15px;background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;}.yui-skin-sam .yui-panel-container .underlay{right:-1px;left:-1px;}.yui-skin-sam .yui-panel-container.matte{padding:9px 10px;background-color:#fff;}.yui-skin-sam .yui-panel-container.shadow{_padding:2px 4px 0 2px;}.yui-skin-sam .yui-panel-container.shadow .underlay{position:absolute;top:2px;left:-3px;right:-3px;bottom:-3px;*top:4px;*left:-1px;*right:-1px;*bottom:-1px;_top:0;_left:0;_right:0;_bottom:0;_margin-top:3px;_margin-left:-1px;background-color:#000;opacity:.12;filter:alpha(opacity=12);}.yui-skin-sam .yui-dialog .ft{border-top:none;padding:0 10px 10px 10px;font-size:100%;}.yui-skin-sam .yui-dialog .ft .button-group{display:block;text-align:right;}.yui-skin-sam .yui-dialog .ft button.default{font-weight:bold;}.yui-skin-sam .yui-dialog .ft span.default{border-color:#304369;background-position:0 -1400px;}.yui-skin-sam .yui-dialog .ft span.default .first-child{border-color:#304369;}.yui-skin-sam .yui-dialog .ft span.default button{color:#fff;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled{background-position:0 -1500px;border-color:#ccc;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled button{color:#a6a6a6;}.yui-skin-sam .yui-simple-dialog .bd .yui-icon{background:url(sprite.png) no-repeat 0 0;width:16px;height:16px;margin-right:10px;float:left;}.yui-skin-sam .yui-simple-dialog .bd span.blckicon{background-position:0 -1100px;}.yui-skin-sam .yui-simple-dialog .bd span.alrticon{background-position:0 -1050px;}.yui-skin-sam .yui-simple-dialog .bd span.hlpicon{background-position:0 -1150px;}.yui-skin-sam .yui-simple-dialog .bd span.infoicon{background-position:0 -1200px;}.yui-skin-sam .yui-simple-dialog .bd span.warnicon{background-position:0 -1900px;}.yui-skin-sam .yui-simple-dialog .bd span.tipicon{background-position:0 -1250px;}.yui-skin-sam .yui-tt .bd{position:relative;top:0;left:0;z-index:1;color:#000;padding:2px 5px;border-color:#D4C237 #A6982B #A6982B #A6982B;border-width:1px;border-style:solid;background-color:#FFEE69;}.yui-skin-sam .yui-tt.show-scrollbars .bd{overflow:auto;}.yui-skin-sam .yui-tt-shadow{top:2px;right:-3px;left:-3px;bottom:-3px;background-color:#000;}.yui-skin-sam .yui-tt-shadow-visible{opacity:.12;filter:alpha(opacity=12);}
-.yui-skin-sam .yui-dt-mask{position:absolute;z-index:9500;}.yui-dt-tmp{position:absolute;left:-9000px;}.yui-dt-scrollable .yui-dt-bd{overflow:auto;}.yui-dt-scrollable .yui-dt-hd{overflow:hidden;position:relative;}.yui-dt-scrollable .yui-dt-bd thead tr,.yui-dt-scrollable .yui-dt-bd thead th{position:absolute;left:-1500px;}.yui-dt-scrollable tbody{-moz-outline:none;}.yui-skin-sam thead .yui-dt-sortable{cursor:pointer;}.yui-skin-sam thead .yui-dt-draggable{cursor:move;}.yui-dt-coltarget{position:absolute;z-index:999;}.yui-dt-hd{zoom:1;}th.yui-dt-resizeable .yui-dt-resizerliner{position:relative;}.yui-dt-resizer{position:absolute;right:0;bottom:0;height:100%;cursor:e-resize;cursor:col-resize;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}.yui-dt-resizerproxy{visibility:hidden;position:absolute;z-index:9000;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}th.yui-dt-hidden .yui-dt-liner,td.yui-dt-hidden .yui-dt-liner,th.yui-dt-hidden .yui-dt-resizer{display:none;}.yui-dt-editor{position:absolute;z-index:9000;}.yui-skin-sam .yui-dt table{margin:0;padding:0;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:inherit;border-collapse:separate;*border-collapse:collapse;border-spacing:0;border:1px solid #7F7F7F;}.yui-skin-sam .yui-dt thead{border-spacing:0;}.yui-skin-sam .yui-dt caption{color:#000;font-size:85%;font-weight:normal;font-style:italic;line-height:1;padding:1em 0;text-align:center;}.yui-skin-sam .yui-dt th{background:#D8D8DA url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-dt th,.yui-skin-sam .yui-dt th a{font-weight:normal;text-decoration:none;color:#000;vertical-align:bottom;}.yui-skin-sam .yui-dt th{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;}.yui-skin-sam .yui-dt tr.yui-dt-first td{border-top:1px solid #7F7F7F;}.yui-skin-sam .yui-dt th .yui-dt-liner{white-space:nowrap;}.yui-skin-sam .yui-dt-liner{margin:0;padding:0;padding:4px 10px 4px 10px;}.yui-skin-sam .yui-dt-coltarget{width:5px;background-color:red;}.yui-skin-sam .yui-dt td{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;text-align:left;}.yui-skin-sam .yui-dt-list td{border-right:none;}.yui-skin-sam .yui-dt-resizer{width:6px;}.yui-skin-sam .yui-dt-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-dt-message{background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable table{border:none;}.yui-skin-sam .yui-dt-scrollable .yui-dt-hd{border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;}.yui-skin-sam .yui-dt-scrollable .yui-dt-bd{border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td{border-bottom:1px solid #7F7F7F;}.yui-skin-sam th.yui-dt-asc,.yui-skin-sam th.yui-dt-desc{background:url(sprite.png) repeat-x 0 -100px;}.yui-skin-sam th.yui-dt-sortable .yui-dt-label{margin-right:10px;}.yui-skin-sam th.yui-dt-asc .yui-dt-liner{background:url(dt-arrow-up.png) no-repeat right;}.yui-skin-sam th.yui-dt-desc .yui-dt-liner{background:url(dt-arrow-dn.png) no-repeat right;}tbody .yui-dt-editable{cursor:pointer;}.yui-dt-editor{text-align:left;background-color:#F2F2F2;border:1px solid #808080;padding:6px;}.yui-dt-editor label{padding-left:4px;padding-right:6px;}.yui-dt-editor .yui-dt-button{padding-top:6px;text-align:right;}.yui-dt-editor .yui-dt-button button{background:url(sprite.png) repeat-x 0 0;border:1px solid #999;width:4em;height:1.8em;margin-left:6px;}.yui-dt-editor .yui-dt-button button.yui-dt-default{background:url(sprite.png) repeat-x 0 -1400px;background-color:#5584E0;border:1px solid #304369;color:#FFF;}.yui-dt-editor .yui-dt-button button:hover{background:url(sprite.png) repeat-x 0 -1300px;color:#000;}.yui-dt-editor .yui-dt-button button:active{background:url(sprite.png) repeat-x 0 -1700px;color:#000;}.yui-skin-sam tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam tr.yui-dt-odd{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc{background-color:#DBEAFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam th.yui-dt-highlighted,.yui-skin-sam th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam tr.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam th.yui-dt-selected,.yui-skin-sam th.yui-dt-selected a{background-color:#446CD7;}.yui-skin-sam tr.yui-dt-selected td,.yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-list th.yui-dt-selected,.yui-skin-sam .yui-dt-list th.yui-dt-selected a{background-color:#446CD7;}
-.yui-skin-sam .yui-dt-list tr.yui-dt-selected td,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-paginator{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-dt-paginator .yui-dt-first,.yui-skin-sam .yui-dt-paginator .yui-dt-last,.yui-skin-sam .yui-dt-paginator .yui-dt-selected{padding:2px 6px;}.yui-skin-sam .yui-dt-paginator a.yui-dt-first,.yui-skin-sam .yui-dt-paginator a.yui-dt-last{text-decoration:none;}.yui-skin-sam .yui-dt-paginator .yui-dt-previous,.yui-skin-sam .yui-dt-paginator .yui-dt-next{display:none;}.yui-skin-sam a.yui-dt-page{border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;background-color:#fff;}.yui-skin-sam .yui-dt-selected{border:1px solid #fff;background-color:#fff;}
-.yui-busy{cursor:wait!important;}.yui-toolbar-container fieldset,.yui-editor-container fieldset{padding:0;margin:0;border:0;}.yui-toolbar-container legend{display:none;}.yui-toolbar-container .yui-toolbar-subcont{padding:.25em 0;zoom:1;}.yui-toolbar-container-collapsed .yui-toolbar-subcont{display:none;}.yui-toolbar-container .yui-toolbar-subcont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container span.yui-toolbar-draghandle{cursor:move;border-left:1px solid #999;border-right:1px solid #999;overflow:hidden;text-indent:77777px;width:2px;height:20px;display:block;clear:none;float:left;margin:0 0 0 .2em;}.yui-toolbar-container .yui-toolbar-titlebar.draggable{cursor:move;}.yui-toolbar-container .yui-toolbar-titlebar{position:relative;}.yui-toolbar-container .yui-toolbar-titlebar h2{font-weight:bold;letter-spacing:0;border:none;color:#000;margin:0;padding:.2em;}.yui-toolbar-container .yui-toolbar-titlebar h2 a{text-decoration:none;color:#000;cursor:default;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-draghandle{height:40px;}.yui-toolbar-container .yui-toolbar-group{float:left;margin-right:.5em;zoom:1;}.yui-toolbar-container .yui-toolbar-group:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container .yui-toolbar-group h3{font-size:75%;padding:0 0 0 .25em;margin:0;}.yui-toolbar-container span.yui-toolbar-separator{width:2px;padding:0;height:18px;margin:.2em 0 .2em .1em;display:none;float:left;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-separator{height:45px;*height:50px;}.yui-toolbar-container.yui-toolbar-grouped .yui-toolbar-group span.yui-toolbar-separator{height:18px;display:block;}.yui-toolbar-container ul li{margin:0;padding:0;list-style-type:none;}.yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-toolbar-container .yui-push-button,.yui-toolbar-container .yui-color-button,.yui-toolbar-container .yui-menu-button{position:relative;cursor:pointer;}.yui-toolbar-container .yui-button .first-child,.yui-toolbar-container .yui-button .first-child a{height:100%;width:100%;overflow:hidden;font-size:0;}.yui-toolbar-container .yui-button-disabled{cursor:default;}.yui-toolbar-container .yui-button-disabled .yui-toolbar-icon{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button-disabled .up,.yui-toolbar-container .yui-button-disabled .down{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button a{overflow:hidden;}.yui-toolbar-container .yui-toolbar-select .first-child a{cursor:pointer;}.yui-toolbar-fontname-arial{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-arial-black{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-comic-sans-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-courier-new{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-times-new-roman{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-verdana{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-impact{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-lucida-console{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-tahoma{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-trebuchet-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-container .yui-toolbar-spinbutton{position:relative;}.yui-toolbar-container .yui-toolbar-spinbutton .first-child a{z-index:0;opacity:1;}.yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-toolbar-container .yui-toolbar-spinbutton a.down{position:absolute;display:block right:0;cursor:pointer;z-index:1;padding:0;margin:0;}.yui-toolbar-container .yui-overlay{position:absolute;}.yui-toolbar-container .yui-overlay ul li{margin:0;list-style-type:none;}.yui-toolbar-container{z-index:1;}.yui-editor-container .yui-editor-editable-container{position:relative;z-index:0;width:100%;}.yui-editor-container .yui-editor-masked{background-color:#CCC;height:100%;width:100%;position:absolute;top:0;left:0;opacity:.5;filter:alpha(opacity=50);}.yui-editor-container iframe{border:0;padding:0;margin:0;zoom:1;display:block;}.yui-editor-container .yui-editor-editable{padding:0;margin:0;}.yui-editor-container .dompath{font-size:85%;}.yui-editor-panel .hd{text-align:left;position:relative;}.yui-editor-panel .hd h3{font-weight:bold;padding:.25em 0 .25em .25em;margin:0;}.yui-editor-panel .bd{width:100%;zoom:1;position:relative;}.yui-editor-panel .bd div.yui-editor-body-cont{padding:.25em .1em;zoom:1;}.yui-editor-panel .bd .gecko form{overflow:auto;}.yui-editor-panel .bd div.yui-editor-body-cont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-editor-panel .ft{text-align:right;width:99%;float:left;clear:both;}.yui-editor-panel .ft span.tip{display:block;position:relative;padding:.5em .5em .5em 23px;text-align:left;zoom:1;}.yui-editor-panel label{clear:both;float:left;padding:0;width:100%;text-align:left;zoom:1;}.yui-editor-panel .gecko label{overflow:auto;}.yui-editor-panel label strong{float:left;width:6em;}.yui-editor-panel .removeLink{width:80%;text-align:right;}.yui-editor-panel label input{margin-left:.25em;float:left;}.yui-editor-panel .yui-toolbar-group{margin-bottom:.75em;}.yui-editor-panel .height-width{float:left;}.yui-editor-panel .height-width span{font-style:italic;display:block;float:left;overflow:visible;}.yui-editor-panel .height-width span.info{font-size:70%;margin-top:3px;}.yui-editor-panel .yui-toolbar-bordersize,.yui-editor-panel .yui-toolbar-bordertype{font-size:75%;}.yui-editor-panel .yui-toolbar-container span.yui-toolbar-separator{border:none;}.yui-editor-panel .yui-toolbar-bordersize span a span,.yui-editor-panel .yui-toolbar-bordertype span a span{display:block;height:8px;left:4px;position:absolute;top:3px;_top:-5px;width:24px;text-indent:52px;font-size:0;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-solid{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dotted{border-bottom:1px dotted black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dashed{border-bottom:1px dashed black;}
-.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-0{*top:0;text-indent:0;font-size:75%;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-1{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-2{border-bottom:2px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-3{top:2px;*top:-5px;border-bottom:3px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-4{top:1px;*top:-5px;border-bottom:4px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-5{top:1px;*top:-5px;border-bottom:5px solid black;}.yui-toolbar-container .yui-toolbar-bordersize-menu,.yui-toolbar-container .yui-toolbar-bordertype-menu{width:95px!important;}.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel,.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel:hover{margin:0 3px 7px 17px;}.yui-toolbar-bordersize-menu .yuimenuitemlabel .checkedindicator,.yui-toolbar-bordertype-menu .yuimenuitemlabel .checkedindicator{position:absolute;left:-12px;*top:14px;*left:0;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-1 a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-2 a{border-bottom:2px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-3 a{border-bottom:3px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-4 a{border-bottom:4px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-5 a{border-bottom:5px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-solid a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dashed a{border-bottom:1px dashed black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dotted a{border-bottom:1px dotted black;height:14px;}h2.yui-editor-skipheader,h3.yui-editor-skipheader{height:0;margin:0;padding:0;border:none;width:0;overflow:hidden;position:absolute;}.yui-toolbar-colors{width:133px;zoom:1;display:none;z-index:100;overflow:hidden;}.yui-toolbar-colors:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors a{height:9px;width:9px;float:left;display:block;overflow:hidden;text-indent:999px;margin:0;cursor:pointer;border:1px solid #F6F7EE;}.yui-toolbar-colors a:hover{border:1px solid black;}.yui-color-button-menu{overflow:visible;background-color:transparent;}.yui-toolbar-colors span{position:relative;display:block;padding:3px;overflow:hidden;float:left;width:100%;zoom:1;}.yui-toolbar-colors span:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors span em{height:35px;width:30px;float:left;display:block;overflow:hidden;text-indent:999px;margin:.75px;border:1px solid black;}.yui-toolbar-colors span strong{font-weight:normal;padding-left:3px;display:block;font-size:85%;float:left;width:65%;}.yui-toolbar-group-undoredo h3,.yui-toolbar-group-insertitem h3,.yui-toolbar-group-indentlist h3{width:68px;}.yui-toolbar-group-indentlist2 h3{width:122px;}.yui-toolbar-group-alignment h3{width:130px;}.yui-skin-sam .yui-editor-container{border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container{zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar{background:url(sprite.png) repeat-x 0 -200px;position:relative;}.yui-skin-sam .yui-editor-container .draggable .yui-toolbar-titlebar{cursor:move;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar h2{color:#000;font-weight:bold;margin:0;padding:.3em 1em;font-size:100%;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-group h3{color:#808080;font-size:75%;margin:1em 0 0;padding-bottom:0;padding-left:.25em;text-align:left;}.yui-toolbar-container span.yui-toolbar-separator{border:none;text-indent:33px;overflow:hidden;margin:0 .25em;}.yui-skin-sam .yui-toolbar-container{background-color:#F2F2F2;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subcont{padding:0 1em .35em;border-bottom:1px solid #808080;}.yui-skin-sam .yui-toolbar-container-collapsed .yui-toolbar-titlebar{border-bottom:1px solid #808080;}.yui-skin-sam .yui-editor-container .visible .yui-menu-shadow,.yui-skin-sam .yui-editor-panel .visible .yui-menu-shadow{display:none;}.yui-skin-sam .yui-editor-container ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-container ul li{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-toolbar-group ul li.yui-toolbar-groupitem{float:left;}.yui-skin-sam .yui-editor-container .dompath{background-color:#F2F2F2;border-top:1px solid #808080;color:#999;text-align:left;padding:.25em;}.yui-skin-sam .yui-toolbar-container .collapse{background:url(sprite.png) no-repeat 0 -400px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar span.collapse{cursor:pointer;position:absolute;top:4px;right:2px;display:block;overflow:hidden;height:15px;width:15px;text-indent:9999px;}.yui-skin-sam .yui-toolbar-container .yui-push-button,.yui-skin-sam .yui-toolbar-container .yui-color-button,.yui-skin-sam .yui-toolbar-container .yui-menu-button{background:url(sprite.png) repeat-x 0 0;position:relative;display:block;height:22px;width:30px;_font-size:0;margin:0;border-color:#808080;color:#f2f2f2;border-style:solid;border-width:1px 0;zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-push-button a,.yui-skin-sam .yui-toolbar-container .yui-color-button a,.yui-skin-sam .yui-toolbar-container .yui-menu-button a{padding-left:35px;height:20px;text-decoration:none;font-size:0;line-height:2;display:block;color:#000;overflow:hidden;white-space:nowrap;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a,.yui-skin-sam .yui-toolbar-container .yui-toolbar-select a{font-size:12px;}
-.yui-skin-sam .yui-toolbar-container .yui-push-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button .first-child{border-color:#808080;border-style:solid;border-width:0 1px;margin:0 -1px;display:block;position:relative;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-button .first-child{*left:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-fontname{width:135px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-heading{width:92px;}.yui-skin-sam .yui-toolbar-container .yui-button-hover{background:url(sprite.png) repeat-x 0 -1300px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-button-selected{background:url(sprite.png) repeat-x 0 -1700px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels .yui-toolbar-group{margin-top:.75em;}.yui-skin-sam .yui-toolbar-container .yui-push-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-color-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-menu-button span.yui-toolbar-icon{display:block;position:absolute;top:2px;height:18px;width:18px;overflow:hidden;background:url(editor-sprite.gif) no-repeat 30px 30px;}.yui-skin-sam .yui-toolbar-container .yui-button-selected span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-button-hover span.yui-toolbar-icon{background-image:url(editor-sprite-active.gif);}.yui-skin-sam .yui-toolbar-container .visible .yuimenuitemlabel{cursor:pointer;color:#000;*position:relative;}.yui-skin-sam .yui-toolbar-container .yui-button-menu{background-color:#fff;}.yui-skin-sam .yui-toolbar-container .yui-button-menu .yui-menu-body-scrolled{position:relative;}.yui-skin-sam div.yuimenu li.selected{background-color:#B3D4FF;}.yui-skin-sam div.yuimenu li.selected a.selected{color:#000;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bold span.yui-toolbar-icon{background-position:0 0;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-strikethrough span.yui-toolbar-icon{background-position:0 -108px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-italic span.yui-toolbar-icon{background-position:0 -36px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-undo span.yui-toolbar-icon{background-position:0 -1326px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-redo span.yui-toolbar-icon{background-position:0 -1355px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-underline span.yui-toolbar-icon{background-position:0 -72px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subscript span.yui-toolbar-icon{background-position:0 -180px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-superscript span.yui-toolbar-icon{background-position:0 -144px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-forecolor span.yui-toolbar-icon{background-position:0 -216px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-backcolor span.yui-toolbar-icon{background-position:0 -288px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyleft span.yui-toolbar-icon{background-position:0 -324px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifycenter span.yui-toolbar-icon{background-position:0 -360px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyright span.yui-toolbar-icon{background-position:0 -396px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyfull span.yui-toolbar-icon{background-position:0 -432px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-indent span.yui-toolbar-icon{background-position:0 -720px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-outdent span.yui-toolbar-icon{background-position:0 -684px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-createlink span.yui-toolbar-icon{background-position:0 -792px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertimage span.yui-toolbar-icon{background-position:1px -756px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-left span.yui-toolbar-icon{background-position:0 -972px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-right span.yui-toolbar-icon{background-position:0 -936px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-inline span.yui-toolbar-icon{background-position:0 -900px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-block span.yui-toolbar-icon{background-position:0 -864px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bordercolor span.yui-toolbar-icon{background-position:0 -252px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-removeformat span.yui-toolbar-icon{background-position:0 -1080px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-hiddenelements span.yui-toolbar-icon{background-position:0 -1044px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertunorderedlist span.yui-toolbar-icon{background-position:0 -468px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertorderedlist span.yui-toolbar-icon{background-position:0 -504px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child{width:35px;}
-.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child a{padding-left:2px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton span.yui-toolbar-icon{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{right:2px;background:url(editor-sprite.gif) no-repeat 0 -1222px;overflow:hidden;height:6px;width:7px;min-height:0;padding:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up{top:2px;background-position:0 -1222px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{bottom:2px;background-position:0 -1187px;}.yui-skin-sam .yui-toolbar-container select{height:22px;border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select .first-child a{padding-left:5px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select span.yui-toolbar-icon{background:url(editor-sprite.gif) no-repeat 0 -1144px;overflow:hidden;right:-2px;top:0;height:20px;}.yui-skin-sam .yui-editor-panel .yui-color-button-menu .bd{background-color:transparent;border:none;width:135px;}.yui-skin-sam .yui-color-button-menu .yui-toolbar-colors{border:1px solid #808080;}.yui-skin-sam .yui-editor-panel{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;position:absolute;}.yui-skin-sam .yui-editor-panel .hd{margin:10px 0 0;padding:0;border:none;}.yui-skin-sam .yui-editor-panel .hd h3{color:#000;border:1px solid #808080;background:url(sprite.png) repeat-x 0 -200px;width:99%;position:relative;margin:0;padding:3px 0 0 0;font-size:93%;text-indent:5px;height:20px;}.yui-skin-sam .yui-editor-panel .bd{background-color:#F2F2F2;border-left:1px solid #808080;border-right:1px solid #808080;width:99%;margin:0;padding:0;overflow:visible;}.yui-skin-sam .yui-editor-panel ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-panel ul li{margin:0;padding:0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .yui-toolbar-subcont{padding:0;border:none;margin-top:.35em;}.yui-skin-sam .yui-editor-panel .yui-toolbar-bordersize,.yui-skin-sam .yui-editor-panel .yui-toolbar-bordertype{width:50px;}.yui-skin-sam .yui-editor-panel label{display:block;float:none;padding:4px 0;margin-bottom:7px;}.yui-skin-sam .yui-editor-panel label strong{font-weight:normal;font-size:93%;text-align:right;padding-top:2px;}.yui-skin-sam .yui-editor-panel label input{width:75%;}.yui-skin-sam .yui-editor-panel .createlink_target,.yui-skin-sam .yui-editor-panel .insertimage_target{width:auto;margin-right:5px;}.yui-skin-sam .yui-editor-panel .removeLink{width:98%;}.yui-skin-sam .yui-editor-panel label input.warning{background-color:#FFEE69;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group h3{color:#000;float:left;font-weight:normal;font-size:93%;margin:5px 0 0 0;padding:0 3px 0 0;text-align:right;}.yui-skin-sam .yui-editor-panel .height-width h3{margin:3px 0 0 10px;}.yui-skin-sam .yui-editor-panel .height-width{margin:3px 0 0 35px;*margin-left:14px;width:42%;*width:44%;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-border{width:190px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-border{width:210px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding{width:203px;_width:198px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-padding{width:172px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding h3{margin-left:25px;*margin-left:12px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-textflow{width:182px;}.yui-skin-sam .yui-editor-panel .hd{background:none;}.yui-skin-sam .yui-editor-panel .ft{background-color:#F2F2F2;border:1px solid #808080;border-top:none;padding:0;margin:0 0 2px 0;}.yui-skin-sam .yui-editor-panel .hd span.close{background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;display:block;height:16px;overflow:hidden;position:absolute;right:5px;text-indent:500px;top:2px;width:26px;}.yui-skin-sam .yui-editor-panel .ft span.tip{background-color:#EDF5FF;border-top:1px solid #808080;font-size:85%;}.yui-skin-sam .yui-editor-panel .ft span.tip strong{display:block;float:left;margin:0 2px 8px 0;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon{background:url(editor-sprite.gif) no-repeat 0 -1260px;display:block;height:20px;left:2px;position:absolute;top:8px;width:20px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-info{background-position:2px -1260px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-warn{background-position:2px -1296px;}.yui-skin-sam .yui-editor-panel .hd span.knob{position:absolute;height:10px;width:28px;top:-10px;left:25px;text-indent:9999px;overflow:hidden;background:url(editor-knob.gif) no-repeat 0 0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container{float:left;width:100%;background-image:none;border:none;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .bd{background-color:#fff;}.yui-editor-blankimage{background-image:url(blankimage.png);}.yui-skin-sam .yui-editor-container .yui-resize-handle-br{height:11px;width:11px;background-position:-20px -60px;background-color:transparent;}
-.yui-crop{position:relative;}.yui-crop .yui-crop-mask{position:absolute;top:0;left:0;height:100%;width:100%;}.yui-crop .yui-resize{position:absolute;top:10px;left:10px;border:0;}.yui-crop .yui-crop-resize-mask{position:absolute;top:0;left:0;height:100%;width:100%;background-position:-10px -10px;overflow:hidden;}.yui-skin-sam .yui-crop .yui-crop-mask{background-color:#000;opacity:.5;filter:alpha(opacity=50);}.yui-skin-sam .yui-crop .yui-resize{border:1px dashed #fff;}
-.yui-layout-loading{visibility:hidden;}body.yui-layout{overflow:hidden;position:relative;padding:0;margin:0;}.yui-layout-doc{position:relative;overflow:hidden;padding:0;margin:0;}.yui-layout-unit{height:50px;width:50px;padding:0;margin:0;float:none;z-index:0;}.yui-layout-unit-top{position:absolute;top:0;left:0;width:100%;}.yui-layout-unit-left{position:absolute;top:0;left:0;}.yui-layout-unit-right{position:absolute;top:0;right:0;}.yui-layout-unit-bottom{position:absolute;bottom:0;left:0;width:100%;}.yui-layout-unit-center{position:absolute;top:0;left:0;width:100%;}.yui-layout div.yui-layout-hd{position:absolute;top:0;left:0;zoom:1;width:100%;}.yui-layout div.yui-layout-bd{position:absolute;top:0;left:0;zoom:1;width:100%;}.yui-layout .yui-layout-noscroll div.yui-layout-bd{overflow:hidden;}.yui-layout .yui-layout-scroll div.yui-layout-bd{overflow:auto;}.yui-layout div.yui-layout-ft{position:absolute;bottom:0;left:0;width:100%;zoom:1;}.yui-layout .yui-layout-unit div.yui-layout-hd h2{text-align:left;}.yui-layout .yui-layout-unit div.yui-layout-hd .collapse{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0;}.yui-layout .yui-layout-unit div.yui-layout-hd .close{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0;}.yui-layout .yui-layout-unit div.yui-layout-hd .collapse-close{right:25px;}.yui-layout .yui-layout-clip{position:absolute;height:20px;background-color:#c0c0c0;display:none;}.yui-layout .yui-layout-clip .collapse{cursor:pointer;height:13px;position:absolute;right:2px;top:2px;width:17px;font-size:0px;}.yui-layout .yui-layout-wrap{height:100%;width:100%;position:absolute;left:0;}.yui-skin-sam .yui-layout .yui-resize-proxy{border:none;font-size:0;margin:0;padding:0;}.yui-skin-sam .yui-layout .yui-resize-resizing .yui-resize-handle{visibility:hidden;}.yui-skin-sam .yui-layout .yui-resize-proxy div{position:absolute;border:1px solid #808080;background-color:#EDF5FF;}.yui-skin-sam .yui-layout .yui-resize .yui-resize-handle-active{}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-l{width:5px;height:100%;top:0;left:0;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-r{width:5px;top:0;right:0;height:100%;position:absolute;zoom:1;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-b{width:100%;bottom:0;left:0;height:5px;}.yui-skin-sam .yui-layout .yui-resize-proxy .yui-layout-handle-t{width:100%;top:0;left:0;height:5px;}.yui-skin-sam .yui-layout .yui-layout-unit-left div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -160px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-left .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -140px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-right div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -200px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-right .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -120px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-top div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -220px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-top .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -240px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit-bottom div.yui-layout-hd .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -260px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip-bottom .collapse{background:transparent url(layout_sprite.png) no-repeat -20px -180px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-hd .close{background:transparent url(layout_sprite.png) no-repeat -20px -100px;border:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-hd{background:url(sprite.png) repeat-x 0 -1400px;border:1px solid #808080;}.yui-skin-sam .yui-layout{background-color:#EDF5FF;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-hd h2{font-weight:bold;color:#fff;padding:3px;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd{border:1px solid #808080;border-bottom:none;border-top:none;*border-bottom-width:0;*border-top-width:0;background-color:#f2f2f2;text-align:left;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-noft{border-bottom:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd{border-top:1px solid #808080;}.yui-skin-sam .yui-layout .yui-layout-clip{position:absolute;height:20px;background-color:#EDF5FF;display:none;border:1px solid #808080;}.yui-skin-sam .yui-layout div.yui-layout-ft{border:1px solid #808080;border-top:none;*border-top-width:0;background-color:#f2f2f2;}.yui-skin-sam .yui-layout-unit .yui-resize-handle{background-color:transparent;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-r{right:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-l{left:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-b{right:0;bottom:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-t{right:0;top:0;background-image:none;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-r .yui-layout-resize-knob,.yui-skin-sam .yui-layout-unit .yui-resize-handle-l .yui-layout-resize-knob{position:absolute;height:16px;width:6px;top:45%;left:0px;background:transparent url(layout_sprite.png) no-repeat 0 -5px;}.yui-skin-sam .yui-layout-unit .yui-resize-handle-t .yui-layout-resize-knob,.yui-skin-sam .yui-layout-unit .yui-resize-handle-b .yui-layout-resize-knob{position:absolute;height:6px;width:16px;left:45%;background:transparent url(layout_sprite.png) no-repeat -20px 0;}
-.yui-skin-sam .yui-log{padding:1em;width:31em;background-color:#AAA;color:#000;border:1px solid black;font-family:monospace;font-size:77%;text-align:left;z-index:9000;}.yui-skin-sam .yui-log-container{position:absolute;top:1em;right:1em;}.yui-skin-sam .yui-log input{margin:0;padding:0;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;font-size:100%;font-weight:normal;}.yui-skin-sam .yui-log .yui-log-btns{position:relative;float:right;bottom:.25em;}.yui-skin-sam .yui-log .yui-log-hd{margin-top:1em;padding:.5em;background-color:#575757;}.yui-skin-sam .yui-log .yui-log-hd h4{margin:0;padding:0;font-size:108%;font-weight:bold;color:#FFF;}.yui-skin-sam .yui-log .yui-log-bd{width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}.yui-skin-sam .yui-log p{margin:1px;padding:.1em;}.yui-skin-sam .yui-log pre{margin:0;padding:0;}.yui-skin-sam .yui-log pre.yui-log-verbose{white-space:pre-wrap;white-space:-moz-pre-wrap !important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}.yui-skin-sam .yui-log .yui-log-ft{margin-top:.5em;}.yui-skin-sam .yui-log .yui-log-ft .yui-log-categoryfilters{}.yui-skin-sam .yui-log .yui-log-ft .yui-log-sourcefilters{width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}.yui-skin-sam .yui-log .yui-log-filtergrp{margin-right:.5em;}.yui-skin-sam .yui-log .info{background-color:#A7CC25;}.yui-skin-sam .yui-log .warn{background-color:#F58516;}.yui-skin-sam .yui-log .error{background-color:#E32F0B;}.yui-skin-sam .yui-log .time{background-color:#A6C9D7;}.yui-skin-sam .yui-log .window{background-color:#F2E886;}
-.yuimenu{top:-999em;left:-999em;}.yuimenubar{position:static;}.yuimenu .yuimenu,.yuimenubar .yuimenu{position:absolute;}.yuimenubar li,.yuimenu li{list-style-type:none;}.yuimenubar ul,.yuimenu ul,.yuimenubar li,.yuimenu li,.yuimenu h6,.yuimenubar h6{margin:0;padding:0;}.yuimenuitemlabel,.yuimenubaritemlabel{text-align:left;white-space:nowrap;}.yuimenubar ul{*zoom:1;}.yuimenubar .yuimenu ul{*zoom:normal;}.yuimenubar>.bd>ul:after{content:".";display:block;clear:both;visibility:hidden;height:0;line-height:0;}.yuimenubaritem{float:left;}.yuimenubaritemlabel,.yuimenuitemlabel{display:block;}.yuimenuitemlabel .helptext{font-style:normal;display:block;margin:-1em 0 0 10em;}.yui-menu-shadow{position:absolute;visibility:hidden;z-index:-1;}.yui-menu-shadow-visible{top:2px;right:-3px;left:-3px;bottom:-3px;visibility:visible;}.hide-scrollbars *{overflow:hidden;}.hide-scrollbars select{display:none;}.yuimenu.show-scrollbars,.yuimenubar.show-scrollbars{overflow:visible;}.yuimenu.hide-scrollbars .yui-menu-shadow,.yuimenubar.hide-scrollbars .yui-menu-shadow{overflow:hidden;}.yuimenu.show-scrollbars .yui-menu-shadow,.yuimenubar.show-scrollbars .yui-menu-shadow{overflow:auto;}.yui-overlay.yui-force-redraw{margin-bottom:1px;}.yui-skin-sam .yuimenubar{font-size:93%;line-height:2;*line-height:1.9;border:solid 1px #808080;background:url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yuimenubarnav .yuimenubaritem{border-right:solid 1px #ccc;}.yui-skin-sam .yuimenubaritemlabel{padding:0 10px;color:#000;text-decoration:none;cursor:default;border-style:solid;border-color:#808080;border-width:1px 0;*position:relative;margin:-1px 0;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel{padding-right:20px;*display:inline-block;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-hassubmenu{background:url(menubaritem_submenuindicator.png) right center no-repeat;}.yui-skin-sam .yuimenubaritem-selected{background:url(sprite.png) repeat-x 0 -1700px;}.yui-skin-sam .yuimenubaritemlabel-selected{border-color:#7D98B8;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-selected{border-left-width:1px;margin-left:-1px;*left:-1px;}.yui-skin-sam .yuimenubaritemlabel-disabled{cursor:default;color:#A6A6A6;}.yui-skin-sam .yuimenubarnav .yuimenubaritemlabel-hassubmenu-disabled{background-image:url(menubaritem_submenuindicator_disabled.png);}.yui-skin-sam .yuimenu{font-size:93%;line-height:1.5;*line-height:1.45;}.yui-skin-sam .yuimenubar .yuimenu,.yui-skin-sam .yuimenu .yuimenu{font-size:100%;}.yui-skin-sam .yuimenu .bd{*zoom:1;_zoom:normal;border:solid 1px #808080;background-color:#fff;}.yui-skin-sam .yuimenu .yuimenu .bd{*zoom:normal;}.yui-skin-sam .yuimenu ul{padding:3px 0;border-width:1px 0 0 0;border-color:#ccc;border-style:solid;}.yui-skin-sam .yuimenu ul.first-of-type{border-width:0;}.yui-skin-sam .yuimenu h6{font-weight:bold;border-style:solid;border-color:#ccc;border-width:1px 0 0 0;color:#a4a4a4;padding:3px 10px 0 10px;}.yui-skin-sam .yuimenu ul.hastitle,.yui-skin-sam .yuimenu h6.first-of-type{border-width:0;}.yui-skin-sam .yuimenu .yui-menu-body-scrolled{border-color:#ccc #808080;overflow:hidden;}.yui-skin-sam .yuimenu .topscrollbar,.yui-skin-sam .yuimenu .bottomscrollbar{height:16px;border:solid 1px #808080;background:#fff url(sprite.png) no-repeat 0 0;}.yui-skin-sam .yuimenu .topscrollbar{border-bottom-width:0;background-position:center -950px;}.yui-skin-sam .yuimenu .topscrollbar_disabled{background-position:center -975px;}.yui-skin-sam .yuimenu .bottomscrollbar{border-top-width:0;background-position:center -850px;}.yui-skin-sam .yuimenu .bottomscrollbar_disabled{background-position:center -875px;}.yui-skin-sam .yuimenuitem{_border-bottom:solid 1px #fff;}.yui-skin-sam .yuimenuitemlabel{padding:0 20px;color:#000;text-decoration:none;cursor:default;}.yui-skin-sam .yuimenuitemlabel .helptext{margin-top:-1.5em;*margin-top:-1.45em;}.yui-skin-sam .yuimenuitem-hassubmenu{background-image:url(menuitem_submenuindicator.png);background-position:right center;background-repeat:no-repeat;}.yui-skin-sam .yuimenuitem-checked{background-image:url(menuitem_checkbox.png);background-position:left center;background-repeat:no-repeat;}.yui-skin-sam .yui-menu-shadow-visible{background-color:#000;opacity:.12;filter:alpha(opacity=12);}.yui-skin-sam .yuimenuitem-selected{background-color:#B3D4FF;}.yui-skin-sam .yuimenuitemlabel-disabled{cursor:default;color:#A6A6A6;}.yui-skin-sam .yuimenuitem-hassubmenu-disabled{background-image:url(menuitem_submenuindicator_disabled.png);}.yui-skin-sam .yuimenuitem-checked-disabled{background-image:url(menuitem_checkbox_disabled.png);}
-.yui-skin-sam .yui-pg-container{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-pg-first,.yui-skin-sam .yui-pg-previous,.yui-skin-sam .yui-pg-next,.yui-skin-sam .yui-pg-last,.yui-skin-sam .yui-pg-current,.yui-skin-sam .yui-pg-pages,.yui-skin-sam .yui-pg-page{display:inline-block;font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;padding:3px 6px;zoom:1;}.yui-skin-sam .yui-pg-pages{padding:0;}.yui-skin-sam .yui-pg-current{padding:3px 0;}.yui-skin-sam a.yui-pg-first:link,.yui-skin-sam a.yui-pg-first:visited,.yui-skin-sam a.yui-pg-first:active,.yui-skin-sam a.yui-pg-first:hover,.yui-skin-sam a.yui-pg-previous:link,.yui-skin-sam a.yui-pg-previous:visited,.yui-skin-sam a.yui-pg-previous:active,.yui-skin-sam a.yui-pg-previous:hover,.yui-skin-sam a.yui-pg-next:link,.yui-skin-sam a.yui-pg-next:visited,.yui-skin-sam a.yui-pg-next:active,.yui-skin-sam a.yui-pg-next:hover,.yui-skin-sam a.yui-pg-last:link,.yui-skin-sam a.yui-pg-last:visited,.yui-skin-sam a.yui-pg-last:active,.yui-skin-sam a.yui-pg-last:hover,.yui-skin-sam a.yui-pg-page:link,.yui-skin-sam a.yui-pg-page:visited,.yui-skin-sam a.yui-pg-page:active,.yui-skin-sam a.yui-pg-page:hover{color:#06c;text-decoration:underline;outline:0;}.yui-skin-sam span.yui-pg-first,.yui-skin-sam span.yui-pg-previous,.yui-skin-sam span.yui-pg-next,.yui-skin-sam span.yui-pg-last{color:#a6a6a6;}.yui-skin-sam .yui-pg-page{background-color:#fff;border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;}.yui-skin-sam .yui-pg-current-page{background-color:transparent;border:none;font-weight:bold;padding:3px 6px;}.yui-skin-sam .yui-pg-page{margin-left:1px;margin-right:1px;}.yui-skin-sam .yui-pg-first,.yui-skin-sam .yui-pg-previous{padding-left:0;}.yui-skin-sam .yui-pg-next,.yui-skin-sam .yui-pg-last{padding-right:0;}.yui-skin-sam .yui-pg-current,.yui-skin-sam .yui-pg-rpp-options{margin-left:1em;margin-right:1em;}
-.yui-skin-sam .yui-pv{background-color:#4a4a4a;font-family:bitstream vera sans, dejavu sans, verdana, sans-serif;position:relative;width:99%;z-index:1000;margin-bottom:1em;overflow:hidden;}.yui-skin-sam .yui-pv .hd{background:url(header_background.png) repeat-x;min-height:30px;overflow:hidden;zoom:1;padding:2px 0;}.yui-skin-sam .yui-pv .hd h4{padding:8px 10px;margin:0;font:bold 14px bitstream vera sans, dejavu sans, verdana, sans-serif;color:#fff;}.yui-skin-sam .yui-pv .hd a{background:#3f6bc3;font:bold 11px bitstream vera sans, dejavu sans, verdana, sans-serif;color:#fff;padding:4px;margin:3px 10px 0 0;border:1px solid #3f567d;cursor:pointer;display:block;float:right;}.yui-skin-sam .yui-pv .hd span{display:none;}.yui-skin-sam .yui-pv .hd span.yui-pv-busy{height:18px;width:18px;background:url(wait.gif) no-repeat;overflow:hidden;display:block;float:right;margin:4px 10px 0 0;}.yui-skin-sam .yui-pv .hd:after,.yui-pv .bd:after,.yui-skin-sam .yui-pv-chartlegend dl:after{content:'.';visibility:hidden;clear:left;height:0;display:block;}.yui-skin-sam .yui-pv .bd{position:relative;zoom:1;overflow-x:auto;overflow-y:hidden;}.yui-skin-sam .yui-pv .yui-pv-table{padding:0 10px;margin:5px 0 10px 0;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-bd td{color:#eeee5c;font:12px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd{background:#929292;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even{background:#58637a;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-desc{background:#384970;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-desc{background:#6F6E6E;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th{background-image:none;background:#2E2D2D;}.yui-skin-sam .yui-pv th.yui-dt-asc .yui-dt-liner{background:transparent url(asc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv th.yui-dt-desc .yui-dt-liner{background:transparent url(desc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th a{color:#fff;font:bold 12px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-desc{background:#333;}.yui-skin-sam .yui-pv-chartcontainer{padding:0 10px;}.yui-skin-sam .yui-pv-chart{height:250px;clear:right;margin:5px 0 0 0;color:#fff;}.yui-skin-sam .yui-pv-chartlegend div{float:right;margin:0 0 0 10px;_width:250px;}.yui-skin-sam .yui-pv-chartlegend dl{border:1px solid #999;padding:.2em 0 .2em .5em;zoom:1;margin:5px 0;}.yui-skin-sam .yui-pv-chartlegend dt{float:left;display:block;height:.7em;width:.7em;padding:0;}.yui-skin-sam .yui-pv-chartlegend dd{float:left;display:block;color:#fff;margin:0 1em 0 .5em;padding:0;font:11px bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-skin-sam .yui-pv-minimized{height:35px;}.yui-skin-sam .yui-pv-minimized .bd{top:-3000px;}.yui-skin-sam .yui-pv-minimized .hd a.yui-pv-refresh{display:none;}
-.yui-resize{position:relative;zoom:1;z-index:0;}.yui-resize-wrap{zoom:1;}.yui-draggable{cursor:move;}.yui-resize .yui-resize-handle{position:absolute;z-index:1;font-size:0;margin:0;padding:0;zoom:1;height:1px;width:1px;}.yui-resize .yui-resize-handle-br{height:5px;width:5px;bottom:0;right:0;cursor:se-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-bl{height:5px;width:5px;bottom:0;left:0;cursor:sw-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-tl{height:5px;width:5px;top:0;left:0;cursor:nw-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-tr{height:5px;width:5px;top:0;right:0;cursor:ne-resize;z-index:2;zoom:1;}.yui-resize .yui-resize-handle-r{width:5px;height:100%;top:0;right:0;cursor:e-resize;zoom:1;}.yui-resize .yui-resize-handle-l{height:100%;width:5px;top:0;left:0;cursor:w-resize;zoom:1;}.yui-resize .yui-resize-handle-b{width:100%;height:5px;bottom:0;right:0;cursor:s-resize;zoom:1;}.yui-resize .yui-resize-handle-t{width:100%;height:5px;top:0;right:0;cursor:n-resize;zoom:1;}.yui-resize-proxy{position:absolute;border:1px dashed #000;visibility:hidden;z-index:1000;}.yui-resize-hover .yui-resize-handle,.yui-resize-hidden .yui-resize-handle{opacity:0;filter:alpha(opacity=0);}.yui-resize-ghost{opacity:.5;filter:alpha(opacity=50);}.yui-resize-knob .yui-resize-handle{height:6px;width:6px;}.yui-resize-knob .yui-resize-handle-tr{right:-3px;top:-3px;}.yui-resize-knob .yui-resize-handle-tl{left:-3px;top:-3px;}.yui-resize-knob .yui-resize-handle-bl{left:-3px;bottom:-3px;}.yui-resize-knob .yui-resize-handle-br{right:-3px;bottom:-3px;}.yui-resize-knob .yui-resize-handle-t{left:45%;top:-3px;}.yui-resize-knob .yui-resize-handle-r{right:-3px;top:45%;}.yui-resize-knob .yui-resize-handle-l{left:-3px;top:45%;}.yui-resize-knob .yui-resize-handle-b{left:45%;bottom:-3px;}.yui-resize-status{position:absolute;top:-999px;left:-999px;padding:2px;font-size:80%;display:none;zoom:1;z-index:9999;}.yui-resize-status strong,.yui-resize-status em{font-weight:normal;font-style:normal;padding:1px;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle{background-color:#F2F2F2;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle-active{background-color:#7D98B8;zoom:1;}.yui-skin-sam .yui-resize .yui-resize-handle-l,.yui-skin-sam .yui-resize .yui-resize-handle-r,.yui-skin-sam .yui-resize .yui-resize-handle-l-active,.yui-skin-sam .yui-resize .yui-resize-handle-r-active{height:100%;zoom:1;}.yui-skin-sam .yui-resize-knob .yui-resize-handle{border:1px solid #808080;}.yui-skin-sam .yui-resize-hover .yui-resize-handle-active{opacity:1;filter:alpha(opacity=100);}.yui-skin-sam .yui-resize-proxy{border:1px dashed #426FD9;}.yui-skin-sam .yui-resize-status{border:1px solid #A6982B;border-top:1px solid #D4C237;background-color:#FFEE69;color:#000;}.yui-skin-sam .yui-resize-status strong,.yui-skin-sam .yui-resize-status em{float:left;display:block;clear:both;padding:1px;text-align:center;}.yui-skin-sam .yui-resize .yui-resize-handle-inner-r,.yui-skin-sam .yui-resize .yui-resize-handle-inner-l{background:transparent url(layout_sprite.png) no-repeat 0 -5px;height:16px;width:5px;position:absolute;top:45%;}.yui-skin-sam .yui-resize .yui-resize-handle-inner-t,.yui-skin-sam .yui-resize .yui-resize-handle-inner-b{background:transparent url(layout_sprite.png) no-repeat -20px 0;height:5px;width:16px;position:absolute;left:50%;}.yui-skin-sam .yui-resize .yui-resize-handle-br{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -62px;}.yui-skin-sam .yui-resize .yui-resize-handle-tr{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -42px;}.yui-skin-sam .yui-resize .yui-resize-handle-tl{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -82px;}.yui-skin-sam .yui-resize .yui-resize-handle-bl{background-image:url(layout_sprite.png);background-repeat:no-repeat;background-position:-22px -23px;}.yui-skin-sam .yui-resize-knob .yui-resize-handle-t,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-b,.yui-skin-sam .yui-resize-knob .yui-resize-handle-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-tl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-tr,.yui-skin-sam .yui-resize-knob .yui-resize-handle-bl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-br,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-t,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-b,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-tl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-tr,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-bl,.yui-skin-sam .yui-resize-knob .yui-resize-handle-inner-br{background-image:none;}.yui-skin-sam .yui-resize-knob .yui-resize-handle-l,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r,.yui-skin-sam .yui-resize-knob .yui-resize-handle-l-active,.yui-skin-sam .yui-resize-knob .yui-resize-handle-r-active{height:6px;width:6px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-r{right:-8px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-b{bottom:-8px;}.yui-skin-sam .yui-resize-textarea .yui-resize-handle-br{right:-8px;bottom:-8px;}
-.yui-busy{cursor:wait!important;}.yui-toolbar-container fieldset,.yui-editor-container fieldset{padding:0;margin:0;border:0;}.yui-toolbar-container legend{display:none;}.yui-toolbar-container .yui-toolbar-subcont{padding:.25em 0;zoom:1;}.yui-toolbar-container-collapsed .yui-toolbar-subcont{display:none;}.yui-toolbar-container .yui-toolbar-subcont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container span.yui-toolbar-draghandle{cursor:move;border-left:1px solid #999;border-right:1px solid #999;overflow:hidden;text-indent:77777px;width:2px;height:20px;display:block;clear:none;float:left;margin:0 0 0 .2em;}.yui-toolbar-container .yui-toolbar-titlebar.draggable{cursor:move;}.yui-toolbar-container .yui-toolbar-titlebar{position:relative;}.yui-toolbar-container .yui-toolbar-titlebar h2{font-weight:bold;letter-spacing:0;border:none;color:#000;margin:0;padding:.2em;}.yui-toolbar-container .yui-toolbar-titlebar h2 a{text-decoration:none;color:#000;cursor:default;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-draghandle{height:40px;}.yui-toolbar-container .yui-toolbar-group{float:left;margin-right:.5em;zoom:1;}.yui-toolbar-container .yui-toolbar-group:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-container .yui-toolbar-group h3{font-size:75%;padding:0 0 0 .25em;margin:0;}.yui-toolbar-container span.yui-toolbar-separator{width:2px;padding:0;height:18px;margin:.2em 0 .2em .1em;display:none;float:left;}.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-separator{height:45px;*height:50px;}.yui-toolbar-container.yui-toolbar-grouped .yui-toolbar-group span.yui-toolbar-separator{height:18px;display:block;}.yui-toolbar-container ul li{margin:0;padding:0;list-style-type:none;}.yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-toolbar-container .yui-push-button,.yui-toolbar-container .yui-color-button,.yui-toolbar-container .yui-menu-button{position:relative;cursor:pointer;}.yui-toolbar-container .yui-button .first-child,.yui-toolbar-container .yui-button .first-child a{height:100%;width:100%;overflow:hidden;font-size:0;}.yui-toolbar-container .yui-button-disabled{cursor:default;}.yui-toolbar-container .yui-button-disabled .yui-toolbar-icon{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button-disabled .up,.yui-toolbar-container .yui-button-disabled .down{opacity:.5;filter:alpha(opacity=50);}.yui-toolbar-container .yui-button a{overflow:hidden;}.yui-toolbar-container .yui-toolbar-select .first-child a{cursor:pointer;}.yui-toolbar-fontname-arial{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-arial-black{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-comic-sans-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-courier-new{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-times-new-roman{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-verdana{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-impact{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-lucida-console{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-tahoma{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-fontname-trebuchet-ms{font-family: bitstream vera sans, dejavu sans, verdana, sans-serif;}.yui-toolbar-container .yui-toolbar-spinbutton{position:relative;}.yui-toolbar-container .yui-toolbar-spinbutton .first-child a{z-index:0;opacity:1;}.yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-toolbar-container .yui-toolbar-spinbutton a.down{position:absolute;display:block right:0;cursor:pointer;z-index:1;padding:0;margin:0;}.yui-toolbar-container .yui-overlay{position:absolute;}.yui-toolbar-container .yui-overlay ul li{margin:0;list-style-type:none;}.yui-toolbar-container{z-index:1;}.yui-editor-container .yui-editor-editable-container{position:relative;z-index:0;width:100%;}.yui-editor-container .yui-editor-masked{background-color:#CCC;height:100%;width:100%;position:absolute;top:0;left:0;opacity:.5;filter:alpha(opacity=50);}.yui-editor-container iframe{border:0;padding:0;margin:0;zoom:1;display:block;}.yui-editor-container .yui-editor-editable{padding:0;margin:0;}.yui-editor-container .dompath{font-size:85%;}.yui-editor-panel .hd{text-align:left;position:relative;}.yui-editor-panel .hd h3{font-weight:bold;padding:.25em 0 .25em .25em;margin:0;}.yui-editor-panel .bd{width:100%;zoom:1;position:relative;}.yui-editor-panel .bd div.yui-editor-body-cont{padding:.25em .1em;zoom:1;}.yui-editor-panel .bd .gecko form{overflow:auto;}.yui-editor-panel .bd div.yui-editor-body-cont:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-editor-panel .ft{text-align:right;width:99%;float:left;clear:both;}.yui-editor-panel .ft span.tip{display:block;position:relative;padding:.5em .5em .5em 23px;text-align:left;zoom:1;}.yui-editor-panel label{clear:both;float:left;padding:0;width:100%;text-align:left;zoom:1;}.yui-editor-panel .gecko label{overflow:auto;}.yui-editor-panel label strong{float:left;width:6em;}.yui-editor-panel .removeLink{width:80%;text-align:right;}.yui-editor-panel label input{margin-left:.25em;float:left;}.yui-editor-panel .yui-toolbar-group{margin-bottom:.75em;}.yui-editor-panel .height-width{float:left;}.yui-editor-panel .height-width span{font-style:italic;display:block;float:left;overflow:visible;}.yui-editor-panel .height-width span.info{font-size:70%;margin-top:3px;}.yui-editor-panel .yui-toolbar-bordersize,.yui-editor-panel .yui-toolbar-bordertype{font-size:75%;}.yui-editor-panel .yui-toolbar-container span.yui-toolbar-separator{border:none;}.yui-editor-panel .yui-toolbar-bordersize span a span,.yui-editor-panel .yui-toolbar-bordertype span a span{display:block;height:8px;left:4px;position:absolute;top:3px;_top:-5px;width:24px;text-indent:52px;font-size:0;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-solid{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dotted{border-bottom:1px dotted black;}.yui-editor-panel .yui-toolbar-bordertype span a span.yui-toolbar-bordertype-dashed{border-bottom:1px dashed black;}
-.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-0{*top:0;text-indent:0;font-size:75%;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-1{border-bottom:1px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-2{border-bottom:2px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-3{top:2px;*top:-5px;border-bottom:3px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-4{top:1px;*top:-5px;border-bottom:4px solid black;}.yui-editor-panel .yui-toolbar-bordersize span a span.yui-toolbar-bordersize-5{top:1px;*top:-5px;border-bottom:5px solid black;}.yui-toolbar-container .yui-toolbar-bordersize-menu,.yui-toolbar-container .yui-toolbar-bordertype-menu{width:95px!important;}.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel,.yui-toolbar-bordersize-menu .yuimenuitemlabel,.yui-toolbar-bordertype-menu .yuimenuitemlabel:hover{margin:0 3px 7px 17px;}.yui-toolbar-bordersize-menu .yuimenuitemlabel .checkedindicator,.yui-toolbar-bordertype-menu .yuimenuitemlabel .checkedindicator{position:absolute;left:-12px;*top:14px;*left:0;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-1 a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-2 a{border-bottom:2px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-3 a{border-bottom:3px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-4 a{border-bottom:4px solid black;height:14px;}.yui-toolbar-bordersize-menu li.yui-toolbar-bordersize-5 a{border-bottom:5px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-solid a{border-bottom:1px solid black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dashed a{border-bottom:1px dashed black;height:14px;}.yui-toolbar-bordertype-menu li.yui-toolbar-bordertype-dotted a{border-bottom:1px dotted black;height:14px;}h2.yui-editor-skipheader,h3.yui-editor-skipheader{height:0;margin:0;padding:0;border:none;width:0;overflow:hidden;position:absolute;}.yui-toolbar-colors{width:133px;zoom:1;display:none;z-index:100;overflow:hidden;}.yui-toolbar-colors:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors a{height:9px;width:9px;float:left;display:block;overflow:hidden;text-indent:999px;margin:0;cursor:pointer;border:1px solid #F6F7EE;}.yui-toolbar-colors a:hover{border:1px solid black;}.yui-color-button-menu{overflow:visible;background-color:transparent;}.yui-toolbar-colors span{position:relative;display:block;padding:3px;overflow:hidden;float:left;width:100%;zoom:1;}.yui-toolbar-colors span:after{display:block;clear:both;visibility:hidden;content:'.';height:0;}.yui-toolbar-colors span em{height:35px;width:30px;float:left;display:block;overflow:hidden;text-indent:999px;margin:.75px;border:1px solid black;}.yui-toolbar-colors span strong{font-weight:normal;padding-left:3px;display:block;font-size:85%;float:left;width:65%;}.yui-toolbar-group-undoredo h3,.yui-toolbar-group-insertitem h3,.yui-toolbar-group-indentlist h3{width:68px;}.yui-toolbar-group-indentlist2 h3{width:122px;}.yui-toolbar-group-alignment h3{width:130px;}.yui-skin-sam .yui-editor-container{border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container{zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar{background:url(sprite.png) repeat-x 0 -200px;position:relative;}.yui-skin-sam .yui-editor-container .draggable .yui-toolbar-titlebar{cursor:move;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar h2{color:#000;font-weight:bold;margin:0;padding:.3em 1em;font-size:100%;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-group h3{color:#808080;font-size:75%;margin:1em 0 0;padding-bottom:0;padding-left:.25em;text-align:left;}.yui-toolbar-container span.yui-toolbar-separator{border:none;text-indent:33px;overflow:hidden;margin:0 .25em;}.yui-skin-sam .yui-toolbar-container{background-color:#F2F2F2;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subcont{padding:0 1em .35em;border-bottom:1px solid #808080;}.yui-skin-sam .yui-toolbar-container-collapsed .yui-toolbar-titlebar{border-bottom:1px solid #808080;}.yui-skin-sam .yui-editor-container .visible .yui-menu-shadow,.yui-skin-sam .yui-editor-panel .visible .yui-menu-shadow{display:none;}.yui-skin-sam .yui-editor-container ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-container ul li{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-toolbar-group ul li.yui-toolbar-groupitem{float:left;}.yui-skin-sam .yui-editor-container .dompath{background-color:#F2F2F2;border-top:1px solid #808080;color:#999;text-align:left;padding:.25em;}.yui-skin-sam .yui-toolbar-container .collapse{background:url(sprite.png) no-repeat 0 -400px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-titlebar span.collapse{cursor:pointer;position:absolute;top:4px;right:2px;display:block;overflow:hidden;height:15px;width:15px;text-indent:9999px;}.yui-skin-sam .yui-toolbar-container .yui-push-button,.yui-skin-sam .yui-toolbar-container .yui-color-button,.yui-skin-sam .yui-toolbar-container .yui-menu-button{background:url(sprite.png) repeat-x 0 0;position:relative;display:block;height:22px;width:30px;_font-size:0;margin:0;border-color:#808080;color:#f2f2f2;border-style:solid;border-width:1px 0;zoom:1;}.yui-skin-sam .yui-toolbar-container .yui-push-button a,.yui-skin-sam .yui-toolbar-container .yui-color-button a,.yui-skin-sam .yui-toolbar-container .yui-menu-button a{padding-left:35px;height:20px;text-decoration:none;font-size:0;line-height:2;display:block;color:#000;overflow:hidden;white-space:nowrap;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a,.yui-skin-sam .yui-toolbar-container .yui-toolbar-select a{font-size:12px;}
-.yui-skin-sam .yui-toolbar-container .yui-push-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button .first-child{border-color:#808080;border-style:solid;border-width:0 1px;margin:0 -1px;display:block;position:relative;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled .first-child,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled a,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled a{color:#A6A6A6;cursor:default;}.yui-skin-sam .yui-toolbar-container .yui-push-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-color-button-disabled,.yui-skin-sam .yui-toolbar-container .yui-menu-button-disabled{border-color:#ccc;}.yui-skin-sam .yui-toolbar-container .yui-button .first-child{*left:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-fontname{width:135px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-heading{width:92px;}.yui-skin-sam .yui-toolbar-container .yui-button-hover{background:url(sprite.png) repeat-x 0 -1300px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-button-selected{background:url(sprite.png) repeat-x 0 -1700px;border-color:#808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels h3{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-nogrouplabels .yui-toolbar-group{margin-top:.75em;}.yui-skin-sam .yui-toolbar-container .yui-push-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-color-button span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-menu-button span.yui-toolbar-icon{display:block;position:absolute;top:2px;height:18px;width:18px;overflow:hidden;background:url(editor-sprite.gif) no-repeat 30px 30px;}.yui-skin-sam .yui-toolbar-container .yui-button-selected span.yui-toolbar-icon,.yui-skin-sam .yui-toolbar-container .yui-button-hover span.yui-toolbar-icon{background-image:url(editor-sprite-active.gif);}.yui-skin-sam .yui-toolbar-container .visible .yuimenuitemlabel{cursor:pointer;color:#000;*position:relative;}.yui-skin-sam .yui-toolbar-container .yui-button-menu{background-color:#fff;}.yui-skin-sam .yui-toolbar-container .yui-button-menu .yui-menu-body-scrolled{position:relative;}.yui-skin-sam div.yuimenu li.selected{background-color:#B3D4FF;}.yui-skin-sam div.yuimenu li.selected a.selected{color:#000;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bold span.yui-toolbar-icon{background-position:0 0;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-strikethrough span.yui-toolbar-icon{background-position:0 -108px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-italic span.yui-toolbar-icon{background-position:0 -36px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-undo span.yui-toolbar-icon{background-position:0 -1326px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-redo span.yui-toolbar-icon{background-position:0 -1355px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-underline span.yui-toolbar-icon{background-position:0 -72px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-subscript span.yui-toolbar-icon{background-position:0 -180px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-superscript span.yui-toolbar-icon{background-position:0 -144px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-forecolor span.yui-toolbar-icon{background-position:0 -216px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-backcolor span.yui-toolbar-icon{background-position:0 -288px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyleft span.yui-toolbar-icon{background-position:0 -324px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifycenter span.yui-toolbar-icon{background-position:0 -360px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyright span.yui-toolbar-icon{background-position:0 -396px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-justifyfull span.yui-toolbar-icon{background-position:0 -432px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-indent span.yui-toolbar-icon{background-position:0 -720px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-outdent span.yui-toolbar-icon{background-position:0 -684px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-createlink span.yui-toolbar-icon{background-position:0 -792px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertimage span.yui-toolbar-icon{background-position:1px -756px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-left span.yui-toolbar-icon{background-position:0 -972px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-right span.yui-toolbar-icon{background-position:0 -936px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-inline span.yui-toolbar-icon{background-position:0 -900px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-block span.yui-toolbar-icon{background-position:0 -864px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-bordercolor span.yui-toolbar-icon{background-position:0 -252px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-removeformat span.yui-toolbar-icon{background-position:0 -1080px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-hiddenelements span.yui-toolbar-icon{background-position:0 -1044px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertunorderedlist span.yui-toolbar-icon{background-position:0 -468px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-insertorderedlist span.yui-toolbar-icon{background-position:0 -504px;left:5px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child{width:35px;}
-.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton .first-child a{padding-left:2px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton span.yui-toolbar-icon{display:none;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up,.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{right:2px;background:url(editor-sprite.gif) no-repeat 0 -1222px;overflow:hidden;height:6px;width:7px;min-height:0;padding:0;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.up{top:2px;background-position:0 -1222px;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-spinbutton a.down{bottom:2px;background-position:0 -1187px;}.yui-skin-sam .yui-toolbar-container select{height:22px;border:1px solid #808080;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select .first-child a{padding-left:5px;text-align:left;}.yui-skin-sam .yui-toolbar-container .yui-toolbar-select span.yui-toolbar-icon{background:url(editor-sprite.gif) no-repeat 0 -1144px;overflow:hidden;right:-2px;top:0;height:20px;}.yui-skin-sam .yui-editor-panel .yui-color-button-menu .bd{background-color:transparent;border:none;width:135px;}.yui-skin-sam .yui-color-button-menu .yui-toolbar-colors{border:1px solid #808080;}.yui-skin-sam .yui-editor-panel{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;position:absolute;}.yui-skin-sam .yui-editor-panel .hd{margin:10px 0 0;padding:0;border:none;}.yui-skin-sam .yui-editor-panel .hd h3{color:#000;border:1px solid #808080;background:url(sprite.png) repeat-x 0 -200px;width:99%;position:relative;margin:0;padding:3px 0 0 0;font-size:93%;text-indent:5px;height:20px;}.yui-skin-sam .yui-editor-panel .bd{background-color:#F2F2F2;border-left:1px solid #808080;border-right:1px solid #808080;width:99%;margin:0;padding:0;overflow:visible;}.yui-skin-sam .yui-editor-panel ul{list-style-type:none;margin:0;padding:0;}.yui-skin-sam .yui-editor-panel ul li{margin:0;padding:0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .yui-toolbar-subcont{padding:0;border:none;margin-top:.35em;}.yui-skin-sam .yui-editor-panel .yui-toolbar-bordersize,.yui-skin-sam .yui-editor-panel .yui-toolbar-bordertype{width:50px;}.yui-skin-sam .yui-editor-panel label{display:block;float:none;padding:4px 0;margin-bottom:7px;}.yui-skin-sam .yui-editor-panel label strong{font-weight:normal;font-size:93%;text-align:right;padding-top:2px;}.yui-skin-sam .yui-editor-panel label input{width:75%;}.yui-skin-sam .yui-editor-panel .createlink_target,.yui-skin-sam .yui-editor-panel .insertimage_target{width:auto;margin-right:5px;}.yui-skin-sam .yui-editor-panel .removeLink{width:98%;}.yui-skin-sam .yui-editor-panel label input.warning{background-color:#FFEE69;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group h3{color:#000;float:left;font-weight:normal;font-size:93%;margin:5px 0 0 0;padding:0 3px 0 0;text-align:right;}.yui-skin-sam .yui-editor-panel .height-width h3{margin:3px 0 0 10px;}.yui-skin-sam .yui-editor-panel .height-width{margin:3px 0 0 35px;*margin-left:14px;width:42%;*width:44%;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-border{width:190px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-border{width:210px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding{width:203px;_width:198px;}.yui-skin-sam .yui-editor-panel .no-button .yui-toolbar-group-padding{width:172px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-padding h3{margin-left:25px;*margin-left:12px;}.yui-skin-sam .yui-editor-panel .yui-toolbar-group-textflow{width:182px;}.yui-skin-sam .yui-editor-panel .hd{background:none;}.yui-skin-sam .yui-editor-panel .ft{background-color:#F2F2F2;border:1px solid #808080;border-top:none;padding:0;margin:0 0 2px 0;}.yui-skin-sam .yui-editor-panel .hd span.close{background:url(sprite.png) no-repeat 0 -300px;cursor:pointer;display:block;height:16px;overflow:hidden;position:absolute;right:5px;text-indent:500px;top:2px;width:26px;}.yui-skin-sam .yui-editor-panel .ft span.tip{background-color:#EDF5FF;border-top:1px solid #808080;font-size:85%;}.yui-skin-sam .yui-editor-panel .ft span.tip strong{display:block;float:left;margin:0 2px 8px 0;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon{background:url(editor-sprite.gif) no-repeat 0 -1260px;display:block;height:20px;left:2px;position:absolute;top:8px;width:20px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-info{background-position:2px -1260px;}.yui-skin-sam .yui-editor-panel .ft span.tip span.icon-warn{background-position:2px -1296px;}.yui-skin-sam .yui-editor-panel .hd span.knob{position:absolute;height:10px;width:28px;top:-10px;left:25px;text-indent:9999px;overflow:hidden;background:url(editor-knob.gif) no-repeat 0 0;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container{float:left;width:100%;background-image:none;border:none;}.yui-skin-sam .yui-editor-panel .yui-toolbar-container .bd{background-color:#fff;}.yui-editor-blankimage{background-image:url(blankimage.png);}.yui-skin-sam .yui-editor-container .yui-resize-handle-br{height:11px;width:11px;background-position:-20px -60px;background-color:transparent;}
-.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}
-.yui-navset .yui-nav li,.yui-navset .yui-navset-top .yui-nav li,.yui-navset .yui-navset-bottom .yui-nav li{margin:0 .5em 0 0;}.yui-navset-left .yui-nav li,.yui-navset-right .yui-nav li{margin:0 0 .5em;}.yui-navset .yui-content .yui-hidden{position:absolute;left:-999999px;visibility:hidden;}.yui-navset .yui-navset-left .yui-nav,.yui-navset .yui-navset-right .yui-nav,.yui-navset-left .yui-nav,.yui-navset-right .yui-nav{width:6em;}.yui-navset-top .yui-nav,.yui-navset-bottom .yui-nav{width:auto;}.yui-navset .yui-navset-left,.yui-navset-left{padding:0 0 0 6em;}.yui-navset-right{padding:0 6em 0 0;}.yui-navset-top,.yui-navset-bottom{padding:auto;}.yui-nav,.yui-nav li{margin:0;padding:0;list-style:none;}.yui-navset li em{font-style:normal;}.yui-navset{position:relative;zoom:1;}.yui-navset .yui-content,.yui-navset .yui-content div{zoom:1;}.yui-navset .yui-content:after{content:'';display:block;clear:both;}.yui-navset .yui-nav li,.yui-navset .yui-navset-top .yui-nav li,.yui-navset .yui-navset-bottom .yui-nav li{display:inline-block;display:-moz-inline-stack;*display:inline;vertical-align:bottom;cursor:pointer;zoom:1;}.yui-navset-left .yui-nav li,.yui-navset-right .yui-nav li{display:block;}.yui-navset .yui-nav a{position:relative;}.yui-navset .yui-nav li a,.yui-navset-top .yui-nav li a,.yui-navset-bottom .yui-nav li a{display:block;display:inline-block;vertical-align:bottom;zoom:1;}.yui-navset-left .yui-nav li a,.yui-navset-right .yui-nav li a{display:block;}.yui-navset-bottom .yui-nav li a{vertical-align:text-top;}.yui-navset .yui-nav li a em,.yui-navset-top .yui-nav li a em,.yui-navset-bottom .yui-nav li a em{display:block;}.yui-navset .yui-navset-left .yui-nav,.yui-navset .yui-navset-right .yui-nav,.yui-navset-left .yui-nav,.yui-navset-right .yui-nav{position:absolute;z-index:1;}.yui-navset-top .yui-nav,.yui-navset-bottom .yui-nav{position:static;}.yui-navset .yui-navset-left .yui-nav,.yui-navset-left .yui-nav{left:0;right:auto;}.yui-navset .yui-navset-right .yui-nav,.yui-navset-right .yui-nav{right:0;left:auto;}.yui-skin-sam .yui-navset .yui-nav,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav{border:solid #2647a0;border-width:0 0 5px;zoom:1;}.yui-skin-sam .yui-navset .yui-nav li,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav li{margin:0 .16em 0 0;padding:1px 0 0;zoom:1;}.yui-skin-sam .yui-navset .yui-nav .selected,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav .selected{margin:0 .16em -1px 0;}.yui-skin-sam .yui-navset .yui-nav a,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav a{background:#d8d8d8 url(sprite.png) repeat-x;border:solid #a3a3a3;border-width:0 1px;color:#000;position:relative;text-decoration:none;}.yui-skin-sam .yui-navset .yui-nav a em,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav a em{border:solid #a3a3a3;border-width:1px 0 0;cursor:hand;padding:.25em .75em;left:0;right:0;bottom:0;top:-1px;position:relative;}.yui-skin-sam .yui-navset .yui-nav .selected a,.yui-skin-sam .yui-navset .yui-nav .selected a:focus,.yui-skin-sam .yui-navset .yui-nav .selected a:hover{background:#2647a0 url(sprite.png) repeat-x left -1400px;color:#fff;}.yui-skin-sam .yui-navset .yui-nav a:hover,.yui-skin-sam .yui-navset .yui-nav a:focus{background:#bfdaff url(sprite.png) repeat-x left -1300px;outline:0;}.yui-skin-sam .yui-navset .yui-nav .selected a em{padding:.35em .75em;}.yui-skin-sam .yui-navset .yui-nav .selected a,.yui-skin-sam .yui-navset .yui-nav .selected a em{border-color:#243356;}.yui-skin-sam .yui-navset .yui-content{background:#edf5ff;}.yui-skin-sam .yui-navset .yui-content,.yui-skin-sam .yui-navset .yui-navset-top .yui-content{border:1px solid #808080;border-top-color:#243356;padding:.25em .5em;}.yui-skin-sam .yui-navset-left .yui-nav,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav,.yui-skin-sam .yui-navset .yui-navset-right .yui-nav,.yui-skin-sam .yui-navset-right .yui-nav{border-width:0 5px 0 0;Xposition:absolute;top:0;bottom:0;}.yui-skin-sam .yui-navset .yui-navset-right .yui-nav,.yui-skin-sam .yui-navset-right .yui-nav{border-width:0 0 0 5px;}.yui-skin-sam .yui-navset-left .yui-nav li,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav li,.yui-skin-sam .yui-navset-right .yui-nav li{margin:0 0 .16em;padding:0 0 0 1px;}.yui-skin-sam .yui-navset-right .yui-nav li{padding:0 1px 0 0;}.yui-skin-sam .yui-navset-left .yui-nav .selected,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav .selected{margin:0 -1px .16em 0;}.yui-skin-sam .yui-navset-right .yui-nav .selected{margin:0 0 .16em -1px;}.yui-skin-sam .yui-navset-left .yui-nav a,.yui-skin-sam .yui-navset-right .yui-nav a{border-width:1px 0;}.yui-skin-sam .yui-navset-left .yui-nav a em,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav a em,.yui-skin-sam .yui-navset-right .yui-nav a em{border-width:0 0 0 1px;padding:.2em .75em;top:auto;left:-1px;}.yui-skin-sam .yui-navset-right .yui-nav a em{border-width:0 1px 0 0;left:auto;right:-1px;}.yui-skin-sam .yui-navset-left .yui-nav a,.yui-skin-sam .yui-navset-left .yui-nav .selected a,.yui-skin-sam .yui-navset-left .yui-nav a:hover,.yui-skin-sam .yui-navset-right .yui-nav a,.yui-skin-sam .yui-navset-right .yui-nav .selected a,.yui-skin-sam .yui-navset-right .yui-nav a:hover,.yui-skin-sam .yui-navset-bottom .yui-nav a,.yui-skin-sam .yui-navset-bottom .yui-nav .selected a,.yui-skin-sam .yui-navset-bottom .yui-nav a:hover{background-image:none;}.yui-skin-sam .yui-navset-left .yui-content{border:1px solid #808080;border-left-color:#243356;}.yui-skin-sam .yui-navset-bottom .yui-nav,.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav{border-width:5px 0 0;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav .selected,.yui-skin-sam .yui-navset-bottom .yui-nav .selected{margin:-1px .16em 0 0;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav li,.yui-skin-sam .yui-navset-bottom .yui-nav li{padding:0 0 1px 0;vertical-align:top;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav a em,.yui-skin-sam .yui-navset-bottom .yui-nav a em{border-width:0 0 1px;top:auto;bottom:-1px;}
-.yui-skin-sam .yui-navset-bottom .yui-content,.yui-skin-sam .yui-navset .yui-navset-bottom .yui-content{border:1px solid #808080;border-bottom-color:#243356;}
-.ygtvitem{}.ygtvitem table{margin-bottom:0;border:none;}.ygtvrow td{border:none;padding:0;}.ygtvrow td a{text-decoration:none;}.ygtvtn{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -5600px no-repeat;}.ygtvtm{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -4000px no-repeat;}.ygtvtmh,.ygtvtmhh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -4800px no-repeat;}.ygtvtp{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -6400px no-repeat;}.ygtvtph,.ygtvtphh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -7200px no-repeat;}.ygtvln{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -1600px no-repeat;}.ygtvlm{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 0px no-repeat;}.ygtvlmh,.ygtvlmhh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -800px no-repeat;}.ygtvlp{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -2400px no-repeat;}.ygtvlph,.ygtvlphh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -3200px no-repeat;}.ygtvloading{width:18px;height:22px;background:url(treeview-loading.gif) 0 0 no-repeat;}.ygtvdepthcell{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8000px no-repeat;}.ygtvblankdepthcell{width:18px;height:22px;}.ygtvchildren{}* html .ygtvchildren{height:2%;}.ygtvlabel,.ygtvlabel:link,.ygtvlabel:visited,.ygtvlabel:hover{margin-left:2px;text-decoration:none;background-color:white;cursor:pointer;}.ygtvcontent{cursor:default;}.ygtvspacer{height:22px;width:12px;}.ygtvfocus{background-color:#c0e0e0;border:none;}.ygtvfocus .ygtvlabel,.ygtvfocus .ygtvlabel:link,.ygtvfocus .ygtvlabel:visited,.ygtvfocus .ygtvlabel:hover{background-color:#c0e0e0;}.ygtvfocus a,.ygtvrow td a{outline-style:none;}.ygtvok{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8800px no-repeat;}.ygtvok:hover{background:url(treeview-sprite.gif) 0 -8844px no-repeat;}.ygtvcancel{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8822px no-repeat;}.ygtvcancel:hover{background:url(treeview-sprite.gif) 0 -8866px no-repeat;}.ygtv-label-editor{background-color:#f2f2f2;border:1px solid silver;position:absolute;display:none;overflow:hidden;margin:auto;z-index:9000;}.ygtv-edit-TextNode{width:190px;}.ygtv-edit-TextNode .ygtvcancel,.ygtv-edit-TextNode .ygtvok{border:none;}.ygtv-edit-TextNode .ygtv-button-container{float:right;}.ygtv-edit-TextNode .ygtv-input input{width:140px;}.ygtv-edit-DateNode .ygtvcancel{border:none;}.ygtv-edit-DateNode .ygtvok{display:none;}.ygtv-edit-DateNode .ygtv-button-container{text-align:right;margin:auto;}
-
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/slider.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/slider.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/slider.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-active.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-active.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-active.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-disabled.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-disabled.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-disabled.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-focus.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-focus.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-focus.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-hover.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-hover.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow-hover.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/split-button-arrow.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.psd'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.psd 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/sprite.psd 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/tabview.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/tabview.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/tabview.css 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-navset .yui-nav li,.yui-navset .yui-navset-top .yui-nav li,.yui-navset .yui-navset-bottom .yui-nav li{margin:0 .5em 0 0;}.yui-navset-left .yui-nav li,.yui-navset-right .yui-nav li{margin:0 0 .5em;}.yui-navset .yui-content .yui-hidden{position:absolute;left:-999999px;visibility:hidden;}.yui-navset .yui-navset-left .yui-nav,.yui-navset .yui-navset-right .yui-nav,.yui-navset-left .yui-nav,.yui-navset-right .yui-nav{width:6em;}.yui-navset-top .yui-nav,.yui-navset-bottom .yui-nav{width:auto;}.yui-navset .yui-navset-left,.yui-navset-left{padding:0 0 0 6em;}.yui-navset-right{padding:0 6em 0 0;}.yui-navset-top,.yui-navset-bottom{padding:auto;}.yui-nav,.yui-nav li{margin:0;padding:0;list-style:none;}.yui-navset li em{font-style:normal;}.yui-navset{position:relative;zoom:1;}.yui-navset .yui-content,.yui-navset .yui-content div{zoom:1;}.yui-navset .yui-content:after{content:'';display:block;clear:both;}.yui-navset .yui-nav li,.yui-navset .yui-navset-top .yui-nav li,.yui-navset .yui-navset-bottom .yui-nav li{display:inline-block;display:-moz-inline-stack;*display:inline;vertical-align:bottom;cursor:pointer;zoom:1;}.yui-navset-left .yui-nav li,.yui-navset-right .yui-nav li{display:block;}.yui-navset .yui-nav a{position:relative;}.yui-navset .yui-nav li a,.yui-navset-top .yui-nav li a,.yui-navset-bottom .yui-nav li a{display:block;display:inline-block;vertical-align:bottom;zoom:1;}.yui-navset-left .yui-nav li a,.yui-navset-right .yui-nav li a{display:block;}.yui-navset-bottom .yui-nav li a{vertical-align:text-top;}.yui-navset .yui-nav li a em,.yui-navset-top .yui-nav li a em,.yui-navset-bottom .yui-nav li a em{display:block;}.yui-navset .yui-navset-left .yui-nav,.yui-navset .yui-navset-right .yui-nav,.yui-navset-left .yui-nav,.yui-navset-right .yui-nav{position:absolute;z-index:1;}.yui-navset-top .yui-nav,.yui-navset-bottom .yui-nav{position:static;}.yui-navset .yui-navset-left .yui-nav,.yui-navset-left .yui-nav{left:0;right:auto;}.yui-navset .yui-navset-right .yui-nav,.yui-navset-right .yui-nav{right:0;left:auto;}.yui-skin-sam .yui-navset .yui-nav,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav{border:solid #2647a0;border-width:0 0 5px;zoom:1;}.yui-skin-sam .yui-navset .yui-nav li,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav li{margin:0 .16em 0 0;padding:1px 0 0;zoom:1;}.yui-skin-sam .yui-navset .yui-nav .selected,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav .selected{margin:0 .16em -1px 0;}.yui-skin-sam .yui-navset .yui-nav a,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav a{background:#d8d8d8 url(sprite.png) repeat-x;border:solid #a3a3a3;border-width:0 1px;color:#000;position:relative;text-decoration:none;}.yui-skin-sam .yui-navset .yui-nav a em,.yui-skin-sam .yui-navset .yui-navset-top .yui-nav a em{border:solid #a3a3a3;border-width:1px 0 0;cursor:hand;padding:.25em .75em;left:0;right:0;bottom:0;top:-1px;position:relative;}.yui-skin-sam .yui-navset .yui-nav .selected a,.yui-skin-sam .yui-navset .yui-nav .selected a:focus,.yui-skin-sam .yui-navset .yui-nav .selected a:hover{background:#2647a0 url(sprite.png) repeat-x left -1400px;color:#fff;}.yui-skin-sam .yui-navset .yui-nav a:hover,.yui-skin-sam .yui-navset .yui-nav a:focus{background:#bfdaff url(sprite.png) repeat-x left -1300px;outline:0;}.yui-skin-sam .yui-navset .yui-nav .selected a em{padding:.35em .75em;}.yui-skin-sam .yui-navset .yui-nav .selected a,.yui-skin-sam .yui-navset .yui-nav .selected a em{border-color:#243356;}.yui-skin-sam .yui-navset .yui-content{background:#edf5ff;}.yui-skin-sam .yui-navset .yui-content,.yui-skin-sam .yui-navset .yui-navset-top .yui-content{border:1px solid #808080;border-top-color:#243356;padding:.25em .5em;}.yui-skin-sam .yui-navset-left .yui-nav,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav,.yui-skin-sam .yui-navset .yui-navset-right .yui-nav,.yui-skin-sam .yui-navset-right .yui-nav{border-width:0 5px 0 0;Xposition:absolute;top:0;bottom:0;}.yui-skin-sam .yui-navset .yui-navset-right .yui-nav,.yui-skin-sam .yui-navset-right .yui-nav{border-width:0 0 0 5px;}.yui-skin-sam .yui-navset-left .yui-nav li,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav li,.yui-skin-sam .yui-navset-right .yui-nav li{margin:0 0 .16em;padding:0 0 0 1px;}.yui-skin-sam .yui-navset-right .yui-nav li{padding:0 1px 0 0;}.yui-skin-sam .yui-navset-left .yui-nav .selected,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav .selected{margin:0 -1px .16em 0;}.yui-skin-sam .yui-navset-right .yui-nav .selected{margin:0 0 .16em -1px;}.yui-skin-sam .yui-navset-left .yui-nav a,.yui-skin-sam .yui-navset-right .yui-nav a{border-width:1px 0;}.yui-skin-sam .yui-navset-left .yui-nav a em,.yui-skin-sam .yui-navset .yui-navset-left .yui-nav a em,.yui-skin-sam .yui-navset-right .yui-nav a em{border-width:0 0 0 1px;padding:.2em .75em;top:auto;left:-1px;}.yui-skin-sam .yui-navset-right .yui-nav a em{border-width:0 1px 0 0;left:auto;right:-1px;}.yui-skin-sam .yui-navset-left .yui-nav a,.yui-skin-sam .yui-navset-left .yui-nav .selected a,.yui-skin-sam .yui-navset-left .yui-nav a:hover,.yui-skin-sam .yui-navset-right .yui-nav a,.yui-skin-sam .yui-navset-right .yui-nav .selected a,.yui-skin-sam .yui-navset-right .yui-nav a:hover,.yui-skin-sam .yui-navset-bottom .yui-nav a,.yui-skin-sam .yui-navset-bottom .yui-nav .selected a,.yui-skin-sam .yui-navset-bottom .yui-nav a:hover{background-image:none;}.yui-skin-sam .yui-navset-left .yui-content{border:1px solid #808080;border-left-color:#243356;}.yui-skin-sam .yui-navset-bottom .yui-nav,.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav{border-width:5px 0 0;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav .selected,.yui-skin-sam .yui-navset-bottom .yui-nav .selected{margin:-1px .16em 0 0;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav li,.yui-skin-sam .yui-navset-bottom .yui-nav li{padding:0 0 1px 0;vertical-align:top;}.yui-skin-sam .yui-navset .yui-navset-bottom .yui-nav a em,.yui-skin-sam .yui-navset-bottom .yui-nav a em{border-width:0 0 1px;top:auto;bottom:-1px;}
-.yui-skin-sam .yui-navset-bottom .yui-content,.yui-skin-sam .yui-navset .yui-navset-bottom .yui-content{border:1px solid #808080;border-bottom-color:#243356;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-loading.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-loading.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-loading.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-sprite.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-sprite.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview-sprite.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/treeview.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.ygtvitem{}.ygtvitem table{margin-bottom:0;border:none;}.ygtvrow td{border:none;padding:0;}.ygtvrow td a{text-decoration:none;}.ygtvtn{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -5600px no-repeat;}.ygtvtm{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -4000px no-repeat;}.ygtvtmh,.ygtvtmhh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -4800px no-repeat;}.ygtvtp{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -6400px no-repeat;}.ygtvtph,.ygtvtphh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -7200px no-repeat;}.ygtvln{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -1600px no-repeat;}.ygtvlm{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 0px no-repeat;}.ygtvlmh,.ygtvlmhh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -800px no-repeat;}.ygtvlp{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -2400px no-repeat;}.ygtvlph,.ygtvlphh{width:18px;height:22px;cursor:pointer;background:url(treeview-sprite.gif) 0 -3200px no-repeat;}.ygtvloading{width:18px;height:22px;background:url(treeview-loading.gif) 0 0 no-repeat;}.ygtvdepthcell{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8000px no-repeat;}.ygtvblankdepthcell{width:18px;height:22px;}.ygtvchildren{}* html .ygtvchildren{height:2%;}.ygtvlabel,.ygtvlabel:link,.ygtvlabel:visited,.ygtvlabel:hover{margin-left:2px;text-decoration:none;background-color:white;cursor:pointer;}.ygtvcontent{cursor:default;}.ygtvspacer{height:22px;width:12px;}.ygtvfocus{background-color:#c0e0e0;border:none;}.ygtvfocus .ygtvlabel,.ygtvfocus .ygtvlabel:link,.ygtvfocus .ygtvlabel:visited,.ygtvfocus .ygtvlabel:hover{background-color:#c0e0e0;}.ygtvfocus a,.ygtvrow td a{outline-style:none;}.ygtvok{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8800px no-repeat;}.ygtvok:hover{background:url(treeview-sprite.gif) 0 -8844px no-repeat;}.ygtvcancel{width:18px;height:22px;background:url(treeview-sprite.gif) 0 -8822px no-repeat;}.ygtvcancel:hover{background:url(treeview-sprite.gif) 0 -8866px no-repeat;}.ygtv-label-editor{background-color:#f2f2f2;border:1px solid silver;position:absolute;display:none;overflow:hidden;margin:auto;z-index:9000;}.ygtv-edit-TextNode{width:190px;}.ygtv-edit-TextNode .ygtvcancel,.ygtv-edit-TextNode .ygtvok{border:none;}.ygtv-edit-TextNode .ygtv-button-container{float:right;}.ygtv-edit-TextNode .ygtv-input input{width:140px;}.ygtv-edit-DateNode .ygtvcancel{border:none;}.ygtv-edit-DateNode .ygtvok{display:none;}.ygtv-edit-DateNode .ygtv-button-container{text-align:right;margin:auto;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/wait.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/wait.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/wait.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/yuitest.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/yuitest.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/yuitest.css 1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets'
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar-core.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar-core.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar-core.css 1970-01-01 00:00:00 +0000
@@ -1,132 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-/**
- * CORE
- *
- * This is the set of CSS rules required by Calendar to drive core functionality and structure.
- * Changes to these rules may result in the Calendar not functioning or rendering correctly.
- *
- * They should not be modified for skinning.
- **/
-
-/* CALENDAR BOUNDING BOX */
-.yui-calcontainer {
- position:relative;
- float:left;
- _overflow:hidden; /* IE6 only, to clip iframe shim */
-}
-
-/* IFRAME SHIM */
-.yui-calcontainer iframe {
- position:absolute;
- border:none;
- margin:0;padding:0;
- z-index:0;
- width:100%;
- height:100%;
- left:0px;
- top:0px;
-}
-
-/* IFRAME SHIM IE6 only */
-.yui-calcontainer iframe.fixedsize {
- width:50em;
- height:50em;
- top:-1px;
- left:-1px;
-}
-
-/* BOUNDING BOX FOR EACH CALENDAR GROUP PAGE */
-.yui-calcontainer.multi .groupcal {
- z-index:1;
- float:left;
- position:relative;
-}
-
-/* TITLE BAR */
-.yui-calcontainer .title {
- position:relative;
- z-index:1;
-}
-
-/* CLOSE ICON CONTAINER */
-.yui-calcontainer .close-icon {
- position:absolute;
- z-index:1;
- text-indent:-10000em;
- overflow:hidden;
-}
-
-/* CALENDAR TABLE */
-.yui-calendar {
- position:relative;
-}
-
-/* NAVBAR LEFT ARROW CONTAINER */
-.yui-calendar .calnavleft {
- position:absolute;
- z-index:1;
- text-indent:-10000em;
- overflow:hidden;
-}
-
-/* NAVBAR RIGHT ARROW CONTAINER */
-.yui-calendar .calnavright {
- position:absolute;
- z-index:1;
- text-indent:-10000em;
- overflow:hidden;
-}
-
-/* NAVBAR TEXT CONTAINER */
-.yui-calendar .calheader {
- position:relative;
- width:100%;
- text-align:center;
-}
-
-/* CalendarNavigator */
-.yui-calcontainer .yui-cal-nav-mask {
- position:absolute;
- z-index:2;
- margin:0;
- padding:0;
- width:100%;
- height:100%;
- _width:0; /* IE6, IE7 quirks - width/height set programmatically to match container */
- _height:0;
- left:0;
- top:0;
- display:none;
-}
-
-/* NAVIGATOR BOUNDING BOX */
-.yui-calcontainer .yui-cal-nav {
- position:absolute;
- z-index:3;
- top:0;
- display:none;
-}
-
-/* NAVIGATOR BUTTONS (based on button-core.css) */
-.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn {
- display: -moz-inline-box; /* Gecko */
- display: inline-block; /* IE, Opera and Safari */
-}
-
-.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button {
- display: block;
- *display: inline-block; /* IE */
- *overflow: visible; /* Remove superfluous padding for IE */
- border: none;
- background-color: transparent;
- cursor: pointer;
-}
-
-/* Specific changes for calendar running under fonts/reset */
-.yui-calendar .calbody a:hover {background:inherit;}
-p#clear {clear:left; padding-top:10px;}
\ No newline at end of file
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar.css 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calendar.css 1970-01-01 00:00:00 +0000
@@ -1,320 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-calcontainer {
- position:relative;
- padding:5px;
- background-color:#F7F9FB;
- border:1px solid #7B9EBD;
- float:left;
- _overflow:hidden; /* IE6 only, to clip iframe shim */
-}
-
-.yui-calcontainer iframe {
- position:absolute;
- border:none;
- margin:0;padding:0;
- z-index:0;
- width:100%;
- height:100%;
- left:0px;
- top:0px;
-}
-
-/* IE6 only */
-.yui-calcontainer iframe.fixedsize {
- width:50em;
- height:50em;
- top:-1px;
- left:-1px;
-}
-
-.yui-calcontainer.multi {
- padding:0;
-}
-
-.yui-calcontainer.multi .groupcal {
- padding:5px;
- background-color:transparent;
- z-index:1;
- float:left;
- position:relative;
- border:none;
-}
-
-.yui-calcontainer .title {
- font:100% sans-serif;
- color:#000;
- font-weight:bold;
- margin-bottom:5px;
- height:25px;
- position:absolute;
- top:3px;left:5px;
- z-index:1;
-}
-
-.yui-calcontainer .close-icon {
- position:absolute;
- overflow:hidden;
- text-indent:-10000em;
- right:3px;
- top:3px;
- border:none;
- z-index:1;
-}
-
-.yui-calcontainer .calclose {
- background: url("calx.gif") no-repeat;
- width:17px;
- height:13px;
- cursor:pointer;
-}
-
-/* Calendar element styles */
-
-.yui-calendar {
- font:100% sans-serif;
- text-align:center;
- border-spacing:0;
- border-collapse:separate;
- position:relative;
-}
-
-.yui-calcontainer.withtitle {
- padding-top:1.5em;
-}
-
-.yui-calendar .calnavleft {
- position:absolute;
- overflow:hidden;
- text-indent:-10000em;
- cursor:pointer;
- top:2px;
- bottom:0;
- width:9px;
- height:12px;
- left:2px;
- z-index:1;
- background: url("callt.gif") no-repeat;
-}
-
-.yui-calendar .calnavright {
- position:absolute;
- overflow:hidden;
- text-indent:-10000em;
- cursor:pointer;
- top:2px;
- bottom:0;
- width:9px;
- height:12px;
- right:2px;
- z-index:1;
- background: url("calrt.gif") no-repeat;
-}
-
-.yui-calendar td.calcell {
- padding:.1em .2em;
- border:1px solid #E0E0E0;
- text-align:center;
-}
-
-.yui-calendar td.calcell a {
- color:#003DB8;
- text-decoration:none;
-}
-
-.yui-calendar td.calcell.today {
- border:1px solid #000;
-}
-
-.yui-calendar td.calcell.oom {
- cursor:default;
- color:#999;
- background-color:#EEE;
- border:1px solid #E0E0E0;
-}
-
-.yui-calendar td.calcell.selected {
- color:#003DB8;
- background-color:#FFF19F;
- border:1px solid #FF9900;
-}
-
-.yui-calendar td.calcell.calcellhover {
- cursor:pointer;
- color:#FFF;
- background-color:#FF9900;
- border:1px solid #FF9900;
-}
-
-.yui-calendar td.calcell.calcellhover a {
- color:#FFF;
-}
-
-.yui-calendar td.calcell.restricted {
- text-decoration:line-through;
-}
-
-.yui-calendar td.calcell.previous {
- color:#CCC;
-}
-
-.yui-calendar td.calcell.highlight1 { background-color:#CCFF99; }
-.yui-calendar td.calcell.highlight2 { background-color:#99CCFF; }
-.yui-calendar td.calcell.highlight3 { background-color:#FFCCCC; }
-.yui-calendar td.calcell.highlight4 { background-color:#CCFF99; }
-
-.yui-calendar .calhead {
- border:1px solid #E0E0E0;
- vertical-align:middle;
- background-color:#FFF;
-}
-
-.yui-calendar .calheader {
- position:relative;
- width:100%;
- text-align:center;
-}
-
-.yui-calendar .calheader img {
- border:none;
-}
-
-.yui-calendar .calweekdaycell {
- color:#666;
- font-weight:normal;
- text-align:center;
- width:1.5em;
-}
-
-.yui-calendar .calfoot {
- background-color:#EEE;
-}
-
-.yui-calendar .calrowhead, .yui-calendar .calrowfoot {
- color:#666;
- font-size:9px;
- font-style:italic;
- font-weight:normal;
- width:15px;
-}
-
-.yui-calendar .calrowhead {
- border-right-width:2px;
-}
-
-/* CalendarNavigator */
-.yui-calendar a.calnav {
- _position:relative;
- padding-left:2px;
- padding-right:2px;
- text-decoration:none;
- color:#000;
-}
-
-.yui-calendar a.calnav:hover {
- border:1px solid #003366;
- background-color:#6699cc;
- background: url(calgrad.png) repeat-x;
- color:#fff;
- cursor:pointer;
-}
-
-.yui-calcontainer .yui-cal-nav-mask {
- position:absolute;
- z-index:2;
- display:none;
-
- margin:0;
- padding:0;
-
- left:0;
- top:0;
- width:100%;
- height:100%;
- _width:0; /* IE6, IE7 Quirks - width/height set programmatically to match container */
- _height:0;
-
- background-color:#000;
- opacity:0.25;
- *filter:alpha(opacity=25);
-}
-
-.yui-calcontainer .yui-cal-nav {
- position:absolute;
- z-index:3;
- display:none;
-
- padding:0;
- top:1.5em;
- left:50%;
- width:12em;
- margin-left:-6em;
-
- border:1px solid #7B9EBD;
- background-color:#F7F9FB;
- font-size:93%;
-}
-
-.yui-calcontainer.withtitle .yui-cal-nav {
- top:3.5em;
-}
-
-.yui-calcontainer .yui-cal-nav-y,
-.yui-calcontainer .yui-cal-nav-m,
-.yui-calcontainer .yui-cal-nav-b {
- padding:2px 5px 2px 5px;
-}
-
-.yui-calcontainer .yui-cal-nav-b {
- text-align:center;
-}
-
-.yui-calcontainer .yui-cal-nav-e {
- margin-top:2px;
- padding:2px;
- background-color:#EDF5FF;
- border-top:1px solid black;
- display:none;
-}
-
-.yui-calcontainer .yui-cal-nav label {
- display:block;
- font-weight:bold;
-}
-
-.yui-calcontainer .yui-cal-nav-mc {
- width:100%;
- _width:auto; /* IE6 doesn't like width 100% */
-}
-
-.yui-calcontainer .yui-cal-nav-y input.yui-invalid {
- background-color:#FFEE69;
- border: 1px solid #000;
-}
-
-.yui-calcontainer .yui-cal-nav-yc {
- width:3em;
-}
-
-.yui-calcontainer .yui-cal-nav-b button {
- font-size:93%;
- text-decoration:none;
- cursor: pointer;
- background-color: #79b2ea;
- border: 1px solid #003366;
- border-top-color:#FFF;
- border-left-color:#FFF;
- margin:1px;
-}
-
-.yui-calcontainer .yui-cal-nav-b .yui-default button {
- /* not implemented */
-}
-
-/* Specific changes for calendar running under fonts/reset */
-.yui-calendar .calbody a:hover {background:inherit;}
-p#clear {clear:left; padding-top:10px;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calgrad.png'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calgrad.png 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calgrad.png 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/callt.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/callt.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/callt.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calrt.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calrt.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calrt.gif 1970-01-01 00:00:00 +0000 differ
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calx.gif'
Binary files lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calx.gif 2009-05-06 07:53:14 +0000 and lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/calx.gif 1970-01-01 00:00:00 +0000 differ
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins'
=== removed directory 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam'
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar-skin.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar-skin.css 2011-12-07 04:57:36 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar-skin.css 1970-01-01 00:00:00 +0000
@@ -1,361 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-/**
- * SAM
- *
- * Skin colors used:
- *
- * - Control Border : 808080
- * - Control Chrome : f2f2f2
- * - Cell Borders : cccccc
- * - Normal Cell BG : ffffff
- * - Date Links : 0066cc
- * - Selected Cells BG : b3d4ff
- * - Cell Hover BG : 426fd9
- * - Disabled BG : cccccc
- * - Disabled Text Color : a6a6a6
- **/
-
-/* CALENDAR BOUNDING BOX */
-.yui-skin-sam .yui-calcontainer {
- background-color:#f2f2f2;
- border:1px solid #808080;
- padding:10px;
-}
-
-/* CALENDARGROUP BOUNDING BOX */
-.yui-skin-sam .yui-calcontainer.multi {
- padding:0 5px 0 5px;
-}
-
-/* BOUNDING BOX FOR EACH CALENDAR GROUP PAGE */
-.yui-skin-sam .yui-calcontainer.multi .groupcal {
- background-color:transparent;
- border:none;
- padding:10px 5px 10px 5px;
- margin:0;
-}
-
-/* TITLE BAR */
-.yui-skin-sam .yui-calcontainer .title {
- background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;
- border-bottom:1px solid #cccccc;
- font:100% sans-serif;
- color:#000;
- font-weight:bold;
- height:auto;
- padding:.4em;
- margin:0 -10px 10px -10px;
- top:0;
- left:0;
- text-align:left;
-}
-
-.yui-skin-sam .yui-calcontainer.multi .title {
- margin:0 -5px 0 -5px;
-}
-
-.yui-skin-sam .yui-calcontainer.withtitle {
- padding-top:0;
-}
-
-/* CLOSE BUTTON */
-.yui-skin-sam .yui-calcontainer .calclose {
- background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -300px;
- width:25px;
- height:15px;
- top:.4em;
- right:.4em;
- cursor:pointer;
-}
-
-/* CALENDAR TABLE */
-.yui-skin-sam .yui-calendar {
- border-spacing:0;
- border-collapse:collapse;
- font:100% sans-serif;
- text-align:center;
- margin:0;
-}
-
-/* NAVBAR BOUNDING BOX */
-.yui-skin-sam .yui-calendar .calhead {
- background:transparent;
- border:none;
- vertical-align:middle;
- padding:0;
-}
-
-/* NAVBAR TEXT CONTAINER */
-.yui-skin-sam .yui-calendar .calheader {
- background:transparent;
- font-weight:bold;
- padding:0 0 .6em 0;
- text-align:center;
-}
-
-.yui-skin-sam .yui-calendar .calheader img {
- border:none;
-}
-
-/* NAVBAR LEFT ARROW */
-.yui-skin-sam .yui-calendar .calnavleft {
- background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -450px;
- width:25px;
- height:15px;
- top:0;
- bottom:0;
- left:-10px;
- margin-left:.4em;
- cursor:pointer;
-}
-
-/* NAVBAR RIGHT ARROW */
-.yui-skin-sam .yui-calendar .calnavright {
- background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -500px;
- width:25px;
- height:15px;
- top:0;
- bottom:0;
- right:-10px;
- margin-right:.4em;
- cursor:pointer;
-}
-
-/* WEEKDAY HEADER ROW */
-.yui-skin-sam .yui-calendar .calweekdayrow {
- height:2em;
-}
-
-.yui-skin-sam .yui-calendar .calweekdayrow th {
- padding:0;
- border:none;
-}
-
-/* WEEKDAY (Su, Mo, Tu...) HEADER CELLS */
-.yui-skin-sam .yui-calendar .calweekdaycell {
- color:#000;
- font-weight:bold;
- text-align:center;
- width:2em;
-}
-
-/* CALENDAR FOOTER. NOT IMPLEMENTED BY DEFAULT */
-.yui-skin-sam .yui-calendar .calfoot {
- background-color:#f2f2f2;
-}
-
-/* WEEK NUMBERS (ROW HEADERS/FOOTERS) */
-.yui-skin-sam .yui-calendar .calrowhead, .yui-skin-sam .yui-calendar .calrowfoot {
- color:#a6a6a6;
- font-size:85%;
- font-style:normal;
- font-weight:normal;
- border:none;
-}
-
-.yui-skin-sam .yui-calendar .calrowhead {
- text-align:right;
- padding:0 2px 0 0;
-}
-
-.yui-skin-sam .yui-calendar .calrowfoot {
- text-align:left;
- padding:0 0 0 2px;
-}
-
-/* NORMAL CELLS */
-.yui-skin-sam .yui-calendar td.calcell {
- border:1px solid #cccccc;
- background:#fff;
- padding:1px;
- height:1.6em;
- line-height:1.6em; /* set line height equal to cell height to center vertically */
- text-align:center;
- white-space:nowrap;
-}
-
-/* LINK INSIDE NORMAL CELLS */
-.yui-skin-sam .yui-calendar td.calcell a {
- color:#0066cc;
- display:block;
- height:100%;
- text-decoration:none;
-}
-
-/* TODAY'S DATE */
-.yui-skin-sam .yui-calendar td.calcell.today {
- background-color:#000;
-}
-
-.yui-skin-sam .yui-calendar td.calcell.today a {
- background-color:#fff;
-}
-
-/* OOM DATES */
-.yui-skin-sam .yui-calendar td.calcell.oom {
- background-color:#cccccc;
- color:#a6a6a6;
- cursor:default;
-}
-
-/* SELECTED DATE */
-.yui-skin-sam .yui-calendar td.calcell.selected {
- background-color:#fff;
- color:#000;
-}
-
-.yui-skin-sam .yui-calendar td.calcell.selected a {
- background-color:#b3d4ff;
- color:#000;
-}
-
-/* HOVER DATE */
-.yui-skin-sam .yui-calendar td.calcell.calcellhover {
- background-color:#426fd9;
- color:#fff;
- cursor:pointer;
-}
-
-.yui-skin-sam .yui-calendar td.calcell.calcellhover a {
- background-color:#426fd9;
- color:#fff;
-}
-
-/* DEFAULT OOB DATES */
-.yui-skin-sam .yui-calendar td.calcell.previous {
- color:#e0e0e0;
-}
-
-/* CUSTOM RENDERERS */
-.yui-skin-sam .yui-calendar td.calcell.restricted { text-decoration:line-through; }
-.yui-skin-sam .yui-calendar td.calcell.highlight1 { background-color:#ccff99; }
-.yui-skin-sam .yui-calendar td.calcell.highlight2 { background-color:#99ccff; }
-.yui-skin-sam .yui-calendar td.calcell.highlight3 { background-color:#ffcccc; }
-.yui-skin-sam .yui-calendar td.calcell.highlight4 { background-color:#ccff99; }
-
-/* CalendarNavigator */
-
-/* MONTH/YEAR LABEL */
-.yui-skin-sam .yui-calendar a.calnav {
- border: 1px solid #f2f2f2;
- padding:0 4px;
- text-decoration:none;
- color:#000;
- zoom:1;
-}
-
-.yui-skin-sam .yui-calendar a.calnav:hover {
- background: url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;
- border-color:#A0A0A0;
- cursor:pointer;
-}
-
-/* NAVIGATOR MASK */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-mask {
- background-color:#000;
- opacity:0.25;
- filter:alpha(opacity=25); /* IE */
-}
-
-/* NAVIGATOR BOUNDING BOX */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav {
- font-family: Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;
- font-size:93%;
- border:1px solid #808080;
- left:50%;
- margin-left:-7em;
- width:14em;
- padding:0;
- top:2.5em;
- background-color:#f2f2f2;
-}
-
-.yui-skin-sam .yui-calcontainer.withtitle .yui-cal-nav {
- top:4.5em;
-}
-
-/* NAVIGATOR BOUNDING BOX */
-.yui-skin-sam .yui-calcontainer.multi .yui-cal-nav {
- width:16em;
- margin-left:-8em;
-}
-
-/* NAVIGATOR YEAR/MONTH/BUTTON/ERROR BOUNDING BLOCKS */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-y,
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-m,
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-b {
- padding:5px 10px 5px 10px;
-}
-
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-b {
- text-align:center;
-}
-
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-e {
- margin-top:5px;
- padding:5px;
- background-color:#EDF5FF;
- border-top:1px solid black;
- display:none;
-}
-
-/* NAVIGATOR LABELS */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav label {
- display:block;
- font-weight:bold;
-}
-
-/* NAVIGATOR MONTH CONTROL */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-mc {
- width:100%;
- _width:auto; /* IE6, IE7 Quirks don't handle 100% well */
-}
-
-/* NAVIGATOR MONTH CONTROL, VALIDATION ERROR */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-y input.yui-invalid {
- background-color:#FFEE69;
- border: 1px solid #000;
-}
-
-/* NAVIGATOR YEAR CONTROL */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav-yc {
- width:4em;
-}
-
-/* NAVIGATOR BUTTONS */
-
-/* BUTTON WRAPPER */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn {
- border:1px solid #808080;
- background: url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;
- background-color:#ccc;
- margin: auto .15em;
-}
-
-/* BUTTON (based on button-skin.css) */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button {
- padding:0 8px;
- font-size:93%;
- line-height: 2; /* ~24px */
- *line-height: 1.7; /* For IE */
- min-height: 2em; /* For Gecko */
- *min-height: auto; /* For IE */
- color: #000;
-}
-
-/* DEFAULT BUTTONS */
-/* NOTE: IE6 will only pickup the yui-default specifier from the multiple class specifier */
-.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default {
- border:1px solid #304369;
- background-color: #426fd9;
- background: url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1400px;
-}
-
-.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button {
- color:#fff;
-}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar.css'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar.css 2011-01-13 23:52:12 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar.css 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-.yui-calcontainer{position:relative;float:left;_overflow:hidden;}.yui-calcontainer iframe{position:absolute;border:none;margin:0;padding:0;z-index:0;width:100%;height:100%;left:0;top:0;}.yui-calcontainer iframe.fixedsize{width:50em;height:50em;top:-1px;left:-1px;}.yui-calcontainer.multi .groupcal{z-index:1;float:left;position:relative;}.yui-calcontainer .title{position:relative;z-index:1;}.yui-calcontainer .close-icon{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar{position:relative;}.yui-calendar .calnavleft{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calnavright{position:absolute;z-index:1;text-indent:-10000em;overflow:hidden;}.yui-calendar .calheader{position:relative;width:100%;text-align:center;}.yui-calcontainer .yui-cal-nav-mask{position:absolute;z-index:2;margin:0;padding:0;width:100%;height:100%;_width:0;_height:0;left:0;top:0;display:none;}.yui-calcontainer .yui-cal-nav{position:absolute;z-index:3;top:0;display:none;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{display:-moz-inline-box;display:inline-block;}.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{display:block;*display:inline-block;*overflow:visible;border:none;background-color:transparent;cursor:pointer;}.yui-calendar .calbody a:hover{background:inherit;}p#clear{clear:left;padding-top:10px;}.yui3-skin-sam .yui-calcontainer{background-color:#f2f2f2;border:1px solid #808080;padding:10px;}.yui3-skin-sam .yui-calcontainer.multi{padding:0 5px 0 5px;}.yui3-skin-sam .yui-calcontainer.multi .groupcal{background-color:transparent;border:none;padding:10px 5px 10px 5px;margin:0;}.yui3-skin-sam .yui-calcontainer .title{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;border-bottom:1px solid #ccc;font-size:100%;color:#000;font-weight:bold;height:auto;padding:.4em;margin:0 -10px 10px -10px;top:0;left:0;text-align:left;}.yui3-skin-sam .yui-calcontainer.multi .title{margin:0 -5px 0 -5px;}.yui3-skin-sam .yui-calcontainer.withtitle{padding-top:0;}.yui3-skin-sam .yui-calcontainer .calclose{background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -300px;width:25px;height:15px;top:.4em;right:.4em;cursor:pointer;}.yui3-skin-sam .yui-calendar{border-spacing:0;border-collapse:collapse;font-size:100%;text-align:center;margin:0;}.yui3-skin-sam .yui-calendar .calhead{background:transparent;border:none;vertical-align:middle;padding:0;}.yui3-skin-sam .yui-calendar .calheader{background:transparent;font-weight:bold;padding:0 0 .6em 0;text-align:center;}.yui3-skin-sam .yui-calendar .calheader img{border:none;}.yui3-skin-sam .yui-calendar .calnavleft{background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -450px;width:25px;height:15px;top:0;bottom:0;left:-10px;margin-left:.4em;cursor:pointer;}.yui3-skin-sam .yui-calendar .calnavright{background:url(../../../../assets/skins/sam/sprite.png) no-repeat 0 -500px;width:25px;height:15px;top:0;bottom:0;right:-10px;margin-right:.4em;cursor:pointer;}.yui3-skin-sam .yui-calendar .calweekdayrow{height:2em;}.yui3-skin-sam .yui-calendar .calweekdayrow th{padding:0;border:none;}.yui3-skin-sam .yui-calendar .calweekdaycell{color:#000;font-weight:bold;text-align:center;width:2em;}.yui3-skin-sam .yui-calendar .calfoot{background-color:#f2f2f2;}.yui3-skin-sam .yui-calendar .calrowhead,.yui3-skin-sam .yui-calendar .calrowfoot{color:#a6a6a6;font-size:85%;font-style:normal;font-weight:normal;border:none;}.yui3-skin-sam .yui-calendar .calrowhead{text-align:right;padding:0 2px 0 0;}.yui3-skin-sam .yui-calendar .calrowfoot{text-align:left;padding:0 0 0 2px;}.yui3-skin-sam .yui-calendar td.calcell{border:1px solid #ccc;background:#fff;padding:1px;height:1.6em;line-height:1.6em;text-align:center;white-space:nowrap;}.yui3-skin-sam .yui-calendar td.calcell a{color:#06c;display:block;height:100%;text-decoration:none;}.yui3-skin-sam .yui-calendar td.calcell.today{background-color:#000;}.yui3-skin-sam .yui-calendar td.calcell.today a{background-color:#fff;}.yui3-skin-sam .yui-calendar td.calcell.oom{background-color:#ccc;color:#a6a6a6;cursor:default;}.yui3-skin-sam .yui-calendar td.calcell.selected{background-color:#fff;color:#000;}.yui3-skin-sam .yui-calendar td.calcell.selected a{background-color:#b3d4ff;color:#000;}.yui3-skin-sam .yui-calendar td.calcell.calcellhover{background-color:#426fd9;color:#fff;cursor:pointer;}.yui3-skin-sam .yui-calendar td.calcell.calcellhover a{background-color:#426fd9;color:#fff;}.yui3-skin-sam .yui-calendar td.calcell.previous{color:#e0e0e0;}.yui3-skin-sam .yui-calendar td.calcell.restricted{text-decoration:line-through;}.yui3-skin-sam .yui-calendar td.calcell.highlight1{background-color:#cf9;}.yui3-skin-sam .yui-calendar td.calcell.highlight2{background-color:#9cf;}.yui3-skin-sam .yui-calendar td.calcell.highlight3{background-color:#fcc;}.yui3-skin-sam .yui-calendar td.calcell.highlight4{background-color:#cf9;}.yui3-skin-sam .yui-calendar a.calnav{border:1px solid #f2f2f2;padding:0 4px;text-decoration:none;color:#000;zoom:1;}.yui3-skin-sam .yui-calendar a.calnav:hover{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;border-color:#A0A0A0;cursor:pointer;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui3-skin-sam .yui-calcontainer .yui-cal-nav{font-size:93%;border:1px solid #808080;left:50%;margin-left:-7em;width:14em;padding:0;top:2.5em;background-color:#f2f2f2;}.yui3-skin-sam .yui-calcontainer.withtitle .yui-cal-nav{top:4.5em;}.yui3-skin-sam .yui-calcontainer.multi .yui-cal-nav{width:16em;margin-left:-8em;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-y,.yui3-skin-sam .yui-calcontainer .yui-cal-nav-m,.yui3-skin-sam .yui-calcontainer .yui-cal-nav-b{padding:5px 10px 5px 10px;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-b{text-align:center;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-e{margin-top:5px;padding:5px;background-color:#EDF5FF;border-top:1px solid black;display:none;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav label{display:block;font-weight:bold;}
-.yui3-skin-sam .yui-calcontainer .yui-cal-nav-mc{width:100%;_width:auto;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-y input.yui-invalid{background-color:#FFEE69;border:1px solid #000;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav-yc{width:4em;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn{border:1px solid #808080;background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;background-color:#ccc;margin:auto .15em;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button{padding:0 8px;font-size:93%;line-height:2;*line-height:1.7;min-height:2em;*min-height:auto;color:#000;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default{border:1px solid #304369;background-color:#426fd9;background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1400px;}.yui3-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button{color:#fff;}
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-debug.js'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-debug.js 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-debug.js 1970-01-01 00:00:00 +0000
@@ -1,7178 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-(function () {
-
- /**
- * Config is a utility used within an Object to allow the implementer to
- * maintain a list of local configuration properties and listen for changes
- * to those properties dynamically using CustomEvent. The initial values are
- * also maintained so that the configuration can be reset at any given point
- * to its initial state.
- * @namespace YAHOO.util
- * @class Config
- * @constructor
- * @param {Object} owner The owner Object to which this Config Object belongs
- */
- YAHOO.util.Config = function (owner) {
-
- if (owner) {
- this.init(owner);
- }
-
- if (!owner) { YAHOO.log("No owner specified for Config object", "error", "Config"); }
-
- };
-
-
- var Lang = YAHOO.lang,
- CustomEvent = YAHOO.util.CustomEvent,
- Config = YAHOO.util.Config;
-
-
- /**
- * Constant representing the CustomEvent type for the config changed event.
- * @property YAHOO.util.Config.CONFIG_CHANGED_EVENT
- * @private
- * @static
- * @final
- */
- Config.CONFIG_CHANGED_EVENT = "configChanged";
-
- /**
- * Constant representing the boolean type string
- * @property YAHOO.util.Config.BOOLEAN_TYPE
- * @private
- * @static
- * @final
- */
- Config.BOOLEAN_TYPE = "boolean";
-
- Config.prototype = {
-
- /**
- * Object reference to the owner of this Config Object
- * @property owner
- * @type Object
- */
- owner: null,
-
- /**
- * Boolean flag that specifies whether a queue is currently
- * being executed
- * @property queueInProgress
- * @type Boolean
- */
- queueInProgress: false,
-
- /**
- * Maintains the local collection of configuration property objects and
- * their specified values
- * @property config
- * @private
- * @type Object
- */
- config: null,
-
- /**
- * Maintains the local collection of configuration property objects as
- * they were initially applied.
- * This object is used when resetting a property.
- * @property initialConfig
- * @private
- * @type Object
- */
- initialConfig: null,
-
- /**
- * Maintains the local, normalized CustomEvent queue
- * @property eventQueue
- * @private
- * @type Object
- */
- eventQueue: null,
-
- /**
- * Custom Event, notifying subscribers when Config properties are set
- * (setProperty is called without the silent flag
- * @event configChangedEvent
- */
- configChangedEvent: null,
-
- /**
- * Initializes the configuration Object and all of its local members.
- * @method init
- * @param {Object} owner The owner Object to which this Config
- * Object belongs
- */
- init: function (owner) {
-
- this.owner = owner;
-
- this.configChangedEvent =
- this.createEvent(Config.CONFIG_CHANGED_EVENT);
-
- this.configChangedEvent.signature = CustomEvent.LIST;
- this.queueInProgress = false;
- this.config = {};
- this.initialConfig = {};
- this.eventQueue = [];
-
- },
-
- /**
- * Validates that the value passed in is a Boolean.
- * @method checkBoolean
- * @param {Object} val The value to validate
- * @return {Boolean} true, if the value is valid
- */
- checkBoolean: function (val) {
- return (typeof val == Config.BOOLEAN_TYPE);
- },
-
- /**
- * Validates that the value passed in is a number.
- * @method checkNumber
- * @param {Object} val The value to validate
- * @return {Boolean} true, if the value is valid
- */
- checkNumber: function (val) {
- return (!isNaN(val));
- },
-
- /**
- * Fires a configuration property event using the specified value.
- * @method fireEvent
- * @private
- * @param {String} key The configuration property's name
- * @param {value} Object The value of the correct type for the property
- */
- fireEvent: function ( key, value ) {
- YAHOO.log("Firing Config event: " + key + "=" + value, "info", "Config");
- var property = this.config[key];
-
- if (property && property.event) {
- property.event.fire(value);
- }
- },
-
- /**
- * Adds a property to the Config Object's private config hash.
- * @method addProperty
- * @param {String} key The configuration property's name
- * @param {Object} propertyObject The Object containing all of this
- * property's arguments
- */
- addProperty: function ( key, propertyObject ) {
- key = key.toLowerCase();
- YAHOO.log("Added property: " + key, "info", "Config");
-
- this.config[key] = propertyObject;
-
- propertyObject.event = this.createEvent(key, { scope: this.owner });
- propertyObject.event.signature = CustomEvent.LIST;
-
-
- propertyObject.key = key;
-
- if (propertyObject.handler) {
- propertyObject.event.subscribe(propertyObject.handler,
- this.owner);
- }
-
- this.setProperty(key, propertyObject.value, true);
-
- if (! propertyObject.suppressEvent) {
- this.queueProperty(key, propertyObject.value);
- }
-
- },
-
- /**
- * Returns a key-value configuration map of the values currently set in
- * the Config Object.
- * @method getConfig
- * @return {Object} The current config, represented in a key-value map
- */
- getConfig: function () {
-
- var cfg = {},
- currCfg = this.config,
- prop,
- property;
-
- for (prop in currCfg) {
- if (Lang.hasOwnProperty(currCfg, prop)) {
- property = currCfg[prop];
- if (property && property.event) {
- cfg[prop] = property.value;
- }
- }
- }
-
- return cfg;
- },
-
- /**
- * Returns the value of specified property.
- * @method getProperty
- * @param {String} key The name of the property
- * @return {Object} The value of the specified property
- */
- getProperty: function (key) {
- var property = this.config[key.toLowerCase()];
- if (property && property.event) {
- return property.value;
- } else {
- return undefined;
- }
- },
-
- /**
- * Resets the specified property's value to its initial value.
- * @method resetProperty
- * @param {String} key The name of the property
- * @return {Boolean} True is the property was reset, false if not
- */
- resetProperty: function (key) {
-
- key = key.toLowerCase();
-
- var property = this.config[key];
-
- if (property && property.event) {
-
- if (this.initialConfig[key] &&
- !Lang.isUndefined(this.initialConfig[key])) {
-
- this.setProperty(key, this.initialConfig[key]);
-
- return true;
-
- }
-
- } else {
-
- return false;
- }
-
- },
-
- /**
- * Sets the value of a property. If the silent property is passed as
- * true, the property's event will not be fired.
- * @method setProperty
- * @param {String} key The name of the property
- * @param {String} value The value to set the property to
- * @param {Boolean} silent Whether the value should be set silently,
- * without firing the property event.
- * @return {Boolean} True, if the set was successful, false if it failed.
- */
- setProperty: function (key, value, silent) {
-
- var property;
-
- key = key.toLowerCase();
- YAHOO.log("setProperty: " + key + "=" + value, "info", "Config");
-
- if (this.queueInProgress && ! silent) {
- // Currently running through a queue...
- this.queueProperty(key,value);
- return true;
-
- } else {
- property = this.config[key];
- if (property && property.event) {
- if (property.validator && !property.validator(value)) {
- return false;
- } else {
- property.value = value;
- if (! silent) {
- this.fireEvent(key, value);
- this.configChangedEvent.fire([key, value]);
- }
- return true;
- }
- } else {
- return false;
- }
- }
- },
-
- /**
- * Sets the value of a property and queues its event to execute. If the
- * event is already scheduled to execute, it is
- * moved from its current position to the end of the queue.
- * @method queueProperty
- * @param {String} key The name of the property
- * @param {String} value The value to set the property to
- * @return {Boolean} true, if the set was successful, false if
- * it failed.
- */
- queueProperty: function (key, value) {
-
- key = key.toLowerCase();
- YAHOO.log("queueProperty: " + key + "=" + value, "info", "Config");
-
- var property = this.config[key],
- foundDuplicate = false,
- iLen,
- queueItem,
- queueItemKey,
- queueItemValue,
- sLen,
- supercedesCheck,
- qLen,
- queueItemCheck,
- queueItemCheckKey,
- queueItemCheckValue,
- i,
- s,
- q;
-
- if (property && property.event) {
-
- if (!Lang.isUndefined(value) && property.validator &&
- !property.validator(value)) { // validator
- return false;
- } else {
-
- if (!Lang.isUndefined(value)) {
- property.value = value;
- } else {
- value = property.value;
- }
-
- foundDuplicate = false;
- iLen = this.eventQueue.length;
-
- for (i = 0; i < iLen; i++) {
- queueItem = this.eventQueue[i];
-
- if (queueItem) {
- queueItemKey = queueItem[0];
- queueItemValue = queueItem[1];
-
- if (queueItemKey == key) {
-
- /*
- found a dupe... push to end of queue, null
- current item, and break
- */
-
- this.eventQueue[i] = null;
-
- this.eventQueue.push(
- [key, (!Lang.isUndefined(value) ?
- value : queueItemValue)]);
-
- foundDuplicate = true;
- break;
- }
- }
- }
-
- // this is a refire, or a new property in the queue
-
- if (! foundDuplicate && !Lang.isUndefined(value)) {
- this.eventQueue.push([key, value]);
- }
- }
-
- if (property.supercedes) {
-
- sLen = property.supercedes.length;
-
- for (s = 0; s < sLen; s++) {
-
- supercedesCheck = property.supercedes[s];
- qLen = this.eventQueue.length;
-
- for (q = 0; q < qLen; q++) {
- queueItemCheck = this.eventQueue[q];
-
- if (queueItemCheck) {
- queueItemCheckKey = queueItemCheck[0];
- queueItemCheckValue = queueItemCheck[1];
-
- if (queueItemCheckKey ==
- supercedesCheck.toLowerCase() ) {
-
- this.eventQueue.push([queueItemCheckKey,
- queueItemCheckValue]);
-
- this.eventQueue[q] = null;
- break;
-
- }
- }
- }
- }
- }
-
- YAHOO.log("Config event queue: " + this.outputEventQueue(), "info", "Config");
-
- return true;
- } else {
- return false;
- }
- },
-
- /**
- * Fires the event for a property using the property's current value.
- * @method refireEvent
- * @param {String} key The name of the property
- */
- refireEvent: function (key) {
-
- key = key.toLowerCase();
-
- var property = this.config[key];
-
- if (property && property.event &&
-
- !Lang.isUndefined(property.value)) {
-
- if (this.queueInProgress) {
-
- this.queueProperty(key);
-
- } else {
-
- this.fireEvent(key, property.value);
-
- }
-
- }
- },
-
- /**
- * Applies a key-value Object literal to the configuration, replacing
- * any existing values, and queueing the property events.
- * Although the values will be set, fireQueue() must be called for their
- * associated events to execute.
- * @method applyConfig
- * @param {Object} userConfig The configuration Object literal
- * @param {Boolean} init When set to true, the initialConfig will
- * be set to the userConfig passed in, so that calling a reset will
- * reset the properties to the passed values.
- */
- applyConfig: function (userConfig, init) {
-
- var sKey,
- oConfig;
-
- if (init) {
- oConfig = {};
- for (sKey in userConfig) {
- if (Lang.hasOwnProperty(userConfig, sKey)) {
- oConfig[sKey.toLowerCase()] = userConfig[sKey];
- }
- }
- this.initialConfig = oConfig;
- }
-
- for (sKey in userConfig) {
- if (Lang.hasOwnProperty(userConfig, sKey)) {
- this.queueProperty(sKey, userConfig[sKey]);
- }
- }
- },
-
- /**
- * Refires the events for all configuration properties using their
- * current values.
- * @method refresh
- */
- refresh: function () {
-
- var prop;
-
- for (prop in this.config) {
- if (Lang.hasOwnProperty(this.config, prop)) {
- this.refireEvent(prop);
- }
- }
- },
-
- /**
- * Fires the normalized list of queued property change events
- * @method fireQueue
- */
- fireQueue: function () {
-
- var i,
- queueItem,
- key,
- value,
- property;
-
- this.queueInProgress = true;
- for (i = 0;i < this.eventQueue.length; i++) {
- queueItem = this.eventQueue[i];
- if (queueItem) {
-
- key = queueItem[0];
- value = queueItem[1];
- property = this.config[key];
-
- property.value = value;
-
- // Clear out queue entry, to avoid it being
- // re-added to the queue by any queueProperty/supercedes
- // calls which are invoked during fireEvent
- this.eventQueue[i] = null;
-
- this.fireEvent(key,value);
- }
- }
-
- this.queueInProgress = false;
- this.eventQueue = [];
- },
-
- /**
- * Subscribes an external handler to the change event for any
- * given property.
- * @method subscribeToConfigEvent
- * @param {String} key The property name
- * @param {Function} handler The handler function to use subscribe to
- * the property's event
- * @param {Object} obj The Object to use for scoping the event handler
- * (see CustomEvent documentation)
- * @param {Boolean} override Optional. If true, will override "this"
- * within the handler to map to the scope Object passed into the method.
- * @return {Boolean} True, if the subscription was successful,
- * otherwise false.
- */
- subscribeToConfigEvent: function (key, handler, obj, override) {
-
- var property = this.config[key.toLowerCase()];
-
- if (property && property.event) {
- if (!Config.alreadySubscribed(property.event, handler, obj)) {
- property.event.subscribe(handler, obj, override);
- }
- return true;
- } else {
- return false;
- }
-
- },
-
- /**
- * Unsubscribes an external handler from the change event for any
- * given property.
- * @method unsubscribeFromConfigEvent
- * @param {String} key The property name
- * @param {Function} handler The handler function to use subscribe to
- * the property's event
- * @param {Object} obj The Object to use for scoping the event
- * handler (see CustomEvent documentation)
- * @return {Boolean} True, if the unsubscription was successful,
- * otherwise false.
- */
- unsubscribeFromConfigEvent: function (key, handler, obj) {
- var property = this.config[key.toLowerCase()];
- if (property && property.event) {
- return property.event.unsubscribe(handler, obj);
- } else {
- return false;
- }
- },
-
- /**
- * Returns a string representation of the Config object
- * @method toString
- * @return {String} The Config object in string format.
- */
- toString: function () {
- var output = "Config";
- if (this.owner) {
- output += " [" + this.owner.toString() + "]";
- }
- return output;
- },
-
- /**
- * Returns a string representation of the Config object's current
- * CustomEvent queue
- * @method outputEventQueue
- * @return {String} The string list of CustomEvents currently queued
- * for execution
- */
- outputEventQueue: function () {
-
- var output = "",
- queueItem,
- q,
- nQueue = this.eventQueue.length;
-
- for (q = 0; q < nQueue; q++) {
- queueItem = this.eventQueue[q];
- if (queueItem) {
- output += queueItem[0] + "=" + queueItem[1] + ", ";
- }
- }
- return output;
- },
-
- /**
- * Sets all properties to null, unsubscribes all listeners from each
- * property's change event and all listeners from the configChangedEvent.
- * @method destroy
- */
- destroy: function () {
-
- var oConfig = this.config,
- sProperty,
- oProperty;
-
-
- for (sProperty in oConfig) {
-
- if (Lang.hasOwnProperty(oConfig, sProperty)) {
-
- oProperty = oConfig[sProperty];
-
- oProperty.event.unsubscribeAll();
- oProperty.event = null;
-
- }
-
- }
-
- this.configChangedEvent.unsubscribeAll();
-
- this.configChangedEvent = null;
- this.owner = null;
- this.config = null;
- this.initialConfig = null;
- this.eventQueue = null;
-
- }
-
- };
-
-
-
- /**
- * Checks to determine if a particular function/Object pair are already
- * subscribed to the specified CustomEvent
- * @method YAHOO.util.Config.alreadySubscribed
- * @static
- * @param {YAHOO.util.CustomEvent} evt The CustomEvent for which to check
- * the subscriptions
- * @param {Function} fn The function to look for in the subscribers list
- * @param {Object} obj The execution scope Object for the subscription
- * @return {Boolean} true, if the function/Object pair is already subscribed
- * to the CustomEvent passed in
- */
- Config.alreadySubscribed = function (evt, fn, obj) {
-
- var nSubscribers = evt.subscribers.length,
- subsc,
- i;
-
- if (nSubscribers > 0) {
- i = nSubscribers - 1;
- do {
- subsc = evt.subscribers[i];
- if (subsc && subsc.obj == obj && subsc.fn == fn) {
- return true;
- }
- }
- while (i--);
- }
-
- return false;
-
- };
-
- YAHOO.lang.augmentProto(Config, YAHOO.util.EventProvider);
-
-}());
-/**
-* YAHOO.widget.DateMath is used for simple date manipulation. The class is a static utility
-* used for adding, subtracting, and comparing dates.
-* @namespace YAHOO.widget
-* @class DateMath
-*/
-YAHOO.widget.DateMath = {
- /**
- * Constant field representing Day
- * @property DAY
- * @static
- * @final
- * @type String
- */
- DAY : "D",
-
- /**
- * Constant field representing Week
- * @property WEEK
- * @static
- * @final
- * @type String
- */
- WEEK : "W",
-
- /**
- * Constant field representing Year
- * @property YEAR
- * @static
- * @final
- * @type String
- */
- YEAR : "Y",
-
- /**
- * Constant field representing Month
- * @property MONTH
- * @static
- * @final
- * @type String
- */
- MONTH : "M",
-
- /**
- * Constant field representing one day, in milliseconds
- * @property ONE_DAY_MS
- * @static
- * @final
- * @type Number
- */
- ONE_DAY_MS : 1000*60*60*24,
-
- /**
- * Constant field representing the date in first week of January
- * which identifies the first week of the year.
- * <p>
- * In the U.S, Jan 1st is normally used based on a Sunday start of week.
- * ISO 8601, used widely throughout Europe, uses Jan 4th, based on a Monday start of week.
- * </p>
- * @property WEEK_ONE_JAN_DATE
- * @static
- * @type Number
- */
- WEEK_ONE_JAN_DATE : 1,
-
- /**
- * Adds the specified amount of time to the this instance.
- * @method add
- * @param {Date} date The JavaScript Date object to perform addition on
- * @param {String} field The field constant to be used for performing addition.
- * @param {Number} amount The number of units (measured in the field constant) to add to the date.
- * @return {Date} The resulting Date object
- */
- add : function(date, field, amount) {
- var d = new Date(date.getTime());
- switch (field) {
- case this.MONTH:
- var newMonth = date.getMonth() + amount;
- var years = 0;
-
- if (newMonth < 0) {
- while (newMonth < 0) {
- newMonth += 12;
- years -= 1;
- }
- } else if (newMonth > 11) {
- while (newMonth > 11) {
- newMonth -= 12;
- years += 1;
- }
- }
-
- d.setMonth(newMonth);
- d.setFullYear(date.getFullYear() + years);
- break;
- case this.DAY:
- this._addDays(d, amount);
- // d.setDate(date.getDate() + amount);
- break;
- case this.YEAR:
- d.setFullYear(date.getFullYear() + amount);
- break;
- case this.WEEK:
- this._addDays(d, (amount * 7));
- // d.setDate(date.getDate() + (amount * 7));
- break;
- }
- return d;
- },
-
- /**
- * Private helper method to account for bug in Safari 2 (webkit < 420)
- * when Date.setDate(n) is called with n less than -128 or greater than 127.
- * <p>
- * Fix approach and original findings are available here:
- * http://brianary.blogspot.com/2006/03/safari-date-bug.html
- * </p>
- * @method _addDays
- * @param {Date} d JavaScript date object
- * @param {Number} nDays The number of days to add to the date object (can be negative)
- * @private
- */
- _addDays : function(d, nDays) {
- if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420) {
- if (nDays < 0) {
- // Ensure we don't go below -128 (getDate() is always 1 to 31, so we won't go above 127)
- for(var min = -128; nDays < min; nDays -= min) {
- d.setDate(d.getDate() + min);
- }
- } else {
- // Ensure we don't go above 96 + 31 = 127
- for(var max = 96; nDays > max; nDays -= max) {
- d.setDate(d.getDate() + max);
- }
- }
- // nDays should be remainder between -128 and 96
- }
- d.setDate(d.getDate() + nDays);
- },
-
- /**
- * Subtracts the specified amount of time from the this instance.
- * @method subtract
- * @param {Date} date The JavaScript Date object to perform subtraction on
- * @param {Number} field The this field constant to be used for performing subtraction.
- * @param {Number} amount The number of units (measured in the field constant) to subtract from the date.
- * @return {Date} The resulting Date object
- */
- subtract : function(date, field, amount) {
- return this.add(date, field, (amount*-1));
- },
-
- /**
- * Determines whether a given date is before another date on the calendar.
- * @method before
- * @param {Date} date The Date object to compare with the compare argument
- * @param {Date} compareTo The Date object to use for the comparison
- * @return {Boolean} true if the date occurs before the compared date; false if not.
- */
- before : function(date, compareTo) {
- var ms = compareTo.getTime();
- if (date.getTime() < ms) {
- return true;
- } else {
- return false;
- }
- },
-
- /**
- * Determines whether a given date is after another date on the calendar.
- * @method after
- * @param {Date} date The Date object to compare with the compare argument
- * @param {Date} compareTo The Date object to use for the comparison
- * @return {Boolean} true if the date occurs after the compared date; false if not.
- */
- after : function(date, compareTo) {
- var ms = compareTo.getTime();
- if (date.getTime() > ms) {
- return true;
- } else {
- return false;
- }
- },
-
- /**
- * Determines whether a given date is between two other dates on the calendar.
- * @method between
- * @param {Date} date The date to check for
- * @param {Date} dateBegin The start of the range
- * @param {Date} dateEnd The end of the range
- * @return {Boolean} true if the date occurs between the compared dates; false if not.
- */
- between : function(date, dateBegin, dateEnd) {
- if (this.after(date, dateBegin) && this.before(date, dateEnd)) {
- return true;
- } else {
- return false;
- }
- },
-
- /**
- * Retrieves a JavaScript Date object representing January 1 of any given year.
- * @method getJan1
- * @param {Number} calendarYear The calendar year for which to retrieve January 1
- * @return {Date} January 1 of the calendar year specified.
- */
- getJan1 : function(calendarYear) {
- return this.getDate(calendarYear,0,1);
- },
-
- /**
- * Calculates the number of days the specified date is from January 1 of the specified calendar year.
- * Passing January 1 to this function would return an offset value of zero.
- * @method getDayOffset
- * @param {Date} date The JavaScript date for which to find the offset
- * @param {Number} calendarYear The calendar year to use for determining the offset
- * @return {Number} The number of days since January 1 of the given year
- */
- getDayOffset : function(date, calendarYear) {
- var beginYear = this.getJan1(calendarYear); // Find the start of the year. This will be in week 1.
-
- // Find the number of days the passed in date is away from the calendar year start
- var dayOffset = Math.ceil((date.getTime()-beginYear.getTime()) / this.ONE_DAY_MS);
- return dayOffset;
- },
-
- /**
- * Calculates the week number for the given date. Can currently support standard
- * U.S. week numbers, based on Jan 1st defining the 1st week of the year, and
- * ISO8601 week numbers, based on Jan 4th defining the 1st week of the year.
- *
- * @method getWeekNumber
- * @param {Date} date The JavaScript date for which to find the week number
- * @param {Number} firstDayOfWeek The index of the first day of the week (0 = Sun, 1 = Mon ... 6 = Sat).
- * Defaults to 0
- * @param {Number} janDate The date in the first week of January which defines week one for the year
- * Defaults to the value of YAHOO.widget.DateMath.WEEK_ONE_JAN_DATE, which is 1 (Jan 1st).
- * For the U.S, this is normally Jan 1st. ISO8601 uses Jan 4th to define the first week of the year.
- *
- * @return {Number} The number of the week containing the given date.
- */
- getWeekNumber : function(date, firstDayOfWeek, janDate) {
-
- // Setup Defaults
- firstDayOfWeek = firstDayOfWeek || 0;
- janDate = janDate || this.WEEK_ONE_JAN_DATE;
-
- var targetDate = this.clearTime(date),
- startOfWeek,
- endOfWeek;
-
- if (targetDate.getDay() === firstDayOfWeek) {
- startOfWeek = targetDate;
- } else {
- startOfWeek = this.getFirstDayOfWeek(targetDate, firstDayOfWeek);
- }
-
- var startYear = startOfWeek.getFullYear(),
- startTime = startOfWeek.getTime();
-
- // DST shouldn't be a problem here, math is quicker than setDate();
- endOfWeek = new Date(startOfWeek.getTime() + 6*this.ONE_DAY_MS);
-
- var weekNum;
- if (startYear !== endOfWeek.getFullYear() && endOfWeek.getDate() >= janDate) {
- // If years don't match, endOfWeek is in Jan. and if the
- // week has WEEK_ONE_JAN_DATE in it, it's week one by definition.
- weekNum = 1;
- } else {
- // Get the 1st day of the 1st week, and
- // find how many days away we are from it.
- var weekOne = this.clearTime(this.getDate(startYear, 0, janDate)),
- weekOneDayOne = this.getFirstDayOfWeek(weekOne, firstDayOfWeek);
-
- // Round days to smoothen out 1 hr DST diff
- var daysDiff = Math.round((targetDate.getTime() - weekOneDayOne.getTime())/this.ONE_DAY_MS);
-
- // Calc. Full Weeks
- var rem = daysDiff % 7;
- var weeksDiff = (daysDiff - rem)/7;
- weekNum = weeksDiff + 1;
- }
- return weekNum;
- },
-
- /**
- * Get the first day of the week, for the give date.
- * @param {Date} dt The date in the week for which the first day is required.
- * @param {Number} startOfWeek The index for the first day of the week, 0 = Sun, 1 = Mon ... 6 = Sat (defaults to 0)
- * @return {Date} The first day of the week
- */
- getFirstDayOfWeek : function (dt, startOfWeek) {
- startOfWeek = startOfWeek || 0;
- var dayOfWeekIndex = dt.getDay(),
- dayOfWeek = (dayOfWeekIndex - startOfWeek + 7) % 7;
-
- return this.subtract(dt, this.DAY, dayOfWeek);
- },
-
- /**
- * Determines if a given week overlaps two different years.
- * @method isYearOverlapWeek
- * @param {Date} weekBeginDate The JavaScript Date representing the first day of the week.
- * @return {Boolean} true if the date overlaps two different years.
- */
- isYearOverlapWeek : function(weekBeginDate) {
- var overlaps = false;
- var nextWeek = this.add(weekBeginDate, this.DAY, 6);
- if (nextWeek.getFullYear() != weekBeginDate.getFullYear()) {
- overlaps = true;
- }
- return overlaps;
- },
-
- /**
- * Determines if a given week overlaps two different months.
- * @method isMonthOverlapWeek
- * @param {Date} weekBeginDate The JavaScript Date representing the first day of the week.
- * @return {Boolean} true if the date overlaps two different months.
- */
- isMonthOverlapWeek : function(weekBeginDate) {
- var overlaps = false;
- var nextWeek = this.add(weekBeginDate, this.DAY, 6);
- if (nextWeek.getMonth() != weekBeginDate.getMonth()) {
- overlaps = true;
- }
- return overlaps;
- },
-
- /**
- * Gets the first day of a month containing a given date.
- * @method findMonthStart
- * @param {Date} date The JavaScript Date used to calculate the month start
- * @return {Date} The JavaScript Date representing the first day of the month
- */
- findMonthStart : function(date) {
- var start = this.getDate(date.getFullYear(), date.getMonth(), 1);
- return start;
- },
-
- /**
- * Gets the last day of a month containing a given date.
- * @method findMonthEnd
- * @param {Date} date The JavaScript Date used to calculate the month end
- * @return {Date} The JavaScript Date representing the last day of the month
- */
- findMonthEnd : function(date) {
- var start = this.findMonthStart(date);
- var nextMonth = this.add(start, this.MONTH, 1);
- var end = this.subtract(nextMonth, this.DAY, 1);
- return end;
- },
-
- /**
- * Clears the time fields from a given date, effectively setting the time to 12 noon.
- * @method clearTime
- * @param {Date} date The JavaScript Date for which the time fields will be cleared
- * @return {Date} The JavaScript Date cleared of all time fields
- */
- clearTime : function(date) {
- date.setHours(12,0,0,0);
- return date;
- },
-
- /**
- * Returns a new JavaScript Date object, representing the given year, month and date. Time fields (hr, min, sec, ms) on the new Date object
- * are set to 0. The method allows Date instances to be created with the a year less than 100. "new Date(year, month, date)" implementations
- * set the year to 19xx if a year (xx) which is less than 100 is provided.
- * <p>
- * <em>NOTE:</em>Validation on argument values is not performed. It is the caller's responsibility to ensure
- * arguments are valid as per the ECMAScript-262 Date object specification for the new Date(year, month[, date]) constructor.
- * </p>
- * @method getDate
- * @param {Number} y Year.
- * @param {Number} m Month index from 0 (Jan) to 11 (Dec).
- * @param {Number} d (optional) Date from 1 to 31. If not provided, defaults to 1.
- * @return {Date} The JavaScript date object with year, month, date set as provided.
- */
- getDate : function(y, m, d) {
- var dt = null;
- if (YAHOO.lang.isUndefined(d)) {
- d = 1;
- }
- if (y >= 100) {
- dt = new Date(y, m, d);
- } else {
- dt = new Date();
- dt.setFullYear(y);
- dt.setMonth(m);
- dt.setDate(d);
- dt.setHours(0,0,0,0);
- }
- return dt;
- }
-};
-
-/**
-* The Calendar component is a UI control that enables users to choose one or more dates from a graphical calendar presented in a one-month or
-* multi-month interface. Calendars are generated entirely via script and can be navigated without any page refreshes.
-* @module calendar
-* @title Calendar
-* @namespace YAHOO.widget
-* @requires yahoo,dom,event
-*/
-(function(){
-
- var Dom = YAHOO.util.Dom,
- Event = YAHOO.util.Event,
- Lang = YAHOO.lang,
- DateMath = YAHOO.widget.DateMath;
-
-/**
-* Calendar is the base class for the Calendar widget. In its most basic
-* implementation, it has the ability to render a calendar widget on the page
-* that can be manipulated to select a single date, move back and forth between
-* months and years.
-* <p>To construct the placeholder for the calendar widget, the code is as
-* follows:
-* <xmp>
-* <div id="calContainer"></div>
-* </xmp>
-* </p>
-* <p>
-* <strong>NOTE: As of 2.4.0, the constructor's ID argument is optional.</strong>
-* The Calendar can be constructed by simply providing a container ID string,
-* or a reference to a container DIV HTMLElement (the element needs to exist
-* in the document).
-*
-* E.g.:
-* <xmp>
-* var c = new YAHOO.widget.Calendar("calContainer", configOptions);
-* </xmp>
-* or:
-* <xmp>
-* var containerDiv = YAHOO.util.Dom.get("calContainer");
-* var c = new YAHOO.widget.Calendar(containerDiv, configOptions);
-* </xmp>
-* </p>
-* <p>
-* If not provided, the ID will be generated from the container DIV ID by adding an "_t" suffix.
-* For example if an ID is not provided, and the container's ID is "calContainer", the Calendar's ID will be set to "calContainer_t".
-* </p>
-*
-* @namespace YAHOO.widget
-* @class Calendar
-* @constructor
-* @param {String} id optional The id of the table element that will represent the Calendar widget. As of 2.4.0, this argument is optional.
-* @param {String | HTMLElement} container The id of the container div element that will wrap the Calendar table, or a reference to a DIV element which exists in the document.
-* @param {Object} config optional The configuration object containing the initial configuration values for the Calendar.
-*/
-function Calendar(id, containerId, config) {
- this.init.apply(this, arguments);
-}
-
-/**
-* The path to be used for images loaded for the Calendar
-* @property YAHOO.widget.Calendar.IMG_ROOT
-* @static
-* @deprecated You can now customize images by overriding the calclose, calnavleft and calnavright default CSS classes for the close icon, left arrow and right arrow respectively
-* @type String
-*/
-Calendar.IMG_ROOT = null;
-
-/**
-* Type constant used for renderers to represent an individual date (M/D/Y)
-* @property YAHOO.widget.Calendar.DATE
-* @static
-* @final
-* @type String
-*/
-Calendar.DATE = "D";
-
-/**
-* Type constant used for renderers to represent an individual date across any year (M/D)
-* @property YAHOO.widget.Calendar.MONTH_DAY
-* @static
-* @final
-* @type String
-*/
-Calendar.MONTH_DAY = "MD";
-
-/**
-* Type constant used for renderers to represent a weekday
-* @property YAHOO.widget.Calendar.WEEKDAY
-* @static
-* @final
-* @type String
-*/
-Calendar.WEEKDAY = "WD";
-
-/**
-* Type constant used for renderers to represent a range of individual dates (M/D/Y-M/D/Y)
-* @property YAHOO.widget.Calendar.RANGE
-* @static
-* @final
-* @type String
-*/
-Calendar.RANGE = "R";
-
-/**
-* Type constant used for renderers to represent a month across any year
-* @property YAHOO.widget.Calendar.MONTH
-* @static
-* @final
-* @type String
-*/
-Calendar.MONTH = "M";
-
-/**
-* Constant that represents the total number of date cells that are displayed in a given month
-* @property YAHOO.widget.Calendar.DISPLAY_DAYS
-* @static
-* @final
-* @type Number
-*/
-Calendar.DISPLAY_DAYS = 42;
-
-/**
-* Constant used for halting the execution of the remainder of the render stack
-* @property YAHOO.widget.Calendar.STOP_RENDER
-* @static
-* @final
-* @type String
-*/
-Calendar.STOP_RENDER = "S";
-
-/**
-* Constant used to represent short date field string formats (e.g. Tu or Feb)
-* @property YAHOO.widget.Calendar.SHORT
-* @static
-* @final
-* @type String
-*/
-Calendar.SHORT = "short";
-
-/**
-* Constant used to represent long date field string formats (e.g. Monday or February)
-* @property YAHOO.widget.Calendar.LONG
-* @static
-* @final
-* @type String
-*/
-Calendar.LONG = "long";
-
-/**
-* Constant used to represent medium date field string formats (e.g. Mon)
-* @property YAHOO.widget.Calendar.MEDIUM
-* @static
-* @final
-* @type String
-*/
-Calendar.MEDIUM = "medium";
-
-/**
-* Constant used to represent single character date field string formats (e.g. M, T, W)
-* @property YAHOO.widget.Calendar.ONE_CHAR
-* @static
-* @final
-* @type String
-*/
-Calendar.ONE_CHAR = "1char";
-
-/**
-* The set of default Config property keys and values for the Calendar
-* @property YAHOO.widget.Calendar._DEFAULT_CONFIG
-* @final
-* @static
-* @private
-* @type Object
-*/
-Calendar._DEFAULT_CONFIG = {
- // Default values for pagedate and selected are not class level constants - they are set during instance creation
- PAGEDATE : {key:"pagedate", value:null},
- SELECTED : {key:"selected", value:null},
- TITLE : {key:"title", value:""},
- CLOSE : {key:"close", value:false},
- IFRAME : {key:"iframe", value:(YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) ? true : false},
- MINDATE : {key:"mindate", value:null},
- MAXDATE : {key:"maxdate", value:null},
- MULTI_SELECT : {key:"multi_select", value:false},
- START_WEEKDAY : {key:"start_weekday", value:0},
- SHOW_WEEKDAYS : {key:"show_weekdays", value:true},
- SHOW_WEEK_HEADER : {key:"show_week_header", value:false},
- SHOW_WEEK_FOOTER : {key:"show_week_footer", value:false},
- HIDE_BLANK_WEEKS : {key:"hide_blank_weeks", value:false},
- NAV_ARROW_LEFT: {key:"nav_arrow_left", value:null} ,
- NAV_ARROW_RIGHT : {key:"nav_arrow_right", value:null} ,
- MONTHS_SHORT : {key:"months_short", value:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]},
- MONTHS_LONG: {key:"months_long", value:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]},
- WEEKDAYS_1CHAR: {key:"weekdays_1char", value:["S", "M", "T", "W", "T", "F", "S"]},
- WEEKDAYS_SHORT: {key:"weekdays_short", value:["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]},
- WEEKDAYS_MEDIUM: {key:"weekdays_medium", value:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]},
- WEEKDAYS_LONG: {key:"weekdays_long", value:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]},
- LOCALE_MONTHS:{key:"locale_months", value:"long"},
- LOCALE_WEEKDAYS:{key:"locale_weekdays", value:"short"},
- DATE_DELIMITER:{key:"date_delimiter", value:","},
- DATE_FIELD_DELIMITER:{key:"date_field_delimiter", value:"/"},
- DATE_RANGE_DELIMITER:{key:"date_range_delimiter", value:"-"},
- MY_MONTH_POSITION:{key:"my_month_position", value:1},
- MY_YEAR_POSITION:{key:"my_year_position", value:2},
- MD_MONTH_POSITION:{key:"md_month_position", value:1},
- MD_DAY_POSITION:{key:"md_day_position", value:2},
- MDY_MONTH_POSITION:{key:"mdy_month_position", value:1},
- MDY_DAY_POSITION:{key:"mdy_day_position", value:2},
- MDY_YEAR_POSITION:{key:"mdy_year_position", value:3},
- MY_LABEL_MONTH_POSITION:{key:"my_label_month_position", value:1},
- MY_LABEL_YEAR_POSITION:{key:"my_label_year_position", value:2},
- MY_LABEL_MONTH_SUFFIX:{key:"my_label_month_suffix", value:" "},
- MY_LABEL_YEAR_SUFFIX:{key:"my_label_year_suffix", value:""},
- NAV: {key:"navigator", value: null},
- STRINGS : {
- key:"strings",
- value: {
- previousMonth : "Previous Month",
- nextMonth : "Next Month",
- close: "Close"
- },
- supercedes : ["close", "title"]
- }
-};
-
-var DEF_CFG = Calendar._DEFAULT_CONFIG;
-
-/**
-* The set of Custom Event types supported by the Calendar
-* @property YAHOO.widget.Calendar._EVENT_TYPES
-* @final
-* @static
-* @private
-* @type Object
-*/
-Calendar._EVENT_TYPES = {
- BEFORE_SELECT : "beforeSelect",
- SELECT : "select",
- BEFORE_DESELECT : "beforeDeselect",
- DESELECT : "deselect",
- CHANGE_PAGE : "changePage",
- BEFORE_RENDER : "beforeRender",
- RENDER : "render",
- BEFORE_DESTROY : "beforeDestroy",
- DESTROY : "destroy",
- RESET : "reset",
- CLEAR : "clear",
- BEFORE_HIDE : "beforeHide",
- HIDE : "hide",
- BEFORE_SHOW : "beforeShow",
- SHOW : "show",
- BEFORE_HIDE_NAV : "beforeHideNav",
- HIDE_NAV : "hideNav",
- BEFORE_SHOW_NAV : "beforeShowNav",
- SHOW_NAV : "showNav",
- BEFORE_RENDER_NAV : "beforeRenderNav",
- RENDER_NAV : "renderNav"
-};
-
-/**
-* The set of default style constants for the Calendar
-* @property YAHOO.widget.Calendar._STYLES
-* @final
-* @static
-* @private
-* @type Object
-*/
-Calendar._STYLES = {
- CSS_ROW_HEADER: "calrowhead",
- CSS_ROW_FOOTER: "calrowfoot",
- CSS_CELL : "calcell",
- CSS_CELL_SELECTOR : "selector",
- CSS_CELL_SELECTED : "selected",
- CSS_CELL_SELECTABLE : "selectable",
- CSS_CELL_RESTRICTED : "restricted",
- CSS_CELL_TODAY : "today",
- CSS_CELL_OOM : "oom",
- CSS_CELL_OOB : "previous",
- CSS_HEADER : "calheader",
- CSS_HEADER_TEXT : "calhead",
- CSS_BODY : "calbody",
- CSS_WEEKDAY_CELL : "calweekdaycell",
- CSS_WEEKDAY_ROW : "calweekdayrow",
- CSS_FOOTER : "calfoot",
- CSS_CALENDAR : "yui-calendar",
- CSS_SINGLE : "single",
- CSS_CONTAINER : "yui-calcontainer",
- CSS_NAV_LEFT : "calnavleft",
- CSS_NAV_RIGHT : "calnavright",
- CSS_NAV : "calnav",
- CSS_CLOSE : "calclose",
- CSS_CELL_TOP : "calcelltop",
- CSS_CELL_LEFT : "calcellleft",
- CSS_CELL_RIGHT : "calcellright",
- CSS_CELL_BOTTOM : "calcellbottom",
- CSS_CELL_HOVER : "calcellhover",
- CSS_CELL_HIGHLIGHT1 : "highlight1",
- CSS_CELL_HIGHLIGHT2 : "highlight2",
- CSS_CELL_HIGHLIGHT3 : "highlight3",
- CSS_CELL_HIGHLIGHT4 : "highlight4"
-};
-
-Calendar.prototype = {
-
- /**
- * The configuration object used to set up the calendars various locale and style options.
- * @property Config
- * @private
- * @deprecated Configuration properties should be set by calling Calendar.cfg.setProperty.
- * @type Object
- */
- Config : null,
-
- /**
- * The parent CalendarGroup, only to be set explicitly by the parent group
- * @property parent
- * @type CalendarGroup
- */
- parent : null,
-
- /**
- * The index of this item in the parent group
- * @property index
- * @type Number
- */
- index : -1,
-
- /**
- * The collection of calendar table cells
- * @property cells
- * @type HTMLTableCellElement[]
- */
- cells : null,
-
- /**
- * The collection of calendar cell dates that is parallel to the cells collection. The array contains dates field arrays in the format of [YYYY, M, D].
- * @property cellDates
- * @type Array[](Number[])
- */
- cellDates : null,
-
- /**
- * The id that uniquely identifies this Calendar.
- * @property id
- * @type String
- */
- id : null,
-
- /**
- * The unique id associated with the Calendar's container
- * @property containerId
- * @type String
- */
- containerId: null,
-
- /**
- * The DOM element reference that points to this calendar's container element. The calendar will be inserted into this element when the shell is rendered.
- * @property oDomContainer
- * @type HTMLElement
- */
- oDomContainer : null,
-
- /**
- * A Date object representing today's date.
- * @property today
- * @type Date
- */
- today : null,
-
- /**
- * The list of render functions, along with required parameters, used to render cells.
- * @property renderStack
- * @type Array[]
- */
- renderStack : null,
-
- /**
- * A copy of the initial render functions created before rendering.
- * @property _renderStack
- * @private
- * @type Array
- */
- _renderStack : null,
-
- /**
- * A reference to the CalendarNavigator instance created for this Calendar.
- * Will be null if the "navigator" configuration property has not been set
- * @property oNavigator
- * @type CalendarNavigator
- */
- oNavigator : null,
-
- /**
- * The private list of initially selected dates.
- * @property _selectedDates
- * @private
- * @type Array
- */
- _selectedDates : null,
-
- /**
- * A map of DOM event handlers to attach to cells associated with specific CSS class names
- * @property domEventMap
- * @type Object
- */
- domEventMap : null,
-
- /**
- * Protected helper used to parse Calendar constructor/init arguments.
- *
- * As of 2.4.0, Calendar supports a simpler constructor
- * signature. This method reconciles arguments
- * received in the pre 2.4.0 and 2.4.0 formats.
- *
- * @protected
- * @method _parseArgs
- * @param {Array} Function "arguments" array
- * @return {Object} Object with id, container, config properties containing
- * the reconciled argument values.
- **/
- _parseArgs : function(args) {
- /*
- 2.4.0 Constructors signatures
-
- new Calendar(String)
- new Calendar(HTMLElement)
- new Calendar(String, ConfigObject)
- new Calendar(HTMLElement, ConfigObject)
-
- Pre 2.4.0 Constructor signatures
-
- new Calendar(String, String)
- new Calendar(String, HTMLElement)
- new Calendar(String, String, ConfigObject)
- new Calendar(String, HTMLElement, ConfigObject)
- */
- var nArgs = {id:null, container:null, config:null};
-
- if (args && args.length && args.length > 0) {
- switch (args.length) {
- case 1:
- nArgs.id = null;
- nArgs.container = args[0];
- nArgs.config = null;
- break;
- case 2:
- if (Lang.isObject(args[1]) && !args[1].tagName && !(args[1] instanceof String)) {
- nArgs.id = null;
- nArgs.container = args[0];
- nArgs.config = args[1];
- } else {
- nArgs.id = args[0];
- nArgs.container = args[1];
- nArgs.config = null;
- }
- break;
- default: // 3+
- nArgs.id = args[0];
- nArgs.container = args[1];
- nArgs.config = args[2];
- break;
- }
- } else {
- this.logger.log("Invalid constructor/init arguments", "error");
- }
- return nArgs;
- },
-
- /**
- * Initializes the Calendar widget.
- * @method init
- *
- * @param {String} id optional The id of the table element that will represent the Calendar widget. As of 2.4.0, this argument is optional.
- * @param {String | HTMLElement} container The id of the container div element that will wrap the Calendar table, or a reference to a DIV element which exists in the document.
- * @param {Object} config optional The configuration object containing the initial configuration values for the Calendar.
- */
- init : function(id, container, config) {
- // Normalize 2.4.0, pre 2.4.0 args
- var nArgs = this._parseArgs(arguments);
-
- id = nArgs.id;
- container = nArgs.container;
- config = nArgs.config;
-
- this.oDomContainer = Dom.get(container);
- if (!this.oDomContainer) { this.logger.log("Container not found in document.", "error"); }
-
- if (!this.oDomContainer.id) {
- this.oDomContainer.id = Dom.generateId();
- }
- if (!id) {
- id = this.oDomContainer.id + "_t";
- }
-
- this.id = id;
- this.containerId = this.oDomContainer.id;
-
- this.logger = new YAHOO.widget.LogWriter("Calendar " + this.id);
- this.initEvents();
-
- this.today = new Date();
- DateMath.clearTime(this.today);
-
- /**
- * The Config object used to hold the configuration variables for the Calendar
- * @property cfg
- * @type YAHOO.util.Config
- */
- this.cfg = new YAHOO.util.Config(this);
-
- /**
- * The local object which contains the Calendar's options
- * @property Options
- * @type Object
- */
- this.Options = {};
-
- /**
- * The local object which contains the Calendar's locale settings
- * @property Locale
- * @type Object
- */
- this.Locale = {};
-
- this.initStyles();
-
- Dom.addClass(this.oDomContainer, this.Style.CSS_CONTAINER);
- Dom.addClass(this.oDomContainer, this.Style.CSS_SINGLE);
-
- this.cellDates = [];
- this.cells = [];
- this.renderStack = [];
- this._renderStack = [];
-
- this.setupConfig();
-
- if (config) {
- this.cfg.applyConfig(config, true);
- }
-
- this.cfg.fireQueue();
- },
-
- /**
- * Default Config listener for the iframe property. If the iframe config property is set to true,
- * renders the built-in IFRAME shim if the container is relatively or absolutely positioned.
- *
- * @method configIframe
- */
- configIframe : function(type, args, obj) {
- var useIframe = args[0];
-
- if (!this.parent) {
- if (Dom.inDocument(this.oDomContainer)) {
- if (useIframe) {
- var pos = Dom.getStyle(this.oDomContainer, "position");
-
- if (pos == "absolute" || pos == "relative") {
-
- if (!Dom.inDocument(this.iframe)) {
- this.iframe = document.createElement("iframe");
- this.iframe.src = "javascript:false;";
-
- Dom.setStyle(this.iframe, "opacity", "0");
-
- if (YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) {
- Dom.addClass(this.iframe, "fixedsize");
- }
-
- this.oDomContainer.insertBefore(this.iframe, this.oDomContainer.firstChild);
- }
- }
- } else {
- if (this.iframe) {
- if (this.iframe.parentNode) {
- this.iframe.parentNode.removeChild(this.iframe);
- }
- this.iframe = null;
- }
- }
- }
- }
- },
-
- /**
- * Default handler for the "title" property
- * @method configTitle
- */
- configTitle : function(type, args, obj) {
- var title = args[0];
-
- // "" disables title bar
- if (title) {
- this.createTitleBar(title);
- } else {
- var close = this.cfg.getProperty(DEF_CFG.CLOSE.key);
- if (!close) {
- this.removeTitleBar();
- } else {
- this.createTitleBar(" ");
- }
- }
- },
-
- /**
- * Default handler for the "close" property
- * @method configClose
- */
- configClose : function(type, args, obj) {
- var close = args[0],
- title = this.cfg.getProperty(DEF_CFG.TITLE.key);
-
- if (close) {
- if (!title) {
- this.createTitleBar(" ");
- }
- this.createCloseButton();
- } else {
- this.removeCloseButton();
- if (!title) {
- this.removeTitleBar();
- }
- }
- },
-
- /**
- * Initializes Calendar's built-in CustomEvents
- * @method initEvents
- */
- initEvents : function() {
-
- var defEvents = Calendar._EVENT_TYPES,
- CE = YAHOO.util.CustomEvent,
- cal = this; // To help with minification
-
- /**
- * Fired before a date selection is made
- * @event beforeSelectEvent
- */
- cal.beforeSelectEvent = new CE(defEvents.BEFORE_SELECT);
-
- /**
- * Fired when a date selection is made
- * @event selectEvent
- * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
- */
- cal.selectEvent = new CE(defEvents.SELECT);
-
- /**
- * Fired before a date or set of dates is deselected
- * @event beforeDeselectEvent
- */
- cal.beforeDeselectEvent = new CE(defEvents.BEFORE_DESELECT);
-
- /**
- * Fired when a date or set of dates is deselected
- * @event deselectEvent
- * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
- */
- cal.deselectEvent = new CE(defEvents.DESELECT);
-
- /**
- * Fired when the Calendar page is changed
- * @event changePageEvent
- */
- cal.changePageEvent = new CE(defEvents.CHANGE_PAGE);
-
- /**
- * Fired before the Calendar is rendered
- * @event beforeRenderEvent
- */
- cal.beforeRenderEvent = new CE(defEvents.BEFORE_RENDER);
-
- /**
- * Fired when the Calendar is rendered
- * @event renderEvent
- */
- cal.renderEvent = new CE(defEvents.RENDER);
-
- /**
- * Fired just before the Calendar is to be destroyed
- * @event beforeDestroyEvent
- */
- cal.beforeDestroyEvent = new CE(defEvents.BEFORE_DESTROY);
-
- /**
- * Fired after the Calendar is destroyed. This event should be used
- * for notification only. When this event is fired, important Calendar instance
- * properties, dom references and event listeners have already been
- * removed/dereferenced, and hence the Calendar instance is not in a usable
- * state.
- *
- * @event destroyEvent
- */
- cal.destroyEvent = new CE(defEvents.DESTROY);
-
- /**
- * Fired when the Calendar is reset
- * @event resetEvent
- */
- cal.resetEvent = new CE(defEvents.RESET);
-
- /**
- * Fired when the Calendar is cleared
- * @event clearEvent
- */
- cal.clearEvent = new CE(defEvents.CLEAR);
-
- /**
- * Fired just before the Calendar is to be shown
- * @event beforeShowEvent
- */
- cal.beforeShowEvent = new CE(defEvents.BEFORE_SHOW);
-
- /**
- * Fired after the Calendar is shown
- * @event showEvent
- */
- cal.showEvent = new CE(defEvents.SHOW);
-
- /**
- * Fired just before the Calendar is to be hidden
- * @event beforeHideEvent
- */
- cal.beforeHideEvent = new CE(defEvents.BEFORE_HIDE);
-
- /**
- * Fired after the Calendar is hidden
- * @event hideEvent
- */
- cal.hideEvent = new CE(defEvents.HIDE);
-
- /**
- * Fired just before the CalendarNavigator is to be shown
- * @event beforeShowNavEvent
- */
- cal.beforeShowNavEvent = new CE(defEvents.BEFORE_SHOW_NAV);
-
- /**
- * Fired after the CalendarNavigator is shown
- * @event showNavEvent
- */
- cal.showNavEvent = new CE(defEvents.SHOW_NAV);
-
- /**
- * Fired just before the CalendarNavigator is to be hidden
- * @event beforeHideNavEvent
- */
- cal.beforeHideNavEvent = new CE(defEvents.BEFORE_HIDE_NAV);
-
- /**
- * Fired after the CalendarNavigator is hidden
- * @event hideNavEvent
- */
- cal.hideNavEvent = new CE(defEvents.HIDE_NAV);
-
- /**
- * Fired just before the CalendarNavigator is to be rendered
- * @event beforeRenderNavEvent
- */
- cal.beforeRenderNavEvent = new CE(defEvents.BEFORE_RENDER_NAV);
-
- /**
- * Fired after the CalendarNavigator is rendered
- * @event renderNavEvent
- */
- cal.renderNavEvent = new CE(defEvents.RENDER_NAV);
-
- cal.beforeSelectEvent.subscribe(cal.onBeforeSelect, this, true);
- cal.selectEvent.subscribe(cal.onSelect, this, true);
- cal.beforeDeselectEvent.subscribe(cal.onBeforeDeselect, this, true);
- cal.deselectEvent.subscribe(cal.onDeselect, this, true);
- cal.changePageEvent.subscribe(cal.onChangePage, this, true);
- cal.renderEvent.subscribe(cal.onRender, this, true);
- cal.resetEvent.subscribe(cal.onReset, this, true);
- cal.clearEvent.subscribe(cal.onClear, this, true);
- },
-
- /**
- * The default event handler for clicks on the "Previous Month" navigation UI
- *
- * @method doPreviousMonthNav
- * @param {DOMEvent} e The DOM event
- * @param {Calendar} cal A reference to the calendar
- */
- doPreviousMonthNav : function(e, cal) {
- Event.preventDefault(e);
- // previousMonth invoked in a timeout, to allow
- // event to bubble up, with correct target. Calling
- // previousMonth, will call render which will remove
- // HTML which generated the event, resulting in an
- // invalid event target in certain browsers.
- setTimeout(function() {
- cal.previousMonth();
- var navs = Dom.getElementsByClassName(cal.Style.CSS_NAV_LEFT, "a", cal.oDomContainer);
- if (navs && navs[0]) {
- try {
- navs[0].focus();
- } catch (e) {
- // ignore
- }
- }
- }, 0);
- },
-
- /**
- * The default event handler for clicks on the "Next Month" navigation UI
- *
- * @method doNextMonthNav
- * @param {DOMEvent} e The DOM event
- * @param {Calendar} cal A reference to the calendar
- */
- doNextMonthNav : function(e, cal) {
- Event.preventDefault(e);
- setTimeout(function() {
- cal.nextMonth();
- var navs = Dom.getElementsByClassName(cal.Style.CSS_NAV_RIGHT, "a", cal.oDomContainer);
- if (navs && navs[0]) {
- try {
- navs[0].focus();
- } catch (e) {
- // ignore
- }
- }
- }, 0);
- },
-
- /**
- * The default event handler for date cell selection. Currently attached to
- * the Calendar's bounding box, referenced by it's <a href="#property_oDomContainer">oDomContainer</a> property.
- *
- * @method doSelectCell
- * @param {DOMEvent} e The DOM event
- * @param {Calendar} cal A reference to the calendar
- */
- doSelectCell : function(e, cal) {
- var cell, d, date, index;
-
- var target = Event.getTarget(e),
- tagName = target.tagName.toLowerCase(),
- defSelector = false;
-
- while (tagName != "td" && !Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
-
- if (!defSelector && tagName == "a" && Dom.hasClass(target, cal.Style.CSS_CELL_SELECTOR)) {
- defSelector = true;
- }
-
- target = target.parentNode;
- tagName = target.tagName.toLowerCase();
-
- if (target == this.oDomContainer || tagName == "html") {
- return;
- }
- }
-
- if (defSelector) {
- // Stop link href navigation for default renderer
- Event.preventDefault(e);
- }
-
- cell = target;
-
- if (Dom.hasClass(cell, cal.Style.CSS_CELL_SELECTABLE)) {
- index = cal.getIndexFromId(cell.id);
- if (index > -1) {
- d = cal.cellDates[index];
- if (d) {
- date = DateMath.getDate(d[0],d[1]-1,d[2]);
-
- var link;
-
- cal.logger.log("Selecting cell " + index + " via click", "info");
- if (cal.Options.MULTI_SELECT) {
- link = cell.getElementsByTagName("a")[0];
- if (link) {
- link.blur();
- }
-
- var cellDate = cal.cellDates[index];
- var cellDateIndex = cal._indexOfSelectedFieldArray(cellDate);
-
- if (cellDateIndex > -1) {
- cal.deselectCell(index);
- } else {
- cal.selectCell(index);
- }
-
- } else {
- link = cell.getElementsByTagName("a")[0];
- if (link) {
- link.blur();
- }
- cal.selectCell(index);
- }
- }
- }
- }
- },
-
- /**
- * The event that is executed when the user hovers over a cell
- * @method doCellMouseOver
- * @param {DOMEvent} e The event
- * @param {Calendar} cal A reference to the calendar passed by the Event utility
- */
- doCellMouseOver : function(e, cal) {
- var target;
- if (e) {
- target = Event.getTarget(e);
- } else {
- target = this;
- }
-
- while (target.tagName && target.tagName.toLowerCase() != "td") {
- target = target.parentNode;
- if (!target.tagName || target.tagName.toLowerCase() == "html") {
- return;
- }
- }
-
- if (Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
- Dom.addClass(target, cal.Style.CSS_CELL_HOVER);
- }
- },
-
- /**
- * The event that is executed when the user moves the mouse out of a cell
- * @method doCellMouseOut
- * @param {DOMEvent} e The event
- * @param {Calendar} cal A reference to the calendar passed by the Event utility
- */
- doCellMouseOut : function(e, cal) {
- var target;
- if (e) {
- target = Event.getTarget(e);
- } else {
- target = this;
- }
-
- while (target.tagName && target.tagName.toLowerCase() != "td") {
- target = target.parentNode;
- if (!target.tagName || target.tagName.toLowerCase() == "html") {
- return;
- }
- }
-
- if (Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
- Dom.removeClass(target, cal.Style.CSS_CELL_HOVER);
- }
- },
-
- setupConfig : function() {
- var cfg = this.cfg;
-
- /**
- * The month/year representing the current visible Calendar date (mm/yyyy)
- * @config pagedate
- * @type String | Date
- * @default today's date
- */
- cfg.addProperty(DEF_CFG.PAGEDATE.key, { value:new Date(), handler:this.configPageDate } );
-
- /**
- * The date or range of dates representing the current Calendar selection
- * @config selected
- * @type String
- * @default []
- */
- cfg.addProperty(DEF_CFG.SELECTED.key, { value:[], handler:this.configSelected } );
-
- /**
- * The title to display above the Calendar's month header
- * @config title
- * @type String
- * @default ""
- */
- cfg.addProperty(DEF_CFG.TITLE.key, { value:DEF_CFG.TITLE.value, handler:this.configTitle } );
-
- /**
- * Whether or not a close button should be displayed for this Calendar
- * @config close
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.CLOSE.key, { value:DEF_CFG.CLOSE.value, handler:this.configClose } );
-
- /**
- * Whether or not an iframe shim should be placed under the Calendar to prevent select boxes from bleeding through in Internet Explorer 6 and below.
- * This property is enabled by default for IE6 and below. It is disabled by default for other browsers for performance reasons, but can be
- * enabled if required.
- *
- * @config iframe
- * @type Boolean
- * @default true for IE6 and below, false for all other browsers
- */
- cfg.addProperty(DEF_CFG.IFRAME.key, { value:DEF_CFG.IFRAME.value, handler:this.configIframe, validator:cfg.checkBoolean } );
-
- /**
- * The minimum selectable date in the current Calendar (mm/dd/yyyy)
- * @config mindate
- * @type String | Date
- * @default null
- */
- cfg.addProperty(DEF_CFG.MINDATE.key, { value:DEF_CFG.MINDATE.value, handler:this.configMinDate } );
-
- /**
- * The maximum selectable date in the current Calendar (mm/dd/yyyy)
- * @config maxdate
- * @type String | Date
- * @default null
- */
- cfg.addProperty(DEF_CFG.MAXDATE.key, { value:DEF_CFG.MAXDATE.value, handler:this.configMaxDate } );
-
-
- // Options properties
-
- /**
- * True if the Calendar should allow multiple selections. False by default.
- * @config MULTI_SELECT
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.MULTI_SELECT.key, { value:DEF_CFG.MULTI_SELECT.value, handler:this.configOptions, validator:cfg.checkBoolean } );
-
- /**
- * The weekday the week begins on. Default is 0 (Sunday = 0, Monday = 1 ... Saturday = 6).
- * @config START_WEEKDAY
- * @type number
- * @default 0
- */
- cfg.addProperty(DEF_CFG.START_WEEKDAY.key, { value:DEF_CFG.START_WEEKDAY.value, handler:this.configOptions, validator:cfg.checkNumber } );
-
- /**
- * True if the Calendar should show weekday labels. True by default.
- * @config SHOW_WEEKDAYS
- * @type Boolean
- * @default true
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEKDAYS.key, { value:DEF_CFG.SHOW_WEEKDAYS.value, handler:this.configOptions, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should show week row headers. False by default.
- * @config SHOW_WEEK_HEADER
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEK_HEADER.key, { value:DEF_CFG.SHOW_WEEK_HEADER.value, handler:this.configOptions, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should show week row footers. False by default.
- * @config SHOW_WEEK_FOOTER
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEK_FOOTER.key,{ value:DEF_CFG.SHOW_WEEK_FOOTER.value, handler:this.configOptions, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should suppress weeks that are not a part of the current month. False by default.
- * @config HIDE_BLANK_WEEKS
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.HIDE_BLANK_WEEKS.key, { value:DEF_CFG.HIDE_BLANK_WEEKS.value, handler:this.configOptions, validator:cfg.checkBoolean } );
-
- /**
- * The image that should be used for the left navigation arrow.
- * @config NAV_ARROW_LEFT
- * @type String
- * @deprecated You can customize the image by overriding the default CSS class for the left arrow - "calnavleft"
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV_ARROW_LEFT.key, { value:DEF_CFG.NAV_ARROW_LEFT.value, handler:this.configOptions } );
-
- /**
- * The image that should be used for the right navigation arrow.
- * @config NAV_ARROW_RIGHT
- * @type String
- * @deprecated You can customize the image by overriding the default CSS class for the right arrow - "calnavright"
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV_ARROW_RIGHT.key, { value:DEF_CFG.NAV_ARROW_RIGHT.value, handler:this.configOptions } );
-
- // Locale properties
-
- /**
- * The short month labels for the current locale.
- * @config MONTHS_SHORT
- * @type String[]
- * @default ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
- */
- cfg.addProperty(DEF_CFG.MONTHS_SHORT.key, { value:DEF_CFG.MONTHS_SHORT.value, handler:this.configLocale } );
-
- /**
- * The long month labels for the current locale.
- * @config MONTHS_LONG
- * @type String[]
- * @default ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
- */
- cfg.addProperty(DEF_CFG.MONTHS_LONG.key, { value:DEF_CFG.MONTHS_LONG.value, handler:this.configLocale } );
-
- /**
- * The 1-character weekday labels for the current locale.
- * @config WEEKDAYS_1CHAR
- * @type String[]
- * @default ["S", "M", "T", "W", "T", "F", "S"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_1CHAR.key, { value:DEF_CFG.WEEKDAYS_1CHAR.value, handler:this.configLocale } );
-
- /**
- * The short weekday labels for the current locale.
- * @config WEEKDAYS_SHORT
- * @type String[]
- * @default ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_SHORT.key, { value:DEF_CFG.WEEKDAYS_SHORT.value, handler:this.configLocale } );
-
- /**
- * The medium weekday labels for the current locale.
- * @config WEEKDAYS_MEDIUM
- * @type String[]
- * @default ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_MEDIUM.key, { value:DEF_CFG.WEEKDAYS_MEDIUM.value, handler:this.configLocale } );
-
- /**
- * The long weekday labels for the current locale.
- * @config WEEKDAYS_LONG
- * @type String[]
- * @default ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_LONG.key, { value:DEF_CFG.WEEKDAYS_LONG.value, handler:this.configLocale } );
-
- /**
- * Refreshes the locale values used to build the Calendar.
- * @method refreshLocale
- * @private
- */
- var refreshLocale = function() {
- cfg.refireEvent(DEF_CFG.LOCALE_MONTHS.key);
- cfg.refireEvent(DEF_CFG.LOCALE_WEEKDAYS.key);
- };
-
- cfg.subscribeToConfigEvent(DEF_CFG.START_WEEKDAY.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.MONTHS_SHORT.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.MONTHS_LONG.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_1CHAR.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_SHORT.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_MEDIUM.key, refreshLocale, this, true);
- cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_LONG.key, refreshLocale, this, true);
-
- /**
- * The setting that determines which length of month labels should be used. Possible values are "short" and "long".
- * @config LOCALE_MONTHS
- * @type String
- * @default "long"
- */
- cfg.addProperty(DEF_CFG.LOCALE_MONTHS.key, { value:DEF_CFG.LOCALE_MONTHS.value, handler:this.configLocaleValues } );
-
- /**
- * The setting that determines which length of weekday labels should be used. Possible values are "1char", "short", "medium", and "long".
- * @config LOCALE_WEEKDAYS
- * @type String
- * @default "short"
- */
- cfg.addProperty(DEF_CFG.LOCALE_WEEKDAYS.key, { value:DEF_CFG.LOCALE_WEEKDAYS.value, handler:this.configLocaleValues } );
-
- /**
- * The value used to delimit individual dates in a date string passed to various Calendar functions.
- * @config DATE_DELIMITER
- * @type String
- * @default ","
- */
- cfg.addProperty(DEF_CFG.DATE_DELIMITER.key, { value:DEF_CFG.DATE_DELIMITER.value, handler:this.configLocale } );
-
- /**
- * The value used to delimit date fields in a date string passed to various Calendar functions.
- * @config DATE_FIELD_DELIMITER
- * @type String
- * @default "/"
- */
- cfg.addProperty(DEF_CFG.DATE_FIELD_DELIMITER.key, { value:DEF_CFG.DATE_FIELD_DELIMITER.value, handler:this.configLocale } );
-
- /**
- * The value used to delimit date ranges in a date string passed to various Calendar functions.
- * @config DATE_RANGE_DELIMITER
- * @type String
- * @default "-"
- */
- cfg.addProperty(DEF_CFG.DATE_RANGE_DELIMITER.key, { value:DEF_CFG.DATE_RANGE_DELIMITER.value, handler:this.configLocale } );
-
- /**
- * The position of the month in a month/year date string
- * @config MY_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MY_MONTH_POSITION.key, { value:DEF_CFG.MY_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in a month/year date string
- * @config MY_YEAR_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MY_YEAR_POSITION.key, { value:DEF_CFG.MY_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in a month/day date string
- * @config MD_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MD_MONTH_POSITION.key, { value:DEF_CFG.MD_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the day in a month/year date string
- * @config MD_DAY_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MD_DAY_POSITION.key, { value:DEF_CFG.MD_DAY_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in a month/day/year date string
- * @config MDY_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MDY_MONTH_POSITION.key, { value:DEF_CFG.MDY_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the day in a month/day/year date string
- * @config MDY_DAY_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MDY_DAY_POSITION.key, { value:DEF_CFG.MDY_DAY_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in a month/day/year date string
- * @config MDY_YEAR_POSITION
- * @type Number
- * @default 3
- */
- cfg.addProperty(DEF_CFG.MDY_YEAR_POSITION.key, { value:DEF_CFG.MDY_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in the month year label string used as the Calendar header
- * @config MY_LABEL_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_POSITION.key, { value:DEF_CFG.MY_LABEL_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in the month year label string used as the Calendar header
- * @config MY_LABEL_YEAR_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_POSITION.key, { value:DEF_CFG.MY_LABEL_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
-
- /**
- * The suffix used after the month when rendering the Calendar header
- * @config MY_LABEL_MONTH_SUFFIX
- * @type String
- * @default " "
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_SUFFIX.key, { value:DEF_CFG.MY_LABEL_MONTH_SUFFIX.value, handler:this.configLocale } );
-
- /**
- * The suffix used after the year when rendering the Calendar header
- * @config MY_LABEL_YEAR_SUFFIX
- * @type String
- * @default ""
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_SUFFIX.key, { value:DEF_CFG.MY_LABEL_YEAR_SUFFIX.value, handler:this.configLocale } );
-
- /**
- * Configuration for the Month/Year CalendarNavigator UI which allows the user to jump directly to a
- * specific Month/Year without having to scroll sequentially through months.
- * <p>
- * Setting this property to null (default value) or false, will disable the CalendarNavigator UI.
- * </p>
- * <p>
- * Setting this property to true will enable the CalendarNavigatior UI with the default CalendarNavigator configuration values.
- * </p>
- * <p>
- * This property can also be set to an object literal containing configuration properties for the CalendarNavigator UI.
- * The configuration object expects the the following case-sensitive properties, with the "strings" property being a nested object.
- * Any properties which are not provided will use the default values (defined in the CalendarNavigator class).
- * </p>
- * <dl>
- * <dt>strings</dt>
- * <dd><em>Object</em> : An object with the properties shown below, defining the string labels to use in the Navigator's UI
- * <dl>
- * <dt>month</dt><dd><em>String</em> : The string to use for the month label. Defaults to "Month".</dd>
- * <dt>year</dt><dd><em>String</em> : The string to use for the year label. Defaults to "Year".</dd>
- * <dt>submit</dt><dd><em>String</em> : The string to use for the submit button label. Defaults to "Okay".</dd>
- * <dt>cancel</dt><dd><em>String</em> : The string to use for the cancel button label. Defaults to "Cancel".</dd>
- * <dt>invalidYear</dt><dd><em>String</em> : The string to use for invalid year values. Defaults to "Year needs to be a number".</dd>
- * </dl>
- * </dd>
- * <dt>monthFormat</dt><dd><em>String</em> : The month format to use. Either YAHOO.widget.Calendar.LONG, or YAHOO.widget.Calendar.SHORT. Defaults to YAHOO.widget.Calendar.LONG</dd>
- * <dt>initialFocus</dt><dd><em>String</em> : Either "year" or "month" specifying which input control should get initial focus. Defaults to "year"</dd>
- * </dl>
- * <p>E.g.</p>
- * <pre>
- * var navConfig = {
- * strings: {
- * month:"Calendar Month",
- * year:"Calendar Year",
- * submit: "Submit",
- * cancel: "Cancel",
- * invalidYear: "Please enter a valid year"
- * },
- * monthFormat: YAHOO.widget.Calendar.SHORT,
- * initialFocus: "month"
- * }
- * </pre>
- * @config navigator
- * @type {Object|Boolean}
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV.key, { value:DEF_CFG.NAV.value, handler:this.configNavigator } );
-
- /**
- * The map of UI strings which the Calendar UI uses.
- *
- * @config strings
- * @type {Object}
- * @default An object with the properties shown below:
- * <dl>
- * <dt>previousMonth</dt><dd><em>String</em> : The string to use for the "Previous Month" navigation UI. Defaults to "Previous Month".</dd>
- * <dt>nextMonth</dt><dd><em>String</em> : The string to use for the "Next Month" navigation UI. Defaults to "Next Month".</dd>
- * <dt>close</dt><dd><em>String</em> : The string to use for the close button label. Defaults to "Close".</dd>
- * </dl>
- */
- cfg.addProperty(DEF_CFG.STRINGS.key, {
- value:DEF_CFG.STRINGS.value,
- handler:this.configStrings,
- validator: function(val) {
- return Lang.isObject(val);
- },
- supercedes:DEF_CFG.STRINGS.supercedes
- });
- },
-
- /**
- * The default handler for the "strings" property
- * @method configStrings
- */
- configStrings : function(type, args, obj) {
- var val = Lang.merge(DEF_CFG.STRINGS.value, args[0]);
- this.cfg.setProperty(DEF_CFG.STRINGS.key, val, true);
- },
-
- /**
- * The default handler for the "pagedate" property
- * @method configPageDate
- */
- configPageDate : function(type, args, obj) {
- this.cfg.setProperty(DEF_CFG.PAGEDATE.key, this._parsePageDate(args[0]), true);
- },
-
- /**
- * The default handler for the "mindate" property
- * @method configMinDate
- */
- configMinDate : function(type, args, obj) {
- var val = args[0];
- if (Lang.isString(val)) {
- val = this._parseDate(val);
- this.cfg.setProperty(DEF_CFG.MINDATE.key, DateMath.getDate(val[0],(val[1]-1),val[2]));
- }
- },
-
- /**
- * The default handler for the "maxdate" property
- * @method configMaxDate
- */
- configMaxDate : function(type, args, obj) {
- var val = args[0];
- if (Lang.isString(val)) {
- val = this._parseDate(val);
- this.cfg.setProperty(DEF_CFG.MAXDATE.key, DateMath.getDate(val[0],(val[1]-1),val[2]));
- }
- },
-
- /**
- * The default handler for the "selected" property
- * @method configSelected
- */
- configSelected : function(type, args, obj) {
- var selected = args[0],
- cfgSelected = DEF_CFG.SELECTED.key;
-
- if (selected) {
- if (Lang.isString(selected)) {
- this.cfg.setProperty(cfgSelected, this._parseDates(selected), true);
- }
- }
- if (! this._selectedDates) {
- this._selectedDates = this.cfg.getProperty(cfgSelected);
- }
- },
-
- /**
- * The default handler for all configuration options properties
- * @method configOptions
- */
- configOptions : function(type, args, obj) {
- this.Options[type.toUpperCase()] = args[0];
- },
-
- /**
- * The default handler for all configuration locale properties
- * @method configLocale
- */
- configLocale : function(type, args, obj) {
- this.Locale[type.toUpperCase()] = args[0];
-
- this.cfg.refireEvent(DEF_CFG.LOCALE_MONTHS.key);
- this.cfg.refireEvent(DEF_CFG.LOCALE_WEEKDAYS.key);
- },
-
- /**
- * The default handler for all configuration locale field length properties
- * @method configLocaleValues
- */
- configLocaleValues : function(type, args, obj) {
-
- type = type.toLowerCase();
-
- var val = args[0],
- cfg = this.cfg,
- Locale = this.Locale;
-
- switch (type) {
- case DEF_CFG.LOCALE_MONTHS.key:
- switch (val) {
- case Calendar.SHORT:
- Locale.LOCALE_MONTHS = cfg.getProperty(DEF_CFG.MONTHS_SHORT.key).concat();
- break;
- case Calendar.LONG:
- Locale.LOCALE_MONTHS = cfg.getProperty(DEF_CFG.MONTHS_LONG.key).concat();
- break;
- }
- break;
- case DEF_CFG.LOCALE_WEEKDAYS.key:
- switch (val) {
- case Calendar.ONE_CHAR:
- Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_1CHAR.key).concat();
- break;
- case Calendar.SHORT:
- Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_SHORT.key).concat();
- break;
- case Calendar.MEDIUM:
- Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_MEDIUM.key).concat();
- break;
- case Calendar.LONG:
- Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_LONG.key).concat();
- break;
- }
-
- var START_WEEKDAY = cfg.getProperty(DEF_CFG.START_WEEKDAY.key);
-
- if (START_WEEKDAY > 0) {
- for (var w=0; w < START_WEEKDAY; ++w) {
- Locale.LOCALE_WEEKDAYS.push(Locale.LOCALE_WEEKDAYS.shift());
- }
- }
- break;
- }
- },
-
- /**
- * The default handler for the "navigator" property
- * @method configNavigator
- */
- configNavigator : function(type, args, obj) {
- var val = args[0];
- if (YAHOO.widget.CalendarNavigator && (val === true || Lang.isObject(val))) {
- if (!this.oNavigator) {
- this.oNavigator = new YAHOO.widget.CalendarNavigator(this);
- // Cleanup DOM Refs/Events before innerHTML is removed.
- this.beforeRenderEvent.subscribe(function () {
- if (!this.pages) {
- this.oNavigator.erase();
- }
- }, this, true);
- }
- } else {
- if (this.oNavigator) {
- this.oNavigator.destroy();
- this.oNavigator = null;
- }
- }
- },
-
- /**
- * Defines the style constants for the Calendar
- * @method initStyles
- */
- initStyles : function() {
-
- var defStyle = Calendar._STYLES;
-
- this.Style = {
- /**
- * @property Style.CSS_ROW_HEADER
- */
- CSS_ROW_HEADER: defStyle.CSS_ROW_HEADER,
- /**
- * @property Style.CSS_ROW_FOOTER
- */
- CSS_ROW_FOOTER: defStyle.CSS_ROW_FOOTER,
- /**
- * @property Style.CSS_CELL
- */
- CSS_CELL : defStyle.CSS_CELL,
- /**
- * @property Style.CSS_CELL_SELECTOR
- */
- CSS_CELL_SELECTOR : defStyle.CSS_CELL_SELECTOR,
- /**
- * @property Style.CSS_CELL_SELECTED
- */
- CSS_CELL_SELECTED : defStyle.CSS_CELL_SELECTED,
- /**
- * @property Style.CSS_CELL_SELECTABLE
- */
- CSS_CELL_SELECTABLE : defStyle.CSS_CELL_SELECTABLE,
- /**
- * @property Style.CSS_CELL_RESTRICTED
- */
- CSS_CELL_RESTRICTED : defStyle.CSS_CELL_RESTRICTED,
- /**
- * @property Style.CSS_CELL_TODAY
- */
- CSS_CELL_TODAY : defStyle.CSS_CELL_TODAY,
- /**
- * @property Style.CSS_CELL_OOM
- */
- CSS_CELL_OOM : defStyle.CSS_CELL_OOM,
- /**
- * @property Style.CSS_CELL_OOB
- */
- CSS_CELL_OOB : defStyle.CSS_CELL_OOB,
- /**
- * @property Style.CSS_HEADER
- */
- CSS_HEADER : defStyle.CSS_HEADER,
- /**
- * @property Style.CSS_HEADER_TEXT
- */
- CSS_HEADER_TEXT : defStyle.CSS_HEADER_TEXT,
- /**
- * @property Style.CSS_BODY
- */
- CSS_BODY : defStyle.CSS_BODY,
- /**
- * @property Style.CSS_WEEKDAY_CELL
- */
- CSS_WEEKDAY_CELL : defStyle.CSS_WEEKDAY_CELL,
- /**
- * @property Style.CSS_WEEKDAY_ROW
- */
- CSS_WEEKDAY_ROW : defStyle.CSS_WEEKDAY_ROW,
- /**
- * @property Style.CSS_FOOTER
- */
- CSS_FOOTER : defStyle.CSS_FOOTER,
- /**
- * @property Style.CSS_CALENDAR
- */
- CSS_CALENDAR : defStyle.CSS_CALENDAR,
- /**
- * @property Style.CSS_SINGLE
- */
- CSS_SINGLE : defStyle.CSS_SINGLE,
- /**
- * @property Style.CSS_CONTAINER
- */
- CSS_CONTAINER : defStyle.CSS_CONTAINER,
- /**
- * @property Style.CSS_NAV_LEFT
- */
- CSS_NAV_LEFT : defStyle.CSS_NAV_LEFT,
- /**
- * @property Style.CSS_NAV_RIGHT
- */
- CSS_NAV_RIGHT : defStyle.CSS_NAV_RIGHT,
- /**
- * @property Style.CSS_NAV
- */
- CSS_NAV : defStyle.CSS_NAV,
- /**
- * @property Style.CSS_CLOSE
- */
- CSS_CLOSE : defStyle.CSS_CLOSE,
- /**
- * @property Style.CSS_CELL_TOP
- */
- CSS_CELL_TOP : defStyle.CSS_CELL_TOP,
- /**
- * @property Style.CSS_CELL_LEFT
- */
- CSS_CELL_LEFT : defStyle.CSS_CELL_LEFT,
- /**
- * @property Style.CSS_CELL_RIGHT
- */
- CSS_CELL_RIGHT : defStyle.CSS_CELL_RIGHT,
- /**
- * @property Style.CSS_CELL_BOTTOM
- */
- CSS_CELL_BOTTOM : defStyle.CSS_CELL_BOTTOM,
- /**
- * @property Style.CSS_CELL_HOVER
- */
- CSS_CELL_HOVER : defStyle.CSS_CELL_HOVER,
- /**
- * @property Style.CSS_CELL_HIGHLIGHT1
- */
- CSS_CELL_HIGHLIGHT1 : defStyle.CSS_CELL_HIGHLIGHT1,
- /**
- * @property Style.CSS_CELL_HIGHLIGHT2
- */
- CSS_CELL_HIGHLIGHT2 : defStyle.CSS_CELL_HIGHLIGHT2,
- /**
- * @property Style.CSS_CELL_HIGHLIGHT3
- */
- CSS_CELL_HIGHLIGHT3 : defStyle.CSS_CELL_HIGHLIGHT3,
- /**
- * @property Style.CSS_CELL_HIGHLIGHT4
- */
- CSS_CELL_HIGHLIGHT4 : defStyle.CSS_CELL_HIGHLIGHT4
- };
- },
-
- /**
- * Builds the date label that will be displayed in the calendar header or
- * footer, depending on configuration.
- * @method buildMonthLabel
- * @return {String} The formatted calendar month label
- */
- buildMonthLabel : function() {
- return this._buildMonthLabel(this.cfg.getProperty(DEF_CFG.PAGEDATE.key));
- },
-
- /**
- * Helper method, to format a Month Year string, given a JavaScript Date, based on the
- * Calendar localization settings
- *
- * @method _buildMonthLabel
- * @private
- * @param {Date} date
- * @return {String} Formated month, year string
- */
- _buildMonthLabel : function(date) {
- var monthLabel = this.Locale.LOCALE_MONTHS[date.getMonth()] + this.Locale.MY_LABEL_MONTH_SUFFIX,
- yearLabel = date.getFullYear() + this.Locale.MY_LABEL_YEAR_SUFFIX;
-
- if (this.Locale.MY_LABEL_MONTH_POSITION == 2 || this.Locale.MY_LABEL_YEAR_POSITION == 1) {
- return yearLabel + monthLabel;
- } else {
- return monthLabel + yearLabel;
- }
- },
-
- /**
- * Builds the date digit that will be displayed in calendar cells
- * @method buildDayLabel
- * @param {Date} workingDate The current working date
- * @return {String} The formatted day label
- */
- buildDayLabel : function(workingDate) {
- return workingDate.getDate();
- },
-
- /**
- * Creates the title bar element and adds it to Calendar container DIV
- *
- * @method createTitleBar
- * @param {String} strTitle The title to display in the title bar
- * @return The title bar element
- */
- createTitleBar : function(strTitle) {
- var tDiv = Dom.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE, "div", this.oDomContainer)[0] || document.createElement("div");
- tDiv.className = YAHOO.widget.CalendarGroup.CSS_2UPTITLE;
- tDiv.innerHTML = strTitle;
- this.oDomContainer.insertBefore(tDiv, this.oDomContainer.firstChild);
-
- Dom.addClass(this.oDomContainer, "withtitle");
-
- return tDiv;
- },
-
- /**
- * Removes the title bar element from the DOM
- *
- * @method removeTitleBar
- */
- removeTitleBar : function() {
- var tDiv = Dom.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE, "div", this.oDomContainer)[0] || null;
- if (tDiv) {
- Event.purgeElement(tDiv);
- this.oDomContainer.removeChild(tDiv);
- }
- Dom.removeClass(this.oDomContainer, "withtitle");
- },
-
- /**
- * Creates the close button HTML element and adds it to Calendar container DIV
- *
- * @method createCloseButton
- * @return The close HTML element created
- */
- createCloseButton : function() {
- var cssClose = YAHOO.widget.CalendarGroup.CSS_2UPCLOSE,
- DEPR_CLOSE_PATH = "us/my/bn/x_d.gif",
- lnk = Dom.getElementsByClassName("link-close", "a", this.oDomContainer)[0],
- strings = this.cfg.getProperty(DEF_CFG.STRINGS.key),
- closeStr = (strings && strings.close) ? strings.close : "";
-
- if (!lnk) {
- lnk = document.createElement("a");
- Event.addListener(lnk, "click", function(e, cal) {
- cal.hide();
- Event.preventDefault(e);
- }, this);
- }
-
- lnk.href = "#";
- lnk.className = "link-close";
-
- if (Calendar.IMG_ROOT !== null) {
- var img = Dom.getElementsByClassName(cssClose, "img", lnk)[0] || document.createElement("img");
- img.src = Calendar.IMG_ROOT + DEPR_CLOSE_PATH;
- img.className = cssClose;
- lnk.appendChild(img);
- } else {
- lnk.innerHTML = '<span class="' + cssClose + ' ' + this.Style.CSS_CLOSE + '">' + closeStr + '</span>';
- }
- this.oDomContainer.appendChild(lnk);
-
- return lnk;
- },
-
- /**
- * Removes the close button HTML element from the DOM
- *
- * @method removeCloseButton
- */
- removeCloseButton : function() {
- var btn = Dom.getElementsByClassName("link-close", "a", this.oDomContainer)[0] || null;
- if (btn) {
- Event.purgeElement(btn);
- this.oDomContainer.removeChild(btn);
- }
- },
-
- /**
- * Renders the calendar header.
- * @method renderHeader
- * @param {Array} html The current working HTML array
- * @return {Array} The current working HTML array
- */
- renderHeader : function(html) {
-
- this.logger.log("Rendering header", "render");
-
- var colSpan = 7,
- DEPR_NAV_LEFT = "us/tr/callt.gif",
- DEPR_NAV_RIGHT = "us/tr/calrt.gif",
- cfg = this.cfg,
- pageDate = cfg.getProperty(DEF_CFG.PAGEDATE.key),
- strings= cfg.getProperty(DEF_CFG.STRINGS.key),
- prevStr = (strings && strings.previousMonth) ? strings.previousMonth : "",
- nextStr = (strings && strings.nextMonth) ? strings.nextMonth : "",
- monthLabel;
-
- if (cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key)) {
- colSpan += 1;
- }
-
- if (cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key)) {
- colSpan += 1;
- }
-
- html[html.length] = "<thead>";
- html[html.length] = "<tr>";
- html[html.length] = '<th colspan="' + colSpan + '" class="' + this.Style.CSS_HEADER_TEXT + '">';
- html[html.length] = '<div class="' + this.Style.CSS_HEADER + '">';
-
- var renderLeft, renderRight = false;
-
- if (this.parent) {
- if (this.index === 0) {
- renderLeft = true;
- }
- if (this.index == (this.parent.cfg.getProperty("pages") -1)) {
- renderRight = true;
- }
- } else {
- renderLeft = true;
- renderRight = true;
- }
-
- if (renderLeft) {
- monthLabel = this._buildMonthLabel(DateMath.subtract(pageDate, DateMath.MONTH, 1));
-
- var leftArrow = cfg.getProperty(DEF_CFG.NAV_ARROW_LEFT.key);
- // Check for deprecated customization - If someone set IMG_ROOT, but didn't set NAV_ARROW_LEFT, then set NAV_ARROW_LEFT to the old deprecated value
- if (leftArrow === null && Calendar.IMG_ROOT !== null) {
- leftArrow = Calendar.IMG_ROOT + DEPR_NAV_LEFT;
- }
- var leftStyle = (leftArrow === null) ? "" : ' style="background-image:url(' + leftArrow + ')"';
- html[html.length] = '<a class="' + this.Style.CSS_NAV_LEFT + '"' + leftStyle + ' href="#">' + prevStr + ' (' + monthLabel + ')' + '</a>';
- }
-
- var lbl = this.buildMonthLabel();
- var cal = this.parent || this;
- if (cal.cfg.getProperty("navigator")) {
- lbl = "<a class=\"" + this.Style.CSS_NAV + "\" href=\"#\">" + lbl + "</a>";
- }
- html[html.length] = lbl;
-
- if (renderRight) {
- monthLabel = this._buildMonthLabel(DateMath.add(pageDate, DateMath.MONTH, 1));
-
- var rightArrow = cfg.getProperty(DEF_CFG.NAV_ARROW_RIGHT.key);
- if (rightArrow === null && Calendar.IMG_ROOT !== null) {
- rightArrow = Calendar.IMG_ROOT + DEPR_NAV_RIGHT;
- }
- var rightStyle = (rightArrow === null) ? "" : ' style="background-image:url(' + rightArrow + ')"';
- html[html.length] = '<a class="' + this.Style.CSS_NAV_RIGHT + '"' + rightStyle + ' href="#">' + nextStr + ' (' + monthLabel + ')' + '</a>';
- }
-
- html[html.length] = '</div>\n</th>\n</tr>';
-
- if (cfg.getProperty(DEF_CFG.SHOW_WEEKDAYS.key)) {
- html = this.buildWeekdays(html);
- }
-
- html[html.length] = '</thead>';
-
- return html;
- },
-
- /**
- * Renders the Calendar's weekday headers.
- * @method buildWeekdays
- * @param {Array} html The current working HTML array
- * @return {Array} The current working HTML array
- */
- buildWeekdays : function(html) {
-
- html[html.length] = '<tr class="' + this.Style.CSS_WEEKDAY_ROW + '">';
-
- if (this.cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key)) {
- html[html.length] = '<th> </th>';
- }
-
- for(var i=0;i < this.Locale.LOCALE_WEEKDAYS.length; ++i) {
- html[html.length] = '<th class="calweekdaycell">' + this.Locale.LOCALE_WEEKDAYS[i] + '</th>';
- }
-
- if (this.cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key)) {
- html[html.length] = '<th> </th>';
- }
-
- html[html.length] = '</tr>';
-
- return html;
- },
-
- /**
- * Renders the calendar body.
- * @method renderBody
- * @param {Date} workingDate The current working Date being used for the render process
- * @param {Array} html The current working HTML array
- * @return {Array} The current working HTML array
- */
- renderBody : function(workingDate, html) {
- this.logger.log("Rendering body", "render");
-
- var startDay = this.cfg.getProperty(DEF_CFG.START_WEEKDAY.key);
-
- this.preMonthDays = workingDate.getDay();
- if (startDay > 0) {
- this.preMonthDays -= startDay;
- }
- if (this.preMonthDays < 0) {
- this.preMonthDays += 7;
- }
-
- this.monthDays = DateMath.findMonthEnd(workingDate).getDate();
- this.postMonthDays = Calendar.DISPLAY_DAYS-this.preMonthDays-this.monthDays;
-
- this.logger.log(this.preMonthDays + " preciding out-of-month days", "render");
- this.logger.log(this.monthDays + " month days", "render");
- this.logger.log(this.postMonthDays + " post-month days", "render");
-
- workingDate = DateMath.subtract(workingDate, DateMath.DAY, this.preMonthDays);
- this.logger.log("Calendar page starts on " + workingDate, "render");
-
- var weekNum,
- weekClass,
- weekPrefix = "w",
- cellPrefix = "_cell",
- workingDayPrefix = "wd",
- dayPrefix = "d",
- cellRenderers,
- renderer,
- t = this.today,
- cfg = this.cfg,
- todayYear = t.getFullYear(),
- todayMonth = t.getMonth(),
- todayDate = t.getDate(),
- useDate = cfg.getProperty(DEF_CFG.PAGEDATE.key),
- hideBlankWeeks = cfg.getProperty(DEF_CFG.HIDE_BLANK_WEEKS.key),
- showWeekFooter = cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key),
- showWeekHeader = cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key),
- mindate = cfg.getProperty(DEF_CFG.MINDATE.key),
- maxdate = cfg.getProperty(DEF_CFG.MAXDATE.key);
-
- if (mindate) {
- mindate = DateMath.clearTime(mindate);
- }
- if (maxdate) {
- maxdate = DateMath.clearTime(maxdate);
- }
-
- html[html.length] = '<tbody class="m' + (useDate.getMonth()+1) + ' ' + this.Style.CSS_BODY + '">';
-
- var i = 0,
- tempDiv = document.createElement("div"),
- cell = document.createElement("td");
-
- tempDiv.appendChild(cell);
-
- var cal = this.parent || this;
-
- for (var r=0;r<6;r++) {
- weekNum = DateMath.getWeekNumber(workingDate, startDay);
- weekClass = weekPrefix + weekNum;
-
- // Local OOM check for performance, since we already have pagedate
- if (r !== 0 && hideBlankWeeks === true && workingDate.getMonth() != useDate.getMonth()) {
- break;
- } else {
- html[html.length] = '<tr class="' + weekClass + '">';
-
- if (showWeekHeader) { html = this.renderRowHeader(weekNum, html); }
-
- for (var d=0; d < 7; d++){ // Render actual days
-
- cellRenderers = [];
-
- this.clearElement(cell);
- cell.className = this.Style.CSS_CELL;
- cell.id = this.id + cellPrefix + i;
- this.logger.log("Rendering cell " + cell.id + " (" + workingDate.getFullYear() + "-" + (workingDate.getMonth()+1) + "-" + workingDate.getDate() + ")", "cellrender");
-
- if (workingDate.getDate() == todayDate &&
- workingDate.getMonth() == todayMonth &&
- workingDate.getFullYear() == todayYear) {
- cellRenderers[cellRenderers.length]=cal.renderCellStyleToday;
- }
-
- var workingArray = [workingDate.getFullYear(),workingDate.getMonth()+1,workingDate.getDate()];
- this.cellDates[this.cellDates.length] = workingArray; // Add this date to cellDates
-
- // Local OOM check for performance, since we already have pagedate
- if (workingDate.getMonth() != useDate.getMonth()) {
- cellRenderers[cellRenderers.length]=cal.renderCellNotThisMonth;
- } else {
- Dom.addClass(cell, workingDayPrefix + workingDate.getDay());
- Dom.addClass(cell, dayPrefix + workingDate.getDate());
-
- for (var s=0;s<this.renderStack.length;++s) {
-
- renderer = null;
-
- var rArray = this.renderStack[s],
- type = rArray[0],
- month,
- day,
- year;
-
- switch (type) {
- case Calendar.DATE:
- month = rArray[1][1];
- day = rArray[1][2];
- year = rArray[1][0];
-
- if (workingDate.getMonth()+1 == month && workingDate.getDate() == day && workingDate.getFullYear() == year) {
- renderer = rArray[2];
- this.renderStack.splice(s,1);
- }
- break;
- case Calendar.MONTH_DAY:
- month = rArray[1][0];
- day = rArray[1][1];
-
- if (workingDate.getMonth()+1 == month && workingDate.getDate() == day) {
- renderer = rArray[2];
- this.renderStack.splice(s,1);
- }
- break;
- case Calendar.RANGE:
- var date1 = rArray[1][0],
- date2 = rArray[1][1],
- d1month = date1[1],
- d1day = date1[2],
- d1year = date1[0],
- d1 = DateMath.getDate(d1year, d1month-1, d1day),
- d2month = date2[1],
- d2day = date2[2],
- d2year = date2[0],
- d2 = DateMath.getDate(d2year, d2month-1, d2day);
-
- if (workingDate.getTime() >= d1.getTime() && workingDate.getTime() <= d2.getTime()) {
- renderer = rArray[2];
-
- if (workingDate.getTime()==d2.getTime()) {
- this.renderStack.splice(s,1);
- }
- }
- break;
- case Calendar.WEEKDAY:
- var weekday = rArray[1][0];
- if (workingDate.getDay()+1 == weekday) {
- renderer = rArray[2];
- }
- break;
- case Calendar.MONTH:
- month = rArray[1][0];
- if (workingDate.getMonth()+1 == month) {
- renderer = rArray[2];
- }
- break;
- }
-
- if (renderer) {
- cellRenderers[cellRenderers.length]=renderer;
- }
- }
-
- }
-
- if (this._indexOfSelectedFieldArray(workingArray) > -1) {
- cellRenderers[cellRenderers.length]=cal.renderCellStyleSelected;
- }
-
- if ((mindate && (workingDate.getTime() < mindate.getTime())) ||
- (maxdate && (workingDate.getTime() > maxdate.getTime()))
- ) {
- cellRenderers[cellRenderers.length]=cal.renderOutOfBoundsDate;
- } else {
- cellRenderers[cellRenderers.length]=cal.styleCellDefault;
- cellRenderers[cellRenderers.length]=cal.renderCellDefault;
- }
-
- for (var x=0; x < cellRenderers.length; ++x) {
- this.logger.log("renderer[" + x + "] for (" + workingDate.getFullYear() + "-" + (workingDate.getMonth()+1) + "-" + workingDate.getDate() + ")", "cellrender");
- if (cellRenderers[x].call(cal, workingDate, cell) == Calendar.STOP_RENDER) {
- break;
- }
- }
-
- workingDate.setTime(workingDate.getTime() + DateMath.ONE_DAY_MS);
- // Just in case we crossed DST/Summertime boundaries
- workingDate = DateMath.clearTime(workingDate);
-
- if (i >= 0 && i <= 6) {
- Dom.addClass(cell, this.Style.CSS_CELL_TOP);
- }
- if ((i % 7) === 0) {
- Dom.addClass(cell, this.Style.CSS_CELL_LEFT);
- }
- if (((i+1) % 7) === 0) {
- Dom.addClass(cell, this.Style.CSS_CELL_RIGHT);
- }
-
- var postDays = this.postMonthDays;
- if (hideBlankWeeks && postDays >= 7) {
- var blankWeeks = Math.floor(postDays/7);
- for (var p=0;p<blankWeeks;++p) {
- postDays -= 7;
- }
- }
-
- if (i >= ((this.preMonthDays+postDays+this.monthDays)-7)) {
- Dom.addClass(cell, this.Style.CSS_CELL_BOTTOM);
- }
-
- html[html.length] = tempDiv.innerHTML;
- i++;
- }
-
- if (showWeekFooter) { html = this.renderRowFooter(weekNum, html); }
-
- html[html.length] = '</tr>';
- }
- }
-
- html[html.length] = '</tbody>';
-
- return html;
- },
-
- /**
- * Renders the calendar footer. In the default implementation, there is
- * no footer.
- * @method renderFooter
- * @param {Array} html The current working HTML array
- * @return {Array} The current working HTML array
- */
- renderFooter : function(html) { return html; },
-
- /**
- * Renders the calendar after it has been configured. The render() method has a specific call chain that will execute
- * when the method is called: renderHeader, renderBody, renderFooter.
- * Refer to the documentation for those methods for information on
- * individual render tasks.
- * @method render
- */
- render : function() {
- this.beforeRenderEvent.fire();
-
- // Find starting day of the current month
- var workingDate = DateMath.findMonthStart(this.cfg.getProperty(DEF_CFG.PAGEDATE.key));
-
- this.resetRenderers();
- this.cellDates.length = 0;
-
- Event.purgeElement(this.oDomContainer, true);
-
- var html = [];
-
- html[html.length] = '<table cellSpacing="0" class="' + this.Style.CSS_CALENDAR + ' y' + workingDate.getFullYear() + '" id="' + this.id + '">';
- html = this.renderHeader(html);
- html = this.renderBody(workingDate, html);
- html = this.renderFooter(html);
- html[html.length] = '</table>';
-
- this.oDomContainer.innerHTML = html.join("\n");
-
- this.applyListeners();
- this.cells = this.oDomContainer.getElementsByTagName("td");
-
- this.cfg.refireEvent(DEF_CFG.TITLE.key);
- this.cfg.refireEvent(DEF_CFG.CLOSE.key);
- this.cfg.refireEvent(DEF_CFG.IFRAME.key);
-
- this.renderEvent.fire();
- },
-
- /**
- * Applies the Calendar's DOM listeners to applicable elements.
- * @method applyListeners
- */
- applyListeners : function() {
- var root = this.oDomContainer,
- cal = this.parent || this,
- anchor = "a",
- click = "click";
-
- var linkLeft = Dom.getElementsByClassName(this.Style.CSS_NAV_LEFT, anchor, root),
- linkRight = Dom.getElementsByClassName(this.Style.CSS_NAV_RIGHT, anchor, root);
-
- if (linkLeft && linkLeft.length > 0) {
- this.linkLeft = linkLeft[0];
- Event.addListener(this.linkLeft, click, this.doPreviousMonthNav, cal, true);
- }
-
- if (linkRight && linkRight.length > 0) {
- this.linkRight = linkRight[0];
- Event.addListener(this.linkRight, click, this.doNextMonthNav, cal, true);
- }
-
- if (cal.cfg.getProperty("navigator") !== null) {
- this.applyNavListeners();
- }
-
- if (this.domEventMap) {
- var el,elements;
- for (var cls in this.domEventMap) {
- if (Lang.hasOwnProperty(this.domEventMap, cls)) {
- var items = this.domEventMap[cls];
-
- if (! (items instanceof Array)) {
- items = [items];
- }
-
- for (var i=0;i<items.length;i++) {
- var item = items[i];
- elements = Dom.getElementsByClassName(cls, item.tag, this.oDomContainer);
-
- for (var c=0;c<elements.length;c++) {
- el = elements[c];
- Event.addListener(el, item.event, item.handler, item.scope, item.correct );
- }
- }
- }
- }
- }
-
- Event.addListener(this.oDomContainer, "click", this.doSelectCell, this);
- Event.addListener(this.oDomContainer, "mouseover", this.doCellMouseOver, this);
- Event.addListener(this.oDomContainer, "mouseout", this.doCellMouseOut, this);
- },
-
- applyNavListeners : function() {
- var calParent = this.parent || this,
- cal = this,
- navBtns = Dom.getElementsByClassName(this.Style.CSS_NAV, "a", this.oDomContainer);
-
- if (navBtns.length > 0) {
-
- Event.addListener(navBtns, "click", function (e, obj) {
- var target = Event.getTarget(e);
- // this == navBtn
- if (this === target || Dom.isAncestor(this, target)) {
- Event.preventDefault(e);
- }
- var navigator = calParent.oNavigator;
- if (navigator) {
- var pgdate = cal.cfg.getProperty("pagedate");
- navigator.setYear(pgdate.getFullYear());
- navigator.setMonth(pgdate.getMonth());
- navigator.show();
- }
- });
- }
- },
-
- /**
- * Retrieves the Date object for the specified Calendar cell
- * @method getDateByCellId
- * @param {String} id The id of the cell
- * @return {Date} The Date object for the specified Calendar cell
- */
- getDateByCellId : function(id) {
- var date = this.getDateFieldsByCellId(id);
- return (date) ? DateMath.getDate(date[0],date[1]-1,date[2]) : null;
- },
-
- /**
- * Retrieves the Date object for the specified Calendar cell
- * @method getDateFieldsByCellId
- * @param {String} id The id of the cell
- * @return {Array} The array of Date fields for the specified Calendar cell
- */
- getDateFieldsByCellId : function(id) {
- id = this.getIndexFromId(id);
- return (id > -1) ? this.cellDates[id] : null;
- },
-
- /**
- * Find the Calendar's cell index for a given date.
- * If the date is not found, the method returns -1.
- * <p>
- * The returned index can be used to lookup the cell HTMLElement
- * using the Calendar's cells array or passed to selectCell to select
- * cells by index.
- * </p>
- *
- * See <a href="#cells">cells</a>, <a href="#selectCell">selectCell</a>.
- *
- * @method getCellIndex
- * @param {Date} date JavaScript Date object, for which to find a cell index.
- * @return {Number} The index of the date in Calendars cellDates/cells arrays, or -1 if the date
- * is not on the curently rendered Calendar page.
- */
- getCellIndex : function(date) {
- var idx = -1;
- if (date) {
- var m = date.getMonth(),
- y = date.getFullYear(),
- d = date.getDate(),
- dates = this.cellDates;
-
- for (var i = 0; i < dates.length; ++i) {
- var cellDate = dates[i];
- if (cellDate[0] === y && cellDate[1] === m+1 && cellDate[2] === d) {
- idx = i;
- break;
- }
- }
- }
- return idx;
- },
-
- /**
- * Given the id used to mark each Calendar cell, this method
- * extracts the index number from the id.
- *
- * @param {String} strId The cell id
- * @return {Number} The index of the cell, or -1 if id does not contain an index number
- */
- getIndexFromId : function(strId) {
- var idx = -1,
- li = strId.lastIndexOf("_cell");
-
- if (li > -1) {
- idx = parseInt(strId.substring(li + 5), 10);
- }
-
- return idx;
- },
-
- // BEGIN BUILT-IN TABLE CELL RENDERERS
-
- /**
- * Renders a cell that falls before the minimum date or after the maximum date.
- * widget class.
- * @method renderOutOfBoundsDate
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
- * should not be terminated
- */
- renderOutOfBoundsDate : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_OOB);
- cell.innerHTML = workingDate.getDate();
- return Calendar.STOP_RENDER;
- },
-
- /**
- * Renders the row header for a week.
- * @method renderRowHeader
- * @param {Number} weekNum The week number of the current row
- * @param {Array} cell The current working HTML array
- */
- renderRowHeader : function(weekNum, html) {
- html[html.length] = '<th class="calrowhead">' + weekNum + '</th>';
- return html;
- },
-
- /**
- * Renders the row footer for a week.
- * @method renderRowFooter
- * @param {Number} weekNum The week number of the current row
- * @param {Array} cell The current working HTML array
- */
- renderRowFooter : function(weekNum, html) {
- html[html.length] = '<th class="calrowfoot">' + weekNum + '</th>';
- return html;
- },
-
- /**
- * Renders a single standard calendar cell in the calendar widget table.
- * All logic for determining how a standard default cell will be rendered is
- * encapsulated in this method, and must be accounted for when extending the
- * widget class.
- * @method renderCellDefault
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellDefault : function(workingDate, cell) {
- cell.innerHTML = '<a href="#" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";
- },
-
- /**
- * Styles a selectable cell.
- * @method styleCellDefault
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- styleCellDefault : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
- },
-
-
- /**
- * Renders a single standard calendar cell using the CSS hightlight1 style
- * @method renderCellStyleHighlight1
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellStyleHighlight1 : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT1);
- },
-
- /**
- * Renders a single standard calendar cell using the CSS hightlight2 style
- * @method renderCellStyleHighlight2
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellStyleHighlight2 : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT2);
- },
-
- /**
- * Renders a single standard calendar cell using the CSS hightlight3 style
- * @method renderCellStyleHighlight3
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellStyleHighlight3 : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT3);
- },
-
- /**
- * Renders a single standard calendar cell using the CSS hightlight4 style
- * @method renderCellStyleHighlight4
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellStyleHighlight4 : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT4);
- },
-
- /**
- * Applies the default style used for rendering today's date to the current calendar cell
- * @method renderCellStyleToday
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- */
- renderCellStyleToday : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_TODAY);
- },
-
- /**
- * Applies the default style used for rendering selected dates to the current calendar cell
- * @method renderCellStyleSelected
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
- * should not be terminated
- */
- renderCellStyleSelected : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_SELECTED);
- },
-
- /**
- * Applies the default style used for rendering dates that are not a part of the current
- * month (preceding or trailing the cells for the current month)
- * @method renderCellNotThisMonth
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
- * should not be terminated
- */
- renderCellNotThisMonth : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL_OOM);
- cell.innerHTML=workingDate.getDate();
- return Calendar.STOP_RENDER;
- },
-
- /**
- * Renders the current calendar cell as a non-selectable "black-out" date using the default
- * restricted style.
- * @method renderBodyCellRestricted
- * @param {Date} workingDate The current working Date object being used to generate the calendar
- * @param {HTMLTableCellElement} cell The current working cell in the calendar
- * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
- * should not be terminated
- */
- renderBodyCellRestricted : function(workingDate, cell) {
- Dom.addClass(cell, this.Style.CSS_CELL);
- Dom.addClass(cell, this.Style.CSS_CELL_RESTRICTED);
- cell.innerHTML=workingDate.getDate();
- return Calendar.STOP_RENDER;
- },
-
- // END BUILT-IN TABLE CELL RENDERERS
-
- // BEGIN MONTH NAVIGATION METHODS
-
- /**
- * Adds the designated number of months to the current calendar month, and sets the current
- * calendar page date to the new month.
- * @method addMonths
- * @param {Number} count The number of months to add to the current calendar
- */
- addMonths : function(count) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
- this.cfg.setProperty(cfgPageDate, DateMath.add(this.cfg.getProperty(cfgPageDate), DateMath.MONTH, count));
- this.resetRenderers();
- this.changePageEvent.fire();
- },
-
- /**
- * Subtracts the designated number of months from the current calendar month, and sets the current
- * calendar page date to the new month.
- * @method subtractMonths
- * @param {Number} count The number of months to subtract from the current calendar
- */
- subtractMonths : function(count) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
- this.cfg.setProperty(cfgPageDate, DateMath.subtract(this.cfg.getProperty(cfgPageDate), DateMath.MONTH, count));
- this.resetRenderers();
- this.changePageEvent.fire();
- },
-
- /**
- * Adds the designated number of years to the current calendar, and sets the current
- * calendar page date to the new month.
- * @method addYears
- * @param {Number} count The number of years to add to the current calendar
- */
- addYears : function(count) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
- this.cfg.setProperty(cfgPageDate, DateMath.add(this.cfg.getProperty(cfgPageDate), DateMath.YEAR, count));
- this.resetRenderers();
- this.changePageEvent.fire();
- },
-
- /**
- * Subtcats the designated number of years from the current calendar, and sets the current
- * calendar page date to the new month.
- * @method subtractYears
- * @param {Number} count The number of years to subtract from the current calendar
- */
- subtractYears : function(count) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
- this.cfg.setProperty(cfgPageDate, DateMath.subtract(this.cfg.getProperty(cfgPageDate), DateMath.YEAR, count));
- this.resetRenderers();
- this.changePageEvent.fire();
- },
-
- /**
- * Navigates to the next month page in the calendar widget.
- * @method nextMonth
- */
- nextMonth : function() {
- this.addMonths(1);
- },
-
- /**
- * Navigates to the previous month page in the calendar widget.
- * @method previousMonth
- */
- previousMonth : function() {
- this.subtractMonths(1);
- },
-
- /**
- * Navigates to the next year in the currently selected month in the calendar widget.
- * @method nextYear
- */
- nextYear : function() {
- this.addYears(1);
- },
-
- /**
- * Navigates to the previous year in the currently selected month in the calendar widget.
- * @method previousYear
- */
- previousYear : function() {
- this.subtractYears(1);
- },
-
- // END MONTH NAVIGATION METHODS
-
- // BEGIN SELECTION METHODS
-
- /**
- * Resets the calendar widget to the originally selected month and year, and
- * sets the calendar to the initial selection(s).
- * @method reset
- */
- reset : function() {
- this.cfg.resetProperty(DEF_CFG.SELECTED.key);
- this.cfg.resetProperty(DEF_CFG.PAGEDATE.key);
- this.resetEvent.fire();
- },
-
- /**
- * Clears the selected dates in the current calendar widget and sets the calendar
- * to the current month and year.
- * @method clear
- */
- clear : function() {
- this.cfg.setProperty(DEF_CFG.SELECTED.key, []);
- this.cfg.setProperty(DEF_CFG.PAGEDATE.key, new Date(this.today.getTime()));
- this.clearEvent.fire();
- },
-
- /**
- * Selects a date or a collection of dates on the current calendar. This method, by default,
- * does not call the render method explicitly. Once selection has completed, render must be
- * called for the changes to be reflected visually.
- *
- * Any dates which are OOB (out of bounds, not selectable) will not be selected and the array of
- * selected dates passed to the selectEvent will not contain OOB dates.
- *
- * If all dates are OOB, the no state change will occur; beforeSelect and select events will not be fired.
- *
- * @method select
- * @param {String/Date/Date[]} date The date string of dates to select in the current calendar. Valid formats are
- * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
- * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
- * This method can also take a JavaScript Date object or an array of Date objects.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- select : function(date) {
- this.logger.log("Select: " + date, "info");
-
- var aToBeSelected = this._toFieldArray(date),
- validDates = [],
- selected = [],
- cfgSelected = DEF_CFG.SELECTED.key;
-
- this.logger.log("Selection field array: " + aToBeSelected, "info");
-
- for (var a=0; a < aToBeSelected.length; ++a) {
- var toSelect = aToBeSelected[a];
-
- if (!this.isDateOOB(this._toDate(toSelect))) {
-
- if (validDates.length === 0) {
- this.beforeSelectEvent.fire();
- selected = this.cfg.getProperty(cfgSelected);
- }
- validDates.push(toSelect);
-
- if (this._indexOfSelectedFieldArray(toSelect) == -1) {
- selected[selected.length] = toSelect;
- }
- }
- }
-
- if (validDates.length === 0) { this.logger.log("All provided dates were OOB. beforeSelect and select events not fired", "info"); }
-
- if (validDates.length > 0) {
- if (this.parent) {
- this.parent.cfg.setProperty(cfgSelected, selected);
- } else {
- this.cfg.setProperty(cfgSelected, selected);
- }
- this.selectEvent.fire(validDates);
- }
-
- return this.getSelectedDates();
- },
-
- /**
- * Selects a date on the current calendar by referencing the index of the cell that should be selected.
- * This method is used to easily select a single cell (usually with a mouse click) without having to do
- * a full render. The selected style is applied to the cell directly.
- *
- * If the cell is not marked with the CSS_CELL_SELECTABLE class (as is the case by default for out of month
- * or out of bounds cells), it will not be selected and in such a case beforeSelect and select events will not be fired.
- *
- * @method selectCell
- * @param {Number} cellIndex The index of the cell to select in the current calendar.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- selectCell : function(cellIndex) {
-
- var cell = this.cells[cellIndex],
- cellDate = this.cellDates[cellIndex],
- dCellDate = this._toDate(cellDate),
- selectable = Dom.hasClass(cell, this.Style.CSS_CELL_SELECTABLE);
-
- this.logger.log("Select: " + dCellDate, "info");
- if (!selectable) {this.logger.log("The cell at cellIndex:" + cellIndex + " is not a selectable cell. beforeSelect, select events not fired", "info"); }
-
- if (selectable) {
-
- this.beforeSelectEvent.fire();
-
- var cfgSelected = DEF_CFG.SELECTED.key;
- var selected = this.cfg.getProperty(cfgSelected);
-
- var selectDate = cellDate.concat();
-
- if (this._indexOfSelectedFieldArray(selectDate) == -1) {
- selected[selected.length] = selectDate;
- }
- if (this.parent) {
- this.parent.cfg.setProperty(cfgSelected, selected);
- } else {
- this.cfg.setProperty(cfgSelected, selected);
- }
- this.renderCellStyleSelected(dCellDate,cell);
- this.selectEvent.fire([selectDate]);
-
- this.doCellMouseOut.call(cell, null, this);
- }
-
- return this.getSelectedDates();
- },
-
- /**
- * Deselects a date or a collection of dates on the current calendar. This method, by default,
- * does not call the render method explicitly. Once deselection has completed, render must be
- * called for the changes to be reflected visually.
- *
- * The method will not attempt to deselect any dates which are OOB (out of bounds, and hence not selectable)
- * and the array of deselected dates passed to the deselectEvent will not contain any OOB dates.
- *
- * If all dates are OOB, beforeDeselect and deselect events will not be fired.
- *
- * @method deselect
- * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
- * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
- * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
- * This method can also take a JavaScript Date object or an array of Date objects.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- deselect : function(date) {
- this.logger.log("Deselect: " + date, "info");
-
- var aToBeDeselected = this._toFieldArray(date),
- validDates = [],
- selected = [],
- cfgSelected = DEF_CFG.SELECTED.key;
-
- this.logger.log("Deselection field array: " + aToBeDeselected, "info");
-
- for (var a=0; a < aToBeDeselected.length; ++a) {
- var toDeselect = aToBeDeselected[a];
-
- if (!this.isDateOOB(this._toDate(toDeselect))) {
-
- if (validDates.length === 0) {
- this.beforeDeselectEvent.fire();
- selected = this.cfg.getProperty(cfgSelected);
- }
-
- validDates.push(toDeselect);
-
- var index = this._indexOfSelectedFieldArray(toDeselect);
- if (index != -1) {
- selected.splice(index,1);
- }
- }
- }
-
- if (validDates.length === 0) { this.logger.log("All provided dates were OOB. beforeDeselect and deselect events not fired");}
-
- if (validDates.length > 0) {
- if (this.parent) {
- this.parent.cfg.setProperty(cfgSelected, selected);
- } else {
- this.cfg.setProperty(cfgSelected, selected);
- }
- this.deselectEvent.fire(validDates);
- }
-
- return this.getSelectedDates();
- },
-
- /**
- * Deselects a date on the current calendar by referencing the index of the cell that should be deselected.
- * This method is used to easily deselect a single cell (usually with a mouse click) without having to do
- * a full render. The selected style is removed from the cell directly.
- *
- * If the cell is not marked with the CSS_CELL_SELECTABLE class (as is the case by default for out of month
- * or out of bounds cells), the method will not attempt to deselect it and in such a case, beforeDeselect and
- * deselect events will not be fired.
- *
- * @method deselectCell
- * @param {Number} cellIndex The index of the cell to deselect in the current calendar.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- deselectCell : function(cellIndex) {
- var cell = this.cells[cellIndex],
- cellDate = this.cellDates[cellIndex],
- cellDateIndex = this._indexOfSelectedFieldArray(cellDate);
-
- var selectable = Dom.hasClass(cell, this.Style.CSS_CELL_SELECTABLE);
- if (!selectable) { this.logger.log("The cell at cellIndex:" + cellIndex + " is not a selectable/deselectable cell", "info"); }
-
- if (selectable) {
-
- this.beforeDeselectEvent.fire();
-
- var selected = this.cfg.getProperty(DEF_CFG.SELECTED.key),
- dCellDate = this._toDate(cellDate),
- selectDate = cellDate.concat();
-
- if (cellDateIndex > -1) {
- if (this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getMonth() == dCellDate.getMonth() &&
- this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getFullYear() == dCellDate.getFullYear()) {
- Dom.removeClass(cell, this.Style.CSS_CELL_SELECTED);
- }
- selected.splice(cellDateIndex, 1);
- }
-
- if (this.parent) {
- this.parent.cfg.setProperty(DEF_CFG.SELECTED.key, selected);
- } else {
- this.cfg.setProperty(DEF_CFG.SELECTED.key, selected);
- }
-
- this.deselectEvent.fire([selectDate]);
- }
-
- return this.getSelectedDates();
- },
-
- /**
- * Deselects all dates on the current calendar.
- * @method deselectAll
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- * Assuming that this function executes properly, the return value should be an empty array.
- * However, the empty array is returned for the sake of being able to check the selection status
- * of the calendar.
- */
- deselectAll : function() {
- this.beforeDeselectEvent.fire();
-
- var cfgSelected = DEF_CFG.SELECTED.key,
- selected = this.cfg.getProperty(cfgSelected),
- count = selected.length,
- sel = selected.concat();
-
- if (this.parent) {
- this.parent.cfg.setProperty(cfgSelected, []);
- } else {
- this.cfg.setProperty(cfgSelected, []);
- }
-
- if (count > 0) {
- this.deselectEvent.fire(sel);
- }
-
- return this.getSelectedDates();
- },
-
- // END SELECTION METHODS
-
- // BEGIN TYPE CONVERSION METHODS
-
- /**
- * Converts a date (either a JavaScript Date object, or a date string) to the internal data structure
- * used to represent dates: [[yyyy,mm,dd],[yyyy,mm,dd]].
- * @method _toFieldArray
- * @private
- * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
- * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
- * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
- * This method can also take a JavaScript Date object or an array of Date objects.
- * @return {Array[](Number[])} Array of date field arrays
- */
- _toFieldArray : function(date) {
- var returnDate = [];
-
- if (date instanceof Date) {
- returnDate = [[date.getFullYear(), date.getMonth()+1, date.getDate()]];
- } else if (Lang.isString(date)) {
- returnDate = this._parseDates(date);
- } else if (Lang.isArray(date)) {
- for (var i=0;i<date.length;++i) {
- var d = date[i];
- returnDate[returnDate.length] = [d.getFullYear(),d.getMonth()+1,d.getDate()];
- }
- }
-
- return returnDate;
- },
-
- /**
- * Converts a date field array [yyyy,mm,dd] to a JavaScript Date object. The date field array
- * is the format in which dates are as provided as arguments to selectEvent and deselectEvent listeners.
- *
- * @method toDate
- * @param {Number[]} dateFieldArray The date field array to convert to a JavaScript Date.
- * @return {Date} JavaScript Date object representing the date field array.
- */
- toDate : function(dateFieldArray) {
- return this._toDate(dateFieldArray);
- },
-
- /**
- * Converts a date field array [yyyy,mm,dd] to a JavaScript Date object.
- * @method _toDate
- * @private
- * @deprecated Made public, toDate
- * @param {Number[]} dateFieldArray The date field array to convert to a JavaScript Date.
- * @return {Date} JavaScript Date object representing the date field array
- */
- _toDate : function(dateFieldArray) {
- if (dateFieldArray instanceof Date) {
- return dateFieldArray;
- } else {
- return DateMath.getDate(dateFieldArray[0],dateFieldArray[1]-1,dateFieldArray[2]);
- }
- },
-
- // END TYPE CONVERSION METHODS
-
- // BEGIN UTILITY METHODS
-
- /**
- * Converts a date field array [yyyy,mm,dd] to a JavaScript Date object.
- * @method _fieldArraysAreEqual
- * @private
- * @param {Number[]} array1 The first date field array to compare
- * @param {Number[]} array2 The first date field array to compare
- * @return {Boolean} The boolean that represents the equality of the two arrays
- */
- _fieldArraysAreEqual : function(array1, array2) {
- var match = false;
-
- if (array1[0]==array2[0]&&array1[1]==array2[1]&&array1[2]==array2[2]) {
- match=true;
- }
-
- return match;
- },
-
- /**
- * Gets the index of a date field array [yyyy,mm,dd] in the current list of selected dates.
- * @method _indexOfSelectedFieldArray
- * @private
- * @param {Number[]} find The date field array to search for
- * @return {Number} The index of the date field array within the collection of selected dates.
- * -1 will be returned if the date is not found.
- */
- _indexOfSelectedFieldArray : function(find) {
- var selected = -1,
- seldates = this.cfg.getProperty(DEF_CFG.SELECTED.key);
-
- for (var s=0;s<seldates.length;++s) {
- var sArray = seldates[s];
- if (find[0]==sArray[0]&&find[1]==sArray[1]&&find[2]==sArray[2]) {
- selected = s;
- break;
- }
- }
-
- return selected;
- },
-
- /**
- * Determines whether a given date is OOM (out of month).
- * @method isDateOOM
- * @param {Date} date The JavaScript Date object for which to check the OOM status
- * @return {Boolean} true if the date is OOM
- */
- isDateOOM : function(date) {
- return (date.getMonth() != this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getMonth());
- },
-
- /**
- * Determines whether a given date is OOB (out of bounds - less than the mindate or more than the maxdate).
- *
- * @method isDateOOB
- * @param {Date} date The JavaScript Date object for which to check the OOB status
- * @return {Boolean} true if the date is OOB
- */
- isDateOOB : function(date) {
- var minDate = this.cfg.getProperty(DEF_CFG.MINDATE.key),
- maxDate = this.cfg.getProperty(DEF_CFG.MAXDATE.key),
- dm = DateMath;
-
- if (minDate) {
- minDate = dm.clearTime(minDate);
- }
- if (maxDate) {
- maxDate = dm.clearTime(maxDate);
- }
-
- var clearedDate = new Date(date.getTime());
- clearedDate = dm.clearTime(clearedDate);
-
- return ((minDate && clearedDate.getTime() < minDate.getTime()) || (maxDate && clearedDate.getTime() > maxDate.getTime()));
- },
-
- /**
- * Parses a pagedate configuration property value. The value can either be specified as a string of form "mm/yyyy" or a Date object
- * and is parsed into a Date object normalized to the first day of the month. If no value is passed in, the month and year from today's date are used to create the Date object
- * @method _parsePageDate
- * @private
- * @param {Date|String} date Pagedate value which needs to be parsed
- * @return {Date} The Date object representing the pagedate
- */
- _parsePageDate : function(date) {
- var parsedDate;
-
- if (date) {
- if (date instanceof Date) {
- parsedDate = DateMath.findMonthStart(date);
- } else {
- var month, year, aMonthYear;
- aMonthYear = date.split(this.cfg.getProperty(DEF_CFG.DATE_FIELD_DELIMITER.key));
- month = parseInt(aMonthYear[this.cfg.getProperty(DEF_CFG.MY_MONTH_POSITION.key)-1], 10)-1;
- year = parseInt(aMonthYear[this.cfg.getProperty(DEF_CFG.MY_YEAR_POSITION.key)-1], 10);
-
- parsedDate = DateMath.getDate(year, month, 1);
- }
- } else {
- parsedDate = DateMath.getDate(this.today.getFullYear(), this.today.getMonth(), 1);
- }
- return parsedDate;
- },
-
- // END UTILITY METHODS
-
- // BEGIN EVENT HANDLERS
-
- /**
- * Event executed before a date is selected in the calendar widget.
- * @deprecated Event handlers for this event should be susbcribed to beforeSelectEvent.
- */
- onBeforeSelect : function() {
- if (this.cfg.getProperty(DEF_CFG.MULTI_SELECT.key) === false) {
- if (this.parent) {
- this.parent.callChildFunction("clearAllBodyCellStyles", this.Style.CSS_CELL_SELECTED);
- this.parent.deselectAll();
- } else {
- this.clearAllBodyCellStyles(this.Style.CSS_CELL_SELECTED);
- this.deselectAll();
- }
- }
- },
-
- /**
- * Event executed when a date is selected in the calendar widget.
- * @param {Array} selected An array of date field arrays representing which date or dates were selected. Example: [ [2006,8,6],[2006,8,7],[2006,8,8] ]
- * @deprecated Event handlers for this event should be susbcribed to selectEvent.
- */
- onSelect : function(selected) { },
-
- /**
- * Event executed before a date is deselected in the calendar widget.
- * @deprecated Event handlers for this event should be susbcribed to beforeDeselectEvent.
- */
- onBeforeDeselect : function() { },
-
- /**
- * Event executed when a date is deselected in the calendar widget.
- * @param {Array} selected An array of date field arrays representing which date or dates were deselected. Example: [ [2006,8,6],[2006,8,7],[2006,8,8] ]
- * @deprecated Event handlers for this event should be susbcribed to deselectEvent.
- */
- onDeselect : function(deselected) { },
-
- /**
- * Event executed when the user navigates to a different calendar page.
- * @deprecated Event handlers for this event should be susbcribed to changePageEvent.
- */
- onChangePage : function() {
- this.render();
- },
-
- /**
- * Event executed when the calendar widget is rendered.
- * @deprecated Event handlers for this event should be susbcribed to renderEvent.
- */
- onRender : function() { },
-
- /**
- * Event executed when the calendar widget is reset to its original state.
- * @deprecated Event handlers for this event should be susbcribed to resetEvemt.
- */
- onReset : function() { this.render(); },
-
- /**
- * Event executed when the calendar widget is completely cleared to the current month with no selections.
- * @deprecated Event handlers for this event should be susbcribed to clearEvent.
- */
- onClear : function() { this.render(); },
-
- /**
- * Validates the calendar widget. This method has no default implementation
- * and must be extended by subclassing the widget.
- * @return Should return true if the widget validates, and false if
- * it doesn't.
- * @type Boolean
- */
- validate : function() { return true; },
-
- // END EVENT HANDLERS
-
- // BEGIN DATE PARSE METHODS
-
- /**
- * Converts a date string to a date field array
- * @private
- * @param {String} sDate Date string. Valid formats are mm/dd and mm/dd/yyyy.
- * @return A date field array representing the string passed to the method
- * @type Array[](Number[])
- */
- _parseDate : function(sDate) {
- var aDate = sDate.split(this.Locale.DATE_FIELD_DELIMITER),
- rArray;
-
- if (aDate.length == 2) {
- rArray = [aDate[this.Locale.MD_MONTH_POSITION-1],aDate[this.Locale.MD_DAY_POSITION-1]];
- rArray.type = Calendar.MONTH_DAY;
- } else {
- rArray = [aDate[this.Locale.MDY_YEAR_POSITION-1],aDate[this.Locale.MDY_MONTH_POSITION-1],aDate[this.Locale.MDY_DAY_POSITION-1]];
- rArray.type = Calendar.DATE;
- }
-
- for (var i=0;i<rArray.length;i++) {
- rArray[i] = parseInt(rArray[i], 10);
- }
-
- return rArray;
- },
-
- /**
- * Converts a multi or single-date string to an array of date field arrays
- * @private
- * @param {String} sDates Date string with one or more comma-delimited dates. Valid formats are mm/dd, mm/dd/yyyy, mm/dd/yyyy-mm/dd/yyyy
- * @return An array of date field arrays
- * @type Array[](Number[])
- */
- _parseDates : function(sDates) {
- var aReturn = [],
- aDates = sDates.split(this.Locale.DATE_DELIMITER);
-
- for (var d=0;d<aDates.length;++d) {
- var sDate = aDates[d];
-
- if (sDate.indexOf(this.Locale.DATE_RANGE_DELIMITER) != -1) {
- // This is a range
- var aRange = sDate.split(this.Locale.DATE_RANGE_DELIMITER),
- dateStart = this._parseDate(aRange[0]),
- dateEnd = this._parseDate(aRange[1]),
- fullRange = this._parseRange(dateStart, dateEnd);
-
- aReturn = aReturn.concat(fullRange);
- } else {
- // This is not a range
- var aDate = this._parseDate(sDate);
- aReturn.push(aDate);
- }
- }
- return aReturn;
- },
-
- /**
- * Converts a date range to the full list of included dates
- * @private
- * @param {Number[]} startDate Date field array representing the first date in the range
- * @param {Number[]} endDate Date field array representing the last date in the range
- * @return An array of date field arrays
- * @type Array[](Number[])
- */
- _parseRange : function(startDate, endDate) {
- var dCurrent = DateMath.add(DateMath.getDate(startDate[0],startDate[1]-1,startDate[2]),DateMath.DAY,1),
- dEnd = DateMath.getDate(endDate[0], endDate[1]-1, endDate[2]),
- results = [];
-
- results.push(startDate);
- while (dCurrent.getTime() <= dEnd.getTime()) {
- results.push([dCurrent.getFullYear(),dCurrent.getMonth()+1,dCurrent.getDate()]);
- dCurrent = DateMath.add(dCurrent,DateMath.DAY,1);
- }
- return results;
- },
-
- // END DATE PARSE METHODS
-
- // BEGIN RENDERER METHODS
-
- /**
- * Resets the render stack of the current calendar to its original pre-render value.
- */
- resetRenderers : function() {
- this.renderStack = this._renderStack.concat();
- },
-
- /**
- * Removes all custom renderers added to the Calendar through the addRenderer, addMonthRenderer and
- * addWeekdayRenderer methods. Calendar's render method needs to be called after removing renderers
- * to re-render the Calendar without custom renderers applied.
- */
- removeRenderers : function() {
- this._renderStack = [];
- this.renderStack = [];
- },
-
- /**
- * Clears the inner HTML, CSS class and style information from the specified cell.
- * @method clearElement
- * @param {HTMLTableCellElement} cell The cell to clear
- */
- clearElement : function(cell) {
- cell.innerHTML = " ";
- cell.className="";
- },
-
- /**
- * Adds a renderer to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the conditions specified in the date string for this renderer.
- * @method addRenderer
- * @param {String} sDates A date string to associate with the specified renderer. Valid formats
- * include date (12/24/2005), month/day (12/24), and range (12/1/2004-1/1/2005)
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addRenderer : function(sDates, fnRender) {
- var aDates = this._parseDates(sDates);
- for (var i=0;i<aDates.length;++i) {
- var aDate = aDates[i];
-
- if (aDate.length == 2) { // this is either a range or a month/day combo
- if (aDate[0] instanceof Array) { // this is a range
- this._addRenderer(Calendar.RANGE,aDate,fnRender);
- } else { // this is a month/day combo
- this._addRenderer(Calendar.MONTH_DAY,aDate,fnRender);
- }
- } else if (aDate.length == 3) {
- this._addRenderer(Calendar.DATE,aDate,fnRender);
- }
- }
- },
-
- /**
- * The private method used for adding cell renderers to the local render stack.
- * This method is called by other methods that set the renderer type prior to the method call.
- * @method _addRenderer
- * @private
- * @param {String} type The type string that indicates the type of date renderer being added.
- * Values are YAHOO.widget.Calendar.DATE, YAHOO.widget.Calendar.MONTH_DAY, YAHOO.widget.Calendar.WEEKDAY,
- * YAHOO.widget.Calendar.RANGE, YAHOO.widget.Calendar.MONTH
- * @param {Array} aDates An array of dates used to construct the renderer. The format varies based
- * on the renderer type
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- _addRenderer : function(type, aDates, fnRender) {
- var add = [type,aDates,fnRender];
- this.renderStack.unshift(add);
- this._renderStack = this.renderStack.concat();
- },
-
- /**
- * Adds a month to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the month passed to this method.
- * @method addMonthRenderer
- * @param {Number} month The month (1-12) to associate with this renderer
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addMonthRenderer : function(month, fnRender) {
- this._addRenderer(Calendar.MONTH,[month],fnRender);
- },
-
- /**
- * Adds a weekday to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the weekday passed to this method.
- * @method addWeekdayRenderer
- * @param {Number} weekday The weekday (Sunday = 1, Monday = 2 ... Saturday = 7) to associate with this renderer
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addWeekdayRenderer : function(weekday, fnRender) {
- this._addRenderer(Calendar.WEEKDAY,[weekday],fnRender);
- },
-
- // END RENDERER METHODS
-
- // BEGIN CSS METHODS
-
- /**
- * Removes all styles from all body cells in the current calendar table.
- * @method clearAllBodyCellStyles
- * @param {style} style The CSS class name to remove from all calendar body cells
- */
- clearAllBodyCellStyles : function(style) {
- for (var c=0;c<this.cells.length;++c) {
- Dom.removeClass(this.cells[c],style);
- }
- },
-
- // END CSS METHODS
-
- // BEGIN GETTER/SETTER METHODS
- /**
- * Sets the calendar's month explicitly
- * @method setMonth
- * @param {Number} month The numeric month, from 0 (January) to 11 (December)
- */
- setMonth : function(month) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key,
- current = this.cfg.getProperty(cfgPageDate);
- current.setMonth(parseInt(month, 10));
- this.cfg.setProperty(cfgPageDate, current);
- },
-
- /**
- * Sets the calendar's year explicitly.
- * @method setYear
- * @param {Number} year The numeric 4-digit year
- */
- setYear : function(year) {
- var cfgPageDate = DEF_CFG.PAGEDATE.key,
- current = this.cfg.getProperty(cfgPageDate);
-
- current.setFullYear(parseInt(year, 10));
- this.cfg.setProperty(cfgPageDate, current);
- },
-
- /**
- * Gets the list of currently selected dates from the calendar.
- * @method getSelectedDates
- * @return {Date[]} An array of currently selected JavaScript Date objects.
- */
- getSelectedDates : function() {
- var returnDates = [],
- selected = this.cfg.getProperty(DEF_CFG.SELECTED.key);
-
- for (var d=0;d<selected.length;++d) {
- var dateArray = selected[d];
-
- var date = DateMath.getDate(dateArray[0],dateArray[1]-1,dateArray[2]);
- returnDates.push(date);
- }
-
- returnDates.sort( function(a,b) { return a-b; } );
- return returnDates;
- },
-
- /// END GETTER/SETTER METHODS ///
-
- /**
- * Hides the Calendar's outer container from view.
- * @method hide
- */
- hide : function() {
- if (this.beforeHideEvent.fire()) {
- this.oDomContainer.style.display = "none";
- this.hideEvent.fire();
- }
- },
-
- /**
- * Shows the Calendar's outer container.
- * @method show
- */
- show : function() {
- if (this.beforeShowEvent.fire()) {
- this.oDomContainer.style.display = "block";
- this.showEvent.fire();
- }
- },
-
- /**
- * Returns a string representing the current browser.
- * @deprecated As of 2.3.0, environment information is available in YAHOO.env.ua
- * @see YAHOO.env.ua
- * @property browser
- * @type String
- */
- browser : (function() {
- var ua = navigator.userAgent.toLowerCase();
- if (ua.indexOf('opera')!=-1) { // Opera (check first in case of spoof)
- return 'opera';
- } else if (ua.indexOf('msie 7')!=-1) { // IE7
- return 'ie7';
- } else if (ua.indexOf('msie') !=-1) { // IE
- return 'ie';
- } else if (ua.indexOf('safari')!=-1) { // Safari (check before Gecko because it includes "like Gecko")
- return 'safari';
- } else if (ua.indexOf('gecko') != -1) { // Gecko
- return 'gecko';
- } else {
- return false;
- }
- })(),
- /**
- * Returns a string representation of the object.
- * @method toString
- * @return {String} A string representation of the Calendar object.
- */
- toString : function() {
- return "Calendar " + this.id;
- },
-
- /**
- * Destroys the Calendar instance. The method will remove references
- * to HTML elements, remove any event listeners added by the Calendar,
- * and destroy the Config and CalendarNavigator instances it has created.
- *
- * @method destroy
- */
- destroy : function() {
-
- if (this.beforeDestroyEvent.fire()) {
- var cal = this;
-
- // Child objects
- if (cal.navigator) {
- cal.navigator.destroy();
- }
-
- if (cal.cfg) {
- cal.cfg.destroy();
- }
-
- // DOM event listeners
- Event.purgeElement(cal.oDomContainer, true);
-
- // Generated markup/DOM - Not removing the container DIV since we didn't create it.
- Dom.removeClass(cal.oDomContainer, "withtitle");
- Dom.removeClass(cal.oDomContainer, cal.Style.CSS_CONTAINER);
- Dom.removeClass(cal.oDomContainer, cal.Style.CSS_SINGLE);
- cal.oDomContainer.innerHTML = "";
-
- // JS-to-DOM references
- cal.oDomContainer = null;
- cal.cells = null;
-
- this.destroyEvent.fire();
- }
- }
-};
-
-YAHOO.widget.Calendar = Calendar;
-
-/**
-* @namespace YAHOO.widget
-* @class Calendar_Core
-* @extends YAHOO.widget.Calendar
-* @deprecated The old Calendar_Core class is no longer necessary.
-*/
-YAHOO.widget.Calendar_Core = YAHOO.widget.Calendar;
-
-YAHOO.widget.Cal_Core = YAHOO.widget.Calendar;
-
-})();
-
-(function() {
-
- var Dom = YAHOO.util.Dom,
- DateMath = YAHOO.widget.DateMath,
- Event = YAHOO.util.Event,
- Lang = YAHOO.lang,
- Calendar = YAHOO.widget.Calendar;
-
-/**
-* YAHOO.widget.CalendarGroup is a special container class for YAHOO.widget.Calendar. This class facilitates
-* the ability to have multi-page calendar views that share a single dataset and are
-* dependent on each other.
-*
-* The calendar group instance will refer to each of its elements using a 0-based index.
-* For example, to construct the placeholder for a calendar group widget with id "cal1" and
-* containerId of "cal1Container", the markup would be as follows:
-* <xmp>
-* <div id="cal1Container_0"></div>
-* <div id="cal1Container_1"></div>
-* </xmp>
-* The tables for the calendars ("cal1_0" and "cal1_1") will be inserted into those containers.
-*
-* <p>
-* <strong>NOTE: As of 2.4.0, the constructor's ID argument is optional.</strong>
-* The CalendarGroup can be constructed by simply providing a container ID string,
-* or a reference to a container DIV HTMLElement (the element needs to exist
-* in the document).
-*
-* E.g.:
-* <xmp>
-* var c = new YAHOO.widget.CalendarGroup("calContainer", configOptions);
-* </xmp>
-* or:
-* <xmp>
-* var containerDiv = YAHOO.util.Dom.get("calContainer");
-* var c = new YAHOO.widget.CalendarGroup(containerDiv, configOptions);
-* </xmp>
-* </p>
-* <p>
-* If not provided, the ID will be generated from the container DIV ID by adding an "_t" suffix.
-* For example if an ID is not provided, and the container's ID is "calContainer", the CalendarGroup's ID will be set to "calContainer_t".
-* </p>
-*
-* @namespace YAHOO.widget
-* @class CalendarGroup
-* @constructor
-* @param {String} id optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
-* @param {String | HTMLElement} container The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
-* @param {Object} config optional The configuration object containing the initial configuration values for the CalendarGroup.
-*/
-function CalendarGroup(id, containerId, config) {
- if (arguments.length > 0) {
- this.init.apply(this, arguments);
- }
-}
-
-/**
-* The set of default Config property keys and values for the CalendarGroup
-* @property YAHOO.widget.CalendarGroup._DEFAULT_CONFIG
-* @final
-* @static
-* @private
-* @type Object
-*/
-CalendarGroup._DEFAULT_CONFIG = Calendar._DEFAULT_CONFIG;
-CalendarGroup._DEFAULT_CONFIG.PAGES = {key:"pages", value:2};
-
-var DEF_CFG = CalendarGroup._DEFAULT_CONFIG;
-
-CalendarGroup.prototype = {
-
- /**
- * Initializes the calendar group. All subclasses must call this method in order for the
- * group to be initialized properly.
- * @method init
- * @param {String} id optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
- * @param {String | HTMLElement} container The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
- * @param {Object} config optional The configuration object containing the initial configuration values for the CalendarGroup.
- */
- init : function(id, container, config) {
-
- // Normalize 2.4.0, pre 2.4.0 args
- var nArgs = this._parseArgs(arguments);
-
- id = nArgs.id;
- container = nArgs.container;
- config = nArgs.config;
-
- this.oDomContainer = Dom.get(container);
- if (!this.oDomContainer) { this.logger.log("Container not found in document.", "error"); }
-
- if (!this.oDomContainer.id) {
- this.oDomContainer.id = Dom.generateId();
- }
- if (!id) {
- id = this.oDomContainer.id + "_t";
- }
-
- /**
- * The unique id associated with the CalendarGroup
- * @property id
- * @type String
- */
- this.id = id;
-
- /**
- * The unique id associated with the CalendarGroup container
- * @property containerId
- * @type String
- */
- this.containerId = this.oDomContainer.id;
-
- this.logger = new YAHOO.widget.LogWriter("CalendarGroup " + this.id);
- this.initEvents();
- this.initStyles();
-
- /**
- * The collection of Calendar pages contained within the CalendarGroup
- * @property pages
- * @type YAHOO.widget.Calendar[]
- */
- this.pages = [];
-
- Dom.addClass(this.oDomContainer, CalendarGroup.CSS_CONTAINER);
- Dom.addClass(this.oDomContainer, CalendarGroup.CSS_MULTI_UP);
-
- /**
- * The Config object used to hold the configuration variables for the CalendarGroup
- * @property cfg
- * @type YAHOO.util.Config
- */
- this.cfg = new YAHOO.util.Config(this);
-
- /**
- * The local object which contains the CalendarGroup's options
- * @property Options
- * @type Object
- */
- this.Options = {};
-
- /**
- * The local object which contains the CalendarGroup's locale settings
- * @property Locale
- * @type Object
- */
- this.Locale = {};
-
- this.setupConfig();
-
- if (config) {
- this.cfg.applyConfig(config, true);
- }
-
- this.cfg.fireQueue();
-
- // OPERA HACK FOR MISWRAPPED FLOATS
- if (YAHOO.env.ua.opera){
- this.renderEvent.subscribe(this._fixWidth, this, true);
- this.showEvent.subscribe(this._fixWidth, this, true);
- }
-
- this.logger.log("Initialized " + this.pages.length + "-page CalendarGroup", "info");
- },
-
- setupConfig : function() {
-
- var cfg = this.cfg;
-
- /**
- * The number of pages to include in the CalendarGroup. This value can only be set once, in the CalendarGroup's constructor arguments.
- * @config pages
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.PAGES.key, { value:DEF_CFG.PAGES.value, validator:cfg.checkNumber, handler:this.configPages } );
-
- /**
- * The month/year representing the current visible Calendar date (mm/yyyy)
- * @config pagedate
- * @type String | Date
- * @default today's date
- */
- cfg.addProperty(DEF_CFG.PAGEDATE.key, { value:new Date(), handler:this.configPageDate } );
-
- /**
- * The date or range of dates representing the current Calendar selection
- *
- * @config selected
- * @type String
- * @default []
- */
- cfg.addProperty(DEF_CFG.SELECTED.key, { value:[], handler:this.configSelected } );
-
- /**
- * The title to display above the CalendarGroup's month header
- * @config title
- * @type String
- * @default ""
- */
- cfg.addProperty(DEF_CFG.TITLE.key, { value:DEF_CFG.TITLE.value, handler:this.configTitle } );
-
- /**
- * Whether or not a close button should be displayed for this CalendarGroup
- * @config close
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.CLOSE.key, { value:DEF_CFG.CLOSE.value, handler:this.configClose } );
-
- /**
- * Whether or not an iframe shim should be placed under the Calendar to prevent select boxes from bleeding through in Internet Explorer 6 and below.
- * This property is enabled by default for IE6 and below. It is disabled by default for other browsers for performance reasons, but can be
- * enabled if required.
- *
- * @config iframe
- * @type Boolean
- * @default true for IE6 and below, false for all other browsers
- */
- cfg.addProperty(DEF_CFG.IFRAME.key, { value:DEF_CFG.IFRAME.value, handler:this.configIframe, validator:cfg.checkBoolean } );
-
- /**
- * The minimum selectable date in the current Calendar (mm/dd/yyyy)
- * @config mindate
- * @type String | Date
- * @default null
- */
- cfg.addProperty(DEF_CFG.MINDATE.key, { value:DEF_CFG.MINDATE.value, handler:this.delegateConfig } );
-
- /**
- * The maximum selectable date in the current Calendar (mm/dd/yyyy)
- * @config maxdate
- * @type String | Date
- * @default null
- */
- cfg.addProperty(DEF_CFG.MAXDATE.key, { value:DEF_CFG.MAXDATE.value, handler:this.delegateConfig } );
-
- // Options properties
-
- /**
- * True if the Calendar should allow multiple selections. False by default.
- * @config MULTI_SELECT
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.MULTI_SELECT.key, { value:DEF_CFG.MULTI_SELECT.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
-
- /**
- * The weekday the week begins on. Default is 0 (Sunday).
- * @config START_WEEKDAY
- * @type number
- * @default 0
- */
- cfg.addProperty(DEF_CFG.START_WEEKDAY.key, { value:DEF_CFG.START_WEEKDAY.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * True if the Calendar should show weekday labels. True by default.
- * @config SHOW_WEEKDAYS
- * @type Boolean
- * @default true
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEKDAYS.key, { value:DEF_CFG.SHOW_WEEKDAYS.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should show week row headers. False by default.
- * @config SHOW_WEEK_HEADER
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEK_HEADER.key,{ value:DEF_CFG.SHOW_WEEK_HEADER.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should show week row footers. False by default.
- * @config SHOW_WEEK_FOOTER
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.SHOW_WEEK_FOOTER.key,{ value:DEF_CFG.SHOW_WEEK_FOOTER.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
-
- /**
- * True if the Calendar should suppress weeks that are not a part of the current month. False by default.
- * @config HIDE_BLANK_WEEKS
- * @type Boolean
- * @default false
- */
- cfg.addProperty(DEF_CFG.HIDE_BLANK_WEEKS.key,{ value:DEF_CFG.HIDE_BLANK_WEEKS.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
-
- /**
- * The image that should be used for the left navigation arrow.
- * @config NAV_ARROW_LEFT
- * @type String
- * @deprecated You can customize the image by overriding the default CSS class for the left arrow - "calnavleft"
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV_ARROW_LEFT.key, { value:DEF_CFG.NAV_ARROW_LEFT.value, handler:this.delegateConfig } );
-
- /**
- * The image that should be used for the right navigation arrow.
- * @config NAV_ARROW_RIGHT
- * @type String
- * @deprecated You can customize the image by overriding the default CSS class for the right arrow - "calnavright"
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV_ARROW_RIGHT.key, { value:DEF_CFG.NAV_ARROW_RIGHT.value, handler:this.delegateConfig } );
-
- // Locale properties
-
- /**
- * The short month labels for the current locale.
- * @config MONTHS_SHORT
- * @type String[]
- * @default ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
- */
- cfg.addProperty(DEF_CFG.MONTHS_SHORT.key, { value:DEF_CFG.MONTHS_SHORT.value, handler:this.delegateConfig } );
-
- /**
- * The long month labels for the current locale.
- * @config MONTHS_LONG
- * @type String[]
- * @default ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
- */
- cfg.addProperty(DEF_CFG.MONTHS_LONG.key, { value:DEF_CFG.MONTHS_LONG.value, handler:this.delegateConfig } );
-
- /**
- * The 1-character weekday labels for the current locale.
- * @config WEEKDAYS_1CHAR
- * @type String[]
- * @default ["S", "M", "T", "W", "T", "F", "S"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_1CHAR.key, { value:DEF_CFG.WEEKDAYS_1CHAR.value, handler:this.delegateConfig } );
-
- /**
- * The short weekday labels for the current locale.
- * @config WEEKDAYS_SHORT
- * @type String[]
- * @default ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_SHORT.key, { value:DEF_CFG.WEEKDAYS_SHORT.value, handler:this.delegateConfig } );
-
- /**
- * The medium weekday labels for the current locale.
- * @config WEEKDAYS_MEDIUM
- * @type String[]
- * @default ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_MEDIUM.key, { value:DEF_CFG.WEEKDAYS_MEDIUM.value, handler:this.delegateConfig } );
-
- /**
- * The long weekday labels for the current locale.
- * @config WEEKDAYS_LONG
- * @type String[]
- * @default ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
- */
- cfg.addProperty(DEF_CFG.WEEKDAYS_LONG.key, { value:DEF_CFG.WEEKDAYS_LONG.value, handler:this.delegateConfig } );
-
- /**
- * The setting that determines which length of month labels should be used. Possible values are "short" and "long".
- * @config LOCALE_MONTHS
- * @type String
- * @default "long"
- */
- cfg.addProperty(DEF_CFG.LOCALE_MONTHS.key, { value:DEF_CFG.LOCALE_MONTHS.value, handler:this.delegateConfig } );
-
- /**
- * The setting that determines which length of weekday labels should be used. Possible values are "1char", "short", "medium", and "long".
- * @config LOCALE_WEEKDAYS
- * @type String
- * @default "short"
- */
- cfg.addProperty(DEF_CFG.LOCALE_WEEKDAYS.key, { value:DEF_CFG.LOCALE_WEEKDAYS.value, handler:this.delegateConfig } );
-
- /**
- * The value used to delimit individual dates in a date string passed to various Calendar functions.
- * @config DATE_DELIMITER
- * @type String
- * @default ","
- */
- cfg.addProperty(DEF_CFG.DATE_DELIMITER.key, { value:DEF_CFG.DATE_DELIMITER.value, handler:this.delegateConfig } );
-
- /**
- * The value used to delimit date fields in a date string passed to various Calendar functions.
- * @config DATE_FIELD_DELIMITER
- * @type String
- * @default "/"
- */
- cfg.addProperty(DEF_CFG.DATE_FIELD_DELIMITER.key,{ value:DEF_CFG.DATE_FIELD_DELIMITER.value, handler:this.delegateConfig } );
-
- /**
- * The value used to delimit date ranges in a date string passed to various Calendar functions.
- * @config DATE_RANGE_DELIMITER
- * @type String
- * @default "-"
- */
- cfg.addProperty(DEF_CFG.DATE_RANGE_DELIMITER.key,{ value:DEF_CFG.DATE_RANGE_DELIMITER.value, handler:this.delegateConfig } );
-
- /**
- * The position of the month in a month/year date string
- * @config MY_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MY_MONTH_POSITION.key, { value:DEF_CFG.MY_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in a month/year date string
- * @config MY_YEAR_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MY_YEAR_POSITION.key, { value:DEF_CFG.MY_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in a month/day date string
- * @config MD_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MD_MONTH_POSITION.key, { value:DEF_CFG.MD_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the day in a month/year date string
- * @config MD_DAY_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MD_DAY_POSITION.key, { value:DEF_CFG.MD_DAY_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in a month/day/year date string
- * @config MDY_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MDY_MONTH_POSITION.key, { value:DEF_CFG.MDY_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the day in a month/day/year date string
- * @config MDY_DAY_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MDY_DAY_POSITION.key, { value:DEF_CFG.MDY_DAY_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in a month/day/year date string
- * @config MDY_YEAR_POSITION
- * @type Number
- * @default 3
- */
- cfg.addProperty(DEF_CFG.MDY_YEAR_POSITION.key, { value:DEF_CFG.MDY_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the month in the month year label string used as the Calendar header
- * @config MY_LABEL_MONTH_POSITION
- * @type Number
- * @default 1
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_POSITION.key, { value:DEF_CFG.MY_LABEL_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The position of the year in the month year label string used as the Calendar header
- * @config MY_LABEL_YEAR_POSITION
- * @type Number
- * @default 2
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_POSITION.key, { value:DEF_CFG.MY_LABEL_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
-
- /**
- * The suffix used after the month when rendering the Calendar header
- * @config MY_LABEL_MONTH_SUFFIX
- * @type String
- * @default " "
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_SUFFIX.key, { value:DEF_CFG.MY_LABEL_MONTH_SUFFIX.value, handler:this.delegateConfig } );
-
- /**
- * The suffix used after the year when rendering the Calendar header
- * @config MY_LABEL_YEAR_SUFFIX
- * @type String
- * @default ""
- */
- cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_SUFFIX.key, { value:DEF_CFG.MY_LABEL_YEAR_SUFFIX.value, handler:this.delegateConfig } );
-
- /**
- * Configuration for the Month Year Navigation UI. By default it is disabled
- * @config NAV
- * @type Object
- * @default null
- */
- cfg.addProperty(DEF_CFG.NAV.key, { value:DEF_CFG.NAV.value, handler:this.configNavigator } );
-
- /**
- * The map of UI strings which the CalendarGroup UI uses.
- *
- * @config strings
- * @type {Object}
- * @default An object with the properties shown below:
- * <dl>
- * <dt>previousMonth</dt><dd><em>String</em> : The string to use for the "Previous Month" navigation UI. Defaults to "Previous Month".</dd>
- * <dt>nextMonth</dt><dd><em>String</em> : The string to use for the "Next Month" navigation UI. Defaults to "Next Month".</dd>
- * <dt>close</dt><dd><em>String</em> : The string to use for the close button label. Defaults to "Close".</dd>
- * </dl>
- */
- cfg.addProperty(DEF_CFG.STRINGS.key, {
- value:DEF_CFG.STRINGS.value,
- handler:this.configStrings,
- validator: function(val) {
- return Lang.isObject(val);
- },
- supercedes: DEF_CFG.STRINGS.supercedes
- });
- },
-
- /**
- * Initializes CalendarGroup's built-in CustomEvents
- * @method initEvents
- */
- initEvents : function() {
-
- var me = this,
- strEvent = "Event",
- CE = YAHOO.util.CustomEvent;
-
- /**
- * Proxy subscriber to subscribe to the CalendarGroup's child Calendars' CustomEvents
- * @method sub
- * @private
- * @param {Function} fn The function to subscribe to this CustomEvent
- * @param {Object} obj The CustomEvent's scope object
- * @param {Boolean} bOverride Whether or not to apply scope correction
- */
- var sub = function(fn, obj, bOverride) {
- for (var p=0;p<me.pages.length;++p) {
- var cal = me.pages[p];
- cal[this.type + strEvent].subscribe(fn, obj, bOverride);
- }
- };
-
- /**
- * Proxy unsubscriber to unsubscribe from the CalendarGroup's child Calendars' CustomEvents
- * @method unsub
- * @private
- * @param {Function} fn The function to subscribe to this CustomEvent
- * @param {Object} obj The CustomEvent's scope object
- */
- var unsub = function(fn, obj) {
- for (var p=0;p<me.pages.length;++p) {
- var cal = me.pages[p];
- cal[this.type + strEvent].unsubscribe(fn, obj);
- }
- };
-
- var defEvents = Calendar._EVENT_TYPES;
-
- /**
- * Fired before a date selection is made
- * @event beforeSelectEvent
- */
- me.beforeSelectEvent = new CE(defEvents.BEFORE_SELECT);
- me.beforeSelectEvent.subscribe = sub; me.beforeSelectEvent.unsubscribe = unsub;
-
- /**
- * Fired when a date selection is made
- * @event selectEvent
- * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
- */
- me.selectEvent = new CE(defEvents.SELECT);
- me.selectEvent.subscribe = sub; me.selectEvent.unsubscribe = unsub;
-
- /**
- * Fired before a date or set of dates is deselected
- * @event beforeDeselectEvent
- */
- me.beforeDeselectEvent = new CE(defEvents.BEFORE_DESELECT);
- me.beforeDeselectEvent.subscribe = sub; me.beforeDeselectEvent.unsubscribe = unsub;
-
- /**
- * Fired when a date or set of dates has been deselected
- * @event deselectEvent
- * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
- */
- me.deselectEvent = new CE(defEvents.DESELECT);
- me.deselectEvent.subscribe = sub; me.deselectEvent.unsubscribe = unsub;
-
- /**
- * Fired when the Calendar page is changed
- * @event changePageEvent
- */
- me.changePageEvent = new CE(defEvents.CHANGE_PAGE);
- me.changePageEvent.subscribe = sub; me.changePageEvent.unsubscribe = unsub;
-
- /**
- * Fired before the Calendar is rendered
- * @event beforeRenderEvent
- */
- me.beforeRenderEvent = new CE(defEvents.BEFORE_RENDER);
- me.beforeRenderEvent.subscribe = sub; me.beforeRenderEvent.unsubscribe = unsub;
-
- /**
- * Fired when the Calendar is rendered
- * @event renderEvent
- */
- me.renderEvent = new CE(defEvents.RENDER);
- me.renderEvent.subscribe = sub; me.renderEvent.unsubscribe = unsub;
-
- /**
- * Fired when the Calendar is reset
- * @event resetEvent
- */
- me.resetEvent = new CE(defEvents.RESET);
- me.resetEvent.subscribe = sub; me.resetEvent.unsubscribe = unsub;
-
- /**
- * Fired when the Calendar is cleared
- * @event clearEvent
- */
- me.clearEvent = new CE(defEvents.CLEAR);
- me.clearEvent.subscribe = sub; me.clearEvent.unsubscribe = unsub;
-
- /**
- * Fired just before the CalendarGroup is to be shown
- * @event beforeShowEvent
- */
- me.beforeShowEvent = new CE(defEvents.BEFORE_SHOW);
-
- /**
- * Fired after the CalendarGroup is shown
- * @event showEvent
- */
- me.showEvent = new CE(defEvents.SHOW);
-
- /**
- * Fired just before the CalendarGroup is to be hidden
- * @event beforeHideEvent
- */
- me.beforeHideEvent = new CE(defEvents.BEFORE_HIDE);
-
- /**
- * Fired after the CalendarGroup is hidden
- * @event hideEvent
- */
- me.hideEvent = new CE(defEvents.HIDE);
-
- /**
- * Fired just before the CalendarNavigator is to be shown
- * @event beforeShowNavEvent
- */
- me.beforeShowNavEvent = new CE(defEvents.BEFORE_SHOW_NAV);
-
- /**
- * Fired after the CalendarNavigator is shown
- * @event showNavEvent
- */
- me.showNavEvent = new CE(defEvents.SHOW_NAV);
-
- /**
- * Fired just before the CalendarNavigator is to be hidden
- * @event beforeHideNavEvent
- */
- me.beforeHideNavEvent = new CE(defEvents.BEFORE_HIDE_NAV);
-
- /**
- * Fired after the CalendarNavigator is hidden
- * @event hideNavEvent
- */
- me.hideNavEvent = new CE(defEvents.HIDE_NAV);
-
- /**
- * Fired just before the CalendarNavigator is to be rendered
- * @event beforeRenderNavEvent
- */
- me.beforeRenderNavEvent = new CE(defEvents.BEFORE_RENDER_NAV);
-
- /**
- * Fired after the CalendarNavigator is rendered
- * @event renderNavEvent
- */
- me.renderNavEvent = new CE(defEvents.RENDER_NAV);
-
- /**
- * Fired just before the CalendarGroup is to be destroyed
- * @event beforeDestroyEvent
- */
- me.beforeDestroyEvent = new CE(defEvents.BEFORE_DESTROY);
-
- /**
- * Fired after the CalendarGroup is destroyed. This event should be used
- * for notification only. When this event is fired, important CalendarGroup instance
- * properties, dom references and event listeners have already been
- * removed/dereferenced, and hence the CalendarGroup instance is not in a usable
- * state.
- *
- * @event destroyEvent
- */
- me.destroyEvent = new CE(defEvents.DESTROY);
- },
-
- /**
- * The default Config handler for the "pages" property
- * @method configPages
- * @param {String} type The CustomEvent type (usually the property name)
- * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
- * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
- */
- configPages : function(type, args, obj) {
- var pageCount = args[0],
- cfgPageDate = DEF_CFG.PAGEDATE.key,
- sep = "_",
- caldate,
- firstPageDate = null,
- groupCalClass = "groupcal",
- firstClass = "first-of-type",
- lastClass = "last-of-type";
-
- for (var p=0;p<pageCount;++p) {
- var calId = this.id + sep + p,
- calContainerId = this.containerId + sep + p,
- childConfig = this.cfg.getConfig();
-
- childConfig.close = false;
- childConfig.title = false;
- childConfig.navigator = null;
-
- if (p > 0) {
- caldate = new Date(firstPageDate);
- this._setMonthOnDate(caldate, caldate.getMonth() + p);
- childConfig.pageDate = caldate;
- }
-
- var cal = this.constructChild(calId, calContainerId, childConfig);
-
- Dom.removeClass(cal.oDomContainer, this.Style.CSS_SINGLE);
- Dom.addClass(cal.oDomContainer, groupCalClass);
-
- if (p===0) {
- firstPageDate = cal.cfg.getProperty(cfgPageDate);
- Dom.addClass(cal.oDomContainer, firstClass);
- }
-
- if (p==(pageCount-1)) {
- Dom.addClass(cal.oDomContainer, lastClass);
- }
-
- cal.parent = this;
- cal.index = p;
-
- this.pages[this.pages.length] = cal;
- }
- },
-
- /**
- * The default Config handler for the "pagedate" property
- * @method configPageDate
- * @param {String} type The CustomEvent type (usually the property name)
- * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
- * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
- */
- configPageDate : function(type, args, obj) {
- var val = args[0],
- firstPageDate;
-
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
-
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- if (p === 0) {
- firstPageDate = cal._parsePageDate(val);
- cal.cfg.setProperty(cfgPageDate, firstPageDate);
- } else {
- var pageDate = new Date(firstPageDate);
- this._setMonthOnDate(pageDate, pageDate.getMonth() + p);
- cal.cfg.setProperty(cfgPageDate, pageDate);
- }
- }
- },
-
- /**
- * The default Config handler for the CalendarGroup "selected" property
- * @method configSelected
- * @param {String} type The CustomEvent type (usually the property name)
- * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
- * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
- */
- configSelected : function(type, args, obj) {
- var cfgSelected = DEF_CFG.SELECTED.key;
- this.delegateConfig(type, args, obj);
- var selected = (this.pages.length > 0) ? this.pages[0].cfg.getProperty(cfgSelected) : [];
- this.cfg.setProperty(cfgSelected, selected, true);
- },
-
-
- /**
- * Delegates a configuration property to the CustomEvents associated with the CalendarGroup's children
- * @method delegateConfig
- * @param {String} type The CustomEvent type (usually the property name)
- * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
- * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
- */
- delegateConfig : function(type, args, obj) {
- var val = args[0];
- var cal;
-
- for (var p=0;p<this.pages.length;p++) {
- cal = this.pages[p];
- cal.cfg.setProperty(type, val);
- }
- },
-
- /**
- * Adds a function to all child Calendars within this CalendarGroup.
- * @method setChildFunction
- * @param {String} fnName The name of the function
- * @param {Function} fn The function to apply to each Calendar page object
- */
- setChildFunction : function(fnName, fn) {
- var pageCount = this.cfg.getProperty(DEF_CFG.PAGES.key);
-
- for (var p=0;p<pageCount;++p) {
- this.pages[p][fnName] = fn;
- }
- },
-
- /**
- * Calls a function within all child Calendars within this CalendarGroup.
- * @method callChildFunction
- * @param {String} fnName The name of the function
- * @param {Array} args The arguments to pass to the function
- */
- callChildFunction : function(fnName, args) {
- var pageCount = this.cfg.getProperty(DEF_CFG.PAGES.key);
-
- for (var p=0;p<pageCount;++p) {
- var page = this.pages[p];
- if (page[fnName]) {
- var fn = page[fnName];
- fn.call(page, args);
- }
- }
- },
-
- /**
- * Constructs a child calendar. This method can be overridden if a subclassed version of the default
- * calendar is to be used.
- * @method constructChild
- * @param {String} id The id of the table element that will represent the calendar widget
- * @param {String} containerId The id of the container div element that will wrap the calendar table
- * @param {Object} config The configuration object containing the Calendar's arguments
- * @return {YAHOO.widget.Calendar} The YAHOO.widget.Calendar instance that is constructed
- */
- constructChild : function(id,containerId,config) {
- var container = document.getElementById(containerId);
- if (! container) {
- container = document.createElement("div");
- container.id = containerId;
- this.oDomContainer.appendChild(container);
- }
- return new Calendar(id,containerId,config);
- },
-
- /**
- * Sets the calendar group's month explicitly. This month will be set into the first
- * page of the multi-page calendar, and all other months will be iterated appropriately.
- * @method setMonth
- * @param {Number} month The numeric month, from 0 (January) to 11 (December)
- */
- setMonth : function(month) {
- month = parseInt(month, 10);
- var currYear;
-
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
-
- for (var p=0; p<this.pages.length; ++p) {
- var cal = this.pages[p];
- var pageDate = cal.cfg.getProperty(cfgPageDate);
- if (p === 0) {
- currYear = pageDate.getFullYear();
- } else {
- pageDate.setFullYear(currYear);
- }
- this._setMonthOnDate(pageDate, month+p);
- cal.cfg.setProperty(cfgPageDate, pageDate);
- }
- },
-
- /**
- * Sets the calendar group's year explicitly. This year will be set into the first
- * page of the multi-page calendar, and all other months will be iterated appropriately.
- * @method setYear
- * @param {Number} year The numeric 4-digit year
- */
- setYear : function(year) {
-
- var cfgPageDate = DEF_CFG.PAGEDATE.key;
-
- year = parseInt(year, 10);
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- var pageDate = cal.cfg.getProperty(cfgPageDate);
-
- if ((pageDate.getMonth()+1) == 1 && p>0) {
- year+=1;
- }
- cal.setYear(year);
- }
- },
-
- /**
- * Calls the render function of all child calendars within the group.
- * @method render
- */
- render : function() {
- this.renderHeader();
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.render();
- }
- this.renderFooter();
- },
-
- /**
- * Selects a date or a collection of dates on the current calendar. This method, by default,
- * does not call the render method explicitly. Once selection has completed, render must be
- * called for the changes to be reflected visually.
- * @method select
- * @param {String/Date/Date[]} date The date string of dates to select in the current calendar. Valid formats are
- * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
- * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
- * This method can also take a JavaScript Date object or an array of Date objects.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- select : function(date) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.select(date);
- }
- return this.getSelectedDates();
- },
-
- /**
- * Selects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly.
- * The value of the MULTI_SELECT Configuration attribute will determine the set of dates which get selected.
- * <ul>
- * <li>If MULTI_SELECT is false, selectCell will select the cell at the specified index for only the last displayed Calendar page.</li>
- * <li>If MULTI_SELECT is true, selectCell will select the cell at the specified index, on each displayed Calendar page.</li>
- * </ul>
- * @method selectCell
- * @param {Number} cellIndex The index of the cell to be selected.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- selectCell : function(cellIndex) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.selectCell(cellIndex);
- }
- return this.getSelectedDates();
- },
-
- /**
- * Deselects a date or a collection of dates on the current calendar. This method, by default,
- * does not call the render method explicitly. Once deselection has completed, render must be
- * called for the changes to be reflected visually.
- * @method deselect
- * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
- * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
- * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
- * This method can also take a JavaScript Date object or an array of Date objects.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- deselect : function(date) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.deselect(date);
- }
- return this.getSelectedDates();
- },
-
- /**
- * Deselects all dates on the current calendar.
- * @method deselectAll
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- * Assuming that this function executes properly, the return value should be an empty array.
- * However, the empty array is returned for the sake of being able to check the selection status
- * of the calendar.
- */
- deselectAll : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.deselectAll();
- }
- return this.getSelectedDates();
- },
-
- /**
- * Deselects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly.
- * deselectCell will deselect the cell at the specified index on each displayed Calendar page.
- *
- * @method deselectCell
- * @param {Number} cellIndex The index of the cell to deselect.
- * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
- */
- deselectCell : function(cellIndex) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.deselectCell(cellIndex);
- }
- return this.getSelectedDates();
- },
-
- /**
- * Resets the calendar widget to the originally selected month and year, and
- * sets the calendar to the initial selection(s).
- * @method reset
- */
- reset : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.reset();
- }
- },
-
- /**
- * Clears the selected dates in the current calendar widget and sets the calendar
- * to the current month and year.
- * @method clear
- */
- clear : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.clear();
- }
-
- this.cfg.setProperty(DEF_CFG.SELECTED.key, []);
- this.cfg.setProperty(DEF_CFG.PAGEDATE.key, new Date(this.pages[0].today.getTime()));
- this.render();
- },
-
- /**
- * Navigates to the next month page in the calendar widget.
- * @method nextMonth
- */
- nextMonth : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.nextMonth();
- }
- },
-
- /**
- * Navigates to the previous month page in the calendar widget.
- * @method previousMonth
- */
- previousMonth : function() {
- for (var p=this.pages.length-1;p>=0;--p) {
- var cal = this.pages[p];
- cal.previousMonth();
- }
- },
-
- /**
- * Navigates to the next year in the currently selected month in the calendar widget.
- * @method nextYear
- */
- nextYear : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.nextYear();
- }
- },
-
- /**
- * Navigates to the previous year in the currently selected month in the calendar widget.
- * @method previousYear
- */
- previousYear : function() {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.previousYear();
- }
- },
-
- /**
- * Gets the list of currently selected dates from the calendar.
- * @return An array of currently selected JavaScript Date objects.
- * @type Date[]
- */
- getSelectedDates : function() {
- var returnDates = [];
- var selected = this.cfg.getProperty(DEF_CFG.SELECTED.key);
- for (var d=0;d<selected.length;++d) {
- var dateArray = selected[d];
-
- var date = DateMath.getDate(dateArray[0],dateArray[1]-1,dateArray[2]);
- returnDates.push(date);
- }
-
- returnDates.sort( function(a,b) { return a-b; } );
- return returnDates;
- },
-
- /**
- * Adds a renderer to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the conditions specified in the date string for this renderer.
- * @method addRenderer
- * @param {String} sDates A date string to associate with the specified renderer. Valid formats
- * include date (12/24/2005), month/day (12/24), and range (12/1/2004-1/1/2005)
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addRenderer : function(sDates, fnRender) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.addRenderer(sDates, fnRender);
- }
- },
-
- /**
- * Adds a month to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the month passed to this method.
- * @method addMonthRenderer
- * @param {Number} month The month (1-12) to associate with this renderer
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addMonthRenderer : function(month, fnRender) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.addMonthRenderer(month, fnRender);
- }
- },
-
- /**
- * Adds a weekday to the render stack. The function reference passed to this method will be executed
- * when a date cell matches the weekday passed to this method.
- * @method addWeekdayRenderer
- * @param {Number} weekday The weekday (1-7) to associate with this renderer. 1=Sunday, 2=Monday etc.
- * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
- */
- addWeekdayRenderer : function(weekday, fnRender) {
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- cal.addWeekdayRenderer(weekday, fnRender);
- }
- },
-
- /**
- * Removes all custom renderers added to the CalendarGroup through the addRenderer, addMonthRenderer and
- * addWeekRenderer methods. CalendarGroup's render method needs to be called to after removing renderers
- * to see the changes applied.
- *
- * @method removeRenderers
- */
- removeRenderers : function() {
- this.callChildFunction("removeRenderers");
- },
-
- /**
- * Renders the header for the CalendarGroup.
- * @method renderHeader
- */
- renderHeader : function() {
- // EMPTY DEFAULT IMPL
- },
-
- /**
- * Renders a footer for the 2-up calendar container. By default, this method is
- * unimplemented.
- * @method renderFooter
- */
- renderFooter : function() {
- // EMPTY DEFAULT IMPL
- },
-
- /**
- * Adds the designated number of months to the current calendar month, and sets the current
- * calendar page date to the new month.
- * @method addMonths
- * @param {Number} count The number of months to add to the current calendar
- */
- addMonths : function(count) {
- this.callChildFunction("addMonths", count);
- },
-
- /**
- * Subtracts the designated number of months from the current calendar month, and sets the current
- * calendar page date to the new month.
- * @method subtractMonths
- * @param {Number} count The number of months to subtract from the current calendar
- */
- subtractMonths : function(count) {
- this.callChildFunction("subtractMonths", count);
- },
-
- /**
- * Adds the designated number of years to the current calendar, and sets the current
- * calendar page date to the new month.
- * @method addYears
- * @param {Number} count The number of years to add to the current calendar
- */
- addYears : function(count) {
- this.callChildFunction("addYears", count);
- },
-
- /**
- * Subtcats the designated number of years from the current calendar, and sets the current
- * calendar page date to the new month.
- * @method subtractYears
- * @param {Number} count The number of years to subtract from the current calendar
- */
- subtractYears : function(count) {
- this.callChildFunction("subtractYears", count);
- },
-
- /**
- * Returns the Calendar page instance which has a pagedate (month/year) matching the given date.
- * Returns null if no match is found.
- *
- * @method getCalendarPage
- * @param {Date} date The JavaScript Date object for which a Calendar page is to be found.
- * @return {Calendar} The Calendar page instance representing the month to which the date
- * belongs.
- */
- getCalendarPage : function(date) {
- var cal = null;
- if (date) {
- var y = date.getFullYear(),
- m = date.getMonth();
-
- var pages = this.pages;
- for (var i = 0; i < pages.length; ++i) {
- var pageDate = pages[i].cfg.getProperty("pagedate");
- if (pageDate.getFullYear() === y && pageDate.getMonth() === m) {
- cal = pages[i];
- break;
- }
- }
- }
- return cal;
- },
-
- /**
- * Sets the month on a Date object, taking into account year rollover if the month is less than 0 or greater than 11.
- * The Date object passed in is modified. It should be cloned before passing it into this method if the original value needs to be maintained
- * @method _setMonthOnDate
- * @private
- * @param {Date} date The Date object on which to set the month index
- * @param {Number} iMonth The month index to set
- */
- _setMonthOnDate : function(date, iMonth) {
- // Bug in Safari 1.3, 2.0 (WebKit build < 420), Date.setMonth does not work consistently if iMonth is not 0-11
- if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420 && (iMonth < 0 || iMonth > 11)) {
- var newDate = DateMath.add(date, DateMath.MONTH, iMonth-date.getMonth());
- date.setTime(newDate.getTime());
- } else {
- date.setMonth(iMonth);
- }
- },
-
- /**
- * Fixes the width of the CalendarGroup container element, to account for miswrapped floats
- * @method _fixWidth
- * @private
- */
- _fixWidth : function() {
- var w = 0;
- for (var p=0;p<this.pages.length;++p) {
- var cal = this.pages[p];
- w += cal.oDomContainer.offsetWidth;
- }
- if (w > 0) {
- this.oDomContainer.style.width = w + "px";
- }
- },
-
- /**
- * Returns a string representation of the object.
- * @method toString
- * @return {String} A string representation of the CalendarGroup object.
- */
- toString : function() {
- return "CalendarGroup " + this.id;
- },
-
- /**
- * Destroys the CalendarGroup instance. The method will remove references
- * to HTML elements, remove any event listeners added by the CalendarGroup.
- *
- * It will also destroy the Config and CalendarNavigator instances created by the
- * CalendarGroup and the individual Calendar instances created for each page.
- *
- * @method destroy
- */
- destroy : function() {
-
- if (this.beforeDestroyEvent.fire()) {
-
- var cal = this;
-
- // Child objects
- if (cal.navigator) {
- cal.navigator.destroy();
- }
-
- if (cal.cfg) {
- cal.cfg.destroy();
- }
-
- // DOM event listeners
- Event.purgeElement(cal.oDomContainer, true);
-
- // Generated markup/DOM - Not removing the container DIV since we didn't create it.
- Dom.removeClass(cal.oDomContainer, CalendarGroup.CSS_CONTAINER);
- Dom.removeClass(cal.oDomContainer, CalendarGroup.CSS_MULTI_UP);
-
- for (var i = 0, l = cal.pages.length; i < l; i++) {
- cal.pages[i].destroy();
- cal.pages[i] = null;
- }
-
- cal.oDomContainer.innerHTML = "";
-
- // JS-to-DOM references
- cal.oDomContainer = null;
-
- this.destroyEvent.fire();
- }
- }
-};
-
-/**
-* CSS class representing the container for the calendar
-* @property YAHOO.widget.CalendarGroup.CSS_CONTAINER
-* @static
-* @final
-* @type String
-*/
-CalendarGroup.CSS_CONTAINER = "yui-calcontainer";
-
-/**
-* CSS class representing the container for the calendar
-* @property YAHOO.widget.CalendarGroup.CSS_MULTI_UP
-* @static
-* @final
-* @type String
-*/
-CalendarGroup.CSS_MULTI_UP = "multi";
-
-/**
-* CSS class representing the title for the 2-up calendar
-* @property YAHOO.widget.CalendarGroup.CSS_2UPTITLE
-* @static
-* @final
-* @type String
-*/
-CalendarGroup.CSS_2UPTITLE = "title";
-
-/**
-* CSS class representing the close icon for the 2-up calendar
-* @property YAHOO.widget.CalendarGroup.CSS_2UPCLOSE
-* @static
-* @final
-* @deprecated Along with Calendar.IMG_ROOT and NAV_ARROW_LEFT, NAV_ARROW_RIGHT configuration properties.
-* Calendar's <a href="YAHOO.widget.Calendar.html#Style.CSS_CLOSE">Style.CSS_CLOSE</a> property now represents the CSS class used to render the close icon
-* @type String
-*/
-CalendarGroup.CSS_2UPCLOSE = "close-icon";
-
-YAHOO.lang.augmentProto(CalendarGroup, Calendar, "buildDayLabel",
- "buildMonthLabel",
- "renderOutOfBoundsDate",
- "renderRowHeader",
- "renderRowFooter",
- "renderCellDefault",
- "styleCellDefault",
- "renderCellStyleHighlight1",
- "renderCellStyleHighlight2",
- "renderCellStyleHighlight3",
- "renderCellStyleHighlight4",
- "renderCellStyleToday",
- "renderCellStyleSelected",
- "renderCellNotThisMonth",
- "renderBodyCellRestricted",
- "initStyles",
- "configTitle",
- "configClose",
- "configIframe",
- "configStrings",
- "configNavigator",
- "createTitleBar",
- "createCloseButton",
- "removeTitleBar",
- "removeCloseButton",
- "hide",
- "show",
- "toDate",
- "_toDate",
- "_parseArgs",
- "browser");
-
-YAHOO.widget.CalGrp = CalendarGroup;
-YAHOO.widget.CalendarGroup = CalendarGroup;
-
-/**
-* @class YAHOO.widget.Calendar2up
-* @extends YAHOO.widget.CalendarGroup
-* @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
-*/
-YAHOO.widget.Calendar2up = function(id, containerId, config) {
- this.init(id, containerId, config);
-};
-
-YAHOO.extend(YAHOO.widget.Calendar2up, CalendarGroup);
-
-/**
-* @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
-*/
-YAHOO.widget.Cal2up = YAHOO.widget.Calendar2up;
-
-})();
-
-/**
- * The CalendarNavigator is used along with a Calendar/CalendarGroup to
- * provide a Month/Year popup navigation control, allowing the user to navigate
- * to a specific month/year in the Calendar/CalendarGroup without having to
- * scroll through months sequentially
- *
- * @namespace YAHOO.widget
- * @class CalendarNavigator
- * @constructor
- * @param {Calendar|CalendarGroup} cal The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached.
- */
-YAHOO.widget.CalendarNavigator = function(cal) {
- this.init(cal);
-};
-
-(function() {
- // Setup static properties (inside anon fn, so that we can use shortcuts)
- var CN = YAHOO.widget.CalendarNavigator;
-
- /**
- * YAHOO.widget.CalendarNavigator.CLASSES contains constants
- * for the class values applied to the CalendarNaviatgator's
- * DOM elements
- * @property YAHOO.widget.CalendarNavigator.CLASSES
- * @type Object
- * @static
- */
- CN.CLASSES = {
- /**
- * Class applied to the Calendar Navigator's bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.NAV
- * @type String
- * @static
- */
- NAV :"yui-cal-nav",
- /**
- * Class applied to the Calendar/CalendarGroup's bounding box to indicate
- * the Navigator is currently visible
- * @property YAHOO.widget.CalendarNavigator.CLASSES.NAV_VISIBLE
- * @type String
- * @static
- */
- NAV_VISIBLE: "yui-cal-nav-visible",
- /**
- * Class applied to the Navigator mask's bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.MASK
- * @type String
- * @static
- */
- MASK : "yui-cal-nav-mask",
- /**
- * Class applied to the year label/control bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.YEAR
- * @type String
- * @static
- */
- YEAR : "yui-cal-nav-y",
- /**
- * Class applied to the month label/control bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.MONTH
- * @type String
- * @static
- */
- MONTH : "yui-cal-nav-m",
- /**
- * Class applied to the submit/cancel button's bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.BUTTONS
- * @type String
- * @static
- */
- BUTTONS : "yui-cal-nav-b",
- /**
- * Class applied to buttons wrapping element
- * @property YAHOO.widget.CalendarNavigator.CLASSES.BUTTON
- * @type String
- * @static
- */
- BUTTON : "yui-cal-nav-btn",
- /**
- * Class applied to the validation error area's bounding box
- * @property YAHOO.widget.CalendarNavigator.CLASSES.ERROR
- * @type String
- * @static
- */
- ERROR : "yui-cal-nav-e",
- /**
- * Class applied to the year input control
- * @property YAHOO.widget.CalendarNavigator.CLASSES.YEAR_CTRL
- * @type String
- * @static
- */
- YEAR_CTRL : "yui-cal-nav-yc",
- /**
- * Class applied to the month input control
- * @property YAHOO.widget.CalendarNavigator.CLASSES.MONTH_CTRL
- * @type String
- * @static
- */
- MONTH_CTRL : "yui-cal-nav-mc",
- /**
- * Class applied to controls with invalid data (e.g. a year input field with invalid an year)
- * @property YAHOO.widget.CalendarNavigator.CLASSES.INVALID
- * @type String
- * @static
- */
- INVALID : "yui-invalid",
- /**
- * Class applied to default controls
- * @property YAHOO.widget.CalendarNavigator.CLASSES.DEFAULT
- * @type String
- * @static
- */
- DEFAULT : "yui-default"
- };
-
- /**
- * Object literal containing the default configuration values for the CalendarNavigator
- * The configuration object is expected to follow the format below, with the properties being
- * case sensitive.
- * <dl>
- * <dt>strings</dt>
- * <dd><em>Object</em> : An object with the properties shown below, defining the string labels to use in the Navigator's UI
- * <dl>
- * <dt>month</dt><dd><em>String</em> : The string to use for the month label. Defaults to "Month".</dd>
- * <dt>year</dt><dd><em>String</em> : The string to use for the year label. Defaults to "Year".</dd>
- * <dt>submit</dt><dd><em>String</em> : The string to use for the submit button label. Defaults to "Okay".</dd>
- * <dt>cancel</dt><dd><em>String</em> : The string to use for the cancel button label. Defaults to "Cancel".</dd>
- * <dt>invalidYear</dt><dd><em>String</em> : The string to use for invalid year values. Defaults to "Year needs to be a number".</dd>
- * </dl>
- * </dd>
- * <dt>monthFormat</dt><dd><em>String</em> : The month format to use. Either YAHOO.widget.Calendar.LONG, or YAHOO.widget.Calendar.SHORT. Defaults to YAHOO.widget.Calendar.LONG</dd>
- * <dt>initialFocus</dt><dd><em>String</em> : Either "year" or "month" specifying which input control should get initial focus. Defaults to "year"</dd>
- * </dl>
- * @property _DEFAULT_CFG
- * @protected
- * @type Object
- * @static
- */
- CN._DEFAULT_CFG = {
- strings : {
- month: "Month",
- year: "Year",
- submit: "Okay",
- cancel: "Cancel",
- invalidYear : "Year needs to be a number"
- },
- monthFormat: YAHOO.widget.Calendar.LONG,
- initialFocus: "year"
- };
-
- /**
- * The suffix added to the Calendar/CalendarGroup's ID, to generate
- * a unique ID for the Navigator and it's bounding box.
- * @property YAHOO.widget.CalendarNavigator.ID_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.ID_SUFFIX = "_nav";
- /**
- * The suffix added to the Navigator's ID, to generate
- * a unique ID for the month control.
- * @property YAHOO.widget.CalendarNavigator.MONTH_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.MONTH_SUFFIX = "_month";
- /**
- * The suffix added to the Navigator's ID, to generate
- * a unique ID for the year control.
- * @property YAHOO.widget.CalendarNavigator.YEAR_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.YEAR_SUFFIX = "_year";
- /**
- * The suffix added to the Navigator's ID, to generate
- * a unique ID for the error bounding box.
- * @property YAHOO.widget.CalendarNavigator.ERROR_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.ERROR_SUFFIX = "_error";
- /**
- * The suffix added to the Navigator's ID, to generate
- * a unique ID for the "Cancel" button.
- * @property YAHOO.widget.CalendarNavigator.CANCEL_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.CANCEL_SUFFIX = "_cancel";
- /**
- * The suffix added to the Navigator's ID, to generate
- * a unique ID for the "Submit" button.
- * @property YAHOO.widget.CalendarNavigator.SUBMIT_SUFFIX
- * @static
- * @type String
- * @final
- */
- CN.SUBMIT_SUFFIX = "_submit";
-
- /**
- * The number of digits to which the year input control is to be limited.
- * @property YAHOO.widget.CalendarNavigator.YR_MAX_DIGITS
- * @static
- * @type Number
- */
- CN.YR_MAX_DIGITS = 4;
-
- /**
- * The amount by which to increment the current year value,
- * when the arrow up/down key is pressed on the year control
- * @property YAHOO.widget.CalendarNavigator.YR_MINOR_INC
- * @static
- * @type Number
- */
- CN.YR_MINOR_INC = 1;
-
- /**
- * The amount by which to increment the current year value,
- * when the page up/down key is pressed on the year control
- * @property YAHOO.widget.CalendarNavigator.YR_MAJOR_INC
- * @static
- * @type Number
- */
- CN.YR_MAJOR_INC = 10;
-
- /**
- * Artificial delay (in ms) between the time the Navigator is hidden
- * and the Calendar/CalendarGroup state is updated. Allows the user
- * the see the Calendar/CalendarGroup page changing. If set to 0
- * the Calendar/CalendarGroup page will be updated instantly
- * @property YAHOO.widget.CalendarNavigator.UPDATE_DELAY
- * @static
- * @type Number
- */
- CN.UPDATE_DELAY = 50;
-
- /**
- * Regular expression used to validate the year input
- * @property YAHOO.widget.CalendarNavigator.YR_PATTERN
- * @static
- * @type RegExp
- */
- CN.YR_PATTERN = /^\d+$/;
- /**
- * Regular expression used to trim strings
- * @property YAHOO.widget.CalendarNavigator.TRIM
- * @static
- * @type RegExp
- */
- CN.TRIM = /^\s*(.*?)\s*$/;
-})();
-
-YAHOO.widget.CalendarNavigator.prototype = {
-
- /**
- * The unique ID for this CalendarNavigator instance
- * @property id
- * @type String
- */
- id : null,
-
- /**
- * The Calendar/CalendarGroup instance to which the navigator belongs
- * @property cal
- * @type {Calendar|CalendarGroup}
- */
- cal : null,
-
- /**
- * Reference to the HTMLElement used to render the navigator's bounding box
- * @property navEl
- * @type HTMLElement
- */
- navEl : null,
-
- /**
- * Reference to the HTMLElement used to render the navigator's mask
- * @property maskEl
- * @type HTMLElement
- */
- maskEl : null,
-
- /**
- * Reference to the HTMLElement used to input the year
- * @property yearEl
- * @type HTMLElement
- */
- yearEl : null,
-
- /**
- * Reference to the HTMLElement used to input the month
- * @property monthEl
- * @type HTMLElement
- */
- monthEl : null,
-
- /**
- * Reference to the HTMLElement used to display validation errors
- * @property errorEl
- * @type HTMLElement
- */
- errorEl : null,
-
- /**
- * Reference to the HTMLElement used to update the Calendar/Calendar group
- * with the month/year values
- * @property submitEl
- * @type HTMLElement
- */
- submitEl : null,
-
- /**
- * Reference to the HTMLElement used to hide the navigator without updating the
- * Calendar/Calendar group
- * @property cancelEl
- * @type HTMLElement
- */
- cancelEl : null,
-
- /**
- * Reference to the first focusable control in the navigator (by default monthEl)
- * @property firstCtrl
- * @type HTMLElement
- */
- firstCtrl : null,
-
- /**
- * Reference to the last focusable control in the navigator (by default cancelEl)
- * @property lastCtrl
- * @type HTMLElement
- */
- lastCtrl : null,
-
- /**
- * The document containing the Calendar/Calendar group instance
- * @protected
- * @property _doc
- * @type HTMLDocument
- */
- _doc : null,
-
- /**
- * Internal state property for the current year displayed in the navigator
- * @protected
- * @property _year
- * @type Number
- */
- _year: null,
-
- /**
- * Internal state property for the current month index displayed in the navigator
- * @protected
- * @property _month
- * @type Number
- */
- _month: 0,
-
- /**
- * Private internal state property which indicates whether or not the
- * Navigator has been rendered.
- * @private
- * @property __rendered
- * @type Boolean
- */
- __rendered: false,
-
- /**
- * Init lifecycle method called as part of construction
- *
- * @method init
- * @param {Calendar} cal The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached
- */
- init : function(cal) {
- var calBox = cal.oDomContainer;
-
- this.cal = cal;
- this.id = calBox.id + YAHOO.widget.CalendarNavigator.ID_SUFFIX;
- this._doc = calBox.ownerDocument;
-
- /**
- * Private flag, to identify IE Quirks
- * @private
- * @property __isIEQuirks
- */
- var ie = YAHOO.env.ua.ie;
- this.__isIEQuirks = (ie && ((ie <= 6) || (this._doc.compatMode == "BackCompat")));
- },
-
- /**
- * Displays the navigator and mask, updating the input controls to reflect the
- * currently set month and year. The show method will invoke the render method
- * if the navigator has not been renderered already, allowing for lazy rendering
- * of the control.
- *
- * The show method will fire the Calendar/CalendarGroup's beforeShowNav and showNav events
- *
- * @method show
- */
- show : function() {
- var CLASSES = YAHOO.widget.CalendarNavigator.CLASSES;
-
- if (this.cal.beforeShowNavEvent.fire()) {
- if (!this.__rendered) {
- this.render();
- }
- this.clearErrors();
-
- this._updateMonthUI();
- this._updateYearUI();
- this._show(this.navEl, true);
-
- this.setInitialFocus();
- this.showMask();
-
- YAHOO.util.Dom.addClass(this.cal.oDomContainer, CLASSES.NAV_VISIBLE);
- this.cal.showNavEvent.fire();
- }
- },
-
- /**
- * Hides the navigator and mask
- *
- * The show method will fire the Calendar/CalendarGroup's beforeHideNav event and hideNav events
- * @method hide
- */
- hide : function() {
- var CLASSES = YAHOO.widget.CalendarNavigator.CLASSES;
-
- if (this.cal.beforeHideNavEvent.fire()) {
- this._show(this.navEl, false);
- this.hideMask();
- YAHOO.util.Dom.removeClass(this.cal.oDomContainer, CLASSES.NAV_VISIBLE);
- this.cal.hideNavEvent.fire();
- }
- },
-
-
- /**
- * Displays the navigator's mask element
- *
- * @method showMask
- */
- showMask : function() {
- this._show(this.maskEl, true);
- if (this.__isIEQuirks) {
- this._syncMask();
- }
- },
-
- /**
- * Hides the navigator's mask element
- *
- * @method hideMask
- */
- hideMask : function() {
- this._show(this.maskEl, false);
- },
-
- /**
- * Returns the current month set on the navigator
- *
- * Note: This may not be the month set in the UI, if
- * the UI contains an invalid value.
- *
- * @method getMonth
- * @return {Number} The Navigator's current month index
- */
- getMonth: function() {
- return this._month;
- },
-
- /**
- * Returns the current year set on the navigator
- *
- * Note: This may not be the year set in the UI, if
- * the UI contains an invalid value.
- *
- * @method getYear
- * @return {Number} The Navigator's current year value
- */
- getYear: function() {
- return this._year;
- },
-
- /**
- * Sets the current month on the Navigator, and updates the UI
- *
- * @method setMonth
- * @param {Number} nMonth The month index, from 0 (Jan) through 11 (Dec).
- */
- setMonth : function(nMonth) {
- if (nMonth >= 0 && nMonth < 12) {
- this._month = nMonth;
- }
- this._updateMonthUI();
- },
-
- /**
- * Sets the current year on the Navigator, and updates the UI. If the
- * provided year is invalid, it will not be set.
- *
- * @method setYear
- * @param {Number} nYear The full year value to set the Navigator to.
- */
- setYear : function(nYear) {
- var yrPattern = YAHOO.widget.CalendarNavigator.YR_PATTERN;
- if (YAHOO.lang.isNumber(nYear) && yrPattern.test(nYear+"")) {
- this._year = nYear;
- }
- this._updateYearUI();
- },
-
- /**
- * Renders the HTML for the navigator, adding it to the
- * document and attaches event listeners if it has not
- * already been rendered.
- *
- * @method render
- */
- render: function() {
- this.cal.beforeRenderNavEvent.fire();
- if (!this.__rendered) {
- this.createNav();
- this.createMask();
- this.applyListeners();
- this.__rendered = true;
- }
- this.cal.renderNavEvent.fire();
- },
-
- /**
- * Creates the navigator's containing HTMLElement, it's contents, and appends
- * the containg element to the Calendar/CalendarGroup's container.
- *
- * @method createNav
- */
- createNav : function() {
- var NAV = YAHOO.widget.CalendarNavigator;
- var doc = this._doc;
-
- var d = doc.createElement("div");
- d.className = NAV.CLASSES.NAV;
-
- var htmlBuf = this.renderNavContents([]);
-
- d.innerHTML = htmlBuf.join('');
- this.cal.oDomContainer.appendChild(d);
-
- this.navEl = d;
-
- this.yearEl = doc.getElementById(this.id + NAV.YEAR_SUFFIX);
- this.monthEl = doc.getElementById(this.id + NAV.MONTH_SUFFIX);
- this.errorEl = doc.getElementById(this.id + NAV.ERROR_SUFFIX);
- this.submitEl = doc.getElementById(this.id + NAV.SUBMIT_SUFFIX);
- this.cancelEl = doc.getElementById(this.id + NAV.CANCEL_SUFFIX);
-
- if (YAHOO.env.ua.gecko && this.yearEl && this.yearEl.type == "text") {
- // Avoid XUL error on focus, select [ https://bugzilla.mozilla.org/show_bug.cgi?id=236791,
- // supposedly fixed in 1.8.1, but there are reports of it still being around for methods other than blur ]
- this.yearEl.setAttribute("autocomplete", "off");
- }
-
- this._setFirstLastElements();
- },
-
- /**
- * Creates the Mask HTMLElement and appends it to the Calendar/CalendarGroups
- * container.
- *
- * @method createMask
- */
- createMask : function() {
- var C = YAHOO.widget.CalendarNavigator.CLASSES;
-
- var d = this._doc.createElement("div");
- d.className = C.MASK;
-
- this.cal.oDomContainer.appendChild(d);
- this.maskEl = d;
- },
-
- /**
- * Used to set the width/height of the mask in pixels to match the Calendar Container.
- * Currently only used for IE6 or IE in quirks mode. The other A-Grade browser are handled using CSS (width/height 100%).
- * <p>
- * The method is also registered as an HTMLElement resize listener on the Calendars container element.
- * </p>
- * @protected
- * @method _syncMask
- */
- _syncMask : function() {
- var c = this.cal.oDomContainer;
- if (c && this.maskEl) {
- var r = YAHOO.util.Dom.getRegion(c);
- YAHOO.util.Dom.setStyle(this.maskEl, "width", r.right - r.left + "px");
- YAHOO.util.Dom.setStyle(this.maskEl, "height", r.bottom - r.top + "px");
- }
- },
-
- /**
- * Renders the contents of the navigator
- *
- * @method renderNavContents
- *
- * @param {Array} html The HTML buffer to append the HTML to.
- * @return {Array} A reference to the buffer passed in.
- */
- renderNavContents : function(html) {
- var NAV = YAHOO.widget.CalendarNavigator,
- C = NAV.CLASSES,
- h = html; // just to use a shorter name
-
- h[h.length] = '<div class="' + C.MONTH + '">';
- this.renderMonth(h);
- h[h.length] = '</div>';
- h[h.length] = '<div class="' + C.YEAR + '">';
- this.renderYear(h);
- h[h.length] = '</div>';
- h[h.length] = '<div class="' + C.BUTTONS + '">';
- this.renderButtons(h);
- h[h.length] = '</div>';
- h[h.length] = '<div class="' + C.ERROR + '" id="' + this.id + NAV.ERROR_SUFFIX + '"></div>';
-
- return h;
- },
-
- /**
- * Renders the month label and control for the navigator
- *
- * @method renderNavContents
- * @param {Array} html The HTML buffer to append the HTML to.
- * @return {Array} A reference to the buffer passed in.
- */
- renderMonth : function(html) {
- var NAV = YAHOO.widget.CalendarNavigator,
- C = NAV.CLASSES;
-
- var id = this.id + NAV.MONTH_SUFFIX,
- mf = this.__getCfg("monthFormat"),
- months = this.cal.cfg.getProperty((mf == YAHOO.widget.Calendar.SHORT) ? "MONTHS_SHORT" : "MONTHS_LONG"),
- h = html;
-
- if (months && months.length > 0) {
- h[h.length] = '<label for="' + id + '">';
- h[h.length] = this.__getCfg("month", true);
- h[h.length] = '</label>';
- h[h.length] = '<select name="' + id + '" id="' + id + '" class="' + C.MONTH_CTRL + '">';
- for (var i = 0; i < months.length; i++) {
- h[h.length] = '<option value="' + i + '">';
- h[h.length] = months[i];
- h[h.length] = '</option>';
- }
- h[h.length] = '</select>';
- }
- return h;
- },
-
- /**
- * Renders the year label and control for the navigator
- *
- * @method renderYear
- * @param {Array} html The HTML buffer to append the HTML to.
- * @return {Array} A reference to the buffer passed in.
- */
- renderYear : function(html) {
- var NAV = YAHOO.widget.CalendarNavigator,
- C = NAV.CLASSES;
-
- var id = this.id + NAV.YEAR_SUFFIX,
- size = NAV.YR_MAX_DIGITS,
- h = html;
-
- h[h.length] = '<label for="' + id + '">';
- h[h.length] = this.__getCfg("year", true);
- h[h.length] = '</label>';
- h[h.length] = '<input type="text" name="' + id + '" id="' + id + '" class="' + C.YEAR_CTRL + '" maxlength="' + size + '"/>';
- return h;
- },
-
- /**
- * Renders the submit/cancel buttons for the navigator
- *
- * @method renderButton
- * @return {String} The HTML created for the Button UI
- */
- renderButtons : function(html) {
- var C = YAHOO.widget.CalendarNavigator.CLASSES;
- var h = html;
-
- h[h.length] = '<span class="' + C.BUTTON + ' ' + C.DEFAULT + '">';
- h[h.length] = '<button type="button" id="' + this.id + '_submit' + '">';
- h[h.length] = this.__getCfg("submit", true);
- h[h.length] = '</button>';
- h[h.length] = '</span>';
- h[h.length] = '<span class="' + C.BUTTON +'">';
- h[h.length] = '<button type="button" id="' + this.id + '_cancel' + '">';
- h[h.length] = this.__getCfg("cancel", true);
- h[h.length] = '</button>';
- h[h.length] = '</span>';
-
- return h;
- },
-
- /**
- * Attaches DOM event listeners to the rendered elements
- * <p>
- * The method will call applyKeyListeners, to setup keyboard specific
- * listeners
- * </p>
- * @method applyListeners
- */
- applyListeners : function() {
- var E = YAHOO.util.Event;
-
- function yearUpdateHandler() {
- if (this.validate()) {
- this.setYear(this._getYearFromUI());
- }
- }
-
- function monthUpdateHandler() {
- this.setMonth(this._getMonthFromUI());
- }
-
- E.on(this.submitEl, "click", this.submit, this, true);
- E.on(this.cancelEl, "click", this.cancel, this, true);
- E.on(this.yearEl, "blur", yearUpdateHandler, this, true);
- E.on(this.monthEl, "change", monthUpdateHandler, this, true);
-
- if (this.__isIEQuirks) {
- YAHOO.util.Event.on(this.cal.oDomContainer, "resize", this._syncMask, this, true);
- }
-
- this.applyKeyListeners();
- },
-
- /**
- * Removes/purges DOM event listeners from the rendered elements
- *
- * @method purgeListeners
- */
- purgeListeners : function() {
- var E = YAHOO.util.Event;
- E.removeListener(this.submitEl, "click", this.submit);
- E.removeListener(this.cancelEl, "click", this.cancel);
- E.removeListener(this.yearEl, "blur");
- E.removeListener(this.monthEl, "change");
- if (this.__isIEQuirks) {
- E.removeListener(this.cal.oDomContainer, "resize", this._syncMask);
- }
-
- this.purgeKeyListeners();
- },
-
- /**
- * Attaches DOM listeners for keyboard support.
- * Tab/Shift-Tab looping, Enter Key Submit on Year element,
- * Up/Down/PgUp/PgDown year increment on Year element
- * <p>
- * NOTE: MacOSX Safari 2.x doesn't let you tab to buttons and
- * MacOSX Gecko does not let you tab to buttons or select controls,
- * so for these browsers, Tab/Shift-Tab looping is limited to the
- * elements which can be reached using the tab key.
- * </p>
- * @method applyKeyListeners
- */
- applyKeyListeners : function() {
- var E = YAHOO.util.Event,
- ua = YAHOO.env.ua;
-
- // IE/Safari 3.1 doesn't fire keypress for arrow/pg keys (non-char keys)
- var arrowEvt = (ua.ie || ua.webkit) ? "keydown" : "keypress";
-
- // - IE/Safari 3.1 doesn't fire keypress for non-char keys
- // - Opera doesn't allow us to cancel keydown or keypress for tab, but
- // changes focus successfully on keydown (keypress is too late to change focus - opera's already moved on).
- var tabEvt = (ua.ie || ua.opera || ua.webkit) ? "keydown" : "keypress";
-
- // Everyone likes keypress for Enter (char keys) - whoo hoo!
- E.on(this.yearEl, "keypress", this._handleEnterKey, this, true);
-
- E.on(this.yearEl, arrowEvt, this._handleDirectionKeys, this, true);
- E.on(this.lastCtrl, tabEvt, this._handleTabKey, this, true);
- E.on(this.firstCtrl, tabEvt, this._handleShiftTabKey, this, true);
- },
-
- /**
- * Removes/purges DOM listeners for keyboard support
- *
- * @method purgeKeyListeners
- */
- purgeKeyListeners : function() {
- var E = YAHOO.util.Event,
- ua = YAHOO.env.ua;
-
- var arrowEvt = (ua.ie || ua.webkit) ? "keydown" : "keypress";
- var tabEvt = (ua.ie || ua.opera || ua.webkit) ? "keydown" : "keypress";
-
- E.removeListener(this.yearEl, "keypress", this._handleEnterKey);
- E.removeListener(this.yearEl, arrowEvt, this._handleDirectionKeys);
- E.removeListener(this.lastCtrl, tabEvt, this._handleTabKey);
- E.removeListener(this.firstCtrl, tabEvt, this._handleShiftTabKey);
- },
-
- /**
- * Updates the Calendar/CalendarGroup's pagedate with the currently set month and year if valid.
- * <p>
- * If the currently set month/year is invalid, a validation error will be displayed and the
- * Calendar/CalendarGroup's pagedate will not be updated.
- * </p>
- * @method submit
- */
- submit : function() {
- if (this.validate()) {
- this.hide();
-
- this.setMonth(this._getMonthFromUI());
- this.setYear(this._getYearFromUI());
-
- var cal = this.cal;
-
- // Artificial delay, just to help the user see something changed
- var delay = YAHOO.widget.CalendarNavigator.UPDATE_DELAY;
- if (delay > 0) {
- var nav = this;
- window.setTimeout(function(){ nav._update(cal); }, delay);
- } else {
- this._update(cal);
- }
- }
- },
-
- /**
- * Updates the Calendar rendered state, based on the state of the CalendarNavigator
- * @method _update
- * @param cal The Calendar instance to update
- * @protected
- */
- _update : function(cal) {
- cal.setYear(this.getYear());
- cal.setMonth(this.getMonth());
- cal.render();
- },
-
- /**
- * Hides the navigator and mask, without updating the Calendar/CalendarGroup's state
- *
- * @method cancel
- */
- cancel : function() {
- this.hide();
- },
-
- /**
- * Validates the current state of the UI controls
- *
- * @method validate
- * @return {Boolean} true, if the current UI state contains valid values, false if not
- */
- validate : function() {
- if (this._getYearFromUI() !== null) {
- this.clearErrors();
- return true;
- } else {
- this.setYearError();
- this.setError(this.__getCfg("invalidYear", true));
- return false;
- }
- },
-
- /**
- * Displays an error message in the Navigator's error panel
- * @method setError
- * @param {String} msg The error message to display
- */
- setError : function(msg) {
- if (this.errorEl) {
- this.errorEl.innerHTML = msg;
- this._show(this.errorEl, true);
- }
- },
-
- /**
- * Clears the navigator's error message and hides the error panel
- * @method clearError
- */
- clearError : function() {
- if (this.errorEl) {
- this.errorEl.innerHTML = "";
- this._show(this.errorEl, false);
- }
- },
-
- /**
- * Displays the validation error UI for the year control
- * @method setYearError
- */
- setYearError : function() {
- YAHOO.util.Dom.addClass(this.yearEl, YAHOO.widget.CalendarNavigator.CLASSES.INVALID);
- },
-
- /**
- * Removes the validation error UI for the year control
- * @method clearYearError
- */
- clearYearError : function() {
- YAHOO.util.Dom.removeClass(this.yearEl, YAHOO.widget.CalendarNavigator.CLASSES.INVALID);
- },
-
- /**
- * Clears all validation and error messages in the UI
- * @method clearErrors
- */
- clearErrors : function() {
- this.clearError();
- this.clearYearError();
- },
-
- /**
- * Sets the initial focus, based on the configured value
- * @method setInitialFocus
- */
- setInitialFocus : function() {
- var el = this.submitEl,
- f = this.__getCfg("initialFocus");
-
- if (f && f.toLowerCase) {
- f = f.toLowerCase();
- if (f == "year") {
- el = this.yearEl;
- try {
- this.yearEl.select();
- } catch (selErr) {
- // Ignore;
- }
- } else if (f == "month") {
- el = this.monthEl;
- }
- }
-
- if (el && YAHOO.lang.isFunction(el.focus)) {
- try {
- el.focus();
- } catch (focusErr) {
- // TODO: Fall back if focus fails?
- }
- }
- },
-
- /**
- * Removes all renderered HTML elements for the Navigator from
- * the DOM, purges event listeners and clears (nulls) any property
- * references to HTML references
- * @method erase
- */
- erase : function() {
- if (this.__rendered) {
- this.purgeListeners();
-
- // Clear out innerHTML references
- this.yearEl = null;
- this.monthEl = null;
- this.errorEl = null;
- this.submitEl = null;
- this.cancelEl = null;
- this.firstCtrl = null;
- this.lastCtrl = null;
- if (this.navEl) {
- this.navEl.innerHTML = "";
- }
-
- var p = this.navEl.parentNode;
- if (p) {
- p.removeChild(this.navEl);
- }
- this.navEl = null;
-
- var pm = this.maskEl.parentNode;
- if (pm) {
- pm.removeChild(this.maskEl);
- }
- this.maskEl = null;
- this.__rendered = false;
- }
- },
-
- /**
- * Destroys the Navigator object and any HTML references
- * @method destroy
- */
- destroy : function() {
- this.erase();
- this._doc = null;
- this.cal = null;
- this.id = null;
- },
-
- /**
- * Protected implementation to handle how UI elements are
- * hidden/shown.
- *
- * @method _show
- * @protected
- */
- _show : function(el, bShow) {
- if (el) {
- YAHOO.util.Dom.setStyle(el, "display", (bShow) ? "block" : "none");
- }
- },
-
- /**
- * Returns the month value (index), from the month UI element
- * @protected
- * @method _getMonthFromUI
- * @return {Number} The month index, or 0 if a UI element for the month
- * is not found
- */
- _getMonthFromUI : function() {
- if (this.monthEl) {
- return this.monthEl.selectedIndex;
- } else {
- return 0; // Default to Jan
- }
- },
-
- /**
- * Returns the year value, from the Navitator's year UI element
- * @protected
- * @method _getYearFromUI
- * @return {Number} The year value set in the UI, if valid. null is returned if
- * the UI does not contain a valid year value.
- */
- _getYearFromUI : function() {
- var NAV = YAHOO.widget.CalendarNavigator;
-
- var yr = null;
- if (this.yearEl) {
- var value = this.yearEl.value;
- value = value.replace(NAV.TRIM, "$1");
-
- if (NAV.YR_PATTERN.test(value)) {
- yr = parseInt(value, 10);
- }
- }
- return yr;
- },
-
- /**
- * Updates the Navigator's year UI, based on the year value set on the Navigator object
- * @protected
- * @method _updateYearUI
- */
- _updateYearUI : function() {
- if (this.yearEl && this._year !== null) {
- this.yearEl.value = this._year;
- }
- },
-
- /**
- * Updates the Navigator's month UI, based on the month value set on the Navigator object
- * @protected
- * @method _updateMonthUI
- */
- _updateMonthUI : function() {
- if (this.monthEl) {
- this.monthEl.selectedIndex = this._month;
- }
- },
-
- /**
- * Sets up references to the first and last focusable element in the Navigator's UI
- * in terms of tab order (Naviagator's firstEl and lastEl properties). The references
- * are used to control modality by looping around from the first to the last control
- * and visa versa for tab/shift-tab navigation.
- * <p>
- * See <a href="#applyKeyListeners">applyKeyListeners</a>
- * </p>
- * @protected
- * @method _setFirstLastElements
- */
- _setFirstLastElements : function() {
- this.firstCtrl = this.monthEl;
- this.lastCtrl = this.cancelEl;
-
- // Special handling for MacOSX.
- // - Safari 2.x can't focus on buttons
- // - Gecko can't focus on select boxes or buttons
- if (this.__isMac) {
- if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420){
- this.firstCtrl = this.monthEl;
- this.lastCtrl = this.yearEl;
- }
- if (YAHOO.env.ua.gecko) {
- this.firstCtrl = this.yearEl;
- this.lastCtrl = this.yearEl;
- }
- }
- },
-
- /**
- * Default Keyboard event handler to capture Enter
- * on the Navigator's year control (yearEl)
- *
- * @method _handleEnterKey
- * @protected
- * @param {Event} e The DOM event being handled
- */
- _handleEnterKey : function(e) {
- var KEYS = YAHOO.util.KeyListener.KEY;
-
- if (YAHOO.util.Event.getCharCode(e) == KEYS.ENTER) {
- YAHOO.util.Event.preventDefault(e);
- this.submit();
- }
- },
-
- /**
- * Default Keyboard event handler to capture up/down/pgup/pgdown
- * on the Navigator's year control (yearEl).
- *
- * @method _handleDirectionKeys
- * @protected
- * @param {Event} e The DOM event being handled
- */
- _handleDirectionKeys : function(e) {
- var E = YAHOO.util.Event,
- KEYS = YAHOO.util.KeyListener.KEY,
- NAV = YAHOO.widget.CalendarNavigator;
-
- var value = (this.yearEl.value) ? parseInt(this.yearEl.value, 10) : null;
- if (isFinite(value)) {
- var dir = false;
- switch(E.getCharCode(e)) {
- case KEYS.UP:
- this.yearEl.value = value + NAV.YR_MINOR_INC;
- dir = true;
- break;
- case KEYS.DOWN:
- this.yearEl.value = Math.max(value - NAV.YR_MINOR_INC, 0);
- dir = true;
- break;
- case KEYS.PAGE_UP:
- this.yearEl.value = value + NAV.YR_MAJOR_INC;
- dir = true;
- break;
- case KEYS.PAGE_DOWN:
- this.yearEl.value = Math.max(value - NAV.YR_MAJOR_INC, 0);
- dir = true;
- break;
- default:
- break;
- }
- if (dir) {
- E.preventDefault(e);
- try {
- this.yearEl.select();
- } catch(err) {
- // Ignore
- }
- }
- }
- },
-
- /**
- * Default Keyboard event handler to capture Tab
- * on the last control (lastCtrl) in the Navigator.
- *
- * @method _handleTabKey
- * @protected
- * @param {Event} e The DOM event being handled
- */
- _handleTabKey : function(e) {
- var E = YAHOO.util.Event,
- KEYS = YAHOO.util.KeyListener.KEY;
-
- if (E.getCharCode(e) == KEYS.TAB && !e.shiftKey) {
- try {
- E.preventDefault(e);
- this.firstCtrl.focus();
- } catch (err) {
- // Ignore - mainly for focus edge cases
- }
- }
- },
-
- /**
- * Default Keyboard event handler to capture Shift-Tab
- * on the first control (firstCtrl) in the Navigator.
- *
- * @method _handleShiftTabKey
- * @protected
- * @param {Event} e The DOM event being handled
- */
- _handleShiftTabKey : function(e) {
- var E = YAHOO.util.Event,
- KEYS = YAHOO.util.KeyListener.KEY;
-
- if (e.shiftKey && E.getCharCode(e) == KEYS.TAB) {
- try {
- E.preventDefault(e);
- this.lastCtrl.focus();
- } catch (err) {
- // Ignore - mainly for focus edge cases
- }
- }
- },
-
- /**
- * Retrieve Navigator configuration values from
- * the parent Calendar/CalendarGroup's config value.
- * <p>
- * If it has not been set in the user provided configuration, the method will
- * return the default value of the configuration property, as set in _DEFAULT_CFG
- * </p>
- * @private
- * @method __getCfg
- * @param {String} Case sensitive property name.
- * @param {Boolean} true, if the property is a string property, false if not.
- * @return The value of the configuration property
- */
- __getCfg : function(prop, bIsStr) {
- var DEF_CFG = YAHOO.widget.CalendarNavigator._DEFAULT_CFG;
- var cfg = this.cal.cfg.getProperty("navigator");
-
- if (bIsStr) {
- return (cfg !== true && cfg.strings && cfg.strings[prop]) ? cfg.strings[prop] : DEF_CFG.strings[prop];
- } else {
- return (cfg !== true && cfg[prop]) ? cfg[prop] : DEF_CFG[prop];
- }
- },
-
- /**
- * Private flag, to identify MacOS
- * @private
- * @property __isMac
- */
- __isMac : (navigator.userAgent.toLowerCase().indexOf("macintosh") != -1)
-
-};
-
-YAHOO.register("calendar", YAHOO.widget.Calendar, {version: "2.7.0", build: "1799"});
=== removed file 'lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-min.js'
--- lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-min.js 2009-05-06 07:53:14 +0000
+++ lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/calendar-min.js 1970-01-01 00:00:00 +0000
@@ -1,18 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-(function(){YAHOO.util.Config=function(D){if(D){this.init(D);}};var B=YAHOO.lang,C=YAHOO.util.CustomEvent,A=YAHOO.util.Config;A.CONFIG_CHANGED_EVENT="configChanged";A.BOOLEAN_TYPE="boolean";A.prototype={owner:null,queueInProgress:false,config:null,initialConfig:null,eventQueue:null,configChangedEvent:null,init:function(D){this.owner=D;this.configChangedEvent=this.createEvent(A.CONFIG_CHANGED_EVENT);this.configChangedEvent.signature=C.LIST;this.queueInProgress=false;this.config={};this.initialConfig={};this.eventQueue=[];},checkBoolean:function(D){return(typeof D==A.BOOLEAN_TYPE);},checkNumber:function(D){return(!isNaN(D));},fireEvent:function(D,F){var E=this.config[D];if(E&&E.event){E.event.fire(F);}},addProperty:function(E,D){E=E.toLowerCase();this.config[E]=D;D.event=this.createEvent(E,{scope:this.owner});D.event.signature=C.LIST;D.key=E;if(D.handler){D.event.subscribe(D.handler,this.owner);}this.setProperty(E,D.value,true);if(!D.suppressEvent){this.queueProperty(E,D.value);}},getConfig:function(){var D={},F=this.config,G,E;for(G in F){if(B.hasOwnProperty(F,G)){E=F[G];if(E&&E.event){D[G]=E.value;}}}return D;},getProperty:function(D){var E=this.config[D.toLowerCase()];if(E&&E.event){return E.value;}else{return undefined;}},resetProperty:function(D){D=D.toLowerCase();var E=this.config[D];if(E&&E.event){if(this.initialConfig[D]&&!B.isUndefined(this.initialConfig[D])){this.setProperty(D,this.initialConfig[D]);return true;}}else{return false;}},setProperty:function(E,G,D){var F;E=E.toLowerCase();if(this.queueInProgress&&!D){this.queueProperty(E,G);return true;}else{F=this.config[E];if(F&&F.event){if(F.validator&&!F.validator(G)){return false;}else{F.value=G;if(!D){this.fireEvent(E,G);this.configChangedEvent.fire([E,G]);}return true;}}else{return false;}}},queueProperty:function(S,P){S=S.toLowerCase();var R=this.config[S],K=false,J,G,H,I,O,Q,F,M,N,D,L,T,E;if(R&&R.event){if(!B.isUndefined(P)&&R.validator&&!R.validator(P)){return false;}else{if(!B.isUndefined(P)){R.value=P;}else{P=R.value;}K=false;J=this.eventQueue.length;for(L=0;L<J;L++){G=this.eventQueue[L];if(G){H=G[0];I=G[1];if(H==S){this.eventQueue[L]=null;this.eventQueue.push([S,(!B.isUndefined(P)?P:I)]);K=true;break;}}}if(!K&&!B.isUndefined(P)){this.eventQueue.push([S,P]);}}if(R.supercedes){O=R.supercedes.length;for(T=0;T<O;T++){Q=R.supercedes[T];F=this.eventQueue.length;for(E=0;E<F;E++){M=this.eventQueue[E];if(M){N=M[0];D=M[1];if(N==Q.toLowerCase()){this.eventQueue.push([N,D]);this.eventQueue[E]=null;break;}}}}}return true;}else{return false;}},refireEvent:function(D){D=D.toLowerCase();var E=this.config[D];if(E&&E.event&&!B.isUndefined(E.value)){if(this.queueInProgress){this.queueProperty(D);}else{this.fireEvent(D,E.value);}}},applyConfig:function(D,G){var F,E;if(G){E={};for(F in D){if(B.hasOwnProperty(D,F)){E[F.toLowerCase()]=D[F];}}this.initialConfig=E;}for(F in D){if(B.hasOwnProperty(D,F)){this.queueProperty(F,D[F]);}}},refresh:function(){var D;for(D in this.config){if(B.hasOwnProperty(this.config,D)){this.refireEvent(D);}}},fireQueue:function(){var E,H,D,G,F;this.queueInProgress=true;for(E=0;E<this.eventQueue.length;E++){H=this.eventQueue[E];if(H){D=H[0];G=H[1];F=this.config[D];F.value=G;this.eventQueue[E]=null;this.fireEvent(D,G);}}this.queueInProgress=false;this.eventQueue=[];},subscribeToConfigEvent:function(E,F,H,D){var G=this.config[E.toLowerCase()];if(G&&G.event){if(!A.alreadySubscribed(G.event,F,H)){G.event.subscribe(F,H,D);}return true;}else{return false;}},unsubscribeFromConfigEvent:function(D,E,G){var F=this.config[D.toLowerCase()];if(F&&F.event){return F.event.unsubscribe(E,G);}else{return false;}},toString:function(){var D="Config";if(this.owner){D+=" ["+this.owner.toString()+"]";}return D;},outputEventQueue:function(){var D="",G,E,F=this.eventQueue.length;for(E=0;E<F;E++){G=this.eventQueue[E];if(G){D+=G[0]+"="+G[1]+", ";}}return D;},destroy:function(){var E=this.config,D,F;for(D in E){if(B.hasOwnProperty(E,D)){F=E[D];F.event.unsubscribeAll();F.event=null;}}this.configChangedEvent.unsubscribeAll();this.configChangedEvent=null;this.owner=null;this.config=null;this.initialConfig=null;this.eventQueue=null;}};A.alreadySubscribed=function(E,H,I){var F=E.subscribers.length,D,G;if(F>0){G=F-1;do{D=E.subscribers[G];if(D&&D.obj==I&&D.fn==H){return true;}}while(G--);}return false;};YAHOO.lang.augmentProto(A,YAHOO.util.EventProvider);}());YAHOO.widget.DateMath={DAY:"D",WEEK:"W",YEAR:"Y",MONTH:"M",ONE_DAY_MS:1000*60*60*24,WEEK_ONE_JAN_DATE:1,add:function(A,D,C){var F=new Date(A.getTime());switch(D){case this.MONTH:var E=A.getMonth()+C;var B=0;if(E<0){while(E<0){E+=12;B-=1;}}else{if(E>11){while(E>11){E-=12;B+=1;}}}F.setMonth(E);F.setFullYear(A.getFullYear()+B);break;case this.DAY:this._addDays(F,C);break;case this.YEAR:F.setFullYear(A.getFullYear()+C);break;case this.WEEK:this._addDays(F,(C*7));break;}return F;},_addDays:function(D,C){if(YAHOO.env.ua.webkit&&YAHOO.env.ua.webkit<420){if(C<0){for(var B=-128;C<B;C-=B){D.setDate(D.getDate()+B);}}else{for(var A=96;C>A;C-=A){D.setDate(D.getDate()+A);}}}D.setDate(D.getDate()+C);},subtract:function(A,C,B){return this.add(A,C,(B*-1));},before:function(C,B){var A=B.getTime();if(C.getTime()<A){return true;}else{return false;}},after:function(C,B){var A=B.getTime();if(C.getTime()>A){return true;}else{return false;}},between:function(B,A,C){if(this.after(B,A)&&this.before(B,C)){return true;}else{return false;}},getJan1:function(A){return this.getDate(A,0,1);},getDayOffset:function(B,D){var C=this.getJan1(D);var A=Math.ceil((B.getTime()-C.getTime())/this.ONE_DAY_MS);return A;},getWeekNumber:function(E,B,H){B=B||0;H=H||this.WEEK_ONE_JAN_DATE;var I=this.clearTime(E),M,N;if(I.getDay()===B){M=I;}else{M=this.getFirstDayOfWeek(I,B);}var J=M.getFullYear(),C=M.getTime();N=new Date(M.getTime()+6*this.ONE_DAY_MS);var G;if(J!==N.getFullYear()&&N.getDate()>=H){G=1;}else{var F=this.clearTime(this.getDate(J,0,H)),A=this.getFirstDayOfWeek(F,B);var K=Math.round((I.getTime()-A.getTime())/this.ONE_DAY_MS);var L=K%7;
-var D=(K-L)/7;G=D+1;}return G;},getFirstDayOfWeek:function(D,A){A=A||0;var B=D.getDay(),C=(B-A+7)%7;return this.subtract(D,this.DAY,C);},isYearOverlapWeek:function(A){var C=false;var B=this.add(A,this.DAY,6);if(B.getFullYear()!=A.getFullYear()){C=true;}return C;},isMonthOverlapWeek:function(A){var C=false;var B=this.add(A,this.DAY,6);if(B.getMonth()!=A.getMonth()){C=true;}return C;},findMonthStart:function(A){var B=this.getDate(A.getFullYear(),A.getMonth(),1);return B;},findMonthEnd:function(B){var D=this.findMonthStart(B);var C=this.add(D,this.MONTH,1);var A=this.subtract(C,this.DAY,1);return A;},clearTime:function(A){A.setHours(12,0,0,0);return A;},getDate:function(D,A,C){var B=null;if(YAHOO.lang.isUndefined(C)){C=1;}if(D>=100){B=new Date(D,A,C);}else{B=new Date();B.setFullYear(D);B.setMonth(A);B.setDate(C);B.setHours(0,0,0,0);}return B;}};(function(){var C=YAHOO.util.Dom,A=YAHOO.util.Event,E=YAHOO.lang,D=YAHOO.widget.DateMath;function F(I,G,H){this.init.apply(this,arguments);}F.IMG_ROOT=null;F.DATE="D";F.MONTH_DAY="MD";F.WEEKDAY="WD";F.RANGE="R";F.MONTH="M";F.DISPLAY_DAYS=42;F.STOP_RENDER="S";F.SHORT="short";F.LONG="long";F.MEDIUM="medium";F.ONE_CHAR="1char";F._DEFAULT_CONFIG={PAGEDATE:{key:"pagedate",value:null},SELECTED:{key:"selected",value:null},TITLE:{key:"title",value:""},CLOSE:{key:"close",value:false},IFRAME:{key:"iframe",value:(YAHOO.env.ua.ie&&YAHOO.env.ua.ie<=6)?true:false},MINDATE:{key:"mindate",value:null},MAXDATE:{key:"maxdate",value:null},MULTI_SELECT:{key:"multi_select",value:false},START_WEEKDAY:{key:"start_weekday",value:0},SHOW_WEEKDAYS:{key:"show_weekdays",value:true},SHOW_WEEK_HEADER:{key:"show_week_header",value:false},SHOW_WEEK_FOOTER:{key:"show_week_footer",value:false},HIDE_BLANK_WEEKS:{key:"hide_blank_weeks",value:false},NAV_ARROW_LEFT:{key:"nav_arrow_left",value:null},NAV_ARROW_RIGHT:{key:"nav_arrow_right",value:null},MONTHS_SHORT:{key:"months_short",value:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},MONTHS_LONG:{key:"months_long",value:["January","February","March","April","May","June","July","August","September","October","November","December"]},WEEKDAYS_1CHAR:{key:"weekdays_1char",value:["S","M","T","W","T","F","S"]},WEEKDAYS_SHORT:{key:"weekdays_short",value:["Su","Mo","Tu","We","Th","Fr","Sa"]},WEEKDAYS_MEDIUM:{key:"weekdays_medium",value:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},WEEKDAYS_LONG:{key:"weekdays_long",value:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},LOCALE_MONTHS:{key:"locale_months",value:"long"},LOCALE_WEEKDAYS:{key:"locale_weekdays",value:"short"},DATE_DELIMITER:{key:"date_delimiter",value:","},DATE_FIELD_DELIMITER:{key:"date_field_delimiter",value:"/"},DATE_RANGE_DELIMITER:{key:"date_range_delimiter",value:"-"},MY_MONTH_POSITION:{key:"my_month_position",value:1},MY_YEAR_POSITION:{key:"my_year_position",value:2},MD_MONTH_POSITION:{key:"md_month_position",value:1},MD_DAY_POSITION:{key:"md_day_position",value:2},MDY_MONTH_POSITION:{key:"mdy_month_position",value:1},MDY_DAY_POSITION:{key:"mdy_day_position",value:2},MDY_YEAR_POSITION:{key:"mdy_year_position",value:3},MY_LABEL_MONTH_POSITION:{key:"my_label_month_position",value:1},MY_LABEL_YEAR_POSITION:{key:"my_label_year_position",value:2},MY_LABEL_MONTH_SUFFIX:{key:"my_label_month_suffix",value:" "},MY_LABEL_YEAR_SUFFIX:{key:"my_label_year_suffix",value:""},NAV:{key:"navigator",value:null},STRINGS:{key:"strings",value:{previousMonth:"Previous Month",nextMonth:"Next Month",close:"Close"},supercedes:["close","title"]}};var B=F._DEFAULT_CONFIG;F._EVENT_TYPES={BEFORE_SELECT:"beforeSelect",SELECT:"select",BEFORE_DESELECT:"beforeDeselect",DESELECT:"deselect",CHANGE_PAGE:"changePage",BEFORE_RENDER:"beforeRender",RENDER:"render",BEFORE_DESTROY:"beforeDestroy",DESTROY:"destroy",RESET:"reset",CLEAR:"clear",BEFORE_HIDE:"beforeHide",HIDE:"hide",BEFORE_SHOW:"beforeShow",SHOW:"show",BEFORE_HIDE_NAV:"beforeHideNav",HIDE_NAV:"hideNav",BEFORE_SHOW_NAV:"beforeShowNav",SHOW_NAV:"showNav",BEFORE_RENDER_NAV:"beforeRenderNav",RENDER_NAV:"renderNav"};F._STYLES={CSS_ROW_HEADER:"calrowhead",CSS_ROW_FOOTER:"calrowfoot",CSS_CELL:"calcell",CSS_CELL_SELECTOR:"selector",CSS_CELL_SELECTED:"selected",CSS_CELL_SELECTABLE:"selectable",CSS_CELL_RESTRICTED:"restricted",CSS_CELL_TODAY:"today",CSS_CELL_OOM:"oom",CSS_CELL_OOB:"previous",CSS_HEADER:"calheader",CSS_HEADER_TEXT:"calhead",CSS_BODY:"calbody",CSS_WEEKDAY_CELL:"calweekdaycell",CSS_WEEKDAY_ROW:"calweekdayrow",CSS_FOOTER:"calfoot",CSS_CALENDAR:"yui-calendar",CSS_SINGLE:"single",CSS_CONTAINER:"yui-calcontainer",CSS_NAV_LEFT:"calnavleft",CSS_NAV_RIGHT:"calnavright",CSS_NAV:"calnav",CSS_CLOSE:"calclose",CSS_CELL_TOP:"calcelltop",CSS_CELL_LEFT:"calcellleft",CSS_CELL_RIGHT:"calcellright",CSS_CELL_BOTTOM:"calcellbottom",CSS_CELL_HOVER:"calcellhover",CSS_CELL_HIGHLIGHT1:"highlight1",CSS_CELL_HIGHLIGHT2:"highlight2",CSS_CELL_HIGHLIGHT3:"highlight3",CSS_CELL_HIGHLIGHT4:"highlight4"};F.prototype={Config:null,parent:null,index:-1,cells:null,cellDates:null,id:null,containerId:null,oDomContainer:null,today:null,renderStack:null,_renderStack:null,oNavigator:null,_selectedDates:null,domEventMap:null,_parseArgs:function(H){var G={id:null,container:null,config:null};if(H&&H.length&&H.length>0){switch(H.length){case 1:G.id=null;G.container=H[0];G.config=null;break;case 2:if(E.isObject(H[1])&&!H[1].tagName&&!(H[1] instanceof String)){G.id=null;G.container=H[0];G.config=H[1];}else{G.id=H[0];G.container=H[1];G.config=null;}break;default:G.id=H[0];G.container=H[1];G.config=H[2];break;}}else{}return G;},init:function(J,H,I){var G=this._parseArgs(arguments);J=G.id;H=G.container;I=G.config;this.oDomContainer=C.get(H);if(!this.oDomContainer.id){this.oDomContainer.id=C.generateId();}if(!J){J=this.oDomContainer.id+"_t";}this.id=J;this.containerId=this.oDomContainer.id;this.initEvents();this.today=new Date();D.clearTime(this.today);this.cfg=new YAHOO.util.Config(this);this.Options={};this.Locale={};this.initStyles();C.addClass(this.oDomContainer,this.Style.CSS_CONTAINER);
-C.addClass(this.oDomContainer,this.Style.CSS_SINGLE);this.cellDates=[];this.cells=[];this.renderStack=[];this._renderStack=[];this.setupConfig();if(I){this.cfg.applyConfig(I,true);}this.cfg.fireQueue();},configIframe:function(I,H,J){var G=H[0];if(!this.parent){if(C.inDocument(this.oDomContainer)){if(G){var K=C.getStyle(this.oDomContainer,"position");if(K=="absolute"||K=="relative"){if(!C.inDocument(this.iframe)){this.iframe=document.createElement("iframe");this.iframe.src="javascript:false;";C.setStyle(this.iframe,"opacity","0");if(YAHOO.env.ua.ie&&YAHOO.env.ua.ie<=6){C.addClass(this.iframe,"fixedsize");}this.oDomContainer.insertBefore(this.iframe,this.oDomContainer.firstChild);}}}else{if(this.iframe){if(this.iframe.parentNode){this.iframe.parentNode.removeChild(this.iframe);}this.iframe=null;}}}}},configTitle:function(H,G,I){var K=G[0];if(K){this.createTitleBar(K);}else{var J=this.cfg.getProperty(B.CLOSE.key);if(!J){this.removeTitleBar();}else{this.createTitleBar(" ");}}},configClose:function(H,G,I){var K=G[0],J=this.cfg.getProperty(B.TITLE.key);if(K){if(!J){this.createTitleBar(" ");}this.createCloseButton();}else{this.removeCloseButton();if(!J){this.removeTitleBar();}}},initEvents:function(){var G=F._EVENT_TYPES,I=YAHOO.util.CustomEvent,H=this;H.beforeSelectEvent=new I(G.BEFORE_SELECT);H.selectEvent=new I(G.SELECT);H.beforeDeselectEvent=new I(G.BEFORE_DESELECT);H.deselectEvent=new I(G.DESELECT);H.changePageEvent=new I(G.CHANGE_PAGE);H.beforeRenderEvent=new I(G.BEFORE_RENDER);H.renderEvent=new I(G.RENDER);H.beforeDestroyEvent=new I(G.BEFORE_DESTROY);H.destroyEvent=new I(G.DESTROY);H.resetEvent=new I(G.RESET);H.clearEvent=new I(G.CLEAR);H.beforeShowEvent=new I(G.BEFORE_SHOW);H.showEvent=new I(G.SHOW);H.beforeHideEvent=new I(G.BEFORE_HIDE);H.hideEvent=new I(G.HIDE);H.beforeShowNavEvent=new I(G.BEFORE_SHOW_NAV);H.showNavEvent=new I(G.SHOW_NAV);H.beforeHideNavEvent=new I(G.BEFORE_HIDE_NAV);H.hideNavEvent=new I(G.HIDE_NAV);H.beforeRenderNavEvent=new I(G.BEFORE_RENDER_NAV);H.renderNavEvent=new I(G.RENDER_NAV);H.beforeSelectEvent.subscribe(H.onBeforeSelect,this,true);H.selectEvent.subscribe(H.onSelect,this,true);H.beforeDeselectEvent.subscribe(H.onBeforeDeselect,this,true);H.deselectEvent.subscribe(H.onDeselect,this,true);H.changePageEvent.subscribe(H.onChangePage,this,true);H.renderEvent.subscribe(H.onRender,this,true);H.resetEvent.subscribe(H.onReset,this,true);H.clearEvent.subscribe(H.onClear,this,true);},doPreviousMonthNav:function(H,G){A.preventDefault(H);setTimeout(function(){G.previousMonth();var I=C.getElementsByClassName(G.Style.CSS_NAV_LEFT,"a",G.oDomContainer);if(I&&I[0]){try{I[0].focus();}catch(J){}}},0);},doNextMonthNav:function(H,G){A.preventDefault(H);setTimeout(function(){G.nextMonth();var I=C.getElementsByClassName(G.Style.CSS_NAV_RIGHT,"a",G.oDomContainer);if(I&&I[0]){try{I[0].focus();}catch(J){}}},0);},doSelectCell:function(M,G){var R,O,I,L;var N=A.getTarget(M),H=N.tagName.toLowerCase(),K=false;while(H!="td"&&!C.hasClass(N,G.Style.CSS_CELL_SELECTABLE)){if(!K&&H=="a"&&C.hasClass(N,G.Style.CSS_CELL_SELECTOR)){K=true;}N=N.parentNode;H=N.tagName.toLowerCase();if(N==this.oDomContainer||H=="html"){return;}}if(K){A.preventDefault(M);}R=N;if(C.hasClass(R,G.Style.CSS_CELL_SELECTABLE)){L=G.getIndexFromId(R.id);if(L>-1){O=G.cellDates[L];if(O){I=D.getDate(O[0],O[1]-1,O[2]);var Q;if(G.Options.MULTI_SELECT){Q=R.getElementsByTagName("a")[0];if(Q){Q.blur();}var J=G.cellDates[L];var P=G._indexOfSelectedFieldArray(J);if(P>-1){G.deselectCell(L);}else{G.selectCell(L);}}else{Q=R.getElementsByTagName("a")[0];if(Q){Q.blur();}G.selectCell(L);}}}}},doCellMouseOver:function(I,H){var G;if(I){G=A.getTarget(I);}else{G=this;}while(G.tagName&&G.tagName.toLowerCase()!="td"){G=G.parentNode;if(!G.tagName||G.tagName.toLowerCase()=="html"){return;}}if(C.hasClass(G,H.Style.CSS_CELL_SELECTABLE)){C.addClass(G,H.Style.CSS_CELL_HOVER);}},doCellMouseOut:function(I,H){var G;if(I){G=A.getTarget(I);}else{G=this;}while(G.tagName&&G.tagName.toLowerCase()!="td"){G=G.parentNode;if(!G.tagName||G.tagName.toLowerCase()=="html"){return;}}if(C.hasClass(G,H.Style.CSS_CELL_SELECTABLE)){C.removeClass(G,H.Style.CSS_CELL_HOVER);}},setupConfig:function(){var G=this.cfg;G.addProperty(B.PAGEDATE.key,{value:new Date(),handler:this.configPageDate});G.addProperty(B.SELECTED.key,{value:[],handler:this.configSelected});G.addProperty(B.TITLE.key,{value:B.TITLE.value,handler:this.configTitle});G.addProperty(B.CLOSE.key,{value:B.CLOSE.value,handler:this.configClose});G.addProperty(B.IFRAME.key,{value:B.IFRAME.value,handler:this.configIframe,validator:G.checkBoolean});G.addProperty(B.MINDATE.key,{value:B.MINDATE.value,handler:this.configMinDate});G.addProperty(B.MAXDATE.key,{value:B.MAXDATE.value,handler:this.configMaxDate});G.addProperty(B.MULTI_SELECT.key,{value:B.MULTI_SELECT.value,handler:this.configOptions,validator:G.checkBoolean});G.addProperty(B.START_WEEKDAY.key,{value:B.START_WEEKDAY.value,handler:this.configOptions,validator:G.checkNumber});G.addProperty(B.SHOW_WEEKDAYS.key,{value:B.SHOW_WEEKDAYS.value,handler:this.configOptions,validator:G.checkBoolean});G.addProperty(B.SHOW_WEEK_HEADER.key,{value:B.SHOW_WEEK_HEADER.value,handler:this.configOptions,validator:G.checkBoolean});G.addProperty(B.SHOW_WEEK_FOOTER.key,{value:B.SHOW_WEEK_FOOTER.value,handler:this.configOptions,validator:G.checkBoolean});G.addProperty(B.HIDE_BLANK_WEEKS.key,{value:B.HIDE_BLANK_WEEKS.value,handler:this.configOptions,validator:G.checkBoolean});G.addProperty(B.NAV_ARROW_LEFT.key,{value:B.NAV_ARROW_LEFT.value,handler:this.configOptions});G.addProperty(B.NAV_ARROW_RIGHT.key,{value:B.NAV_ARROW_RIGHT.value,handler:this.configOptions});G.addProperty(B.MONTHS_SHORT.key,{value:B.MONTHS_SHORT.value,handler:this.configLocale});G.addProperty(B.MONTHS_LONG.key,{value:B.MONTHS_LONG.value,handler:this.configLocale});G.addProperty(B.WEEKDAYS_1CHAR.key,{value:B.WEEKDAYS_1CHAR.value,handler:this.configLocale});G.addProperty(B.WEEKDAYS_SHORT.key,{value:B.WEEKDAYS_SHORT.value,handler:this.configLocale});
-G.addProperty(B.WEEKDAYS_MEDIUM.key,{value:B.WEEKDAYS_MEDIUM.value,handler:this.configLocale});G.addProperty(B.WEEKDAYS_LONG.key,{value:B.WEEKDAYS_LONG.value,handler:this.configLocale});var H=function(){G.refireEvent(B.LOCALE_MONTHS.key);G.refireEvent(B.LOCALE_WEEKDAYS.key);};G.subscribeToConfigEvent(B.START_WEEKDAY.key,H,this,true);G.subscribeToConfigEvent(B.MONTHS_SHORT.key,H,this,true);G.subscribeToConfigEvent(B.MONTHS_LONG.key,H,this,true);G.subscribeToConfigEvent(B.WEEKDAYS_1CHAR.key,H,this,true);G.subscribeToConfigEvent(B.WEEKDAYS_SHORT.key,H,this,true);G.subscribeToConfigEvent(B.WEEKDAYS_MEDIUM.key,H,this,true);G.subscribeToConfigEvent(B.WEEKDAYS_LONG.key,H,this,true);G.addProperty(B.LOCALE_MONTHS.key,{value:B.LOCALE_MONTHS.value,handler:this.configLocaleValues});G.addProperty(B.LOCALE_WEEKDAYS.key,{value:B.LOCALE_WEEKDAYS.value,handler:this.configLocaleValues});G.addProperty(B.DATE_DELIMITER.key,{value:B.DATE_DELIMITER.value,handler:this.configLocale});G.addProperty(B.DATE_FIELD_DELIMITER.key,{value:B.DATE_FIELD_DELIMITER.value,handler:this.configLocale});G.addProperty(B.DATE_RANGE_DELIMITER.key,{value:B.DATE_RANGE_DELIMITER.value,handler:this.configLocale});G.addProperty(B.MY_MONTH_POSITION.key,{value:B.MY_MONTH_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MY_YEAR_POSITION.key,{value:B.MY_YEAR_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MD_MONTH_POSITION.key,{value:B.MD_MONTH_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MD_DAY_POSITION.key,{value:B.MD_DAY_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MDY_MONTH_POSITION.key,{value:B.MDY_MONTH_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MDY_DAY_POSITION.key,{value:B.MDY_DAY_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MDY_YEAR_POSITION.key,{value:B.MDY_YEAR_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MY_LABEL_MONTH_POSITION.key,{value:B.MY_LABEL_MONTH_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MY_LABEL_YEAR_POSITION.key,{value:B.MY_LABEL_YEAR_POSITION.value,handler:this.configLocale,validator:G.checkNumber});G.addProperty(B.MY_LABEL_MONTH_SUFFIX.key,{value:B.MY_LABEL_MONTH_SUFFIX.value,handler:this.configLocale});G.addProperty(B.MY_LABEL_YEAR_SUFFIX.key,{value:B.MY_LABEL_YEAR_SUFFIX.value,handler:this.configLocale});G.addProperty(B.NAV.key,{value:B.NAV.value,handler:this.configNavigator});G.addProperty(B.STRINGS.key,{value:B.STRINGS.value,handler:this.configStrings,validator:function(I){return E.isObject(I);},supercedes:B.STRINGS.supercedes});},configStrings:function(H,G,I){var J=E.merge(B.STRINGS.value,G[0]);this.cfg.setProperty(B.STRINGS.key,J,true);},configPageDate:function(H,G,I){this.cfg.setProperty(B.PAGEDATE.key,this._parsePageDate(G[0]),true);},configMinDate:function(H,G,I){var J=G[0];if(E.isString(J)){J=this._parseDate(J);this.cfg.setProperty(B.MINDATE.key,D.getDate(J[0],(J[1]-1),J[2]));}},configMaxDate:function(H,G,I){var J=G[0];if(E.isString(J)){J=this._parseDate(J);this.cfg.setProperty(B.MAXDATE.key,D.getDate(J[0],(J[1]-1),J[2]));}},configSelected:function(I,G,K){var H=G[0],J=B.SELECTED.key;if(H){if(E.isString(H)){this.cfg.setProperty(J,this._parseDates(H),true);}}if(!this._selectedDates){this._selectedDates=this.cfg.getProperty(J);}},configOptions:function(H,G,I){this.Options[H.toUpperCase()]=G[0];},configLocale:function(H,G,I){this.Locale[H.toUpperCase()]=G[0];this.cfg.refireEvent(B.LOCALE_MONTHS.key);this.cfg.refireEvent(B.LOCALE_WEEKDAYS.key);},configLocaleValues:function(J,I,K){J=J.toLowerCase();var M=I[0],H=this.cfg,N=this.Locale;switch(J){case B.LOCALE_MONTHS.key:switch(M){case F.SHORT:N.LOCALE_MONTHS=H.getProperty(B.MONTHS_SHORT.key).concat();break;case F.LONG:N.LOCALE_MONTHS=H.getProperty(B.MONTHS_LONG.key).concat();break;}break;case B.LOCALE_WEEKDAYS.key:switch(M){case F.ONE_CHAR:N.LOCALE_WEEKDAYS=H.getProperty(B.WEEKDAYS_1CHAR.key).concat();break;case F.SHORT:N.LOCALE_WEEKDAYS=H.getProperty(B.WEEKDAYS_SHORT.key).concat();break;case F.MEDIUM:N.LOCALE_WEEKDAYS=H.getProperty(B.WEEKDAYS_MEDIUM.key).concat();break;case F.LONG:N.LOCALE_WEEKDAYS=H.getProperty(B.WEEKDAYS_LONG.key).concat();break;}var L=H.getProperty(B.START_WEEKDAY.key);if(L>0){for(var G=0;G<L;++G){N.LOCALE_WEEKDAYS.push(N.LOCALE_WEEKDAYS.shift());}}break;}},configNavigator:function(H,G,I){var J=G[0];if(YAHOO.widget.CalendarNavigator&&(J===true||E.isObject(J))){if(!this.oNavigator){this.oNavigator=new YAHOO.widget.CalendarNavigator(this);this.beforeRenderEvent.subscribe(function(){if(!this.pages){this.oNavigator.erase();}},this,true);}}else{if(this.oNavigator){this.oNavigator.destroy();this.oNavigator=null;}}},initStyles:function(){var G=F._STYLES;this.Style={CSS_ROW_HEADER:G.CSS_ROW_HEADER,CSS_ROW_FOOTER:G.CSS_ROW_FOOTER,CSS_CELL:G.CSS_CELL,CSS_CELL_SELECTOR:G.CSS_CELL_SELECTOR,CSS_CELL_SELECTED:G.CSS_CELL_SELECTED,CSS_CELL_SELECTABLE:G.CSS_CELL_SELECTABLE,CSS_CELL_RESTRICTED:G.CSS_CELL_RESTRICTED,CSS_CELL_TODAY:G.CSS_CELL_TODAY,CSS_CELL_OOM:G.CSS_CELL_OOM,CSS_CELL_OOB:G.CSS_CELL_OOB,CSS_HEADER:G.CSS_HEADER,CSS_HEADER_TEXT:G.CSS_HEADER_TEXT,CSS_BODY:G.CSS_BODY,CSS_WEEKDAY_CELL:G.CSS_WEEKDAY_CELL,CSS_WEEKDAY_ROW:G.CSS_WEEKDAY_ROW,CSS_FOOTER:G.CSS_FOOTER,CSS_CALENDAR:G.CSS_CALENDAR,CSS_SINGLE:G.CSS_SINGLE,CSS_CONTAINER:G.CSS_CONTAINER,CSS_NAV_LEFT:G.CSS_NAV_LEFT,CSS_NAV_RIGHT:G.CSS_NAV_RIGHT,CSS_NAV:G.CSS_NAV,CSS_CLOSE:G.CSS_CLOSE,CSS_CELL_TOP:G.CSS_CELL_TOP,CSS_CELL_LEFT:G.CSS_CELL_LEFT,CSS_CELL_RIGHT:G.CSS_CELL_RIGHT,CSS_CELL_BOTTOM:G.CSS_CELL_BOTTOM,CSS_CELL_HOVER:G.CSS_CELL_HOVER,CSS_CELL_HIGHLIGHT1:G.CSS_CELL_HIGHLIGHT1,CSS_CELL_HIGHLIGHT2:G.CSS_CELL_HIGHLIGHT2,CSS_CELL_HIGHLIGHT3:G.CSS_CELL_HIGHLIGHT3,CSS_CELL_HIGHLIGHT4:G.CSS_CELL_HIGHLIGHT4};},buildMonthLabel:function(){return this._buildMonthLabel(this.cfg.getProperty(B.PAGEDATE.key));},_buildMonthLabel:function(G){var I=this.Locale.LOCALE_MONTHS[G.getMonth()]+this.Locale.MY_LABEL_MONTH_SUFFIX,H=G.getFullYear()+this.Locale.MY_LABEL_YEAR_SUFFIX;
-if(this.Locale.MY_LABEL_MONTH_POSITION==2||this.Locale.MY_LABEL_YEAR_POSITION==1){return H+I;}else{return I+H;}},buildDayLabel:function(G){return G.getDate();},createTitleBar:function(G){var H=C.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE,"div",this.oDomContainer)[0]||document.createElement("div");H.className=YAHOO.widget.CalendarGroup.CSS_2UPTITLE;H.innerHTML=G;this.oDomContainer.insertBefore(H,this.oDomContainer.firstChild);C.addClass(this.oDomContainer,"withtitle");return H;},removeTitleBar:function(){var G=C.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE,"div",this.oDomContainer)[0]||null;if(G){A.purgeElement(G);this.oDomContainer.removeChild(G);}C.removeClass(this.oDomContainer,"withtitle");},createCloseButton:function(){var J=YAHOO.widget.CalendarGroup.CSS_2UPCLOSE,L="us/my/bn/x_d.gif",K=C.getElementsByClassName("link-close","a",this.oDomContainer)[0],G=this.cfg.getProperty(B.STRINGS.key),H=(G&&G.close)?G.close:"";if(!K){K=document.createElement("a");A.addListener(K,"click",function(N,M){M.hide();A.preventDefault(N);},this);}K.href="#";K.className="link-close";if(F.IMG_ROOT!==null){var I=C.getElementsByClassName(J,"img",K)[0]||document.createElement("img");I.src=F.IMG_ROOT+L;I.className=J;K.appendChild(I);}else{K.innerHTML='<span class="'+J+" "+this.Style.CSS_CLOSE+'">'+H+"</span>";}this.oDomContainer.appendChild(K);return K;},removeCloseButton:function(){var G=C.getElementsByClassName("link-close","a",this.oDomContainer)[0]||null;if(G){A.purgeElement(G);this.oDomContainer.removeChild(G);}},renderHeader:function(Q){var P=7,O="us/tr/callt.gif",G="us/tr/calrt.gif",N=this.cfg,K=N.getProperty(B.PAGEDATE.key),L=N.getProperty(B.STRINGS.key),V=(L&&L.previousMonth)?L.previousMonth:"",H=(L&&L.nextMonth)?L.nextMonth:"",M;if(N.getProperty(B.SHOW_WEEK_HEADER.key)){P+=1;}if(N.getProperty(B.SHOW_WEEK_FOOTER.key)){P+=1;}Q[Q.length]="<thead>";Q[Q.length]="<tr>";Q[Q.length]='<th colspan="'+P+'" class="'+this.Style.CSS_HEADER_TEXT+'">';Q[Q.length]='<div class="'+this.Style.CSS_HEADER+'">';var X,U=false;if(this.parent){if(this.index===0){X=true;}if(this.index==(this.parent.cfg.getProperty("pages")-1)){U=true;}}else{X=true;U=true;}if(X){M=this._buildMonthLabel(D.subtract(K,D.MONTH,1));var R=N.getProperty(B.NAV_ARROW_LEFT.key);if(R===null&&F.IMG_ROOT!==null){R=F.IMG_ROOT+O;}var I=(R===null)?"":' style="background-image:url('+R+')"';Q[Q.length]='<a class="'+this.Style.CSS_NAV_LEFT+'"'+I+' href="#">'+V+" ("+M+")"+"</a>";}var W=this.buildMonthLabel();var S=this.parent||this;if(S.cfg.getProperty("navigator")){W='<a class="'+this.Style.CSS_NAV+'" href="#">'+W+"</a>";}Q[Q.length]=W;if(U){M=this._buildMonthLabel(D.add(K,D.MONTH,1));var T=N.getProperty(B.NAV_ARROW_RIGHT.key);if(T===null&&F.IMG_ROOT!==null){T=F.IMG_ROOT+G;}var J=(T===null)?"":' style="background-image:url('+T+')"';Q[Q.length]='<a class="'+this.Style.CSS_NAV_RIGHT+'"'+J+' href="#">'+H+" ("+M+")"+"</a>";}Q[Q.length]="</div>\n</th>\n</tr>";if(N.getProperty(B.SHOW_WEEKDAYS.key)){Q=this.buildWeekdays(Q);}Q[Q.length]="</thead>";return Q;},buildWeekdays:function(H){H[H.length]='<tr class="'+this.Style.CSS_WEEKDAY_ROW+'">';if(this.cfg.getProperty(B.SHOW_WEEK_HEADER.key)){H[H.length]="<th> </th>";}for(var G=0;G<this.Locale.LOCALE_WEEKDAYS.length;++G){H[H.length]='<th class="calweekdaycell">'+this.Locale.LOCALE_WEEKDAYS[G]+"</th>";}if(this.cfg.getProperty(B.SHOW_WEEK_FOOTER.key)){H[H.length]="<th> </th>";}H[H.length]="</tr>";return H;},renderBody:function(l,j){var AJ=this.cfg.getProperty(B.START_WEEKDAY.key);this.preMonthDays=l.getDay();if(AJ>0){this.preMonthDays-=AJ;}if(this.preMonthDays<0){this.preMonthDays+=7;}this.monthDays=D.findMonthEnd(l).getDate();this.postMonthDays=F.DISPLAY_DAYS-this.preMonthDays-this.monthDays;l=D.subtract(l,D.DAY,this.preMonthDays);var X,N,M="w",e="_cell",b="wd",v="d",P,q,AB=this.today,O=this.cfg,V=AB.getFullYear(),u=AB.getMonth(),J=AB.getDate(),AA=O.getProperty(B.PAGEDATE.key),I=O.getProperty(B.HIDE_BLANK_WEEKS.key),h=O.getProperty(B.SHOW_WEEK_FOOTER.key),a=O.getProperty(B.SHOW_WEEK_HEADER.key),T=O.getProperty(B.MINDATE.key),Z=O.getProperty(B.MAXDATE.key);if(T){T=D.clearTime(T);}if(Z){Z=D.clearTime(Z);}j[j.length]='<tbody class="m'+(AA.getMonth()+1)+" "+this.Style.CSS_BODY+'">';var AH=0,Q=document.createElement("div"),k=document.createElement("td");Q.appendChild(k);var z=this.parent||this;for(var AD=0;AD<6;AD++){X=D.getWeekNumber(l,AJ);N=M+X;if(AD!==0&&I===true&&l.getMonth()!=AA.getMonth()){break;}else{j[j.length]='<tr class="'+N+'">';if(a){j=this.renderRowHeader(X,j);}for(var AI=0;AI<7;AI++){P=[];this.clearElement(k);k.className=this.Style.CSS_CELL;k.id=this.id+e+AH;if(l.getDate()==J&&l.getMonth()==u&&l.getFullYear()==V){P[P.length]=z.renderCellStyleToday;}var Y=[l.getFullYear(),l.getMonth()+1,l.getDate()];this.cellDates[this.cellDates.length]=Y;if(l.getMonth()!=AA.getMonth()){P[P.length]=z.renderCellNotThisMonth;}else{C.addClass(k,b+l.getDay());C.addClass(k,v+l.getDate());for(var AC=0;AC<this.renderStack.length;++AC){q=null;var w=this.renderStack[AC],AK=w[0],H,c,L;switch(AK){case F.DATE:H=w[1][1];c=w[1][2];L=w[1][0];if(l.getMonth()+1==H&&l.getDate()==c&&l.getFullYear()==L){q=w[2];this.renderStack.splice(AC,1);}break;case F.MONTH_DAY:H=w[1][0];c=w[1][1];if(l.getMonth()+1==H&&l.getDate()==c){q=w[2];this.renderStack.splice(AC,1);}break;case F.RANGE:var g=w[1][0],f=w[1][1],m=g[1],S=g[2],W=g[0],AG=D.getDate(W,m-1,S),K=f[1],o=f[2],G=f[0],AF=D.getDate(G,K-1,o);if(l.getTime()>=AG.g