From d185e8cc05d0b50b4f688e0e2bcba15f39b33f21 Mon Sep 17 00:00:00 2001 From: Eduardo Lundgren Date: Mon, 9 Jun 2008 06:20:15 +0000 Subject: [PATCH] - Added functional demo application - Removed datepicker folder from functional demo folder --- demos/functional/css/base.css | 961 ++++++++++++++++++ demos/functional/css/chilli-recipes.css | 98 ++ demos/functional/css/functional_demos.css | 205 ++++ demos/functional/datepicker/debug.html | 21 - .../datepicker/demo/img/active-bg.gif | Bin 89 -> 0 bytes demos/functional/datepicker/demo/img/ar.gif | Bin 863 -> 0 bytes demos/functional/datepicker/demo/img/au.gif | Bin 941 -> 0 bytes demos/functional/datepicker/demo/img/br.gif | Bin 925 -> 0 bytes .../datepicker/demo/img/calendar.gif | Bin 269 -> 0 bytes .../datepicker/demo/img/calendar2.gif | Bin 1035 -> 0 bytes demos/functional/datepicker/demo/img/cn.gif | Bin 856 -> 0 bytes .../datepicker/demo/img/dark-bg.gif | Bin 85 -> 0 bytes .../datepicker/demo/img/hover-bg.gif | Bin 89 -> 0 bytes demos/functional/datepicker/demo/img/id.gif | Bin 840 -> 0 bytes demos/functional/datepicker/demo/img/ie.gif | Bin 875 -> 0 bytes demos/functional/datepicker/demo/img/ke.gif | Bin 948 -> 0 bytes demos/functional/datepicker/demo/img/lb.gif | Bin 903 -> 0 bytes demos/functional/datepicker/demo/img/next.gif | Bin 98 -> 0 bytes .../datepicker/demo/img/normal-bg.gif | Bin 110 -> 0 bytes demos/functional/datepicker/demo/img/nz.gif | Bin 925 -> 0 bytes demos/functional/datepicker/demo/img/prev.gif | Bin 97 -> 0 bytes demos/functional/datepicker/demo/img/se.gif | Bin 892 -> 0 bytes demos/functional/datepicker/demo/img/tab.png | Bin 1717 -> 0 bytes demos/functional/datepicker/demo/img/us.gif | Bin 896 -> 0 bytes demos/functional/datepicker/demo/img/za.gif | Bin 900 -> 0 bytes .../datepicker/demo/jquery.localisation.js | 64 -- .../datepicker/demo/ui.datepicker.alt.css | 158 --- .../datepicker/demo/ui.datepicker.demo.css | 53 - .../datepicker/demo/ui.datepicker.demo.js | 81 -- demos/functional/datepicker/index.html | 887 ---------------- demos/functional/images/Thumbs.db | Bin 0 -> 64512 bytes demos/functional/images/ajax-loader.gif | Bin 0 -> 3494 bytes demos/functional/images/body_bg.jpg | Bin 0 -> 4797 bytes demos/functional/images/body_bg.png | Bin 0 -> 11762 bytes demos/functional/images/content_bg.png | Bin 0 -> 102 bytes demos/functional/images/content_body_bg.png | Bin 0 -> 2502 bytes demos/functional/images/content_top_bg.png | Bin 0 -> 163 bytes demos/functional/images/dot.png | Bin 0 -> 191 bytes demos/functional/images/favicon.ico | Bin 0 -> 1150 bytes demos/functional/images/footer_bg.png | Bin 0 -> 827 bytes .../images/functional-demo-face.png | Bin 0 -> 43971 bytes demos/functional/images/html_bg.png | Bin 0 -> 131 bytes demos/functional/images/icon_liferay.gif | Bin 0 -> 783 bytes demos/functional/images/logo.gif | Bin 0 -> 2891 bytes demos/functional/index.html | 164 +++ demos/functional/js/beautify.js | 533 ++++++++++ .../js/behaviour.functionaldemos.js | 13 + demos/functional/js/behaviour.js | 205 ++++ demos/functional/js/chili-recipes.js | 163 +++ demos/functional/js/functional.demo.js | 175 ++++ demos/functional/js/jquery.chili.pack.js | 12 + .../functional/templates/images/P1010020.JPG | Bin 0 -> 4735 bytes .../functional/templates/images/P1010036.JPG | Bin 0 -> 3996 bytes .../functional/templates/images/P1010039.JPG | Bin 0 -> 6783 bytes .../functional/templates/images/P1010044.JPG | Bin 0 -> 7084 bytes .../functional/templates/images/P1010050.JPG | Bin 0 -> 6418 bytes .../functional/templates/images/P1010055.JPG | Bin 0 -> 2645 bytes .../functional/templates/images/P1010058.JPG | Bin 0 -> 3727 bytes .../functional/templates/images/P1010059.JPG | Bin 0 -> 3287 bytes .../functional/templates/images/P1010061.JPG | Bin 0 -> 5062 bytes .../functional/templates/images/P1010063.JPG | Bin 0 -> 5042 bytes demos/functional/templates/images/Thumbs.db | Bin 0 -> 42496 bytes demos/functional/templates/images/puppy.jpg | Bin 0 -> 13658 bytes .../templates/ui.accordion.data.html | 35 + demos/functional/templates/ui.accordion.html | 33 + demos/functional/templates/ui.draggable.html | 85 ++ demos/functional/templates/ui.droppable.html | 87 ++ .../templates/ui.droppable.photos.html | 17 + demos/functional/templates/ui.resizable.html | 92 ++ .../templates/ui.selectable.data.html | 8 + demos/functional/templates/ui.selectable.html | 31 + demos/functional/templates/ui.slider.html | 44 + .../functional/templates/ui.sortable.ex1.html | 40 + .../functional/templates/ui.sortable.ex3.html | 19 + demos/functional/templates/ui.sortable.html | 55 + demos/functional/templates/ui.tabs.ex1.html | 35 + demos/functional/templates/ui.tabs.html | 54 + demos/functional/templates/ui.tabs.php | 88 ++ tests/oldresizable.html | 455 +++++++++ tests/sortable-performance.html | 83 ++ tests/test.html | 61 ++ 81 files changed, 3851 insertions(+), 1264 deletions(-) create mode 100644 demos/functional/css/base.css create mode 100644 demos/functional/css/chilli-recipes.css create mode 100644 demos/functional/css/functional_demos.css delete mode 100644 demos/functional/datepicker/debug.html delete mode 100644 demos/functional/datepicker/demo/img/active-bg.gif delete mode 100644 demos/functional/datepicker/demo/img/ar.gif delete mode 100644 demos/functional/datepicker/demo/img/au.gif delete mode 100644 demos/functional/datepicker/demo/img/br.gif delete mode 100644 demos/functional/datepicker/demo/img/calendar.gif delete mode 100644 demos/functional/datepicker/demo/img/calendar2.gif delete mode 100644 demos/functional/datepicker/demo/img/cn.gif delete mode 100644 demos/functional/datepicker/demo/img/dark-bg.gif delete mode 100644 demos/functional/datepicker/demo/img/hover-bg.gif delete mode 100644 demos/functional/datepicker/demo/img/id.gif delete mode 100644 demos/functional/datepicker/demo/img/ie.gif delete mode 100644 demos/functional/datepicker/demo/img/ke.gif delete mode 100644 demos/functional/datepicker/demo/img/lb.gif delete mode 100644 demos/functional/datepicker/demo/img/next.gif delete mode 100644 demos/functional/datepicker/demo/img/normal-bg.gif delete mode 100644 demos/functional/datepicker/demo/img/nz.gif delete mode 100644 demos/functional/datepicker/demo/img/prev.gif delete mode 100644 demos/functional/datepicker/demo/img/se.gif delete mode 100644 demos/functional/datepicker/demo/img/tab.png delete mode 100644 demos/functional/datepicker/demo/img/us.gif delete mode 100644 demos/functional/datepicker/demo/img/za.gif delete mode 100644 demos/functional/datepicker/demo/jquery.localisation.js delete mode 100644 demos/functional/datepicker/demo/ui.datepicker.alt.css delete mode 100644 demos/functional/datepicker/demo/ui.datepicker.demo.css delete mode 100644 demos/functional/datepicker/demo/ui.datepicker.demo.js delete mode 100644 demos/functional/datepicker/index.html create mode 100644 demos/functional/images/Thumbs.db create mode 100644 demos/functional/images/ajax-loader.gif create mode 100644 demos/functional/images/body_bg.jpg create mode 100644 demos/functional/images/body_bg.png create mode 100644 demos/functional/images/content_bg.png create mode 100644 demos/functional/images/content_body_bg.png create mode 100644 demos/functional/images/content_top_bg.png create mode 100644 demos/functional/images/dot.png create mode 100644 demos/functional/images/favicon.ico create mode 100644 demos/functional/images/footer_bg.png create mode 100644 demos/functional/images/functional-demo-face.png create mode 100644 demos/functional/images/html_bg.png create mode 100644 demos/functional/images/icon_liferay.gif create mode 100644 demos/functional/images/logo.gif create mode 100644 demos/functional/index.html create mode 100644 demos/functional/js/beautify.js create mode 100644 demos/functional/js/behaviour.functionaldemos.js create mode 100644 demos/functional/js/behaviour.js create mode 100644 demos/functional/js/chili-recipes.js create mode 100644 demos/functional/js/functional.demo.js create mode 100644 demos/functional/js/jquery.chili.pack.js create mode 100644 demos/functional/templates/images/P1010020.JPG create mode 100644 demos/functional/templates/images/P1010036.JPG create mode 100644 demos/functional/templates/images/P1010039.JPG create mode 100644 demos/functional/templates/images/P1010044.JPG create mode 100644 demos/functional/templates/images/P1010050.JPG create mode 100644 demos/functional/templates/images/P1010055.JPG create mode 100644 demos/functional/templates/images/P1010058.JPG create mode 100644 demos/functional/templates/images/P1010059.JPG create mode 100644 demos/functional/templates/images/P1010061.JPG create mode 100644 demos/functional/templates/images/P1010063.JPG create mode 100644 demos/functional/templates/images/Thumbs.db create mode 100644 demos/functional/templates/images/puppy.jpg create mode 100644 demos/functional/templates/ui.accordion.data.html create mode 100644 demos/functional/templates/ui.accordion.html create mode 100644 demos/functional/templates/ui.draggable.html create mode 100644 demos/functional/templates/ui.droppable.html create mode 100644 demos/functional/templates/ui.droppable.photos.html create mode 100644 demos/functional/templates/ui.resizable.html create mode 100644 demos/functional/templates/ui.selectable.data.html create mode 100644 demos/functional/templates/ui.selectable.html create mode 100644 demos/functional/templates/ui.slider.html create mode 100644 demos/functional/templates/ui.sortable.ex1.html create mode 100644 demos/functional/templates/ui.sortable.ex3.html create mode 100644 demos/functional/templates/ui.sortable.html create mode 100644 demos/functional/templates/ui.tabs.ex1.html create mode 100644 demos/functional/templates/ui.tabs.html create mode 100644 demos/functional/templates/ui.tabs.php create mode 100644 tests/oldresizable.html create mode 100644 tests/sortable-performance.html create mode 100644 tests/test.html diff --git a/demos/functional/css/base.css b/demos/functional/css/base.css new file mode 100644 index 000000000..3a9ca5931 --- /dev/null +++ b/demos/functional/css/base.css @@ -0,0 +1,961 @@ +/* Site + -------------------------------- */ + +html { + overflow-y: scroll; + background: #5f5f5f url('../images/html_bg.png') repeat-x scroll; +} + +body { + margin: 0; + padding: 0 0 20px; + background: transparent url('../images/body_bg.jpg') no-repeat center top; + min-height: 100%; + /* font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; */ + font-family: "Arial", "Helvetica", "Verdana", "sans-serif"; +} + +#wrapper { + margin: 0 auto; + width: 956px; + position: relative; + /* + background: url('../images/body_footer_bg.jpg') no-repeat center bottom; + padding-bottom: 365px; + */ +} + +#banner { + height: 125px; +} + +#content .bg { + opacity: 0; + -moz-opacity: 0; + filter: alpha(opacity=0); +} + +table.layout-grid a.disabled, table.layout-grid a.disabled:hover { + color: #aaa; + cursor: default; + text-decoration: line-through; +} + +div.notice { + background: #FFF1AF; + padding: 3px; + margin-bottom: 5px; + font-size: 12px; + border: 1px solid #EFD500; +} + + +/* Logo + -------------------------------- */ + +h1.logo { + position: absolute; + top: 55px; + left: 28px; + margin: 0; +} + +h1.logo, +h1.logo a { + width: 235px; + height: 55px; +} + +h1.logo a { + display: block; + background: url('../images/logo.gif') no-repeat; +} + +h1.logo a span { + display: none; +} + + +/* Dock + -------------------------------- */ + +#dock { + height: 25px; + float: left; + position: absolute; + top: 0; + right: 2px; +} + +#dock .left { + float: left; + width: 3px; + height: 25px; + background: url('../images/dock.png') no-repeat left top; +} + +#dock .right { + float: left; + width: 3px; + height: 25px; + background: url('../images/dock.png') no-repeat right top; +} + +#dock ul, +#dock ul li { + float: left; + list-style-type: none; + margin: 0; + padding: 0; +} + +#dock ul { + padding: 0 6px; + height: 25px; + background-color: #000; +} + +#dock ul li { + padding: 0 6px; + position: relative; +} + +#dock ul li a { + float: left; + display: block; + padding: 0 5px; + color: #ccc; + text-decoration: none; + font-size: 12px; + line-height: 22px; +} + +#dock ul li a:hover, +#dock ul li.selected a { + color: #fff; + border-bottom: 2px solid #ff9c08; +} + +#dock ul li.selected a { + font-weight: bold; +} + + +/* Navigation + -------------------------------- */ + +#navigation { + height: 41px; + float: left; + position: absolute; + top: 62px; + right: 0px; +} + +#navigation .left { + float: left; + width: 5px; + height: 41px; + /* background: url('../images/navigation.png') no-repeat left top; */ + background: url('../images/navigation_l.png') no-repeat left top; +} + +#ie6 #navigation .left { + background: transparent none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/navigation_l.png', sizingMethod='scale'); + zoom: 1; +} + +#navigation .right { + float: left; + width: 3px; + height: 41px; + background: url('../images/navigation.png') no-repeat right top; +} + +#navigation ul, +#navigation ul li { + float: left; + list-style-type: none; + margin: 0; + padding: 0; + font-size: 13px; + line-height: 38px; +} + +#navigation ul { + height: 41px; + background: url('../images/navigation.png') repeat-x 0 -41px; +} + +#navigation ul li a { + float: left; + display: block; + height: 41px; + padding: 0 18px; + color: #ccc; + text-decoration: none; + background: url('../images/navigation_s.png') no-repeat right top; +} + +#navigation ul li.selected a { + color: #fff; +} + +#navigation ul li.last a{ + background-image: none; +} + +#navigation ul li a:hover { + color: #fff; +} + + +/* Content + -------------------------------- */ + +#content-wrapper { + background: #FFF url('../images/content_bg.png') repeat-y 0 0; +} + +#content { + background: url('../images/content_body_bg.png') no-repeat 0 13px; + zoom: 1; +} + +.content-top { + font-size: 1px; + height: 13px; + background: url('../images/content_top_bg.png'); +} + +.content { + padding: 0 3px 0 3px; + overflow: hidden; +} + +#content .content { + min-height: 380px; + background: url('../images/dot.png') repeat-y 203px 0; +} + +#home #content .content, +#download #content .content, +#demos #content .content { + background: none; +} + +#ie6 #content .content { + height: 380px; + overflow-y: visible; +} + +/* Layout */ + +.content-head { + height: 74px; + border-bottom: 1px solid #ccc; + background-color: #fff; +} + +.content-head h2 { + float: left; + margin: 0; + padding: 20px 0 20px 24px; + color: #ff9c08; + font: normal 29px/30px "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; + letter-spacing: .5px; +} + +.content-head h2 span { + padding-right: 16px; + border-right: 1px solid #ccc; +} + +.content-head p { + margin: 0; + padding: 28px 0 0 12px; + float: left; + font: normal 15px "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; + letter-spacing: .5px; +} + + +/* Layout + -------------------------------- */ + +.themes { + background: url('../images/themes_bg.png') repeat-x scroll 0 -1px; +} + + +/* Layout + -------------------------------- */ + +.layout-grid { + width: 100%; +} + +.layout-grid td { + vertical-align: top; +} + +.layout-grid td.home { + background: url('../images/home_bg.jpg') no-repeat scroll right top; + height: 412px; + padding: 0 600px 0 24px; +} + +.layout-grid td.left-nav { + width: 200px; +} + +.layout-grid td.normal { + border-left: 1px solid #ccc; + padding: 20px 24px; + font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; +} + +.layout-grid td.demos { + background: url('../images/demos_bg.jpg') no-repeat; + height: 337px; + overflow: hidden; +} + +.layout-grid td.download { + background: url('../images/demos_bg.jpg') no-repeat; + height: 337px; +} + + +/* Home + -------------------------------- */ + +.home h3 { + margin: 0; + padding: 17px 0 11px 0; + color: #ff9c08; + font: normal 30px "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; + letter-spacing: .5px; +} + +.home p.large { + padding-bottom: 15px; + color: #000; + font: bold 13px/19px "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; + letter-spacing: .2px; + line-height: 16px; +} + +.home p { + margin: 0; + padding-bottom: 14px; + color: #333; + font: normal 11px/14px 'Trebuchet MS', 'Arial', 'Helvetica', sans-serif; +} + +.teaserbox { + position: absolute; + top: 265px; + left: 452px; + width: 450px; +} + +.teaserbox ul { + list-style-type: square; +} + +.teaserbox p { + margin: 5px; + padding: 0px; +} + +.teaserbox h4 { + margin-bottom: 0px; + position: relative; + left: 1px; + top: 1px; + color: #fff; +} + +.teaserbox h4 span { + position: absolute; + top: -1px; + left: -1px; + color: #000; +} + + +/* Side Menu + -------------------------------- */ + +.section { + padding: 24px 23px 8px 22px; + border-bottom: 1px dashed #ccc; +} + + + +ul.side-menu, +ul.side-menu li, +p.side-menu-title { + list-style-type: none; + margin: 0; + padding: 0; + letter-spacing: 0.75pt; +} + +ul.side-menu li a { + font: normal 11px 'Arial', 'Helvetica', sans-serif; + text-decoration: none; + color: #000; +} + +ul.side-menu li a:hover { + color: #e87b10; +} + +p.side-menu-title { + font: bold 15px 'Arial', 'Helvetica', sans-serif; + color: #e87b10; +} + +ul.side-menu { + padding: 5px 2px 0; +} + + +/* Normal + -------------------------------- */ + +.normal h3, +.normal h4 { + margin: 0; + font-weight: normal; +} + +.normal h3 { + padding: 0 0 9px; +} + +.normal h4 { + padding-bottom: 21px; + border-bottom: 1px dashed #999; + font-size: 12px; + font-weight: bold; +} + +.normal .pull-quote { + padding: 6px 0; + line-height: 20px; + text-transform: uppercase; + font-size: 12px; +} + +.normal p { + font-size: 12px; +} + + +/* Download + -------------------------------- */ + +td.download { + /*height: 650px !important;*/ +} + +.download .click-to-download { + position: relative; + margin: 61px 3px 0; + padding: 0 19px; + background: url('../images/download-top.gif') no-repeat left top; + width: 270px; + height: 226px; + float: left; + font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; +} + +.download .click-to-download .bg-footer, +.download .click-to-download .bg { + position: absolute; + bottom: 0; + left: 0; + width: 308px; + height: 102px; + background: url('../images/download-bottom.png') no-repeat left top; +} + +.download .click-to-download .bg { + background-position: left bottom; +} + +.download .click-to-download h3 { + margin: 0; + padding: 14px 0 10px; + font-weight: normal; + font-size: 21px; +} + +.download .click-to-download h3 span { + font-size: 10px; +} + +.download .click-to-download p { + margin: 0; + padding: 12px 0 0; + font-size: 12px; +} + +.download .click-to-download a.download { + display: block; + position: absolute; + left: 65px; + top: 136px; + height: 38px !important; + width: 240px; + font-size: 16px; + font-weight: bold; +} + +.download .click-to-download a.download:link { + color: #333; + text-decoration: none; +} + +.download .click-to-download a.download:visited { + color: #333; + text-decoration: none; +} + +.download .builder { + position: absolute; + top: 475px; + right: 16px; + width: 612px; + font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif"; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); +} + +.download .builder h3 { + margin: 0; + padding: 5px 10px 10px; + font-weight: normal; + font-size: 21px; +} + +.download .builder p { + margin: 0; + padding: 0 0 0 12px; + font-size: 12px; +} + +.download .builder .top { + height: 8px; + background-image: url('../images/builder_top.png'); +} + +.download .builder .bottom { + height: 8px; + background-image: url('../images/builder_bottom.png'); +} + +.download .builder .content { + background-image: url('../images/builder_bg.png'); +} + +.download .p { + padding: 5px 10px 10px; +} + +.components-list { + font-size: 12px; +} + +.components-list table { + width: 100%; +} + +.components-list th, +.components-list td { + text-align: left; + vertical-align: middle !important; + padding: 3px; +} + +.components-list th { + line-height: 22px; + padding: 0 0 4px 2px; + cursor: default; +} + +.components-list label { + padding-left: 5px; +} + +.list-section { + border-bottom: 1px dashed #bbb; + background: #EAEAEA; + padding: 10px 10px 10px 10px; + width: 715px; + line-height: 18px; +} + +.list-padding { + padding: 5px; + line-height: 18px; +} + +.list-component { + background-color: #F4F4F4; +} + +.list-component-selected { + font-weight: bold; +} + +.text-bg-up, +.text-bg-down { + background:#FFFFFF url(../images/text-bg-up.gif) repeat-x scroll 0pt; + background-position:0px 0px; +} + +.text-bg-down { background:#FFFFFF url(../images/text-bg-down.gif) repeat-x scroll 0pt !important; } + +.ui-transparent { + opacity:0; + filter:Alpha(Opacity=0); +} +.text-align-right { + text-align: right !important; +} +.text-align-left { + text-align: left !important; +} +.text-align-center { + text-align: center !important; +} +.label-files { + background: url(../images/group.png) no-repeat; + padding-left: 19px; + line-height: 20px; + cursor: pointer; +} + +.download #total-size { + width: 160px; + margin-left: 90px; + text-align: right; +} + +.big { + font-size: 13px; + font-weight: bold; +} + +.title-big { + font-size: 14px; + font-weight: bold; + letter-spacing: .3px; +} + + +/* Launch Pad + -------------------------------- */ + +#launch-pad { + height: 127px; + overflow: hidden; + background: url('../images/launch-pad_bg.png') repeat-y center top; + padding: 11px 0px 11px 16px; +} + +#launch-pad .launch-pad-button { + float: left; + width: 255px; + height: 106px; + background: url('../images/launch-pad_button.png') no-repeat; + padding: 21px 22px 0 23px; + margin: 0 6px; + cursor: pointer; + cursor: hand; + position: relative; +} + +#ie6 #launch-pad .launch-pad-button { + height: 106px; +} + +#launch-pad .launch-pad-button .bg { + position: absolute; + top: 0; + left: 0; + width: 310px; + height: 127px; + background: url('../images/launch-pad_button.png') no-repeat left bottom; +} + +#launch-pad .launch-pad-button h3, +#launch-pad .launch-pad-button p { + position: relative; +} + +#launch-pad .launch-pad-button.left { + margin-left: 0; +} + +#launch-pad .launch-pad-button.right { + margin-right: 0; +} + +#launch-pad .launch-pad-button h3 { + margin: 0; + padding: 0 0 4px; + color: #ff9c08; + font: normal 18px 'Arial', 'Helvetica', sans-serif; + letter-spacing: .8px +} + +#launch-pad .launch-pad-button h3 a, +#launch-pad .launch-pad-button h3 a:hover { + color: #ff9c08; + text-decoration: none; +} + +#launch-pad .launch-pad-button p { + margin: 0; + padding: 0 2px; + color: #cbcbcb; + font: normal 11px/15px 'Arial', 'Helvetica', sans-serif; + letter-spacing: .2px; +} + + +/* Footer + -------------------------------- */ + +#footer { + height: 45px; + padding: 10px 0; + position: relative; +} + +#footer .inner { + position: relative; + z-index: 2; +} + +#ie6 #footer .inner { + zoom: 1; +} + +#footer .bg { + background: url('../images/footer_bg.png') no-repeat left top; + width: 100%; + height: 65px; + position: absolute; + top: 0; + left: 0; + z-index: 1; +} + +#ie6 #footer .bg { + background: transparent none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/footer_bg.png', sizingMethod='scale'); + zoom: 1; +} + +#footer p { + margin: 0; + padding: 0; + color: #5e5e5e; + font: normal 9px 'Arial', 'Helvetica', sans-serif; + text-transform: uppercase; +} + +#footer p a { + color: #bbb; +} + +#footer span.first { + display: block; + float: left; + padding: 6px 0 0 16px; +} + +#footer .block { + display: block; + float: left; +} + +#footer .block span, +#footer span.empty { + display: none; +} + +#footer .liferay { + margin: 3px 22px 0px 3px; + background: url('../images/icon_liferay.gif'); + width: 98px; + height: 22px; + border: 0; +} + +#footer .adobe { + margin: 2px 0 0 0; + background: url('../images/icon_adobe.png'); + width: 28px; + height: 28px; +} + +/* Demoflow + -------------------------------- */ + +div.demoflow-button-left { + position: absolute; + left: -3px; + top: 371px; + background: url('../images/demos_arrows.png') no-repeat left top; + width: 52px; + height: 45px; + cursor: pointer; cursor: hand; + z-index: 999; +} + +div.demoflow-button-left .bg { + background: url('../images/demos_arrows.png') no-repeat left bottom; + width: 52px; + height: 45px; + position: absolute; + top: 0; + left: 0; +} + +div.demoflow-button-right { + position: absolute; + right: -4px; + top: 371px; + background: url('../images/demos_arrows.png') no-repeat right top; + width: 52px; + height: 45px; + cursor: pointer; cursor: hand; + z-index: 999; +} + +div.demoflow-button-right .bg { + position: absolute; + left: 0; + top: 0; + background: url('../images/demos_arrows.png') no-repeat right bottom; + width: 52px; + height: 45px; +} + +.demoflow { + position: relative; + top: 22px; + left: 0; + width: 950px; + height: 337px; +} + +.demoflow div { + float: left; + height: 100px; + width: 75px; + cursor: pointer; cursor: hand; +} + +.ie .demoflow div { + zoom: 1; +} + +.demoflow div { + border: 1px solid #666; +} + + +.demoflow div:hover { + border: 1px solid #666; + /*opacity: 1 !important;*/ +} + +.demoflow div img { + height: 100%; + width: 100%; +} + +.demoflow div.shadow { + height: 100%; + width: 100%; + position: absolute; + top: 0px; + left: 0px; + background-color: black; +} + +.ie .demoflow div.shadow { + display: none; +} + +/* Functional Demos */ + +#links { + float:left; + width:155px; + font-size: 13px; +} + +#functional ul { + list-style: none; + padding: 0; + margin: 0; +} + +#functional #links ul { + margin-top:10px; + line-height:1.2em; +} + +#functional #links ul li a{ + border-bottom: 1px solid #F4F4F4; + display:block; + padding: 3px 3px 3px 12px; + font-size: 95%; + text-decoration: none; + color: #000; + height: 15px; +} + +#functional #links ul li a:hover, +#functional #links ul li a:focus { + background: #EAEAEA; + border-color: #BBBBBB; +} + +/* About */ + +div.about ul { + list-style-type: square; + margin-bottom: 50px; +} + +div.about ul li h5 { + font-size: 16px; + margin-bottom: 10px; +} + +div.about ul li a:link, div.about ul li a:visited { + text-decoration: none; + color: #666; +} + +div.about ul li a:hover { + color: #000; +} + +div.about ul li p { + padding-right: 40px; + padding-left: 20px; +} \ No newline at end of file diff --git a/demos/functional/css/chilli-recipes.css b/demos/functional/css/chilli-recipes.css new file mode 100644 index 000000000..76330713b --- /dev/null +++ b/demos/functional/css/chilli-recipes.css @@ -0,0 +1,98 @@ +/* +=============================================================================== +Chili is the jQuery code highlighter plugin +............................................................................... + Copyright 2007 / Andrea Ercolino +------------------------------------------------------------------------------- +LICENSE: http://www.opensource.org/licenses/mit-license.php +WEBSITE: http://noteslog.com/chili/ +=============================================================================== +*/ + +/* +this file shows how to configure a static setup +it must be linked from the head of a page like: + +*/ + +.html .php { color: red; font-weight: bold; } +.html .tag { color: navy; font-weight: bold; } +.html .aname { color: purple; } +.html .avalue { color: fuchsia; } +.html .mlcom { color: green; } +.html .entity { color: teal; } + +.javascript .mlcom { color: #4040c2; } +.javascript .com { color: green; } +.javascript .regexp { color: maroon; } +.javascript .string { color: teal; } +.javascript .keywords { color: navy; font-weight: bold; } +.javascript .global { color: blue; } +.javascript .numbers { color: red; } + +.mysql .function { color: #e17100; } +.mysql .keyword { color: navy; font-weight: bold; } +.mysql .mlcom { color: gray; } +.mysql .com { color: green; } +.mysql .number { color: red; } +.mysql .hexnum { color: red; font-weight: bold; } +.mysql .string { color: purple; } +.mysql .quid { color: fuchsia; } +.mysql .id { color: maroon; } +.mysql .value { color: gray; font-weight: bold; } +.mysql .variable { color: #4040c2; } + +.php .com { color: green; } +.php .const1 { color: red; } +.php .const2 { color: red; } +.php .func { color: #e17100; } +.php .global { color: red; } +.php .keyword { color: navy; font-weight: bold; } +.php .mlcom { color: gray; } +.php .name { color: maroon; } +.php .number { color: red; } +.php .string1 { color: purple; } +.php .string2 { color: fuchsia; } +.php .value { color: gray; font-weight: bold; } +.php .variable { color: #4040c2; } + +.css .mlcom { color: #4040c2; } +.css .color { color: green; } +.css .string { color: teal; } +.css .attrib { color: navy; font-weight: bold; } +.css .value { color: blue; } +.css .number { color: red; } + + + +/* +=============================================================================== +Chili is the jQuery code highlighter plugin +............................................................................... + Copyright 2007 / Andrea Ercolino +------------------------------------------------------------------------------- +LICENSE: http://www.opensource.org/licenses/mit-license.php +WEBSITE: http://noteslog.com/chili/ +=============================================================================== +*/ + +.javascript .mlcom { color: #4040c2; } +.javascript .com { color: green; } +.javascript .regexp { color: maroon; } +.javascript .string { color: teal; } +.javascript .keywords { color: navy; font-weight: bold; } +.javascript .global { color: blue; } +.javascript .numbers { color: red; } + +.javascript .jquery .object { color: red; font-weight: bold; } +.javascript .jquery .private { background-color: #CCCC99; } +.javascript .jquery .attributes { background-color: #CCCC00; } +.javascript .jquery .traversing { background-color: #CCCC00; } +.javascript .jquery .manipulation { background-color: #CCCC00; } +.javascript .jquery .utilities { background-color: #CCCCFF; } +.javascript .jquery .core { background-color: #7F7FFF; color: white; } +.javascript .jquery .ajax { background-color: #7F7FFF; color: #FFD400; } +.javascript .jquery .css { background-color: #999900; color: white; } +.javascript .jquery .effects { background-color: #FFAA00; } +.javascript .jquery .events { background-color: #FFD400; } + diff --git a/demos/functional/css/functional_demos.css b/demos/functional/css/functional_demos.css new file mode 100644 index 000000000..ddbf82f6f --- /dev/null +++ b/demos/functional/css/functional_demos.css @@ -0,0 +1,205 @@ +/*************************************/ +/* Viewer: models */ + +#containerDemo { + width: 690px; + zoom: 1; +} +#containerDemo .ui-wrapper { + margin:0px 10px; +} +#containerDemo .ui-details { + margin:0px 10px 10px 0px; + border-bottom: 2px solid #bbb; +} + +#containerDemo .menutitle { + font-size: 14px; + letter-spacing: .5px; + padding-bottom: 3px; +} + +#containerDemo .ui-demo-options { + background: #f2f2f2; + border-bottom: 1px #bbb solid; + padding: 10px; + margin: 10px 0 20px 0; + width: 690px; + _width: 670px; + font-size: 12px; +} + +.sortable-container li { + margin: 0; + padding: 0; + border: 0; + outline: 0; + list-style: circle; + background: #EAEAEA; + font-size: 12px; + margin:2px; + padding: 3px; + width: 100px; +} + +.colored { + display: block; + background: #fff; + margin-top: 5px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + white-space: pre; + padding: 10px; + font-size: 11px; + font-family: Courier New; + width: 640px; + overflow-x: auto; + overflow-y: hidden; + /*min height hack*/ + * min-height:25px; + * height:auto !important; + * height:25px; + * padding: 15px; +} + +#containerDemo .ui-demo-description { + margin-bottom: 10px; + font-size: 12px; +} +#containerDemo .link-view-source { + margin-left: 5px; +} +#containerDemo .proxy { + border: 1px dashed #000; +} + +#containerDemo .lightblue-bg{ + background: #E8EEF7; +} +#containerDemo .blue-bg { + background: #C3D9FF; +} +#containerDemo .green-bg { + background: #74DD82; +} +#containerDemo a { + color:#000; +} + +.snippet { + white-space: nowrap; + overflow: hidden; + empty-cells: show; +} + +/*************************************/ +/* Components */ + +.proxy { + border: 1px dashed #000/*#3399ff*/; +} + +.resizable { + width: 100px; height: 100px; + border: 1px solid #000; + padding: 10px; + font-size: 12px; +} + +.draggable { + width: 100px; + height: 40px; + top: 10px; + right: 10px; + background-color: #68BFEF; + border: 2px solid #0090DF; + padding: 5px; + margin: 0 0 12px 12px; + font-size: 12px; +} + +div.drag-handle +{ + cursor: move; + background-color: #0090DF; + height: 15px; +} + +.block { + border: 2px solid #0090DF; + background-color: #68BFEF; + width: 75px; + height: 75px; + margin: 10px; + z-index: 100; +} +.drop { + background-color: #e9b96e; + border: 3px double #c17d11; + width: 150px; + margin: 10px; + min-height: 200px; + min-height:200px; + height:auto !important; + height:200px; + opacity: 0.7; + filter:alpha(opacity:70); + text-align: center; +} +.droppable-active { + opacity: 1.0; + filter:alpha(opacity:100); +} +.droppable-hover { + outline: 1px dotted black; + background-color: #73d216; + border-color: #4e9a06; +} +.silver { + background-color: #fafafa; + border-color: silver; +} +.draggable.green { + background-color: #73d216; + border-color: #4e9a06; +} + +.draggable.red { + background-color: #ef2929; + border-color: #cc0000; +} + +.ui-selecting { + background-color: #eee; +} +.ui-selected { + background-color: #E6F7D4; +} + +.sortable-container #example2 li { + background: none; +} + +.sortable-container #example3 li { + list-style: none; +} +.droppable-photos-container { + border: 2px #ccc dotted; + width:144px; + height: 108px; + float:left; + margin-top: 2px; + padding: 2px; +} +.droppable-img-content { + float: left; padding: 5px; +} + +#accordionDemo, select { + position: relative; + font-size: 12px; +} + +.ui-accordion-data { + padding: 10px; +} diff --git a/demos/functional/datepicker/debug.html b/demos/functional/datepicker/debug.html deleted file mode 100644 index 0edb43275..000000000 --- a/demos/functional/datepicker/debug.html +++ /dev/null @@ -1,21 +0,0 @@ - - - Only core files for easy debug - - - - - - - - - - - - - - \ No newline at end of file diff --git a/demos/functional/datepicker/demo/img/active-bg.gif b/demos/functional/datepicker/demo/img/active-bg.gif deleted file mode 100644 index d608c54698e081a3deae0f1b9b827484deaeacce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmZ?wbhEHb_zyzHK#BinX8u2O=Kp_& z|Nns`2r!I-(GVC$A)o{D3n(uzaJVoqa>#gWSa7hJLs%>3#D>Jftb7VyJsyRNj&|`G wW!;%kc(9R~*P=^i=f(q!%$y#pp1crz;?*Obd}zsw4a?5XwkQ_k;b5=^0Q@aLO8@`> diff --git a/demos/functional/datepicker/demo/img/au.gif b/demos/functional/datepicker/demo/img/au.gif deleted file mode 100644 index db005b4c782df88f8eb4470f79e99a00304b4028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmZ?wbhEHblw#mz_|Cv^=FAxehBRj83{K8$LBRqEiBe_dYCXM13yXFqr(SRG$zfqL z6B6cUWi2f&T~l4XzM)}rPtUH|vk$LWacb+)Esa z|Nk?Lg3%Bd3L&5aawI4(FmOy_FwRL3P;g-35#W*&h}f{uxt&FTqvZpGGYcz|tc{Mx zhr~7xNu!Jl4UW!i43csg6%h@G-FOU=Pxb8FxQvNa+$>{5!$GF@iQHCsIvW-$vP|J* z3aLpbaAsqbiM8^HC~&;g#9^Rduxr7?#=Fr2Cupr_8e}*4FG`4N4dh{sV#%6n3+HwYl zGs<#jb#<>sMcu1yxI1xG&&ty)|Nmbvz|q9O$RXpgVZp&>4q+{uh=c=9t;}2=Iv*}19AOer5SZ{{gHl5`w^N&o!pDb4 znUsS4-kc~{#KIw{V3Q$WbkL=X)!!>cVbVcn4x4;4l@*&A{O2j9a-~{+P-|p$ch%Z4 s^TQLSSvHwc4>C3}G)>{=oARY%VuRZ{IrdjR*@YUnw-*Sru`pNz03&={+W-In diff --git a/demos/functional/datepicker/demo/img/calendar.gif b/demos/functional/datepicker/demo/img/calendar.gif deleted file mode 100644 index d0abaa7c0b892e781b6f553453a0027efea014b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmZ?wbhEHb6kyoJ#dt% zaYstuiRe5}O|8;NEA%ba6j)5k7TbN(gNwC&D)Y{1Cu2PhDy(ymnp7_1Ai(k{X>FbJ zg$yQ1aX#U+v{)u7c4kS5=DdO;0Y*k<=8BdGnYaWYcOkak83LIJ0`39}`h<8zSFc^O QT3n!+Z|k=0I}{nL0T`orxBvhE diff --git a/demos/functional/datepicker/demo/img/calendar2.gif b/demos/functional/datepicker/demo/img/calendar2.gif deleted file mode 100644 index 519a1fd4a08e031068a4da98ba2af13b29bd4c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmb_b%S)AU5S=z6gwO+A7zja_J&@{0P-*Y*Sz+Z3yGAC_kQ;H4&_d{DNJUU$rc4SI zrs++|42@ifMH$IZmWGgv+C)eM22m}H>CE>xG;sOu+?hFZ&YABP6yK zqE8}vB#U1BzZ+Tfz!TpP`0f8iAYvjRQs0Cu1PV++C@2N9j5)9b*1+a0P!tX# zK{SXtDfB7_m7p5bz!9UtIG6;}VAu-Q00U{T1TECC7}$UY7KY6Qd5#cfWj5D`wa7$R zl*L>wSfHrFs;ma}AcbBwVN*89gCC%YY1je%AOVG74KR=fOSFOq76Tj5z%qBv%g7Nb zVs0e#VJ$LMQG>6L3l=DfsTh2O(=Y(M&<>-a7FNO!(8M(C04E5BLa+uHNMjPTzyphc z4QTTdc{j?)5r&JwNa({_WE#C>?rU^!FGeSHo1?3EZ)CK)9(m`ZksW@7NTDM|r2Qrl z4+oB*@jBp2Fb|rrYQ4YB{$HTfc^W#fw6ONh?hDi1``a5%PCQuCo4K#!&*xn)ucrUa zo9x-x`YM*(laWz0cyDD+_R|;1@xjw2*EgK%kJt5NwZ(FdjV}~F?ta@I_9iz~FDor> zNzKe|?E1NAs;l_Pvya358GSp8?(S$BscTR6e<+KkeOtY5CRzFJTC8iTDZRY5s<&Z9 zb57p5x%XFYwmf-NBmr+0xlh9osAVbIZ>DnC>0w**0IW P_~zHi&XP-+ODOjr<(tzT diff --git a/demos/functional/datepicker/demo/img/cn.gif b/demos/functional/datepicker/demo/img/cn.gif deleted file mode 100644 index 5482753d6b7269e8069aa7551f39b5f1fa12d492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmeH`>uU`F0L6bB)@^Rq81ujTAm4EURxIO zm?5vYd2G90%QJb)Yu+S2{@ncm{sX7;<@Eb@PN!u2xDnxKZ$kV56HdnNn1TUJ#UQ3( z2-7hG`(R(p!hV>IIXDmp;b0tsxi}Q_a2O890t{mWN8;#2EHE6lu+T`vA}q!+I2KE= z6w9z2C*VY!gp+X!PQ__hft5HNXJ8a(;%uzKIXD;R;e1?x3vm%H#wEBEm*H}(#uc~{ zSK(@0i?z58>u^18z>T;Wx8PRXjyrHC?#6oDgZpql9>4}{#Dmy`hwv~S!J~K#Phc~i z#1=e-r|}G)#dCNbFW^PIgqJafSMVxc!|T|JZ5YR!cnfdi9qhoncn|O61AK^&@G(BY zr}zw?;|qL=ukba#!MFGh-{S}D#Eb-9T;^>iPnKQ6vSj zN{{c2)g%{3i`qKMVrzmue<$^bXA|s|litv@DVkQ-E&o?%ZD>GyO?7#FWqWhujcs|e L;=3~Q`xE&K;x`et diff --git a/demos/functional/datepicker/demo/img/dark-bg.gif b/demos/functional/datepicker/demo/img/dark-bg.gif deleted file mode 100644 index 1dea48a8f6664c9a5d5a94e977c1d7212a6bef8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHb3xI7cXAAbm`*d3l}e6x_tTajT<-q|NpP}lZBCift^8z p0SG{98JMLwcHQ}C;N`q}uj=cwv(saC#4b@4SZ=W5%`PM diff --git a/demos/functional/datepicker/demo/img/hover-bg.gif b/demos/functional/datepicker/demo/img/hover-bg.gif deleted file mode 100644 index fbf94fc2c1891ff891f2d3c3208cf431c35a4628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmZ?wbhEHbXn6pV(z za0vk&kVimyfq_GpL6}3vW5a@j%^bp7F()=GJlrmz?3MFl!J?zx62@6~PHbF!ykEh& NOU84P%83RBYXIsnE%E>W diff --git a/demos/functional/datepicker/demo/img/ie.gif b/demos/functional/datepicker/demo/img/ie.gif deleted file mode 100644 index 827c498d2618bd4413ee7a827e914c8faee8de6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmZ?wbhEHb6l36K_|5_WumS|NlTV z^Z)-d|IYx`GyI>)V9dafX3Q`%4XAdev9WPlTH4H+Kn4HLoH+v|N5Nfx&t~}n&#en{(Sy?-dEMfMB=mY zh`|P)j{<~;hf{$U0VvH&q414LA+AUgUm9Y^D2@TI00qElpcv2sWk7C1LKUC~YJj%@ zU37FEP!AY(h4l2wj0~sU*c}v7}HUEtbklml5$9DAy_IL{vxAzR&k1UrA=RGZ|MI>}EFaGB2$$O<)ob z7J_f#>&D7-Uldp0s@DIgH{Lax&E}@2rsn46j*gDDwzjUWuI}#cA+z~*OG|HWZ-0Nk z#bOy68X6oN92pszoSYmVAOGECdeYeVw54U`+O?JT_CI=h*82L^ESB|wfxw+Re-01Z zY&NUaIz2t@a5$V!r_1GXyWL)|H)yj3r>6e4+n+2ftSl~WxZOdI=O3@v=kxjfe&1id z)z#H!e*d%O<<0f=U@#a61VW+E#>U20An6Je3b zx!?BwWQt^P)=sweSwG6CLTh-+0V_T2h;FU5-;^m{d7S&`Yk~gm#fQ#;f=(y1_hQ3q zeK)?Nf0=w#^tSH>yq=KKBd()3({4XKA^zr2V%fP6=fr76XCBiNb~5Xz=H}>)Y3ElH zJ*88DQF4rMS6mofU#T49#c9tkS(|nFuKg45`e&T9@motjG=$Uk7fhUAYCz8a#I0+L diff --git a/demos/functional/datepicker/demo/img/lb.gif b/demos/functional/datepicker/demo/img/lb.gif deleted file mode 100644 index f204918fe54fdb589b77b4312e2464146c04961f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 903 zcma)*ziSjx5XT24vUVq8IKf7*NkR%?niVYsLDz_o!r}}fMr1t1Kj6v(5%*BZku*El z92juRQ=2U>8fA+qJVCfpvANRDa{Rt`LSpB#EN^DtkMHOE-Mx1GYINq5?Cqs6eofk{P+WM2!V= zT+%kFlVE>H5fVem20>_IH$@3eB!L9eWcF(|olWcSbv3QZFJ(~|`8e;4I^C+{ zg?&*OV#h~uIP(Ay(}vv$HY6F57?}VyBH_p=E~*a+2PA}Mff?!}B=q2TxEYcONF2q1 zJY@J!umNeFTi}Q8h!pL|S2IuVFH(#hf&yyrK8XL{Yc)&^{{khC>1=W)8x8lKBqvwy z)T7P4BaPPD>Uuujf8K1}y}$G9=I5=((WlGrcV8?FPCu-E)RS{-{l)Cv@@<*i=*xE1 x|2lcO{p!T=>4Tqdd&SP>D~sdSvE7ev)?csepC3HBl-yd___T5A!?zw?`~zJmo!$Td diff --git a/demos/functional/datepicker/demo/img/next.gif b/demos/functional/datepicker/demo/img/next.gif deleted file mode 100644 index be0959b1bd97bc5892a6a50d10b108aea4e890f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHb6krfw_{abPHl;`I-@mUByi@Tf3nNHC2SkA68JLV)@*7Vt-E$->CMz|NrfPt>_6 zHL)Z$MWH;iBts!2BUQoO(>H)Y2dIbvWC#PZ6vwVR9}T>mSMODQeRg(w%#PS4t~~0B LE8grJN4S``10y-dHfbs$ZM-u}-PXGfWQxgXVmtBOx zf(3`$1;qIrCLCa7Vq@ZTx)bq%p^2HBL!uzT;Xxw{yOLf7!^Ota(+y-@IyOvHbz$RS zVNg&w(C9aj%j8%DEw W&CN+`7d_n(@b=cM{OfEi4AuYxcumFt diff --git a/demos/functional/datepicker/demo/img/prev.gif b/demos/functional/datepicker/demo/img/prev.gif deleted file mode 100644 index 95d840f471b222626df33f4066065aaa87cbf16a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97 zcmZ?wbhEHb6krfw_{abPHl;`I-@mUByi@Tf3nNHC2SkA68JLV(_#1aGJaeb{c&F#v usef)Nv@BXtBWvz)TXSjO>3yjTn^!9G|JvuDf7kJZ1~2=@iktv025SJ{;v%B} diff --git a/demos/functional/datepicker/demo/img/se.gif b/demos/functional/datepicker/demo/img/se.gif deleted file mode 100644 index 7301c598e42429f5424c57410e409e3cae2e9f1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmZ?wbhEHblw=TK_|5aEmPRo%gB(v!*A7?f@HBqbJd-m|YeuGly5C&8a=U^V7Z)Fz X;-+Zk(=|c)@-ngcd=9G&6&S1myfQkZ diff --git a/demos/functional/datepicker/demo/img/tab.png b/demos/functional/datepicker/demo/img/tab.png deleted file mode 100644 index 01c8ab41714fb2d755d5c3da3fda9bf77fffd6d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1717 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjD~;$y7$2bRfl&?&#~tz_78O`%fY(0|PTd zfKQ0)|NsAg{{8>$=f4l%|GxY7^X2EiFFyZ#{o&iQ_un48`+o1;?xA2`|;@u*N&XKzVGyvJx9-NJ$7N;k&EkgA6&cp*rE-4m#o`9W$F5lFzsfc@f z_oSalqD0$8r`wutY@&|@*c@fv{byU7_5E3Olirf^`|C7bJkDM!Zn9Np_v-oQd=hTf z?!2RW&ga49vulFaGJRKfKNpa&GrDc*n~a@}rt=ur7+$@&ZH@Z50ETM|JPF5*StZ>_7=4Fm$oKmHu9nxgT(|w}mi_O1 z)t}E_ZR(CZeN#DMx}Cz_+=RB$!ml0Qjp{Rv*BIw}K0n>Gb^iS~4`*&jIQu?qzxQdb zq|MLM_LVl@_eqQdh2I;`#rf+GtIFqF9Vt40OU=6&^Sh>SQICfSO z8|WCmXY`h0Ve3!+TURTjSMlQI^YzEu{RHCvKc6iiU$txZ_l@^|vaP#+_I9)W-@33F n3}i<(hQ0Vw28LqB?8rLCc9-=j)ekRqg0i}&tDnm{r-UW|9wgw0 diff --git a/demos/functional/datepicker/demo/img/us.gif b/demos/functional/datepicker/demo/img/us.gif deleted file mode 100644 index 39c472e26fc48ae016a336e8ea301dda3d2738cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmZ?wbhEHblw#m#_|Cv^=FAxehBN_z0tJOi1A}G(?tTMLRJbkGS0ThmttVptbTSr kcQuzN*OnK|lX;}3gh)-&3|h|H!zAmqbT zI5Zq=<`9;X(GYNOY!%>TOYr!Rc%+3 Gum%9YP%w4? diff --git a/demos/functional/datepicker/demo/jquery.localisation.js b/demos/functional/datepicker/demo/jquery.localisation.js deleted file mode 100644 index b11e37835..000000000 --- a/demos/functional/datepicker/demo/jquery.localisation.js +++ /dev/null @@ -1,64 +0,0 @@ -/* http://keith-wood.name/localisation.html - Localisation assistance for jQuery v1.0.2. - Written by Keith Wood (kbwood@iprimus.com.au) June 2007. - Under the Creative Commons Licence http://creativecommons.org/licenses/by/3.0/ - Share or Remix it but please Attribute the author. */ - -(function($) { // Hide scope, no $ conflict - -/* Load applicable localisation package(s) for one or more jQuery packages. - Assumes that the localisations are named -.js - and loads them in order from least to most specific. - For example, $.localise('jquery-calendar'); - with the browser set to 'en-US' would attempt to load - jquery-calendar-en.js and jquery-calendar-en-US.js. - Also accepts an array of package names to process. - Optionally specify whether or not to include the base file, - the desired language, and/or the timeout period, e.g. - $.localise(['jquery-calendar', 'jquery-timeentry'], - {loadBase: true; language: 'en-AU', timeout: 300}); */ -$.localise = function(pkg, settings) { - var saveSettings = {async: $.ajaxSettings.async, timeout: $.ajaxSettings.timeout}; - $.ajaxSetup({async: false, timeout: (settings && settings.timeout ? settings.timeout : 500)}); - var localiseOne = function(pkg, lang) { - if (settings && settings.loadBase) { - $.getScript(pkg + '.js'); - } - if (lang.length >= 2) { - $.getScript(pkg + '-' + lang.substring(0, 2) + '.js'); - } - if (lang.length >= 5) { - $.getScript(pkg + '-' + lang.substring(0, 5) + '.js'); - } - }; - var lang = normaliseLang(settings && settings.language ? settings.language : $.defaultLanguage); - if (isArray(pkg)) { - for (i = 0; i < pkg.length; i++) { - localiseOne(pkg[i], lang); - } - } - else { - localiseOne(pkg, lang); - } - $.ajaxSetup(saveSettings); -}; - -/* Retrieve the default language set for the browser. */ -$.defaultLanguage = normaliseLang(navigator.language ? navigator.language /* Mozilla */ : - navigator.userLanguage /* IE */); - -/* Ensure language code is in the format aa-AA. */ -function normaliseLang(lang) { - lang = lang.replace(/_/, '-').toLowerCase(); - if (lang.length > 3) { - lang = lang.substring(0, 3) + lang.substring(3).toUpperCase(); - } - return lang; -} - -/* Determine whether an object is an array. */ -function isArray(a) { - return (a.constructor && a.constructor.toString().match(/\Array\(\)/)); -} - -})(jQuery); diff --git a/demos/functional/datepicker/demo/ui.datepicker.alt.css b/demos/functional/datepicker/demo/ui.datepicker.alt.css deleted file mode 100644 index d07a6e7bf..000000000 --- a/demos/functional/datepicker/demo/ui.datepicker.alt.css +++ /dev/null @@ -1,158 +0,0 @@ -/* Alternate UI date picker styles */ -#ui-datepicker-div, .ui-datepicker-inline { - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - padding: 0; - margin: 0; - background: #d8d8d8 url(../img/dark-bg.gif) repeat; - color: #008; - width: 220px; -} -#ui-datepicker-div { - display: none; - border: 1px solid #008; - z-index: 9999; /*must have*/ -} -.ui-datepicker-inline { - float: left; - display: block; - border: 0; -} -.ui-datepicker-dialog { - padding: 5px !important; - border: 4px ridge #88c !important; -} -button.ui-datepicker-trigger { - width: 25px; -} -img.ui-datepicker-trigger { - margin: 2px; - vertical-align: middle; -} -.ui-datepicker-prompt { - float: left; - padding: 2px; - xbackground: #d8d8d8 url(../img/dark-bg.gif) repeat; - background: transparent; - color: #008; -} -* html .ui-datepicker-prompt { - width: 185px; -} -.ui-datepicker-control, .ui-datepicker-links, .ui-datepicker-header, .ui-datepicker { - clear: both; - float: left; - width: 100%; -} -.ui-datepicker-control, .ui-datepicker-links { - font-weight: bold; - font-size: 80%; - letter-spacing: 1px; -} - -.ui-datepicker-links label { /* disabled links */ - padding: 2px 5px; - color: #88c; -} -.ui-datepicker-clear, .ui-datepicker-prev { - float: left; - width: 34%; -} -.ui-datepicker-current { - float: left; - width: 30%; - text-align: center; -} -.ui-datepicker-close, .ui-datepicker-next { - float: right; - width: 34%; - text-align: right; -} -.ui-datepicker-header { - padding: 1px 0 3px; - - text-align: center; - font-weight: bold; - height: 1.3em; -} -.ui-datepicker-header select { - background: #d8d8d8 url(../img/dark-bg.gif) repeat; - color: #008; - border: 0px; - font-weight: bold; -} -.ui-datepicker { - background: #f8f8f8 url(../img/normal-bg.gif) repeat; - color: #008; - text-align: center; - font-size: 100%; -} -.ui-datepicker a { - display: block; - width: 100%; -} -.ui-datepicker-titleRow { - background: #d8d8d8 url(../img/dark-bg.gif) repeat; -} -.ui-datepicker-weekEndCell { - background: #d8d8d8 url(../img/dark-bg.gif) repeat; -} -.ui-datepicker-daysCellOver { - background: #3c75c4 url(../img/active-bg.gif) repeat; -} -.ui-datepicker-unselectable { - color: #88c; -} -.ui-datepicker-today { - font-weight: bold; -} -.ui-datepicker-currentDay { - background: #3c75c4 url(../img/active-bg.gif) repeat; -} - -/* ________ CALENDAR LINKS _______ - -** Reset link properties and then override them with !important */ -#ui-datepicker-div a, .ui-datepicker-inline a { - cursor: pointer; - margin: 0; - padding: 0; - background: none; - color: #000; -} -.ui-datepicker-control a, .ui-datepicker-links a { - padding: 2px 5px !important; -} -.ui-datepicker-control a:hover { - background: #9dbae1 url(../img/hover-bg.gif) repeat !important; -} -.ui-datepicker-links a:hover, .ui-datepicker-titleRow a:hover { - background: #9dbae1 url(../img/hover-bg.gif) repeat !important; -} - -/* ___________ MULTIPLE MONTHS _________*/ - -.ui-datepicker-multi .datepicker { - border: 1px solid #008; -} -.ui-datepicker-oneMonth { - float: left; - width: 220px; -} -.ui-datepicker-newRow { - clear: left; -} - -/* ___________ IE6 IFRAME FIX ________ */ - -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -} \ No newline at end of file diff --git a/demos/functional/datepicker/demo/ui.datepicker.demo.css b/demos/functional/datepicker/demo/ui.datepicker.demo.css deleted file mode 100644 index 2920d857f..000000000 --- a/demos/functional/datepicker/demo/ui.datepicker.demo.css +++ /dev/null @@ -1,53 +0,0 @@ -#tab_menu1 { margin:0.5em 0 0 0; padding:0; font-size:1em; } -.tab_group1 { clear:left; padding-top:0; display:none; } -.demoLabel { float: left; width: 18em; } -.ar_day { color: white !important; background: #eee url(img/ar.gif) no-repeat center !important; } -.au_day { color: blue !important; background: #eee url(img/au.gif) no-repeat center !important; } -.br_day { color: green !important; background: #eee url(img/br.gif) no-repeat center !important; } -.cn_day { color: red !important; background: #eee url(img/cn.gif) no-repeat center !important; } -.id_day { color: white !important; background: #eee url(img/id.gif) no-repeat center !important; } -.ie_day { color: white !important; background: #eee url(img/ie.gif) no-repeat center !important; } -.ke_day { color: red !important; background: #eee url(img/ke.gif) no-repeat center !important; } -.lb_day { color: white !important; background: #eee url(img/lb.gif) no-repeat center !important; } -.nz_day { color: blue !important; background: #eee url(img/nz.gif) no-repeat center !important; } -.se_day { color: blue !important; background: #eee url(img/se.gif) no-repeat center !important; } -.us_day { color: white !important; background: #eee url(img/us.gif) no-repeat center !important; } -.za_day { color: green !important; background: #eee url(img/za.gif) no-repeat center !important; } -code { font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; } -pre { clear: both; padding-left: 2em; background: #eee; } -#embedButton { width: 7em; } -#embedButton + img { position: relative; left: -21px; top: -1px; } -.tabs { - list-style: none; -} -.tabs li { - float: left; -} -.tabs li a { - display:block; - padding: 0.4em .75em; - margin: 0; - border-left: 1px solid #fff; - border-right: 1px solid #ddd; - cursor: pointer; - cursor: hand; - text-decoration: none; - color: #eee; - border-top: 1px solid #F9F9F9; - background: #78A5CE; -} -.tabs li a:hover, .tabs li a.over { - border-top: 1px solid #000; - background: #333; -} -.tab_group1 h3 { - font-weight: bold; - margin-top:15px; - border-bottom: 1px solid #ddd; -} -.nextFeature { - margin-top: 15px; -} -ol li { - margin-top: 1em; -} \ No newline at end of file diff --git a/demos/functional/datepicker/demo/ui.datepicker.demo.js b/demos/functional/datepicker/demo/ui.datepicker.demo.js deleted file mode 100644 index 3d7d9b640..000000000 --- a/demos/functional/datepicker/demo/ui.datepicker.demo.js +++ /dev/null @@ -1,81 +0,0 @@ -// Initialise the date picker demonstrations -$(document).ready(function () { - // initialize tab interface - tabs.init(); - // reset defaults to English - $.datepicker.setDefaults($.datepicker.regional['']); - // replace script tags with HTML code - $(".demojs").each(function () { - $(this).before( '
' +
-			$(this).html().replace(/
" ); - eval( $(this).html() ); - }); - // Localization - if ($.browser.safari) - $('.languageSelect,.l10nDatepicker,#frFullFormat').attr({ disabled: 'disabled' }); - else - $('.languageSelect').change(localise); - // Stylesheets - $('#altStyle').datepicker({buttonImage: 'demo/img/calendar2.gif', - prevText: ' Prev', - nextText: 'Next '}); - $('#button3').click(function() { - $(this).datepicker('dialog', $('#altDialog').val(), - setAltDateFromDialog, {prompt: 'Choose a date', speed: '', - prevText: ' Prev', - nextText: 'Next '}); - }); -}); - -// Load and apply a localisation package for the date picker -function localise() { - var input = $('input', this.parentNode.parentNode); - var date = $(input).datepicker('getDate'); - var language = $(this).val(); - $.localise('../../../source/i18n/ui.datepicker', {language: language}); - $(input).datepicker('change', $.datepicker.regional[language]); - $.datepicker.setDefaults($.datepicker.regional['']); // Reset for general usage - if (date) { - $(input).datepicker('setDate', date); - input.val($.datepicker.formatDate( - $.datepicker.regional[language].dateFormat, date)); - } -} - -// Demonstrate a callback from inline configuration -function showDay(input) { - var date = $(input).datepicker('getDate'); - $('#inlineDay').html(date ? $.datepicker.formatDate('DD', date) : 'blank'); -} - -// Display a date selected in a "dialog" -function setAltDateFromDialog(date) { - $('#altDialog').val(date); -} - -// Custom Tabs written by Marc Grabanski -var tabs = -{ - init : function () - { - // Setup tabs - $("div[@class^=tab_group]").hide(); - $("div[@class^=tab_group]:first").show().id; - $("ul[@id^=tab_menu] a:eq(0)").addClass('over'); - - // Slide visible up and clicked one down - $("ul[@id^=tab_menu] a").each(function(i){ - $(this).click(function () { - $("ul[@id^=tab_menu] a.over").removeClass('over'); - $(this).addClass('over'); - $("div[@class^=tab_group]:visible").hide(); - $( $(this).attr("href") ).fadeIn(); - tabs.stylesheet = $(this).attr("href") == "#styles" ? 'alt' : 'default'; - $('link').each(function() { - this.disabled = (this.title != '' && this.title != tabs.stylesheet); - }); - return false; - }); - }); - } -} diff --git a/demos/functional/datepicker/index.html b/demos/functional/datepicker/index.html deleted file mode 100644 index f62d05a1e..000000000 --- a/demos/functional/datepicker/index.html +++ /dev/null @@ -1,887 +0,0 @@ - - - - - jQuery UI Datepicker - - - - - - - - - - -
-
- -
-
-

Defaults

-

A date picker can easily be added to an input field with default settings.

-

Default date picker: -

- -

IE select issue: -

-

The defaults are:

-
    -
  • Date picker appears on focus
  • -
  • Text is in English
  • -
  • Date format is mm/dd/yyyy
  • -
  • Clear/Close controls show at the top
  • -
  • Month and year are selectable directly
  • -
  • 10 years before and after the selected year are shown
  • -
  • Show a single month
  • -
  • Select a single date
  • -
  • Week starts on Sunday
  • -
  • Day names are clickable to change the first day of the week
  • -
  • Days in other months are not displayed
  • -
  • No date restrictions
  • -
  • Clicking elsewhere closes the date picker
  • -
-

Processed fields are marked with a class of hasDatepicker - and are not re-processed if targetted a second time.

-

You can override the default settings that apply to all date picker instances.

- -
-
-

Invocation

-

The date picker can be invoked in a variety of ways, as shown below. - Also shown is the use of an image only trigger, - and how the controls and buttons appear when disabled.

-

Datepicker appears on focus: - -

- -

Appears via text button: - -

- -

Appears both ways: - -

- -

You can embed the trigger image within the input area via CSS.

-

Embedded button: -

- -

Enable and disable datepicker with 'enable' and 'disable' commands.

- -

The date picker can also be triggered externally for a particular input.

-

External trigger: -

- -

Or even opened as a "dialog". If the blockUI plugin is available, - it is used to create a modal dialog.

-

Date picker dialog: - -

- -
-
-

Keystrokes

-

The date picker also responds to keystrokes entered in the input field.

-

Keyboard driven: -

-

The relevant keystrokes are:

-
    -
  • page up/downprevious/next month
  • -
  • ctrl+page up/downprevious/next year
  • -
  • ctrl+homecurrent month or open when closed
  • -
  • ctrl+left/rightprevious/next day
  • -
  • ctrl+up/downprevious/next week
  • -
  • enteraccept the selected date
  • -
  • ctrl+endclose and erase the date
  • -
  • escapeclose the date picker without selection
  • -
-
-
-

Restricting

-

You can restrict the functionality of the date picker in various ways. - The first example sets the first day of the week to Monday and prevents it from being - changed, as well as preventing the month and year from being selected directly.

-

Restricted functionality: -

- -

You can also limit the range of dates selectable within the date picker. - Here it's between 26-Jan-05 and 26-Jan-07.

-

Limited dates: -

- -

Or set a range relative to today by specifying a number - rather than an exact date, in this case in the coming year.

-

Limited dates (relative): -

- -

The relative dates can also be specified as a number and a period - - 'd' for days, 'w' for weeks, 'm' for months, or 'y' for years.

-

Limited dates (extended): -

- -

Note that the range of selectable months and years changes appropriately. Also, - note that the Today link is no longer available as today is not in the range. - By default, the Prev and Next links are disabled if they are not - applicable. You can override this to remove them instead, with the - hideIfNoPrevNext setting.

-
-
-

Date Formats

-

You can set a variety of date formats for the date picker, - with the default being 'mm/dd/yy'.

-

Medium format: -

- -

Long format: -

- -

Full format: -

- -

Display dates without the century. The century is then determined based on the - shortYearCutoff setting, which defaults to 10 years in the future ('+10'). - Year values less than or equal to this cutoff are interpreted as being in the current - century, while those greater than the cutoff are taken to be in the previous century.

-

No century: -

- -

ISO date format: -

- -

French full format: -

- -

The formatting codes are:

-
    -
  • dday of month (no leading zero)
  • -
  • ddday of month (two digit)
  • -
  • Dday name short
  • -
  • DDday name long
  • -
  • mmonth of year (no leading zero)
  • -
  • mmmonth of year (two digit)
  • -
  • Mmonth name short
  • -
  • MMmonth name long
  • -
  • yyear (two digit)
  • -
  • yyyear (four digit)
  • -
  • '...'literal text
  • -
  • ''single quote
  • -
-
-
-

Customize

-

You can customize the selectability and/or appearance of individual days - by setting a callback function that accepts a date and returns an array - with the first entry being true/false for selectability and the second - entry being a CSS class to apply (or '' for none). One appropriate - function is built-in that prevents the selection of days on weekends.

-

No weekends: -

- -

Or you can provide your own function. The one below highlights and - prevents selection of a set of national days.

-

National days: -

- -

With CSS like the following:

-
.au_day { color: blue !important; background: #eee url(au.gif) no-repeat center !important; }
-
-
-

Localisation

-

You can localise the date picker for other languages and regional differences. - The date picker defaults to English with a date format of MM/DD/YYYY, - but you can easily translate the text into another language and date format.

-

- : -

-

The presentation is slightly different for right-to-left languages.

-

- : -

-

You need to load the appropriate language package, which - adds a language set ($.datepicker.regional[langCode]) and - automatically sets this language as the default for all date pickers.

-
<script type="text/javascript" src="ui.datepicker-fr.js"></script>
-

Thereafter, if desired, you can restore the original language settings.

-
$.datepicker.setDefaults($.datepicker.regional['']);
-

And then configure the language per date picker instance.

- -

Localisation packages:

-

Localisation packages can be found below under Settings and Documentation.

-
-
-

Date Range

-

Use a custom field settings function to create a date range control: - two date fields, each restricting the other. The function takes an - input field as an argument and returns a settings object (anonymous).

-

Date range: - to -

- -

Select a date range on one date picker, first click is the start date and second click is the end date. - The last example show six months in two rows of three months - with Previous and Next moving three months at a time.

-

Date range: -

- - -

Two months with range select: -

- -

Six months with range select: -

- -
-
-

Miscellaneous 1

-

Set the date shown when first opening the date picker. The default is today.

-

Open at 01-Jan-2007: -

- -

Open at 7 days from today: -

- -

Or specify a period from today - 'd' for days, - 'w' for weeks, 'm' for months, or 'y' for years. -

Open at 2 weeks from today: -

- -

Show the weeks of the year. Defaults to the ISO 8601 definition (weeks start - on Mondays and the first week of the year contains January 4). Change the - week calculation by setting calculateWeek to a function that - takes a date as a parameter and returns the number of the week.

-

Show week of the year: -

- -

Additional settings let you move the Clear/Close controls - to the bottom, hide the Clear control to make the date mandatory, - display the days in other months (non-selectable), - and show a status bar (with a custom display for today). - Callback functions are also added to operate when a date - is selected and when the datepicker is closed. - If no onSelect callback is specified, the - onchange event of the input field is triggered.

-

Additional settings: -

- -
-
-

Miscellaneous 2

-

Hide the datepicker on demand (press alt-h here) or - remove the datepicker altogether if you've finished with it.

-

Remove popup datepicker: -   -

-

Remove inline datepicker: -

- -

(Advanced Technique)
Connect the date picker to linked drop-downs. You still need an input field, - but it is hidden following the drop-downs.

-

Linked drop-downs: - - - -

- -
-
-

Changing Settings

-

If necessary, the datepicker settings for an input (or set of inputs) - can be changed on the fly. As an example, here we change the - animation and speed at which the datepicker appears.

-

Display animation and speed: - - -

-

Change datepicker: -

-

When the option in the select changes, the following function is called:

- -

Date pickers can also be configured inline. - Add attributes to the input control with the namespace "date:" - corresponding to the date picker properties. - The attribute values are evaluated as JavaScript.

-

Inline configuration 1: - - blank

-

Inline configuration 2: -

- -
-
-

Inline

-

The date picker can be used inline rather than as a popup. - Use inline mode by attaching the datepicker to a span or div element.

- -
- -

Show a number of months at once and set the range directly.

-

Inline range with two months:

-
- -
-

- Selected range is:   - -

- -

(Advanced Technique)
- Set initial value of inline date range to one week before and after today's date. - Set the text field to current selected date.

-

- -

- -
-
-

Stylesheets

-

The date picker can be formatted through the use of a stylesheet. - The default stylesheet is used in the rest of this demo - with an alternate one used here.

-

Alternate style: -

-

In a dialog: - -

-

The basic HTML structure of the date picker is shown below:

-
<div id="datepicker_div" class="datepicker_multi">
-  <div class="datepicker_control">
-    <div class="datepicker_clear"><a>Clear</a></div>
-    <div class="datepicker_close"><a>Close</a></div>
-  </div>
-  <div class="datepicker_links">
-    <div class="datepicker_prev"><a>&lt;Prev</a></div>
-    <div class="datepicker_current"><a>Today</a></div>
-    <div class="datepicker_next"><a>Next&gt;</a></div>
-  </div>
-  <div class="datepicker_oneMonth datepicker_newRow">
-    <div class="datepicker_header">
-      <select class="datepicker_newMonth"></select>
-      <select class="datepicker_newYear"></select>
-    </div>
-    <table class="datepicker" cellpadding="0" cellspacing="0">
-      <thead>
-        <tr class="datepicker_titleRow">
-          <td><a>Su</a></td><td><a>Mo</a></td>...
-        </tr>
-      </thead>
-      <tbody>
-        <tr class="datepicker_daysRow">
-          <td class="datepicker_daysCell datepicker_weekEndCell
-            datepicker_otherMonth datepicker_unselectable">31</td>
-          <td class="datepicker_daysCell"><a>1</a></td>
-          <td class="datepicker_daysCell datepicker_daysCellOver"><a>2</a></td>
-          <td class="datepicker_daysCell datepicker_daysCellOver datepicker_currentDay"><a>3</a></td>
-          <td class="datepicker_daysCell datepicker_today"><a>4</a></td>
-          ...
-        </tr>
-        ...
-      </tbody>
-    </table>
-  </div>
-  <div class="datepicker_oneMonth">
-    ...
-  </div>
-  <div style="clear: both;"></div>
-</div>
-
-
-

Compatibility

-

v3.3 to v3.4

-

The jQuery UI interfaces changed again, so here's another compatibility module.

-

Users of v3.3 of the datepicker should use the following - header code to work with their existing implementation:

-
<link rel="stylesheet" type="text/css" href="ui.datepicker.css"/>
-<script type="text/javascript" src="ui.datepicker.js"></script>
-<script type="text/javascript" src="ui.datepicker.compatibility-3.3.js"></script>
-

Download the ui.datepicker.compatibility-3.3.js module.

-

To migrate fully, the following steps need to be taken:

-
    -
  • Replace references to the $(selector).attachDatepicker(...) - function with $(selector).datepicker(...).
  • -
  • Replace references to the $(selector).removeDatepicker() - function with $(selector).datepicker('destroy').
  • -
  • Replace references to the $(selector).datepicker.changDatepicker(...) - function with $(selector).datepicker('change', ...).
  • -
  • Replace references to the $(selector).datepicker.enableDatepicker() - function with $(selector).datepicker('enable').
  • -
  • Replace references to the $(selector).disableDatepicker() - function with $(selector).datepicker('disable').
  • -
  • Replace references to the $(selector).isDisabledDatepicker() - function with $(selector).datepicker('isDisabled').
  • -
  • Replace references to the $(selector).showDatepicker() - function with $(selector).datepicker('show').
  • -
  • Replace references to the $.datepicker.hideDatepicker() - function with $(selector).datepicker('hide').
  • -
  • Replace references to the $(selector).getDatepickerDate() - function with $(selector).datepicker('getDate').
  • -
  • Replace references to the $(selector).setDatepickerDate(...) - function with $(selector).datepicker('setDate', ...).
  • -
-

For example, this old style code:

-
$('inputs').attachDatepicker(...);
-$('inputs').changeDatepicker(...);
-

becomes:

-
$('inputs').datepicker(...);
-$('inputs').datepicker('change', ...);
- -

v3.2 to v3.4

-

To align the datepicker more closely with other jQuery UI components, - further changes were made in v3.3, resulting in another compatibility module.

-

Users of v3.2 of the datepicker should use the following - header code to work with their existing implementation:

-
<link rel="stylesheet" type="text/css" href="ui.datepicker.css"/>
-<script type="text/javascript" src="ui.datepicker.js"></script>
-<script type="text/javascript" src="ui.datepicker.compatibility-3.2.js"></script>
-

Download the ui.datepicker.compatibility-3.2.js module.

-

To migrate fully, the following steps need to be taken:

-
    -
  • Replace references to the $.datepicker.reconfigureFor(selector, ...) - function with $(selector).datepicker('change', ...).
  • -
  • Replace references to the $.datepicker.enableFor(selector) - function with $(selector).datepicker('enable').
  • -
  • Replace references to the $.datepicker.disableFor(selector) - function with $(selector).datepicker('disable').
  • -
  • Replace references to the $.datepicker.isDisabled(selector) - function with $(selector).datepicker('isDisabled').
  • -
  • Replace references to the $.datepicker.showFor(selector) - function with $(selector).datepicker('show').
  • -
  • Replace references to the $.datepicker.getDateFor(selector) - function with $(selector).datepicker('getDate').
  • -
  • Replace references to the $.datepicker.setDateFor(selector, ...) - function with $(selector).datepicker('setDate', ...).
  • -
-

For example, this old style code:

-
$.datepicker.reconfigureFor('inputs', {...});
-

becomes:

-
$('inputs').datepicker('change', {...});
- -

v2.x to v3.3

-

The date picker has been refactored to better fit - within the jQuery UI project. - This has involved renaming the main function and some properties, - resulting in current uses of the plugin no longer functioning correctly. - To assist in the transition to the new format a compatibility - plugin is also provided, allowing current code to continue - to operate with minimal changes.

-

Existing users of v2 of the calendar should use the following - header code to work with their existing implementation:

-
<link rel="stylesheet" type="text/css" href="ui.datepicker.css"/>
-<script type="text/javascript" src="ui.datepicker.js"></script>
-<script type="text/javascript" src="jquery-calendar-compatibility.js"></script>
-

Download the jquery-calendar-compatibility.js module.

-

To migrate fully, the following steps need to be taken:

-
    -
  • Replace references to the jquery-calendar* - files with ui.datepicker*.
  • -
  • Replace references to the popUpCal - object with $.datepicker.
  • -
  • Replace references to the calendar - function with datepicker.
  • -
  • Replace references to the autoPopUp - setting with showOn.
  • -
  • Replace references to the fieldSettings - setting with beforeShow.
  • -
  • Replace references to the customDate - setting with beforeShowDay.
  • -
  • Replace references to inline attributes with the cal: - namespace with date:.
  • -
  • Replace references to the hideCalendar - function with hideDatepicker.
  • -
  • Replace references to the dialogCalendar - function with dialogDatepicker.
  • -
  • Replace references to the $.datepicker.reconfigureFor(selector, ...) - function with $(selector).datepicker('change', ...).
  • -
  • Replace references to the $.datepicker.enableFor(selector) - function with $(selector).datepicker('enable').
  • -
  • Replace references to the $.datepicker.disableFor(selector) - function with $(selector).datepicker('disable').
  • -
  • Replace references to the $.datepicker.showFor(selector) - function with $(selector).datepicker('show').
  • -
  • Replace references to the $.datepicker.getDateFor(selector) - function with $(selector).datepicker('getDate').
  • -
  • Replace references to the $.datepicker.setDateFor(selector, ...) - function with $(selector).datepicker('setDate', ...).
  • -
  • Replace references to the calendar* - CSS styles with datepicker*.
  • -
-

For example, this old style code:

-
$('inputs').calendar({autoPopUp: 'both', fieldSettings: setDateRange,
-	customDate: popUpCal.noWeekends});
-	
-<input type="text" id="inlineConfig" cal:defaultDate="+7"/>
-

becomes:

-
$('inputs').datepicker({showOn: 'both', beforeShow: setDateRange,
-	beforeShowDay: $.datepicker.noWeekends});
-	
-<input type="text" id="inlineConfig" date:defaultDate="+7"/>
-
-

Localization Packages

- - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/demos/functional/images/Thumbs.db b/demos/functional/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..378e981d269cccaac4230ecd36d56ed31f781707 GIT binary patch literal 64512 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 S&zAn}(c&xpDF4Yf@c#f$)5!Dy literal 0 HcmV?d00001 diff --git a/demos/functional/images/ajax-loader.gif b/demos/functional/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a4f384a8cefa4499acba556709c0b8ce342ba23 GIT binary patch literal 3494 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 L>OWusHFy0#S#f|i literal 0 HcmV?d00001 diff --git a/demos/functional/images/body_bg.png b/demos/functional/images/body_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..2213c6ace18f6224940e313f81c2e875a4dd844b GIT binary patch literal 11762 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 b4ds=r_NJ3}pi+Om^sv5Sdl`4>&g1_DQ2Z98 literal 0 HcmV?d00001 diff --git a/demos/functional/images/content_bg.png b/demos/functional/images/content_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb278c7ee39c1a3990b4527a2708905316cb0b0 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0y~yVBP~{GqNxPN&bubjX+d@Pl#)1Xz2g{|EsI3`}_N2 zV`D!_Wqtxm33<9WhE&{2E(j2jVLdFuv6+EEJ6rzqw8quXfwByqu6{1-oD!MOWLPA1hWo7g8^X25^LPJC4<>kY|!U_rs6ciK` z6&1t7!wU-wm6Vi}m6anRB8rNNR8&+VBO_H+Rf~&@)zs9YqN3E*)k{iBG&D4#qoXx7 zHDh98N=r+%w6wIfwPRyr%gV}hbaZreb>rgV%FE03^z`E6gsH4Y|_)yZEbBcGBWDx>+S69GBYz98XD~F?HwE(va+%o8yg)R z9ka8uot&JSnwp%QopW+>TwGk5o10x-UESQ=T3TA%-Q7JrJX%{@Jv}|Wyu8}l+PuBJ zeSCb{+uMD8ef|9WIyyT1{rv+10y;Z80|NuQy1Kf%yL)-bsB+ox+*eD573Q2|vaSFQkH1jhZ=6#yP z2C@jAF!E*A@AqkNNWX<1XpI{xcK=CcdZIbq_FEIT4-59of}#+-hlSW~>`EFv$rmiLuE;hy+=T?vZMD(+XDzPx_I^Bs#A5%Jd; z{iyUF&%~G0Fw|z(2yqkwF_PNqM{|!yuyz>Rak3z}LH1)=Buhu}sc=^$2k%h6_l-f8 zW!AROO^ASc&{k0!$^!J8KdREWcu~hipMnLELhfD1c3BJOd8e66;D+XOU%#L2oU+Sr zHj=jr-1l6)x1q`6_a@W4 z7Ce_GMDB^LU&C|++3njZvh`LoWG*{}NV*5sRm4tcad~If4DoZtL!hfJN*tM4W-A2q zU}NgXUCFGMSV4SH#&3LoJo@d+@Q%lM#_&LX{pc+)qo^#)MwAl?;d}HvoEB)lgr^r^ zaF)+j+!CA3013{Ap^r zjE#*21O%+DtsQQ#-2lqDdAc};RNQ)d(U7-+L4f7p>K7|t^tVU}N*rMN=PHo$VdlgQ zv)?7ISemKVX0?BB&(|jc2jkux1*5Iv)jyx#yQl4(Tg&+W-V&Qd`PZHUO=R$N^>bP0 Hl+XkK_Fp+9 literal 0 HcmV?d00001 diff --git a/demos/functional/images/dot.png b/demos/functional/images/dot.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbcff237599766938baed94b1eca2430d1a4a9b GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%*9TgAsieWw;%dH0CL#^d_r8$ zoH_IV|NqOqqGdo4&H|6fVg?3oArNM~bhqvgP*9@8HKHUqKdq!Zu_%?nF(p4KRlzN@ zD78GlD7)Byv%DWrjTlIcb5UwyNoIbYLP%zADuaQkzJam6fki;~dugBwE>9Q75RRG2 Z2|zXz1LK#%lx08`gQu&X%Q~loCIHxLG{^t| literal 0 HcmV?d00001 diff --git a/demos/functional/images/favicon.ico b/demos/functional/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77e3bd2dd354989533e0d4be353a17461f823648 GIT binary patch literal 1150 zcmcIjODIHP82tz3Z6<`QC`!aa?3I;?1slnN*;y+otC5|xq8Z~A@+donrb$Uzu@NCs zUMqP-%Hpty4 z9C{&t8mL|dYFB{b86A@xVNhc&dorrQn3eDfuVfY&JpeABf%gF53j%kqz|=8Nxfszg z=r=4qkdsR89)SXS?%V=~fp6E@BTyk4x{n9;QAmCzxdHL+-;HuT*FgIQ(6SE9pGM;@ z_93<6N3`);dJk#3$&q#bq z2`rrf;xEq`=0y0p|aOTdor%% zK4%eAXVBjoeuo+v?xlJXzN#i#< Ib`}Zu1I8RY3;+NC literal 0 HcmV?d00001 diff --git a/demos/functional/images/footer_bg.png b/demos/functional/images/footer_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b96db440ed84c35b023d90e55a2941569ba69314 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0y~yVBP~{J94lA$xq8y`(vi!j%-|wf* z>!T+1&OP2g-&a~X-_PHl8EE$6UHf;=y!X3%@87@IFF)Z?`@0oeYw`lHhF& zq?*Kmgj?ZPp7pwCfvldKi(Az|(o@ zks&;Bdx3TwxRAGd=}oZA#_I3OqGv_>fE6c4g>B%}2U_v8sXTTskPgtVfEXjWrwU}w z!mTQQ+a7>@mGI_X?#tJYAU;$P28Ci4dw#a=T23%CA`<8d2CZGYp!PIwy>@B0_iCV+ z#u>1;?leBQ3JMdRoSR!OZ>^7%1+v}z?(J{hZVEQ+)r@sv8y z0u@P22OG0u)*f^A^zD7|y*sULZGFCazWgz^bfAj13!9?0%Cob_->bWKySlWf=#%Ejo2ggUP0CTLobV)Y z(%P6g??pl3_vih&$#c|x?)!Ic(~J*kvfICl#S4R?kSD?KQ}M^IDnD5nulav?9O~Z- P6lCyp^>bP0l+XkKh7vsU literal 0 HcmV?d00001 diff --git a/demos/functional/images/functional-demo-face.png b/demos/functional/images/functional-demo-face.png new file mode 100644 index 0000000000000000000000000000000000000000..cf21240a820254c6ab6386a3624995e806b92c21 GIT binary patch literal 43971 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

u~01aOK1+6hLQub*AS0?@EBLwa^$yZ zrXf=wi$PBO`Ab!5m#SH_vPXUMbuWC|(pjsI7c)q=@Ber^UdmF0`uN%6yDbl(*Z=(X zQoC11_eG1&U!Ys`Pv)?jDo;PTYVTT8ALA;P4ofnK7Myoo-Jm;)(?km%r|fc zfB!gQEkWw zG)rgi`oB+kzkjpAY>OFiYQdMs%FQfYclgg~e;ms*5(HOXaqiDWXDYbU`hxvG&stlg zBUn;*VdF2e4(4-bYp!meJ#Y5D^fHr4ef*F4XDdB#4pp;j*{&*Hou|n@@Yl+}E*7cH zR+6P^_pjYw1IvvU*RMU4T}iTxp)zZeEgk@+J->a+)*a_-%vN3bwH>?ixXZJsb9e7O zUSqOS4iy<~Dm!qf&>l*_PO>xpPHY zhNX2C85b{=Tew~rMqibEHNDDqY^Y4nD5@p6BhplwlU)UaXVP`$xq11;dMibkH3fwQ zg*AGT=3auL3Z2!aS~66Z>IquV@(3{l{u{OrMgj=BStJ1K#T^S5{k3tRDD| z@_^vr0H50lB!HnPijV-rHpu%sLk92?rmd_744d*vM;HJ=tPE|8f~_+atjVaQVfaM4 z=KMbJ^pl+fa18frGUVxIhmYq#HxD&3;GOr|M2C3fdP9K~M7%$`Pn1d-lGLUT0BVc5 zB>iakfPszuBtYcX;qf8h+*LJ&2FA2QPXD#(z}Y(Ym;q2RCH0j9xl|#y_ zXc8457U6!uksKREv5Zk$p@@o7iBSX<2Sr8!wZ_VzxJUwIIL`F~eT^lEL*DF1&1*M6b@ZgXy+xfet06<@Z)FiuDGa%X;5Iy z0FhhgG>jR5qH&i2lxO72;#_E&ak8tuR)M4i45!7 z34jp++`2{%6-Yp(drN`gjbg%MV&Y-~CI4+#(%AMR0r>Qb-?M6=qdj4%yLRSuIUh5i=xRY7 zZMm}b*X11CxL$1gzMiqFxJDG(Y2fo?n<5z%1_TRf*Bz|ddlstjO+|;-Wp!-ZSYls0 z4cK(bK;Grdat;N|rMX8raP(D1r*y2`d9)19!km6)3uxIaSj5y-Rbm10UHT7ehN5Z{ z#V?Xe5hkb|`5UpoYv#QTd7yU~>!r*%V^_FTZWxYRMVh+mjAMuNz-5xoIGfqFFEI%K&;-i?O8O$Ck)O;3I>4;fz$ikD52Y)`vp0V zfdEB_PhrKd5=A5m* zT!lIV0Mur0o4V)(-=NFH*P^%&cB`kS4W09U@4dO0JKJ=?>#w&B;h;gL1k?@IN9Fky zlU6`2Z~rlqlN2b@Z19*~OXhq#6;3R!=UbzaQG~dDaPHE+q!z;Z*XNswteQY1e9lXoPh$+hA@(wgN>Hw4Ak!W4-~2WyWv-^96c&cZJic;v4r0>L~+-`2Y`2B0y4iQLB@+G4hAK*PmNHR z>#EV%aIptNN7dw=%e8O=`Zh_8gEFmObmNHJtScAbjr0jkYUIaN!{xpza6LPtCL+F> zA3QF~%dQP=l;{^67g%1Hms`o*5P3j&s1hp6QOp$u!5w{_{1OaOAVAcEAR%VJozUaM z25sN8!**;jYONH&Br>J+_G1RXY?UI3M^+BfYGn|wvU)_8%>BPDL%x19oFypFZ~zQN zPz)*-i*8clqPr3^fU4QP?(e9!T^dC<@{=^Yd})fZCF~}(*LR;(ckkcU=f>PQLo>WN z7gc=pIF{BWLV>yM$-vAn4984isCx%21I^x1uQC>K$ZPJ$w#wi(L&Q;psZOhx1%${& z0y6#Uc%`FrKe?DV_CI|SoF$f$gIkJ|Ms^B+l)>Efrb-olQm?a|AaQf&e+;h=KDgv| zq)K2$&D`4Lz{U&nP|>YR+#b8A!3U3u{z>|Ak+OA%_FAjW`KG}OW-G63KUW4+0O$co zOzY`$)80|ccAAwpZl;uD_3k%7u?B)+*24^U(=HD)FYpgyRzh1cnNo!dQ4#;0yprMS z#BqOrv|@rQrB2|oSTElWpFF*A^I5HM_wRsk@gw#925_%kDv=40B+$czN(g23&Os|` zJ>so3C%iKYQl*DK7(Qgyfs#i-fD_i3Kmt9&sN@rAIr(?G2WJ%CvTxwNvtIF$XvA1` z{HT>69|2T)1hxF-7~rmmI2bp@RhySKQpR%KR23s{2W&s-^ zAmO?3Lqa^*SMth&KZ&6)wFz<8xHDz@57Lj14wef6u?70Kp;GmkiXX1e=;vN!%sE@w zF2ySX#^t4N^qHdHaCvdJz=z$6$|k^>0T?x9&afmOU0vz1zovdQ;nXL;ewX6^u&rUk z@!$SD5!`XixK1H55k;D`)jFB?9P!4ZM$%HRhzCFxfm(!3D1rWss3h~1dhdCkShH;C zh|Qj56bRwQkJ28&4Od^pY%_u_K{x^qkqt zp80%!C;h>hzpO3c8btM+{LbhmejFZFz2gW^>W*(%wJ)a%MbXy%$2^u6 zU;i|xUxWhpYdZdi1&e;4{etq)mdoYvhNN%!d0o}} zU;jFL!k7e5R%!9n^XM`@|8-@v@t^(l-M4QhtLIMNsfF9?mW<1r{>)HL_;|{*Z8KL~ zsq}h?Q5}X)nexemvHdRYJzeD)5lUNC06_2hnM7EID9AZ>-W)q-%zz-AF_q_ScS4`a}gH`BzR~%+mqr2J1N` z4x|EIkC`!7U%i}d;0gf)K>NY%5|lFDqSJmU#^NiWP1`1N3>EuE#08+V080Y>`%o#l z&#)ee9vUQRSj%>C^}gLAzaYh<<&{q8AsfbT) zlN29qgaCv}l`beFtwyg^PctL{xQE(@;fD(Ku_@A-di;x};@tFK=c{FrNr{buoj&>w z@(phUYOhv(on=rRU9heH+qk>C2X}XO2=2OZ*90fQCAd2TcMTBSCAh=oJLmkq zf2LNg?wOjInyU45_nLmQh~EguP>4mG_lW023ncd<8jyyzNntwWp)rpBM#z82L;9DX z;)iC%>4nzeaY=O?^mJi+1XMUSj+oJKY1an76Y~$jMlUQY@L7Q+>XX7REcG);N4xVp z1IHiq$J5mkBS_J5A$t$TOVOn0*}v?ECCrBK^5B$7I{~rVPXqz&CEN*v)t+`(WO*3m zBzVgt)f=r(-c8v%V)6DY4I#uc-bPptA{yuzC{q@=`Zjvnc|LlvaDSX3H-a!eGcR=X zg;^poH81xY$gCcyHa9EdB9o_x$WXG17m~<=jmwy}96`BtsFDw-8|4l+UQwymp3Yo5 zVaXj!6HltEyVY4l&SvF zsq?*0qz%h$Q9z;B>)zk-Q*P^x$kK_?dwd}O z5m5W;7`1c&!C58O*h>$8E4q~VS!hSG*}GA$)$P9LW=Pdy=%@YDtXJJC8QOo_!b@s0 z=V3FoS81F2w<6yxoE$y|8$8r9J|=D*1blwxpc*ytmKar+t;{wn7_R~LU_%YgydF`6 zB;&|#rIXMZ9XF5SBZ>BtvgTBh20qb7M@!O=iFtn{>hq-C!3{Z|UH&Z~yKuRexgu;E z-NwKV?C3K6aPSBLVyGO?ic?=wU*>b~{<&0|xq-UVe1dz87KMZ_yA4(aTkG$2V{9`c zP|YBBulF;xVrpQ73LsJ?100}LCa`gL6!J-%bMkHzp;{u73y zDwrD(v*^3c>>2fBl(Qer%j^-H>4l`ORrY(BT=#2qv)%ZyK^WiCPq?P@D<}xs6Lq+y zY}&Yr4e>Hm)GHI%HAj3Ue?LJ&!iWj7ha>q{=9((3zV%>3qQi;dehNwi!Az!I3<2vz zvC)Jb{=3~71W!SJ9R_Bm5BK|HH-KK;cfOj`@G7CsE1RFL1N&un>+PkH3pE+LJs;m8 z)JO?G{PU^ULTzr8nT=ZOF~WJAE66m?M+9f*%+>SC1-b+GyVp-(b|F?=RQ2mi9+rR9<`=W! z<`^eA)r?zbTqmN(>olkOl=a>5Oe5|kQu>PBXgXzB)%2g%jC_myTr>+e;PRO{;#~iz z9?ov}{Z(v%8?{Xb3GDoJZ^`?e))uO@i3q|klHKe2+lp@EbCEGsNUj~^l%Fl4ee_YB zP?7wZr8T;JKC(%a1qtbD1lo=-`wP(P)z);}g%TZ>Uh4bgAI`pH#B|Xz4>lk1lNm^* z0wXD;Wwd1M9WUA#CG>uhyz^?h?LU?acIxknW;APIS=7NZt+m862?fbHqQtAQQ)hC_ z3|Fr`ffsym5xB;HLFNDW;XgmY4b!+si$>;Q=qBe0F&-X|S?BS=>HE`7x;f+;GF#DU zZIMfy!`P&yVZbx3eGD@cYgs@i>9SzAEux395I)*4RNa9gU-8nZ3czORrISP~&)-M1 z5wfs~-U$*Uu4&K{UZk2il?N%E;697t;S8Psn48!YnnbpBbx{t17y5fgE$Id(X33tR zZJchpyG;6s0$2t|klcp{z0pqn;)9SU?Z|~-wo7Rm2U4W)?BJC)RxeVtIYli-H9?QZ zyqVU{-G$;q1EPSkr5MErjcMi2g+DzeMWlSpLL`V` zMXqeF@E946SeaDK$GxJzkry;c;K>V{V_@YYVVtTctrSGZ-_+OQ2X&XS*>f?kUc)pf z!tYRHFyOWHA-Qf-;9Is(e5k?7NTM}A{xmP&wq>HoG&wMe*(mAK;e1=T9L3cGsMu0H zd7hEPk4_PA@|mF;ku6@uuOjh@I>E8Qwx)b9%6kSxKJbRe(vbfAb=ggSUCEu zQlg^4wFdnI3FE!;aa!0JcC9qwKiE^D;P@^u@t~86^eTTZPcLiJwaNX^i3q|2L_lNn z!5d0tHCyeiK<~=efr30YZ%T(WcYyM`gWLK^J<{YizX-~G(#wg z=CQ!6kvx`B&ZYM2B^Y2x7lx&ugE#-eJ1FoMuS6u)07); z3#_Q0ROtreZ3ZY1qqOXF{dwcOtTEfr7% zBx{v}l>;zqOQcYoGyleIjhVmoBz-6yBTIk5QU~qVcqgW%m#~5Nn$hyfY}iOCYxZt; zL>lx11l!ZS6oWEoK$46&gaiSsuH4Bdo5d5AIwwVkrAWje%uPaXb!7`P?d1{0HA^3 zxm4~b5dlat&b3~_8*q4S94&l8NSOVj@E$zgr5*3kev;&1`^P0e=Qp;8#11!1-XFsj z&A*T+u2grn@*0phr3Sp6`(s&VdV;kv$VR)i4Lb>m5{p!J9+YDGBq38NW(K|-2^kKc z(gi&lo3D0tlZTo~k$n~unguV05PX8;<_t}1*AwX)jI3vJ;m2s;3FT{znCFCoX-BgV z+!2uD{>dZWict0mX(ZkD>cYPOqsO4^yH{LLCofoHtR)a+!kkT(^$AW@`um2(;6RZ$a{&||k6`+6(d|m8y zDUGH;!Y;MLPB@YRCvOE-D@r%mZ=YoSG_ofNc5TIjpdk5XNP)9Zfjz)bJ;BANz4-2! z5(*@g3%OvYub+|IDx7x`OrqoB1*r!52mqYBo+MjSdJ@enHHZY+#f&-c(%<|t&Xr&% zNk3dH5>42?2RRJ%3uU%8Y@bJV^Ok+bAmdto7q*O1AY-l(_!hx^ED$LBQ6w%g2c7uTs_s6Ct(IaOlV zBIgj7M`c9@N+;9+;%Wj^Q7_R+N|G;+XIY+dSe7>HG)Y@*b+i&o)XGvHk zm5k=0yO4C}i;zqJPuwYOsS)Umiq*Yg(;4ZI`m_VhvK@k_XkdD_XbahGclC!~Ns%vE zQaEG*^B35yV;#$YZx7WgEsTb1yYuCk?ba8aYS8mlbVdAMp7%~`X?tpTd+zLzJtR!w zCL_8k8}^7rydUmRd|=t_839MAZ{2FCuV;Rw{*OA9zX?3Ks;npUTTO$0;{FY^Ucb40 zZ_@R=sQ**9vLpcsu=(?GOuII;vksCS>JuuR%qQR~@w-8ciiJ;br0Z#YsIoXJJCqSz zx_u2%;Ac5BQrNF4#uewkCuM)UnkpQ|eBqd6CFeCX%+r+)zx`Bv@iaeK%NE3pEx_p6 zWA5_3J6i&>FlgkGf$R}@W#tuZ|CCFNG`qfo`coqH5KL9egVaihf`9L2D1~VV3lF2BiLzrt5PKZW`p(7w5H%%BhX$n|x z`nix7LZKq1(TG%lbMI}1wroTKm}ro2NGdrg4F$7V8S%VR;zX%vPzY^fYiMfIu9AD^DSI4GJxY;BhS81aeN+LYp4+jebiwC3>Gjf%bMP%;37S%FK|qZ@b2_ z?O`uaJho%1Nf_fV{=i`>XiJjCtelA6Z`+f4RN*ez)aX}Rz7V5iZly65>X{n3aKVr^ zTf;|o<4H3IeZn*55iLqyz8}TB%n)wLcoM3TBsd7y6}RN|6>AipE)E=h^kM}9lGJ@D zTN%i0>LKwdz0Y?M&m>Ahm|pAvWbM@$ytNuE7GvRngsQ(s7j&jeP_Pc;nF81q8Y`7o zPK+RC=-!>9h~^bTU%r3#YbCldai+PP3aJ%>Ou2aB9=X(jZMEd;6`W?^b`pdncT6lI zghz3!RaQSHwoat${too(-8D)}^c*@~u;nA;p2g~7v2IZ~cYLVaFTHVoUSs7Jil6Ez zi2AFE*zfU4XLe1IWso6C7n+h^Lf+3Y)(321T|P>C^igONWG_&AU;px8pTPenM~^(k zUtYl4AwiltP*t`;`~{dRl1dd_(1YN^TjpwGvIVBUv_Nt(C>t)N`1 zwc-puj`AgmhtwCX0a)Z~%f*w>=*aBa+zUFn6D9>rAhgFz(~Wy7+frfFn4EvLi0 z-c4%Fl|T&5v^g~`t$j=q5PAtu$U7nY#b5H)jgH7VNI2iu%F)M@OY49DJV>MwqwxE@ ztgJXNRq)phg9{a+_0FKPsr?>*2ys16dE`Gm77DLXlx=o!rlhjrMZj?CkG$Fh3{u`Y z-}KJuf{`LG%Nc`0imzv>U71csZU_m%UjwffaW3@r%h(H*CThCunWa4gy8Q}PzF%&C zzp*f7@@?vLaXEwu>`xBJKRP?S?+sxrvL@UuH1DYGMTAp4UDrcl!+bAm{d$xG#)O2@ z^KhUS6O(k9S+u7e4`!#QSkUlp>+ey|GWKv|%yvEZC*fh!G&n60MW;<)`=_^EEABSW zqAkf~iw+v{m*^iutPIr<2T_MO`9b(T_2DDId@e_;E^`ZDj-c0}uZlWIKxBMi_9G42 zbP83(E^kn;D3^)^lq%5Fy`o9O;4vUz^kz37uF-Q;g=(@0Z*yx{M9Ez?bYqYvxRfqO ziggxQW75A7aHy+i>_J9+zCj*?%CL2kzAe2CyB+BcgS0gO%gM`)gkTa&>9Axl%>(32 zyvNp|4j~b&y>*VDs^vE;SMw+Ax=ykX=yhU6OAXp;IoBn_3)aJGBxa?Vd2&%f4>X@? zEBz4KB0IGDshZqj@taMPhJb!gNa#Ri1avU~aVu?J{B;q_zPySxVrU5NGeH_AQwnR} z8}Lzo=7bc^ef;o6kq2?|muOYeF6uBGy1Mkk+0c&Mr^@Jrjs=v{^Jq*&gfl zGJjzA-d;S0Lo|h7mY>*twDRrO$Y2vTWQ+NqkO0tvZv00)f2c8(k)CU|+~ zmF1!SOsb4Qt-83-9WL)u+B38toUd)zBF<#2Nyoq9zxVTINz-~EjQZ5gKUrR$gS z#9P%%M28UN3&@ChF)yOVFO>6JqjW(KG`&z!=pW)ZwIHSTo=Kx|LeJQ!zT|4CuEFbMwdMTkrpk(8+B6i|- zaH;)c-w{E%NE{opN=d7_&y?74%Ojn6L?H_w zYk$L)UD?Tc<2}VUmiV-fPHEvG7|STWfxufkHA zL1$+83r=>%$xRg(%zsDdd+83-$eFE$IT*sS_4G9SG!%l3susWp4o(^h3PBngesSur ztQ0aWhKv7@vr>e5h+r;^`7d$%JX{V|@H=iu?JRMoXfGYDpc zW@10w%ry;ow+bC0WCzxWfZo650i6FF4_86qMY@~mYw>(L`IV}U!d@Fy)-wevVAP$V z;x>2IJG2J!*}3LOLaDJF7}KdChaLnZ1-MMIxSN#s zBtmyNWQk5|c&U1<0sezwUqjr16=c(s8-o@J#+SsuSX#YVF9q6apKZ;Kp=h}fQp8=* zLBH1%AHRBa^M5^5y+~Yn${;&8%ED_ni*mF^TziOJv_3P2Hp+i@I`GA4jiqw>O>ytM z&bKb(MoM;^puegGiy+ZG%a2*jqwhwab@*J4v0EaebjI-=dySr-9;tS6@y9rpA%&@+ zQ!jhAc9V6J%J;d#h>CjB;ebYXoWj#MeGYhBD$^q2>h!?Qt0XCV;Vg6NLGQmB<;^)L zC=shoo?OG`Qdrsod}8>;;%yP)P`!BT`&=)tpiu4{U9P_8-)P+;XrxSt+Aa-NcU&1B z$a8{52#pzvOna9U1N-D~K5Z!p2*lXbDua> znPW2n;y5vAKPxStS-Xg~6PGKYSZ)1%MK+Wi4~X42m^f3N|l_Y8Cs-Tcvi~bIpnKHqG-_R&{_cj)&9hjfRVq55l`Tr6n^l-zBa2quiD?A z6(G0@;aPg+0bdTM{S}-%7+akU>Q!Z=z{1);nS{75A(JyCg;qSLZ3DHXiuBrm!s~a-m%D(yFli^Fs%Mmw09>=*cvy?C zMslh={u$OXH9QZG!g68AIRcPoR><|hkiRE(AUG!X{Dm85>27mks5^0VEa<> z5-h>TCaqz3N%$$RV5=L55t#mD90Bek*_Y^g)yEe4=*C&W=iI59vEqG4*P1!9wG5VJ zhOx@cCsK4AS+>AK$SEG^W|AHgb?uD;xrE!BD{L@inm5}ASH&f9gjmxvQ z0{3-Tj6_B;sFquD?_;Ld?8l!*;T`dIlJJB|O|(o@--*ix8>X}_D6K^#kv2~*eeJWU zCsN9|%^|X$hy4mpOKjy!vToOb{Up?~*Uu;X+#COZL841&cJFtz_=LM*$Y(pG{VB&j zR?y5b(ogD*h`bKM^cR18$W3Ev;s@94)J=&i)MSa)sF%e5={b!2z{3jH!GSg+yp2|m zA9$Nj$9I>U<1XB>2x6BQXOYXPsVMbEv-BilR!K|1d4b*``YU$AwEjQ?$87eaIU&>^ zcbveX54IrbsMpv_6J^Ko=hgye{e=SQ-An?Xuh}^Yb0-eToyMjPAJ%Teg<4ejUtMKf#;7+@5swsViV;b-tV&Rc z%(G%g96#y;J+@@Sw;5l}A$G~dHn4< zDs|w79(owrbbHusO}}2H4NCA;U$FU**C{r!u~*Nhv<{<;%f-ZN}(u0HUn zdfsKyiWmI)LC7;!m}JN0Jl}X)+5KF9zAjY%j>?n?Y=eP`;dp1OP-S}!Wy7TXa?&ud zUSx{j(TxNMWt`=>O71SE`d0kfnx`SrE62!#a7BL-G=!a#8Pyw~wvsk7=o@ni9J_ ziEXB<6D}BT9Jen;!vS8frK=Q))E}kK3#**hSv0dXiRKKhRX21hH{Sq~1|LnvsnNxt zj@VVgBcEGD;$x0h?0HwEm8+-|ApXm;UEEPKSq*2qFr((Ri(QaZXALGfu^H#bBh%04956#mKQkk+iDtvtI@m4| zh{OLEJ)F@Q7Kyy{ah=Oz-rjk5(6W7=AJT4H8(;ydV_kPdPBSNB=mVQUU}zx@WSMmR zd8xP^X37qqq#Jw}L2@C=NHAw(T~Ho8kz0NiBUX!XWK2gYmBVqP-MnAzowxZNNNnJ4 z032N3`KdEpPI<%188xmG4nY*5f94^SkMW2bCZrOVt2p?98x@x<ySK%T2LfEs*9O3g_N;E*<(YeyYXavZr?_9-$@mY#unPU*rA?ixh`I-vX zW@Hs^l(e@wWmBK61<4ddhMaU~Pb1}Bh-g~I5J8dzv}doH8oMm7uS)RX`FR^mb@Abg z7`EgN0fo%#-{ulhLL^TCOVvi`BA{{apC+&Dm~hID{{`?MJk<09A6HQ{7k-$!wXK0} z#-@y1)b-GU_t8Xfa&SY5(!vsyfvY+i#`taTm@V)qBX1szdUr$+(Ghku@% zE0Otw+OD`rW=^+{VFZ~$`y3N4+Cgz2A=ge{;cs^+}2+WY#aMN;`CL` zsJK-RVxc(nFdD_;HY@KXI{MFMgyU3#_+SH`x28MkLNR7-{#Os+1&r~5Awzb7OFFn&oZLn9$}_)M}Rc zfN)e>cwy$bc;-;{e$#yXFT)La8{Z9Uk&Vo6-hThG+MLMUJ@1@;4|MkWD!l@=5m{@D zMlB{+hmjTzf|rN%%1*Ch2^!dkF|yE=&lYJ+y^3f$yR5BmB!s!voPI^JDQIAHe|R&N z%r>^0UKF}!qIa0iCLAqG@2S3SY1o)9T=8F8TDD&sfjQS>c?oy4Pu`fW+h@Ey#f0~` z^y`-w&PP>(0pQ6qSaxpr$^(K68`ZudAu&JzOsD~Xsx-e6G%ZNLe+Iuzc^_f5h;#s8 zs9DX+%PX(R^gjU9R>jK=?&0<2LL{=@V`a?z=Rborj>=SNXL2?HmKYE zE%G}{&xX~6F<;~54dH`P42s7M*gh)AXSn(6A?#s7_g7}B!x}K*;EG>IW7rfr zl1m}Xk9yP~`vkt(7EC1Xk_e?0gMOOAlQpczu|%im5B+sSr4op?Kc zhsjUcZIWWk*$~be~3McJ~6Q2<`26+dLOxwNtL~MMl#2E*9 zc5in4VfhwdIr1cNxDxr3e)4C@SW}RY_g19FaLJEm*x|TT*|xjqdvjbl3)N+F<*C-^ z;p}!^Dd(AMYb|Di+}*4Q(YqMY3}TFp!q%S)xFC1wYa&a0ulQ6%S^3OZlDxEkB9)_u zSSBy9K6h;XTDbFEMfJLd+KN000&n=`zMdN;%nIPBTCyD2b=aJgB)K%nzIB`HtHdG@ zTL+h>7{>hN_!5?`rJ1v1v5F>VhN{&Kim7mt{+RDcr4=(|!K2oRgYC-Oh`9g?ox|p1 zzJq?V%P*1DJLaC3+lQ%ozWrRDCzS5FncpjBfg$o=GI>b&9`h5%n!r!5Wkgs4J{mZ{ zk4S5x+2@&h8Vs6*=f?R!4`QL;+&a7^CIkqIWq%VRWn@|6!P|fxU+kIe+4VG7F zptn(xoE5FLKX;NyethHNhKd13Y~>zCKtAZ9<4lPx>aLS{N>Z%@+E{aD@_Q+DQK7x6 z8{8!`Vp$rtepcpdCna%%G2AY+t0S z$2ruVn`#0HdG~xBA#K}u5~mn*WDm*yYWFY@DQQHE8k5A%oG3ApDE2f6I0 zsp>^PjrlQDQ%xmPW@JVls4|=kQ_psj?LPvyh2EZ*c7ag?bfuxtQlB|$Hz2rsR3Rfv zZAPL*Lh|qaJX?{Yl>>XoN7qfO6-+A}b&JEZ@AXUrWM3o`pdFU$BbRV^J2 zPIXZ^N?!xHoMwyBr45e6OM&Md=jqo=XX~EpHyLeaI^5>GzplMq&1*sL)#}gChBt|b znN~5?mn~yhcIIcdR}Y;^Q`dBwi`XPG`?r&b%pF#=&m7YIyqYw0eqM4>-mm8OFK*e=+kjx*=){d+`w^$_2JFgbCH zy`kdNE;Dl!LW=q8hjklJs*$#L=L_4M>n$_ht)1xb6ThQHvHEE|m*uT3_G+sqre0b) z|7CcutEa=P1akO;OJB=TkDuR1PNhcgN8YCAbtH-Df^^BMk@bYn zhk7i%!qCj>8m7R2xfY)|X*r1(=inHwFdwZ>Yt(7#EF-p@)h2wYlj^ZUcWFDZqE^bTiRmOC z^VUsFa%GDd6|YC~kj3QrJ@hw49#wtqQ1~MKlJFwF?=01KWc31M>d|BYpoj`2Uj1oUN1Xm$y#aY3I2=lk5t%!&PsM zswQ0@%nv#EEyw%WlU(0FL_c@7Gmhm=^2#jrNIm^IXhnf`ON<)&A0u-Vp@I`&UQ^7+8>x zPKlJ-fnf_FZWAY2NH|b~Y;`2%K2MNmSnSr%^=XmJ=LynrQmX424ZGXq zPOfn3_@RW|QF`xL9W{!urtp4l(IU~a)Y!!}=o^|Au#1@d2IDxz`uF>13+txi-HZYv zNcuXoYsfIOPu>guRzgE`J&^M9ba4!+xb?PgqacF<2Xk}s zhW~TsaYroR)wo~d{K@g1UAqcU4+F!S#I(w$(|KQS1umXsC*?Plttj8WPP8&<@%nui erbO+AJeVfAmyH}elF{r5}E+6lq=={ literal 0 HcmV?d00001 diff --git a/demos/functional/images/icon_liferay.gif b/demos/functional/images/icon_liferay.gif new file mode 100644 index 0000000000000000000000000000000000000000..bfdf1d4395b72b71f62c5e2f04ea87693ce48641 GIT binary patch literal 783 zcmV+q1MvJuNk%w1VPXIl0K@U1uIXP@>Z2$lNGcz-;uC9cH zgz)h2Dk>^VOG|rudm$kqrKP3J%*^1$^B zemnUFuVZ;AKNJuTGeUkILUJ$;0Ul{hLTxt?aWV@BE_VggB~(a@ZiHuiwFk{ zv=HFX9*}F6un7R5Qy#GYS?F>ggA0rJTBRR4p?zT~fubMFOraF4=7{AzY3f0bN8A zJo7-~jW;{$6h=-%slFae3OLbDLp0JaF~`_Up!4UykppLTv6CDCI02fqkf0STy4M5` z>e!8Fi0!KXepwa>JG6&(4qI>-3Zq@O-m#a@cAgOiXuzVWCr6)J2nQGEV$wZ;v}<(_ zvtr;vpvx9?j?yvb0eIGRVS!~1L?DBVNe4_ZAZ)_H^V9& literal 0 HcmV?d00001 diff --git a/demos/functional/images/logo.gif b/demos/functional/images/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..a6cfb97458fad5cfbad79c8f8a7bc068bfaa6cb3 GIT binary patch literal 2891 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 bX7gH?-v>fJhM|?k-qw|c-g90EII!t||A-gb literal 0 HcmV?d00001 diff --git a/demos/functional/index.html b/demos/functional/index.html new file mode 100644 index 000000000..b5ccf8155 --- /dev/null +++ b/demos/functional/index.html @@ -0,0 +1,164 @@ + + + + jQuery UI - Functional demos + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+
+ +
+
+ +
+
+

+ Functional Demos +

+

+ Learn how to build Cross-Browser Rich Internet Applications! +

+ +
+
+ + + + + + +
+
+

+ Interaction +

+ +
+
+
+

+ Widgets +

+ + +
+
+
+ +
+

+ Instructions +

+

+ + The functional demos are provided to give users an idea of how jQueryUI works. You only need to copy and paste code from the demos. Have fun playing with it. +

+ +
+ +
+ +
+
+ +
+
+
+
+
+ + +
+ + + + \ No newline at end of file diff --git a/demos/functional/js/beautify.js b/demos/functional/js/beautify.js new file mode 100644 index 000000000..6c6ef29b4 --- /dev/null +++ b/demos/functional/js/beautify.js @@ -0,0 +1,533 @@ +/* + + JS Beautifier +--------------- + $Date: 2008-04-21 16:13:36 +0300 (Mon, 21 Apr 2008) $ + $Revision: 53 $ + + + Written by Einars "elfz" Lielmanis, + http://elfz.laacz.lv/beautify/ + + Originally converted to javascript by Vital, + http://my.opera.com/Vital/blog/2007/11/21/javascript-beautify-on-javascript-translated + + + You are free to use this in any way you want, in case you find this useful or working for you. + + Usage: + js_beautify(js_source_text); + +*/ + + +function js_beautify(js_source_text, indent_size, indent_character) +{ + + var input, output, token_text, last_type, last_text, last_word, current_mode, modes, indent_level, indent_string; + var whitespace, wordchar, punct, parser_pos, line_starters, in_case; + var prefix, token_type; + + function print_newline(ignore_repeated) + { + ignore_repeated = typeof ignore_repeated === 'undefined' ? true: ignore_repeated; + + // remove trailing whitespace and indent + while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string)) { + output.pop(); + } + + if (!output.length) { + return; // no newline on start of file + } + + if (output[output.length - 1] !== "\n" || !ignore_repeated) { + output.push("\n"); + } + for (var i = 0; i < indent_level; i++) { + output.push(indent_string); + } + } + + + + function print_space() + { + var last_output = output.length ? output[output.length - 1] : ' '; + if (last_output !== ' ' && last_output !== '\n' && last_output !== indent_string) { // prevent occassional duplicate space + output.push(' '); + } + } + + + function print_token() + { + output.push(token_text); + } + + function indent() + { + indent_level++; + } + + + function unindent() + { + if (indent_level) { + indent_level--; + } + } + + + function remove_indent() + { + if (output.length && output[output.length - 1] === indent_string) { + output.pop(); + } + } + + + function set_mode(mode) + { + modes.push(current_mode); + current_mode = mode; + } + + + function restore_mode() + { + current_mode = modes.pop(); + } + + + function in_array(what, arr) + { + for (var i = 0; i < arr.length; i++) + { + if (arr[i] === what) { + return true; + } + } + return false; + } + + + + function get_next_token() + { + var n_newlines = 0; + var c = ''; + + do { + if (parser_pos >= input.length) { + return ['', 'TK_EOF']; + } + c = input.charAt(parser_pos); + + parser_pos += 1; + if (c === "\n") { + n_newlines += 1; + } + } + while (in_array(c, whitespace)); + + if (n_newlines > 1) { + for (var i = 0; i < 2; i++) { + print_newline(i === 0); + } + } + var wanted_newline = (n_newlines === 1); + + + if (in_array(c, wordchar)) { + if (parser_pos < input.length) { + while (in_array(input.charAt(parser_pos), wordchar)) { + c += input.charAt(parser_pos); + parser_pos += 1; + if (parser_pos === input.length) { + break; + } + } + } + + // small and surprisingly unugly hack for 1E-10 representation + if (parser_pos !== input.length && c.match(/^[0-9]+[Ee]$/) && input.charAt(parser_pos) === '-') { + parser_pos += 1; + + var t = get_next_token(parser_pos); + c += '-' + t[0]; + return [c, 'TK_WORD']; + } + + if (c === 'in') { // hack for 'in' operator + return [c, 'TK_OPERATOR']; + } + return [c, 'TK_WORD']; + } + + if (c === '(' || c === '[') { + return [c, 'TK_START_EXPR']; + } + + if (c === ')' || c === ']') { + return [c, 'TK_END_EXPR']; + } + + if (c === '{') { + return [c, 'TK_START_BLOCK']; + } + + if (c === '}') { + return [c, 'TK_END_BLOCK']; + } + + if (c === ';') { + return [c, 'TK_END_COMMAND']; + } + + if (c === '/') { + var comment = ''; + // peek for comment /* ... */ + if (input.charAt(parser_pos) === '*') { + parser_pos += 1; + if (parser_pos < input.length) { + while (! (input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/') && parser_pos < input.length) { + comment += input.charAt(parser_pos); + parser_pos += 1; + if (parser_pos >= input.length) { + break; + } + } + } + parser_pos += 2; + return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT']; + } + // peek for comment // ... + if (input.charAt(parser_pos) === '/') { + comment = c; + while (input.charAt(parser_pos) !== "\x0d" && input.charAt(parser_pos) !== "\x0a") { + comment += input.charAt(parser_pos); + parser_pos += 1; + if (parser_pos >= input.length) { + break; + } + } + parser_pos += 1; + if (wanted_newline) { + print_newline(); + } + return [comment, 'TK_COMMENT']; + } + + } + + if (c === "'" || // string + c === '"' || // string + (c === '/' && + ((last_type === 'TK_WORD' && last_text === 'return') || (last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || last_type === 'TK_OPERATOR' || last_type === 'TK_EOF' || last_type === 'TK_END_COMMAND')))) { // regexp + var sep = c; + var esc = false; + c = ''; + + if (parser_pos < input.length) { + + while (esc || input.charAt(parser_pos) !== sep) { + c += input.charAt(parser_pos); + if (!esc) { + esc = input.charAt(parser_pos) === '\\'; + } else { + esc = false; + } + parser_pos += 1; + if (parser_pos >= input.length) { + break; + } + } + + } + + parser_pos += 1; + if (last_type === 'TK_END_COMMAND') { + print_newline(); + } + return [sep + c + sep, 'TK_STRING']; + } + + if (in_array(c, punct)) { + while (parser_pos < input.length && in_array(c + input.charAt(parser_pos), punct)) { + c += input.charAt(parser_pos); + parser_pos += 1; + if (parser_pos >= input.length) { + break; + } + } + return [c, 'TK_OPERATOR']; + } + + return [c, 'TK_UNKNOWN']; + } + + + //---------------------------------- + + indent_character = indent_character || ' '; + indent_size = indent_size || 4; + + indent_string = ''; + while (indent_size--) { + indent_string += indent_character; + } + + input = js_source_text; + + last_word = ''; // last 'TK_WORD' passed + last_type = 'TK_START_EXPR'; // last token type + last_text = ''; // last token text + output = []; + + whitespace = "\n\r\t ".split(''); + wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split(''); + punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |='.split(' '); + + // words which should always start on new line. + line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(','); + + // states showing if we are currently in expression (i.e. "if" case) - 'EXPRESSION', or in usual block (like, procedure), 'BLOCK'. + // some formatting depends on that. + current_mode = 'BLOCK'; + modes = [current_mode]; + + indent_level = 0; + parser_pos = 0; // parser position + in_case = false; // flag for parser that case/default has been processed, and next colon needs special attention + while (true) { + var t = get_next_token(parser_pos); + token_text = t[0]; + token_type = t[1]; + if (token_type === 'TK_EOF') { + break; + } + + switch (token_type) { + + case 'TK_START_EXPR': + + set_mode('EXPRESSION'); + if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR') { + // do nothing on (( and )( and ][ and ]( .. + } else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') { + print_space(); + } else if (in_array(last_word, line_starters) && last_word !== 'function') { + print_space(); + } + print_token(); + break; + + case 'TK_END_EXPR': + + print_token(); + restore_mode(); + break; + + case 'TK_START_BLOCK': + + set_mode('BLOCK'); + if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') { + if (last_type === 'TK_START_BLOCK') { + print_newline(); + } else { + print_space(); + } + } + print_token(); + indent(); + break; + + case 'TK_END_BLOCK': + if (last_type === 'TK_START_BLOCK') { + // nothing + unindent(); + } else { + unindent(); + print_newline(); + } + print_token(); + restore_mode(); + break; + + case 'TK_WORD': + + if (token_text === 'case' || token_text === 'default') { + if (last_text === ':') { + // switch cases following one another + remove_indent(); + } else { + // case statement starts in the same line where switch + unindent(); + print_newline(); + indent(); + } + print_token(); + in_case = true; + break; + } + + prefix = 'NONE'; + if (last_type === 'TK_END_BLOCK') { + if (!in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) { + prefix = 'NEWLINE'; + } else { + prefix = 'SPACE'; + print_space(); + } + } else if (last_type === 'TK_END_COMMAND' && current_mode === 'BLOCK') { + prefix = 'NEWLINE'; + } else if (last_type === 'TK_END_COMMAND' && current_mode === 'EXPRESSION') { + prefix = 'SPACE'; + } else if (last_type === 'TK_WORD') { + prefix = 'SPACE'; + } else if (last_type === 'TK_START_BLOCK') { + prefix = 'NEWLINE'; + } else if (last_type === 'TK_END_EXPR') { + print_space(); + prefix = 'NEWLINE'; + } + + if (in_array(token_text, line_starters) || prefix === 'NEWLINE') { + + if (last_text === 'else') { + // no need to force newline on else break + print_space(); + } else if ((last_type === 'TK_START_EXPR' || last_text === '=') && token_text === 'function') { + // no need to force newline on 'function': (function + // DONOTHING + } else if (last_type === 'TK_WORD' && (last_text === 'return' || last_text === 'throw')) { + // no newline between 'return nnn' + print_space(); + } else if (last_type !== 'TK_END_EXPR') { + if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && last_text !== ':') { + // no need to force newline on 'var': for (var x = 0...) + if (token_text === 'if' && last_type === 'TK_WORD' && last_word === 'else') { + // no newline for } else if { + print_space(); + } else { + print_newline(); + } + } + } + } else if (prefix === 'SPACE') { + print_space(); + } + print_token(); + last_word = token_text; + break; + + case 'TK_END_COMMAND': + + print_token(); + break; + + case 'TK_STRING': + + if (last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK') { + print_newline(); + } else if (last_type === 'TK_WORD') { + print_space(); + } + print_token(); + break; + + case 'TK_OPERATOR': + + var start_delim = true; + var end_delim = true; + + if (token_text === ':' && in_case) { + print_token(); // colon really asks for separate treatment + print_newline(); + break; + } + + in_case = false; + + if (token_text === ',') { + if (last_type === 'TK_END_BLOCK') { + print_token(); + print_newline(); + } else { + if (current_mode === 'BLOCK') { + print_token(); + print_newline(); + } else { + print_token(); + print_space(); + } + } + break; + } else if (token_text === '--' || token_text === '++') { // unary operators special case + if (last_text === ';') { + // space for (;; ++i) + start_delim = true; + end_delim = false; + } else { + start_delim = false; + end_delim = false; + } + } else if (token_text === '!' && last_type === 'TK_START_EXPR') { + // special case handling: if (!a) + start_delim = false; + end_delim = false; + } else if (last_type === 'TK_OPERATOR') { + start_delim = false; + end_delim = false; + } else if (last_type === 'TK_END_EXPR') { + start_delim = true; + end_delim = true; + } else if (token_text === '.') { + // decimal digits or object.property + start_delim = false; + end_delim = false; + + } else if (token_text === ':') { + // zz: xx + // can't differentiate ternary op, so for now it's a ? b: c; without space before colon + start_delim = false; + } + if (start_delim) { + print_space(); + } + + print_token(); + + if (end_delim) { + print_space(); + } + break; + + case 'TK_BLOCK_COMMENT': + + print_newline(); + print_token(); + print_newline(); + break; + + case 'TK_COMMENT': + + // print_newline(); + print_space(); + print_token(); + print_newline(); + break; + + case 'TK_UNKNOWN': + print_token(); + break; + } + + last_type = token_type; + last_text = token_text; + } + + return output.join(''); + +} diff --git a/demos/functional/js/behaviour.functionaldemos.js b/demos/functional/js/behaviour.functionaldemos.js new file mode 100644 index 000000000..8e375db28 --- /dev/null +++ b/demos/functional/js/behaviour.functionaldemos.js @@ -0,0 +1,13 @@ +$(document).ready(function() { + + $('.component-links a').click(function() { + var comp = $(this).attr('href').replace(/^#/, ""); + loadDemo(comp); + }); + + // hash listener + if (location.hash) { + loadDemo(location.hash.replace(/^#/, "")); + } + +}); \ No newline at end of file diff --git a/demos/functional/js/behaviour.js b/demos/functional/js/behaviour.js new file mode 100644 index 000000000..2ac0305f7 --- /dev/null +++ b/demos/functional/js/behaviour.js @@ -0,0 +1,205 @@ +$(document).ready(function() { + + // link demos + + $(".demoflow div.wrapper").click(function() { + + var demo = $(this).children('img').attr('_demo'); + + if (demo) { + location.href = '/repository/real-world/' + demo; + }else { + //alert('Under construction!'); + } + + }); + + if ($("div.demoflow").size()) { + + var inst = new $.ui.carousel($("div.demoflow")[0], { height: 200, width: 310 }); + + $("div.demoflow-button-left, div.demoflow-button-right").bind("mousedown", function() { + var right = this.className.indexOf("right") == -1; + if(inst.autoRotator) window.clearInterval(inst.autoRotator); + inst.timer = window.setInterval(function() { inst.rotate(right ? "right" : null); }, 13); + }) + .bind("mouseup", function() { + window.clearInterval(inst.timer); + }); + + $('.demoflow div.shadow').hover(function() { + this._lastopacity = $(this).css('opacity'); + $(this).stop().animate({opacity: 0 }, 300); + }, function() { + $(this).stop().animate({opacity: this._lastopacity }, 300); + }); + + + window.setTimeout(function() { + inst.element.animate({ opacity: 1 },2000); inst.rotate(0,2000,0.45); + window.setTimeout(function() { + inst.autoRotator = window.setInterval(function() { inst.rotate(0,2000,0.45); },5000); + },3000); + },0); + + } + + $('a').click(function(){ + this.blur(); + }); + + // smooth hover effects by DragonInteractive + var hover = hoverEffects(); + hover.init(); + +}); + + $.ui.carousel = function(element, options) { + + this.element = $(element); + this.options = $.extend({}, options); + var self = this; + + $.extend(this, { + start: Math.PI/2, + step: 2*Math.PI/$("> *", this.element).length, + radiusX: 400, + radiusY: -45, + paddingX: this.element.outerWidth() / 2, + paddingY: this.element.outerHeight() / 2 + }); + + $("> *", this.element).css({ position: "absolute", top: 0, left: 0, zIndex: 1 }); + this.rotate(); + this.rotate("right"); + + this.element.parent().bind("mousewheel", function(e,delta) { + if(self.autoRotator) window.clearInterval(self.autoRotator); + self.rotate(delta < 0 ? "right" : "left"); + return false; + }); + + }; + + $.ui.carousel.prototype.rotate = function(d,ani,speed) { + + this.start = this.start + (d == "right" ? -(speed || 0.03) : (speed || 0.03)); + var o = this.options; + var self = this; + + setTimeout(function(){ + $("> *", self.element).each(function(i) { + var angle = self.start + i * self.step; + var x = self.radiusX * Math.cos(angle); + var y = self.radiusY * Math.sin(angle); + var _self = this; + + var width = o.width * ((self.radiusY+y) / (2 * self.radiusY)); + width = (width * width * width) / (o.width * o.width); //This makes the pieces smaller + var height = parseInt(width * o.height / o.width); + + //This is highly custom - it will hide the elements at the back + $(_self).css({ visibility: height < 30 ? "hidden" : "visible" }); + if(height < 30 && !ani) return; //This imrpoves the speed, but cannot be used with animation + + + if(ani) { + $(_self).animate({ + top: Math.round(self.paddingY + y - height/2) + "px", + left: Math.round(self.paddingX + x - width/2) + "px", + width: Math.round(width) + "px", + height: Math.round(height) + "px" + },{ duration: ani, easing: "easeOutQuad" }); + $(_self).css({ zIndex: Math.round(parseInt(100 * (self.radiusY+y) / (2 * self.radiusY))) }); + } else { + $(_self).css({ + top: self.paddingY + y - height/2 + "px", + left: self.paddingX + x - width/2 + "px", + width: width + "px", + height: height + "px", + zIndex: parseInt(100 * (self.radiusY+y) / (2 * self.radiusY)) + }); + } + + $("div.shadow",_self).css({ opacity: 1 - (width / o.width) }); + + }); + }, 0); + } + + +/** + * All credit here goes to DragonInteractive and Yuri Vishnevsky + */ +var hoverEffects = function() { + var me = this; + var args = arguments; + var self = { + c: { + navItems: '.download .click-to-download, #launch-pad .launch-pad-button, div.demoflow-button-left, div.demoflow-button-right', + navSpeed: ($.browser.safari ? 600: 350), + snOpeningSpeed: ($.browser.safari ? 400: 250), + snOpeningTimeout: 150, + snClosingSpeed: function() { + if (self.subnavHovered()) return 123450; + return 150 + }, + snClosingTimeout: 700 + }, + init: function() { + //$('.bg', this.c.navItems).css({ + // 'opacity': 0 + //}); + this.initHoverFades() + }, + subnavHovered: function() { + var hovered = false; + $(self.c.navItems).each(function() { + if (this.hovered) hovered = true + }); + return hovered + }, + initHoverFades: function() { + //$('#navigation .bg').css('opacity', 0); + $(self.c.navItems).hover(function() { + self.fadeNavIn.apply(this) + }, + function() { + var el = this; + setTimeout(function() { + if (!el.open) self.fadeNavOut.apply(el) + }, + 10) + }) + }, + fadeNavIn: function() { + $('.bg', this).stop().animate({ + 'opacity': 1 + }, + self.c.navSpeed) + }, + fadeNavOut: function() { + $('.bg', this).stop().animate({ + 'opacity': 0 + }, + self.c.navSpeed) + }, + initSubmenus: function() { + $(this.c.navItems).hover(function() { + $(self.c.navItems).not(this).each(function() { + self.fadeNavOut.apply(this); + }); + this.hovered = true; + var el = this; + self.fadeNavIn.apply(el); + }, + function() { + this.hovered = false; + var el = this; + if (!el.open) self.fadeNavOut.apply(el); + }) + } + }; + + return self; +}; \ No newline at end of file diff --git a/demos/functional/js/chili-recipes.js b/demos/functional/js/chili-recipes.js new file mode 100644 index 000000000..727ffa09c --- /dev/null +++ b/demos/functional/js/chili-recipes.js @@ -0,0 +1,163 @@ +/* +=============================================================================== +Chili is the jQuery code highlighter plugin +............................................................................... + Copyright 2007 / Andrea Ercolino +------------------------------------------------------------------------------- +LICENSE: http://www.opensource.org/licenses/mit-license.php +WEBSITE: http://noteslog.com/chili/ +=============================================================================== +*/ + +/* +this file shows how to configure a static setup +it must be linked from the head of a page like: + +*/ + +ChiliBook.recipeLoading = false; + +ChiliBook.recipes[ "jquery.js" ] = +{ + steps: + { + mlcom : { exp: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\// } + , com : { exp: /\/\/.*/ } + , regexp : { exp: /\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*/ } + , string : { exp: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/ } + , numbers : { exp: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/ } + , keywords: { exp: /\b(arguments|break|case|catch|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|try|typeof|var|void|while|with)\b/ } + , global : { exp: /\b(toString|valueOf|window|element|prototype|constructor|document|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity)\b/ } + + , "jquery utilities" : { + exp : /(?:\$\.browser|\$\.each|\$\.extend|\$\.grep|\$\.map|\$\.merge|\$\.trim)\b/ + , replacement: '$$' + } + ,"jquery private" : { + exp : /(?:\$\.find|\$\.parents|\$\.sibling|\.domManip|\.eventTesting|\.extend|\.get|\.init|\.jquery|\.pushStack)\b/ + , replacement: '$$' + } + ,"jquery ajax" : { + exp : /(?:\$\.ajax|\$\.ajaxSetup|\$\.ajaxTimeout|\$\.get|\$\.getIfModified|\$\.getJSON|\$\.getScript|\$\.post|.ajaxComplete|.ajaxError|.ajaxSend|.ajaxStart|.ajaxStop|.ajaxSuccess|.load|.loadIfModified|.serialize)\b/ + , replacement: '$$' + } + , "jquery object" : { + exp : /jQuery|\$(?=\W)/ + , replacement: '$$' + } + ,"jquery core" : { + exp : /\$\.extend|\$\.noConflict|\.(?:each|eq|get|gt|index|lt|size)\b/ + , replacement: '$$' + } + ,"jquery css" : { + exp : /\.(?:css|height|width)\b/ + , replacement: '$$' + } + ,"jquery attributes" : { + exp : /\.(?:addClass|attr|html|removeAttr|removeClass|text|toggleClass|val)\b/ + , replacement: '$$' + } + ,"jquery traversing" : { + exp : /\.(?:add|children|contains|end|filter|find|is|next|not|parent|parents|prev|siblings)\b/ + , replacement: '$$' + } + ,"jquery manipulation": { + exp : /\.(?:after|append|appendTo|before|clone|empty|insertAfter|insertBefore|prepend|prependTo|remove|wrap)\b/ + , replacement: '$$' + } + ,"jquery effects" : { + exp : /\.(?:animate|fadeIn|fadeOut|fadeTo|hide|show|slideDown|slideToggle|slideUp|toggle)\b/ + , replacement: '$$' + } + ,"jquery events" : { + exp : /\.(?:bind|blur|change|click|dblclick|error|focus|hover|keydown|keypress|keyup|load|mousedown|mousemove|mouseout|mouseover|mouseup|one|ready|resize|scroll|select|submit|toggle|trigger|unbind|unload)\b/ + , replacement: '$$' + } + } +}; + +ChiliBook.recipes[ "html.js" ] = +{ + steps: { + mlcom : { exp: /\