Merge lp:~canonical-isd-hackers/canonical-identity-provider/password_strength into lp:canonical-identity-provider/release

Proposed by Danny Tamez
Status: Merged
Merged at revision: 53
Proposed branch: lp:~canonical-isd-hackers/canonical-identity-provider/password_strength
Merge into: lp:canonical-identity-provider/release
Diff against target: 154715 lines (+151906/-3)
460 files modified
identityprovider/media/lazr-js/anim/anim-base-debug.js (+603/-0)
identityprovider/media/lazr-js/anim/anim-base-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-base.js (+602/-0)
identityprovider/media/lazr-js/anim/anim-color-debug.js (+55/-0)
identityprovider/media/lazr-js/anim/anim-color-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-color.js (+55/-0)
identityprovider/media/lazr-js/anim/anim-curve-debug.js (+64/-0)
identityprovider/media/lazr-js/anim/anim-curve-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-curve.js (+64/-0)
identityprovider/media/lazr-js/anim/anim-debug.js (+1150/-0)
identityprovider/media/lazr-js/anim/anim-easing-debug.js (+355/-0)
identityprovider/media/lazr-js/anim/anim-easing-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-easing.js (+355/-0)
identityprovider/media/lazr-js/anim/anim-min.js (+9/-0)
identityprovider/media/lazr-js/anim/anim-node-plugin-debug.js (+33/-0)
identityprovider/media/lazr-js/anim/anim-node-plugin-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-node-plugin.js (+33/-0)
identityprovider/media/lazr-js/anim/anim-scroll-debug.js (+45/-0)
identityprovider/media/lazr-js/anim/anim-scroll-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-scroll.js (+45/-0)
identityprovider/media/lazr-js/anim/anim-xy-debug.js (+33/-0)
identityprovider/media/lazr-js/anim/anim-xy-min.js (+8/-0)
identityprovider/media/lazr-js/anim/anim-xy.js (+33/-0)
identityprovider/media/lazr-js/anim/anim.js (+1149/-0)
identityprovider/media/lazr-js/assets/skins/sam/console-filters.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/console.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/node-menunav.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/overlay.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/skin.css (+14/-0)
identityprovider/media/lazr-js/assets/skins/sam/slider.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/widget-stack.css (+8/-0)
identityprovider/media/lazr-js/assets/skins/sam/widget.css (+8/-0)
identityprovider/media/lazr-js/async-queue/async-queue-debug.js (+536/-0)
identityprovider/media/lazr-js/async-queue/async-queue-min.js (+8/-0)
identityprovider/media/lazr-js/async-queue/async-queue.js (+536/-0)
identityprovider/media/lazr-js/attribute/attribute-base-debug.js (+1079/-0)
identityprovider/media/lazr-js/attribute/attribute-base-min.js (+8/-0)
identityprovider/media/lazr-js/attribute/attribute-base.js (+1064/-0)
identityprovider/media/lazr-js/attribute/attribute-complex-debug.js (+120/-0)
identityprovider/media/lazr-js/attribute/attribute-complex-min.js (+8/-0)
identityprovider/media/lazr-js/attribute/attribute-complex.js (+120/-0)
identityprovider/media/lazr-js/attribute/attribute-debug.js (+1196/-0)
identityprovider/media/lazr-js/attribute/attribute-min.js (+9/-0)
identityprovider/media/lazr-js/attribute/attribute.js (+1181/-0)
identityprovider/media/lazr-js/base/base-base-debug.js (+536/-0)
identityprovider/media/lazr-js/base/base-base-min.js (+8/-0)
identityprovider/media/lazr-js/base/base-base.js (+531/-0)
identityprovider/media/lazr-js/base/base-build-debug.js (+201/-0)
identityprovider/media/lazr-js/base/base-build-min.js (+8/-0)
identityprovider/media/lazr-js/base/base-build.js (+201/-0)
identityprovider/media/lazr-js/base/base-debug.js (+770/-0)
identityprovider/media/lazr-js/base/base-min.js (+8/-0)
identityprovider/media/lazr-js/base/base-pluginhost-debug.js (+43/-0)
identityprovider/media/lazr-js/base/base-pluginhost-min.js (+8/-0)
identityprovider/media/lazr-js/base/base-pluginhost.js (+43/-0)
identityprovider/media/lazr-js/base/base.js (+765/-0)
identityprovider/media/lazr-js/cache/cache-debug.js (+366/-0)
identityprovider/media/lazr-js/cache/cache-min.js (+8/-0)
identityprovider/media/lazr-js/cache/cache.js (+357/-0)
identityprovider/media/lazr-js/classnamemanager/classnamemanager-debug.js (+87/-0)
identityprovider/media/lazr-js/classnamemanager/classnamemanager-min.js (+8/-0)
identityprovider/media/lazr-js/classnamemanager/classnamemanager.js (+87/-0)
identityprovider/media/lazr-js/collection/collection-debug.js (+294/-0)
identityprovider/media/lazr-js/collection/collection-min.js (+8/-0)
identityprovider/media/lazr-js/collection/collection.js (+294/-0)
identityprovider/media/lazr-js/compat/compat-debug.js (+900/-0)
identityprovider/media/lazr-js/compat/compat-min.js (+9/-0)
identityprovider/media/lazr-js/compat/compat.js (+896/-0)
identityprovider/media/lazr-js/console/assets/console-core.css (+7/-0)
identityprovider/media/lazr-js/console/assets/console-filters-core.css (+7/-0)
identityprovider/media/lazr-js/console/assets/skins/sam/console-filters-skin.css (+34/-0)
identityprovider/media/lazr-js/console/assets/skins/sam/console-filters.css (+8/-0)
identityprovider/media/lazr-js/console/assets/skins/sam/console-skin.css (+192/-0)
identityprovider/media/lazr-js/console/assets/skins/sam/console.css (+8/-0)
identityprovider/media/lazr-js/console/console-debug.js (+1478/-0)
identityprovider/media/lazr-js/console/console-filters-debug.js (+710/-0)
identityprovider/media/lazr-js/console/console-filters-min.js (+8/-0)
identityprovider/media/lazr-js/console/console-filters.js (+710/-0)
identityprovider/media/lazr-js/console/console-min.js (+9/-0)
identityprovider/media/lazr-js/console/console.js (+1478/-0)
identityprovider/media/lazr-js/cookie/cookie-debug.js (+491/-0)
identityprovider/media/lazr-js/cookie/cookie-min.js (+8/-0)
identityprovider/media/lazr-js/cookie/cookie.js (+491/-0)
identityprovider/media/lazr-js/cssbase/base-context-min.css (+8/-0)
identityprovider/media/lazr-js/cssbase/base-context.css (+80/-0)
identityprovider/media/lazr-js/cssbase/base-min.css (+8/-0)
identityprovider/media/lazr-js/cssbase/base.css (+80/-0)
identityprovider/media/lazr-js/cssfonts/fonts-context-min.css (+8/-0)
identityprovider/media/lazr-js/cssfonts/fonts-context.css (+47/-0)
identityprovider/media/lazr-js/cssfonts/fonts-min.css (+8/-0)
identityprovider/media/lazr-js/cssfonts/fonts.css (+47/-0)
identityprovider/media/lazr-js/cssgrids/grids-context-min.css (+8/-0)
identityprovider/media/lazr-js/cssgrids/grids-context.css (+491/-0)
identityprovider/media/lazr-js/cssgrids/grids-min.css (+8/-0)
identityprovider/media/lazr-js/cssgrids/grids.css (+481/-0)
identityprovider/media/lazr-js/cssreset/reset-context-min.css (+8/-0)
identityprovider/media/lazr-js/cssreset/reset-context.css (+126/-0)
identityprovider/media/lazr-js/cssreset/reset-min.css (+8/-0)
identityprovider/media/lazr-js/cssreset/reset.css (+126/-0)
identityprovider/media/lazr-js/dataschema/dataschema-array-debug.js (+110/-0)
identityprovider/media/lazr-js/dataschema/dataschema-array-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-array.js (+107/-0)
identityprovider/media/lazr-js/dataschema/dataschema-base-debug.js (+74/-0)
identityprovider/media/lazr-js/dataschema/dataschema-base-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-base.js (+73/-0)
identityprovider/media/lazr-js/dataschema/dataschema-debug.js (+745/-0)
identityprovider/media/lazr-js/dataschema/dataschema-json-debug.js (+298/-0)
identityprovider/media/lazr-js/dataschema/dataschema-json-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-json.js (+294/-0)
identityprovider/media/lazr-js/dataschema/dataschema-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-text-debug.js (+117/-0)
identityprovider/media/lazr-js/dataschema/dataschema-text-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-text.js (+116/-0)
identityprovider/media/lazr-js/dataschema/dataschema-xml-debug.js (+165/-0)
identityprovider/media/lazr-js/dataschema/dataschema-xml-min.js (+8/-0)
identityprovider/media/lazr-js/dataschema/dataschema-xml.js (+164/-0)
identityprovider/media/lazr-js/dataschema/dataschema.js (+735/-0)
identityprovider/media/lazr-js/datasource/datasource-arrayschema-debug.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-arrayschema-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-arrayschema.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-cache-debug.js (+136/-0)
identityprovider/media/lazr-js/datasource/datasource-cache-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-cache.js (+136/-0)
identityprovider/media/lazr-js/datasource/datasource-debug.js (+1471/-0)
identityprovider/media/lazr-js/datasource/datasource-function-debug.js (+115/-0)
identityprovider/media/lazr-js/datasource/datasource-function-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-function.js (+115/-0)
identityprovider/media/lazr-js/datasource/datasource-get-debug.js (+228/-0)
identityprovider/media/lazr-js/datasource/datasource-get-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-get.js (+226/-0)
identityprovider/media/lazr-js/datasource/datasource-io-debug.js (+156/-0)
identityprovider/media/lazr-js/datasource/datasource-io-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-io.js (+154/-0)
identityprovider/media/lazr-js/datasource/datasource-jsonschema-debug.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-jsonschema-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-jsonschema.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-local-debug.js (+340/-0)
identityprovider/media/lazr-js/datasource/datasource-local-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-local.js (+336/-0)
identityprovider/media/lazr-js/datasource/datasource-min.js (+9/-0)
identityprovider/media/lazr-js/datasource/datasource-polling-debug.js (+93/-0)
identityprovider/media/lazr-js/datasource/datasource-polling-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-polling.js (+93/-0)
identityprovider/media/lazr-js/datasource/datasource-textschema-debug.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-textschema-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-textschema.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-xmlschema-debug.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource-xmlschema-min.js (+8/-0)
identityprovider/media/lazr-js/datasource/datasource-xmlschema.js (+113/-0)
identityprovider/media/lazr-js/datasource/datasource.js (+1463/-0)
identityprovider/media/lazr-js/datatype/datatype-date-debug.js (+500/-0)
identityprovider/media/lazr-js/datatype/datatype-date-format-debug.js (+447/-0)
identityprovider/media/lazr-js/datatype/datatype-date-format-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-date-format.js (+443/-0)
identityprovider/media/lazr-js/datatype/datatype-date-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-date-parse-debug.js (+54/-0)
identityprovider/media/lazr-js/datatype/datatype-date-parse-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-date-parse.js (+53/-0)
identityprovider/media/lazr-js/datatype/datatype-date.js (+495/-0)
identityprovider/media/lazr-js/datatype/datatype-debug.js (+775/-0)
identityprovider/media/lazr-js/datatype/datatype-min.js (+9/-0)
identityprovider/media/lazr-js/datatype/datatype-number-debug.js (+158/-0)
identityprovider/media/lazr-js/datatype/datatype-number-format-debug.js (+113/-0)
identityprovider/media/lazr-js/datatype/datatype-number-format-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-number-format.js (+112/-0)
identityprovider/media/lazr-js/datatype/datatype-number-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-number-parse-debug.js (+46/-0)
identityprovider/media/lazr-js/datatype/datatype-number-parse-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-number-parse.js (+45/-0)
identityprovider/media/lazr-js/datatype/datatype-number.js (+156/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-debug.js (+124/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-format-debug.js (+61/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-format-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-format.js (+60/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-parse-debug.js (+64/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-parse-min.js (+8/-0)
identityprovider/media/lazr-js/datatype/datatype-xml-parse.js (+62/-0)
identityprovider/media/lazr-js/datatype/datatype-xml.js (+121/-0)
identityprovider/media/lazr-js/datatype/datatype.js (+765/-0)
identityprovider/media/lazr-js/dd/dd-constrain-debug.js (+425/-0)
identityprovider/media/lazr-js/dd/dd-constrain-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-constrain.js (+425/-0)
identityprovider/media/lazr-js/dd/dd-ddm-base-debug.js (+289/-0)
identityprovider/media/lazr-js/dd/dd-ddm-base-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-ddm-base.js (+289/-0)
identityprovider/media/lazr-js/dd/dd-ddm-debug.js (+135/-0)
identityprovider/media/lazr-js/dd/dd-ddm-drop-debug.js (+411/-0)
identityprovider/media/lazr-js/dd/dd-ddm-drop-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-ddm-drop.js (+411/-0)
identityprovider/media/lazr-js/dd/dd-ddm-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-ddm.js (+135/-0)
identityprovider/media/lazr-js/dd/dd-debug.js (+3529/-0)
identityprovider/media/lazr-js/dd/dd-drag-debug.js (+1100/-0)
identityprovider/media/lazr-js/dd/dd-drag-min.js (+9/-0)
identityprovider/media/lazr-js/dd/dd-drag.js (+1100/-0)
identityprovider/media/lazr-js/dd/dd-drop-debug.js (+485/-0)
identityprovider/media/lazr-js/dd/dd-drop-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-drop-plugin-debug.js (+52/-0)
identityprovider/media/lazr-js/dd/dd-drop-plugin-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-drop-plugin.js (+52/-0)
identityprovider/media/lazr-js/dd/dd-drop.js (+485/-0)
identityprovider/media/lazr-js/dd/dd-min.js (+12/-0)
identityprovider/media/lazr-js/dd/dd-plugin-debug.js (+53/-0)
identityprovider/media/lazr-js/dd/dd-plugin-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-plugin.js (+53/-0)
identityprovider/media/lazr-js/dd/dd-proxy-debug.js (+225/-0)
identityprovider/media/lazr-js/dd/dd-proxy-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-proxy.js (+225/-0)
identityprovider/media/lazr-js/dd/dd-scroll-debug.js (+413/-0)
identityprovider/media/lazr-js/dd/dd-scroll-min.js (+8/-0)
identityprovider/media/lazr-js/dd/dd-scroll.js (+413/-0)
identityprovider/media/lazr-js/dd/dd.js (+3529/-0)
identityprovider/media/lazr-js/dom/dom-base-debug.js (+740/-0)
identityprovider/media/lazr-js/dom/dom-base-min.js (+9/-0)
identityprovider/media/lazr-js/dom/dom-base.js (+737/-0)
identityprovider/media/lazr-js/dom/dom-debug.js (+2486/-0)
identityprovider/media/lazr-js/dom/dom-min.js (+11/-0)
identityprovider/media/lazr-js/dom/dom-screen-debug.js (+573/-0)
identityprovider/media/lazr-js/dom/dom-screen-min.js (+8/-0)
identityprovider/media/lazr-js/dom/dom-screen.js (+567/-0)
identityprovider/media/lazr-js/dom/dom-style-debug.js (+511/-0)
identityprovider/media/lazr-js/dom/dom-style-min.js (+8/-0)
identityprovider/media/lazr-js/dom/dom-style.js (+506/-0)
identityprovider/media/lazr-js/dom/dom.js (+2466/-0)
identityprovider/media/lazr-js/dom/selector-css2-debug.js (+450/-0)
identityprovider/media/lazr-js/dom/selector-css2-min.js (+8/-0)
identityprovider/media/lazr-js/dom/selector-css2.js (+449/-0)
identityprovider/media/lazr-js/dom/selector-css3-debug.js (+151/-0)
identityprovider/media/lazr-js/dom/selector-css3-min.js (+8/-0)
identityprovider/media/lazr-js/dom/selector-css3.js (+151/-0)
identityprovider/media/lazr-js/dom/selector-debug.js (+679/-0)
identityprovider/media/lazr-js/dom/selector-min.js (+9/-0)
identityprovider/media/lazr-js/dom/selector-native-debug.js (+232/-0)
identityprovider/media/lazr-js/dom/selector-native-min.js (+8/-0)
identityprovider/media/lazr-js/dom/selector-native.js (+227/-0)
identityprovider/media/lazr-js/dom/selector.js (+673/-0)
identityprovider/media/lazr-js/dump/dump-debug.js (+119/-0)
identityprovider/media/lazr-js/dump/dump-min.js (+8/-0)
identityprovider/media/lazr-js/dump/dump.js (+119/-0)
identityprovider/media/lazr-js/event-custom/event-custom-base-debug.js (+1732/-0)
identityprovider/media/lazr-js/event-custom/event-custom-base-min.js (+9/-0)
identityprovider/media/lazr-js/event-custom/event-custom-base.js (+1722/-0)
identityprovider/media/lazr-js/event-custom/event-custom-complex-debug.js (+364/-0)
identityprovider/media/lazr-js/event-custom/event-custom-complex-min.js (+8/-0)
identityprovider/media/lazr-js/event-custom/event-custom-complex.js (+363/-0)
identityprovider/media/lazr-js/event-custom/event-custom-debug.js (+2093/-0)
identityprovider/media/lazr-js/event-custom/event-custom-min.js (+10/-0)
identityprovider/media/lazr-js/event-custom/event-custom.js (+2082/-0)
identityprovider/media/lazr-js/event-simulate/event-simulate-debug.js (+490/-0)
identityprovider/media/lazr-js/event-simulate/event-simulate-min.js (+8/-0)
identityprovider/media/lazr-js/event-simulate/event-simulate.js (+490/-0)
identityprovider/media/lazr-js/event/event-base-debug.js (+1388/-0)
identityprovider/media/lazr-js/event/event-base-min.js (+11/-0)
identityprovider/media/lazr-js/event/event-base.js (+1378/-0)
identityprovider/media/lazr-js/event/event-debug.js (+2242/-0)
identityprovider/media/lazr-js/event/event-delegate-debug.js (+370/-0)
identityprovider/media/lazr-js/event/event-delegate-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-delegate.js (+365/-0)
identityprovider/media/lazr-js/event/event-focus-debug.js (+90/-0)
identityprovider/media/lazr-js/event/event-focus-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-focus.js (+90/-0)
identityprovider/media/lazr-js/event/event-key-debug.js (+111/-0)
identityprovider/media/lazr-js/event/event-key-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-key.js (+106/-0)
identityprovider/media/lazr-js/event/event-min.js (+12/-0)
identityprovider/media/lazr-js/event/event-mouseenter-debug.js (+193/-0)
identityprovider/media/lazr-js/event/event-mouseenter-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-mouseenter.js (+191/-0)
identityprovider/media/lazr-js/event/event-mousewheel-debug.js (+57/-0)
identityprovider/media/lazr-js/event/event-mousewheel-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-mousewheel.js (+57/-0)
identityprovider/media/lazr-js/event/event-resize-debug.js (+71/-0)
identityprovider/media/lazr-js/event/event-resize-min.js (+8/-0)
identityprovider/media/lazr-js/event/event-resize.js (+71/-0)
identityprovider/media/lazr-js/event/event.js (+2220/-0)
identityprovider/media/lazr-js/get/get-debug.js (+754/-0)
identityprovider/media/lazr-js/get/get-min.js (+8/-0)
identityprovider/media/lazr-js/get/get.js (+734/-0)
identityprovider/media/lazr-js/history/history-debug.js (+680/-0)
identityprovider/media/lazr-js/history/history-min.js (+8/-0)
identityprovider/media/lazr-js/history/history.js (+680/-0)
identityprovider/media/lazr-js/imageloader/imageloader-debug.js (+635/-0)
identityprovider/media/lazr-js/imageloader/imageloader-min.js (+8/-0)
identityprovider/media/lazr-js/imageloader/imageloader.js (+623/-0)
identityprovider/media/lazr-js/io/io-base-debug.js (+743/-0)
identityprovider/media/lazr-js/io/io-base-min.js (+8/-0)
identityprovider/media/lazr-js/io/io-base.js (+743/-0)
identityprovider/media/lazr-js/io/io-debug.js (+1633/-0)
identityprovider/media/lazr-js/io/io-form-debug.js (+102/-0)
identityprovider/media/lazr-js/io/io-form-min.js (+8/-0)
identityprovider/media/lazr-js/io/io-form.js (+101/-0)
identityprovider/media/lazr-js/io/io-min.js (+9/-0)
identityprovider/media/lazr-js/io/io-queue-debug.js (+225/-0)
identityprovider/media/lazr-js/io/io-queue-min.js (+8/-0)
identityprovider/media/lazr-js/io/io-queue.js (+222/-0)
identityprovider/media/lazr-js/io/io-upload-iframe-debug.js (+291/-0)
identityprovider/media/lazr-js/io/io-upload-iframe-min.js (+8/-0)
identityprovider/media/lazr-js/io/io-upload-iframe.js (+283/-0)
identityprovider/media/lazr-js/io/io-xdr-debug.js (+291/-0)
identityprovider/media/lazr-js/io/io-xdr-min.js (+8/-0)
identityprovider/media/lazr-js/io/io-xdr.js (+291/-0)
identityprovider/media/lazr-js/io/io.js (+1621/-0)
identityprovider/media/lazr-js/json/json-debug.js (+496/-0)
identityprovider/media/lazr-js/json/json-min.js (+8/-0)
identityprovider/media/lazr-js/json/json-parse-debug.js (+214/-0)
identityprovider/media/lazr-js/json/json-parse-min.js (+8/-0)
identityprovider/media/lazr-js/json/json-parse.js (+214/-0)
identityprovider/media/lazr-js/json/json-stringify-debug.js (+285/-0)
identityprovider/media/lazr-js/json/json-stringify-min.js (+8/-0)
identityprovider/media/lazr-js/json/json-stringify.js (+285/-0)
identityprovider/media/lazr-js/json/json.js (+496/-0)
identityprovider/media/lazr-js/lazr/actions/actions-min.js (+9/-0)
identityprovider/media/lazr-js/lazr/activator/activator-min.js (+9/-0)
identityprovider/media/lazr-js/lazr/activator/assets/skins/sam/activator.css (+4/-0)
identityprovider/media/lazr-js/lazr/anim/anim-min.js (+4/-0)
identityprovider/media/lazr-js/lazr/autocomplete/assets/skins/sam/autocomplete.css (+4/-0)
identityprovider/media/lazr-js/lazr/autocomplete/autocomplete-min.js (+32/-0)
identityprovider/media/lazr-js/lazr/choiceedit/assets/skins/sam/choiceedit.css (+4/-0)
identityprovider/media/lazr-js/lazr/choiceedit/choiceedit-min.js (+23/-0)
identityprovider/media/lazr-js/lazr/effects/assets/skins/sam/effects.css (+2/-0)
identityprovider/media/lazr-js/lazr/effects/effects-async-min.js (+10/-0)
identityprovider/media/lazr-js/lazr/effects/effects-min.js (+6/-0)
identityprovider/media/lazr-js/lazr/error/assets/skins/sam/error.css (+4/-0)
identityprovider/media/lazr-js/lazr/error/assets/skins/sam/minimal-error-widget.css (+2/-0)
identityprovider/media/lazr-js/lazr/error/error-min.js (+3/-0)
identityprovider/media/lazr-js/lazr/error/error-widget-minimal-min.js (+6/-0)
identityprovider/media/lazr-js/lazr/formoverlay/assets/skins/sam/formoverlay.css (+4/-0)
identityprovider/media/lazr-js/lazr/formoverlay/formoverlay-min.js (+16/-0)
identityprovider/media/lazr-js/lazr/inlineedit/assets/skins/sam/editor.css (+4/-0)
identityprovider/media/lazr-js/lazr/inlineedit/editor-min.js (+29/-0)
identityprovider/media/lazr-js/lazr/lazr-meta.js (+55/-0)
identityprovider/media/lazr-js/lazr/lazr-sam.css (+24/-0)
identityprovider/media/lazr-js/lazr/lazr.js (+211/-0)
identityprovider/media/lazr-js/lazr/lazr/assets/skins/sam/lazr.css (+2/-0)
identityprovider/media/lazr-js/lazr/lazr/lazr-min.js (+3/-0)
identityprovider/media/lazr-js/lazr/overlay/assets/skins/sam/pretty-overlay.css (+4/-0)
identityprovider/media/lazr-js/lazr/overlay/overlay-min.js (+11/-0)
identityprovider/media/lazr-js/lazr/passwordmeter/assets/skins/sam/passwordmeter.css (+4/-0)
identityprovider/media/lazr-js/lazr/passwordmeter/passwordmeter-min.js (+5/-0)
identityprovider/media/lazr-js/lazr/picker/assets/skins/sam/picker.css (+4/-0)
identityprovider/media/lazr-js/lazr/picker/picker-min.js (+10/-0)
identityprovider/media/lazr-js/lazr/testing/jsUnitMockTimeout-min.js (+7/-0)
identityprovider/media/lazr-js/lazr/testing/mockio-min.js (+6/-0)
identityprovider/media/lazr-js/lazr/testing/testing-min.js (+4/-0)
identityprovider/media/lazr-js/loader/loader-debug.js (+2166/-0)
identityprovider/media/lazr-js/loader/loader-min.js (+10/-0)
identityprovider/media/lazr-js/loader/loader.js (+2129/-0)
identityprovider/media/lazr-js/node-focusmanager/node-focusmanager-debug.js (+1063/-0)
identityprovider/media/lazr-js/node-focusmanager/node-focusmanager-min.js (+8/-0)
identityprovider/media/lazr-js/node-focusmanager/node-focusmanager.js (+1060/-0)
identityprovider/media/lazr-js/node-menunav/assets/node-menunav-core.css (+176/-0)
identityprovider/media/lazr-js/node-menunav/assets/skins/sam/node-menunav-skin.css (+270/-0)
identityprovider/media/lazr-js/node-menunav/assets/skins/sam/node-menunav.css (+8/-0)
identityprovider/media/lazr-js/node-menunav/node-menunav-debug.js (+2165/-0)
identityprovider/media/lazr-js/node-menunav/node-menunav-min.js (+10/-0)
identityprovider/media/lazr-js/node-menunav/node-menunav.js (+2165/-0)
identityprovider/media/lazr-js/node/node-aria-debug.js (+32/-0)
identityprovider/media/lazr-js/node/node-aria-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-aria.js (+32/-0)
identityprovider/media/lazr-js/node/node-base-debug.js (+1570/-0)
identityprovider/media/lazr-js/node/node-base-min.js (+9/-0)
identityprovider/media/lazr-js/node/node-base.js (+1560/-0)
identityprovider/media/lazr-js/node/node-debug.js (+1961/-0)
identityprovider/media/lazr-js/node/node-event-delegate-debug.js (+35/-0)
identityprovider/media/lazr-js/node/node-event-delegate-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-event-delegate.js (+35/-0)
identityprovider/media/lazr-js/node/node-event-simulate-debug.js (+31/-0)
identityprovider/media/lazr-js/node/node-event-simulate-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-event-simulate.js (+31/-0)
identityprovider/media/lazr-js/node/node-min.js (+10/-0)
identityprovider/media/lazr-js/node/node-pluginhost-debug.js (+61/-0)
identityprovider/media/lazr-js/node/node-pluginhost-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-pluginhost.js (+61/-0)
identityprovider/media/lazr-js/node/node-screen-debug.js (+229/-0)
identityprovider/media/lazr-js/node/node-screen-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-screen.js (+227/-0)
identityprovider/media/lazr-js/node/node-style-debug.js (+90/-0)
identityprovider/media/lazr-js/node/node-style-min.js (+8/-0)
identityprovider/media/lazr-js/node/node-style.js (+90/-0)
identityprovider/media/lazr-js/node/node.js (+1949/-0)
identityprovider/media/lazr-js/oop/oop-debug.js (+371/-0)
identityprovider/media/lazr-js/oop/oop-min.js (+8/-0)
identityprovider/media/lazr-js/oop/oop.js (+367/-0)
identityprovider/media/lazr-js/overlay/assets/overlay-core.css (+14/-0)
identityprovider/media/lazr-js/overlay/assets/skins/sam/overlay-skin.css (+7/-0)
identityprovider/media/lazr-js/overlay/assets/skins/sam/overlay.css (+8/-0)
identityprovider/media/lazr-js/overlay/overlay-debug.js (+36/-0)
identityprovider/media/lazr-js/overlay/overlay-min.js (+8/-0)
identityprovider/media/lazr-js/overlay/overlay.js (+36/-0)
identityprovider/media/lazr-js/plugin/plugin-debug.js (+172/-0)
identityprovider/media/lazr-js/plugin/plugin-min.js (+8/-0)
identityprovider/media/lazr-js/plugin/plugin.js (+170/-0)
identityprovider/media/lazr-js/pluginhost/pluginhost-debug.js (+296/-0)
identityprovider/media/lazr-js/pluginhost/pluginhost-min.js (+8/-0)
identityprovider/media/lazr-js/pluginhost/pluginhost.js (+296/-0)
identityprovider/media/lazr-js/profiler/profiler-debug.js (+555/-0)
identityprovider/media/lazr-js/profiler/profiler-min.js (+8/-0)
identityprovider/media/lazr-js/profiler/profiler.js (+555/-0)
identityprovider/media/lazr-js/queue-promote/queue-promote-debug.js (+60/-0)
identityprovider/media/lazr-js/queue-promote/queue-promote-min.js (+8/-0)
identityprovider/media/lazr-js/queue-promote/queue-promote.js (+60/-0)
identityprovider/media/lazr-js/slider/assets/skins/sam/slider-skin.css (+18/-0)
identityprovider/media/lazr-js/slider/assets/skins/sam/slider.css (+8/-0)
identityprovider/media/lazr-js/slider/assets/slider-core.css (+42/-0)
identityprovider/media/lazr-js/slider/slider-debug.js (+1493/-0)
identityprovider/media/lazr-js/slider/slider-min.js (+9/-0)
identityprovider/media/lazr-js/slider/slider.js (+1472/-0)
identityprovider/media/lazr-js/stylesheet/stylesheet-debug.js (+636/-0)
identityprovider/media/lazr-js/stylesheet/stylesheet-min.js (+8/-0)
identityprovider/media/lazr-js/stylesheet/stylesheet.js (+633/-0)
identityprovider/media/lazr-js/substitute/substitute-debug.js (+139/-0)
identityprovider/media/lazr-js/substitute/substitute-min.js (+8/-0)
identityprovider/media/lazr-js/substitute/substitute.js (+139/-0)
identityprovider/media/lazr-js/test/assets/test-console.css (+34/-0)
identityprovider/media/lazr-js/test/test-debug.js (+2796/-0)
identityprovider/media/lazr-js/test/test-min.js (+12/-0)
identityprovider/media/lazr-js/test/test.js (+2796/-0)
identityprovider/media/lazr-js/widget/assets/skins/sam/widget-skin.css (+7/-0)
identityprovider/media/lazr-js/widget/assets/skins/sam/widget-stack-skin.css (+7/-0)
identityprovider/media/lazr-js/widget/assets/skins/sam/widget-stack.css (+8/-0)
identityprovider/media/lazr-js/widget/assets/skins/sam/widget.css (+8/-0)
identityprovider/media/lazr-js/widget/assets/widget-core.css (+10/-0)
identityprovider/media/lazr-js/widget/assets/widget-stack-core.css (+26/-0)
identityprovider/media/lazr-js/widget/widget-debug.js (+1337/-0)
identityprovider/media/lazr-js/widget/widget-min.js (+9/-0)
identityprovider/media/lazr-js/widget/widget-position-debug.js (+272/-0)
identityprovider/media/lazr-js/widget/widget-position-ext-debug.js (+409/-0)
identityprovider/media/lazr-js/widget/widget-position-ext-min.js (+8/-0)
identityprovider/media/lazr-js/widget/widget-position-ext.js (+407/-0)
identityprovider/media/lazr-js/widget/widget-position-min.js (+8/-0)
identityprovider/media/lazr-js/widget/widget-position.js (+272/-0)
identityprovider/media/lazr-js/widget/widget-stack-debug.js (+403/-0)
identityprovider/media/lazr-js/widget/widget-stack-min.js (+8/-0)
identityprovider/media/lazr-js/widget/widget-stack.js (+403/-0)
identityprovider/media/lazr-js/widget/widget-stdmod-debug.js (+755/-0)
identityprovider/media/lazr-js/widget/widget-stdmod-min.js (+8/-0)
identityprovider/media/lazr-js/widget/widget-stdmod.js (+755/-0)
identityprovider/media/lazr-js/widget/widget.js (+1329/-0)
identityprovider/media/lazr-js/yui-base/yui-base-debug.js (+2150/-0)
identityprovider/media/lazr-js/yui-base/yui-base-min.js (+9/-0)
identityprovider/media/lazr-js/yui-base/yui-base.js (+2136/-0)
identityprovider/media/lazr-js/yui/get-debug.js (+754/-0)
identityprovider/media/lazr-js/yui/get-min.js (+8/-0)
identityprovider/media/lazr-js/yui/get.js (+734/-0)
identityprovider/media/lazr-js/yui/yui-base-debug.js (+2166/-0)
identityprovider/media/lazr-js/yui/yui-base-min.js (+9/-0)
identityprovider/media/lazr-js/yui/yui-base.js (+2149/-0)
identityprovider/media/lazr-js/yui/yui-debug.js (+3094/-0)
identityprovider/media/lazr-js/yui/yui-later-debug.js (+77/-0)
identityprovider/media/lazr-js/yui/yui-later-min.js (+8/-0)
identityprovider/media/lazr-js/yui/yui-later.js (+76/-0)
identityprovider/media/lazr-js/yui/yui-log-debug.js (+114/-0)
identityprovider/media/lazr-js/yui/yui-log-min.js (+8/-0)
identityprovider/media/lazr-js/yui/yui-log.js (+114/-0)
identityprovider/media/lazr-js/yui/yui-min.js (+10/-0)
identityprovider/media/lazr-js/yui/yui.js (+3056/-0)
identityprovider/templates/account/edit.html (+43/-1)
identityprovider/templates/registration/confirm_new_account.html (+42/-1)
identityprovider/templates/registration/reset_password.html (+42/-1)
To merge this branch: bzr merge lp:~canonical-isd-hackers/canonical-identity-provider/password_strength
Reviewer Review Type Date Requested Status
Łukasz Czyżykowski (community) Approve
Review via email: mp+27571@code.launchpad.net

Description of the change

Added lazr-js library. Added password strength widget to our pages that require password input.

To post a comment you must log in.
Revision history for this message
Łukasz Czyżykowski (lukasz-czyzykowski) wrote :

I don't see any password strength meter being added to templates or views. Or even included in JavaScript code. It looks like only YUI3/lazr-js files.

Revision history for this message
Danny Tamez (zematynnad) wrote :

There are only three files modified. They are at the very bottom of the diff. Search for 'modified file' without the quotes.

Revision history for this message
Łukasz Czyżykowski (lukasz-czyzykowski) wrote :

Truncated diff prevented me from seeing most important changes before.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'identityprovider/media/lazr-js'
2=== added directory 'identityprovider/media/lazr-js/anim'
3=== added file 'identityprovider/media/lazr-js/anim/anim-base-debug.js'
4--- identityprovider/media/lazr-js/anim/anim-base-debug.js 1970-01-01 00:00:00 +0000
5+++ identityprovider/media/lazr-js/anim/anim-base-debug.js 2010-06-15 01:37:25 +0000
6@@ -0,0 +1,603 @@
7+/*
8+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
9+Code licensed under the BSD License:
10+http://developer.yahoo.net/yui/license.txt
11+version: 3.0.0
12+build: 1549
13+*/
14+YUI.add('anim-base', function(Y) {
15+
16+/**
17+* The Animation Utility provides an API for creating advanced transitions.
18+* @module anim
19+*/
20+
21+/**
22+* Provides the base Anim class, for animating numeric properties.
23+*
24+* @module anim
25+* @submodule anim-base
26+*/
27+
28+ /**
29+ * A class for constructing animation instances.
30+ * @class Anim
31+ * @for Anim
32+ * @constructor
33+ * @extends Base
34+ */
35+
36+ var RUNNING = 'running',
37+ START_TIME = 'startTime',
38+ ELAPSED_TIME = 'elapsedTime',
39+ /**
40+ * @for Anim
41+ * @event start
42+ * @description fires when an animation begins.
43+ * @param {Event} ev The start event.
44+ * @type Event.Custom
45+ */
46+ START = 'start',
47+
48+ /**
49+ * @event tween
50+ * @description fires every frame of the animation.
51+ * @param {Event} ev The tween event.
52+ * @type Event.Custom
53+ */
54+ TWEEN = 'tween',
55+
56+ /**
57+ * @event end
58+ * @description fires after the animation completes.
59+ * @param {Event} ev The end event.
60+ * @type Event.Custom
61+ */
62+ END = 'end',
63+ NODE = 'node',
64+ PAUSED = 'paused',
65+ REVERSE = 'reverse', // TODO: cleanup
66+ ITERATION_COUNT = 'iterationCount',
67+
68+ NUM = Number;
69+
70+ var _running = {},
71+ _instances = {},
72+ _timer;
73+
74+ Y.Anim = function() {
75+ Y.Anim.superclass.constructor.apply(this, arguments);
76+ _instances[Y.stamp(this)] = this;
77+ };
78+
79+ Y.Anim.NAME = 'anim';
80+
81+ /**
82+ * Regex of properties that should use the default unit.
83+ *
84+ * @property RE_DEFAULT_UNIT
85+ * @static
86+ */
87+ Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
88+
89+ /**
90+ * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
91+ *
92+ * @property DEFAULT_UNIT
93+ * @static
94+ */
95+ Y.Anim.DEFAULT_UNIT = 'px';
96+
97+ Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
98+ return c * t / d + b; // linear easing
99+ };
100+
101+ /**
102+ * Bucket for custom getters and setters
103+ *
104+ * @property behaviors
105+ * @static
106+ */
107+ Y.Anim.behaviors = {
108+ left: {
109+ get: function(anim, attr) {
110+ return anim._getOffset(attr);
111+ }
112+ }
113+ };
114+
115+ Y.Anim.behaviors.top = Y.Anim.behaviors.left;
116+
117+ /**
118+ * The default setter to use when setting object properties.
119+ *
120+ * @property DEFAULT_SETTER
121+ * @static
122+ */
123+ Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
124+ unit = unit || '';
125+ anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
126+ };
127+
128+ /**
129+ * The default getter to use when getting object properties.
130+ *
131+ * @property DEFAULT_GETTER
132+ * @static
133+ */
134+ Y.Anim.DEFAULT_GETTER = function(anim, prop) {
135+ return anim._node.getComputedStyle(prop);
136+ };
137+
138+ Y.Anim.ATTRS = {
139+ /**
140+ * The object to be animated.
141+ * @attribute node
142+ * @type Node
143+ */
144+ node: {
145+ setter: function(node) {
146+ node = Y.get(node);
147+ this._node = node;
148+ if (!node) {
149+ Y.log(node + ' is not a valid node', 'warn', 'Anim');
150+ }
151+ return node;
152+ }
153+ },
154+
155+ /**
156+ * The length of the animation. Defaults to "1" (second).
157+ * @attribute duration
158+ * @type NUM
159+ */
160+ duration: {
161+ value: 1
162+ },
163+
164+ /**
165+ * The method that will provide values to the attribute(s) during the animation.
166+ * Defaults to "Easing.easeNone".
167+ * @attribute easing
168+ * @type Function
169+ */
170+ easing: {
171+ value: Y.Anim.DEFAULT_EASING,
172+
173+ setter: function(val) {
174+ if (typeof val === 'string' && Y.Easing) {
175+ return Y.Easing[val];
176+ }
177+ }
178+ },
179+
180+ /**
181+ * The starting values for the animated properties.
182+ * Fields may be strings, numbers, or functions.
183+ * If a function is used, the return value becomes the from value.
184+ * If no from value is specified, the DEFAULT_GETTER will be used.
185+ * @attribute from
186+ * @type Object
187+ */
188+ from: {},
189+
190+ /**
191+ * The ending values for the animated properties.
192+ * Fields may be strings, numbers, or functions.
193+ * @attribute to
194+ * @type Object
195+ */
196+ to: {},
197+
198+ /**
199+ * Date stamp for the first frame of the animation.
200+ * @attribute startTime
201+ * @type Int
202+ * @default 0
203+ * @readOnly
204+ */
205+ startTime: {
206+ value: 0,
207+ readOnly: true
208+ },
209+
210+ /**
211+ * Current time the animation has been running.
212+ * @attribute elapsedTime
213+ * @type Int
214+ * @default 0
215+ * @readOnly
216+ */
217+ elapsedTime: {
218+ value: 0,
219+ readOnly: true
220+ },
221+
222+ /**
223+ * Whether or not the animation is currently running.
224+ * @attribute running
225+ * @type Boolean
226+ * @default false
227+ * @readOnly
228+ */
229+ running: {
230+ getter: function() {
231+ return !!_running[Y.stamp(this)];
232+ },
233+ value: false,
234+ readOnly: true
235+ },
236+
237+ /**
238+ * The number of times the animation should run
239+ * @attribute iterations
240+ * @type Int
241+ * @default 1
242+ */
243+ iterations: {
244+ value: 1
245+ },
246+
247+ /**
248+ * The number of iterations that have occurred.
249+ * Resets when an animation ends (reaches iteration count or stop() called).
250+ * @attribute iterationCount
251+ * @type Int
252+ * @default 0
253+ * @readOnly
254+ */
255+ iterationCount: {
256+ value: 0,
257+ readOnly: true
258+ },
259+
260+ /**
261+ * How iterations of the animation should behave.
262+ * Possible values are "normal" and "alternate".
263+ * Normal will repeat the animation, alternate will reverse on every other pass.
264+ *
265+ * @attribute direction
266+ * @type String
267+ * @default "normal"
268+ */
269+ direction: {
270+ value: 'normal' // | alternate (fwd on odd, rev on even per spec)
271+ },
272+
273+ /**
274+ * Whether or not the animation is currently paused.
275+ * @attribute paused
276+ * @type Boolean
277+ * @default false
278+ * @readOnly
279+ */
280+ paused: {
281+ readOnly: true,
282+ value: false
283+ },
284+
285+ /**
286+ * If true, animation begins from last frame
287+ * @attribute reverse
288+ * @type Boolean
289+ * @default false
290+ */
291+ reverse: {
292+ value: false
293+ }
294+
295+
296+ };
297+
298+ /**
299+ * Runs all animation instances.
300+ * @method run
301+ * @static
302+ */
303+ Y.Anim.run = function() {
304+ for (var i in _instances) {
305+ if (_instances[i].run) {
306+ _instances[i].run();
307+ }
308+ }
309+ };
310+
311+ /**
312+ * Pauses all animation instances.
313+ * @method pause
314+ * @static
315+ */
316+ Y.Anim.pause = function() {
317+ for (var i in _running) { // stop timer if nothing running
318+ if (_running[i].pause) {
319+ _running[i].pause();
320+ }
321+ }
322+ Y.Anim._stopTimer();
323+ };
324+
325+ /**
326+ * Stops all animation instances.
327+ * @method stop
328+ * @static
329+ */
330+ Y.Anim.stop = function() {
331+ for (var i in _running) { // stop timer if nothing running
332+ if (_running[i].stop) {
333+ _running[i].stop();
334+ }
335+ }
336+ Y.Anim._stopTimer();
337+ };
338+
339+ Y.Anim._startTimer = function() {
340+ if (!_timer) {
341+ _timer = setInterval(Y.Anim._runFrame, 1);
342+ }
343+ };
344+
345+ Y.Anim._stopTimer = function() {
346+ clearInterval(_timer);
347+ _timer = 0;
348+ };
349+
350+ /**
351+ * Called per Interval to handle each animation frame.
352+ * @method _runFrame
353+ * @private
354+ * @static
355+ */
356+ Y.Anim._runFrame = function() {
357+ var done = true;
358+ for (var anim in _running) {
359+ if (_running[anim]._runFrame) {
360+ done = false;
361+ _running[anim]._runFrame();
362+ }
363+ }
364+
365+ if (done) {
366+ Y.Anim._stopTimer();
367+ }
368+ };
369+
370+ Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
371+
372+ var proto = {
373+ /**
374+ * Starts or resumes an animation.
375+ * percent start time marker.
376+ * @method run
377+ * @chainable
378+ */
379+ run: function() {
380+ if (!this.get(RUNNING)) {
381+ this._start();
382+ } else if (this.get(PAUSED)) {
383+ this._resume();
384+ }
385+ return this;
386+ },
387+
388+ /**
389+ * Pauses the animation and
390+ * freezes it in its current state and time.
391+ * Calling run() will continue where it left off.
392+ * @method pause
393+ * @chainable
394+ */
395+ pause: function() {
396+ if (this.get(RUNNING)) {
397+ this._pause();
398+ }
399+ return this;
400+ },
401+
402+ /**
403+ * Stops the animation and resets its time.
404+ * @method stop
405+ * @chainable
406+ */
407+ stop: function(finish) {
408+ if (this.get(RUNNING) || this.get(PAUSED)) {
409+ this._end(finish);
410+ }
411+ return this;
412+ },
413+
414+ _added: false,
415+
416+ _start: function() {
417+ this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
418+ this._actualFrames = 0;
419+ if (!this.get(PAUSED)) {
420+ this._initAnimAttr();
421+ }
422+ _running[Y.stamp(this)] = this;
423+ Y.Anim._startTimer();
424+
425+ this.fire(START);
426+ },
427+
428+ _pause: function() {
429+ this._set(START_TIME, null);
430+ this._set(PAUSED, true);
431+ delete _running[Y.stamp(this)];
432+
433+ /**
434+ * @event pause
435+ * @description fires when an animation is paused.
436+ * @param {Event} ev The pause event.
437+ * @type Event.Custom
438+ */
439+ this.fire('pause');
440+ },
441+
442+ _resume: function() {
443+ this._set(PAUSED, false);
444+ _running[Y.stamp(this)] = this;
445+
446+ /**
447+ * @event resume
448+ * @description fires when an animation is resumed (run from pause).
449+ * @param {Event} ev The pause event.
450+ * @type Event.Custom
451+ */
452+ this.fire('resume');
453+ },
454+
455+ _end: function(finish) {
456+ this._set(START_TIME, null);
457+ this._set(ELAPSED_TIME, 0);
458+ this._set(PAUSED, false);
459+
460+ delete _running[Y.stamp(this)];
461+ this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
462+ },
463+
464+ _runFrame: function() {
465+ var attr = this._runtimeAttr,
466+ customAttr = Y.Anim.behaviors,
467+ easing = attr.easing,
468+ d = attr.duration,
469+ t = new Date() - this.get(START_TIME),
470+ reversed = this.get(REVERSE),
471+ done = (t >= d),
472+ lastFrame = d,
473+ attribute,
474+ setter;
475+
476+ if (reversed) {
477+ t = d - t;
478+ done = (t <= 0);
479+ lastFrame = 0;
480+ }
481+
482+ for (var i in attr) {
483+ if (attr[i].to) {
484+ attribute = attr[i];
485+ setter = (i in customAttr && 'set' in customAttr[i]) ?
486+ customAttr[i].set : Y.Anim.DEFAULT_SETTER;
487+
488+ if (!done) {
489+ setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);
490+ } else { // ensure final frame value is set
491+ // TODO: handle keyframes
492+ setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);
493+ }
494+ }
495+ }
496+
497+ this._actualFrames += 1;
498+ this._set(ELAPSED_TIME, t);
499+
500+ this.fire(TWEEN);
501+ if (done) {
502+ this._lastFrame();
503+ }
504+ },
505+
506+ _lastFrame: function() {
507+ var iter = this.get('iterations'),
508+ iterCount = this.get(ITERATION_COUNT);
509+
510+ iterCount += 1;
511+ if (iter === 'infinite' || iterCount < iter) {
512+ if (this.get('direction') === 'alternate') {
513+ this.set(REVERSE, !this.get(REVERSE)); // flip it
514+ }
515+ /**
516+ * @event iteration
517+ * @description fires when an animation begins an iteration.
518+ * @param {Event} ev The iteration event.
519+ * @type Event.Custom
520+ */
521+ this.fire('iteration');
522+ } else {
523+ iterCount = 0;
524+ this._end();
525+ }
526+
527+ this._set(START_TIME, new Date());
528+ this._set(ITERATION_COUNT, iterCount);
529+ },
530+
531+ _initAnimAttr: function() {
532+ var from = this.get('from') || {},
533+ to = this.get('to') || {},
534+ dur = this.get('duration') * 1000,
535+ node = this.get(NODE),
536+ easing = this.get('easing') || {},
537+ attr = {},
538+ customAttr = Y.Anim.behaviors,
539+ unit, begin, end;
540+
541+ Y.each(to, function(val, name) {
542+ if (typeof val === 'function') {
543+ val = val.call(this, node);
544+ }
545+
546+ begin = from[name];
547+ if (begin === undefined) {
548+ begin = (name in customAttr && 'get' in customAttr[name]) ?
549+ customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
550+ } else if (typeof begin === 'function') {
551+ begin = begin.call(this, node);
552+ }
553+
554+ var mFrom = Y.Anim.RE_UNITS.exec(begin);
555+ var mTo = Y.Anim.RE_UNITS.exec(val);
556+
557+ begin = mFrom ? mFrom[1] : begin;
558+ end = mTo ? mTo[1] : val;
559+ unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units
560+
561+ if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
562+ unit = Y.Anim.DEFAULT_UNIT;
563+ }
564+
565+ if (!begin || !end) {
566+ Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
567+ return;
568+ }
569+
570+ attr[name] = {
571+ from: begin,
572+ to: end,
573+ unit: unit
574+ };
575+
576+ attr.duration = dur;
577+ attr.easing = easing;
578+
579+ }, this);
580+
581+ this._runtimeAttr = attr;
582+ },
583+
584+
585+ // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
586+ _getOffset: function(attr) {
587+ var node = this._node,
588+ val = node.getComputedStyle(attr),
589+ get = (attr === 'left') ? 'getX': 'getY',
590+ set = (attr === 'left') ? 'setX': 'setY';
591+
592+ if (val === 'auto') {
593+ var position = node.getStyle('position');
594+ if (position === 'absolute' || position === 'fixed') {
595+ val = node[get]();
596+ node[set](val);
597+ } else {
598+ val = 0;
599+ }
600+ }
601+
602+ return val;
603+ }
604+ };
605+
606+ Y.extend(Y.Anim, Y.Base, proto);
607+
608+
609+}, '3.0.0' ,{requires:['base-base', 'node-style']});
610
611=== added file 'identityprovider/media/lazr-js/anim/anim-base-min.js'
612--- identityprovider/media/lazr-js/anim/anim-base-min.js 1970-01-01 00:00:00 +0000
613+++ identityprovider/media/lazr-js/anim/anim-base-min.js 2010-06-15 01:37:25 +0000
614@@ -0,0 +1,8 @@
615+/*
616+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
617+Code licensed under the BSD License:
618+http://developer.yahoo.net/yui/license.txt
619+version: 3.0.0
620+build: 1549
621+*/
622+YUI.add("anim-base",function(B){var C="running",N="startTime",L="elapsedTime",J="start",I="tween",M="end",D="node",K="paused",P="reverse",H="iterationCount",A=Number;var F={},O={},E;B.Anim=function(){B.Anim.superclass.constructor.apply(this,arguments);O[B.stamp(this)]=this;};B.Anim.NAME="anim";B.Anim.RE_DEFAULT_UNIT=/^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;B.Anim.DEFAULT_UNIT="px";B.Anim.DEFAULT_EASING=function(R,Q,T,S){return T*R/S+Q;};B.Anim.behaviors={left:{get:function(R,Q){return R._getOffset(Q);}}};B.Anim.behaviors.top=B.Anim.behaviors.left;B.Anim.DEFAULT_SETTER=function(U,R,X,W,Q,V,S,T){T=T||"";U._node.setStyle(R,S(Q,A(X),A(W)-A(X),V)+T);};B.Anim.DEFAULT_GETTER=function(Q,R){return Q._node.getComputedStyle(R);};B.Anim.ATTRS={node:{setter:function(Q){Q=B.get(Q);this._node=Q;if(!Q){}return Q;}},duration:{value:1},easing:{value:B.Anim.DEFAULT_EASING,setter:function(Q){if(typeof Q==="string"&&B.Easing){return B.Easing[Q];}}},from:{},to:{},startTime:{value:0,readOnly:true},elapsedTime:{value:0,readOnly:true},running:{getter:function(){return !!F[B.stamp(this)];},value:false,readOnly:true},iterations:{value:1},iterationCount:{value:0,readOnly:true},direction:{value:"normal"},paused:{readOnly:true,value:false},reverse:{value:false}};B.Anim.run=function(){for(var Q in O){if(O[Q].run){O[Q].run();}}};B.Anim.pause=function(){for(var Q in F){if(F[Q].pause){F[Q].pause();}}B.Anim._stopTimer();};B.Anim.stop=function(){for(var Q in F){if(F[Q].stop){F[Q].stop();}}B.Anim._stopTimer();};B.Anim._startTimer=function(){if(!E){E=setInterval(B.Anim._runFrame,1);}};B.Anim._stopTimer=function(){clearInterval(E);E=0;};B.Anim._runFrame=function(){var Q=true;for(var R in F){if(F[R]._runFrame){Q=false;F[R]._runFrame();}}if(Q){B.Anim._stopTimer();}};B.Anim.RE_UNITS=/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;var G={run:function(){if(!this.get(C)){this._start();}else{if(this.get(K)){this._resume();}}return this;},pause:function(){if(this.get(C)){this._pause();}return this;},stop:function(Q){if(this.get(C)||this.get(K)){this._end(Q);}return this;},_added:false,_start:function(){this._set(N,new Date()-this.get(L));this._actualFrames=0;if(!this.get(K)){this._initAnimAttr();}F[B.stamp(this)]=this;B.Anim._startTimer();this.fire(J);},_pause:function(){this._set(N,null);this._set(K,true);delete F[B.stamp(this)];this.fire("pause");},_resume:function(){this._set(K,false);F[B.stamp(this)]=this;this.fire("resume");},_end:function(Q){this._set(N,null);this._set(L,0);this._set(K,false);delete F[B.stamp(this)];this.fire(M,{elapsed:this.get(L)});},_runFrame:function(){var X=this._runtimeAttr,S=B.Anim.behaviors,Y=X.easing,Z=X.duration,a=new Date()-this.get(N),W=this.get(P),U=(a>=Z),Q=Z,R,T;if(W){a=Z-a;U=(a<=0);Q=0;}for(var V in X){if(X[V].to){R=X[V];T=(V in S&&"set" in S[V])?S[V].set:B.Anim.DEFAULT_SETTER;if(!U){T(this,V,R.from,R.to,a,Z,Y,R.unit);}else{T(this,V,R.from,R.to,Q,Z,Y,R.unit);}}}this._actualFrames+=1;this._set(L,a);this.fire(I);if(U){this._lastFrame();}},_lastFrame:function(){var Q=this.get("iterations"),R=this.get(H);R+=1;if(Q==="infinite"||R<Q){if(this.get("direction")==="alternate"){this.set(P,!this.get(P));}this.fire("iteration");}else{R=0;this._end();}this._set(N,new Date());this._set(H,R);},_initAnimAttr:function(){var X=this.get("from")||{},Y=this.get("to")||{},Q=this.get("duration")*1000,T=this.get(D),W=this.get("easing")||{},V={},R=B.Anim.behaviors,Z,S,U;B.each(Y,function(d,b){if(typeof d==="function"){d=d.call(this,T);}S=X[b];if(S===undefined){S=(b in R&&"get" in R[b])?R[b].get(this,b):B.Anim.DEFAULT_GETTER(this,b);}else{if(typeof S==="function"){S=S.call(this,T);}}var a=B.Anim.RE_UNITS.exec(S);var c=B.Anim.RE_UNITS.exec(d);S=a?a[1]:S;U=c?c[1]:d;Z=c?c[2]:a?a[2]:"";if(!Z&&B.Anim.RE_DEFAULT_UNIT.test(b)){Z=B.Anim.DEFAULT_UNIT;}if(!S||!U){B.error('invalid "from" or "to" for "'+b+'"',"Anim");return;}V[b]={from:S,to:U,unit:Z};V.duration=Q;V.easing=W;},this);this._runtimeAttr=V;},_getOffset:function(R){var T=this._node,U=T.getComputedStyle(R),S=(R==="left")?"getX":"getY",V=(R==="left")?"setX":"setY";if(U==="auto"){var Q=T.getStyle("position");if(Q==="absolute"||Q==="fixed"){U=T[S]();T[V](U);}else{U=0;}}return U;}};B.extend(B.Anim,B.Base,G);},"3.0.0",{requires:["base-base","node-style"]});
623\ No newline at end of file
624
625=== added file 'identityprovider/media/lazr-js/anim/anim-base.js'
626--- identityprovider/media/lazr-js/anim/anim-base.js 1970-01-01 00:00:00 +0000
627+++ identityprovider/media/lazr-js/anim/anim-base.js 2010-06-15 01:37:25 +0000
628@@ -0,0 +1,602 @@
629+/*
630+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
631+Code licensed under the BSD License:
632+http://developer.yahoo.net/yui/license.txt
633+version: 3.0.0
634+build: 1549
635+*/
636+YUI.add('anim-base', function(Y) {
637+
638+/**
639+* The Animation Utility provides an API for creating advanced transitions.
640+* @module anim
641+*/
642+
643+/**
644+* Provides the base Anim class, for animating numeric properties.
645+*
646+* @module anim
647+* @submodule anim-base
648+*/
649+
650+ /**
651+ * A class for constructing animation instances.
652+ * @class Anim
653+ * @for Anim
654+ * @constructor
655+ * @extends Base
656+ */
657+
658+ var RUNNING = 'running',
659+ START_TIME = 'startTime',
660+ ELAPSED_TIME = 'elapsedTime',
661+ /**
662+ * @for Anim
663+ * @event start
664+ * @description fires when an animation begins.
665+ * @param {Event} ev The start event.
666+ * @type Event.Custom
667+ */
668+ START = 'start',
669+
670+ /**
671+ * @event tween
672+ * @description fires every frame of the animation.
673+ * @param {Event} ev The tween event.
674+ * @type Event.Custom
675+ */
676+ TWEEN = 'tween',
677+
678+ /**
679+ * @event end
680+ * @description fires after the animation completes.
681+ * @param {Event} ev The end event.
682+ * @type Event.Custom
683+ */
684+ END = 'end',
685+ NODE = 'node',
686+ PAUSED = 'paused',
687+ REVERSE = 'reverse', // TODO: cleanup
688+ ITERATION_COUNT = 'iterationCount',
689+
690+ NUM = Number;
691+
692+ var _running = {},
693+ _instances = {},
694+ _timer;
695+
696+ Y.Anim = function() {
697+ Y.Anim.superclass.constructor.apply(this, arguments);
698+ _instances[Y.stamp(this)] = this;
699+ };
700+
701+ Y.Anim.NAME = 'anim';
702+
703+ /**
704+ * Regex of properties that should use the default unit.
705+ *
706+ * @property RE_DEFAULT_UNIT
707+ * @static
708+ */
709+ Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
710+
711+ /**
712+ * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
713+ *
714+ * @property DEFAULT_UNIT
715+ * @static
716+ */
717+ Y.Anim.DEFAULT_UNIT = 'px';
718+
719+ Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
720+ return c * t / d + b; // linear easing
721+ };
722+
723+ /**
724+ * Bucket for custom getters and setters
725+ *
726+ * @property behaviors
727+ * @static
728+ */
729+ Y.Anim.behaviors = {
730+ left: {
731+ get: function(anim, attr) {
732+ return anim._getOffset(attr);
733+ }
734+ }
735+ };
736+
737+ Y.Anim.behaviors.top = Y.Anim.behaviors.left;
738+
739+ /**
740+ * The default setter to use when setting object properties.
741+ *
742+ * @property DEFAULT_SETTER
743+ * @static
744+ */
745+ Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
746+ unit = unit || '';
747+ anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
748+ };
749+
750+ /**
751+ * The default getter to use when getting object properties.
752+ *
753+ * @property DEFAULT_GETTER
754+ * @static
755+ */
756+ Y.Anim.DEFAULT_GETTER = function(anim, prop) {
757+ return anim._node.getComputedStyle(prop);
758+ };
759+
760+ Y.Anim.ATTRS = {
761+ /**
762+ * The object to be animated.
763+ * @attribute node
764+ * @type Node
765+ */
766+ node: {
767+ setter: function(node) {
768+ node = Y.get(node);
769+ this._node = node;
770+ if (!node) {
771+ }
772+ return node;
773+ }
774+ },
775+
776+ /**
777+ * The length of the animation. Defaults to "1" (second).
778+ * @attribute duration
779+ * @type NUM
780+ */
781+ duration: {
782+ value: 1
783+ },
784+
785+ /**
786+ * The method that will provide values to the attribute(s) during the animation.
787+ * Defaults to "Easing.easeNone".
788+ * @attribute easing
789+ * @type Function
790+ */
791+ easing: {
792+ value: Y.Anim.DEFAULT_EASING,
793+
794+ setter: function(val) {
795+ if (typeof val === 'string' && Y.Easing) {
796+ return Y.Easing[val];
797+ }
798+ }
799+ },
800+
801+ /**
802+ * The starting values for the animated properties.
803+ * Fields may be strings, numbers, or functions.
804+ * If a function is used, the return value becomes the from value.
805+ * If no from value is specified, the DEFAULT_GETTER will be used.
806+ * @attribute from
807+ * @type Object
808+ */
809+ from: {},
810+
811+ /**
812+ * The ending values for the animated properties.
813+ * Fields may be strings, numbers, or functions.
814+ * @attribute to
815+ * @type Object
816+ */
817+ to: {},
818+
819+ /**
820+ * Date stamp for the first frame of the animation.
821+ * @attribute startTime
822+ * @type Int
823+ * @default 0
824+ * @readOnly
825+ */
826+ startTime: {
827+ value: 0,
828+ readOnly: true
829+ },
830+
831+ /**
832+ * Current time the animation has been running.
833+ * @attribute elapsedTime
834+ * @type Int
835+ * @default 0
836+ * @readOnly
837+ */
838+ elapsedTime: {
839+ value: 0,
840+ readOnly: true
841+ },
842+
843+ /**
844+ * Whether or not the animation is currently running.
845+ * @attribute running
846+ * @type Boolean
847+ * @default false
848+ * @readOnly
849+ */
850+ running: {
851+ getter: function() {
852+ return !!_running[Y.stamp(this)];
853+ },
854+ value: false,
855+ readOnly: true
856+ },
857+
858+ /**
859+ * The number of times the animation should run
860+ * @attribute iterations
861+ * @type Int
862+ * @default 1
863+ */
864+ iterations: {
865+ value: 1
866+ },
867+
868+ /**
869+ * The number of iterations that have occurred.
870+ * Resets when an animation ends (reaches iteration count or stop() called).
871+ * @attribute iterationCount
872+ * @type Int
873+ * @default 0
874+ * @readOnly
875+ */
876+ iterationCount: {
877+ value: 0,
878+ readOnly: true
879+ },
880+
881+ /**
882+ * How iterations of the animation should behave.
883+ * Possible values are "normal" and "alternate".
884+ * Normal will repeat the animation, alternate will reverse on every other pass.
885+ *
886+ * @attribute direction
887+ * @type String
888+ * @default "normal"
889+ */
890+ direction: {
891+ value: 'normal' // | alternate (fwd on odd, rev on even per spec)
892+ },
893+
894+ /**
895+ * Whether or not the animation is currently paused.
896+ * @attribute paused
897+ * @type Boolean
898+ * @default false
899+ * @readOnly
900+ */
901+ paused: {
902+ readOnly: true,
903+ value: false
904+ },
905+
906+ /**
907+ * If true, animation begins from last frame
908+ * @attribute reverse
909+ * @type Boolean
910+ * @default false
911+ */
912+ reverse: {
913+ value: false
914+ }
915+
916+
917+ };
918+
919+ /**
920+ * Runs all animation instances.
921+ * @method run
922+ * @static
923+ */
924+ Y.Anim.run = function() {
925+ for (var i in _instances) {
926+ if (_instances[i].run) {
927+ _instances[i].run();
928+ }
929+ }
930+ };
931+
932+ /**
933+ * Pauses all animation instances.
934+ * @method pause
935+ * @static
936+ */
937+ Y.Anim.pause = function() {
938+ for (var i in _running) { // stop timer if nothing running
939+ if (_running[i].pause) {
940+ _running[i].pause();
941+ }
942+ }
943+ Y.Anim._stopTimer();
944+ };
945+
946+ /**
947+ * Stops all animation instances.
948+ * @method stop
949+ * @static
950+ */
951+ Y.Anim.stop = function() {
952+ for (var i in _running) { // stop timer if nothing running
953+ if (_running[i].stop) {
954+ _running[i].stop();
955+ }
956+ }
957+ Y.Anim._stopTimer();
958+ };
959+
960+ Y.Anim._startTimer = function() {
961+ if (!_timer) {
962+ _timer = setInterval(Y.Anim._runFrame, 1);
963+ }
964+ };
965+
966+ Y.Anim._stopTimer = function() {
967+ clearInterval(_timer);
968+ _timer = 0;
969+ };
970+
971+ /**
972+ * Called per Interval to handle each animation frame.
973+ * @method _runFrame
974+ * @private
975+ * @static
976+ */
977+ Y.Anim._runFrame = function() {
978+ var done = true;
979+ for (var anim in _running) {
980+ if (_running[anim]._runFrame) {
981+ done = false;
982+ _running[anim]._runFrame();
983+ }
984+ }
985+
986+ if (done) {
987+ Y.Anim._stopTimer();
988+ }
989+ };
990+
991+ Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
992+
993+ var proto = {
994+ /**
995+ * Starts or resumes an animation.
996+ * percent start time marker.
997+ * @method run
998+ * @chainable
999+ */
1000+ run: function() {
1001+ if (!this.get(RUNNING)) {
1002+ this._start();
1003+ } else if (this.get(PAUSED)) {
1004+ this._resume();
1005+ }
1006+ return this;
1007+ },
1008+
1009+ /**
1010+ * Pauses the animation and
1011+ * freezes it in its current state and time.
1012+ * Calling run() will continue where it left off.
1013+ * @method pause
1014+ * @chainable
1015+ */
1016+ pause: function() {
1017+ if (this.get(RUNNING)) {
1018+ this._pause();
1019+ }
1020+ return this;
1021+ },
1022+
1023+ /**
1024+ * Stops the animation and resets its time.
1025+ * @method stop
1026+ * @chainable
1027+ */
1028+ stop: function(finish) {
1029+ if (this.get(RUNNING) || this.get(PAUSED)) {
1030+ this._end(finish);
1031+ }
1032+ return this;
1033+ },
1034+
1035+ _added: false,
1036+
1037+ _start: function() {
1038+ this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
1039+ this._actualFrames = 0;
1040+ if (!this.get(PAUSED)) {
1041+ this._initAnimAttr();
1042+ }
1043+ _running[Y.stamp(this)] = this;
1044+ Y.Anim._startTimer();
1045+
1046+ this.fire(START);
1047+ },
1048+
1049+ _pause: function() {
1050+ this._set(START_TIME, null);
1051+ this._set(PAUSED, true);
1052+ delete _running[Y.stamp(this)];
1053+
1054+ /**
1055+ * @event pause
1056+ * @description fires when an animation is paused.
1057+ * @param {Event} ev The pause event.
1058+ * @type Event.Custom
1059+ */
1060+ this.fire('pause');
1061+ },
1062+
1063+ _resume: function() {
1064+ this._set(PAUSED, false);
1065+ _running[Y.stamp(this)] = this;
1066+
1067+ /**
1068+ * @event resume
1069+ * @description fires when an animation is resumed (run from pause).
1070+ * @param {Event} ev The pause event.
1071+ * @type Event.Custom
1072+ */
1073+ this.fire('resume');
1074+ },
1075+
1076+ _end: function(finish) {
1077+ this._set(START_TIME, null);
1078+ this._set(ELAPSED_TIME, 0);
1079+ this._set(PAUSED, false);
1080+
1081+ delete _running[Y.stamp(this)];
1082+ this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
1083+ },
1084+
1085+ _runFrame: function() {
1086+ var attr = this._runtimeAttr,
1087+ customAttr = Y.Anim.behaviors,
1088+ easing = attr.easing,
1089+ d = attr.duration,
1090+ t = new Date() - this.get(START_TIME),
1091+ reversed = this.get(REVERSE),
1092+ done = (t >= d),
1093+ lastFrame = d,
1094+ attribute,
1095+ setter;
1096+
1097+ if (reversed) {
1098+ t = d - t;
1099+ done = (t <= 0);
1100+ lastFrame = 0;
1101+ }
1102+
1103+ for (var i in attr) {
1104+ if (attr[i].to) {
1105+ attribute = attr[i];
1106+ setter = (i in customAttr && 'set' in customAttr[i]) ?
1107+ customAttr[i].set : Y.Anim.DEFAULT_SETTER;
1108+
1109+ if (!done) {
1110+ setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);
1111+ } else { // ensure final frame value is set
1112+ // TODO: handle keyframes
1113+ setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);
1114+ }
1115+ }
1116+ }
1117+
1118+ this._actualFrames += 1;
1119+ this._set(ELAPSED_TIME, t);
1120+
1121+ this.fire(TWEEN);
1122+ if (done) {
1123+ this._lastFrame();
1124+ }
1125+ },
1126+
1127+ _lastFrame: function() {
1128+ var iter = this.get('iterations'),
1129+ iterCount = this.get(ITERATION_COUNT);
1130+
1131+ iterCount += 1;
1132+ if (iter === 'infinite' || iterCount < iter) {
1133+ if (this.get('direction') === 'alternate') {
1134+ this.set(REVERSE, !this.get(REVERSE)); // flip it
1135+ }
1136+ /**
1137+ * @event iteration
1138+ * @description fires when an animation begins an iteration.
1139+ * @param {Event} ev The iteration event.
1140+ * @type Event.Custom
1141+ */
1142+ this.fire('iteration');
1143+ } else {
1144+ iterCount = 0;
1145+ this._end();
1146+ }
1147+
1148+ this._set(START_TIME, new Date());
1149+ this._set(ITERATION_COUNT, iterCount);
1150+ },
1151+
1152+ _initAnimAttr: function() {
1153+ var from = this.get('from') || {},
1154+ to = this.get('to') || {},
1155+ dur = this.get('duration') * 1000,
1156+ node = this.get(NODE),
1157+ easing = this.get('easing') || {},
1158+ attr = {},
1159+ customAttr = Y.Anim.behaviors,
1160+ unit, begin, end;
1161+
1162+ Y.each(to, function(val, name) {
1163+ if (typeof val === 'function') {
1164+ val = val.call(this, node);
1165+ }
1166+
1167+ begin = from[name];
1168+ if (begin === undefined) {
1169+ begin = (name in customAttr && 'get' in customAttr[name]) ?
1170+ customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
1171+ } else if (typeof begin === 'function') {
1172+ begin = begin.call(this, node);
1173+ }
1174+
1175+ var mFrom = Y.Anim.RE_UNITS.exec(begin);
1176+ var mTo = Y.Anim.RE_UNITS.exec(val);
1177+
1178+ begin = mFrom ? mFrom[1] : begin;
1179+ end = mTo ? mTo[1] : val;
1180+ unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units
1181+
1182+ if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
1183+ unit = Y.Anim.DEFAULT_UNIT;
1184+ }
1185+
1186+ if (!begin || !end) {
1187+ Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
1188+ return;
1189+ }
1190+
1191+ attr[name] = {
1192+ from: begin,
1193+ to: end,
1194+ unit: unit
1195+ };
1196+
1197+ attr.duration = dur;
1198+ attr.easing = easing;
1199+
1200+ }, this);
1201+
1202+ this._runtimeAttr = attr;
1203+ },
1204+
1205+
1206+ // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
1207+ _getOffset: function(attr) {
1208+ var node = this._node,
1209+ val = node.getComputedStyle(attr),
1210+ get = (attr === 'left') ? 'getX': 'getY',
1211+ set = (attr === 'left') ? 'setX': 'setY';
1212+
1213+ if (val === 'auto') {
1214+ var position = node.getStyle('position');
1215+ if (position === 'absolute' || position === 'fixed') {
1216+ val = node[get]();
1217+ node[set](val);
1218+ } else {
1219+ val = 0;
1220+ }
1221+ }
1222+
1223+ return val;
1224+ }
1225+ };
1226+
1227+ Y.extend(Y.Anim, Y.Base, proto);
1228+
1229+
1230+}, '3.0.0' ,{requires:['base-base', 'node-style']});
1231
1232=== added file 'identityprovider/media/lazr-js/anim/anim-color-debug.js'
1233--- identityprovider/media/lazr-js/anim/anim-color-debug.js 1970-01-01 00:00:00 +0000
1234+++ identityprovider/media/lazr-js/anim/anim-color-debug.js 2010-06-15 01:37:25 +0000
1235@@ -0,0 +1,55 @@
1236+/*
1237+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1238+Code licensed under the BSD License:
1239+http://developer.yahoo.net/yui/license.txt
1240+version: 3.0.0
1241+build: 1549
1242+*/
1243+YUI.add('anim-color', function(Y) {
1244+
1245+/**
1246+ * Adds support for color properties in <code>to</code>
1247+ * and <code>from</code> attributes.
1248+ * @module anim
1249+ * @submodule anim-color
1250+ */
1251+
1252+var NUM = Number;
1253+
1254+Y.Anim.behaviors.color = {
1255+ set: function(anim, att, from, to, elapsed, duration, fn) {
1256+ from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
1257+ to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
1258+
1259+ if (!from || from.length < 3 || !to || to.length < 3) {
1260+ Y.error('invalid from or to passed to color behavior');
1261+ }
1262+
1263+ anim._node.setStyle(att, 'rgb(' + [
1264+ Math.floor(fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)),
1265+ Math.floor(fn(elapsed, NUM(from[2]), NUM(to[2]) - NUM(from[2]), duration)),
1266+ Math.floor(fn(elapsed, NUM(from[3]), NUM(to[3]) - NUM(from[3]), duration))
1267+ ].join(', ') + ')');
1268+ },
1269+
1270+ // TODO: default bgcolor const
1271+ get: function(anim, att) {
1272+ var val = anim._node.getComputedStyle(att);
1273+ val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
1274+ return val;
1275+ }
1276+};
1277+
1278+Y.each(['backgroundColor',
1279+ 'borderColor',
1280+ 'borderTopColor',
1281+ 'borderRightColor',
1282+ 'borderBottomColor',
1283+ 'borderLeftColor'],
1284+ function(v, i) {
1285+ Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
1286+ }
1287+);
1288+
1289+
1290+}, '3.0.0' ,{requires:['anim-base']});
1291
1292=== added file 'identityprovider/media/lazr-js/anim/anim-color-min.js'
1293--- identityprovider/media/lazr-js/anim/anim-color-min.js 1970-01-01 00:00:00 +0000
1294+++ identityprovider/media/lazr-js/anim/anim-color-min.js 2010-06-15 01:37:25 +0000
1295@@ -0,0 +1,8 @@
1296+/*
1297+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1298+Code licensed under the BSD License:
1299+http://developer.yahoo.net/yui/license.txt
1300+version: 3.0.0
1301+build: 1549
1302+*/
1303+YUI.add("anim-color",function(B){var A=Number;B.Anim.behaviors.color={set:function(F,D,I,H,C,G,E){I=B.Color.re_RGB.exec(B.Color.toRGB(I));H=B.Color.re_RGB.exec(B.Color.toRGB(H));if(!I||I.length<3||!H||H.length<3){B.error("invalid from or to passed to color behavior");}F._node.setStyle(D,"rgb("+[Math.floor(E(C,A(I[1]),A(H[1])-A(I[1]),G)),Math.floor(E(C,A(I[2]),A(H[2])-A(I[2]),G)),Math.floor(E(C,A(I[3]),A(H[3])-A(I[3]),G))].join(", ")+")");},get:function(D,C){var E=D._node.getComputedStyle(C);E=(E==="transparent")?"rgb(255, 255, 255)":E;return E;}};B.each(["backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],function(C,D){B.Anim.behaviors[C]=B.Anim.behaviors.color;});},"3.0.0",{requires:["anim-base"]});
1304\ No newline at end of file
1305
1306=== added file 'identityprovider/media/lazr-js/anim/anim-color.js'
1307--- identityprovider/media/lazr-js/anim/anim-color.js 1970-01-01 00:00:00 +0000
1308+++ identityprovider/media/lazr-js/anim/anim-color.js 2010-06-15 01:37:25 +0000
1309@@ -0,0 +1,55 @@
1310+/*
1311+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1312+Code licensed under the BSD License:
1313+http://developer.yahoo.net/yui/license.txt
1314+version: 3.0.0
1315+build: 1549
1316+*/
1317+YUI.add('anim-color', function(Y) {
1318+
1319+/**
1320+ * Adds support for color properties in <code>to</code>
1321+ * and <code>from</code> attributes.
1322+ * @module anim
1323+ * @submodule anim-color
1324+ */
1325+
1326+var NUM = Number;
1327+
1328+Y.Anim.behaviors.color = {
1329+ set: function(anim, att, from, to, elapsed, duration, fn) {
1330+ from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
1331+ to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
1332+
1333+ if (!from || from.length < 3 || !to || to.length < 3) {
1334+ Y.error('invalid from or to passed to color behavior');
1335+ }
1336+
1337+ anim._node.setStyle(att, 'rgb(' + [
1338+ Math.floor(fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)),
1339+ Math.floor(fn(elapsed, NUM(from[2]), NUM(to[2]) - NUM(from[2]), duration)),
1340+ Math.floor(fn(elapsed, NUM(from[3]), NUM(to[3]) - NUM(from[3]), duration))
1341+ ].join(', ') + ')');
1342+ },
1343+
1344+ // TODO: default bgcolor const
1345+ get: function(anim, att) {
1346+ var val = anim._node.getComputedStyle(att);
1347+ val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
1348+ return val;
1349+ }
1350+};
1351+
1352+Y.each(['backgroundColor',
1353+ 'borderColor',
1354+ 'borderTopColor',
1355+ 'borderRightColor',
1356+ 'borderBottomColor',
1357+ 'borderLeftColor'],
1358+ function(v, i) {
1359+ Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
1360+ }
1361+);
1362+
1363+
1364+}, '3.0.0' ,{requires:['anim-base']});
1365
1366=== added file 'identityprovider/media/lazr-js/anim/anim-curve-debug.js'
1367--- identityprovider/media/lazr-js/anim/anim-curve-debug.js 1970-01-01 00:00:00 +0000
1368+++ identityprovider/media/lazr-js/anim/anim-curve-debug.js 2010-06-15 01:37:25 +0000
1369@@ -0,0 +1,64 @@
1370+/*
1371+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1372+Code licensed under the BSD License:
1373+http://developer.yahoo.net/yui/license.txt
1374+version: 3.0.0
1375+build: 1549
1376+*/
1377+YUI.add('anim-curve', function(Y) {
1378+
1379+/**
1380+ * Adds support for the <code>curve</code> property for the <code>to</code>
1381+ * attribute. A curve is zero or more control points and an end point.
1382+ * @module anim
1383+ * @submodule anim-curve
1384+ */
1385+
1386+Y.Anim.behaviors.curve = {
1387+ set: function(anim, att, from, to, elapsed, duration, fn) {
1388+ from = from.slice.call(from);
1389+ to = to.slice.call(to);
1390+ var t = fn(elapsed, 0, 100, duration) / 100;
1391+ to.unshift(from);
1392+ anim._node.setXY(Y.Anim.getBezier(to, t));
1393+ },
1394+
1395+ get: function(anim, att) {
1396+ return anim._node.getXY();
1397+ }
1398+};
1399+
1400+/**
1401+ * Get the current position of the animated element based on t.
1402+ * Each point is an array of "x" and "y" values (0 = x, 1 = y)
1403+ * At least 2 points are required (start and end).
1404+ * First point is start. Last point is end.
1405+ * Additional control points are optional.
1406+ * @for Anim
1407+ * @method getBezier
1408+ * @static
1409+ * @param {Array} points An array containing Bezier points
1410+ * @param {Number} t A number between 0 and 1 which is the basis for determining current position
1411+ * @return {Array} An array containing int x and y member data
1412+ */
1413+Y.Anim.getBezier = function(points, t) {
1414+ var n = points.length;
1415+ var tmp = [];
1416+
1417+ for (var i = 0; i < n; ++i){
1418+ tmp[i] = [points[i][0], points[i][1]]; // save input
1419+ }
1420+
1421+ for (var j = 1; j < n; ++j) {
1422+ for (i = 0; i < n - j; ++i) {
1423+ tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
1424+ tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
1425+ }
1426+ }
1427+
1428+ return [ tmp[0][0], tmp[0][1] ];
1429+
1430+};
1431+
1432+
1433+}, '3.0.0' ,{requires:['anim-xy']});
1434
1435=== added file 'identityprovider/media/lazr-js/anim/anim-curve-min.js'
1436--- identityprovider/media/lazr-js/anim/anim-curve-min.js 1970-01-01 00:00:00 +0000
1437+++ identityprovider/media/lazr-js/anim/anim-curve-min.js 2010-06-15 01:37:25 +0000
1438@@ -0,0 +1,8 @@
1439+/*
1440+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1441+Code licensed under the BSD License:
1442+http://developer.yahoo.net/yui/license.txt
1443+version: 3.0.0
1444+build: 1549
1445+*/
1446+YUI.add("anim-curve",function(A){A.Anim.behaviors.curve={set:function(F,C,I,H,B,G,E){I=I.slice.call(I);H=H.slice.call(H);var D=E(B,0,100,G)/100;H.unshift(I);F._node.setXY(A.Anim.getBezier(H,D));},get:function(C,B){return C._node.getXY();}};A.Anim.getBezier=function(F,E){var G=F.length;var D=[];for(var C=0;C<G;++C){D[C]=[F[C][0],F[C][1]];}for(var B=1;B<G;++B){for(C=0;C<G-B;++C){D[C][0]=(1-E)*D[C][0]+E*D[parseInt(C+1,10)][0];D[C][1]=(1-E)*D[C][1]+E*D[parseInt(C+1,10)][1];}}return[D[0][0],D[0][1]];};},"3.0.0",{requires:["anim-xy"]});
1447\ No newline at end of file
1448
1449=== added file 'identityprovider/media/lazr-js/anim/anim-curve.js'
1450--- identityprovider/media/lazr-js/anim/anim-curve.js 1970-01-01 00:00:00 +0000
1451+++ identityprovider/media/lazr-js/anim/anim-curve.js 2010-06-15 01:37:25 +0000
1452@@ -0,0 +1,64 @@
1453+/*
1454+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1455+Code licensed under the BSD License:
1456+http://developer.yahoo.net/yui/license.txt
1457+version: 3.0.0
1458+build: 1549
1459+*/
1460+YUI.add('anim-curve', function(Y) {
1461+
1462+/**
1463+ * Adds support for the <code>curve</code> property for the <code>to</code>
1464+ * attribute. A curve is zero or more control points and an end point.
1465+ * @module anim
1466+ * @submodule anim-curve
1467+ */
1468+
1469+Y.Anim.behaviors.curve = {
1470+ set: function(anim, att, from, to, elapsed, duration, fn) {
1471+ from = from.slice.call(from);
1472+ to = to.slice.call(to);
1473+ var t = fn(elapsed, 0, 100, duration) / 100;
1474+ to.unshift(from);
1475+ anim._node.setXY(Y.Anim.getBezier(to, t));
1476+ },
1477+
1478+ get: function(anim, att) {
1479+ return anim._node.getXY();
1480+ }
1481+};
1482+
1483+/**
1484+ * Get the current position of the animated element based on t.
1485+ * Each point is an array of "x" and "y" values (0 = x, 1 = y)
1486+ * At least 2 points are required (start and end).
1487+ * First point is start. Last point is end.
1488+ * Additional control points are optional.
1489+ * @for Anim
1490+ * @method getBezier
1491+ * @static
1492+ * @param {Array} points An array containing Bezier points
1493+ * @param {Number} t A number between 0 and 1 which is the basis for determining current position
1494+ * @return {Array} An array containing int x and y member data
1495+ */
1496+Y.Anim.getBezier = function(points, t) {
1497+ var n = points.length;
1498+ var tmp = [];
1499+
1500+ for (var i = 0; i < n; ++i){
1501+ tmp[i] = [points[i][0], points[i][1]]; // save input
1502+ }
1503+
1504+ for (var j = 1; j < n; ++j) {
1505+ for (i = 0; i < n - j; ++i) {
1506+ tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
1507+ tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
1508+ }
1509+ }
1510+
1511+ return [ tmp[0][0], tmp[0][1] ];
1512+
1513+};
1514+
1515+
1516+}, '3.0.0' ,{requires:['anim-xy']});
1517
1518=== added file 'identityprovider/media/lazr-js/anim/anim-debug.js'
1519--- identityprovider/media/lazr-js/anim/anim-debug.js 1970-01-01 00:00:00 +0000
1520+++ identityprovider/media/lazr-js/anim/anim-debug.js 2010-06-15 01:37:25 +0000
1521@@ -0,0 +1,1150 @@
1522+/*
1523+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
1524+Code licensed under the BSD License:
1525+http://developer.yahoo.net/yui/license.txt
1526+version: 3.0.0
1527+build: 1549
1528+*/
1529+YUI.add('anim-base', function(Y) {
1530+
1531+/**
1532+* The Animation Utility provides an API for creating advanced transitions.
1533+* @module anim
1534+*/
1535+
1536+/**
1537+* Provides the base Anim class, for animating numeric properties.
1538+*
1539+* @module anim
1540+* @submodule anim-base
1541+*/
1542+
1543+ /**
1544+ * A class for constructing animation instances.
1545+ * @class Anim
1546+ * @for Anim
1547+ * @constructor
1548+ * @extends Base
1549+ */
1550+
1551+ var RUNNING = 'running',
1552+ START_TIME = 'startTime',
1553+ ELAPSED_TIME = 'elapsedTime',
1554+ /**
1555+ * @for Anim
1556+ * @event start
1557+ * @description fires when an animation begins.
1558+ * @param {Event} ev The start event.
1559+ * @type Event.Custom
1560+ */
1561+ START = 'start',
1562+
1563+ /**
1564+ * @event tween
1565+ * @description fires every frame of the animation.
1566+ * @param {Event} ev The tween event.
1567+ * @type Event.Custom
1568+ */
1569+ TWEEN = 'tween',
1570+
1571+ /**
1572+ * @event end
1573+ * @description fires after the animation completes.
1574+ * @param {Event} ev The end event.
1575+ * @type Event.Custom
1576+ */
1577+ END = 'end',
1578+ NODE = 'node',
1579+ PAUSED = 'paused',
1580+ REVERSE = 'reverse', // TODO: cleanup
1581+ ITERATION_COUNT = 'iterationCount',
1582+
1583+ NUM = Number;
1584+
1585+ var _running = {},
1586+ _instances = {},
1587+ _timer;
1588+
1589+ Y.Anim = function() {
1590+ Y.Anim.superclass.constructor.apply(this, arguments);
1591+ _instances[Y.stamp(this)] = this;
1592+ };
1593+
1594+ Y.Anim.NAME = 'anim';
1595+
1596+ /**
1597+ * Regex of properties that should use the default unit.
1598+ *
1599+ * @property RE_DEFAULT_UNIT
1600+ * @static
1601+ */
1602+ Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
1603+
1604+ /**
1605+ * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
1606+ *
1607+ * @property DEFAULT_UNIT
1608+ * @static
1609+ */
1610+ Y.Anim.DEFAULT_UNIT = 'px';
1611+
1612+ Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
1613+ return c * t / d + b; // linear easing
1614+ };
1615+
1616+ /**
1617+ * Bucket for custom getters and setters
1618+ *
1619+ * @property behaviors
1620+ * @static
1621+ */
1622+ Y.Anim.behaviors = {
1623+ left: {
1624+ get: function(anim, attr) {
1625+ return anim._getOffset(attr);
1626+ }
1627+ }
1628+ };
1629+
1630+ Y.Anim.behaviors.top = Y.Anim.behaviors.left;
1631+
1632+ /**
1633+ * The default setter to use when setting object properties.
1634+ *
1635+ * @property DEFAULT_SETTER
1636+ * @static
1637+ */
1638+ Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
1639+ unit = unit || '';
1640+ anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
1641+ };
1642+
1643+ /**
1644+ * The default getter to use when getting object properties.
1645+ *
1646+ * @property DEFAULT_GETTER
1647+ * @static
1648+ */
1649+ Y.Anim.DEFAULT_GETTER = function(anim, prop) {
1650+ return anim._node.getComputedStyle(prop);
1651+ };
1652+
1653+ Y.Anim.ATTRS = {
1654+ /**
1655+ * The object to be animated.
1656+ * @attribute node
1657+ * @type Node
1658+ */
1659+ node: {
1660+ setter: function(node) {
1661+ node = Y.get(node);
1662+ this._node = node;
1663+ if (!node) {
1664+ Y.log(node + ' is not a valid node', 'warn', 'Anim');
1665+ }
1666+ return node;
1667+ }
1668+ },
1669+
1670+ /**
1671+ * The length of the animation. Defaults to "1" (second).
1672+ * @attribute duration
1673+ * @type NUM
1674+ */
1675+ duration: {
1676+ value: 1
1677+ },
1678+
1679+ /**
1680+ * The method that will provide values to the attribute(s) during the animation.
1681+ * Defaults to "Easing.easeNone".
1682+ * @attribute easing
1683+ * @type Function
1684+ */
1685+ easing: {
1686+ value: Y.Anim.DEFAULT_EASING,
1687+
1688+ setter: function(val) {
1689+ if (typeof val === 'string' && Y.Easing) {
1690+ return Y.Easing[val];
1691+ }
1692+ }
1693+ },
1694+
1695+ /**
1696+ * The starting values for the animated properties.
1697+ * Fields may be strings, numbers, or functions.
1698+ * If a function is used, the return value becomes the from value.
1699+ * If no from value is specified, the DEFAULT_GETTER will be used.
1700+ * @attribute from
1701+ * @type Object
1702+ */
1703+ from: {},
1704+
1705+ /**
1706+ * The ending values for the animated properties.
1707+ * Fields may be strings, numbers, or functions.
1708+ * @attribute to
1709+ * @type Object
1710+ */
1711+ to: {},
1712+
1713+ /**
1714+ * Date stamp for the first frame of the animation.
1715+ * @attribute startTime
1716+ * @type Int
1717+ * @default 0
1718+ * @readOnly
1719+ */
1720+ startTime: {
1721+ value: 0,
1722+ readOnly: true
1723+ },
1724+
1725+ /**
1726+ * Current time the animation has been running.
1727+ * @attribute elapsedTime
1728+ * @type Int
1729+ * @default 0
1730+ * @readOnly
1731+ */
1732+ elapsedTime: {
1733+ value: 0,
1734+ readOnly: true
1735+ },
1736+
1737+ /**
1738+ * Whether or not the animation is currently running.
1739+ * @attribute running
1740+ * @type Boolean
1741+ * @default false
1742+ * @readOnly
1743+ */
1744+ running: {
1745+ getter: function() {
1746+ return !!_running[Y.stamp(this)];
1747+ },
1748+ value: false,
1749+ readOnly: true
1750+ },
1751+
1752+ /**
1753+ * The number of times the animation should run
1754+ * @attribute iterations
1755+ * @type Int
1756+ * @default 1
1757+ */
1758+ iterations: {
1759+ value: 1
1760+ },
1761+
1762+ /**
1763+ * The number of iterations that have occurred.
1764+ * Resets when an animation ends (reaches iteration count or stop() called).
1765+ * @attribute iterationCount
1766+ * @type Int
1767+ * @default 0
1768+ * @readOnly
1769+ */
1770+ iterationCount: {
1771+ value: 0,
1772+ readOnly: true
1773+ },
1774+
1775+ /**
1776+ * How iterations of the animation should behave.
1777+ * Possible values are "normal" and "alternate".
1778+ * Normal will repeat the animation, alternate will reverse on every other pass.
1779+ *
1780+ * @attribute direction
1781+ * @type String
1782+ * @default "normal"
1783+ */
1784+ direction: {
1785+ value: 'normal' // | alternate (fwd on odd, rev on even per spec)
1786+ },
1787+
1788+ /**
1789+ * Whether or not the animation is currently paused.
1790+ * @attribute paused
1791+ * @type Boolean
1792+ * @default false
1793+ * @readOnly
1794+ */
1795+ paused: {
1796+ readOnly: true,
1797+ value: false
1798+ },
1799+
1800+ /**
1801+ * If true, animation begins from last frame
1802+ * @attribute reverse
1803+ * @type Boolean
1804+ * @default false
1805+ */
1806+ reverse: {
1807+ value: false
1808+ }
1809+
1810+
1811+ };
1812+
1813+ /**
1814+ * Runs all animation instances.
1815+ * @method run
1816+ * @static
1817+ */
1818+ Y.Anim.run = function() {
1819+ for (var i in _instances) {
1820+ if (_instances[i].run) {
1821+ _instances[i].run();
1822+ }
1823+ }
1824+ };
1825+
1826+ /**
1827+ * Pauses all animation instances.
1828+ * @method pause
1829+ * @static
1830+ */
1831+ Y.Anim.pause = function() {
1832+ for (var i in _running) { // stop timer if nothing running
1833+ if (_running[i].pause) {
1834+ _running[i].pause();
1835+ }
1836+ }
1837+ Y.Anim._stopTimer();
1838+ };
1839+
1840+ /**
1841+ * Stops all animation instances.
1842+ * @method stop
1843+ * @static
1844+ */
1845+ Y.Anim.stop = function() {
1846+ for (var i in _running) { // stop timer if nothing running
1847+ if (_running[i].stop) {
1848+ _running[i].stop();
1849+ }
1850+ }
1851+ Y.Anim._stopTimer();
1852+ };
1853+
1854+ Y.Anim._startTimer = function() {
1855+ if (!_timer) {
1856+ _timer = setInterval(Y.Anim._runFrame, 1);
1857+ }
1858+ };
1859+
1860+ Y.Anim._stopTimer = function() {
1861+ clearInterval(_timer);
1862+ _timer = 0;
1863+ };
1864+
1865+ /**
1866+ * Called per Interval to handle each animation frame.
1867+ * @method _runFrame
1868+ * @private
1869+ * @static
1870+ */
1871+ Y.Anim._runFrame = function() {
1872+ var done = true;
1873+ for (var anim in _running) {
1874+ if (_running[anim]._runFrame) {
1875+ done = false;
1876+ _running[anim]._runFrame();
1877+ }
1878+ }
1879+
1880+ if (done) {
1881+ Y.Anim._stopTimer();
1882+ }
1883+ };
1884+
1885+ Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
1886+
1887+ var proto = {
1888+ /**
1889+ * Starts or resumes an animation.
1890+ * percent start time marker.
1891+ * @method run
1892+ * @chainable
1893+ */
1894+ run: function() {
1895+ if (!this.get(RUNNING)) {
1896+ this._start();
1897+ } else if (this.get(PAUSED)) {
1898+ this._resume();
1899+ }
1900+ return this;
1901+ },
1902+
1903+ /**
1904+ * Pauses the animation and
1905+ * freezes it in its current state and time.
1906+ * Calling run() will continue where it left off.
1907+ * @method pause
1908+ * @chainable
1909+ */
1910+ pause: function() {
1911+ if (this.get(RUNNING)) {
1912+ this._pause();
1913+ }
1914+ return this;
1915+ },
1916+
1917+ /**
1918+ * Stops the animation and resets its time.
1919+ * @method stop
1920+ * @chainable
1921+ */
1922+ stop: function(finish) {
1923+ if (this.get(RUNNING) || this.get(PAUSED)) {
1924+ this._end(finish);
1925+ }
1926+ return this;
1927+ },
1928+
1929+ _added: false,
1930+
1931+ _start: function() {
1932+ this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
1933+ this._actualFrames = 0;
1934+ if (!this.get(PAUSED)) {
1935+ this._initAnimAttr();
1936+ }
1937+ _running[Y.stamp(this)] = this;
1938+ Y.Anim._startTimer();
1939+
1940+ this.fire(START);
1941+ },
1942+
1943+ _pause: function() {
1944+ this._set(START_TIME, null);
1945+ this._set(PAUSED, true);
1946+ delete _running[Y.stamp(this)];
1947+
1948+ /**
1949+ * @event pause
1950+ * @description fires when an animation is paused.
1951+ * @param {Event} ev The pause event.
1952+ * @type Event.Custom
1953+ */
1954+ this.fire('pause');
1955+ },
1956+
1957+ _resume: function() {
1958+ this._set(PAUSED, false);
1959+ _running[Y.stamp(this)] = this;
1960+
1961+ /**
1962+ * @event resume
1963+ * @description fires when an animation is resumed (run from pause).
1964+ * @param {Event} ev The pause event.
1965+ * @type Event.Custom
1966+ */
1967+ this.fire('resume');
1968+ },
1969+
1970+ _end: function(finish) {
1971+ this._set(START_TIME, null);
1972+ this._set(ELAPSED_TIME, 0);
1973+ this._set(PAUSED, false);
1974+
1975+ delete _running[Y.stamp(this)];
1976+ this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
1977+ },
1978+
1979+ _runFrame: function() {
1980+ var attr = this._runtimeAttr,
1981+ customAttr = Y.Anim.behaviors,
1982+ easing = attr.easing,
1983+ d = attr.duration,
1984+ t = new Date() - this.get(START_TIME),
1985+ reversed = this.get(REVERSE),
1986+ done = (t >= d),
1987+ lastFrame = d,
1988+ attribute,
1989+ setter;
1990+
1991+ if (reversed) {
1992+ t = d - t;
1993+ done = (t <= 0);
1994+ lastFrame = 0;
1995+ }
1996+
1997+ for (var i in attr) {
1998+ if (attr[i].to) {
1999+ attribute = attr[i];
2000+ setter = (i in customAttr && 'set' in customAttr[i]) ?
2001+ customAttr[i].set : Y.Anim.DEFAULT_SETTER;
2002+
2003+ if (!done) {
2004+ setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);
2005+ } else { // ensure final frame value is set
2006+ // TODO: handle keyframes
2007+ setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);
2008+ }
2009+ }
2010+ }
2011+
2012+ this._actualFrames += 1;
2013+ this._set(ELAPSED_TIME, t);
2014+
2015+ this.fire(TWEEN);
2016+ if (done) {
2017+ this._lastFrame();
2018+ }
2019+ },
2020+
2021+ _lastFrame: function() {
2022+ var iter = this.get('iterations'),
2023+ iterCount = this.get(ITERATION_COUNT);
2024+
2025+ iterCount += 1;
2026+ if (iter === 'infinite' || iterCount < iter) {
2027+ if (this.get('direction') === 'alternate') {
2028+ this.set(REVERSE, !this.get(REVERSE)); // flip it
2029+ }
2030+ /**
2031+ * @event iteration
2032+ * @description fires when an animation begins an iteration.
2033+ * @param {Event} ev The iteration event.
2034+ * @type Event.Custom
2035+ */
2036+ this.fire('iteration');
2037+ } else {
2038+ iterCount = 0;
2039+ this._end();
2040+ }
2041+
2042+ this._set(START_TIME, new Date());
2043+ this._set(ITERATION_COUNT, iterCount);
2044+ },
2045+
2046+ _initAnimAttr: function() {
2047+ var from = this.get('from') || {},
2048+ to = this.get('to') || {},
2049+ dur = this.get('duration') * 1000,
2050+ node = this.get(NODE),
2051+ easing = this.get('easing') || {},
2052+ attr = {},
2053+ customAttr = Y.Anim.behaviors,
2054+ unit, begin, end;
2055+
2056+ Y.each(to, function(val, name) {
2057+ if (typeof val === 'function') {
2058+ val = val.call(this, node);
2059+ }
2060+
2061+ begin = from[name];
2062+ if (begin === undefined) {
2063+ begin = (name in customAttr && 'get' in customAttr[name]) ?
2064+ customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
2065+ } else if (typeof begin === 'function') {
2066+ begin = begin.call(this, node);
2067+ }
2068+
2069+ var mFrom = Y.Anim.RE_UNITS.exec(begin);
2070+ var mTo = Y.Anim.RE_UNITS.exec(val);
2071+
2072+ begin = mFrom ? mFrom[1] : begin;
2073+ end = mTo ? mTo[1] : val;
2074+ unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units
2075+
2076+ if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
2077+ unit = Y.Anim.DEFAULT_UNIT;
2078+ }
2079+
2080+ if (!begin || !end) {
2081+ Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
2082+ return;
2083+ }
2084+
2085+ attr[name] = {
2086+ from: begin,
2087+ to: end,
2088+ unit: unit
2089+ };
2090+
2091+ attr.duration = dur;
2092+ attr.easing = easing;
2093+
2094+ }, this);
2095+
2096+ this._runtimeAttr = attr;
2097+ },
2098+
2099+
2100+ // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
2101+ _getOffset: function(attr) {
2102+ var node = this._node,
2103+ val = node.getComputedStyle(attr),
2104+ get = (attr === 'left') ? 'getX': 'getY',
2105+ set = (attr === 'left') ? 'setX': 'setY';
2106+
2107+ if (val === 'auto') {
2108+ var position = node.getStyle('position');
2109+ if (position === 'absolute' || position === 'fixed') {
2110+ val = node[get]();
2111+ node[set](val);
2112+ } else {
2113+ val = 0;
2114+ }
2115+ }
2116+
2117+ return val;
2118+ }
2119+ };
2120+
2121+ Y.extend(Y.Anim, Y.Base, proto);
2122+
2123+
2124+}, '3.0.0' ,{requires:['base-base', 'node-style']});
2125+YUI.add('anim-color', function(Y) {
2126+
2127+/**
2128+ * Adds support for color properties in <code>to</code>
2129+ * and <code>from</code> attributes.
2130+ * @module anim
2131+ * @submodule anim-color
2132+ */
2133+
2134+var NUM = Number;
2135+
2136+Y.Anim.behaviors.color = {
2137+ set: function(anim, att, from, to, elapsed, duration, fn) {
2138+ from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
2139+ to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
2140+
2141+ if (!from || from.length < 3 || !to || to.length < 3) {
2142+ Y.error('invalid from or to passed to color behavior');
2143+ }
2144+
2145+ anim._node.setStyle(att, 'rgb(' + [
2146+ Math.floor(fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)),
2147+ Math.floor(fn(elapsed, NUM(from[2]), NUM(to[2]) - NUM(from[2]), duration)),
2148+ Math.floor(fn(elapsed, NUM(from[3]), NUM(to[3]) - NUM(from[3]), duration))
2149+ ].join(', ') + ')');
2150+ },
2151+
2152+ // TODO: default bgcolor const
2153+ get: function(anim, att) {
2154+ var val = anim._node.getComputedStyle(att);
2155+ val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
2156+ return val;
2157+ }
2158+};
2159+
2160+Y.each(['backgroundColor',
2161+ 'borderColor',
2162+ 'borderTopColor',
2163+ 'borderRightColor',
2164+ 'borderBottomColor',
2165+ 'borderLeftColor'],
2166+ function(v, i) {
2167+ Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
2168+ }
2169+);
2170+
2171+
2172+}, '3.0.0' ,{requires:['anim-base']});
2173+YUI.add('anim-curve', function(Y) {
2174+
2175+/**
2176+ * Adds support for the <code>curve</code> property for the <code>to</code>
2177+ * attribute. A curve is zero or more control points and an end point.
2178+ * @module anim
2179+ * @submodule anim-curve
2180+ */
2181+
2182+Y.Anim.behaviors.curve = {
2183+ set: function(anim, att, from, to, elapsed, duration, fn) {
2184+ from = from.slice.call(from);
2185+ to = to.slice.call(to);
2186+ var t = fn(elapsed, 0, 100, duration) / 100;
2187+ to.unshift(from);
2188+ anim._node.setXY(Y.Anim.getBezier(to, t));
2189+ },
2190+
2191+ get: function(anim, att) {
2192+ return anim._node.getXY();
2193+ }
2194+};
2195+
2196+/**
2197+ * Get the current position of the animated element based on t.
2198+ * Each point is an array of "x" and "y" values (0 = x, 1 = y)
2199+ * At least 2 points are required (start and end).
2200+ * First point is start. Last point is end.
2201+ * Additional control points are optional.
2202+ * @for Anim
2203+ * @method getBezier
2204+ * @static
2205+ * @param {Array} points An array containing Bezier points
2206+ * @param {Number} t A number between 0 and 1 which is the basis for determining current position
2207+ * @return {Array} An array containing int x and y member data
2208+ */
2209+Y.Anim.getBezier = function(points, t) {
2210+ var n = points.length;
2211+ var tmp = [];
2212+
2213+ for (var i = 0; i < n; ++i){
2214+ tmp[i] = [points[i][0], points[i][1]]; // save input
2215+ }
2216+
2217+ for (var j = 1; j < n; ++j) {
2218+ for (i = 0; i < n - j; ++i) {
2219+ tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
2220+ tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
2221+ }
2222+ }
2223+
2224+ return [ tmp[0][0], tmp[0][1] ];
2225+
2226+};
2227+
2228+
2229+}, '3.0.0' ,{requires:['anim-xy']});
2230+YUI.add('anim-easing', function(Y) {
2231+
2232+/*
2233+TERMS OF USE - EASING EQUATIONS
2234+Open source under the BSD License.
2235+Copyright 2001 Robert Penner All rights reserved.
2236+
2237+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
2238+
2239+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2240+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
2241+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
2242+
2243+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2244+*/
2245+
2246+/**
2247+ * The easing module provides methods for customizing
2248+ * how an animation behaves during each run.
2249+ * @class Easing
2250+ * @module anim
2251+ * @submodule anim-easing
2252+ */
2253+
2254+Y.Easing = {
2255+
2256+ /**
2257+ * Uniform speed between points.
2258+ * @for Easing
2259+ * @method easeNone
2260+ * @param {Number} t Time value used to compute current value
2261+ * @param {Number} b Starting value
2262+ * @param {Number} c Delta between start and end values
2263+ * @param {Number} d Total length of animation
2264+ * @return {Number} The computed value for the current animation frame
2265+ */
2266+ easeNone: function (t, b, c, d) {
2267+ return c*t/d + b;
2268+ },
2269+
2270+ /**
2271+ * Begins slowly and accelerates towards end. (quadratic)
2272+ * @method easeIn
2273+ * @param {Number} t Time value used to compute current value
2274+ * @param {Number} b Starting value
2275+ * @param {Number} c Delta between start and end values
2276+ * @param {Number} d Total length of animation
2277+ * @return {Number} The computed value for the current animation frame
2278+ */
2279+ easeIn: function (t, b, c, d) {
2280+ return c*(t/=d)*t + b;
2281+ },
2282+
2283+ /**
2284+ * Begins quickly and decelerates towards end. (quadratic)
2285+ * @method easeOut
2286+ * @param {Number} t Time value used to compute current value
2287+ * @param {Number} b Starting value
2288+ * @param {Number} c Delta between start and end values
2289+ * @param {Number} d Total length of animation
2290+ * @return {Number} The computed value for the current animation frame
2291+ */
2292+ easeOut: function (t, b, c, d) {
2293+ return -c *(t/=d)*(t-2) + b;
2294+ },
2295+
2296+ /**
2297+ * Begins slowly and decelerates towards end. (quadratic)
2298+ * @method easeBoth
2299+ * @param {Number} t Time value used to compute current value
2300+ * @param {Number} b Starting value
2301+ * @param {Number} c Delta between start and end values
2302+ * @param {Number} d Total length of animation
2303+ * @return {Number} The computed value for the current animation frame
2304+ */
2305+ easeBoth: function (t, b, c, d) {
2306+ if ((t/=d/2) < 1) {
2307+ return c/2*t*t + b;
2308+ }
2309+
2310+ return -c/2 * ((--t)*(t-2) - 1) + b;
2311+ },
2312+
2313+ /**
2314+ * Begins slowly and accelerates towards end. (quartic)
2315+ * @method easeInStrong
2316+ * @param {Number} t Time value used to compute current value
2317+ * @param {Number} b Starting value
2318+ * @param {Number} c Delta between start and end values
2319+ * @param {Number} d Total length of animation
2320+ * @return {Number} The computed value for the current animation frame
2321+ */
2322+ easeInStrong: function (t, b, c, d) {
2323+ return c*(t/=d)*t*t*t + b;
2324+ },
2325+
2326+ /**
2327+ * Begins quickly and decelerates towards end. (quartic)
2328+ * @method easeOutStrong
2329+ * @param {Number} t Time value used to compute current value
2330+ * @param {Number} b Starting value
2331+ * @param {Number} c Delta between start and end values
2332+ * @param {Number} d Total length of animation
2333+ * @return {Number} The computed value for the current animation frame
2334+ */
2335+ easeOutStrong: function (t, b, c, d) {
2336+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
2337+ },
2338+
2339+ /**
2340+ * Begins slowly and decelerates towards end. (quartic)
2341+ * @method easeBothStrong
2342+ * @param {Number} t Time value used to compute current value
2343+ * @param {Number} b Starting value
2344+ * @param {Number} c Delta between start and end values
2345+ * @param {Number} d Total length of animation
2346+ * @return {Number} The computed value for the current animation frame
2347+ */
2348+ easeBothStrong: function (t, b, c, d) {
2349+ if ((t/=d/2) < 1) {
2350+ return c/2*t*t*t*t + b;
2351+ }
2352+
2353+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
2354+ },
2355+
2356+ /**
2357+ * Snap in elastic effect.
2358+ * @method elasticIn
2359+ * @param {Number} t Time value used to compute current value
2360+ * @param {Number} b Starting value
2361+ * @param {Number} c Delta between start and end values
2362+ * @param {Number} d Total length of animation
2363+ * @param {Number} a Amplitude (optional)
2364+ * @param {Number} p Period (optional)
2365+ * @return {Number} The computed value for the current animation frame
2366+ */
2367+
2368+ elasticIn: function (t, b, c, d, a, p) {
2369+ var s;
2370+ if (t === 0) {
2371+ return b;
2372+ }
2373+ if ( (t /= d) === 1 ) {
2374+ return b+c;
2375+ }
2376+ if (!p) {
2377+ p = d* 0.3;
2378+ }
2379+
2380+ if (!a || a < Math.abs(c)) {
2381+ a = c;
2382+ s = p/4;
2383+ }
2384+ else {
2385+ s = p/(2*Math.PI) * Math.asin (c/a);
2386+ }
2387+
2388+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
2389+ },
2390+
2391+ /**
2392+ * Snap out elastic effect.
2393+ * @method elasticOut
2394+ * @param {Number} t Time value used to compute current value
2395+ * @param {Number} b Starting value
2396+ * @param {Number} c Delta between start and end values
2397+ * @param {Number} d Total length of animation
2398+ * @param {Number} a Amplitude (optional)
2399+ * @param {Number} p Period (optional)
2400+ * @return {Number} The computed value for the current animation frame
2401+ */
2402+ elasticOut: function (t, b, c, d, a, p) {
2403+ var s;
2404+ if (t === 0) {
2405+ return b;
2406+ }
2407+ if ( (t /= d) === 1 ) {
2408+ return b+c;
2409+ }
2410+ if (!p) {
2411+ p=d * 0.3;
2412+ }
2413+
2414+ if (!a || a < Math.abs(c)) {
2415+ a = c;
2416+ s = p / 4;
2417+ }
2418+ else {
2419+ s = p/(2*Math.PI) * Math.asin (c/a);
2420+ }
2421+
2422+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
2423+ },
2424+
2425+ /**
2426+ * Snap both elastic effect.
2427+ * @method elasticBoth
2428+ * @param {Number} t Time value used to compute current value
2429+ * @param {Number} b Starting value
2430+ * @param {Number} c Delta between start and end values
2431+ * @param {Number} d Total length of animation
2432+ * @param {Number} a Amplitude (optional)
2433+ * @param {Number} p Period (optional)
2434+ * @return {Number} The computed value for the current animation frame
2435+ */
2436+ elasticBoth: function (t, b, c, d, a, p) {
2437+ var s;
2438+ if (t === 0) {
2439+ return b;
2440+ }
2441+
2442+ if ( (t /= d/2) === 2 ) {
2443+ return b+c;
2444+ }
2445+
2446+ if (!p) {
2447+ p = d*(0.3*1.5);
2448+ }
2449+
2450+ if ( !a || a < Math.abs(c) ) {
2451+ a = c;
2452+ s = p/4;
2453+ }
2454+ else {
2455+ s = p/(2*Math.PI) * Math.asin (c/a);
2456+ }
2457+
2458+ if (t < 1) {
2459+ return -0.5*(a*Math.pow(2,10*(t-=1)) *
2460+ Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
2461+ }
2462+ return a*Math.pow(2,-10*(t-=1)) *
2463+ Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
2464+ },
2465+
2466+
2467+ /**
2468+ * Backtracks slightly, then reverses direction and moves to end.
2469+ * @method backIn
2470+ * @param {Number} t Time value used to compute current value
2471+ * @param {Number} b Starting value
2472+ * @param {Number} c Delta between start and end values
2473+ * @param {Number} d Total length of animation
2474+ * @param {Number} s Overshoot (optional)
2475+ * @return {Number} The computed value for the current animation frame
2476+ */
2477+ backIn: function (t, b, c, d, s) {
2478+ if (s === undefined) {
2479+ s = 1.70158;
2480+ }
2481+ if (t === d) {
2482+ t -= 0.001;
2483+ }
2484+ return c*(t/=d)*t*((s+1)*t - s) + b;
2485+ },
2486+
2487+ /**
2488+ * Overshoots end, then reverses and comes back to end.
2489+ * @method backOut
2490+ * @param {Number} t Time value used to compute current value
2491+ * @param {Number} b Starting value
2492+ * @param {Number} c Delta between start and end values
2493+ * @param {Number} d Total length of animation
2494+ * @param {Number} s Overshoot (optional)
2495+ * @return {Number} The computed value for the current animation frame
2496+ */
2497+ backOut: function (t, b, c, d, s) {
2498+ if (typeof s === 'undefined') {
2499+ s = 1.70158;
2500+ }
2501+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
2502+ },
2503+
2504+ /**
2505+ * Backtracks slightly, then reverses direction, overshoots end,
2506+ * then reverses and comes back to end.
2507+ * @method backBoth
2508+ * @param {Number} t Time value used to compute current value
2509+ * @param {Number} b Starting value
2510+ * @param {Number} c Delta between start and end values
2511+ * @param {Number} d Total length of animation
2512+ * @param {Number} s Overshoot (optional)
2513+ * @return {Number} The computed value for the current animation frame
2514+ */
2515+ backBoth: function (t, b, c, d, s) {
2516+ if (typeof s === 'undefined') {
2517+ s = 1.70158;
2518+ }
2519+
2520+ if ((t /= d/2 ) < 1) {
2521+ return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
2522+ }
2523+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
2524+ },
2525+
2526+ /**
2527+ * Bounce off of start.
2528+ * @method bounceIn
2529+ * @param {Number} t Time value used to compute current value
2530+ * @param {Number} b Starting value
2531+ * @param {Number} c Delta between start and end values
2532+ * @param {Number} d Total length of animation
2533+ * @return {Number} The computed value for the current animation frame
2534+ */
2535+ bounceIn: function (t, b, c, d) {
2536+ return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
2537+ },
2538+
2539+ /**
2540+ * Bounces off end.
2541+ * @method bounceOut
2542+ * @param {Number} t Time value used to compute current value
2543+ * @param {Number} b Starting value
2544+ * @param {Number} c Delta between start and end values
2545+ * @param {Number} d Total length of animation
2546+ * @return {Number} The computed value for the current animation frame
2547+ */
2548+ bounceOut: function (t, b, c, d) {
2549+ if ((t/=d) < (1/2.75)) {
2550+ return c*(7.5625*t*t) + b;
2551+ } else if (t < (2/2.75)) {
2552+ return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
2553+ } else if (t < (2.5/2.75)) {
2554+ return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
2555+ }
2556+ return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
2557+ },
2558+
2559+ /**
2560+ * Bounces off start and end.
2561+ * @method bounceBoth
2562+ * @param {Number} t Time value used to compute current value
2563+ * @param {Number} b Starting value
2564+ * @param {Number} c Delta between start and end values
2565+ * @param {Number} d Total length of animation
2566+ * @return {Number} The computed value for the current animation frame
2567+ */
2568+ bounceBoth: function (t, b, c, d) {
2569+ if (t < d/2) {
2570+ return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
2571+ }
2572+ return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
2573+ }
2574+};
2575+
2576+
2577+}, '3.0.0' ,{requires:['anim-base']});
2578+YUI.add('anim-node-plugin', function(Y) {
2579+
2580+/**
2581+ * Binds an Anim instance to a Node instance
2582+ * @module anim
2583+ * @class Plugin.NodeFX
2584+ * @extends Base
2585+ * @submodule anim-node-plugin
2586+ */
2587+
2588+var NodeFX = function(config) {
2589+ config = (config) ? Y.merge(config) : {};
2590+ config.node = config.host;
2591+ NodeFX.superclass.constructor.apply(this, arguments);
2592+};
2593+
2594+NodeFX.NAME = "nodefx";
2595+NodeFX.NS = "fx";
2596+
2597+Y.extend(NodeFX, Y.Anim);
2598+
2599+Y.namespace('Plugin');
2600+Y.Plugin.NodeFX = NodeFX;
2601+
2602+
2603+}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
2604+YUI.add('anim-scroll', function(Y) {
2605+
2606+/**
2607+ * Adds support for the <code>scroll</code> property in <code>to</code>
2608+ * and <code>from</code> attributes.
2609+ * @module anim
2610+ * @submodule anim-scroll
2611+ */
2612+
2613+var NUM = Number;
2614+
2615+//TODO: deprecate for scrollTop/Left properties?
2616+Y.Anim.behaviors.scroll = {
2617+ set: function(anim, att, from, to, elapsed, duration, fn) {
2618+ var
2619+ node = anim._node,
2620+ val = ([
2621+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
2622+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
2623+ ]);
2624+
2625+ if (val[0]) {
2626+ node.set('scrollLeft', val[0]);
2627+ }
2628+
2629+ if (val[1]) {
2630+ node.set('scrollTop', val[1]);
2631+ }
2632+ },
2633+ get: function(anim) {
2634+ var node = anim._node;
2635+ return [node.get('scrollLeft'), node.get('scrollTop')];
2636+ }
2637+};
2638+
2639+
2640+
2641+}, '3.0.0' ,{requires:['anim-base']});
2642+YUI.add('anim-xy', function(Y) {
2643+
2644+/**
2645+ * Adds support for the <code>xy</code> property in <code>from</code> and
2646+ * <code>to</code> attributes.
2647+ * @module anim
2648+ * @submodule anim-xy
2649+ */
2650+
2651+var NUM = Number;
2652+
2653+Y.Anim.behaviors.xy = {
2654+ set: function(anim, att, from, to, elapsed, duration, fn) {
2655+ anim._node.setXY([
2656+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
2657+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
2658+ ]);
2659+ },
2660+ get: function(anim) {
2661+ return anim._node.getXY();
2662+ }
2663+};
2664+
2665+
2666+
2667+}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
2668+
2669+
2670+YUI.add('anim', function(Y){}, '3.0.0' ,{use:['anim-base', 'anim-color', 'anim-curve', 'anim-easing', 'anim-node-plugin', 'anim-scroll', 'anim-xy'], skinnable:false});
2671+
2672
2673=== added file 'identityprovider/media/lazr-js/anim/anim-easing-debug.js'
2674--- identityprovider/media/lazr-js/anim/anim-easing-debug.js 1970-01-01 00:00:00 +0000
2675+++ identityprovider/media/lazr-js/anim/anim-easing-debug.js 2010-06-15 01:37:25 +0000
2676@@ -0,0 +1,355 @@
2677+/*
2678+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
2679+Code licensed under the BSD License:
2680+http://developer.yahoo.net/yui/license.txt
2681+version: 3.0.0
2682+build: 1549
2683+*/
2684+YUI.add('anim-easing', function(Y) {
2685+
2686+/*
2687+TERMS OF USE - EASING EQUATIONS
2688+Open source under the BSD License.
2689+Copyright 2001 Robert Penner All rights reserved.
2690+
2691+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
2692+
2693+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2694+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
2695+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
2696+
2697+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2698+*/
2699+
2700+/**
2701+ * The easing module provides methods for customizing
2702+ * how an animation behaves during each run.
2703+ * @class Easing
2704+ * @module anim
2705+ * @submodule anim-easing
2706+ */
2707+
2708+Y.Easing = {
2709+
2710+ /**
2711+ * Uniform speed between points.
2712+ * @for Easing
2713+ * @method easeNone
2714+ * @param {Number} t Time value used to compute current value
2715+ * @param {Number} b Starting value
2716+ * @param {Number} c Delta between start and end values
2717+ * @param {Number} d Total length of animation
2718+ * @return {Number} The computed value for the current animation frame
2719+ */
2720+ easeNone: function (t, b, c, d) {
2721+ return c*t/d + b;
2722+ },
2723+
2724+ /**
2725+ * Begins slowly and accelerates towards end. (quadratic)
2726+ * @method easeIn
2727+ * @param {Number} t Time value used to compute current value
2728+ * @param {Number} b Starting value
2729+ * @param {Number} c Delta between start and end values
2730+ * @param {Number} d Total length of animation
2731+ * @return {Number} The computed value for the current animation frame
2732+ */
2733+ easeIn: function (t, b, c, d) {
2734+ return c*(t/=d)*t + b;
2735+ },
2736+
2737+ /**
2738+ * Begins quickly and decelerates towards end. (quadratic)
2739+ * @method easeOut
2740+ * @param {Number} t Time value used to compute current value
2741+ * @param {Number} b Starting value
2742+ * @param {Number} c Delta between start and end values
2743+ * @param {Number} d Total length of animation
2744+ * @return {Number} The computed value for the current animation frame
2745+ */
2746+ easeOut: function (t, b, c, d) {
2747+ return -c *(t/=d)*(t-2) + b;
2748+ },
2749+
2750+ /**
2751+ * Begins slowly and decelerates towards end. (quadratic)
2752+ * @method easeBoth
2753+ * @param {Number} t Time value used to compute current value
2754+ * @param {Number} b Starting value
2755+ * @param {Number} c Delta between start and end values
2756+ * @param {Number} d Total length of animation
2757+ * @return {Number} The computed value for the current animation frame
2758+ */
2759+ easeBoth: function (t, b, c, d) {
2760+ if ((t/=d/2) < 1) {
2761+ return c/2*t*t + b;
2762+ }
2763+
2764+ return -c/2 * ((--t)*(t-2) - 1) + b;
2765+ },
2766+
2767+ /**
2768+ * Begins slowly and accelerates towards end. (quartic)
2769+ * @method easeInStrong
2770+ * @param {Number} t Time value used to compute current value
2771+ * @param {Number} b Starting value
2772+ * @param {Number} c Delta between start and end values
2773+ * @param {Number} d Total length of animation
2774+ * @return {Number} The computed value for the current animation frame
2775+ */
2776+ easeInStrong: function (t, b, c, d) {
2777+ return c*(t/=d)*t*t*t + b;
2778+ },
2779+
2780+ /**
2781+ * Begins quickly and decelerates towards end. (quartic)
2782+ * @method easeOutStrong
2783+ * @param {Number} t Time value used to compute current value
2784+ * @param {Number} b Starting value
2785+ * @param {Number} c Delta between start and end values
2786+ * @param {Number} d Total length of animation
2787+ * @return {Number} The computed value for the current animation frame
2788+ */
2789+ easeOutStrong: function (t, b, c, d) {
2790+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
2791+ },
2792+
2793+ /**
2794+ * Begins slowly and decelerates towards end. (quartic)
2795+ * @method easeBothStrong
2796+ * @param {Number} t Time value used to compute current value
2797+ * @param {Number} b Starting value
2798+ * @param {Number} c Delta between start and end values
2799+ * @param {Number} d Total length of animation
2800+ * @return {Number} The computed value for the current animation frame
2801+ */
2802+ easeBothStrong: function (t, b, c, d) {
2803+ if ((t/=d/2) < 1) {
2804+ return c/2*t*t*t*t + b;
2805+ }
2806+
2807+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
2808+ },
2809+
2810+ /**
2811+ * Snap in elastic effect.
2812+ * @method elasticIn
2813+ * @param {Number} t Time value used to compute current value
2814+ * @param {Number} b Starting value
2815+ * @param {Number} c Delta between start and end values
2816+ * @param {Number} d Total length of animation
2817+ * @param {Number} a Amplitude (optional)
2818+ * @param {Number} p Period (optional)
2819+ * @return {Number} The computed value for the current animation frame
2820+ */
2821+
2822+ elasticIn: function (t, b, c, d, a, p) {
2823+ var s;
2824+ if (t === 0) {
2825+ return b;
2826+ }
2827+ if ( (t /= d) === 1 ) {
2828+ return b+c;
2829+ }
2830+ if (!p) {
2831+ p = d* 0.3;
2832+ }
2833+
2834+ if (!a || a < Math.abs(c)) {
2835+ a = c;
2836+ s = p/4;
2837+ }
2838+ else {
2839+ s = p/(2*Math.PI) * Math.asin (c/a);
2840+ }
2841+
2842+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
2843+ },
2844+
2845+ /**
2846+ * Snap out elastic effect.
2847+ * @method elasticOut
2848+ * @param {Number} t Time value used to compute current value
2849+ * @param {Number} b Starting value
2850+ * @param {Number} c Delta between start and end values
2851+ * @param {Number} d Total length of animation
2852+ * @param {Number} a Amplitude (optional)
2853+ * @param {Number} p Period (optional)
2854+ * @return {Number} The computed value for the current animation frame
2855+ */
2856+ elasticOut: function (t, b, c, d, a, p) {
2857+ var s;
2858+ if (t === 0) {
2859+ return b;
2860+ }
2861+ if ( (t /= d) === 1 ) {
2862+ return b+c;
2863+ }
2864+ if (!p) {
2865+ p=d * 0.3;
2866+ }
2867+
2868+ if (!a || a < Math.abs(c)) {
2869+ a = c;
2870+ s = p / 4;
2871+ }
2872+ else {
2873+ s = p/(2*Math.PI) * Math.asin (c/a);
2874+ }
2875+
2876+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
2877+ },
2878+
2879+ /**
2880+ * Snap both elastic effect.
2881+ * @method elasticBoth
2882+ * @param {Number} t Time value used to compute current value
2883+ * @param {Number} b Starting value
2884+ * @param {Number} c Delta between start and end values
2885+ * @param {Number} d Total length of animation
2886+ * @param {Number} a Amplitude (optional)
2887+ * @param {Number} p Period (optional)
2888+ * @return {Number} The computed value for the current animation frame
2889+ */
2890+ elasticBoth: function (t, b, c, d, a, p) {
2891+ var s;
2892+ if (t === 0) {
2893+ return b;
2894+ }
2895+
2896+ if ( (t /= d/2) === 2 ) {
2897+ return b+c;
2898+ }
2899+
2900+ if (!p) {
2901+ p = d*(0.3*1.5);
2902+ }
2903+
2904+ if ( !a || a < Math.abs(c) ) {
2905+ a = c;
2906+ s = p/4;
2907+ }
2908+ else {
2909+ s = p/(2*Math.PI) * Math.asin (c/a);
2910+ }
2911+
2912+ if (t < 1) {
2913+ return -0.5*(a*Math.pow(2,10*(t-=1)) *
2914+ Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
2915+ }
2916+ return a*Math.pow(2,-10*(t-=1)) *
2917+ Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
2918+ },
2919+
2920+
2921+ /**
2922+ * Backtracks slightly, then reverses direction and moves to end.
2923+ * @method backIn
2924+ * @param {Number} t Time value used to compute current value
2925+ * @param {Number} b Starting value
2926+ * @param {Number} c Delta between start and end values
2927+ * @param {Number} d Total length of animation
2928+ * @param {Number} s Overshoot (optional)
2929+ * @return {Number} The computed value for the current animation frame
2930+ */
2931+ backIn: function (t, b, c, d, s) {
2932+ if (s === undefined) {
2933+ s = 1.70158;
2934+ }
2935+ if (t === d) {
2936+ t -= 0.001;
2937+ }
2938+ return c*(t/=d)*t*((s+1)*t - s) + b;
2939+ },
2940+
2941+ /**
2942+ * Overshoots end, then reverses and comes back to end.
2943+ * @method backOut
2944+ * @param {Number} t Time value used to compute current value
2945+ * @param {Number} b Starting value
2946+ * @param {Number} c Delta between start and end values
2947+ * @param {Number} d Total length of animation
2948+ * @param {Number} s Overshoot (optional)
2949+ * @return {Number} The computed value for the current animation frame
2950+ */
2951+ backOut: function (t, b, c, d, s) {
2952+ if (typeof s === 'undefined') {
2953+ s = 1.70158;
2954+ }
2955+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
2956+ },
2957+
2958+ /**
2959+ * Backtracks slightly, then reverses direction, overshoots end,
2960+ * then reverses and comes back to end.
2961+ * @method backBoth
2962+ * @param {Number} t Time value used to compute current value
2963+ * @param {Number} b Starting value
2964+ * @param {Number} c Delta between start and end values
2965+ * @param {Number} d Total length of animation
2966+ * @param {Number} s Overshoot (optional)
2967+ * @return {Number} The computed value for the current animation frame
2968+ */
2969+ backBoth: function (t, b, c, d, s) {
2970+ if (typeof s === 'undefined') {
2971+ s = 1.70158;
2972+ }
2973+
2974+ if ((t /= d/2 ) < 1) {
2975+ return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
2976+ }
2977+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
2978+ },
2979+
2980+ /**
2981+ * Bounce off of start.
2982+ * @method bounceIn
2983+ * @param {Number} t Time value used to compute current value
2984+ * @param {Number} b Starting value
2985+ * @param {Number} c Delta between start and end values
2986+ * @param {Number} d Total length of animation
2987+ * @return {Number} The computed value for the current animation frame
2988+ */
2989+ bounceIn: function (t, b, c, d) {
2990+ return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
2991+ },
2992+
2993+ /**
2994+ * Bounces off end.
2995+ * @method bounceOut
2996+ * @param {Number} t Time value used to compute current value
2997+ * @param {Number} b Starting value
2998+ * @param {Number} c Delta between start and end values
2999+ * @param {Number} d Total length of animation
3000+ * @return {Number} The computed value for the current animation frame
3001+ */
3002+ bounceOut: function (t, b, c, d) {
3003+ if ((t/=d) < (1/2.75)) {
3004+ return c*(7.5625*t*t) + b;
3005+ } else if (t < (2/2.75)) {
3006+ return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
3007+ } else if (t < (2.5/2.75)) {
3008+ return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
3009+ }
3010+ return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
3011+ },
3012+
3013+ /**
3014+ * Bounces off start and end.
3015+ * @method bounceBoth
3016+ * @param {Number} t Time value used to compute current value
3017+ * @param {Number} b Starting value
3018+ * @param {Number} c Delta between start and end values
3019+ * @param {Number} d Total length of animation
3020+ * @return {Number} The computed value for the current animation frame
3021+ */
3022+ bounceBoth: function (t, b, c, d) {
3023+ if (t < d/2) {
3024+ return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
3025+ }
3026+ return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
3027+ }
3028+};
3029+
3030+
3031+}, '3.0.0' ,{requires:['anim-base']});
3032
3033=== added file 'identityprovider/media/lazr-js/anim/anim-easing-min.js'
3034--- identityprovider/media/lazr-js/anim/anim-easing-min.js 1970-01-01 00:00:00 +0000
3035+++ identityprovider/media/lazr-js/anim/anim-easing-min.js 2010-06-15 01:37:25 +0000
3036@@ -0,0 +1,8 @@
3037+/*
3038+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3039+Code licensed under the BSD License:
3040+http://developer.yahoo.net/yui/license.txt
3041+version: 3.0.0
3042+build: 1549
3043+*/
3044+YUI.add("anim-easing",function(A){A.Easing={easeNone:function(C,B,E,D){return E*C/D+B;},easeIn:function(C,B,E,D){return E*(C/=D)*C+B;},easeOut:function(C,B,E,D){return -E*(C/=D)*(C-2)+B;},easeBoth:function(C,B,E,D){if((C/=D/2)<1){return E/2*C*C+B;}return -E/2*((--C)*(C-2)-1)+B;},easeInStrong:function(C,B,E,D){return E*(C/=D)*C*C*C+B;},easeOutStrong:function(C,B,E,D){return -E*((C=C/D-1)*C*C*C-1)+B;},easeBothStrong:function(C,B,E,D){if((C/=D/2)<1){return E/2*C*C*C*C+B;}return -E/2*((C-=2)*C*C*C-2)+B;},elasticIn:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G)===1){return B+H;}if(!F){F=G*0.3;}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}return -(C*Math.pow(2,10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F))+B;},elasticOut:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G)===1){return B+H;}if(!F){F=G*0.3;}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}return C*Math.pow(2,-10*D)*Math.sin((D*G-E)*(2*Math.PI)/F)+H+B;},elasticBoth:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G/2)===2){return B+H;}if(!F){F=G*(0.3*1.5);}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}if(D<1){return -0.5*(C*Math.pow(2,10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F))+B;}return C*Math.pow(2,-10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F)*0.5+H+B;},backIn:function(C,B,F,E,D){if(D===undefined){D=1.70158;}if(C===E){C-=0.001;}return F*(C/=E)*C*((D+1)*C-D)+B;},backOut:function(C,B,F,E,D){if(typeof D==="undefined"){D=1.70158;}return F*((C=C/E-1)*C*((D+1)*C+D)+1)+B;},backBoth:function(C,B,F,E,D){if(typeof D==="undefined"){D=1.70158;}if((C/=E/2)<1){return F/2*(C*C*(((D*=(1.525))+1)*C-D))+B;}return F/2*((C-=2)*C*(((D*=(1.525))+1)*C+D)+2)+B;},bounceIn:function(C,B,E,D){return E-A.Easing.bounceOut(D-C,0,E,D)+B;},bounceOut:function(C,B,E,D){if((C/=D)<(1/2.75)){return E*(7.5625*C*C)+B;}else{if(C<(2/2.75)){return E*(7.5625*(C-=(1.5/2.75))*C+0.75)+B;}else{if(C<(2.5/2.75)){return E*(7.5625*(C-=(2.25/2.75))*C+0.9375)+B;}}}return E*(7.5625*(C-=(2.625/2.75))*C+0.984375)+B;},bounceBoth:function(C,B,E,D){if(C<D/2){return A.Easing.bounceIn(C*2,0,E,D)*0.5+B;}return A.Easing.bounceOut(C*2-D,0,E,D)*0.5+E*0.5+B;}};},"3.0.0",{requires:["anim-base"]});
3045\ No newline at end of file
3046
3047=== added file 'identityprovider/media/lazr-js/anim/anim-easing.js'
3048--- identityprovider/media/lazr-js/anim/anim-easing.js 1970-01-01 00:00:00 +0000
3049+++ identityprovider/media/lazr-js/anim/anim-easing.js 2010-06-15 01:37:25 +0000
3050@@ -0,0 +1,355 @@
3051+/*
3052+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3053+Code licensed under the BSD License:
3054+http://developer.yahoo.net/yui/license.txt
3055+version: 3.0.0
3056+build: 1549
3057+*/
3058+YUI.add('anim-easing', function(Y) {
3059+
3060+/*
3061+TERMS OF USE - EASING EQUATIONS
3062+Open source under the BSD License.
3063+Copyright 2001 Robert Penner All rights reserved.
3064+
3065+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
3066+
3067+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
3068+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3069+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
3070+
3071+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3072+*/
3073+
3074+/**
3075+ * The easing module provides methods for customizing
3076+ * how an animation behaves during each run.
3077+ * @class Easing
3078+ * @module anim
3079+ * @submodule anim-easing
3080+ */
3081+
3082+Y.Easing = {
3083+
3084+ /**
3085+ * Uniform speed between points.
3086+ * @for Easing
3087+ * @method easeNone
3088+ * @param {Number} t Time value used to compute current value
3089+ * @param {Number} b Starting value
3090+ * @param {Number} c Delta between start and end values
3091+ * @param {Number} d Total length of animation
3092+ * @return {Number} The computed value for the current animation frame
3093+ */
3094+ easeNone: function (t, b, c, d) {
3095+ return c*t/d + b;
3096+ },
3097+
3098+ /**
3099+ * Begins slowly and accelerates towards end. (quadratic)
3100+ * @method easeIn
3101+ * @param {Number} t Time value used to compute current value
3102+ * @param {Number} b Starting value
3103+ * @param {Number} c Delta between start and end values
3104+ * @param {Number} d Total length of animation
3105+ * @return {Number} The computed value for the current animation frame
3106+ */
3107+ easeIn: function (t, b, c, d) {
3108+ return c*(t/=d)*t + b;
3109+ },
3110+
3111+ /**
3112+ * Begins quickly and decelerates towards end. (quadratic)
3113+ * @method easeOut
3114+ * @param {Number} t Time value used to compute current value
3115+ * @param {Number} b Starting value
3116+ * @param {Number} c Delta between start and end values
3117+ * @param {Number} d Total length of animation
3118+ * @return {Number} The computed value for the current animation frame
3119+ */
3120+ easeOut: function (t, b, c, d) {
3121+ return -c *(t/=d)*(t-2) + b;
3122+ },
3123+
3124+ /**
3125+ * Begins slowly and decelerates towards end. (quadratic)
3126+ * @method easeBoth
3127+ * @param {Number} t Time value used to compute current value
3128+ * @param {Number} b Starting value
3129+ * @param {Number} c Delta between start and end values
3130+ * @param {Number} d Total length of animation
3131+ * @return {Number} The computed value for the current animation frame
3132+ */
3133+ easeBoth: function (t, b, c, d) {
3134+ if ((t/=d/2) < 1) {
3135+ return c/2*t*t + b;
3136+ }
3137+
3138+ return -c/2 * ((--t)*(t-2) - 1) + b;
3139+ },
3140+
3141+ /**
3142+ * Begins slowly and accelerates towards end. (quartic)
3143+ * @method easeInStrong
3144+ * @param {Number} t Time value used to compute current value
3145+ * @param {Number} b Starting value
3146+ * @param {Number} c Delta between start and end values
3147+ * @param {Number} d Total length of animation
3148+ * @return {Number} The computed value for the current animation frame
3149+ */
3150+ easeInStrong: function (t, b, c, d) {
3151+ return c*(t/=d)*t*t*t + b;
3152+ },
3153+
3154+ /**
3155+ * Begins quickly and decelerates towards end. (quartic)
3156+ * @method easeOutStrong
3157+ * @param {Number} t Time value used to compute current value
3158+ * @param {Number} b Starting value
3159+ * @param {Number} c Delta between start and end values
3160+ * @param {Number} d Total length of animation
3161+ * @return {Number} The computed value for the current animation frame
3162+ */
3163+ easeOutStrong: function (t, b, c, d) {
3164+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
3165+ },
3166+
3167+ /**
3168+ * Begins slowly and decelerates towards end. (quartic)
3169+ * @method easeBothStrong
3170+ * @param {Number} t Time value used to compute current value
3171+ * @param {Number} b Starting value
3172+ * @param {Number} c Delta between start and end values
3173+ * @param {Number} d Total length of animation
3174+ * @return {Number} The computed value for the current animation frame
3175+ */
3176+ easeBothStrong: function (t, b, c, d) {
3177+ if ((t/=d/2) < 1) {
3178+ return c/2*t*t*t*t + b;
3179+ }
3180+
3181+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
3182+ },
3183+
3184+ /**
3185+ * Snap in elastic effect.
3186+ * @method elasticIn
3187+ * @param {Number} t Time value used to compute current value
3188+ * @param {Number} b Starting value
3189+ * @param {Number} c Delta between start and end values
3190+ * @param {Number} d Total length of animation
3191+ * @param {Number} a Amplitude (optional)
3192+ * @param {Number} p Period (optional)
3193+ * @return {Number} The computed value for the current animation frame
3194+ */
3195+
3196+ elasticIn: function (t, b, c, d, a, p) {
3197+ var s;
3198+ if (t === 0) {
3199+ return b;
3200+ }
3201+ if ( (t /= d) === 1 ) {
3202+ return b+c;
3203+ }
3204+ if (!p) {
3205+ p = d* 0.3;
3206+ }
3207+
3208+ if (!a || a < Math.abs(c)) {
3209+ a = c;
3210+ s = p/4;
3211+ }
3212+ else {
3213+ s = p/(2*Math.PI) * Math.asin (c/a);
3214+ }
3215+
3216+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
3217+ },
3218+
3219+ /**
3220+ * Snap out elastic effect.
3221+ * @method elasticOut
3222+ * @param {Number} t Time value used to compute current value
3223+ * @param {Number} b Starting value
3224+ * @param {Number} c Delta between start and end values
3225+ * @param {Number} d Total length of animation
3226+ * @param {Number} a Amplitude (optional)
3227+ * @param {Number} p Period (optional)
3228+ * @return {Number} The computed value for the current animation frame
3229+ */
3230+ elasticOut: function (t, b, c, d, a, p) {
3231+ var s;
3232+ if (t === 0) {
3233+ return b;
3234+ }
3235+ if ( (t /= d) === 1 ) {
3236+ return b+c;
3237+ }
3238+ if (!p) {
3239+ p=d * 0.3;
3240+ }
3241+
3242+ if (!a || a < Math.abs(c)) {
3243+ a = c;
3244+ s = p / 4;
3245+ }
3246+ else {
3247+ s = p/(2*Math.PI) * Math.asin (c/a);
3248+ }
3249+
3250+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
3251+ },
3252+
3253+ /**
3254+ * Snap both elastic effect.
3255+ * @method elasticBoth
3256+ * @param {Number} t Time value used to compute current value
3257+ * @param {Number} b Starting value
3258+ * @param {Number} c Delta between start and end values
3259+ * @param {Number} d Total length of animation
3260+ * @param {Number} a Amplitude (optional)
3261+ * @param {Number} p Period (optional)
3262+ * @return {Number} The computed value for the current animation frame
3263+ */
3264+ elasticBoth: function (t, b, c, d, a, p) {
3265+ var s;
3266+ if (t === 0) {
3267+ return b;
3268+ }
3269+
3270+ if ( (t /= d/2) === 2 ) {
3271+ return b+c;
3272+ }
3273+
3274+ if (!p) {
3275+ p = d*(0.3*1.5);
3276+ }
3277+
3278+ if ( !a || a < Math.abs(c) ) {
3279+ a = c;
3280+ s = p/4;
3281+ }
3282+ else {
3283+ s = p/(2*Math.PI) * Math.asin (c/a);
3284+ }
3285+
3286+ if (t < 1) {
3287+ return -0.5*(a*Math.pow(2,10*(t-=1)) *
3288+ Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
3289+ }
3290+ return a*Math.pow(2,-10*(t-=1)) *
3291+ Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
3292+ },
3293+
3294+
3295+ /**
3296+ * Backtracks slightly, then reverses direction and moves to end.
3297+ * @method backIn
3298+ * @param {Number} t Time value used to compute current value
3299+ * @param {Number} b Starting value
3300+ * @param {Number} c Delta between start and end values
3301+ * @param {Number} d Total length of animation
3302+ * @param {Number} s Overshoot (optional)
3303+ * @return {Number} The computed value for the current animation frame
3304+ */
3305+ backIn: function (t, b, c, d, s) {
3306+ if (s === undefined) {
3307+ s = 1.70158;
3308+ }
3309+ if (t === d) {
3310+ t -= 0.001;
3311+ }
3312+ return c*(t/=d)*t*((s+1)*t - s) + b;
3313+ },
3314+
3315+ /**
3316+ * Overshoots end, then reverses and comes back to end.
3317+ * @method backOut
3318+ * @param {Number} t Time value used to compute current value
3319+ * @param {Number} b Starting value
3320+ * @param {Number} c Delta between start and end values
3321+ * @param {Number} d Total length of animation
3322+ * @param {Number} s Overshoot (optional)
3323+ * @return {Number} The computed value for the current animation frame
3324+ */
3325+ backOut: function (t, b, c, d, s) {
3326+ if (typeof s === 'undefined') {
3327+ s = 1.70158;
3328+ }
3329+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
3330+ },
3331+
3332+ /**
3333+ * Backtracks slightly, then reverses direction, overshoots end,
3334+ * then reverses and comes back to end.
3335+ * @method backBoth
3336+ * @param {Number} t Time value used to compute current value
3337+ * @param {Number} b Starting value
3338+ * @param {Number} c Delta between start and end values
3339+ * @param {Number} d Total length of animation
3340+ * @param {Number} s Overshoot (optional)
3341+ * @return {Number} The computed value for the current animation frame
3342+ */
3343+ backBoth: function (t, b, c, d, s) {
3344+ if (typeof s === 'undefined') {
3345+ s = 1.70158;
3346+ }
3347+
3348+ if ((t /= d/2 ) < 1) {
3349+ return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
3350+ }
3351+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
3352+ },
3353+
3354+ /**
3355+ * Bounce off of start.
3356+ * @method bounceIn
3357+ * @param {Number} t Time value used to compute current value
3358+ * @param {Number} b Starting value
3359+ * @param {Number} c Delta between start and end values
3360+ * @param {Number} d Total length of animation
3361+ * @return {Number} The computed value for the current animation frame
3362+ */
3363+ bounceIn: function (t, b, c, d) {
3364+ return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
3365+ },
3366+
3367+ /**
3368+ * Bounces off end.
3369+ * @method bounceOut
3370+ * @param {Number} t Time value used to compute current value
3371+ * @param {Number} b Starting value
3372+ * @param {Number} c Delta between start and end values
3373+ * @param {Number} d Total length of animation
3374+ * @return {Number} The computed value for the current animation frame
3375+ */
3376+ bounceOut: function (t, b, c, d) {
3377+ if ((t/=d) < (1/2.75)) {
3378+ return c*(7.5625*t*t) + b;
3379+ } else if (t < (2/2.75)) {
3380+ return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
3381+ } else if (t < (2.5/2.75)) {
3382+ return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
3383+ }
3384+ return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
3385+ },
3386+
3387+ /**
3388+ * Bounces off start and end.
3389+ * @method bounceBoth
3390+ * @param {Number} t Time value used to compute current value
3391+ * @param {Number} b Starting value
3392+ * @param {Number} c Delta between start and end values
3393+ * @param {Number} d Total length of animation
3394+ * @return {Number} The computed value for the current animation frame
3395+ */
3396+ bounceBoth: function (t, b, c, d) {
3397+ if (t < d/2) {
3398+ return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
3399+ }
3400+ return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
3401+ }
3402+};
3403+
3404+
3405+}, '3.0.0' ,{requires:['anim-base']});
3406
3407=== added file 'identityprovider/media/lazr-js/anim/anim-min.js'
3408--- identityprovider/media/lazr-js/anim/anim-min.js 1970-01-01 00:00:00 +0000
3409+++ identityprovider/media/lazr-js/anim/anim-min.js 2010-06-15 01:37:25 +0000
3410@@ -0,0 +1,9 @@
3411+/*
3412+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3413+Code licensed under the BSD License:
3414+http://developer.yahoo.net/yui/license.txt
3415+version: 3.0.0
3416+build: 1549
3417+*/
3418+YUI.add("anim-base",function(B){var C="running",N="startTime",L="elapsedTime",J="start",I="tween",M="end",D="node",K="paused",P="reverse",H="iterationCount",A=Number;var F={},O={},E;B.Anim=function(){B.Anim.superclass.constructor.apply(this,arguments);O[B.stamp(this)]=this;};B.Anim.NAME="anim";B.Anim.RE_DEFAULT_UNIT=/^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;B.Anim.DEFAULT_UNIT="px";B.Anim.DEFAULT_EASING=function(R,Q,T,S){return T*R/S+Q;};B.Anim.behaviors={left:{get:function(R,Q){return R._getOffset(Q);}}};B.Anim.behaviors.top=B.Anim.behaviors.left;B.Anim.DEFAULT_SETTER=function(U,R,X,W,Q,V,S,T){T=T||"";U._node.setStyle(R,S(Q,A(X),A(W)-A(X),V)+T);};B.Anim.DEFAULT_GETTER=function(Q,R){return Q._node.getComputedStyle(R);};B.Anim.ATTRS={node:{setter:function(Q){Q=B.get(Q);this._node=Q;if(!Q){}return Q;}},duration:{value:1},easing:{value:B.Anim.DEFAULT_EASING,setter:function(Q){if(typeof Q==="string"&&B.Easing){return B.Easing[Q];}}},from:{},to:{},startTime:{value:0,readOnly:true},elapsedTime:{value:0,readOnly:true},running:{getter:function(){return !!F[B.stamp(this)];},value:false,readOnly:true},iterations:{value:1},iterationCount:{value:0,readOnly:true},direction:{value:"normal"},paused:{readOnly:true,value:false},reverse:{value:false}};B.Anim.run=function(){for(var Q in O){if(O[Q].run){O[Q].run();}}};B.Anim.pause=function(){for(var Q in F){if(F[Q].pause){F[Q].pause();}}B.Anim._stopTimer();};B.Anim.stop=function(){for(var Q in F){if(F[Q].stop){F[Q].stop();}}B.Anim._stopTimer();};B.Anim._startTimer=function(){if(!E){E=setInterval(B.Anim._runFrame,1);}};B.Anim._stopTimer=function(){clearInterval(E);E=0;};B.Anim._runFrame=function(){var Q=true;for(var R in F){if(F[R]._runFrame){Q=false;F[R]._runFrame();}}if(Q){B.Anim._stopTimer();}};B.Anim.RE_UNITS=/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;var G={run:function(){if(!this.get(C)){this._start();}else{if(this.get(K)){this._resume();}}return this;},pause:function(){if(this.get(C)){this._pause();}return this;},stop:function(Q){if(this.get(C)||this.get(K)){this._end(Q);}return this;},_added:false,_start:function(){this._set(N,new Date()-this.get(L));this._actualFrames=0;if(!this.get(K)){this._initAnimAttr();}F[B.stamp(this)]=this;B.Anim._startTimer();this.fire(J);},_pause:function(){this._set(N,null);this._set(K,true);delete F[B.stamp(this)];this.fire("pause");},_resume:function(){this._set(K,false);F[B.stamp(this)]=this;this.fire("resume");},_end:function(Q){this._set(N,null);this._set(L,0);this._set(K,false);delete F[B.stamp(this)];this.fire(M,{elapsed:this.get(L)});},_runFrame:function(){var X=this._runtimeAttr,S=B.Anim.behaviors,Y=X.easing,Z=X.duration,a=new Date()-this.get(N),W=this.get(P),U=(a>=Z),Q=Z,R,T;if(W){a=Z-a;U=(a<=0);Q=0;}for(var V in X){if(X[V].to){R=X[V];T=(V in S&&"set" in S[V])?S[V].set:B.Anim.DEFAULT_SETTER;if(!U){T(this,V,R.from,R.to,a,Z,Y,R.unit);}else{T(this,V,R.from,R.to,Q,Z,Y,R.unit);}}}this._actualFrames+=1;this._set(L,a);this.fire(I);if(U){this._lastFrame();}},_lastFrame:function(){var Q=this.get("iterations"),R=this.get(H);R+=1;if(Q==="infinite"||R<Q){if(this.get("direction")==="alternate"){this.set(P,!this.get(P));}this.fire("iteration");}else{R=0;this._end();}this._set(N,new Date());this._set(H,R);},_initAnimAttr:function(){var X=this.get("from")||{},Y=this.get("to")||{},Q=this.get("duration")*1000,T=this.get(D),W=this.get("easing")||{},V={},R=B.Anim.behaviors,Z,S,U;B.each(Y,function(d,b){if(typeof d==="function"){d=d.call(this,T);}S=X[b];if(S===undefined){S=(b in R&&"get" in R[b])?R[b].get(this,b):B.Anim.DEFAULT_GETTER(this,b);}else{if(typeof S==="function"){S=S.call(this,T);}}var a=B.Anim.RE_UNITS.exec(S);var c=B.Anim.RE_UNITS.exec(d);S=a?a[1]:S;U=c?c[1]:d;Z=c?c[2]:a?a[2]:"";if(!Z&&B.Anim.RE_DEFAULT_UNIT.test(b)){Z=B.Anim.DEFAULT_UNIT;}if(!S||!U){B.error('invalid "from" or "to" for "'+b+'"',"Anim");return;}V[b]={from:S,to:U,unit:Z};V.duration=Q;V.easing=W;},this);this._runtimeAttr=V;},_getOffset:function(R){var T=this._node,U=T.getComputedStyle(R),S=(R==="left")?"getX":"getY",V=(R==="left")?"setX":"setY";if(U==="auto"){var Q=T.getStyle("position");if(Q==="absolute"||Q==="fixed"){U=T[S]();T[V](U);}else{U=0;}}return U;}};B.extend(B.Anim,B.Base,G);},"3.0.0",{requires:["base-base","node-style"]});YUI.add("anim-color",function(B){var A=Number;B.Anim.behaviors.color={set:function(F,D,I,H,C,G,E){I=B.Color.re_RGB.exec(B.Color.toRGB(I));H=B.Color.re_RGB.exec(B.Color.toRGB(H));if(!I||I.length<3||!H||H.length<3){B.error("invalid from or to passed to color behavior");}F._node.setStyle(D,"rgb("+[Math.floor(E(C,A(I[1]),A(H[1])-A(I[1]),G)),Math.floor(E(C,A(I[2]),A(H[2])-A(I[2]),G)),Math.floor(E(C,A(I[3]),A(H[3])-A(I[3]),G))].join(", ")+")");},get:function(D,C){var E=D._node.getComputedStyle(C);E=(E==="transparent")?"rgb(255, 255, 255)":E;return E;}};B.each(["backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],function(C,D){B.Anim.behaviors[C]=B.Anim.behaviors.color;});},"3.0.0",{requires:["anim-base"]});YUI.add("anim-curve",function(A){A.Anim.behaviors.curve={set:function(F,C,I,H,B,G,E){I=I.slice.call(I);H=H.slice.call(H);var D=E(B,0,100,G)/100;H.unshift(I);F._node.setXY(A.Anim.getBezier(H,D));},get:function(C,B){return C._node.getXY();}};A.Anim.getBezier=function(F,E){var G=F.length;var D=[];for(var C=0;C<G;++C){D[C]=[F[C][0],F[C][1]];}for(var B=1;B<G;++B){for(C=0;C<G-B;++C){D[C][0]=(1-E)*D[C][0]+E*D[parseInt(C+1,10)][0];D[C][1]=(1-E)*D[C][1]+E*D[parseInt(C+1,10)][1];}}return[D[0][0],D[0][1]];};},"3.0.0",{requires:["anim-xy"]});YUI.add("anim-easing",function(A){A.Easing={easeNone:function(C,B,E,D){return E*C/D+B;},easeIn:function(C,B,E,D){return E*(C/=D)*C+B;},easeOut:function(C,B,E,D){return -E*(C/=D)*(C-2)+B;},easeBoth:function(C,B,E,D){if((C/=D/2)<1){return E/2*C*C+B;}return -E/2*((--C)*(C-2)-1)+B;},easeInStrong:function(C,B,E,D){return E*(C/=D)*C*C*C+B;},easeOutStrong:function(C,B,E,D){return -E*((C=C/D-1)*C*C*C-1)+B;},easeBothStrong:function(C,B,E,D){if((C/=D/2)<1){return E/2*C*C*C*C+B;
3419+}return -E/2*((C-=2)*C*C*C-2)+B;},elasticIn:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G)===1){return B+H;}if(!F){F=G*0.3;}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}return -(C*Math.pow(2,10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F))+B;},elasticOut:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G)===1){return B+H;}if(!F){F=G*0.3;}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}return C*Math.pow(2,-10*D)*Math.sin((D*G-E)*(2*Math.PI)/F)+H+B;},elasticBoth:function(D,B,H,G,C,F){var E;if(D===0){return B;}if((D/=G/2)===2){return B+H;}if(!F){F=G*(0.3*1.5);}if(!C||C<Math.abs(H)){C=H;E=F/4;}else{E=F/(2*Math.PI)*Math.asin(H/C);}if(D<1){return -0.5*(C*Math.pow(2,10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F))+B;}return C*Math.pow(2,-10*(D-=1))*Math.sin((D*G-E)*(2*Math.PI)/F)*0.5+H+B;},backIn:function(C,B,F,E,D){if(D===undefined){D=1.70158;}if(C===E){C-=0.001;}return F*(C/=E)*C*((D+1)*C-D)+B;},backOut:function(C,B,F,E,D){if(typeof D==="undefined"){D=1.70158;}return F*((C=C/E-1)*C*((D+1)*C+D)+1)+B;},backBoth:function(C,B,F,E,D){if(typeof D==="undefined"){D=1.70158;}if((C/=E/2)<1){return F/2*(C*C*(((D*=(1.525))+1)*C-D))+B;}return F/2*((C-=2)*C*(((D*=(1.525))+1)*C+D)+2)+B;},bounceIn:function(C,B,E,D){return E-A.Easing.bounceOut(D-C,0,E,D)+B;},bounceOut:function(C,B,E,D){if((C/=D)<(1/2.75)){return E*(7.5625*C*C)+B;}else{if(C<(2/2.75)){return E*(7.5625*(C-=(1.5/2.75))*C+0.75)+B;}else{if(C<(2.5/2.75)){return E*(7.5625*(C-=(2.25/2.75))*C+0.9375)+B;}}}return E*(7.5625*(C-=(2.625/2.75))*C+0.984375)+B;},bounceBoth:function(C,B,E,D){if(C<D/2){return A.Easing.bounceIn(C*2,0,E,D)*0.5+B;}return A.Easing.bounceOut(C*2-D,0,E,D)*0.5+E*0.5+B;}};},"3.0.0",{requires:["anim-base"]});YUI.add("anim-node-plugin",function(B){var A=function(C){C=(C)?B.merge(C):{};C.node=C.host;A.superclass.constructor.apply(this,arguments);};A.NAME="nodefx";A.NS="fx";B.extend(A,B.Anim);B.namespace("Plugin");B.Plugin.NodeFX=A;},"3.0.0",{requires:["node-pluginhost","anim-base"]});YUI.add("anim-scroll",function(B){var A=Number;B.Anim.behaviors.scroll={set:function(F,G,I,J,K,E,H){var D=F._node,C=([H(K,A(I[0]),A(J[0])-A(I[0]),E),H(K,A(I[1]),A(J[1])-A(I[1]),E)]);if(C[0]){D.set("scrollLeft",C[0]);}if(C[1]){D.set("scrollTop",C[1]);}},get:function(D){var C=D._node;return[C.get("scrollLeft"),C.get("scrollTop")];}};},"3.0.0",{requires:["anim-base"]});YUI.add("anim-xy",function(B){var A=Number;B.Anim.behaviors.xy={set:function(F,D,I,H,C,G,E){F._node.setXY([E(C,A(I[0]),A(H[0])-A(I[0]),G),E(C,A(I[1]),A(H[1])-A(I[1]),G)]);},get:function(C){return C._node.getXY();}};},"3.0.0",{requires:["anim-base","node-screen"]});YUI.add("anim",function(A){},"3.0.0",{use:["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],skinnable:false});
3420\ No newline at end of file
3421
3422=== added file 'identityprovider/media/lazr-js/anim/anim-node-plugin-debug.js'
3423--- identityprovider/media/lazr-js/anim/anim-node-plugin-debug.js 1970-01-01 00:00:00 +0000
3424+++ identityprovider/media/lazr-js/anim/anim-node-plugin-debug.js 2010-06-15 01:37:25 +0000
3425@@ -0,0 +1,33 @@
3426+/*
3427+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3428+Code licensed under the BSD License:
3429+http://developer.yahoo.net/yui/license.txt
3430+version: 3.0.0
3431+build: 1549
3432+*/
3433+YUI.add('anim-node-plugin', function(Y) {
3434+
3435+/**
3436+ * Binds an Anim instance to a Node instance
3437+ * @module anim
3438+ * @class Plugin.NodeFX
3439+ * @extends Base
3440+ * @submodule anim-node-plugin
3441+ */
3442+
3443+var NodeFX = function(config) {
3444+ config = (config) ? Y.merge(config) : {};
3445+ config.node = config.host;
3446+ NodeFX.superclass.constructor.apply(this, arguments);
3447+};
3448+
3449+NodeFX.NAME = "nodefx";
3450+NodeFX.NS = "fx";
3451+
3452+Y.extend(NodeFX, Y.Anim);
3453+
3454+Y.namespace('Plugin');
3455+Y.Plugin.NodeFX = NodeFX;
3456+
3457+
3458+}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
3459
3460=== added file 'identityprovider/media/lazr-js/anim/anim-node-plugin-min.js'
3461--- identityprovider/media/lazr-js/anim/anim-node-plugin-min.js 1970-01-01 00:00:00 +0000
3462+++ identityprovider/media/lazr-js/anim/anim-node-plugin-min.js 2010-06-15 01:37:25 +0000
3463@@ -0,0 +1,8 @@
3464+/*
3465+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3466+Code licensed under the BSD License:
3467+http://developer.yahoo.net/yui/license.txt
3468+version: 3.0.0
3469+build: 1549
3470+*/
3471+YUI.add("anim-node-plugin",function(B){var A=function(C){C=(C)?B.merge(C):{};C.node=C.host;A.superclass.constructor.apply(this,arguments);};A.NAME="nodefx";A.NS="fx";B.extend(A,B.Anim);B.namespace("Plugin");B.Plugin.NodeFX=A;},"3.0.0",{requires:["node-pluginhost","anim-base"]});
3472\ No newline at end of file
3473
3474=== added file 'identityprovider/media/lazr-js/anim/anim-node-plugin.js'
3475--- identityprovider/media/lazr-js/anim/anim-node-plugin.js 1970-01-01 00:00:00 +0000
3476+++ identityprovider/media/lazr-js/anim/anim-node-plugin.js 2010-06-15 01:37:25 +0000
3477@@ -0,0 +1,33 @@
3478+/*
3479+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3480+Code licensed under the BSD License:
3481+http://developer.yahoo.net/yui/license.txt
3482+version: 3.0.0
3483+build: 1549
3484+*/
3485+YUI.add('anim-node-plugin', function(Y) {
3486+
3487+/**
3488+ * Binds an Anim instance to a Node instance
3489+ * @module anim
3490+ * @class Plugin.NodeFX
3491+ * @extends Base
3492+ * @submodule anim-node-plugin
3493+ */
3494+
3495+var NodeFX = function(config) {
3496+ config = (config) ? Y.merge(config) : {};
3497+ config.node = config.host;
3498+ NodeFX.superclass.constructor.apply(this, arguments);
3499+};
3500+
3501+NodeFX.NAME = "nodefx";
3502+NodeFX.NS = "fx";
3503+
3504+Y.extend(NodeFX, Y.Anim);
3505+
3506+Y.namespace('Plugin');
3507+Y.Plugin.NodeFX = NodeFX;
3508+
3509+
3510+}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
3511
3512=== added file 'identityprovider/media/lazr-js/anim/anim-scroll-debug.js'
3513--- identityprovider/media/lazr-js/anim/anim-scroll-debug.js 1970-01-01 00:00:00 +0000
3514+++ identityprovider/media/lazr-js/anim/anim-scroll-debug.js 2010-06-15 01:37:25 +0000
3515@@ -0,0 +1,45 @@
3516+/*
3517+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3518+Code licensed under the BSD License:
3519+http://developer.yahoo.net/yui/license.txt
3520+version: 3.0.0
3521+build: 1549
3522+*/
3523+YUI.add('anim-scroll', function(Y) {
3524+
3525+/**
3526+ * Adds support for the <code>scroll</code> property in <code>to</code>
3527+ * and <code>from</code> attributes.
3528+ * @module anim
3529+ * @submodule anim-scroll
3530+ */
3531+
3532+var NUM = Number;
3533+
3534+//TODO: deprecate for scrollTop/Left properties?
3535+Y.Anim.behaviors.scroll = {
3536+ set: function(anim, att, from, to, elapsed, duration, fn) {
3537+ var
3538+ node = anim._node,
3539+ val = ([
3540+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
3541+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
3542+ ]);
3543+
3544+ if (val[0]) {
3545+ node.set('scrollLeft', val[0]);
3546+ }
3547+
3548+ if (val[1]) {
3549+ node.set('scrollTop', val[1]);
3550+ }
3551+ },
3552+ get: function(anim) {
3553+ var node = anim._node;
3554+ return [node.get('scrollLeft'), node.get('scrollTop')];
3555+ }
3556+};
3557+
3558+
3559+
3560+}, '3.0.0' ,{requires:['anim-base']});
3561
3562=== added file 'identityprovider/media/lazr-js/anim/anim-scroll-min.js'
3563--- identityprovider/media/lazr-js/anim/anim-scroll-min.js 1970-01-01 00:00:00 +0000
3564+++ identityprovider/media/lazr-js/anim/anim-scroll-min.js 2010-06-15 01:37:25 +0000
3565@@ -0,0 +1,8 @@
3566+/*
3567+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3568+Code licensed under the BSD License:
3569+http://developer.yahoo.net/yui/license.txt
3570+version: 3.0.0
3571+build: 1549
3572+*/
3573+YUI.add("anim-scroll",function(B){var A=Number;B.Anim.behaviors.scroll={set:function(F,G,I,J,K,E,H){var D=F._node,C=([H(K,A(I[0]),A(J[0])-A(I[0]),E),H(K,A(I[1]),A(J[1])-A(I[1]),E)]);if(C[0]){D.set("scrollLeft",C[0]);}if(C[1]){D.set("scrollTop",C[1]);}},get:function(D){var C=D._node;return[C.get("scrollLeft"),C.get("scrollTop")];}};},"3.0.0",{requires:["anim-base"]});
3574\ No newline at end of file
3575
3576=== added file 'identityprovider/media/lazr-js/anim/anim-scroll.js'
3577--- identityprovider/media/lazr-js/anim/anim-scroll.js 1970-01-01 00:00:00 +0000
3578+++ identityprovider/media/lazr-js/anim/anim-scroll.js 2010-06-15 01:37:25 +0000
3579@@ -0,0 +1,45 @@
3580+/*
3581+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3582+Code licensed under the BSD License:
3583+http://developer.yahoo.net/yui/license.txt
3584+version: 3.0.0
3585+build: 1549
3586+*/
3587+YUI.add('anim-scroll', function(Y) {
3588+
3589+/**
3590+ * Adds support for the <code>scroll</code> property in <code>to</code>
3591+ * and <code>from</code> attributes.
3592+ * @module anim
3593+ * @submodule anim-scroll
3594+ */
3595+
3596+var NUM = Number;
3597+
3598+//TODO: deprecate for scrollTop/Left properties?
3599+Y.Anim.behaviors.scroll = {
3600+ set: function(anim, att, from, to, elapsed, duration, fn) {
3601+ var
3602+ node = anim._node,
3603+ val = ([
3604+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
3605+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
3606+ ]);
3607+
3608+ if (val[0]) {
3609+ node.set('scrollLeft', val[0]);
3610+ }
3611+
3612+ if (val[1]) {
3613+ node.set('scrollTop', val[1]);
3614+ }
3615+ },
3616+ get: function(anim) {
3617+ var node = anim._node;
3618+ return [node.get('scrollLeft'), node.get('scrollTop')];
3619+ }
3620+};
3621+
3622+
3623+
3624+}, '3.0.0' ,{requires:['anim-base']});
3625
3626=== added file 'identityprovider/media/lazr-js/anim/anim-xy-debug.js'
3627--- identityprovider/media/lazr-js/anim/anim-xy-debug.js 1970-01-01 00:00:00 +0000
3628+++ identityprovider/media/lazr-js/anim/anim-xy-debug.js 2010-06-15 01:37:25 +0000
3629@@ -0,0 +1,33 @@
3630+/*
3631+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3632+Code licensed under the BSD License:
3633+http://developer.yahoo.net/yui/license.txt
3634+version: 3.0.0
3635+build: 1549
3636+*/
3637+YUI.add('anim-xy', function(Y) {
3638+
3639+/**
3640+ * Adds support for the <code>xy</code> property in <code>from</code> and
3641+ * <code>to</code> attributes.
3642+ * @module anim
3643+ * @submodule anim-xy
3644+ */
3645+
3646+var NUM = Number;
3647+
3648+Y.Anim.behaviors.xy = {
3649+ set: function(anim, att, from, to, elapsed, duration, fn) {
3650+ anim._node.setXY([
3651+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
3652+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
3653+ ]);
3654+ },
3655+ get: function(anim) {
3656+ return anim._node.getXY();
3657+ }
3658+};
3659+
3660+
3661+
3662+}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
3663
3664=== added file 'identityprovider/media/lazr-js/anim/anim-xy-min.js'
3665--- identityprovider/media/lazr-js/anim/anim-xy-min.js 1970-01-01 00:00:00 +0000
3666+++ identityprovider/media/lazr-js/anim/anim-xy-min.js 2010-06-15 01:37:25 +0000
3667@@ -0,0 +1,8 @@
3668+/*
3669+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3670+Code licensed under the BSD License:
3671+http://developer.yahoo.net/yui/license.txt
3672+version: 3.0.0
3673+build: 1549
3674+*/
3675+YUI.add("anim-xy",function(B){var A=Number;B.Anim.behaviors.xy={set:function(F,D,I,H,C,G,E){F._node.setXY([E(C,A(I[0]),A(H[0])-A(I[0]),G),E(C,A(I[1]),A(H[1])-A(I[1]),G)]);},get:function(C){return C._node.getXY();}};},"3.0.0",{requires:["anim-base","node-screen"]});
3676\ No newline at end of file
3677
3678=== added file 'identityprovider/media/lazr-js/anim/anim-xy.js'
3679--- identityprovider/media/lazr-js/anim/anim-xy.js 1970-01-01 00:00:00 +0000
3680+++ identityprovider/media/lazr-js/anim/anim-xy.js 2010-06-15 01:37:25 +0000
3681@@ -0,0 +1,33 @@
3682+/*
3683+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3684+Code licensed under the BSD License:
3685+http://developer.yahoo.net/yui/license.txt
3686+version: 3.0.0
3687+build: 1549
3688+*/
3689+YUI.add('anim-xy', function(Y) {
3690+
3691+/**
3692+ * Adds support for the <code>xy</code> property in <code>from</code> and
3693+ * <code>to</code> attributes.
3694+ * @module anim
3695+ * @submodule anim-xy
3696+ */
3697+
3698+var NUM = Number;
3699+
3700+Y.Anim.behaviors.xy = {
3701+ set: function(anim, att, from, to, elapsed, duration, fn) {
3702+ anim._node.setXY([
3703+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
3704+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
3705+ ]);
3706+ },
3707+ get: function(anim) {
3708+ return anim._node.getXY();
3709+ }
3710+};
3711+
3712+
3713+
3714+}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
3715
3716=== added file 'identityprovider/media/lazr-js/anim/anim.js'
3717--- identityprovider/media/lazr-js/anim/anim.js 1970-01-01 00:00:00 +0000
3718+++ identityprovider/media/lazr-js/anim/anim.js 2010-06-15 01:37:25 +0000
3719@@ -0,0 +1,1149 @@
3720+/*
3721+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3722+Code licensed under the BSD License:
3723+http://developer.yahoo.net/yui/license.txt
3724+version: 3.0.0
3725+build: 1549
3726+*/
3727+YUI.add('anim-base', function(Y) {
3728+
3729+/**
3730+* The Animation Utility provides an API for creating advanced transitions.
3731+* @module anim
3732+*/
3733+
3734+/**
3735+* Provides the base Anim class, for animating numeric properties.
3736+*
3737+* @module anim
3738+* @submodule anim-base
3739+*/
3740+
3741+ /**
3742+ * A class for constructing animation instances.
3743+ * @class Anim
3744+ * @for Anim
3745+ * @constructor
3746+ * @extends Base
3747+ */
3748+
3749+ var RUNNING = 'running',
3750+ START_TIME = 'startTime',
3751+ ELAPSED_TIME = 'elapsedTime',
3752+ /**
3753+ * @for Anim
3754+ * @event start
3755+ * @description fires when an animation begins.
3756+ * @param {Event} ev The start event.
3757+ * @type Event.Custom
3758+ */
3759+ START = 'start',
3760+
3761+ /**
3762+ * @event tween
3763+ * @description fires every frame of the animation.
3764+ * @param {Event} ev The tween event.
3765+ * @type Event.Custom
3766+ */
3767+ TWEEN = 'tween',
3768+
3769+ /**
3770+ * @event end
3771+ * @description fires after the animation completes.
3772+ * @param {Event} ev The end event.
3773+ * @type Event.Custom
3774+ */
3775+ END = 'end',
3776+ NODE = 'node',
3777+ PAUSED = 'paused',
3778+ REVERSE = 'reverse', // TODO: cleanup
3779+ ITERATION_COUNT = 'iterationCount',
3780+
3781+ NUM = Number;
3782+
3783+ var _running = {},
3784+ _instances = {},
3785+ _timer;
3786+
3787+ Y.Anim = function() {
3788+ Y.Anim.superclass.constructor.apply(this, arguments);
3789+ _instances[Y.stamp(this)] = this;
3790+ };
3791+
3792+ Y.Anim.NAME = 'anim';
3793+
3794+ /**
3795+ * Regex of properties that should use the default unit.
3796+ *
3797+ * @property RE_DEFAULT_UNIT
3798+ * @static
3799+ */
3800+ Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
3801+
3802+ /**
3803+ * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
3804+ *
3805+ * @property DEFAULT_UNIT
3806+ * @static
3807+ */
3808+ Y.Anim.DEFAULT_UNIT = 'px';
3809+
3810+ Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
3811+ return c * t / d + b; // linear easing
3812+ };
3813+
3814+ /**
3815+ * Bucket for custom getters and setters
3816+ *
3817+ * @property behaviors
3818+ * @static
3819+ */
3820+ Y.Anim.behaviors = {
3821+ left: {
3822+ get: function(anim, attr) {
3823+ return anim._getOffset(attr);
3824+ }
3825+ }
3826+ };
3827+
3828+ Y.Anim.behaviors.top = Y.Anim.behaviors.left;
3829+
3830+ /**
3831+ * The default setter to use when setting object properties.
3832+ *
3833+ * @property DEFAULT_SETTER
3834+ * @static
3835+ */
3836+ Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
3837+ unit = unit || '';
3838+ anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
3839+ };
3840+
3841+ /**
3842+ * The default getter to use when getting object properties.
3843+ *
3844+ * @property DEFAULT_GETTER
3845+ * @static
3846+ */
3847+ Y.Anim.DEFAULT_GETTER = function(anim, prop) {
3848+ return anim._node.getComputedStyle(prop);
3849+ };
3850+
3851+ Y.Anim.ATTRS = {
3852+ /**
3853+ * The object to be animated.
3854+ * @attribute node
3855+ * @type Node
3856+ */
3857+ node: {
3858+ setter: function(node) {
3859+ node = Y.get(node);
3860+ this._node = node;
3861+ if (!node) {
3862+ }
3863+ return node;
3864+ }
3865+ },
3866+
3867+ /**
3868+ * The length of the animation. Defaults to "1" (second).
3869+ * @attribute duration
3870+ * @type NUM
3871+ */
3872+ duration: {
3873+ value: 1
3874+ },
3875+
3876+ /**
3877+ * The method that will provide values to the attribute(s) during the animation.
3878+ * Defaults to "Easing.easeNone".
3879+ * @attribute easing
3880+ * @type Function
3881+ */
3882+ easing: {
3883+ value: Y.Anim.DEFAULT_EASING,
3884+
3885+ setter: function(val) {
3886+ if (typeof val === 'string' && Y.Easing) {
3887+ return Y.Easing[val];
3888+ }
3889+ }
3890+ },
3891+
3892+ /**
3893+ * The starting values for the animated properties.
3894+ * Fields may be strings, numbers, or functions.
3895+ * If a function is used, the return value becomes the from value.
3896+ * If no from value is specified, the DEFAULT_GETTER will be used.
3897+ * @attribute from
3898+ * @type Object
3899+ */
3900+ from: {},
3901+
3902+ /**
3903+ * The ending values for the animated properties.
3904+ * Fields may be strings, numbers, or functions.
3905+ * @attribute to
3906+ * @type Object
3907+ */
3908+ to: {},
3909+
3910+ /**
3911+ * Date stamp for the first frame of the animation.
3912+ * @attribute startTime
3913+ * @type Int
3914+ * @default 0
3915+ * @readOnly
3916+ */
3917+ startTime: {
3918+ value: 0,
3919+ readOnly: true
3920+ },
3921+
3922+ /**
3923+ * Current time the animation has been running.
3924+ * @attribute elapsedTime
3925+ * @type Int
3926+ * @default 0
3927+ * @readOnly
3928+ */
3929+ elapsedTime: {
3930+ value: 0,
3931+ readOnly: true
3932+ },
3933+
3934+ /**
3935+ * Whether or not the animation is currently running.
3936+ * @attribute running
3937+ * @type Boolean
3938+ * @default false
3939+ * @readOnly
3940+ */
3941+ running: {
3942+ getter: function() {
3943+ return !!_running[Y.stamp(this)];
3944+ },
3945+ value: false,
3946+ readOnly: true
3947+ },
3948+
3949+ /**
3950+ * The number of times the animation should run
3951+ * @attribute iterations
3952+ * @type Int
3953+ * @default 1
3954+ */
3955+ iterations: {
3956+ value: 1
3957+ },
3958+
3959+ /**
3960+ * The number of iterations that have occurred.
3961+ * Resets when an animation ends (reaches iteration count or stop() called).
3962+ * @attribute iterationCount
3963+ * @type Int
3964+ * @default 0
3965+ * @readOnly
3966+ */
3967+ iterationCount: {
3968+ value: 0,
3969+ readOnly: true
3970+ },
3971+
3972+ /**
3973+ * How iterations of the animation should behave.
3974+ * Possible values are "normal" and "alternate".
3975+ * Normal will repeat the animation, alternate will reverse on every other pass.
3976+ *
3977+ * @attribute direction
3978+ * @type String
3979+ * @default "normal"
3980+ */
3981+ direction: {
3982+ value: 'normal' // | alternate (fwd on odd, rev on even per spec)
3983+ },
3984+
3985+ /**
3986+ * Whether or not the animation is currently paused.
3987+ * @attribute paused
3988+ * @type Boolean
3989+ * @default false
3990+ * @readOnly
3991+ */
3992+ paused: {
3993+ readOnly: true,
3994+ value: false
3995+ },
3996+
3997+ /**
3998+ * If true, animation begins from last frame
3999+ * @attribute reverse
4000+ * @type Boolean
4001+ * @default false
4002+ */
4003+ reverse: {
4004+ value: false
4005+ }
4006+
4007+
4008+ };
4009+
4010+ /**
4011+ * Runs all animation instances.
4012+ * @method run
4013+ * @static
4014+ */
4015+ Y.Anim.run = function() {
4016+ for (var i in _instances) {
4017+ if (_instances[i].run) {
4018+ _instances[i].run();
4019+ }
4020+ }
4021+ };
4022+
4023+ /**
4024+ * Pauses all animation instances.
4025+ * @method pause
4026+ * @static
4027+ */
4028+ Y.Anim.pause = function() {
4029+ for (var i in _running) { // stop timer if nothing running
4030+ if (_running[i].pause) {
4031+ _running[i].pause();
4032+ }
4033+ }
4034+ Y.Anim._stopTimer();
4035+ };
4036+
4037+ /**
4038+ * Stops all animation instances.
4039+ * @method stop
4040+ * @static
4041+ */
4042+ Y.Anim.stop = function() {
4043+ for (var i in _running) { // stop timer if nothing running
4044+ if (_running[i].stop) {
4045+ _running[i].stop();
4046+ }
4047+ }
4048+ Y.Anim._stopTimer();
4049+ };
4050+
4051+ Y.Anim._startTimer = function() {
4052+ if (!_timer) {
4053+ _timer = setInterval(Y.Anim._runFrame, 1);
4054+ }
4055+ };
4056+
4057+ Y.Anim._stopTimer = function() {
4058+ clearInterval(_timer);
4059+ _timer = 0;
4060+ };
4061+
4062+ /**
4063+ * Called per Interval to handle each animation frame.
4064+ * @method _runFrame
4065+ * @private
4066+ * @static
4067+ */
4068+ Y.Anim._runFrame = function() {
4069+ var done = true;
4070+ for (var anim in _running) {
4071+ if (_running[anim]._runFrame) {
4072+ done = false;
4073+ _running[anim]._runFrame();
4074+ }
4075+ }
4076+
4077+ if (done) {
4078+ Y.Anim._stopTimer();
4079+ }
4080+ };
4081+
4082+ Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
4083+
4084+ var proto = {
4085+ /**
4086+ * Starts or resumes an animation.
4087+ * percent start time marker.
4088+ * @method run
4089+ * @chainable
4090+ */
4091+ run: function() {
4092+ if (!this.get(RUNNING)) {
4093+ this._start();
4094+ } else if (this.get(PAUSED)) {
4095+ this._resume();
4096+ }
4097+ return this;
4098+ },
4099+
4100+ /**
4101+ * Pauses the animation and
4102+ * freezes it in its current state and time.
4103+ * Calling run() will continue where it left off.
4104+ * @method pause
4105+ * @chainable
4106+ */
4107+ pause: function() {
4108+ if (this.get(RUNNING)) {
4109+ this._pause();
4110+ }
4111+ return this;
4112+ },
4113+
4114+ /**
4115+ * Stops the animation and resets its time.
4116+ * @method stop
4117+ * @chainable
4118+ */
4119+ stop: function(finish) {
4120+ if (this.get(RUNNING) || this.get(PAUSED)) {
4121+ this._end(finish);
4122+ }
4123+ return this;
4124+ },
4125+
4126+ _added: false,
4127+
4128+ _start: function() {
4129+ this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
4130+ this._actualFrames = 0;
4131+ if (!this.get(PAUSED)) {
4132+ this._initAnimAttr();
4133+ }
4134+ _running[Y.stamp(this)] = this;
4135+ Y.Anim._startTimer();
4136+
4137+ this.fire(START);
4138+ },
4139+
4140+ _pause: function() {
4141+ this._set(START_TIME, null);
4142+ this._set(PAUSED, true);
4143+ delete _running[Y.stamp(this)];
4144+
4145+ /**
4146+ * @event pause
4147+ * @description fires when an animation is paused.
4148+ * @param {Event} ev The pause event.
4149+ * @type Event.Custom
4150+ */
4151+ this.fire('pause');
4152+ },
4153+
4154+ _resume: function() {
4155+ this._set(PAUSED, false);
4156+ _running[Y.stamp(this)] = this;
4157+
4158+ /**
4159+ * @event resume
4160+ * @description fires when an animation is resumed (run from pause).
4161+ * @param {Event} ev The pause event.
4162+ * @type Event.Custom
4163+ */
4164+ this.fire('resume');
4165+ },
4166+
4167+ _end: function(finish) {
4168+ this._set(START_TIME, null);
4169+ this._set(ELAPSED_TIME, 0);
4170+ this._set(PAUSED, false);
4171+
4172+ delete _running[Y.stamp(this)];
4173+ this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
4174+ },
4175+
4176+ _runFrame: function() {
4177+ var attr = this._runtimeAttr,
4178+ customAttr = Y.Anim.behaviors,
4179+ easing = attr.easing,
4180+ d = attr.duration,
4181+ t = new Date() - this.get(START_TIME),
4182+ reversed = this.get(REVERSE),
4183+ done = (t >= d),
4184+ lastFrame = d,
4185+ attribute,
4186+ setter;
4187+
4188+ if (reversed) {
4189+ t = d - t;
4190+ done = (t <= 0);
4191+ lastFrame = 0;
4192+ }
4193+
4194+ for (var i in attr) {
4195+ if (attr[i].to) {
4196+ attribute = attr[i];
4197+ setter = (i in customAttr && 'set' in customAttr[i]) ?
4198+ customAttr[i].set : Y.Anim.DEFAULT_SETTER;
4199+
4200+ if (!done) {
4201+ setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);
4202+ } else { // ensure final frame value is set
4203+ // TODO: handle keyframes
4204+ setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);
4205+ }
4206+ }
4207+ }
4208+
4209+ this._actualFrames += 1;
4210+ this._set(ELAPSED_TIME, t);
4211+
4212+ this.fire(TWEEN);
4213+ if (done) {
4214+ this._lastFrame();
4215+ }
4216+ },
4217+
4218+ _lastFrame: function() {
4219+ var iter = this.get('iterations'),
4220+ iterCount = this.get(ITERATION_COUNT);
4221+
4222+ iterCount += 1;
4223+ if (iter === 'infinite' || iterCount < iter) {
4224+ if (this.get('direction') === 'alternate') {
4225+ this.set(REVERSE, !this.get(REVERSE)); // flip it
4226+ }
4227+ /**
4228+ * @event iteration
4229+ * @description fires when an animation begins an iteration.
4230+ * @param {Event} ev The iteration event.
4231+ * @type Event.Custom
4232+ */
4233+ this.fire('iteration');
4234+ } else {
4235+ iterCount = 0;
4236+ this._end();
4237+ }
4238+
4239+ this._set(START_TIME, new Date());
4240+ this._set(ITERATION_COUNT, iterCount);
4241+ },
4242+
4243+ _initAnimAttr: function() {
4244+ var from = this.get('from') || {},
4245+ to = this.get('to') || {},
4246+ dur = this.get('duration') * 1000,
4247+ node = this.get(NODE),
4248+ easing = this.get('easing') || {},
4249+ attr = {},
4250+ customAttr = Y.Anim.behaviors,
4251+ unit, begin, end;
4252+
4253+ Y.each(to, function(val, name) {
4254+ if (typeof val === 'function') {
4255+ val = val.call(this, node);
4256+ }
4257+
4258+ begin = from[name];
4259+ if (begin === undefined) {
4260+ begin = (name in customAttr && 'get' in customAttr[name]) ?
4261+ customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
4262+ } else if (typeof begin === 'function') {
4263+ begin = begin.call(this, node);
4264+ }
4265+
4266+ var mFrom = Y.Anim.RE_UNITS.exec(begin);
4267+ var mTo = Y.Anim.RE_UNITS.exec(val);
4268+
4269+ begin = mFrom ? mFrom[1] : begin;
4270+ end = mTo ? mTo[1] : val;
4271+ unit = mTo ? mTo[2] : mFrom ? mFrom[2] : ''; // one might be zero TODO: mixed units
4272+
4273+ if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
4274+ unit = Y.Anim.DEFAULT_UNIT;
4275+ }
4276+
4277+ if (!begin || !end) {
4278+ Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
4279+ return;
4280+ }
4281+
4282+ attr[name] = {
4283+ from: begin,
4284+ to: end,
4285+ unit: unit
4286+ };
4287+
4288+ attr.duration = dur;
4289+ attr.easing = easing;
4290+
4291+ }, this);
4292+
4293+ this._runtimeAttr = attr;
4294+ },
4295+
4296+
4297+ // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
4298+ _getOffset: function(attr) {
4299+ var node = this._node,
4300+ val = node.getComputedStyle(attr),
4301+ get = (attr === 'left') ? 'getX': 'getY',
4302+ set = (attr === 'left') ? 'setX': 'setY';
4303+
4304+ if (val === 'auto') {
4305+ var position = node.getStyle('position');
4306+ if (position === 'absolute' || position === 'fixed') {
4307+ val = node[get]();
4308+ node[set](val);
4309+ } else {
4310+ val = 0;
4311+ }
4312+ }
4313+
4314+ return val;
4315+ }
4316+ };
4317+
4318+ Y.extend(Y.Anim, Y.Base, proto);
4319+
4320+
4321+}, '3.0.0' ,{requires:['base-base', 'node-style']});
4322+YUI.add('anim-color', function(Y) {
4323+
4324+/**
4325+ * Adds support for color properties in <code>to</code>
4326+ * and <code>from</code> attributes.
4327+ * @module anim
4328+ * @submodule anim-color
4329+ */
4330+
4331+var NUM = Number;
4332+
4333+Y.Anim.behaviors.color = {
4334+ set: function(anim, att, from, to, elapsed, duration, fn) {
4335+ from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
4336+ to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
4337+
4338+ if (!from || from.length < 3 || !to || to.length < 3) {
4339+ Y.error('invalid from or to passed to color behavior');
4340+ }
4341+
4342+ anim._node.setStyle(att, 'rgb(' + [
4343+ Math.floor(fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)),
4344+ Math.floor(fn(elapsed, NUM(from[2]), NUM(to[2]) - NUM(from[2]), duration)),
4345+ Math.floor(fn(elapsed, NUM(from[3]), NUM(to[3]) - NUM(from[3]), duration))
4346+ ].join(', ') + ')');
4347+ },
4348+
4349+ // TODO: default bgcolor const
4350+ get: function(anim, att) {
4351+ var val = anim._node.getComputedStyle(att);
4352+ val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
4353+ return val;
4354+ }
4355+};
4356+
4357+Y.each(['backgroundColor',
4358+ 'borderColor',
4359+ 'borderTopColor',
4360+ 'borderRightColor',
4361+ 'borderBottomColor',
4362+ 'borderLeftColor'],
4363+ function(v, i) {
4364+ Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
4365+ }
4366+);
4367+
4368+
4369+}, '3.0.0' ,{requires:['anim-base']});
4370+YUI.add('anim-curve', function(Y) {
4371+
4372+/**
4373+ * Adds support for the <code>curve</code> property for the <code>to</code>
4374+ * attribute. A curve is zero or more control points and an end point.
4375+ * @module anim
4376+ * @submodule anim-curve
4377+ */
4378+
4379+Y.Anim.behaviors.curve = {
4380+ set: function(anim, att, from, to, elapsed, duration, fn) {
4381+ from = from.slice.call(from);
4382+ to = to.slice.call(to);
4383+ var t = fn(elapsed, 0, 100, duration) / 100;
4384+ to.unshift(from);
4385+ anim._node.setXY(Y.Anim.getBezier(to, t));
4386+ },
4387+
4388+ get: function(anim, att) {
4389+ return anim._node.getXY();
4390+ }
4391+};
4392+
4393+/**
4394+ * Get the current position of the animated element based on t.
4395+ * Each point is an array of "x" and "y" values (0 = x, 1 = y)
4396+ * At least 2 points are required (start and end).
4397+ * First point is start. Last point is end.
4398+ * Additional control points are optional.
4399+ * @for Anim
4400+ * @method getBezier
4401+ * @static
4402+ * @param {Array} points An array containing Bezier points
4403+ * @param {Number} t A number between 0 and 1 which is the basis for determining current position
4404+ * @return {Array} An array containing int x and y member data
4405+ */
4406+Y.Anim.getBezier = function(points, t) {
4407+ var n = points.length;
4408+ var tmp = [];
4409+
4410+ for (var i = 0; i < n; ++i){
4411+ tmp[i] = [points[i][0], points[i][1]]; // save input
4412+ }
4413+
4414+ for (var j = 1; j < n; ++j) {
4415+ for (i = 0; i < n - j; ++i) {
4416+ tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
4417+ tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
4418+ }
4419+ }
4420+
4421+ return [ tmp[0][0], tmp[0][1] ];
4422+
4423+};
4424+
4425+
4426+}, '3.0.0' ,{requires:['anim-xy']});
4427+YUI.add('anim-easing', function(Y) {
4428+
4429+/*
4430+TERMS OF USE - EASING EQUATIONS
4431+Open source under the BSD License.
4432+Copyright 2001 Robert Penner All rights reserved.
4433+
4434+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4435+
4436+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
4437+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
4438+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
4439+
4440+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4441+*/
4442+
4443+/**
4444+ * The easing module provides methods for customizing
4445+ * how an animation behaves during each run.
4446+ * @class Easing
4447+ * @module anim
4448+ * @submodule anim-easing
4449+ */
4450+
4451+Y.Easing = {
4452+
4453+ /**
4454+ * Uniform speed between points.
4455+ * @for Easing
4456+ * @method easeNone
4457+ * @param {Number} t Time value used to compute current value
4458+ * @param {Number} b Starting value
4459+ * @param {Number} c Delta between start and end values
4460+ * @param {Number} d Total length of animation
4461+ * @return {Number} The computed value for the current animation frame
4462+ */
4463+ easeNone: function (t, b, c, d) {
4464+ return c*t/d + b;
4465+ },
4466+
4467+ /**
4468+ * Begins slowly and accelerates towards end. (quadratic)
4469+ * @method easeIn
4470+ * @param {Number} t Time value used to compute current value
4471+ * @param {Number} b Starting value
4472+ * @param {Number} c Delta between start and end values
4473+ * @param {Number} d Total length of animation
4474+ * @return {Number} The computed value for the current animation frame
4475+ */
4476+ easeIn: function (t, b, c, d) {
4477+ return c*(t/=d)*t + b;
4478+ },
4479+
4480+ /**
4481+ * Begins quickly and decelerates towards end. (quadratic)
4482+ * @method easeOut
4483+ * @param {Number} t Time value used to compute current value
4484+ * @param {Number} b Starting value
4485+ * @param {Number} c Delta between start and end values
4486+ * @param {Number} d Total length of animation
4487+ * @return {Number} The computed value for the current animation frame
4488+ */
4489+ easeOut: function (t, b, c, d) {
4490+ return -c *(t/=d)*(t-2) + b;
4491+ },
4492+
4493+ /**
4494+ * Begins slowly and decelerates towards end. (quadratic)
4495+ * @method easeBoth
4496+ * @param {Number} t Time value used to compute current value
4497+ * @param {Number} b Starting value
4498+ * @param {Number} c Delta between start and end values
4499+ * @param {Number} d Total length of animation
4500+ * @return {Number} The computed value for the current animation frame
4501+ */
4502+ easeBoth: function (t, b, c, d) {
4503+ if ((t/=d/2) < 1) {
4504+ return c/2*t*t + b;
4505+ }
4506+
4507+ return -c/2 * ((--t)*(t-2) - 1) + b;
4508+ },
4509+
4510+ /**
4511+ * Begins slowly and accelerates towards end. (quartic)
4512+ * @method easeInStrong
4513+ * @param {Number} t Time value used to compute current value
4514+ * @param {Number} b Starting value
4515+ * @param {Number} c Delta between start and end values
4516+ * @param {Number} d Total length of animation
4517+ * @return {Number} The computed value for the current animation frame
4518+ */
4519+ easeInStrong: function (t, b, c, d) {
4520+ return c*(t/=d)*t*t*t + b;
4521+ },
4522+
4523+ /**
4524+ * Begins quickly and decelerates towards end. (quartic)
4525+ * @method easeOutStrong
4526+ * @param {Number} t Time value used to compute current value
4527+ * @param {Number} b Starting value
4528+ * @param {Number} c Delta between start and end values
4529+ * @param {Number} d Total length of animation
4530+ * @return {Number} The computed value for the current animation frame
4531+ */
4532+ easeOutStrong: function (t, b, c, d) {
4533+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
4534+ },
4535+
4536+ /**
4537+ * Begins slowly and decelerates towards end. (quartic)
4538+ * @method easeBothStrong
4539+ * @param {Number} t Time value used to compute current value
4540+ * @param {Number} b Starting value
4541+ * @param {Number} c Delta between start and end values
4542+ * @param {Number} d Total length of animation
4543+ * @return {Number} The computed value for the current animation frame
4544+ */
4545+ easeBothStrong: function (t, b, c, d) {
4546+ if ((t/=d/2) < 1) {
4547+ return c/2*t*t*t*t + b;
4548+ }
4549+
4550+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
4551+ },
4552+
4553+ /**
4554+ * Snap in elastic effect.
4555+ * @method elasticIn
4556+ * @param {Number} t Time value used to compute current value
4557+ * @param {Number} b Starting value
4558+ * @param {Number} c Delta between start and end values
4559+ * @param {Number} d Total length of animation
4560+ * @param {Number} a Amplitude (optional)
4561+ * @param {Number} p Period (optional)
4562+ * @return {Number} The computed value for the current animation frame
4563+ */
4564+
4565+ elasticIn: function (t, b, c, d, a, p) {
4566+ var s;
4567+ if (t === 0) {
4568+ return b;
4569+ }
4570+ if ( (t /= d) === 1 ) {
4571+ return b+c;
4572+ }
4573+ if (!p) {
4574+ p = d* 0.3;
4575+ }
4576+
4577+ if (!a || a < Math.abs(c)) {
4578+ a = c;
4579+ s = p/4;
4580+ }
4581+ else {
4582+ s = p/(2*Math.PI) * Math.asin (c/a);
4583+ }
4584+
4585+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
4586+ },
4587+
4588+ /**
4589+ * Snap out elastic effect.
4590+ * @method elasticOut
4591+ * @param {Number} t Time value used to compute current value
4592+ * @param {Number} b Starting value
4593+ * @param {Number} c Delta between start and end values
4594+ * @param {Number} d Total length of animation
4595+ * @param {Number} a Amplitude (optional)
4596+ * @param {Number} p Period (optional)
4597+ * @return {Number} The computed value for the current animation frame
4598+ */
4599+ elasticOut: function (t, b, c, d, a, p) {
4600+ var s;
4601+ if (t === 0) {
4602+ return b;
4603+ }
4604+ if ( (t /= d) === 1 ) {
4605+ return b+c;
4606+ }
4607+ if (!p) {
4608+ p=d * 0.3;
4609+ }
4610+
4611+ if (!a || a < Math.abs(c)) {
4612+ a = c;
4613+ s = p / 4;
4614+ }
4615+ else {
4616+ s = p/(2*Math.PI) * Math.asin (c/a);
4617+ }
4618+
4619+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
4620+ },
4621+
4622+ /**
4623+ * Snap both elastic effect.
4624+ * @method elasticBoth
4625+ * @param {Number} t Time value used to compute current value
4626+ * @param {Number} b Starting value
4627+ * @param {Number} c Delta between start and end values
4628+ * @param {Number} d Total length of animation
4629+ * @param {Number} a Amplitude (optional)
4630+ * @param {Number} p Period (optional)
4631+ * @return {Number} The computed value for the current animation frame
4632+ */
4633+ elasticBoth: function (t, b, c, d, a, p) {
4634+ var s;
4635+ if (t === 0) {
4636+ return b;
4637+ }
4638+
4639+ if ( (t /= d/2) === 2 ) {
4640+ return b+c;
4641+ }
4642+
4643+ if (!p) {
4644+ p = d*(0.3*1.5);
4645+ }
4646+
4647+ if ( !a || a < Math.abs(c) ) {
4648+ a = c;
4649+ s = p/4;
4650+ }
4651+ else {
4652+ s = p/(2*Math.PI) * Math.asin (c/a);
4653+ }
4654+
4655+ if (t < 1) {
4656+ return -0.5*(a*Math.pow(2,10*(t-=1)) *
4657+ Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
4658+ }
4659+ return a*Math.pow(2,-10*(t-=1)) *
4660+ Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
4661+ },
4662+
4663+
4664+ /**
4665+ * Backtracks slightly, then reverses direction and moves to end.
4666+ * @method backIn
4667+ * @param {Number} t Time value used to compute current value
4668+ * @param {Number} b Starting value
4669+ * @param {Number} c Delta between start and end values
4670+ * @param {Number} d Total length of animation
4671+ * @param {Number} s Overshoot (optional)
4672+ * @return {Number} The computed value for the current animation frame
4673+ */
4674+ backIn: function (t, b, c, d, s) {
4675+ if (s === undefined) {
4676+ s = 1.70158;
4677+ }
4678+ if (t === d) {
4679+ t -= 0.001;
4680+ }
4681+ return c*(t/=d)*t*((s+1)*t - s) + b;
4682+ },
4683+
4684+ /**
4685+ * Overshoots end, then reverses and comes back to end.
4686+ * @method backOut
4687+ * @param {Number} t Time value used to compute current value
4688+ * @param {Number} b Starting value
4689+ * @param {Number} c Delta between start and end values
4690+ * @param {Number} d Total length of animation
4691+ * @param {Number} s Overshoot (optional)
4692+ * @return {Number} The computed value for the current animation frame
4693+ */
4694+ backOut: function (t, b, c, d, s) {
4695+ if (typeof s === 'undefined') {
4696+ s = 1.70158;
4697+ }
4698+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
4699+ },
4700+
4701+ /**
4702+ * Backtracks slightly, then reverses direction, overshoots end,
4703+ * then reverses and comes back to end.
4704+ * @method backBoth
4705+ * @param {Number} t Time value used to compute current value
4706+ * @param {Number} b Starting value
4707+ * @param {Number} c Delta between start and end values
4708+ * @param {Number} d Total length of animation
4709+ * @param {Number} s Overshoot (optional)
4710+ * @return {Number} The computed value for the current animation frame
4711+ */
4712+ backBoth: function (t, b, c, d, s) {
4713+ if (typeof s === 'undefined') {
4714+ s = 1.70158;
4715+ }
4716+
4717+ if ((t /= d/2 ) < 1) {
4718+ return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
4719+ }
4720+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
4721+ },
4722+
4723+ /**
4724+ * Bounce off of start.
4725+ * @method bounceIn
4726+ * @param {Number} t Time value used to compute current value
4727+ * @param {Number} b Starting value
4728+ * @param {Number} c Delta between start and end values
4729+ * @param {Number} d Total length of animation
4730+ * @return {Number} The computed value for the current animation frame
4731+ */
4732+ bounceIn: function (t, b, c, d) {
4733+ return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
4734+ },
4735+
4736+ /**
4737+ * Bounces off end.
4738+ * @method bounceOut
4739+ * @param {Number} t Time value used to compute current value
4740+ * @param {Number} b Starting value
4741+ * @param {Number} c Delta between start and end values
4742+ * @param {Number} d Total length of animation
4743+ * @return {Number} The computed value for the current animation frame
4744+ */
4745+ bounceOut: function (t, b, c, d) {
4746+ if ((t/=d) < (1/2.75)) {
4747+ return c*(7.5625*t*t) + b;
4748+ } else if (t < (2/2.75)) {
4749+ return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
4750+ } else if (t < (2.5/2.75)) {
4751+ return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
4752+ }
4753+ return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
4754+ },
4755+
4756+ /**
4757+ * Bounces off start and end.
4758+ * @method bounceBoth
4759+ * @param {Number} t Time value used to compute current value
4760+ * @param {Number} b Starting value
4761+ * @param {Number} c Delta between start and end values
4762+ * @param {Number} d Total length of animation
4763+ * @return {Number} The computed value for the current animation frame
4764+ */
4765+ bounceBoth: function (t, b, c, d) {
4766+ if (t < d/2) {
4767+ return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
4768+ }
4769+ return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
4770+ }
4771+};
4772+
4773+
4774+}, '3.0.0' ,{requires:['anim-base']});
4775+YUI.add('anim-node-plugin', function(Y) {
4776+
4777+/**
4778+ * Binds an Anim instance to a Node instance
4779+ * @module anim
4780+ * @class Plugin.NodeFX
4781+ * @extends Base
4782+ * @submodule anim-node-plugin
4783+ */
4784+
4785+var NodeFX = function(config) {
4786+ config = (config) ? Y.merge(config) : {};
4787+ config.node = config.host;
4788+ NodeFX.superclass.constructor.apply(this, arguments);
4789+};
4790+
4791+NodeFX.NAME = "nodefx";
4792+NodeFX.NS = "fx";
4793+
4794+Y.extend(NodeFX, Y.Anim);
4795+
4796+Y.namespace('Plugin');
4797+Y.Plugin.NodeFX = NodeFX;
4798+
4799+
4800+}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
4801+YUI.add('anim-scroll', function(Y) {
4802+
4803+/**
4804+ * Adds support for the <code>scroll</code> property in <code>to</code>
4805+ * and <code>from</code> attributes.
4806+ * @module anim
4807+ * @submodule anim-scroll
4808+ */
4809+
4810+var NUM = Number;
4811+
4812+//TODO: deprecate for scrollTop/Left properties?
4813+Y.Anim.behaviors.scroll = {
4814+ set: function(anim, att, from, to, elapsed, duration, fn) {
4815+ var
4816+ node = anim._node,
4817+ val = ([
4818+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
4819+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
4820+ ]);
4821+
4822+ if (val[0]) {
4823+ node.set('scrollLeft', val[0]);
4824+ }
4825+
4826+ if (val[1]) {
4827+ node.set('scrollTop', val[1]);
4828+ }
4829+ },
4830+ get: function(anim) {
4831+ var node = anim._node;
4832+ return [node.get('scrollLeft'), node.get('scrollTop')];
4833+ }
4834+};
4835+
4836+
4837+
4838+}, '3.0.0' ,{requires:['anim-base']});
4839+YUI.add('anim-xy', function(Y) {
4840+
4841+/**
4842+ * Adds support for the <code>xy</code> property in <code>from</code> and
4843+ * <code>to</code> attributes.
4844+ * @module anim
4845+ * @submodule anim-xy
4846+ */
4847+
4848+var NUM = Number;
4849+
4850+Y.Anim.behaviors.xy = {
4851+ set: function(anim, att, from, to, elapsed, duration, fn) {
4852+ anim._node.setXY([
4853+ fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
4854+ fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
4855+ ]);
4856+ },
4857+ get: function(anim) {
4858+ return anim._node.getXY();
4859+ }
4860+};
4861+
4862+
4863+
4864+}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
4865+
4866+
4867+YUI.add('anim', function(Y){}, '3.0.0' ,{use:['anim-base', 'anim-color', 'anim-curve', 'anim-easing', 'anim-node-plugin', 'anim-scroll', 'anim-xy'], skinnable:false});
4868+
4869
4870=== added directory 'identityprovider/media/lazr-js/assets'
4871=== added directory 'identityprovider/media/lazr-js/assets/skins'
4872=== added directory 'identityprovider/media/lazr-js/assets/skins/sam'
4873=== added file 'identityprovider/media/lazr-js/assets/skins/sam/bg.png'
4874Binary files identityprovider/media/lazr-js/assets/skins/sam/bg.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/bg.png 2010-06-15 01:37:25 +0000 differ
4875=== added file 'identityprovider/media/lazr-js/assets/skins/sam/console-filters.css'
4876--- identityprovider/media/lazr-js/assets/skins/sam/console-filters.css 1970-01-01 00:00:00 +0000
4877+++ identityprovider/media/lazr-js/assets/skins/sam/console-filters.css 2010-06-15 01:37:25 +0000
4878@@ -0,0 +1,8 @@
4879+/*
4880+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4881+Code licensed under the BSD License:
4882+http://developer.yahoo.net/yui/license.txt
4883+version: 3.0.0
4884+build: 1549
4885+*/
4886+.yui-skin-sam .yui-console-ft .yui-console-filters-categories,.yui-skin-sam .yui-console-ft .yui-console-filters-sources{text-align:left;padding:5px 0;border:1px inset;margin:0 2px;}.yui-skin-sam .yui-console-ft .yui-console-filters-categories{background:#fff;border-bottom:2px ridge;}.yui-skin-sam .yui-console-ft .yui-console-filters-sources{background:#fff;margin-bottom:2px;border-top:0 none;border-bottom-right-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-webkit-border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;}.yui-skin-sam .yui-console-filter-label{white-space:nowrap;margin-left:1ex;}
4887
4888=== added file 'identityprovider/media/lazr-js/assets/skins/sam/console.css'
4889--- identityprovider/media/lazr-js/assets/skins/sam/console.css 1970-01-01 00:00:00 +0000
4890+++ identityprovider/media/lazr-js/assets/skins/sam/console.css 2010-06-15 01:37:25 +0000
4891@@ -0,0 +1,8 @@
4892+/*
4893+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4894+Code licensed under the BSD License:
4895+http://developer.yahoo.net/yui/license.txt
4896+version: 3.0.0
4897+build: 1549
4898+*/
4899+.yui-skin-sam .yui-separate-console{position:absolute;right:1em;top:1em;z-index:999;}.yui-skin-sam .yui-inline-console{display:-moz-inline-stack;display:inline-block;*display:inline;zoom:1;vertical-align:top;}.yui-skin-sam .yui-inline-console .yui-console-content{position:relative;}.yui-skin-sam .yui-console-content{background:#777;_background:#D8D8DA url(bg.png) repeat-x 0 0;font:normal 13px/1.3 Arial,sans-serif;text-align:left;border:1px solid #777;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;}.yui-skin-sam .yui-console-hd,.yui-skin-sam .yui-console-bd,.yui-skin-sam .yui-console-ft{position:relative;}.yui-skin-sam .yui-console-hd,.yui-skin-sam .yui-console-ft .yui-console-controls{text-align:right;}.yui-skin-sam .yui-console-hd{background:#D8D8DA url(bg.png) repeat-x 0 0;padding:1ex;border:1px solid transparent;_border:0 none;border-top-right-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;-webkit-border-top-right-radius:10px;-webkit-border-top-left-radius:10px;}.yui-skin-sam .yui-console-bd{background:#fff;border-top:1px solid #777;border-bottom:1px solid #777;color:#000;font-size:11px;overflow:auto;overflow-x:auto;overflow-y:scroll;_width:100%;}.yui-skin-sam .yui-console-ft{background:#D8D8DA url(bg.png) repeat-x 0 0;border:1px solid transparent;_border:0 none;border-bottom-right-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-webkit-border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;}.yui-skin-sam .yui-console-controls{padding:4px 1ex;zoom:1;}.yui-skin-sam .yui-console-title{color:#000;display:inline;float:left;font-weight:bold;font-size:13px;height:24px;line-height:24px;margin:0;padding-left:1ex;}.yui-skin-sam .yui-console-pause-label{float:left;}.yui-skin-sam .yui-console-button{line-height:1.3;}.yui-skin-sam .yui-console-collapsed .yui-console-bd,.yui-skin-sam .yui-console-collapsed .yui-console-ft{display:none;}.yui-skin-sam .yui-console-content.yui-console-collapsed{-webkit-border-radius:0;}.yui-skin-sam .yui-console-collapsed .yui-console-hd{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:0;}.yui-skin-sam .yui-console-entry{border-bottom:1px solid #aaa;min-height:32px;_height:32px;}.yui-skin-sam .yui-console-entry-meta{margin:0;overflow:hidden;}.yui-skin-sam .yui-console-entry-content{margin:0;padding:0 1ex;white-space:pre-wrap;word-wrap:break-word;}.yui-skin-sam .yui-console-entry-meta .yui-console-entry-src{color:#000;font-style:italic;font-weight:bold;float:right;margin:2px 5px 0 0;}.yui-skin-sam .yui-console-entry-meta .yui-console-entry-time{color:#777;padding-left:1ex;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-meta .yui-console-entry-time{color:#555;}.yui-skin-sam .yui-console-entry-info .yui-console-entry-meta .yui-console-entry-cat,.yui-skin-sam .yui-console-entry-warn .yui-console-entry-meta .yui-console-entry-cat,.yui-skin-sam .yui-console-entry-error .yui-console-entry-meta .yui-console-entry-cat{display:none;}.yui-skin-sam .yui-console-entry-warn{background:#aee url(warn_error.png) no-repeat -15px 15px;}.yui-skin-sam .yui-console-entry-error{background:#ffa url(warn_error.png) no-repeat 5px -24px;color:#900;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-content,.yui-skin-sam .yui-console-entry-error .yui-console-entry-content{padding-left:24px;}.yui-skin-sam .yui-console-entry-cat{text-transform:uppercase;padding:1px 4px;background-color:#ccc;}.yui-skin-sam .yui-console-entry-info .yui-console-entry-cat{background-color:#ac2;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-cat{background-color:#e81;}.yui-skin-sam .yui-console-entry-error .yui-console-entry-cat{background-color:#b00;color:#fff;}.yui-skin-sam .yui-console-hidden{display:none;}
4900
4901=== added file 'identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-indicator.png'
4902Binary files identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-indicator.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-indicator.png 2010-06-15 01:37:25 +0000 differ
4903=== added file 'identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-toggle.png'
4904Binary files identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-toggle.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/horizontal-menu-submenu-toggle.png 2010-06-15 01:37:25 +0000 differ
4905=== added file 'identityprovider/media/lazr-js/assets/skins/sam/node-menunav.css'
4906--- identityprovider/media/lazr-js/assets/skins/sam/node-menunav.css 1970-01-01 00:00:00 +0000
4907+++ identityprovider/media/lazr-js/assets/skins/sam/node-menunav.css 2010-06-15 01:37:25 +0000
4908@@ -0,0 +1,8 @@
4909+/*
4910+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4911+Code licensed under the BSD License:
4912+http://developer.yahoo.net/yui/license.txt
4913+version: 3.0.0
4914+build: 1549
4915+*/
4916+.yui-menu .yui-menu{position:absolute;z-index:1;}.yui-menu .yui-shim{position:absolute;top:0;left:0;z-index:-1;opacity:0;filter:alpha(opacity=0);border:none;margin:0;padding:0;height:100%;width:100%;}.yui-menu-hidden{top:-10000px;left:-10000px;visibility:hidden;}.yui-menu li{list-style-type:none;}.yui-menu ul,.yui-menu li{margin:0;padding:0;}.yui-menu-label,.yui-menuitem-content{text-align:left;white-space:nowrap;display:block;}.yui-menu-horizontal li{float:left;width:auto;}.yui-menu-horizontal li li{float:none;}.yui-menu-horizontal ul{*zoom:1;}.yui-menu-horizontal ul ul{*zoom:normal;}.yui-menu-horizontal>.yui-menu-content>ul:after{content:"";display:block;clear:both;line-height:0;font-size:0;visibility:hidden;}.yui-menu-content{*zoom:1;}.yui-menu-hidden .yui-menu-content{*zoom:normal;}.yui-menuitem-content,.yui-menu-label{_zoom:1;}.yui-menu-hiden .yui-menuitem-content,.yui-menu-hiden .yui-menu-label{_zoom:normal;}.yui-skin-sam .yui-menu-content,.yui-skin-sam .yui-menu .yui-menu .yui-menu-content{font-size:93%;line-height:1.5;*line-height:1.45;border:solid 1px #808080;background:#fff;padding:3px 0;}.yui-skin-sam .yui-menu .yui-menu .yui-menu-content{font-size:100%;}.yui-skin-sam .yui-menu-horizontal .yui-menu-content{line-height:2;*line-height:1.9;background:url(sprite.png) repeat-x 0 0;padding:0;}.yui-skin-sam .yui-menu ul,.yui-skin-sam .yui-menu ul ul{margin-top:3px;padding-top:3px;border-top:solid 1px #ccc;}.yui-skin-sam .yui-menu ul.first-of-type{border:0;margin:0;padding:0;}.yui-skin-sam .yui-menu-horizontal ul{padding:0;margin:0;border:0;}.yui-skin-sam .yui-menu li,.yui-skin-sam .yui-menu .yui-menu li{_border-bottom:solid 1px #fff;}.yui-skin-sam .yui-menu-horizontal li{_border-bottom:0;}.yui-skin-sam .yui-menubuttonnav li{border-right:solid 1px #ccc;}.yui-skin-sam .yui-splitbuttonnav li{border-right:solid 1px #808080;}.yui-skin-sam .yui-menubuttonnav li li,.yui-skin-sam .yui-splitbuttonnav li li{border-right:0;}.yui-skin-sam .yui-menu-label,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label,.yui-skin-sam .yui-menuitem-content,.yui-skin-sam .yui-menu .yui-menu .yui-menuitem-content{padding:0 20px;color:#000;text-decoration:none;cursor:default;float:none;border:0;margin:0;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label,.yui-skin-sam .yui-menu-horizontal .yui-menuitem-content{padding:0 10px;border-style:solid;border-color:#808080;border-width:1px 0;margin:-1px 0;float:left;width:auto;}.yui-skin-sam .yui-menu-label,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label{background:url(vertical-menu-submenu-indicator.png) right center no-repeat;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label{background:url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label{background-image:none;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label{padding-right:0;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label em{font-style:normal;padding-right:20px;display:block;background:url(horizontal-menu-submenu-indicator.png) right center no-repeat;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label{padding:0;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label a{float:left;width:auto;color:#000;text-decoration:none;cursor:default;padding:0 5px 0 10px;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label .yui-menu-toggle{padding:0;border-left:solid 1px #ccc;width:15px;overflow:hidden;text-indent:-1000px;background:url(horizontal-menu-submenu-indicator.png) 3px center no-repeat;}.yui-skin-sam .yui-menu-label-active,.yui-skin-sam .yui-menu-label-menuvisible,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label-active,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label-menuvisible{background-color:#B3D4FF;}.yui-skin-sam .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menu .yui-menu .yui-menuitem-active .yui-menuitem-content{background-image:none;background-color:#B3D4FF;border-left-width:0;margin-left:0;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label-active,.yui-skin-sam .yui-menu-horizontal .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menu-horizontal .yui-menu-label-menuvisible{border-color:#7D98B8;background:url(sprite.png) repeat-x 0 -1700px;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label-active,.yui-skin-sam .yui-menubuttonnav .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menubuttonnav .yui-menu-label-menuvisible,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-active,.yui-skin-sam .yui-splitbuttonnav .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible{border-left-width:1px;margin-left:-1px;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible{border-color:#808080;background:transparent;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible .yui-menu-toggle{border-color:#7D98B8;background:url(horizontal-menu-submenu-toggle.png) left center no-repeat;}
4917
4918=== added file 'identityprovider/media/lazr-js/assets/skins/sam/overlay.css'
4919--- identityprovider/media/lazr-js/assets/skins/sam/overlay.css 1970-01-01 00:00:00 +0000
4920+++ identityprovider/media/lazr-js/assets/skins/sam/overlay.css 2010-06-15 01:37:25 +0000
4921@@ -0,0 +1,8 @@
4922+/*
4923+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4924+Code licensed under the BSD License:
4925+http://developer.yahoo.net/yui/license.txt
4926+version: 3.0.0
4927+build: 1549
4928+*/
4929+.yui-overlay{position:absolute;}.yui-overlay-hidden{visibility:hidden;}
4930
4931=== added file 'identityprovider/media/lazr-js/assets/skins/sam/rail-classic-x.png'
4932Binary files identityprovider/media/lazr-js/assets/skins/sam/rail-classic-x.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/rail-classic-x.png 2010-06-15 01:37:25 +0000 differ
4933=== added file 'identityprovider/media/lazr-js/assets/skins/sam/rail-classic-y.png'
4934Binary files identityprovider/media/lazr-js/assets/skins/sam/rail-classic-y.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/rail-classic-y.png 2010-06-15 01:37:25 +0000 differ
4935=== added file 'identityprovider/media/lazr-js/assets/skins/sam/skin.css'
4936--- identityprovider/media/lazr-js/assets/skins/sam/skin.css 1970-01-01 00:00:00 +0000
4937+++ identityprovider/media/lazr-js/assets/skins/sam/skin.css 2010-06-15 01:37:25 +0000
4938@@ -0,0 +1,14 @@
4939+/*
4940+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4941+Code licensed under the BSD License:
4942+http://developer.yahoo.net/yui/license.txt
4943+version: 3.0.0
4944+build: 1549
4945+*/
4946+.yui-skin-sam .yui-console-ft .yui-console-filters-categories,.yui-skin-sam .yui-console-ft .yui-console-filters-sources{text-align:left;padding:5px 0;border:1px inset;margin:0 2px;}.yui-skin-sam .yui-console-ft .yui-console-filters-categories{background:#fff;border-bottom:2px ridge;}.yui-skin-sam .yui-console-ft .yui-console-filters-sources{background:#fff;margin-bottom:2px;border-top:0 none;border-bottom-right-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-webkit-border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;}.yui-skin-sam .yui-console-filter-label{white-space:nowrap;margin-left:1ex;}
4947+.yui-skin-sam .yui-separate-console{position:absolute;right:1em;top:1em;z-index:999;}.yui-skin-sam .yui-inline-console{display:-moz-inline-stack;display:inline-block;*display:inline;zoom:1;vertical-align:top;}.yui-skin-sam .yui-inline-console .yui-console-content{position:relative;}.yui-skin-sam .yui-console-content{background:#777;_background:#D8D8DA url(bg.png) repeat-x 0 0;font:normal 13px/1.3 Arial,sans-serif;text-align:left;border:1px solid #777;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;}.yui-skin-sam .yui-console-hd,.yui-skin-sam .yui-console-bd,.yui-skin-sam .yui-console-ft{position:relative;}.yui-skin-sam .yui-console-hd,.yui-skin-sam .yui-console-ft .yui-console-controls{text-align:right;}.yui-skin-sam .yui-console-hd{background:#D8D8DA url(bg.png) repeat-x 0 0;padding:1ex;border:1px solid transparent;_border:0 none;border-top-right-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;-webkit-border-top-right-radius:10px;-webkit-border-top-left-radius:10px;}.yui-skin-sam .yui-console-bd{background:#fff;border-top:1px solid #777;border-bottom:1px solid #777;color:#000;font-size:11px;overflow:auto;overflow-x:auto;overflow-y:scroll;_width:100%;}.yui-skin-sam .yui-console-ft{background:#D8D8DA url(bg.png) repeat-x 0 0;border:1px solid transparent;_border:0 none;border-bottom-right-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-webkit-border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;}.yui-skin-sam .yui-console-controls{padding:4px 1ex;zoom:1;}.yui-skin-sam .yui-console-title{color:#000;display:inline;float:left;font-weight:bold;font-size:13px;height:24px;line-height:24px;margin:0;padding-left:1ex;}.yui-skin-sam .yui-console-pause-label{float:left;}.yui-skin-sam .yui-console-button{line-height:1.3;}.yui-skin-sam .yui-console-collapsed .yui-console-bd,.yui-skin-sam .yui-console-collapsed .yui-console-ft{display:none;}.yui-skin-sam .yui-console-content.yui-console-collapsed{-webkit-border-radius:0;}.yui-skin-sam .yui-console-collapsed .yui-console-hd{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:0;}.yui-skin-sam .yui-console-entry{border-bottom:1px solid #aaa;min-height:32px;_height:32px;}.yui-skin-sam .yui-console-entry-meta{margin:0;overflow:hidden;}.yui-skin-sam .yui-console-entry-content{margin:0;padding:0 1ex;white-space:pre-wrap;word-wrap:break-word;}.yui-skin-sam .yui-console-entry-meta .yui-console-entry-src{color:#000;font-style:italic;font-weight:bold;float:right;margin:2px 5px 0 0;}.yui-skin-sam .yui-console-entry-meta .yui-console-entry-time{color:#777;padding-left:1ex;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-meta .yui-console-entry-time{color:#555;}.yui-skin-sam .yui-console-entry-info .yui-console-entry-meta .yui-console-entry-cat,.yui-skin-sam .yui-console-entry-warn .yui-console-entry-meta .yui-console-entry-cat,.yui-skin-sam .yui-console-entry-error .yui-console-entry-meta .yui-console-entry-cat{display:none;}.yui-skin-sam .yui-console-entry-warn{background:#aee url(warn_error.png) no-repeat -15px 15px;}.yui-skin-sam .yui-console-entry-error{background:#ffa url(warn_error.png) no-repeat 5px -24px;color:#900;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-content,.yui-skin-sam .yui-console-entry-error .yui-console-entry-content{padding-left:24px;}.yui-skin-sam .yui-console-entry-cat{text-transform:uppercase;padding:1px 4px;background-color:#ccc;}.yui-skin-sam .yui-console-entry-info .yui-console-entry-cat{background-color:#ac2;}.yui-skin-sam .yui-console-entry-warn .yui-console-entry-cat{background-color:#e81;}.yui-skin-sam .yui-console-entry-error .yui-console-entry-cat{background-color:#b00;color:#fff;}.yui-skin-sam .yui-console-hidden{display:none;}
4948+.yui-menu .yui-menu{position:absolute;z-index:1;}.yui-menu .yui-shim{position:absolute;top:0;left:0;z-index:-1;opacity:0;filter:alpha(opacity=0);border:none;margin:0;padding:0;height:100%;width:100%;}.yui-menu-hidden{top:-10000px;left:-10000px;visibility:hidden;}.yui-menu li{list-style-type:none;}.yui-menu ul,.yui-menu li{margin:0;padding:0;}.yui-menu-label,.yui-menuitem-content{text-align:left;white-space:nowrap;display:block;}.yui-menu-horizontal li{float:left;width:auto;}.yui-menu-horizontal li li{float:none;}.yui-menu-horizontal ul{*zoom:1;}.yui-menu-horizontal ul ul{*zoom:normal;}.yui-menu-horizontal>.yui-menu-content>ul:after{content:"";display:block;clear:both;line-height:0;font-size:0;visibility:hidden;}.yui-menu-content{*zoom:1;}.yui-menu-hidden .yui-menu-content{*zoom:normal;}.yui-menuitem-content,.yui-menu-label{_zoom:1;}.yui-menu-hiden .yui-menuitem-content,.yui-menu-hiden .yui-menu-label{_zoom:normal;}.yui-skin-sam .yui-menu-content,.yui-skin-sam .yui-menu .yui-menu .yui-menu-content{font-size:93%;line-height:1.5;*line-height:1.45;border:solid 1px #808080;background:#fff;padding:3px 0;}.yui-skin-sam .yui-menu .yui-menu .yui-menu-content{font-size:100%;}.yui-skin-sam .yui-menu-horizontal .yui-menu-content{line-height:2;*line-height:1.9;background:url(sprite.png) repeat-x 0 0;padding:0;}.yui-skin-sam .yui-menu ul,.yui-skin-sam .yui-menu ul ul{margin-top:3px;padding-top:3px;border-top:solid 1px #ccc;}.yui-skin-sam .yui-menu ul.first-of-type{border:0;margin:0;padding:0;}.yui-skin-sam .yui-menu-horizontal ul{padding:0;margin:0;border:0;}.yui-skin-sam .yui-menu li,.yui-skin-sam .yui-menu .yui-menu li{_border-bottom:solid 1px #fff;}.yui-skin-sam .yui-menu-horizontal li{_border-bottom:0;}.yui-skin-sam .yui-menubuttonnav li{border-right:solid 1px #ccc;}.yui-skin-sam .yui-splitbuttonnav li{border-right:solid 1px #808080;}.yui-skin-sam .yui-menubuttonnav li li,.yui-skin-sam .yui-splitbuttonnav li li{border-right:0;}.yui-skin-sam .yui-menu-label,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label,.yui-skin-sam .yui-menuitem-content,.yui-skin-sam .yui-menu .yui-menu .yui-menuitem-content{padding:0 20px;color:#000;text-decoration:none;cursor:default;float:none;border:0;margin:0;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label,.yui-skin-sam .yui-menu-horizontal .yui-menuitem-content{padding:0 10px;border-style:solid;border-color:#808080;border-width:1px 0;margin:-1px 0;float:left;width:auto;}.yui-skin-sam .yui-menu-label,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label{background:url(vertical-menu-submenu-indicator.png) right center no-repeat;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label{background:url(sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label{background-image:none;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label{padding-right:0;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label em{font-style:normal;padding-right:20px;display:block;background:url(horizontal-menu-submenu-indicator.png) right center no-repeat;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label{padding:0;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label a{float:left;width:auto;color:#000;text-decoration:none;cursor:default;padding:0 5px 0 10px;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label .yui-menu-toggle{padding:0;border-left:solid 1px #ccc;width:15px;overflow:hidden;text-indent:-1000px;background:url(horizontal-menu-submenu-indicator.png) 3px center no-repeat;}.yui-skin-sam .yui-menu-label-active,.yui-skin-sam .yui-menu-label-menuvisible,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label-active,.yui-skin-sam .yui-menu .yui-menu .yui-menu-label-menuvisible{background-color:#B3D4FF;}.yui-skin-sam .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menu .yui-menu .yui-menuitem-active .yui-menuitem-content{background-image:none;background-color:#B3D4FF;border-left-width:0;margin-left:0;}.yui-skin-sam .yui-menu-horizontal .yui-menu-label-active,.yui-skin-sam .yui-menu-horizontal .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menu-horizontal .yui-menu-label-menuvisible{border-color:#7D98B8;background:url(sprite.png) repeat-x 0 -1700px;}.yui-skin-sam .yui-menubuttonnav .yui-menu-label-active,.yui-skin-sam .yui-menubuttonnav .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-menubuttonnav .yui-menu-label-menuvisible,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-active,.yui-skin-sam .yui-splitbuttonnav .yui-menuitem-active .yui-menuitem-content,.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible{border-left-width:1px;margin-left:-1px;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible{border-color:#808080;background:transparent;}.yui-skin-sam .yui-splitbuttonnav .yui-menu-label-menuvisible .yui-menu-toggle{border-color:#7D98B8;background:url(horizontal-menu-submenu-toggle.png) left center no-repeat;}
4949+.yui-overlay{position:absolute;}.yui-overlay-hidden{visibility:hidden;}
4950+.yui-slider{display:-moz-inline-stack;display:inline-block;*display:inline;zoom:1;vertical-align:middle;}.yui-slider-content{position:relative;}.yui-slider-rail{position:relative;}.yui-slider-thumb{position:absolute;}.yui-slider-thumb-image{display:block;}.yui-slider-image-error .yui-slider-thumb{height:10px;width:10px;background:#000;color:#000;overflow:hidden;}.yui-slider-image-error .yui-slider-thumb-image{display:none;}.yui-skin-sam .yui-slider-rail-x{background:url("rail-classic-x.png") repeat-x 0 7px;min-height:19px;*height:19px;}.yui-skin-sam .yui-slider-rail-y{background:url("rail-classic-y.png") repeat-y 7px 0;min-width:19px;*width:19px;}
4951+.yui-widget-stacked .yui-widget-shim{opacity:0;filter:alpha(opacity=0);position:absolute;border:none;top:0;left:0;padding:0;margin:0;z-index:-1;width:100%;height:100%;_width:0;_height:0;}
4952+.yui-widget-hidden{display:none;}
4953
4954=== added file 'identityprovider/media/lazr-js/assets/skins/sam/slider.css'
4955--- identityprovider/media/lazr-js/assets/skins/sam/slider.css 1970-01-01 00:00:00 +0000
4956+++ identityprovider/media/lazr-js/assets/skins/sam/slider.css 2010-06-15 01:37:25 +0000
4957@@ -0,0 +1,8 @@
4958+/*
4959+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4960+Code licensed under the BSD License:
4961+http://developer.yahoo.net/yui/license.txt
4962+version: 3.0.0
4963+build: 1549
4964+*/
4965+.yui-slider{display:-moz-inline-stack;display:inline-block;*display:inline;zoom:1;vertical-align:middle;}.yui-slider-content{position:relative;}.yui-slider-rail{position:relative;}.yui-slider-thumb{position:absolute;}.yui-slider-thumb-image{display:block;}.yui-slider-image-error .yui-slider-thumb{height:10px;width:10px;background:#000;color:#000;overflow:hidden;}.yui-slider-image-error .yui-slider-thumb-image{display:none;}.yui-skin-sam .yui-slider-rail-x{background:url("rail-classic-x.png") repeat-x 0 7px;min-height:19px;*height:19px;}.yui-skin-sam .yui-slider-rail-y{background:url("rail-classic-y.png") repeat-y 7px 0;min-width:19px;*width:19px;}
4966
4967=== added file 'identityprovider/media/lazr-js/assets/skins/sam/sprite.png'
4968Binary files identityprovider/media/lazr-js/assets/skins/sam/sprite.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/sprite.png 2010-06-15 01:37:25 +0000 differ
4969=== added file 'identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-x.png'
4970Binary files identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-x.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-x.png 2010-06-15 01:37:25 +0000 differ
4971=== added file 'identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-y.png'
4972Binary files identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-y.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/thumb-classic-y.png 2010-06-15 01:37:25 +0000 differ
4973=== added file 'identityprovider/media/lazr-js/assets/skins/sam/vertical-menu-submenu-indicator.png'
4974Binary files identityprovider/media/lazr-js/assets/skins/sam/vertical-menu-submenu-indicator.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/vertical-menu-submenu-indicator.png 2010-06-15 01:37:25 +0000 differ
4975=== added file 'identityprovider/media/lazr-js/assets/skins/sam/warn_error.png'
4976Binary files identityprovider/media/lazr-js/assets/skins/sam/warn_error.png 1970-01-01 00:00:00 +0000 and identityprovider/media/lazr-js/assets/skins/sam/warn_error.png 2010-06-15 01:37:25 +0000 differ
4977=== added file 'identityprovider/media/lazr-js/assets/skins/sam/widget-stack.css'
4978--- identityprovider/media/lazr-js/assets/skins/sam/widget-stack.css 1970-01-01 00:00:00 +0000
4979+++ identityprovider/media/lazr-js/assets/skins/sam/widget-stack.css 2010-06-15 01:37:25 +0000
4980@@ -0,0 +1,8 @@
4981+/*
4982+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4983+Code licensed under the BSD License:
4984+http://developer.yahoo.net/yui/license.txt
4985+version: 3.0.0
4986+build: 1549
4987+*/
4988+.yui-widget-stacked .yui-widget-shim{opacity:0;filter:alpha(opacity=0);position:absolute;border:none;top:0;left:0;padding:0;margin:0;z-index:-1;width:100%;height:100%;_width:0;_height:0;}
4989
4990=== added file 'identityprovider/media/lazr-js/assets/skins/sam/widget.css'
4991--- identityprovider/media/lazr-js/assets/skins/sam/widget.css 1970-01-01 00:00:00 +0000
4992+++ identityprovider/media/lazr-js/assets/skins/sam/widget.css 2010-06-15 01:37:25 +0000
4993@@ -0,0 +1,8 @@
4994+/*
4995+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
4996+Code licensed under the BSD License:
4997+http://developer.yahoo.net/yui/license.txt
4998+version: 3.0.0
4999+build: 1549
5000+*/
The diff has been truncated for viewing.