Browse Source

AMBARI-304. Upgrade to yui-3.5.1. Contributed by vinod.

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/ambari-186@1343950 13f79535-47bb-0310-9956-ffa450edef68
Jitendra Nath Pandey 13 years ago
parent
commit
b4950bfc80
100 changed files with 12 additions and 13592 deletions
  1. 2 0
      CHANGES.txt
  2. 1 1
      hmc/html/addNodesWizard.php
  3. 3 3
      hmc/html/bootstrapJs.htmli
  4. 1 1
      hmc/html/clusters.php
  5. 1 1
      hmc/html/index.php
  6. 1 1
      hmc/html/initializeCluster.php
  7. 1 1
      hmc/html/uninstallWizard.php
  8. 1 1
      hmc/package/rpm/SPECS/hmc.spec
  9. 1 1
      hmc/package/rpm/create_hmc_rpm.sh
  10. 0 6
      hmc/yui-3.4.1/build/anim-base/anim-base-min.js
  11. 0 7
      hmc/yui-3.4.1/build/anim-node-plugin/anim-node-plugin-min.js
  12. 0 7
      hmc/yui-3.4.1/build/anim-xy/anim-xy-min.js
  13. 0 7
      hmc/yui-3.4.1/build/array-extras/array-extras-min.js
  14. 0 7
      hmc/yui-3.4.1/build/array-invoke/array-invoke-min.js
  15. 0 46
      hmc/yui-3.4.1/build/array-invoke/array-invoke.js
  16. 0 7
      hmc/yui-3.4.1/build/arraylist-filter/arraylist-filter-min.js
  17. 0 7
      hmc/yui-3.4.1/build/arraylist/arraylist-min.js
  18. 0 218
      hmc/yui-3.4.1/build/arraylist/arraylist.js
  19. 0 69
      hmc/yui-3.4.1/build/arraysort/arraysort-debug.js
  20. 0 7
      hmc/yui-3.4.1/build/arraysort/arraysort-min.js
  21. 0 69
      hmc/yui-3.4.1/build/arraysort/arraysort.js
  22. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/arrows.png
  23. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/autocomplete-list.css
  24. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/bg.png
  25. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/calendar-base.css
  26. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/calendar.css
  27. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/calendarnavigator.css
  28. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/console-filters.css
  29. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/console.css
  30. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/datatable-base.css
  31. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/dial.css
  32. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/dt-arrow-dn.png
  33. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/dt-arrow-up.png
  34. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/horizontal-menu-submenu-indicator.png
  35. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/horizontal-menu-submenu-toggle.png
  36. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/node-flick.css
  37. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/node-menunav.css
  38. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/overlay.css
  39. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/panel.css
  40. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/rail-x-lines.png
  41. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/rail-x.png
  42. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/rail-y-lines.png
  43. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/rail-y.png
  44. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/resize-base.css
  45. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/scrollview-base.css
  46. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/scrollview-list.css
  47. 0 6
      hmc/yui-3.4.1/build/assets/skins/sam/scrollview-scrollbars.css
  48. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/skin.css
  49. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/slider-base.css
  50. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/sprite.png
  51. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/sprite_icons.gif
  52. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/tabview.css
  53. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/test.css
  54. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/thumb-x.png
  55. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/thumb-y.png
  56. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/vertical-menu-submenu-indicator.png
  57. BIN
      hmc/yui-3.4.1/build/assets/skins/sam/warn_error.png
  58. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/widget-base.css
  59. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/widget-buttons.css
  60. 0 7
      hmc/yui-3.4.1/build/assets/skins/sam/widget-stack.css
  61. 0 528
      hmc/yui-3.4.1/build/async-queue/async-queue.js
  62. 0 1197
      hmc/yui-3.4.1/build/attribute-base/attribute-base-debug.js
  63. 0 6
      hmc/yui-3.4.1/build/attribute-base/attribute-base-min.js
  64. 0 1182
      hmc/yui-3.4.1/build/attribute-base/attribute-base.js
  65. 0 7
      hmc/yui-3.4.1/build/attribute-complex/attribute-complex-min.js
  66. 0 1642
      hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base-debug.js
  67. 0 6
      hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base-min.js
  68. 0 1635
      hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base.js
  69. 0 147
      hmc/yui-3.4.1/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold-debug.js
  70. 0 147
      hmc/yui-3.4.1/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold.js
  71. 0 245
      hmc/yui-3.4.1/build/autocomplete-filters/autocomplete-filters-debug.js
  72. 0 245
      hmc/yui-3.4.1/build/autocomplete-filters/autocomplete-filters.js
  73. 0 117
      hmc/yui-3.4.1/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold-debug.js
  74. 0 117
      hmc/yui-3.4.1/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold.js
  75. 0 205
      hmc/yui-3.4.1/build/autocomplete-highlighters/autocomplete-highlighters-debug.js
  76. 0 205
      hmc/yui-3.4.1/build/autocomplete-highlighters/autocomplete-highlighters.js
  77. 0 194
      hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys-debug.js
  78. 0 7
      hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys-min.js
  79. 0 194
      hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys.js
  80. 0 56
      hmc/yui-3.4.1/build/autocomplete-list/assets/skins/night/autocomplete-list-skin.css
  81. 0 7
      hmc/yui-3.4.1/build/autocomplete-list/assets/skins/night/autocomplete-list.css
  82. 0 23
      hmc/yui-3.4.1/build/autocomplete-list/assets/skins/sam/autocomplete-list-skin.css
  83. 0 7
      hmc/yui-3.4.1/build/autocomplete-list/assets/skins/sam/autocomplete-list.css
  84. 0 901
      hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list-debug.js
  85. 0 6
      hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list-min.js
  86. 0 901
      hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list.js
  87. 0 7
      hmc/yui-3.4.1/build/autocomplete-list/lang/autocomplete-list.js
  88. 0 7
      hmc/yui-3.4.1/build/autocomplete-list/lang/autocomplete-list_en.js
  89. 0 60
      hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin-debug.js
  90. 0 7
      hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin-min.js
  91. 0 60
      hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin.js
  92. 0 490
      hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources-debug.js
  93. 0 6
      hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources-min.js
  94. 0 490
      hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources.js
  95. 0 627
      hmc/yui-3.4.1/build/base-base/base-base-debug.js
  96. 0 6
      hmc/yui-3.4.1/build/base-base/base-base-min.js
  97. 0 622
      hmc/yui-3.4.1/build/base-base/base-base.js
  98. 0 328
      hmc/yui-3.4.1/build/base-build/base-build-debug.js
  99. 0 6
      hmc/yui-3.4.1/build/base-build/base-build-min.js
  100. 0 328
      hmc/yui-3.4.1/build/base-build/base-build.js

+ 2 - 0
CHANGES.txt

@@ -6,6 +6,8 @@ characters wide.
 
 
 Release 0.1.x - unreleased
 Release 0.1.x - unreleased
 
 
+  AMBARI-304. Upgrade to yui-3.5.1. (vinod via jitendra)
+
   AMBARI-302. regionservers config in the hbase only has localhost in it. 
   AMBARI-302. regionservers config in the hbase only has localhost in it. 
   (ramya via jitendra)
   (ramya via jitendra)
 
 

+ 1 - 1
hmc/html/addNodesWizard.php

@@ -3,7 +3,7 @@
     <title id="pageTitleId">Hortonworks Management Center</title>
     <title id="pageTitleId">Hortonworks Management Center</title>
 
 
     <!-- CSS -->
     <!-- CSS -->
-    <link type="text/css" rel="stylesheet" href="../yui-3.4.1/build/cssreset/cssreset-min.css">
+    <link type="text/css" rel="stylesheet" href="../yui-3.5.1/build/cssreset/cssreset-min.css">
 	<link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
 	<link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>

+ 3 - 3
hmc/html/bootstrapJs.htmli

@@ -1,4 +1,4 @@
-<script src="../yui-3.4.1/build/yui/yui-min.js"></script>
+<script src="../yui-3.5.1/build/yui/yui-min.js"></script>
 
 
 <script type="text/javascript">
 <script type="text/javascript">
 
 
@@ -21,14 +21,14 @@
   var globalYuiLoaderOptions = {
   var globalYuiLoaderOptions = {
     combine: true,
     combine: true,
     comboBase: '../yuiCombinator.php?',
     comboBase: '../yuiCombinator.php?',
-    root: 'yui-3.4.1/build/'
+    root: 'yui-3.5.1/build/'
   };
   };
 
 
   var globalYui = YUI( globalYuiLoaderOptions ).use( 
   var globalYui = YUI( globalYuiLoaderOptions ).use( 
     "node", "io", "dump", "json", "panel", "event", "arraysort", 
     "node", "io", "dump", "json", "panel", "event", "arraysort", 
     "array-extras", "datasource", "datasource-io", "datasource-jsonschema", 
     "array-extras", "datasource", "datasource-io", "datasource-jsonschema", 
     "datasource-polling", "stylesheet", "dd-drop", "dd-constrain",
     "datasource-polling", "stylesheet", "dd-drop", "dd-constrain",
-    "dd-proxy", function (Y) {
+    "dd-proxy", "transition", function (Y) {
 
 
       /* Kick off the sequential loading. */
       /* Kick off the sequential loading. */
       loadNextJsFile();
       loadNextJsFile();

+ 1 - 1
hmc/html/clusters.php

@@ -3,7 +3,7 @@
     <title id="pageTitleId">Hortonworks Data Platform Portal</title>
     <title id="pageTitleId">Hortonworks Data Platform Portal</title>
 
 
     <!-- CSS -->
     <!-- CSS -->
-    <link type="text/css" rel="stylesheet" href="../yui-3.4.1/build/cssreset/cssreset-min.css">
+    <link type="text/css" rel="stylesheet" href="../yui-3.5.1/build/cssreset/cssreset-min.css">
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>

+ 1 - 1
hmc/html/index.php

@@ -31,7 +31,7 @@
         </div>
         </div>
         -->
         -->
 
 
-    <script src="http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js"></script>
+    <script src="http://yui.yahooapis.com/3.5.1/build/yui/yui-min.js"></script>
     <script src="../js/utils.js"></script>
     <script src="../js/utils.js"></script>
     <script src="../js/clustersList.js"></script>
     <script src="../js/clustersList.js"></script>
 
 

+ 1 - 1
hmc/html/initializeCluster.php

@@ -3,7 +3,7 @@
     <title id="pageTitleId">Hortonworks Management Center</title>
     <title id="pageTitleId">Hortonworks Management Center</title>
 
 
     <!-- CSS -->
     <!-- CSS -->
-    <link type="text/css" rel="stylesheet" href="../yui-3.4.1/build/cssreset/cssreset-min.css">
+    <link type="text/css" rel="stylesheet" href="../yui-3.5.1/build/cssreset/cssreset-min.css">
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>

+ 1 - 1
hmc/html/uninstallWizard.php

@@ -3,7 +3,7 @@
     <title id="pageTitleId">Hortonworks Data Platform Portal</title>
     <title id="pageTitleId">Hortonworks Data Platform Portal</title>
 
 
     <!-- CSS -->
     <!-- CSS -->
-    <link type="text/css" rel="stylesheet" href="../yui-3.4.1/build/cssreset/cssreset-min.css"> 
+    <link type="text/css" rel="stylesheet" href="../yui-3.5.1/build/cssreset/cssreset-min.css"> 
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/bootstrap.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>
     <link type="text/css" rel="stylesheet" href="../css/common2.css" media="screen"/>

+ 1 - 1
hmc/package/rpm/SPECS/hmc.spec

@@ -78,7 +78,7 @@ This package provides a Management Console for Hadoop Cluster.
 %__cp -rf js $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf js $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf puppet $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf puppet $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf php $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf php $RPM_BUILD_ROOT/%{web_prefixdir}/
-%__cp -rf yui-3.4.1 $RPM_BUILD_ROOT/%{web_prefixdir}/
+%__cp -rf yui-3.5.1 $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -f yuiCombinator.php $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -f yuiCombinator.php $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf conf $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf conf $RPM_BUILD_ROOT/%{web_prefixdir}/
 %__cp -rf puppet/modules $RPM_BUILD_ROOT/%{puppet_dir}
 %__cp -rf puppet/modules $RPM_BUILD_ROOT/%{puppet_dir}

+ 1 - 1
hmc/package/rpm/create_hmc_rpm.sh

@@ -52,7 +52,7 @@ cp -rf ${BASEDIR}/../../js ${HMC_DIR}
 #cp -rf ${BASEDIR}/../../src/puppet ${HMC_DIR}
 #cp -rf ${BASEDIR}/../../src/puppet ${HMC_DIR}
 cp -rf ${BASEDIR}/../../puppet ${HMC_DIR}
 cp -rf ${BASEDIR}/../../puppet ${HMC_DIR}
 cp -rf ${BASEDIR}/../../php ${HMC_DIR}
 cp -rf ${BASEDIR}/../../php ${HMC_DIR}
-cp -rf ${BASEDIR}/../../yui-3.4.1 ${HMC_DIR}
+cp -rf ${BASEDIR}/../../yui-3.5.1 ${HMC_DIR}
 cp -rf ${BASEDIR}/../../conf ${HMC_DIR}
 cp -rf ${BASEDIR}/../../conf ${HMC_DIR}
 cp -f ${BASEDIR}/../../yuiCombinator.php ${HMC_DIR}
 cp -f ${BASEDIR}/../../yuiCombinator.php ${HMC_DIR}
 TAR_DEST="${BUILD_DIR}/${PKG_NAME}-$VERSION.tar.gz"
 TAR_DEST="${BUILD_DIR}/${PKG_NAME}-$VERSION.tar.gz"

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/anim-base/anim-base-min.js


+ 0 - 7
hmc/yui-3.4.1/build/anim-node-plugin/anim-node-plugin-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("anim-node-plugin",function(b){var a=function(c){c=(c)?b.merge(c):{};c.node=c.host;a.superclass.constructor.apply(this,arguments);};a.NAME="nodefx";a.NS="fx";b.extend(a,b.Anim);b.namespace("Plugin");b.Plugin.NodeFX=a;},"3.4.1",{requires:["node-pluginhost","anim-base"]});

+ 0 - 7
hmc/yui-3.4.1/build/anim-xy/anim-xy-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("anim-xy",function(b){var a=Number;b.Anim.behaviors.xy={set:function(f,d,i,h,c,g,e){f._node.setXY([e(c,a(i[0]),a(h[0])-a(i[0]),g),e(c,a(i[1]),a(h[1])-a(i[1]),g)]);},get:function(c){return c._node.getXY();}};},"3.4.1",{requires:["anim-base","node-screen"]});

+ 0 - 7
hmc/yui-3.4.1/build/array-extras/array-extras-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("array-extras",function(d){var b=d.Lang,c=Array.prototype,a=d.Array;a.lastIndexOf=c.lastIndexOf?function(e,g,f){return f||f===0?e.lastIndexOf(g,f):e.lastIndexOf(g);}:function(f,j,h){var e=f.length,g=e-1;if(h||h===0){g=Math.min(h<0?e+h:h,e);}if(g>-1&&e>0){for(;g>-1;--g){if(g in f&&f[g]===j){return g;}}}return -1;};a.unique=function(f,l){var k=0,e=f.length,h=[],m,g;for(;k<e;++k){m=f[k];for(g=h.length;g>-1;--g){if(m===h[g]){break;}}if(g===-1){h.push(m);}}if(l){if(b.isNumber(h[0])){h.sort(a.numericSort);}else{h.sort();}}return h;};a.filter=c.filter?function(e,g,h){return e.filter(g,h);}:function(g,l,m){var j=0,e=g.length,h=[],k;for(;j<e;++j){if(j in g){k=g[j];if(l.call(m,k,j,g)){h.push(k);}}}return h;};a.reject=function(e,g,h){return a.filter(e,function(k,j,f){return !g.call(h,k,j,f);});};a.every=c.every?function(e,g,h){return e.every(g,h);}:function(g,j,k){for(var h=0,e=g.length;h<e;++h){if(h in g&&!j.call(k,g[h],h,g)){return false;}}return true;};a.map=c.map?function(e,g,h){return e.map(g,h);}:function(g,k,l){var j=0,e=g.length,h=g.concat();for(;j<e;++j){if(j in g){h[j]=k.call(l,g[j],j,g);}}return h;};a.reduce=c.reduce?function(e,i,g,h){return e.reduce(function(l,k,j,f){return g.call(h,l,k,j,f);},i);}:function(h,m,k,l){var j=0,g=h.length,e=m;for(;j<g;++j){if(j in h){e=k.call(l,e,h[j],j,h);}}return e;};a.find=function(g,j,k){for(var h=0,e=g.length;h<e;h++){if(h in g&&j.call(k,g[h],h,g)){return g[h];}}return null;};a.grep=function(e,f){return a.filter(e,function(h,g){return f.test(h);});};a.partition=function(e,h,i){var g={matches:[],rejects:[]};a.each(e,function(j,f){var k=h.call(i,j,f,e)?g.matches:g.rejects;k.push(j);});return g;};a.zip=function(f,e){var g=[];a.each(f,function(i,h){g.push([i,e[h]]);});return g;};},"3.4.1",{requires:["yui-base"]});

+ 0 - 7
hmc/yui-3.4.1/build/array-invoke/array-invoke-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("array-invoke",function(a){a.Array.invoke=function(b,e){var d=a.Array(arguments,2,true),f=a.Lang.isFunction,c=[];a.Array.each(a.Array(b),function(h,g){if(f(h[e])){c[g]=h[e].apply(h,d);}});return c;};},"3.4.1",{requires:["yui-base"]});

+ 0 - 46
hmc/yui-3.4.1/build/array-invoke/array-invoke.js

@@ -1,46 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('array-invoke', function(Y) {
-
-/**
-@module collection
-@submodule array-invoke
-*/
-
-/**
-Executes a named method on each item in an array of objects. Items in the array
-that do not have a function by that name will be skipped.
-
-@example
-
-    Y.Array.invoke(arrayOfDrags, 'plug', Y.Plugin.DDProxy);
-
-@method invoke
-@param {Array} items Array of objects supporting the named method.
-@param {String} name the name of the method to execute on each item.
-@param {Any} [args*] Any number of additional args are passed as parameters to
-  the execution of the named method.
-@return {Array} All return values, indexed according to the item index.
-@static
-@for Array
-**/
-Y.Array.invoke = function(items, name) {
-    var args = Y.Array(arguments, 2, true),
-        isFunction = Y.Lang.isFunction,
-        ret = [];
-
-    Y.Array.each(Y.Array(items), function(item, i) {
-        if (isFunction(item[name])) {
-            ret[i] = item[name].apply(item, args);
-        }
-    });
-
-    return ret;
-};
-
-
-}, '3.4.1' ,{requires:['yui-base']});

+ 0 - 7
hmc/yui-3.4.1/build/arraylist-filter/arraylist-filter-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("arraylist-filter",function(a){a.mix(a.ArrayList.prototype,{filter:function(c){var b=[];a.Array.each(this._items,function(e,d){e=this.item(d);if(c(e)){b.push(e);}},this);return new this.constructor(b);}});},"3.4.1",{requires:["arraylist"]});

+ 0 - 7
hmc/yui-3.4.1/build/arraylist/arraylist-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("arraylist",function(e){var d=e.Array,c=d.each,a;function b(f){if(f!==undefined){this._items=e.Lang.isArray(f)?f:d(f);}else{this._items=this._items||[];}}a={item:function(f){return this._items[f];},each:function(g,f){c(this._items,function(j,h){j=this.item(h);g.call(f||j,j,h,this);},this);return this;},some:function(g,f){return d.some(this._items,function(j,h){j=this.item(h);return g.call(f||j,j,h,this);},this);},indexOf:function(f){return d.indexOf(this._items,f);},size:function(){return this._items.length;},isEmpty:function(){return !this.size();},toJSON:function(){return this._items;}};a._item=a.item;b.prototype=a;e.mix(b,{addMethod:function(f,g){g=d(g);c(g,function(h){f[h]=function(){var j=d(arguments,0,true),i=[];c(this._items,function(m,l){m=this._item(l);var k=m[h].apply(m,j);if(k!==undefined&&k!==m){i[l]=k;}},this);return i.length?i:this;};});}});e.ArrayList=b;},"3.4.1",{requires:["yui-base"]});

+ 0 - 218
hmc/yui-3.4.1/build/arraylist/arraylist.js

@@ -1,218 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('arraylist', function(Y) {
-
-/**
- * Collection utilities beyond what is provided in the YUI core
- * @module collection
- * @submodule arraylist
- */
-
-var YArray      = Y.Array,
-    YArray_each = YArray.each,
-    ArrayListProto;
-
-/**
- * Generic ArrayList class for managing lists of items and iterating operations
- * over them.  The targeted use for this class is for augmentation onto a
- * class that is responsible for managing multiple instances of another class
- * (e.g. NodeList for Nodes).  The recommended use is to augment your class with
- * ArrayList, then use ArrayList.addMethod to mirror the API of the constituent
- * items on the list's API.
- *
- * The default implementation creates immutable lists, but mutability can be
- * provided via the arraylist-add submodule or by implementing mutation methods
- * directly on the augmented class's prototype.
- *
- * @class ArrayList
- * @constructor
- * @param items { Array } array of items this list will be responsible for
- */
-function ArrayList( items ) {
-    if ( items !== undefined ) {
-        this._items = Y.Lang.isArray( items ) ? items : YArray( items );
-    } else {
-        // ||= to support lazy initialization from augment
-        this._items = this._items || [];
-    }
-}
-
-ArrayListProto = {
-    /**
-     * Get an item by index from the list.  Override this method if managing a
-     * list of objects that have a different public representation (e.g. Node
-     * instances vs DOM nodes).  The iteration methods that accept a user
-     * function will use this method for access list items for operation.
-     *
-     * @method item
-     * @param i { Integer } index to fetch
-     * @return { mixed } the item at the requested index
-     */
-    item: function ( i ) {
-        return this._items[i];
-    },
-
-    /**
-     * <p>Execute a function on each item of the list, optionally providing a
-     * custom execution context.  Default context is the item.</p>
-     *
-     * <p>The callback signature is <code>callback( item, index )</code>.</p>
-     *
-     * @method each
-     * @param fn { Function } the function to execute
-     * @param context { mixed } optional override 'this' in the function
-     * @return { ArrayList } this instance
-     * @chainable
-     */
-    each: function ( fn, context ) {
-        YArray_each( this._items, function ( item, i ) {
-            item = this.item( i );
-
-            fn.call( context || item, item, i, this );
-        }, this);
-
-        return this;
-    },
-
-    /**
-     * <p>Execute a function on each item of the list, optionally providing a
-     * custom execution context.  Default context is the item.</p>
-     *
-     * <p>The callback signature is <code>callback( item, index )</code>.</p>
-     *
-     * <p>Unlike <code>each</code>, if the callback returns true, the
-     * iteratation will stop.</p>
-     *
-     * @method some
-     * @param fn { Function } the function to execute
-     * @param context { mixed } optional override 'this' in the function
-     * @return { Boolean } True if the function returned true on an item
-     */
-    some: function ( fn, context ) {
-        return YArray.some( this._items, function ( item, i ) {
-            item = this.item( i );
-
-            return fn.call( context || item, item, i, this );
-        }, this);
-    },
-
-    /**
-     * Finds the first index of the needle in the managed array of items.
-     *
-     * @method indexOf
-     * @param needle { mixed } The item to search for
-     * @return { Integer } Array index if found.  Otherwise -1
-     */
-    indexOf: function ( needle ) {
-        return YArray.indexOf( this._items, needle );
-    },
-
-    /**
-     * How many items are in this list?
-     *
-     * @method size
-     * @return { Integer } Number of items in the list
-     */
-    size: function () {
-        return this._items.length;
-    },
-
-    /**
-     * Is this instance managing any items?
-     *
-     * @method isEmpty
-     * @return { Boolean } true if 1 or more items are being managed
-     */
-    isEmpty: function () {
-        return !this.size();
-    },
-
-    /**
-     * Provides an array-like representation for JSON.stringify.
-     *
-     * @method toJSON
-     * @return { Array } an array representation of the ArrayList
-     */
-    toJSON: function () {
-        return this._items;
-    }
-};
-// Default implementation does not distinguish between public and private
-// item getter
-/**
- * Protected method for optimizations that may be appropriate for API
- * mirroring. Similar in functionality to <code>item</code>, but is used by
- * methods added with <code>ArrayList.addMethod()</code>.
- *
- * @method _item
- * @protected
- * @param i { Integer } Index of item to fetch
- * @return { mixed } The item appropriate for pass through API methods
- */
-ArrayListProto._item = ArrayListProto.item;
-
-ArrayList.prototype  = ArrayListProto;
-
-Y.mix( ArrayList, {
-
-    /**
-     * <p>Adds a pass through method to dest (typically the prototype of a list
-     * class) that calls the named method on each item in the list with
-     * whatever parameters are passed in.  Allows for API indirection via list
-     * instances.</p>
-     *
-     * <p>Accepts a single string name or an array of string names.</p>
-     *
-     * <pre><code>list.each( function ( item ) {
-     *     item.methodName( 1, 2, 3 );
-     * } );
-     * // becomes
-     * list.methodName( 1, 2, 3 );</code></pre>
-     *
-     * <p>Additionally, the pass through methods use the item retrieved by the
-     * <code>_item</code> method in case there is any special behavior that is
-     * appropriate for API mirroring.</p>
-     *
-     * <p>If the iterated method returns a value, the return value from the
-     * added method will be an array of values with each value being at the
-     * corresponding index for that item.  If the iterated method does not
-     * return a value, the added method will be chainable.
-     *
-     * @method addMethod
-     * @static
-     * @param dest {Object} Object or prototype to receive the iterator method
-     * @param name {String|String[]} Name of method of methods to create
-     */
-    addMethod: function ( dest, names ) {
-
-        names = YArray( names );
-
-        YArray_each( names, function ( name ) {
-            dest[ name ] = function () {
-                var args = YArray( arguments, 0, true ),
-                    ret  = [];
-
-                YArray_each( this._items, function ( item, i ) {
-                    item = this._item( i );
-
-                    var result = item[ name ].apply( item, args );
-
-                    if ( result !== undefined && result !== item ) {
-                        ret[i] = result;
-                    }
-                }, this);
-
-                return ret.length ? ret : this;
-            };
-        } );
-    }
-} );
-
-Y.ArrayList = ArrayList;
-
-
-}, '3.4.1' ,{requires:['yui-base']});

+ 0 - 69
hmc/yui-3.4.1/build/arraysort/arraysort-debug.js

@@ -1,69 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('arraysort', function(Y) {
-
-/**
- * Provides a case-insenstive comparator which can be used for array sorting.
- * 
- * @module arraysort
- */
-
-var LANG = Y.Lang,
-    ISVALUE = LANG.isValue,
-    ISSTRING = LANG.isString;
-
-/**
- * Provides a case-insenstive comparator which can be used for array sorrting.
- *
- * @class ArraySort
- */
-
-Y.ArraySort = {
-    /**
-     * Comparator function for simple case-insensitive string sorting.
-     *
-     * @method compare
-     * @param a {Object} First sort argument.
-     * @param b {Object} Second sort argument.
-     * @param desc {Boolean} True if sort direction is descending, false if
-     * sort direction is ascending.
-     * @return {Boolean} Return -1 when a < b. Return 0 when a = b.
-     * Return 1 when a > b.
-     */
-    compare: function(a, b, desc) {
-        if(!ISVALUE(a)) {
-            if(!ISVALUE(b)) {
-                return 0;
-            }
-            else {
-                return 1;
-            }
-        }
-        else if(!ISVALUE(b)) {
-            return -1;
-        }
-
-        if(ISSTRING(a)) {
-            a = a.toLowerCase();
-        }
-        if(ISSTRING(b)) {
-            b = b.toLowerCase();
-        }
-        if(a < b) {
-            return (desc) ? 1 : -1;
-        }
-        else if (a > b) {
-            return (desc) ? -1 : 1;
-        }
-        else {
-            return 0;
-        }
-    }
-};
-
-
-}, '3.4.1' ,{requires:['yui-base']});

+ 0 - 7
hmc/yui-3.4.1/build/arraysort/arraysort-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("arraysort",function(c){var b=c.Lang,a=b.isValue,d=b.isString;c.ArraySort={compare:function(f,e,g){if(!a(f)){if(!a(e)){return 0;}else{return 1;}}else{if(!a(e)){return -1;}}if(d(f)){f=f.toLowerCase();}if(d(e)){e=e.toLowerCase();}if(f<e){return(g)?1:-1;}else{if(f>e){return(g)?-1:1;}else{return 0;}}}};},"3.4.1",{requires:["yui-base"]});

+ 0 - 69
hmc/yui-3.4.1/build/arraysort/arraysort.js

@@ -1,69 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('arraysort', function(Y) {
-
-/**
- * Provides a case-insenstive comparator which can be used for array sorting.
- * 
- * @module arraysort
- */
-
-var LANG = Y.Lang,
-    ISVALUE = LANG.isValue,
-    ISSTRING = LANG.isString;
-
-/**
- * Provides a case-insenstive comparator which can be used for array sorrting.
- *
- * @class ArraySort
- */
-
-Y.ArraySort = {
-    /**
-     * Comparator function for simple case-insensitive string sorting.
-     *
-     * @method compare
-     * @param a {Object} First sort argument.
-     * @param b {Object} Second sort argument.
-     * @param desc {Boolean} True if sort direction is descending, false if
-     * sort direction is ascending.
-     * @return {Boolean} Return -1 when a < b. Return 0 when a = b.
-     * Return 1 when a > b.
-     */
-    compare: function(a, b, desc) {
-        if(!ISVALUE(a)) {
-            if(!ISVALUE(b)) {
-                return 0;
-            }
-            else {
-                return 1;
-            }
-        }
-        else if(!ISVALUE(b)) {
-            return -1;
-        }
-
-        if(ISSTRING(a)) {
-            a = a.toLowerCase();
-        }
-        if(ISSTRING(b)) {
-            b = b.toLowerCase();
-        }
-        if(a < b) {
-            return (desc) ? 1 : -1;
-        }
-        else if (a > b) {
-            return (desc) ? -1 : 1;
-        }
-        else {
-            return 0;
-        }
-    }
-};
-
-
-}, '3.4.1' ,{requires:['yui-base']});

BIN
hmc/yui-3.4.1/build/assets/skins/sam/arrows.png


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/autocomplete-list.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-aclist{position:absolute;z-index:1}.yui3-aclist-hidden{visibility:hidden}.yui3-aclist-aria{left:-9999px;position:absolute}.yui3-aclist-list{list-style:none;margin:0;overflow:hidden;padding:0}.yui3-aclist-item{cursor:pointer;list-style:none;padding:2px 5px}.yui3-aclist-item-active{outline:#afafaf dotted thin}.yui3-skin-sam .yui3-aclist-content{background:#fff;border:1px solid #afafaf;-moz-box-shadow:1px 1px 4px #888;-webkit-box-shadow:1px 1px 4px #888;box-shadow:1px 1px 4px #888}.yui3-skin-sam .yui3-aclist-item-hover{background:#bfdaff}.yui3-skin-sam .yui3-aclist-item-active{background:#2647a0;color:#fff;outline:0}

BIN
hmc/yui-3.4.1/build/assets/skins/sam/bg.png


File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/calendar-base.css


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/calendar.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-calendar-column-hidden,.yui3-calendar-hidden{display:none}.yui3-calendar-day{cursor:pointer}.yui3-calendar-selection-disabled{cursor:default}.yui3-calendar-prevmonth-day{cursor:default}.yui3-calendar-nextmonth-day{cursor:default}.yui3-calendar-content:hover .yui3-calendar-day,.yui3-calendar-content:hover .yui3-calendar-prevmonth-day,.yui3-calendar-content:hover .yui3-calendar-nextmonth-day{-moz-user-select:none}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/calendarnavigator.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-calendar-header{padding-left:15px;padding-right:15px}.yui3-calendar-header-label{width:100%}.yui3-calendarnav-prevmonth{width:15px;margin-left:-15px;cursor:pointer}.yui3-calendarnav-nextmonth{width:15px;margin-right:-15px;cursor:pointer;text-align:right}.yui3-calendarnav-prevmonth,.yui3-calendarnav-nextmonth{color:#000}.yui3-calendarnav-prevmonth:hover,.yui3-calendarnav-nextmonth:hover{color:#06c}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/console-filters.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-skin-sam .yui3-console-ft .yui3-console-filters-categories,.yui3-skin-sam .yui3-console-ft .yui3-console-filters-sources{text-align:left;padding:5px 0;border:1px inset;margin:0 2px}.yui3-skin-sam .yui3-console-ft .yui3-console-filters-categories{background:#fff;border-bottom:2px ridge}.yui3-skin-sam .yui3-console-ft .yui3-console-filters-sources{background:#fff;margin-bottom:2px;border-top:0 none;border-bottom-right-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-webkit-border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px}.yui3-skin-sam .yui3-console-filter-label{white-space:nowrap;margin-left:1ex}

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/console.css


File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/datatable-base.css


File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/dial.css


BIN
hmc/yui-3.4.1/build/assets/skins/sam/dt-arrow-dn.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/dt-arrow-up.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/horizontal-menu-submenu-indicator.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/horizontal-menu-submenu-toggle.png


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/node-flick.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-flick{position:relative;overflow:hidden}.yui3-flick-content{position:relative}

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/node-menunav.css


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/overlay.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-overlay{position:absolute}.yui3-overlay-hidden{visibility:hidden}.yui3-widget-tmp-forcesize .yui3-overlay-content{overflow:hidden!important}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/panel.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-panel{position:absolute}.yui3-panel-hidden{visibility:hidden}.yui3-widget-tmp-forcesize .yui3-panel-content{overflow:hidden!important}.yui3-panel .yui3-widget-hd{position:relative}.yui3-panel .yui3-widget-hd .yui3-widget-button-wrapper{position:absolute;top:0;right:0}.yui3-panel .yui3-widget-ft .yui3-widget-button-wrapper{display:inline-block;*display:inline;zoom:1}.yui3-skin-sam .yui3-widget-mask{background-color:black;zoom:1;-ms-filter:"alpha(opacity=70)";filter:alpha(opacity=70);opacity:.7}.yui3-skin-sam .yui3-panel-content{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333;border:1px solid black;background:white}.yui3-skin-sam .yui3-panel-content .yui3-widget-hd{padding:8px 28px 8px 8px;min-height:13px;_height:13px;color:white;background-color:#3961c5;background:-moz-linear-gradient(0% 100% 90deg,#2647a0 7%,#3d67ce 50%,#426fd9 100%);background:-webkit-gradient(linear,left bottom,left top,from(#2647a0),color-stop(0.07,#2647a0),color-stop(0.5,#3d67ce),to(#426fd9))}.yui3-skin-sam .yui3-panel-content .yui3-widget-hd .yui3-widget-button-wrapper{padding:8px}.yui3-skin-sam .yui3-panel-content .yui3-widget-bd{padding:10px}.yui3-skin-sam .yui3-panel-content .yui3-widget-ft{background:#edf5ff;padding:8px;text-align:right}.yui3-skin-sam .yui3-panel-content .yui3-widget-ft .yui3-button{padding:2px 8px;margin:0 3px;border:1px solid gray;-moz-border-radius:.435em;-webkit-border-radius:.435em;border-radius:.435em;color:black;background:#d8d8da;background:-moz-linear-gradient(0% 100% 90deg,#d8d8da 18%,#f1f2f2 50%,white 100%);background:-webkit-gradient(linear,left bottom,left top,from(#d8d8da),color-stop(0.18,#d8d8da),color-stop(0.5,#f1f2f2),to(white))}

BIN
hmc/yui-3.4.1/build/assets/skins/sam/rail-x-lines.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/rail-x.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/rail-y-lines.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/rail-y.png


File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/resize-base.css


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/scrollview-base.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-scrollview{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none}.yui3-scrollview-hidden{display:none}.yui3-scrollview-content{position:relative}.yui3-skin-sam .yui3-scrollview{-webkit-tap-highlight-color:rgba(255,255,255,0)}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/scrollview-list.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-skin-sam .yui3-scrollview{-webkit-tap-highlight-color:rgba(255,255,255,0)}.yui3-skin-sam .yui3-scrollview{background-color:white}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-item{*zoom:1}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-list{*zoom:1;list-style:none;padding:0;margin:0}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content{border-top:0;background-color:white;font-family:HelveticaNeue,arial,helvetica,clean,sans-serif;color:black}.yui3-skin-sam .yui3-scrollview-vert .yui3-scrollview-content .yui3-scrollview-item{border-bottom:1px solid #303030;padding:15px 20px 16px;font-size:100%;font-weight:bold;background-color:white;cursor:pointer}

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/assets/skins/sam/scrollview-scrollbars.css


File diff suppressed because it is too large
+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/skin.css


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/slider-base.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-slider,.yui3-slider-rail{display:-moz-inline-stack;display:inline-block;*display:inline;zoom:1;vertical-align:middle}.yui3-slider-content{position:relative;display:block}.yui3-slider-rail{position:relative}.yui3-slider-rail-cap-top,.yui3-slider-rail-cap-left,.yui3-slider-rail-cap-bottom,.yui3-slider-rail-cap-right,.yui3-slider-thumb,.yui3-slider-thumb-image,.yui3-slider-thumb-shadow{position:absolute}.yui3-slider-thumb{overflow:hidden}.yui3-skin-sam .yui3-slider-x .yui3-slider-rail,.yui3-skin-sam .yui3-slider-x .yui3-slider-rail-cap-left,.yui3-skin-sam .yui3-slider-x .yui3-slider-rail-cap-right{background-image:url(rail-x.png);background-repeat:repeat-x}.yui3-skin-sam .yui3-slider-x .yui3-slider-rail{height:26px}.yui3-skin-sam .yui3-slider-x .yui3-slider-thumb{height:26px;width:15px}.yui3-skin-sam .yui3-slider-x .yui3-slider-rail-cap-left{background-position:0 -20px;height:20px;left:-2px;width:5px}.yui3-skin-sam .yui3-slider-x .yui3-slider-rail-cap-right{background-position:0 -40px;height:20px;right:-2px;width:5px}.yui3-skin-sam .yui3-slider-x .yui3-slider-thumb-image{left:0;top:-10px}.yui3-skin-sam .yui3-slider-x .yui3-slider-thumb-shadow{left:0;opacity:.15;filter:alpha(opacity=15);top:-50px}.yui3-skin-sam .yui3-slider-y .yui3-slider-rail,.yui3-skin-sam .yui3-slider-y .yui3-slider-rail-cap-top,.yui3-skin-sam .yui3-slider-y .yui3-slider-rail-cap-bottom{background-image:url(rail-y.png);background-repeat:repeat-y}.yui3-skin-sam .yui3-slider-y .yui3-slider-rail{width:26px}.yui3-skin-sam .yui3-slider-y .yui3-slider-thumb{width:26px;height:15px}.yui3-skin-sam .yui3-slider-y .yui3-slider-rail-cap-top{background-position:-20px 0;width:20px;top:-2px;height:5px}.yui3-skin-sam .yui3-slider-y .yui3-slider-rail-cap-bottom{background-position:-40px 0;width:20px;bottom:-2px;height:5px}.yui3-skin-sam .yui3-slider-y .yui3-slider-thumb-image{left:-10px;top:0}.yui3-skin-sam .yui3-slider-y .yui3-slider-thumb-shadow{left:-50px;opacity:.15;filter:alpha(opacity=15);top:0}

BIN
hmc/yui-3.4.1/build/assets/skins/sam/sprite.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/sprite_icons.gif


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/tabview.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-tab-panel{display:none}.yui3-tab-panel-selected{display:block}.yui3-tabview-list,.yui3-tab{margin:0;padding:0;list-style:none}.yui3-tabview{position:relative}.yui3-tabview,.yui3-tabview-list,.yui3-tabview-panel,.yui3-tab,.yui3-tab-panel{zoom:1}.yui3-tab{display:inline-block;*display:inline;vertical-align:bottom;cursor:pointer}.yui3-tab-label{display:block;display:inline-block;padding:6px 10px;position:relative;text-decoration:none;vertical-align:bottom}.yui3-skin-sam .yui3-tabview-list{border:solid #2647a0;border-width:0 0 5px;zoom:1}.yui3-skin-sam .yui3-tab{margin:0 .2em 0 0;padding:1px 0 0;zoom:1}.yui3-skin-sam .yui3-tab-selected{margin-bottom:-1px}.yui3-skin-sam .yui3-tab-label{background:#d8d8d8 url(sprite.png) repeat-x;border:solid #a3a3a3;border-width:1px 1px 0 1px;color:#000;cursor:hand;font-size:85%;padding:.3em .75em;text-decoration:none}.yui3-skin-sam .yui3-tab-label:hover,.yui3-skin-sam .yui3-tab-label:focus{background:#bfdaff url(sprite.png) repeat-x left -1300px;outline:0}.yui3-skin-sam .yui3-tab-selected .yui3-tab-label,.yui3-skin-sam .yui3-tab-selected .yui3-tab-label:focus,.yui3-skin-sam .yui3-tab-selected .yui3-tab-label:hover{background:#2647a0 url(sprite.png) repeat-x left -1400px;color:#fff}.yui3-skin-sam .yui3-tab-selected .yui3-tab-label{padding:.4em .75em}.yui3-skin-sam .yui3-tab-selected .yui3-tab-label{border-color:#243356}.yui3-skin-sam .yui3-tabview-panel{background:#edf5ff}.yui3-skin-sam .yui3-tabview-panel{border:1px solid #808080;border-top-color:#243356;padding:.25em .5em}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/test.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-skin-sam .yui3-console-entry-pass .yui3-console-entry-cat{background-color:green;color:#fff;}.yui3-skin-sam .yui3-console-entry-fail .yui3-console-entry-cat{background-color:red;color:#fff;}.yui3-skin-sam .yui3-console-entry-ignore .yui3-console-entry-cat{background-color:#666;}

BIN
hmc/yui-3.4.1/build/assets/skins/sam/thumb-x.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/thumb-y.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/vertical-menu-submenu-indicator.png


BIN
hmc/yui-3.4.1/build/assets/skins/sam/warn_error.png


+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/widget-base.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-widget-hidden{display:none}.yui3-widget-content{overflow:hidden}.yui3-widget-content-expanded{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;height:100%}.yui3-widget-tmp-forcesize{overflow:hidden!important}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/widget-buttons.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-widget-buttons .yui3-button{display:inline-block;*display:inline;zoom:1;cursor:pointer;text-decoration:none}.yui3-widget-buttons .yui3-button-close,.yui3-widget-buttons .yui3-button-close .yui3-button-content,.yui3-widget-buttons .yui3-button-close .yui3-button-icon{display:inline-block;*display:inline;zoom:1;width:13px;height:13px;line-height:13px;vertical-align:top}.yui3-widget-buttons .yui3-button-close .yui3-button-icon{background-repeat:no-repeat;background-position:1px 1px}.yui3-skin-sam .yui3-widget-buttons .yui3-button-icon{background-image:url(sprite_icons.gif)}

+ 0 - 7
hmc/yui-3.4.1/build/assets/skins/sam/widget-stack.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-widget-stacked .yui3-widget-shim{opacity:0;filter:alpha(opacity=0);position:absolute;border:0;top:0;left:0;padding:0;margin:0;z-index:-1;width:100%;height:100%;_width:0;_height:0}

+ 0 - 528
hmc/yui-3.4.1/build/async-queue/async-queue.js

@@ -1,528 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('async-queue', function(Y) {
-
-/**
- * <p>AsyncQueue allows you create a chain of function callbacks executed
- * via setTimeout (or synchronously) that are guaranteed to run in order.
- * Items in the queue can be promoted or removed.  Start or resume the
- * execution chain with run().  pause() to temporarily delay execution, or
- * stop() to halt and clear the queue.</p>
- *
- * @module async-queue
- */
-
-/**
- * <p>A specialized queue class that supports scheduling callbacks to execute
- * sequentially, iteratively, even asynchronously.</p>
- *
- * <p>Callbacks can be function refs or objects with the following keys.  Only
- * the <code>fn</code> key is required.</p>
- *
- * <ul>
- * <li><code>fn</code> -- The callback function</li>
- * <li><code>context</code> -- The execution context for the callbackFn.</li>
- * <li><code>args</code> -- Arguments to pass to callbackFn.</li>
- * <li><code>timeout</code> -- Millisecond delay before executing callbackFn.
- *                     (Applies to each iterative execution of callback)</li>
- * <li><code>iterations</code> -- Number of times to repeat the callback.
- * <li><code>until</code> -- Repeat the callback until this function returns
- *                         true.  This setting trumps iterations.</li>
- * <li><code>autoContinue</code> -- Set to false to prevent the AsyncQueue from
- *                        executing the next callback in the Queue after
- *                        the callback completes.</li>
- * <li><code>id</code> -- Name that can be used to get, promote, get the
- *                        indexOf, or delete this callback.</li>
- * </ul>
- *
- * @class AsyncQueue
- * @extends EventTarget
- * @constructor
- * @param callback* {Function|Object} 0..n callbacks to seed the queue
- */
-Y.AsyncQueue = function() {
-    this._init();
-    this.add.apply(this, arguments);
-};
-
-var Queue   = Y.AsyncQueue,
-    EXECUTE = 'execute',
-    SHIFT   = 'shift',
-    PROMOTE = 'promote',
-    REMOVE  = 'remove',
-
-    isObject   = Y.Lang.isObject,
-    isFunction = Y.Lang.isFunction;
-
-/**
- * <p>Static default values used to populate callback configuration properties.
- * Preconfigured defaults include:</p>
- *
- * <ul>
- *  <li><code>autoContinue</code>: <code>true</code></li>
- *  <li><code>iterations</code>: 1</li>
- *  <li><code>timeout</code>: 10 (10ms between callbacks)</li>
- *  <li><code>until</code>: (function to run until iterations &lt;= 0)</li>
- * </ul>
- *
- * @property defaults
- * @type {Object}
- * @static
- */
-Queue.defaults = Y.mix({
-    autoContinue : true,
-    iterations   : 1,
-    timeout      : 10,
-    until        : function () {
-        this.iterations |= 0;
-        return this.iterations <= 0;
-    }
-}, Y.config.queueDefaults || {});
-
-Y.extend(Queue, Y.EventTarget, {
-    /**
-     * Used to indicate the queue is currently executing a callback.
-     *
-     * @property _running
-     * @type {Boolean|Object} true for synchronous callback execution, the
-     *                        return handle from Y.later for async callbacks.
-     *                        Otherwise false.
-     * @protected
-     */
-    _running : false,
-
-    /**
-     * Initializes the AsyncQueue instance properties and events.
-     *
-     * @method _init
-     * @protected
-     */
-    _init : function () {
-        Y.EventTarget.call(this, { prefix: 'queue', emitFacade: true });
-
-        this._q = [];
-
-        /** 
-         * Callback defaults for this instance.  Static defaults that are not
-         * overridden are also included.
-         *
-         * @property defaults
-         * @type {Object}
-         */
-        this.defaults = {};
-
-        this._initEvents();
-    },
-
-    /**
-     * Initializes the instance events.
-     *
-     * @method _initEvents
-     * @protected
-     */
-    _initEvents : function () {
-        this.publish({
-            'execute' : { defaultFn : this._defExecFn,    emitFacade: true },
-            'shift'   : { defaultFn : this._defShiftFn,   emitFacade: true },
-            'add'     : { defaultFn : this._defAddFn,     emitFacade: true },
-            'promote' : { defaultFn : this._defPromoteFn, emitFacade: true },
-            'remove'  : { defaultFn : this._defRemoveFn,  emitFacade: true }
-        });
-    },
-
-    /**
-     * Returns the next callback needing execution.  If a callback is
-     * configured to repeat via iterations or until, it will be returned until
-     * the completion criteria is met.
-     *
-     * When the queue is empty, null is returned.
-     *
-     * @method next
-     * @return {Function} the callback to execute
-     */
-    next : function () {
-        var callback;
-
-        while (this._q.length) {
-            callback = this._q[0] = this._prepare(this._q[0]);
-            if (callback && callback.until()) {
-                this.fire(SHIFT, { callback: callback });
-                callback = null;
-            } else {
-                break;
-            }
-        }
-
-        return callback || null;
-    },
-
-    /**
-     * Default functionality for the &quot;shift&quot; event.  Shifts the
-     * callback stored in the event object's <em>callback</em> property from
-     * the queue if it is the first item.
-     *
-     * @method _defShiftFn
-     * @param e {Event} The event object
-     * @protected
-     */
-    _defShiftFn : function (e) {
-        if (this.indexOf(e.callback) === 0) {
-            this._q.shift();
-        }
-    },
-
-    /**
-     * Creates a wrapper function to execute the callback using the aggregated 
-     * configuration generated by combining the static AsyncQueue.defaults, the
-     * instance defaults, and the specified callback settings.
-     *
-     * The wrapper function is decorated with the callback configuration as
-     * properties for runtime modification.
-     *
-     * @method _prepare
-     * @param callback {Object|Function} the raw callback
-     * @return {Function} a decorated function wrapper to execute the callback
-     * @protected
-     */
-    _prepare: function (callback) {
-        if (isFunction(callback) && callback._prepared) {
-            return callback;
-        }
-
-        var config = Y.merge(
-            Queue.defaults,
-            { context : this, args: [], _prepared: true },
-            this.defaults,
-            (isFunction(callback) ? { fn: callback } : callback)),
-            
-            wrapper = Y.bind(function () {
-                if (!wrapper._running) {
-                    wrapper.iterations--;
-                }
-                if (isFunction(wrapper.fn)) {
-                    wrapper.fn.apply(wrapper.context || Y,
-                                     Y.Array(wrapper.args));
-                }
-            }, this);
-            
-        return Y.mix(wrapper, config);
-    },
-
-    /**
-     * Sets the queue in motion.  All queued callbacks will be executed in
-     * order unless pause() or stop() is called or if one of the callbacks is
-     * configured with autoContinue: false.
-     *
-     * @method run
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    run : function () {
-        var callback,
-            cont = true;
-
-        for (callback = this.next();
-            cont && callback && !this.isRunning();
-            callback = this.next())
-        {
-            cont = (callback.timeout < 0) ?
-                this._execute(callback) :
-                this._schedule(callback);
-        }
-
-        if (!callback) {
-            /**
-             * Event fired after the last queued callback is executed.
-             * @event complete
-             */
-            this.fire('complete');
-        }
-
-        return this;
-    },
-
-    /**
-     * Handles the execution of callbacks. Returns a boolean indicating
-     * whether it is appropriate to continue running.
-     *
-     * @method _execute
-     * @param callback {Object} the callback object to execute
-     * @return {Boolean} whether the run loop should continue
-     * @protected
-     */
-    _execute : function (callback) {
-        this._running = callback._running = true;
-
-        callback.iterations--;
-        this.fire(EXECUTE, { callback: callback });
-
-        var cont = this._running && callback.autoContinue;
-
-        this._running = callback._running = false;
-
-        return cont;
-    },
-
-    /**
-     * Schedules the execution of asynchronous callbacks.
-     *
-     * @method _schedule
-     * @param callback {Object} the callback object to execute
-     * @return {Boolean} whether the run loop should continue
-     * @protected
-     */
-    _schedule : function (callback) {
-        this._running = Y.later(callback.timeout, this, function () {
-            if (this._execute(callback)) {
-                this.run();
-            }
-        });
-
-        return false;
-    },
-
-    /**
-     * Determines if the queue is waiting for a callback to complete execution.
-     *
-     * @method isRunning
-     * @return {Boolean} true if queue is waiting for a 
-     *                   from any initiated transactions
-     */
-    isRunning : function () {
-        return !!this._running;
-    },
-
-    /**
-     * Default functionality for the &quot;execute&quot; event.  Executes the
-     * callback function
-     *
-     * @method _defExecFn
-     * @param e {Event} the event object
-     * @protected
-     */
-    _defExecFn : function (e) {
-        e.callback();
-    },
-
-    /**
-     * Add any number of callbacks to the end of the queue. Callbacks may be
-     * provided as functions or objects.
-     *
-     * @method add
-     * @param callback* {Function|Object} 0..n callbacks
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    add : function () {
-        this.fire('add', { callbacks: Y.Array(arguments,0,true) });
-
-        return this;
-    },
-
-    /**
-     * Default functionality for the &quot;add&quot; event.  Adds the callbacks
-     * in the event facade to the queue. Callbacks successfully added to the
-     * queue are present in the event's <code>added</code> property in the
-     * after phase.
-     *
-     * @method _defAddFn
-     * @param e {Event} the event object
-     * @protected
-     */
-    _defAddFn : function(e) {
-        var _q = this._q,
-            added = [];
-
-        Y.Array.each(e.callbacks, function (c) {
-            if (isObject(c)) {
-                _q.push(c);
-                added.push(c);
-            }
-        });
-
-        e.added = added;
-    },
-
-    /**
-     * Pause the execution of the queue after the execution of the current
-     * callback completes.  If called from code outside of a queued callback,
-     * clears the timeout for the pending callback. Paused queue can be
-     * restarted with q.run()
-     *
-     * @method pause
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    pause: function () {
-        if (isObject(this._running)) {
-            this._running.cancel();
-        }
-
-        this._running = false;
-
-        return this;
-    },
-
-    /**
-     * Stop and clear the queue after the current execution of the
-     * current callback completes.
-     *
-     * @method stop
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    stop : function () { 
-        this._q = [];
-
-        return this.pause();
-    },
-
-    /** 
-     * Returns the current index of a callback.  Pass in either the id or
-     * callback function from getCallback.
-     *
-     * @method indexOf
-     * @param callback {String|Function} the callback or its specified id
-     * @return {Number} index of the callback or -1 if not found
-     */
-    indexOf : function (callback) {
-        var i = 0, len = this._q.length, c;
-
-        for (; i < len; ++i) {
-            c = this._q[i];
-            if (c === callback || c.id === callback) {
-                return i;
-            }
-        }
-
-        return -1;
-    },
-
-    /**
-     * Retrieve a callback by its id.  Useful to modify the configuration
-     * while the queue is running.
-     *
-     * @method getCallback
-     * @param id {String} the id assigned to the callback
-     * @return {Object} the callback object
-     */
-    getCallback : function (id) {
-        var i = this.indexOf(id);
-
-        return (i > -1) ? this._q[i] : null;
-    },
-
-    /**
-     * Promotes the named callback to the top of the queue. If a callback is
-     * currently executing or looping (via until or iterations), the promotion
-     * is scheduled to occur after the current callback has completed.
-     *
-     * @method promote
-     * @param callback {String|Object} the callback object or a callback's id
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    promote : function (callback) {
-        var payload = { callback : callback },e;
-
-        if (this.isRunning()) {
-            e = this.after(SHIFT, function () {
-                    this.fire(PROMOTE, payload);
-                    e.detach();
-                }, this);
-        } else {
-            this.fire(PROMOTE, payload);
-        }
-
-        return this;
-    },
-
-    /**
-     * <p>Default functionality for the &quot;promote&quot; event.  Promotes the
-     * named callback to the head of the queue.</p>
-     *
-     * <p>The event object will contain a property &quot;callback&quot;, which
-     * holds the id of a callback or the callback object itself.</p>
-     *
-     * @method _defPromoteFn
-     * @param e {Event} the custom event
-     * @protected
-     */
-    _defPromoteFn : function (e) {
-        var i = this.indexOf(e.callback),
-            promoted = (i > -1) ? this._q.splice(i,1)[0] : null;
-
-        e.promoted = promoted;
-
-        if (promoted) {
-            this._q.unshift(promoted);
-        }
-    },
-
-    /**
-     * Removes the callback from the queue.  If the queue is active, the
-     * removal is scheduled to occur after the current callback has completed.
-     *
-     * @method remove
-     * @param callback {String|Object} the callback object or a callback's id
-     * @return {AsyncQueue} the AsyncQueue instance
-     * @chainable
-     */
-    remove : function (callback) {
-        var payload = { callback : callback },e;
-
-        // Can't return the removed callback because of the deferral until
-        // current callback is complete
-        if (this.isRunning()) {
-            e = this.after(SHIFT, function () {
-                    this.fire(REMOVE, payload);
-                    e.detach();
-                },this);
-        } else {
-            this.fire(REMOVE, payload);
-        }
-
-        return this;
-    },
-
-    /**
-     * <p>Default functionality for the &quot;remove&quot; event.  Removes the
-     * callback from the queue.</p>
-     *
-     * <p>The event object will contain a property &quot;callback&quot;, which
-     * holds the id of a callback or the callback object itself.</p>
-     *
-     * @method _defRemoveFn
-     * @param e {Event} the custom event
-     * @protected
-     */
-    _defRemoveFn : function (e) {
-        var i = this.indexOf(e.callback);
-
-        e.removed = (i > -1) ? this._q.splice(i,1)[0] : null;
-    },
-
-    /**
-     * Returns the number of callbacks in the queue.
-     *
-     * @method size
-     * @return {Number}
-     */
-    size : function () {
-        // next() flushes callbacks that have met their until() criteria and
-        // therefore shouldn't count since they wouldn't execute anyway.
-        if (!this.isRunning()) {
-            this.next();
-        }
-
-        return this._q.length;
-    }
-});
-
-
-
-}, '3.4.1' ,{requires:['event-custom']});

+ 0 - 1197
hmc/yui-3.4.1/build/attribute-base/attribute-base-debug.js

@@ -1,1197 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('attribute-base', function(Y) {
-
-    /**
-     * The State class maintains state for a collection of named items, with 
-     * a varying number of properties defined.
-     *
-     * It avoids the need to create a separate class for the item, and separate instances 
-     * of these classes for each item, by storing the state in a 2 level hash table, 
-     * improving performance when the number of items is likely to be large.
-     *
-     * @constructor
-     * @class State
-     */
-    Y.State = function() { 
-        /**
-         * Hash of attributes
-         * @property data
-         */
-        this.data = {};
-    };
-
-    Y.State.prototype = {
-
-        /**
-         * Adds a property to an item.
-         *
-         * @method add
-         * @param name {String} The name of the item.
-         * @param key {String} The name of the property.
-         * @param val {Any} The value of the property.
-         */
-        add : function(name, key, val) {
-            var d = this.data;
-            d[key] = d[key] || {};
-            d[key][name] = val;
-        },
-
-        /**
-         * Adds multiple properties to an item.
-         *
-         * @method addAll
-         * @param name {String} The name of the item.
-         * @param o {Object} A hash of property/value pairs.
-         */
-        addAll: function(name, o) {
-            var key;
-            for (key in o) {
-                if (o.hasOwnProperty(key)) {
-                    this.add(name, key, o[key]);
-                }
-            }
-        },
-
-        /**
-         * Removes a property from an item.
-         *
-         * @method remove
-         * @param name {String} The name of the item.
-         * @param key {String} The property to remove.
-         */
-        remove: function(name, key) {
-            var d = this.data;
-            if (d[key] && (name in d[key])) {
-                delete d[key][name];
-            }
-        },
-
-        /**
-         * Removes multiple properties from an item, or remove the item completely.
-         *
-         * @method removeAll
-         * @param name {String} The name of the item.
-         * @param o {Object|Array} Collection of properties to delete. If not provided, the entire item is removed.
-         */
-        removeAll: function(name, o) {
-            var d = this.data;
-
-            Y.each(o || d, function(v, k) {
-                if(Y.Lang.isString(k)) {
-                    this.remove(name, k);
-                } else {
-                    this.remove(name, v);
-                }
-            }, this);
-        },
-
-        /**
-         * For a given item, returns the value of the property requested, or undefined if not found.
-         *
-         * @method get
-         * @param name {String} The name of the item
-         * @param key {String} Optional. The property value to retrieve.
-         * @return {Any} The value of the supplied property.
-         */
-        get: function(name, key) {
-            var d = this.data;
-            return (d[key] && name in d[key]) ?  d[key][name] : undefined;
-        },
-
-        /**
-         * For the given item, returns a disposable object with all of the
-         * item's property/value pairs.
-         *
-         * @method getAll
-         * @param name {String} The name of the item
-         * @return {Object} An object with property/value pairs for the item.
-         */
-        getAll : function(name) {
-            var d = this.data, o;
-
-            Y.each(d, function(v, k) {
-                if (name in d[k]) {
-                    o = o || {};
-                    o[k] = v[name];
-                }
-            }, this);
-
-            return o;
-        }
-    };
-    /**
-     * The attribute module provides an augmentable Attribute implementation, which 
-     * adds configurable attributes and attribute change events to the class being 
-     * augmented. It also provides a State class, which is used internally by Attribute,
-     * but can also be used independently to provide a name/property/value data structure to
-     * store state.
-     *
-     * @module attribute
-     */
-
-    /**
-     * The attribute-base submodule provides core attribute handling support, with everything
-     * aside from complex attribute handling in the provider's constructor.
-     *
-     * @module attribute
-     * @submodule attribute-base
-     */
-    var O = Y.Object,
-        Lang = Y.Lang,
-        EventTarget = Y.EventTarget,
-
-        DOT = ".",
-        CHANGE = "Change",
-
-        // Externally configurable props
-        GETTER = "getter",
-        SETTER = "setter",
-        READ_ONLY = "readOnly",
-        WRITE_ONCE = "writeOnce",
-        INIT_ONLY = "initOnly",
-        VALIDATOR = "validator",
-        VALUE = "value",
-        VALUE_FN = "valueFn",
-        BROADCAST = "broadcast",
-        LAZY_ADD = "lazyAdd",
-        BYPASS_PROXY = "_bypassProxy",
-
-        // Used for internal state management
-        ADDED = "added",
-        INITIALIZING = "initializing",
-        INIT_VALUE = "initValue",
-        PUBLISHED = "published",
-        DEF_VALUE = "defaultValue",
-        LAZY = "lazy",
-        IS_LAZY_ADD = "isLazyAdd",
-
-        INVALID_VALUE,
-
-        MODIFIABLE = {};
-
-        // Properties which can be changed after the attribute has been added.
-        MODIFIABLE[READ_ONLY] = 1;
-        MODIFIABLE[WRITE_ONCE] = 1;
-        MODIFIABLE[GETTER] = 1;
-        MODIFIABLE[BROADCAST] = 1;
-
-    /**
-     * <p>
-     * Attribute provides configurable attribute support along with attribute change events. It is designed to be 
-     * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, 
-     * along with attribute change events.
-     * </p>
-     * <p>For example, attributes added to the host can be configured:</p>
-     * <ul>
-     *     <li>As read only.</li>
-     *     <li>As write once.</li>
-     *     <li>With a setter function, which can be used to manipulate
-     *     values passed to Attribute's <a href="#method_set">set</a> method, before they are stored.</li>
-     *     <li>With a getter function, which can be used to manipulate stored values,
-     *     before they are returned by Attribute's <a href="#method_get">get</a> method.</li>
-     *     <li>With a validator function, to validate values before they are stored.</li>
-     * </ul>
-     *
-     * <p>See the <a href="#method_addAttr">addAttr</a> method, for the complete set of configuration
-     * options available for attributes</p>.
-     *
-     * <p><strong>NOTE:</strong> Most implementations will be better off extending the <a href="Base.html">Base</a> class, 
-     * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration 
-     * of attributes for derived classes, accounting for values passed into the constructor.</p>
-     *
-     * @class Attribute
-     * @param attrs {Object} The attributes to add during construction (passed through to <a href="#method_addAttrs">addAttrs</a>). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor.
-     * @param values {Object} The initial attribute values to apply (passed through to <a href="#method_addAttrs">addAttrs</a>). These are not merged/cloned. The caller is responsible for isolating user provided values if required.
-     * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href="#method_addAttrs">addAttrs</a>).
-     * @uses EventTarget
-     */
-    function Attribute(attrs, values, lazy) {
-
-        var host = this; // help compression
-
-        // Perf tweak - avoid creating event literals if not required.
-        host._ATTR_E_FACADE = {};
-
-        EventTarget.call(host, {emitFacade:true});
-
-        // _conf maintained for backwards compat
-        host._conf = host._state = new Y.State();
-
-        host._stateProxy = host._stateProxy || null;
-        host._requireAddAttr = host._requireAddAttr || false;
-
-        this._initAttrs(attrs, values, lazy);
-    }
-
-    /**
-     * <p>The value to return from an attribute setter in order to prevent the set from going through.</p>
-     *
-     * <p>You can return this value from your setter if you wish to combine validator and setter 
-     * functionality into a single setter function, which either returns the massaged value to be stored or 
-     * Attribute.INVALID_VALUE to prevent invalid values from being stored.</p>
-     *
-     * @property INVALID_VALUE
-     * @type Object
-     * @static
-     * @final
-     */
-    Attribute.INVALID_VALUE = {};
-    INVALID_VALUE = Attribute.INVALID_VALUE;
-
-    /**
-     * The list of properties which can be configured for 
-     * each attribute (e.g. setter, getter, writeOnce etc.).
-     *
-     * This property is used internally as a whitelist for faster
-     * Y.mix operations.
-     *
-     * @property _ATTR_CFG
-     * @type Array
-     * @static
-     * @protected
-     */
-    Attribute._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BROADCAST, BYPASS_PROXY];
-
-    Attribute.prototype = {
-        /**
-         * <p>
-         * Adds an attribute with the provided configuration to the host object.
-         * </p>
-         * <p>
-         * The config argument object supports the following properties:
-         * </p>
-         * 
-         * <dl>
-         *    <dt>value &#60;Any&#62;</dt>
-         *    <dd>The initial value to set on the attribute</dd>
-         *
-         *    <dt>valueFn &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>A function, which will return the initial value to set on the attribute. This is useful
-         *    for cases where the attribute configuration is defined statically, but needs to 
-         *    reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, 
-         *    the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which 
-         *    case the value property is used.</p>
-         *
-         *    <p>valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.</p>
-         *    </dd>
-         *
-         *    <dt>readOnly &#60;boolean&#62;</dt>
-         *    <dd>Whether or not the attribute is read only. Attributes having readOnly set to true
-         *        cannot be modified by invoking the set method.</dd>
-         *
-         *    <dt>writeOnce &#60;boolean&#62; or &#60;string&#62;</dt>
-         *    <dd>
-         *        Whether or not the attribute is "write once". Attributes having writeOnce set to true, 
-         *        can only have their values set once, be it through the default configuration, 
-         *        constructor configuration arguments, or by invoking set.
-         *        <p>The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization
-         *        (when used with Base, this means it can only be set during construction)</p>
-         *    </dd>
-         *
-         *    <dt>setter &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>The setter function used to massage or normalize the value passed to the set method for the attribute. 
-         *    The value returned by the setter will be the final stored value. Returning
-         *    <a href="#property_Attribute.INVALID_VALUE">Attribute.INVALID_VALUE</a>, from the setter will prevent
-         *    the value from being stored.
-         *    </p>
-         *    
-         *    <p>setter can also be set to a string, representing the name of the instance method to be used as the setter function.</p>
-         *    </dd>
-         *      
-         *    <dt>getter &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>
-         *    The getter function used to massage or normalize the value returned by the get method for the attribute.
-         *    The value returned by the getter function is the value which will be returned to the user when they 
-         *    invoke get.
-         *    </p>
-         *
-         *    <p>getter can also be set to a string, representing the name of the instance method to be used as the getter function.</p>
-         *    </dd>
-         *
-         *    <dt>validator &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>
-         *    The validator function invoked prior to setting the stored value. Returning
-         *    false from the validator function will prevent the value from being stored.
-         *    </p>
-         *    
-         *    <p>validator can also be set to a string, representing the name of the instance method to be used as the validator function.</p>
-         *    </dd>
-         *    
-         *    <dt>broadcast &#60;int&#62;</dt>
-         *    <dd>If and how attribute change events for this attribute should be broadcast. See CustomEvent's <a href="CustomEvent.html#property_broadcast">broadcast</a> property for 
-         *    valid values. By default attribute change events are not broadcast.</dd>
-         *
-         *    <dt>lazyAdd &#60;boolean&#62;</dt>
-         *    <dd>Whether or not to delay initialization of the attribute until the first call to get/set it. 
-         *    This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through 
-         *    the <a href="#method_addAttrs">addAttrs</a> method.</dd>
-         *
-         * </dl>
-         *
-         * <p>The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with
-         * the context ("this") set to the host object.</p>
-         *
-         * <p>Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, and are not intended for public use.</p>
-         * 
-         * @method addAttr
-         *
-         * @param {String} name The name of the attribute.
-         * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute.
-         *
-         * <p>
-         * <strong>NOTE:</strong> The configuration object is modified when adding an attribute, so if you need 
-         * to protect the original values, you will need to merge the object.
-         * </p>
-         *
-         * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). 
-         *
-         * @return {Object} A reference to the host object.
-         *
-         * @chainable
-         */
-        addAttr: function(name, config, lazy) {
-
-            Y.log('Adding attribute: ' + name, 'info', 'attribute');
-
-            var host = this, // help compression
-                state = host._state,
-                value,
-                hasValue;
-
-            lazy = (LAZY_ADD in config) ? config[LAZY_ADD] : lazy;
-
-            if (lazy && !host.attrAdded(name)) {
-                state.add(name, LAZY, config || {});
-                state.add(name, ADDED, true);
-            } else {
-
-                if (host.attrAdded(name) && !state.get(name, IS_LAZY_ADD)) { Y.log('Attribute: ' + name + ' already exists. Cannot add it again without removing it first', 'warn', 'attribute'); }
-
-                if (!host.attrAdded(name) || state.get(name, IS_LAZY_ADD)) {
-
-                    config = config || {};
-
-                    hasValue = (VALUE in config);
-
-                    if (config.readOnly && !hasValue) { Y.log('readOnly attribute: ' + name + ', added without an initial value. Value will be set on initial call to set', 'warn', 'attribute');}
-
-                    if(hasValue) {
-                        // We'll go through set, don't want to set value in config directly
-                        value = config.value;
-                        delete config.value;
-                    }
-
-                    config.added = true;
-                    config.initializing = true;
-
-                    state.addAll(name, config);
-
-                    if (hasValue) {
-                        // Go through set, so that raw values get normalized/validated
-                        host.set(name, value);
-                    }
-
-                    state.remove(name, INITIALIZING);
-                }
-            }
-
-            return host;
-        },
-
-        /**
-         * Checks if the given attribute has been added to the host
-         *
-         * @method attrAdded
-         * @param {String} name The name of the attribute to check.
-         * @return {boolean} true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes.
-         */
-        attrAdded: function(name) {
-            return !!this._state.get(name, ADDED);
-        },
-
-        /**
-         * Updates the configuration of an attribute which has already been added.
-         * <p>
-         * The properties which can be modified through this interface are limited
-         * to the following subset of attributes, which can be safely modified
-         * after a value has already been set on the attribute: readOnly, writeOnce, 
-         * broadcast and getter.
-         * </p>
-         * @method modifyAttr
-         * @param {String} name The name of the attribute whose configuration is to be updated.
-         * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify.
-         */
-        modifyAttr: function(name, config) {
-            var host = this, // help compression
-                prop, state;
-
-            if (host.attrAdded(name)) {
-
-                if (host._isLazyAttr(name)) {
-                    host._addLazyAttr(name);
-                }
-
-                state = host._state;
-                for (prop in config) {
-                    if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) {
-                        state.add(name, prop, config[prop]);
-
-                        // If we reconfigured broadcast, need to republish
-                        if (prop === BROADCAST) {
-                            state.remove(name, PUBLISHED);
-                        }
-                    }
-                }
-            }
-
-            if (!host.attrAdded(name)) {Y.log('Attribute modifyAttr:' + name + ' has not been added. Use addAttr to add the attribute', 'warn', 'attribute');}
-        },
-
-        /**
-         * Removes an attribute from the host object
-         *
-         * @method removeAttr
-         * @param {String} name The name of the attribute to be removed.
-         */
-        removeAttr: function(name) {
-            this._state.removeAll(name);
-        },
-
-        /**
-         * Returns the current value of the attribute. If the attribute
-         * has been configured with a 'getter' function, this method will delegate
-         * to the 'getter' to obtain the value of the attribute.
-         *
-         * @method get
-         *
-         * @param {String} name The name of the attribute. If the value of the attribute is an Object, 
-         * dot notation can be used to obtain the value of a property of the object (e.g. <code>get("x.y.z")</code>)
-         *
-         * @return {Any} The value of the attribute
-         */
-        get : function(name) {
-            return this._getAttr(name);
-        },
-
-        /**
-         * Checks whether or not the attribute is one which has been
-         * added lazily and still requires initialization.
-         *
-         * @method _isLazyAttr
-         * @private
-         * @param {String} name The name of the attribute
-         * @return {boolean} true if it's a lazily added attribute, false otherwise.
-         */
-        _isLazyAttr: function(name) {
-            return this._state.get(name, LAZY);
-        },
-
-        /**
-         * Finishes initializing an attribute which has been lazily added.
-         *
-         * @method _addLazyAttr
-         * @private
-         * @param {Object} name The name of the attribute
-         */
-        _addLazyAttr: function(name) {
-            var state = this._state,
-                lazyCfg = state.get(name, LAZY);
-
-            state.add(name, IS_LAZY_ADD, true);
-            state.remove(name, LAZY);
-            this.addAttr(name, lazyCfg);
-        },
-
-        /**
-         * Sets the value of an attribute.
-         *
-         * @method set
-         * @chainable
-         *
-         * @param {String} name The name of the attribute. If the 
-         * current value of the attribute is an Object, dot notation can be used
-         * to set the value of a property within the object (e.g. <code>set("x.y.z", 5)</code>).
-         *
-         * @param {Any} value The value to set the attribute to.
-         *
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event. This 
-         * can be used as a flexible way to identify the source of a call to set, allowing 
-         * the developer to distinguish between set called internally by the host, vs. 
-         * set called externally by the application developer.
-         *
-         * @return {Object} A reference to the host object.
-         */
-        set : function(name, val, opts) {
-            return this._setAttr(name, val, opts);
-        },
-
-        /**
-         * Resets the attribute (or all attributes) to its initial value, as long as
-         * the attribute is not readOnly, or writeOnce.
-         *
-         * @method reset
-         * @param {String} name Optional. The name of the attribute to reset.  If omitted, all attributes are reset.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        reset : function(name) {
-            var host = this,  // help compression
-                added;
-
-            if (name) {
-                if (host._isLazyAttr(name)) {
-                    host._addLazyAttr(name);
-                }
-                host.set(name, host._state.get(name, INIT_VALUE));
-            } else {
-                added = host._state.data.added;
-                Y.each(added, function(v, n) {
-                    host.reset(n);
-                }, host);
-            }
-            return host;
-        },
-
-        /**
-         * Allows setting of readOnly/writeOnce attributes. See <a href="#method_set">set</a> for argument details.
-         *
-         * @method _set
-         * @protected
-         * @chainable
-         * 
-         * @param {String} name The name of the attribute.
-         * @param {Any} val The value to set the attribute to.
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event.
-         * @return {Object} A reference to the host object.
-         */
-        _set : function(name, val, opts) {
-            return this._setAttr(name, val, opts, true);
-        },
-
-        /**
-         * Provides the common implementation for the public get method,
-         * allowing Attribute hosts to over-ride either method.
-         *
-         * See <a href="#method_get">get</a> for argument details.
-         *
-         * @method _getAttr
-         * @protected
-         * @chainable
-         *
-         * @param {String} name The name of the attribute.
-         * @return {Any} The value of the attribute.
-         */
-        _getAttr : function(name) {
-            var host = this, // help compression
-                fullName = name,
-                state = host._state,
-                path,
-                getter,
-                val,
-                cfg;
-
-            if (name.indexOf(DOT) !== -1) {
-                path = name.split(DOT);
-                name = path.shift();
-            }
-
-            // On Demand - Should be rare - handles out of order valueFn references
-            if (host._tCfgs && host._tCfgs[name]) {
-                cfg = {};
-                cfg[name] = host._tCfgs[name];
-                delete host._tCfgs[name];
-                host._addAttrs(cfg, host._tVals);
-            }
-
-            // Lazy Init
-            if (host._isLazyAttr(name)) {
-                host._addLazyAttr(name);
-            }
-
-            val = host._getStateVal(name);
-            getter = state.get(name, GETTER);
-
-            if (getter && !getter.call) {
-                getter = this[getter];
-            }
-
-            val = (getter) ? getter.call(host, val, fullName) : val;
-            val = (path) ? O.getValue(val, path) : val;
-
-            return val;
-        },
-
-        /**
-         * Provides the common implementation for the public set and protected _set methods.
-         *
-         * See <a href="#method_set">set</a> for argument details.
-         *
-         * @method _setAttr
-         * @protected
-         * @chainable
-         *
-         * @param {String} name The name of the attribute.
-         * @param {Any} value The value to set the attribute to.
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event.
-         * @param {boolean} force If true, allows the caller to set values for 
-         * readOnly or writeOnce attributes which have already been set.
-         *
-         * @return {Object} A reference to the host object.
-         */
-        _setAttr : function(name, val, opts, force) {
-            var allowSet = true,
-                state = this._state,
-                stateProxy = this._stateProxy,
-                data = state.data,
-                initialSet,
-                strPath,
-                path,
-                currVal,
-                writeOnce,
-                initializing;
-
-            if (name.indexOf(DOT) !== -1) {
-                strPath = name;
-                path = name.split(DOT);
-                name = path.shift();
-            }
-
-            if (this._isLazyAttr(name)) {
-                this._addLazyAttr(name);
-            }
-
-            initialSet = (!data.value || !(name in data.value));
-
-            if (stateProxy && name in stateProxy && !this._state.get(name, BYPASS_PROXY)) {
-                // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? 
-                initialSet = false;
-            }
-
-            if (this._requireAddAttr && !this.attrAdded(name)) {
-                Y.log('Set attribute:' + name + ', aborted; Attribute is not configured', 'warn', 'attribute');
-            } else {
-
-                writeOnce = state.get(name, WRITE_ONCE);
-                initializing = state.get(name, INITIALIZING);
-
-                if (!initialSet && !force) {
-
-                    if (writeOnce) {
-                        Y.log('Set attribute:' + name + ', aborted; Attribute is writeOnce', 'warn', 'attribute');
-                        allowSet = false;
-                    }
-
-                    if (state.get(name, READ_ONLY)) {
-                        Y.log('Set attribute:' + name + ', aborted; Attribute is readOnly', 'warn', 'attribute');
-                        allowSet = false;
-                    }
-                }
-
-                if (!initializing && !force && writeOnce === INIT_ONLY) {
-                    Y.log('Set attribute:' + name + ', aborted; Attribute is writeOnce: "initOnly"', 'warn', 'attribute');
-                    allowSet = false;
-                }
-
-                if (allowSet) {
-                    // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value)
-                    if (!initialSet) {
-                        currVal =  this.get(name);
-                    }
-
-                    if (path) {
-                       val = O.setValue(Y.clone(currVal), path, val);
-
-                       if (val === undefined) {
-                           Y.log('Set attribute path:' + strPath + ', aborted; Path is invalid', 'warn', 'attribute');
-                           allowSet = false;
-                       }
-                    }
-
-                    if (allowSet) {
-                        if (initializing) {
-                            this._setAttrVal(name, strPath, currVal, val);
-                        } else {
-                            this._fireAttrChange(name, strPath, currVal, val, opts);
-                        }
-                    }
-                }
-            }
-
-            return this;
-        },
-
-        /**
-         * Utility method to help setup the event payload and fire the attribute change event.
-         * 
-         * @method _fireAttrChange
-         * @private
-         * @param {String} attrName The name of the attribute
-         * @param {String} subAttrName The full path of the property being changed, 
-         * if this is a sub-attribute value being change. Otherwise null.
-         * @param {Any} currVal The current value of the attribute
-         * @param {Any} newVal The new value of the attribute
-         * @param {Object} opts Any additional event data to mix into the attribute change event's event facade.
-         */
-        _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) {
-            var host = this,
-                eventName = attrName + CHANGE,
-                state = host._state,
-                facade;
-
-            if (!state.get(attrName, PUBLISHED)) {
-                host.publish(eventName, {
-                    queuable:false,
-                    defaultTargetOnly: true, 
-                    defaultFn:host._defAttrChangeFn, 
-                    silent:true,
-                    broadcast : state.get(attrName, BROADCAST)
-                });
-                state.add(attrName, PUBLISHED, true);
-            }
-
-            facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE;
-
-            // Not using the single object signature for fire({type:..., newVal:...}), since 
-            // we don't want to override type. Changed to the fire(type, {newVal:...}) signature.
-
-            // facade.type = eventName;
-            facade.attrName = attrName;
-            facade.subAttrName = subAttrName;
-            facade.prevVal = currVal;
-            facade.newVal = newVal;
-
-            // host.fire(facade);
-            host.fire(eventName, facade);
-        },
-
-        /**
-         * Default function for attribute change events.
-         *
-         * @private
-         * @method _defAttrChangeFn
-         * @param {EventFacade} e The event object for attribute change events.
-         */
-        _defAttrChangeFn : function(e) {
-            if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) {
-                Y.log('State not updated and stopImmediatePropagation called for attribute: ' + e.attrName + ' , value:' + e.newVal, 'warn', 'attribute');
-                // Prevent "after" listeners from being invoked since nothing changed.
-                e.stopImmediatePropagation();
-            } else {
-                e.newVal = this.get(e.attrName);
-            }
-        },
-
-        /**
-         * Gets the stored value for the attribute, from either the 
-         * internal state object, or the state proxy if it exits
-         * 
-         * @method _getStateVal
-         * @private
-         * @param {String} name The name of the attribute
-         * @return {Any} The stored value of the attribute
-         */
-        _getStateVal : function(name) {
-            var stateProxy = this._stateProxy;
-            return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY) ? stateProxy[name] : this._state.get(name, VALUE);
-        },
-
-        /**
-         * Sets the stored value for the attribute, in either the 
-         * internal state object, or the state proxy if it exits
-         *
-         * @method _setStateVal
-         * @private
-         * @param {String} name The name of the attribute
-         * @param {Any} value The value of the attribute
-         */
-        _setStateVal : function(name, value) {
-            var stateProxy = this._stateProxy;
-            if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) {
-                stateProxy[name] = value;
-            } else {
-                this._state.add(name, VALUE, value);
-            }
-        },
-
-        /**
-         * Updates the stored value of the attribute in the privately held State object,
-         * if validation and setter passes.
-         *
-         * @method _setAttrVal
-         * @private
-         * @param {String} attrName The attribute name.
-         * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property ("x.y.z").
-         * @param {Any} prevVal The currently stored value of the attribute.
-         * @param {Any} newVal The value which is going to be stored.
-         * 
-         * @return {booolean} true if the new attribute value was stored, false if not.
-         */
-        _setAttrVal : function(attrName, subAttrName, prevVal, newVal) {
-
-            var host = this,
-                allowSet = true,
-                state = host._state,
-
-                validator = state.get(attrName, VALIDATOR),
-                setter = state.get(attrName, SETTER),
-                initializing = state.get(attrName, INITIALIZING),
-                prevValRaw = this._getStateVal(attrName),
-
-                name = subAttrName || attrName,
-                retVal,
-                valid;
-
-            if (validator) {
-                if (!validator.call) { 
-                    // Assume string - trying to keep critical path tight, so avoiding Lang check
-                    validator = this[validator];
-                }
-                if (validator) {
-                    valid = validator.call(host, newVal, name);
-
-                    if (!valid && initializing) {
-                        newVal = state.get(attrName, DEF_VALUE);
-                        valid = true; // Assume it's valid, for perf.
-                    }
-                }
-            }
-
-            if (!validator || valid) {
-                if (setter) {
-                    if (!setter.call) {
-                        // Assume string - trying to keep critical path tight, so avoiding Lang check
-                        setter = this[setter];
-                    }
-                    if (setter) {
-                        retVal = setter.call(host, newVal, name);
-
-                        if (retVal === INVALID_VALUE) {
-                            Y.log('Attribute: ' + attrName + ', setter returned Attribute.INVALID_VALUE for value:' + newVal, 'warn', 'attribute');
-                            allowSet = false;
-                        } else if (retVal !== undefined){
-                            Y.log('Attribute: ' + attrName + ', raw value: ' + newVal + ' modified by setter to:' + retVal, 'info', 'attribute');
-                            newVal = retVal;
-                        }
-                    }
-                }
-
-                if (allowSet) {
-                    if(!subAttrName && (newVal === prevValRaw) && !Lang.isObject(newVal)) {
-                        Y.log('Attribute: ' + attrName + ', value unchanged:' + newVal, 'warn', 'attribute');
-                        allowSet = false;
-                    } else {
-                        // Store value
-                        if (state.get(attrName, INIT_VALUE) === undefined) {
-                            state.add(attrName, INIT_VALUE, newVal);
-                        }
-                        host._setStateVal(attrName, newVal);
-                    }
-                }
-
-            } else {
-                Y.log('Attribute:' + attrName + ', Validation failed for value:' + newVal, 'warn', 'attribute');
-                allowSet = false;
-            }
-
-            return allowSet;
-        },
-
-        /**
-         * Sets multiple attribute values.
-         *
-         * @method setAttrs
-         * @param {Object} attrs  An object with attributes name/value pairs.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        setAttrs : function(attrs, opts) {
-            return this._setAttrs(attrs, opts);
-        },
-
-        /**
-         * Implementation behind the public setAttrs method, to set multiple attribute values.
-         *
-         * @method _setAttrs
-         * @protected
-         * @param {Object} attrs  An object with attributes name/value pairs.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        _setAttrs : function(attrs, opts) {
-            for (var attr in attrs) {
-                if ( attrs.hasOwnProperty(attr) ) {
-                    this.set(attr, attrs[attr]);
-                }
-            }
-            return this;
-        },
-
-        /**
-         * Gets multiple attribute values.
-         *
-         * @method getAttrs
-         * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are
-         * returned. If set to true, all attributes modified from their initial values are returned.
-         * @return {Object} An object with attribute name/value pairs.
-         */
-        getAttrs : function(attrs) {
-            return this._getAttrs(attrs);
-        },
-
-        /**
-         * Implementation behind the public getAttrs method, to get multiple attribute values.
-         *
-         * @method _getAttrs
-         * @protected
-         * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are
-         * returned. If set to true, all attributes modified from their initial values are returned.
-         * @return {Object} An object with attribute name/value pairs.
-         */
-        _getAttrs : function(attrs) {
-            var host = this,
-                o = {}, 
-                i, l, attr, val,
-                modifiedOnly = (attrs === true);
-
-            attrs = (attrs && !modifiedOnly) ? attrs : O.keys(host._state.data.added);
-
-            for (i = 0, l = attrs.length; i < l; i++) {
-                // Go through get, to honor cloning/normalization
-                attr = attrs[i];
-                val = host.get(attr);
-
-                if (!modifiedOnly || host._getStateVal(attr) != host._state.get(attr, INIT_VALUE)) {
-                    o[attr] = host.get(attr); 
-                }
-            }
-
-            return o;
-        },
-
-        /**
-         * Configures a group of attributes, and sets initial values.
-         *
-         * <p>
-         * <strong>NOTE:</strong> This method does not isolate the configuration object by merging/cloning. 
-         * The caller is responsible for merging/cloning the configuration object if required.
-         * </p>
-         *
-         * @method addAttrs
-         * @chainable
-         *
-         * @param {Object} cfgs An object with attribute name/configuration pairs.
-         * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply.
-         * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only.
-         * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set.
-         * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration.
-         * See <a href="#method_addAttr">addAttr</a>.
-         * 
-         * @return {Object} A reference to the host object.
-         */
-        addAttrs : function(cfgs, values, lazy) {
-            var host = this; // help compression
-            if (cfgs) {
-                host._tCfgs = cfgs;
-                host._tVals = host._normAttrVals(values);
-                host._addAttrs(cfgs, host._tVals, lazy);
-                host._tCfgs = host._tVals = null;
-            }
-
-            return host;
-        },
-
-        /**
-         * Implementation behind the public addAttrs method. 
-         * 
-         * This method is invoked directly by get if it encounters a scenario 
-         * in which an attribute's valueFn attempts to obtain the 
-         * value an attribute in the same group of attributes, which has not yet 
-         * been added (on demand initialization).
-         *
-         * @method _addAttrs
-         * @private
-         * @param {Object} cfgs An object with attribute name/configuration pairs.
-         * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply.
-         * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only.
-         * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set.
-         * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration.
-         * See <a href="#method_addAttr">addAttr</a>.
-         */
-        _addAttrs : function(cfgs, values, lazy) {
-            var host = this, // help compression
-                attr,
-                attrCfg,
-                value;
-
-            for (attr in cfgs) {
-                if (cfgs.hasOwnProperty(attr)) {
-
-                    // Not Merging. Caller is responsible for isolating configs
-                    attrCfg = cfgs[attr];
-                    attrCfg.defaultValue = attrCfg.value;
-
-                    // Handle simple, complex and user values, accounting for read-only
-                    value = host._getAttrInitVal(attr, attrCfg, host._tVals);
-
-                    if (value !== undefined) {
-                        attrCfg.value = value;
-                    }
-
-                    if (host._tCfgs[attr]) {
-                        delete host._tCfgs[attr];
-                    }
-
-                    host.addAttr(attr, attrCfg, lazy);
-                }
-            }
-        },
-
-        /**
-         * Utility method to protect an attribute configuration
-         * hash, by merging the entire object and the individual 
-         * attr config objects. 
-         *
-         * @method _protectAttrs
-         * @protected
-         * @param {Object} attrs A hash of attribute to configuration object pairs.
-         * @return {Object} A protected version of the attrs argument.
-         */
-        _protectAttrs : function(attrs) {
-            if (attrs) {
-                attrs = Y.merge(attrs);
-                for (var attr in attrs) {
-                    if (attrs.hasOwnProperty(attr)) {
-                        attrs[attr] = Y.merge(attrs[attr]);
-                    }
-                }
-            }
-            return attrs;
-        },
-
-        /**
-         * Utility method to normalize attribute values. The base implementation 
-         * simply merges the hash to protect the original.
-         *
-         * @method _normAttrVals
-         * @param {Object} valueHash An object with attribute name/value pairs
-         *
-         * @return {Object}
-         *
-         * @private
-         */
-        _normAttrVals : function(valueHash) {
-            return (valueHash) ? Y.merge(valueHash) : null;
-        },
-
-        /**
-         * Returns the initial value of the given attribute from
-         * either the default configuration provided, or the 
-         * over-ridden value if it exists in the set of initValues 
-         * provided and the attribute is not read-only.
-         *
-         * @param {String} attr The name of the attribute
-         * @param {Object} cfg The attribute configuration object
-         * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals
-         *
-         * @return {Any} The initial value of the attribute.
-         *
-         * @method _getAttrInitVal
-         * @private
-         */
-        _getAttrInitVal : function(attr, cfg, initValues) {
-            var val, valFn;
-            // init value is provided by the user if it exists, else, provided by the config
-            if (!cfg[READ_ONLY] && initValues && initValues.hasOwnProperty(attr)) {
-                val = initValues[attr];
-            } else {
-                val = cfg[VALUE];
-                valFn = cfg[VALUE_FN];
- 
-                if (valFn) {
-                    if (!valFn.call) {
-                        valFn = this[valFn];
-                    }
-                    if (valFn) {
-                        val = valFn.call(this);
-                    }
-                }
-            }
-
-            Y.log('initValue for ' + attr + ':' + val, 'info', 'attribute');
-
-            return val;
-        },
-
-        /**
-         * Returns an object with the configuration properties (and value)
-         * for the given attrubute. If attrName is not provided, returns the
-         * configuration properties for all attributes.
-         *
-         * @method _getAttrCfg
-         * @protected
-         * @param {String} name Optional. The attribute name. If not provided, the method will return the configuration for all attributes.
-         * @return {Object} The configuration properties for the given attribute, or all attributes.
-         */
-        _getAttrCfg : function(name) {
-            var o,
-                data = this._state.data;
-
-            if (data) {
-                o = {};
-
-                Y.each(data, function(cfg, cfgProp) {
-                    if (name) {
-                        if(name in cfg) {
-                            o[cfgProp] = cfg[name];
-                        }
-                    } else {
-                        Y.each(cfg, function(attrCfg, attr) {
-                           o[attr] = o[attr] || {};
-                           o[attr][cfgProp] = attrCfg;
-                        });
-                    }
-                });
-            }
-
-            return o;
-        },
-
-        /**
-         * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in.
-         * 
-         * @method _initAttrs
-         * @protected
-         * @param attrs {Object} The attributes to add during construction (passed through to <a href="#method_addAttrs">addAttrs</a>). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor.
-         * @param values {Object} The initial attribute values to apply (passed through to <a href="#method_addAttrs">addAttrs</a>). These are not merged/cloned. The caller is responsible for isolating user provided values if required.
-         * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href="#method_addAttrs">addAttrs</a>).
-         */
-        _initAttrs : function(attrs, values, lazy) {
-            // ATTRS support for Node, which is not Base based
-            attrs = attrs || this.constructor.ATTRS;
-    
-            var Base = Y.Base;
-            if ( attrs && !(Base && Y.instanceOf(this, Base))) {
-                this.addAttrs(this._protectAttrs(attrs), values, lazy);
-            }
-        }
-    };
-
-    // Basic prototype augment - no lazy constructor invocation.
-    Y.mix(Attribute, EventTarget, false, null, 1);
-
-    Y.Attribute = Attribute;
-
-
-}, '3.4.1' ,{requires:['event-custom']});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/attribute-base/attribute-base-min.js


+ 0 - 1182
hmc/yui-3.4.1/build/attribute-base/attribute-base.js

@@ -1,1182 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('attribute-base', function(Y) {
-
-    /**
-     * The State class maintains state for a collection of named items, with 
-     * a varying number of properties defined.
-     *
-     * It avoids the need to create a separate class for the item, and separate instances 
-     * of these classes for each item, by storing the state in a 2 level hash table, 
-     * improving performance when the number of items is likely to be large.
-     *
-     * @constructor
-     * @class State
-     */
-    Y.State = function() { 
-        /**
-         * Hash of attributes
-         * @property data
-         */
-        this.data = {};
-    };
-
-    Y.State.prototype = {
-
-        /**
-         * Adds a property to an item.
-         *
-         * @method add
-         * @param name {String} The name of the item.
-         * @param key {String} The name of the property.
-         * @param val {Any} The value of the property.
-         */
-        add : function(name, key, val) {
-            var d = this.data;
-            d[key] = d[key] || {};
-            d[key][name] = val;
-        },
-
-        /**
-         * Adds multiple properties to an item.
-         *
-         * @method addAll
-         * @param name {String} The name of the item.
-         * @param o {Object} A hash of property/value pairs.
-         */
-        addAll: function(name, o) {
-            var key;
-            for (key in o) {
-                if (o.hasOwnProperty(key)) {
-                    this.add(name, key, o[key]);
-                }
-            }
-        },
-
-        /**
-         * Removes a property from an item.
-         *
-         * @method remove
-         * @param name {String} The name of the item.
-         * @param key {String} The property to remove.
-         */
-        remove: function(name, key) {
-            var d = this.data;
-            if (d[key] && (name in d[key])) {
-                delete d[key][name];
-            }
-        },
-
-        /**
-         * Removes multiple properties from an item, or remove the item completely.
-         *
-         * @method removeAll
-         * @param name {String} The name of the item.
-         * @param o {Object|Array} Collection of properties to delete. If not provided, the entire item is removed.
-         */
-        removeAll: function(name, o) {
-            var d = this.data;
-
-            Y.each(o || d, function(v, k) {
-                if(Y.Lang.isString(k)) {
-                    this.remove(name, k);
-                } else {
-                    this.remove(name, v);
-                }
-            }, this);
-        },
-
-        /**
-         * For a given item, returns the value of the property requested, or undefined if not found.
-         *
-         * @method get
-         * @param name {String} The name of the item
-         * @param key {String} Optional. The property value to retrieve.
-         * @return {Any} The value of the supplied property.
-         */
-        get: function(name, key) {
-            var d = this.data;
-            return (d[key] && name in d[key]) ?  d[key][name] : undefined;
-        },
-
-        /**
-         * For the given item, returns a disposable object with all of the
-         * item's property/value pairs.
-         *
-         * @method getAll
-         * @param name {String} The name of the item
-         * @return {Object} An object with property/value pairs for the item.
-         */
-        getAll : function(name) {
-            var d = this.data, o;
-
-            Y.each(d, function(v, k) {
-                if (name in d[k]) {
-                    o = o || {};
-                    o[k] = v[name];
-                }
-            }, this);
-
-            return o;
-        }
-    };
-    /**
-     * The attribute module provides an augmentable Attribute implementation, which 
-     * adds configurable attributes and attribute change events to the class being 
-     * augmented. It also provides a State class, which is used internally by Attribute,
-     * but can also be used independently to provide a name/property/value data structure to
-     * store state.
-     *
-     * @module attribute
-     */
-
-    /**
-     * The attribute-base submodule provides core attribute handling support, with everything
-     * aside from complex attribute handling in the provider's constructor.
-     *
-     * @module attribute
-     * @submodule attribute-base
-     */
-    var O = Y.Object,
-        Lang = Y.Lang,
-        EventTarget = Y.EventTarget,
-
-        DOT = ".",
-        CHANGE = "Change",
-
-        // Externally configurable props
-        GETTER = "getter",
-        SETTER = "setter",
-        READ_ONLY = "readOnly",
-        WRITE_ONCE = "writeOnce",
-        INIT_ONLY = "initOnly",
-        VALIDATOR = "validator",
-        VALUE = "value",
-        VALUE_FN = "valueFn",
-        BROADCAST = "broadcast",
-        LAZY_ADD = "lazyAdd",
-        BYPASS_PROXY = "_bypassProxy",
-
-        // Used for internal state management
-        ADDED = "added",
-        INITIALIZING = "initializing",
-        INIT_VALUE = "initValue",
-        PUBLISHED = "published",
-        DEF_VALUE = "defaultValue",
-        LAZY = "lazy",
-        IS_LAZY_ADD = "isLazyAdd",
-
-        INVALID_VALUE,
-
-        MODIFIABLE = {};
-
-        // Properties which can be changed after the attribute has been added.
-        MODIFIABLE[READ_ONLY] = 1;
-        MODIFIABLE[WRITE_ONCE] = 1;
-        MODIFIABLE[GETTER] = 1;
-        MODIFIABLE[BROADCAST] = 1;
-
-    /**
-     * <p>
-     * Attribute provides configurable attribute support along with attribute change events. It is designed to be 
-     * augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state, 
-     * along with attribute change events.
-     * </p>
-     * <p>For example, attributes added to the host can be configured:</p>
-     * <ul>
-     *     <li>As read only.</li>
-     *     <li>As write once.</li>
-     *     <li>With a setter function, which can be used to manipulate
-     *     values passed to Attribute's <a href="#method_set">set</a> method, before they are stored.</li>
-     *     <li>With a getter function, which can be used to manipulate stored values,
-     *     before they are returned by Attribute's <a href="#method_get">get</a> method.</li>
-     *     <li>With a validator function, to validate values before they are stored.</li>
-     * </ul>
-     *
-     * <p>See the <a href="#method_addAttr">addAttr</a> method, for the complete set of configuration
-     * options available for attributes</p>.
-     *
-     * <p><strong>NOTE:</strong> Most implementations will be better off extending the <a href="Base.html">Base</a> class, 
-     * instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration 
-     * of attributes for derived classes, accounting for values passed into the constructor.</p>
-     *
-     * @class Attribute
-     * @param attrs {Object} The attributes to add during construction (passed through to <a href="#method_addAttrs">addAttrs</a>). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor.
-     * @param values {Object} The initial attribute values to apply (passed through to <a href="#method_addAttrs">addAttrs</a>). These are not merged/cloned. The caller is responsible for isolating user provided values if required.
-     * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href="#method_addAttrs">addAttrs</a>).
-     * @uses EventTarget
-     */
-    function Attribute(attrs, values, lazy) {
-
-        var host = this; // help compression
-
-        // Perf tweak - avoid creating event literals if not required.
-        host._ATTR_E_FACADE = {};
-
-        EventTarget.call(host, {emitFacade:true});
-
-        // _conf maintained for backwards compat
-        host._conf = host._state = new Y.State();
-
-        host._stateProxy = host._stateProxy || null;
-        host._requireAddAttr = host._requireAddAttr || false;
-
-        this._initAttrs(attrs, values, lazy);
-    }
-
-    /**
-     * <p>The value to return from an attribute setter in order to prevent the set from going through.</p>
-     *
-     * <p>You can return this value from your setter if you wish to combine validator and setter 
-     * functionality into a single setter function, which either returns the massaged value to be stored or 
-     * Attribute.INVALID_VALUE to prevent invalid values from being stored.</p>
-     *
-     * @property INVALID_VALUE
-     * @type Object
-     * @static
-     * @final
-     */
-    Attribute.INVALID_VALUE = {};
-    INVALID_VALUE = Attribute.INVALID_VALUE;
-
-    /**
-     * The list of properties which can be configured for 
-     * each attribute (e.g. setter, getter, writeOnce etc.).
-     *
-     * This property is used internally as a whitelist for faster
-     * Y.mix operations.
-     *
-     * @property _ATTR_CFG
-     * @type Array
-     * @static
-     * @protected
-     */
-    Attribute._ATTR_CFG = [SETTER, GETTER, VALIDATOR, VALUE, VALUE_FN, WRITE_ONCE, READ_ONLY, LAZY_ADD, BROADCAST, BYPASS_PROXY];
-
-    Attribute.prototype = {
-        /**
-         * <p>
-         * Adds an attribute with the provided configuration to the host object.
-         * </p>
-         * <p>
-         * The config argument object supports the following properties:
-         * </p>
-         * 
-         * <dl>
-         *    <dt>value &#60;Any&#62;</dt>
-         *    <dd>The initial value to set on the attribute</dd>
-         *
-         *    <dt>valueFn &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>A function, which will return the initial value to set on the attribute. This is useful
-         *    for cases where the attribute configuration is defined statically, but needs to 
-         *    reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, 
-         *    the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which 
-         *    case the value property is used.</p>
-         *
-         *    <p>valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.</p>
-         *    </dd>
-         *
-         *    <dt>readOnly &#60;boolean&#62;</dt>
-         *    <dd>Whether or not the attribute is read only. Attributes having readOnly set to true
-         *        cannot be modified by invoking the set method.</dd>
-         *
-         *    <dt>writeOnce &#60;boolean&#62; or &#60;string&#62;</dt>
-         *    <dd>
-         *        Whether or not the attribute is "write once". Attributes having writeOnce set to true, 
-         *        can only have their values set once, be it through the default configuration, 
-         *        constructor configuration arguments, or by invoking set.
-         *        <p>The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization
-         *        (when used with Base, this means it can only be set during construction)</p>
-         *    </dd>
-         *
-         *    <dt>setter &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>The setter function used to massage or normalize the value passed to the set method for the attribute. 
-         *    The value returned by the setter will be the final stored value. Returning
-         *    <a href="#property_Attribute.INVALID_VALUE">Attribute.INVALID_VALUE</a>, from the setter will prevent
-         *    the value from being stored.
-         *    </p>
-         *    
-         *    <p>setter can also be set to a string, representing the name of the instance method to be used as the setter function.</p>
-         *    </dd>
-         *      
-         *    <dt>getter &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>
-         *    The getter function used to massage or normalize the value returned by the get method for the attribute.
-         *    The value returned by the getter function is the value which will be returned to the user when they 
-         *    invoke get.
-         *    </p>
-         *
-         *    <p>getter can also be set to a string, representing the name of the instance method to be used as the getter function.</p>
-         *    </dd>
-         *
-         *    <dt>validator &#60;Function | String&#62;</dt>
-         *    <dd>
-         *    <p>
-         *    The validator function invoked prior to setting the stored value. Returning
-         *    false from the validator function will prevent the value from being stored.
-         *    </p>
-         *    
-         *    <p>validator can also be set to a string, representing the name of the instance method to be used as the validator function.</p>
-         *    </dd>
-         *    
-         *    <dt>broadcast &#60;int&#62;</dt>
-         *    <dd>If and how attribute change events for this attribute should be broadcast. See CustomEvent's <a href="CustomEvent.html#property_broadcast">broadcast</a> property for 
-         *    valid values. By default attribute change events are not broadcast.</dd>
-         *
-         *    <dt>lazyAdd &#60;boolean&#62;</dt>
-         *    <dd>Whether or not to delay initialization of the attribute until the first call to get/set it. 
-         *    This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through 
-         *    the <a href="#method_addAttrs">addAttrs</a> method.</dd>
-         *
-         * </dl>
-         *
-         * <p>The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with
-         * the context ("this") set to the host object.</p>
-         *
-         * <p>Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, and are not intended for public use.</p>
-         * 
-         * @method addAttr
-         *
-         * @param {String} name The name of the attribute.
-         * @param {Object} config An object with attribute configuration property/value pairs, specifying the configuration for the attribute.
-         *
-         * <p>
-         * <strong>NOTE:</strong> The configuration object is modified when adding an attribute, so if you need 
-         * to protect the original values, you will need to merge the object.
-         * </p>
-         *
-         * @param {boolean} lazy (optional) Whether or not to add this attribute lazily (on the first call to get/set). 
-         *
-         * @return {Object} A reference to the host object.
-         *
-         * @chainable
-         */
-        addAttr: function(name, config, lazy) {
-
-
-            var host = this, // help compression
-                state = host._state,
-                value,
-                hasValue;
-
-            lazy = (LAZY_ADD in config) ? config[LAZY_ADD] : lazy;
-
-            if (lazy && !host.attrAdded(name)) {
-                state.add(name, LAZY, config || {});
-                state.add(name, ADDED, true);
-            } else {
-
-
-                if (!host.attrAdded(name) || state.get(name, IS_LAZY_ADD)) {
-
-                    config = config || {};
-
-                    hasValue = (VALUE in config);
-
-
-                    if(hasValue) {
-                        // We'll go through set, don't want to set value in config directly
-                        value = config.value;
-                        delete config.value;
-                    }
-
-                    config.added = true;
-                    config.initializing = true;
-
-                    state.addAll(name, config);
-
-                    if (hasValue) {
-                        // Go through set, so that raw values get normalized/validated
-                        host.set(name, value);
-                    }
-
-                    state.remove(name, INITIALIZING);
-                }
-            }
-
-            return host;
-        },
-
-        /**
-         * Checks if the given attribute has been added to the host
-         *
-         * @method attrAdded
-         * @param {String} name The name of the attribute to check.
-         * @return {boolean} true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes.
-         */
-        attrAdded: function(name) {
-            return !!this._state.get(name, ADDED);
-        },
-
-        /**
-         * Updates the configuration of an attribute which has already been added.
-         * <p>
-         * The properties which can be modified through this interface are limited
-         * to the following subset of attributes, which can be safely modified
-         * after a value has already been set on the attribute: readOnly, writeOnce, 
-         * broadcast and getter.
-         * </p>
-         * @method modifyAttr
-         * @param {String} name The name of the attribute whose configuration is to be updated.
-         * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify.
-         */
-        modifyAttr: function(name, config) {
-            var host = this, // help compression
-                prop, state;
-
-            if (host.attrAdded(name)) {
-
-                if (host._isLazyAttr(name)) {
-                    host._addLazyAttr(name);
-                }
-
-                state = host._state;
-                for (prop in config) {
-                    if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) {
-                        state.add(name, prop, config[prop]);
-
-                        // If we reconfigured broadcast, need to republish
-                        if (prop === BROADCAST) {
-                            state.remove(name, PUBLISHED);
-                        }
-                    }
-                }
-            }
-
-        },
-
-        /**
-         * Removes an attribute from the host object
-         *
-         * @method removeAttr
-         * @param {String} name The name of the attribute to be removed.
-         */
-        removeAttr: function(name) {
-            this._state.removeAll(name);
-        },
-
-        /**
-         * Returns the current value of the attribute. If the attribute
-         * has been configured with a 'getter' function, this method will delegate
-         * to the 'getter' to obtain the value of the attribute.
-         *
-         * @method get
-         *
-         * @param {String} name The name of the attribute. If the value of the attribute is an Object, 
-         * dot notation can be used to obtain the value of a property of the object (e.g. <code>get("x.y.z")</code>)
-         *
-         * @return {Any} The value of the attribute
-         */
-        get : function(name) {
-            return this._getAttr(name);
-        },
-
-        /**
-         * Checks whether or not the attribute is one which has been
-         * added lazily and still requires initialization.
-         *
-         * @method _isLazyAttr
-         * @private
-         * @param {String} name The name of the attribute
-         * @return {boolean} true if it's a lazily added attribute, false otherwise.
-         */
-        _isLazyAttr: function(name) {
-            return this._state.get(name, LAZY);
-        },
-
-        /**
-         * Finishes initializing an attribute which has been lazily added.
-         *
-         * @method _addLazyAttr
-         * @private
-         * @param {Object} name The name of the attribute
-         */
-        _addLazyAttr: function(name) {
-            var state = this._state,
-                lazyCfg = state.get(name, LAZY);
-
-            state.add(name, IS_LAZY_ADD, true);
-            state.remove(name, LAZY);
-            this.addAttr(name, lazyCfg);
-        },
-
-        /**
-         * Sets the value of an attribute.
-         *
-         * @method set
-         * @chainable
-         *
-         * @param {String} name The name of the attribute. If the 
-         * current value of the attribute is an Object, dot notation can be used
-         * to set the value of a property within the object (e.g. <code>set("x.y.z", 5)</code>).
-         *
-         * @param {Any} value The value to set the attribute to.
-         *
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event. This 
-         * can be used as a flexible way to identify the source of a call to set, allowing 
-         * the developer to distinguish between set called internally by the host, vs. 
-         * set called externally by the application developer.
-         *
-         * @return {Object} A reference to the host object.
-         */
-        set : function(name, val, opts) {
-            return this._setAttr(name, val, opts);
-        },
-
-        /**
-         * Resets the attribute (or all attributes) to its initial value, as long as
-         * the attribute is not readOnly, or writeOnce.
-         *
-         * @method reset
-         * @param {String} name Optional. The name of the attribute to reset.  If omitted, all attributes are reset.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        reset : function(name) {
-            var host = this,  // help compression
-                added;
-
-            if (name) {
-                if (host._isLazyAttr(name)) {
-                    host._addLazyAttr(name);
-                }
-                host.set(name, host._state.get(name, INIT_VALUE));
-            } else {
-                added = host._state.data.added;
-                Y.each(added, function(v, n) {
-                    host.reset(n);
-                }, host);
-            }
-            return host;
-        },
-
-        /**
-         * Allows setting of readOnly/writeOnce attributes. See <a href="#method_set">set</a> for argument details.
-         *
-         * @method _set
-         * @protected
-         * @chainable
-         * 
-         * @param {String} name The name of the attribute.
-         * @param {Any} val The value to set the attribute to.
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event.
-         * @return {Object} A reference to the host object.
-         */
-        _set : function(name, val, opts) {
-            return this._setAttr(name, val, opts, true);
-        },
-
-        /**
-         * Provides the common implementation for the public get method,
-         * allowing Attribute hosts to over-ride either method.
-         *
-         * See <a href="#method_get">get</a> for argument details.
-         *
-         * @method _getAttr
-         * @protected
-         * @chainable
-         *
-         * @param {String} name The name of the attribute.
-         * @return {Any} The value of the attribute.
-         */
-        _getAttr : function(name) {
-            var host = this, // help compression
-                fullName = name,
-                state = host._state,
-                path,
-                getter,
-                val,
-                cfg;
-
-            if (name.indexOf(DOT) !== -1) {
-                path = name.split(DOT);
-                name = path.shift();
-            }
-
-            // On Demand - Should be rare - handles out of order valueFn references
-            if (host._tCfgs && host._tCfgs[name]) {
-                cfg = {};
-                cfg[name] = host._tCfgs[name];
-                delete host._tCfgs[name];
-                host._addAttrs(cfg, host._tVals);
-            }
-
-            // Lazy Init
-            if (host._isLazyAttr(name)) {
-                host._addLazyAttr(name);
-            }
-
-            val = host._getStateVal(name);
-            getter = state.get(name, GETTER);
-
-            if (getter && !getter.call) {
-                getter = this[getter];
-            }
-
-            val = (getter) ? getter.call(host, val, fullName) : val;
-            val = (path) ? O.getValue(val, path) : val;
-
-            return val;
-        },
-
-        /**
-         * Provides the common implementation for the public set and protected _set methods.
-         *
-         * See <a href="#method_set">set</a> for argument details.
-         *
-         * @method _setAttr
-         * @protected
-         * @chainable
-         *
-         * @param {String} name The name of the attribute.
-         * @param {Any} value The value to set the attribute to.
-         * @param {Object} opts (Optional) Optional event data to be mixed into
-         * the event facade passed to subscribers of the attribute's change event.
-         * @param {boolean} force If true, allows the caller to set values for 
-         * readOnly or writeOnce attributes which have already been set.
-         *
-         * @return {Object} A reference to the host object.
-         */
-        _setAttr : function(name, val, opts, force) {
-            var allowSet = true,
-                state = this._state,
-                stateProxy = this._stateProxy,
-                data = state.data,
-                initialSet,
-                strPath,
-                path,
-                currVal,
-                writeOnce,
-                initializing;
-
-            if (name.indexOf(DOT) !== -1) {
-                strPath = name;
-                path = name.split(DOT);
-                name = path.shift();
-            }
-
-            if (this._isLazyAttr(name)) {
-                this._addLazyAttr(name);
-            }
-
-            initialSet = (!data.value || !(name in data.value));
-
-            if (stateProxy && name in stateProxy && !this._state.get(name, BYPASS_PROXY)) {
-                // TODO: Value is always set for proxy. Can we do any better? Maybe take a snapshot as the initial value for the first call to set? 
-                initialSet = false;
-            }
-
-            if (this._requireAddAttr && !this.attrAdded(name)) {
-            } else {
-
-                writeOnce = state.get(name, WRITE_ONCE);
-                initializing = state.get(name, INITIALIZING);
-
-                if (!initialSet && !force) {
-
-                    if (writeOnce) {
-                        allowSet = false;
-                    }
-
-                    if (state.get(name, READ_ONLY)) {
-                        allowSet = false;
-                    }
-                }
-
-                if (!initializing && !force && writeOnce === INIT_ONLY) {
-                    allowSet = false;
-                }
-
-                if (allowSet) {
-                    // Don't need currVal if initialSet (might fail in custom getter if it always expects a non-undefined/non-null value)
-                    if (!initialSet) {
-                        currVal =  this.get(name);
-                    }
-
-                    if (path) {
-                       val = O.setValue(Y.clone(currVal), path, val);
-
-                       if (val === undefined) {
-                           allowSet = false;
-                       }
-                    }
-
-                    if (allowSet) {
-                        if (initializing) {
-                            this._setAttrVal(name, strPath, currVal, val);
-                        } else {
-                            this._fireAttrChange(name, strPath, currVal, val, opts);
-                        }
-                    }
-                }
-            }
-
-            return this;
-        },
-
-        /**
-         * Utility method to help setup the event payload and fire the attribute change event.
-         * 
-         * @method _fireAttrChange
-         * @private
-         * @param {String} attrName The name of the attribute
-         * @param {String} subAttrName The full path of the property being changed, 
-         * if this is a sub-attribute value being change. Otherwise null.
-         * @param {Any} currVal The current value of the attribute
-         * @param {Any} newVal The new value of the attribute
-         * @param {Object} opts Any additional event data to mix into the attribute change event's event facade.
-         */
-        _fireAttrChange : function(attrName, subAttrName, currVal, newVal, opts) {
-            var host = this,
-                eventName = attrName + CHANGE,
-                state = host._state,
-                facade;
-
-            if (!state.get(attrName, PUBLISHED)) {
-                host.publish(eventName, {
-                    queuable:false,
-                    defaultTargetOnly: true, 
-                    defaultFn:host._defAttrChangeFn, 
-                    silent:true,
-                    broadcast : state.get(attrName, BROADCAST)
-                });
-                state.add(attrName, PUBLISHED, true);
-            }
-
-            facade = (opts) ? Y.merge(opts) : host._ATTR_E_FACADE;
-
-            // Not using the single object signature for fire({type:..., newVal:...}), since 
-            // we don't want to override type. Changed to the fire(type, {newVal:...}) signature.
-
-            // facade.type = eventName;
-            facade.attrName = attrName;
-            facade.subAttrName = subAttrName;
-            facade.prevVal = currVal;
-            facade.newVal = newVal;
-
-            // host.fire(facade);
-            host.fire(eventName, facade);
-        },
-
-        /**
-         * Default function for attribute change events.
-         *
-         * @private
-         * @method _defAttrChangeFn
-         * @param {EventFacade} e The event object for attribute change events.
-         */
-        _defAttrChangeFn : function(e) {
-            if (!this._setAttrVal(e.attrName, e.subAttrName, e.prevVal, e.newVal)) {
-                // Prevent "after" listeners from being invoked since nothing changed.
-                e.stopImmediatePropagation();
-            } else {
-                e.newVal = this.get(e.attrName);
-            }
-        },
-
-        /**
-         * Gets the stored value for the attribute, from either the 
-         * internal state object, or the state proxy if it exits
-         * 
-         * @method _getStateVal
-         * @private
-         * @param {String} name The name of the attribute
-         * @return {Any} The stored value of the attribute
-         */
-        _getStateVal : function(name) {
-            var stateProxy = this._stateProxy;
-            return stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY) ? stateProxy[name] : this._state.get(name, VALUE);
-        },
-
-        /**
-         * Sets the stored value for the attribute, in either the 
-         * internal state object, or the state proxy if it exits
-         *
-         * @method _setStateVal
-         * @private
-         * @param {String} name The name of the attribute
-         * @param {Any} value The value of the attribute
-         */
-        _setStateVal : function(name, value) {
-            var stateProxy = this._stateProxy;
-            if (stateProxy && (name in stateProxy) && !this._state.get(name, BYPASS_PROXY)) {
-                stateProxy[name] = value;
-            } else {
-                this._state.add(name, VALUE, value);
-            }
-        },
-
-        /**
-         * Updates the stored value of the attribute in the privately held State object,
-         * if validation and setter passes.
-         *
-         * @method _setAttrVal
-         * @private
-         * @param {String} attrName The attribute name.
-         * @param {String} subAttrName The sub-attribute name, if setting a sub-attribute property ("x.y.z").
-         * @param {Any} prevVal The currently stored value of the attribute.
-         * @param {Any} newVal The value which is going to be stored.
-         * 
-         * @return {booolean} true if the new attribute value was stored, false if not.
-         */
-        _setAttrVal : function(attrName, subAttrName, prevVal, newVal) {
-
-            var host = this,
-                allowSet = true,
-                state = host._state,
-
-                validator = state.get(attrName, VALIDATOR),
-                setter = state.get(attrName, SETTER),
-                initializing = state.get(attrName, INITIALIZING),
-                prevValRaw = this._getStateVal(attrName),
-
-                name = subAttrName || attrName,
-                retVal,
-                valid;
-
-            if (validator) {
-                if (!validator.call) { 
-                    // Assume string - trying to keep critical path tight, so avoiding Lang check
-                    validator = this[validator];
-                }
-                if (validator) {
-                    valid = validator.call(host, newVal, name);
-
-                    if (!valid && initializing) {
-                        newVal = state.get(attrName, DEF_VALUE);
-                        valid = true; // Assume it's valid, for perf.
-                    }
-                }
-            }
-
-            if (!validator || valid) {
-                if (setter) {
-                    if (!setter.call) {
-                        // Assume string - trying to keep critical path tight, so avoiding Lang check
-                        setter = this[setter];
-                    }
-                    if (setter) {
-                        retVal = setter.call(host, newVal, name);
-
-                        if (retVal === INVALID_VALUE) {
-                            allowSet = false;
-                        } else if (retVal !== undefined){
-                            newVal = retVal;
-                        }
-                    }
-                }
-
-                if (allowSet) {
-                    if(!subAttrName && (newVal === prevValRaw) && !Lang.isObject(newVal)) {
-                        allowSet = false;
-                    } else {
-                        // Store value
-                        if (state.get(attrName, INIT_VALUE) === undefined) {
-                            state.add(attrName, INIT_VALUE, newVal);
-                        }
-                        host._setStateVal(attrName, newVal);
-                    }
-                }
-
-            } else {
-                allowSet = false;
-            }
-
-            return allowSet;
-        },
-
-        /**
-         * Sets multiple attribute values.
-         *
-         * @method setAttrs
-         * @param {Object} attrs  An object with attributes name/value pairs.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        setAttrs : function(attrs, opts) {
-            return this._setAttrs(attrs, opts);
-        },
-
-        /**
-         * Implementation behind the public setAttrs method, to set multiple attribute values.
-         *
-         * @method _setAttrs
-         * @protected
-         * @param {Object} attrs  An object with attributes name/value pairs.
-         * @return {Object} A reference to the host object.
-         * @chainable
-         */
-        _setAttrs : function(attrs, opts) {
-            for (var attr in attrs) {
-                if ( attrs.hasOwnProperty(attr) ) {
-                    this.set(attr, attrs[attr]);
-                }
-            }
-            return this;
-        },
-
-        /**
-         * Gets multiple attribute values.
-         *
-         * @method getAttrs
-         * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are
-         * returned. If set to true, all attributes modified from their initial values are returned.
-         * @return {Object} An object with attribute name/value pairs.
-         */
-        getAttrs : function(attrs) {
-            return this._getAttrs(attrs);
-        },
-
-        /**
-         * Implementation behind the public getAttrs method, to get multiple attribute values.
-         *
-         * @method _getAttrs
-         * @protected
-         * @param {Array | boolean} attrs Optional. An array of attribute names. If omitted, all attribute values are
-         * returned. If set to true, all attributes modified from their initial values are returned.
-         * @return {Object} An object with attribute name/value pairs.
-         */
-        _getAttrs : function(attrs) {
-            var host = this,
-                o = {}, 
-                i, l, attr, val,
-                modifiedOnly = (attrs === true);
-
-            attrs = (attrs && !modifiedOnly) ? attrs : O.keys(host._state.data.added);
-
-            for (i = 0, l = attrs.length; i < l; i++) {
-                // Go through get, to honor cloning/normalization
-                attr = attrs[i];
-                val = host.get(attr);
-
-                if (!modifiedOnly || host._getStateVal(attr) != host._state.get(attr, INIT_VALUE)) {
-                    o[attr] = host.get(attr); 
-                }
-            }
-
-            return o;
-        },
-
-        /**
-         * Configures a group of attributes, and sets initial values.
-         *
-         * <p>
-         * <strong>NOTE:</strong> This method does not isolate the configuration object by merging/cloning. 
-         * The caller is responsible for merging/cloning the configuration object if required.
-         * </p>
-         *
-         * @method addAttrs
-         * @chainable
-         *
-         * @param {Object} cfgs An object with attribute name/configuration pairs.
-         * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply.
-         * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only.
-         * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set.
-         * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration.
-         * See <a href="#method_addAttr">addAttr</a>.
-         * 
-         * @return {Object} A reference to the host object.
-         */
-        addAttrs : function(cfgs, values, lazy) {
-            var host = this; // help compression
-            if (cfgs) {
-                host._tCfgs = cfgs;
-                host._tVals = host._normAttrVals(values);
-                host._addAttrs(cfgs, host._tVals, lazy);
-                host._tCfgs = host._tVals = null;
-            }
-
-            return host;
-        },
-
-        /**
-         * Implementation behind the public addAttrs method. 
-         * 
-         * This method is invoked directly by get if it encounters a scenario 
-         * in which an attribute's valueFn attempts to obtain the 
-         * value an attribute in the same group of attributes, which has not yet 
-         * been added (on demand initialization).
-         *
-         * @method _addAttrs
-         * @private
-         * @param {Object} cfgs An object with attribute name/configuration pairs.
-         * @param {Object} values An object with attribute name/value pairs, defining the initial values to apply.
-         * Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only.
-         * @param {boolean} lazy Whether or not to delay the intialization of these attributes until the first call to get/set.
-         * Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration.
-         * See <a href="#method_addAttr">addAttr</a>.
-         */
-        _addAttrs : function(cfgs, values, lazy) {
-            var host = this, // help compression
-                attr,
-                attrCfg,
-                value;
-
-            for (attr in cfgs) {
-                if (cfgs.hasOwnProperty(attr)) {
-
-                    // Not Merging. Caller is responsible for isolating configs
-                    attrCfg = cfgs[attr];
-                    attrCfg.defaultValue = attrCfg.value;
-
-                    // Handle simple, complex and user values, accounting for read-only
-                    value = host._getAttrInitVal(attr, attrCfg, host._tVals);
-
-                    if (value !== undefined) {
-                        attrCfg.value = value;
-                    }
-
-                    if (host._tCfgs[attr]) {
-                        delete host._tCfgs[attr];
-                    }
-
-                    host.addAttr(attr, attrCfg, lazy);
-                }
-            }
-        },
-
-        /**
-         * Utility method to protect an attribute configuration
-         * hash, by merging the entire object and the individual 
-         * attr config objects. 
-         *
-         * @method _protectAttrs
-         * @protected
-         * @param {Object} attrs A hash of attribute to configuration object pairs.
-         * @return {Object} A protected version of the attrs argument.
-         */
-        _protectAttrs : function(attrs) {
-            if (attrs) {
-                attrs = Y.merge(attrs);
-                for (var attr in attrs) {
-                    if (attrs.hasOwnProperty(attr)) {
-                        attrs[attr] = Y.merge(attrs[attr]);
-                    }
-                }
-            }
-            return attrs;
-        },
-
-        /**
-         * Utility method to normalize attribute values. The base implementation 
-         * simply merges the hash to protect the original.
-         *
-         * @method _normAttrVals
-         * @param {Object} valueHash An object with attribute name/value pairs
-         *
-         * @return {Object}
-         *
-         * @private
-         */
-        _normAttrVals : function(valueHash) {
-            return (valueHash) ? Y.merge(valueHash) : null;
-        },
-
-        /**
-         * Returns the initial value of the given attribute from
-         * either the default configuration provided, or the 
-         * over-ridden value if it exists in the set of initValues 
-         * provided and the attribute is not read-only.
-         *
-         * @param {String} attr The name of the attribute
-         * @param {Object} cfg The attribute configuration object
-         * @param {Object} initValues The object with simple and complex attribute name/value pairs returned from _normAttrVals
-         *
-         * @return {Any} The initial value of the attribute.
-         *
-         * @method _getAttrInitVal
-         * @private
-         */
-        _getAttrInitVal : function(attr, cfg, initValues) {
-            var val, valFn;
-            // init value is provided by the user if it exists, else, provided by the config
-            if (!cfg[READ_ONLY] && initValues && initValues.hasOwnProperty(attr)) {
-                val = initValues[attr];
-            } else {
-                val = cfg[VALUE];
-                valFn = cfg[VALUE_FN];
- 
-                if (valFn) {
-                    if (!valFn.call) {
-                        valFn = this[valFn];
-                    }
-                    if (valFn) {
-                        val = valFn.call(this);
-                    }
-                }
-            }
-
-
-            return val;
-        },
-
-        /**
-         * Returns an object with the configuration properties (and value)
-         * for the given attrubute. If attrName is not provided, returns the
-         * configuration properties for all attributes.
-         *
-         * @method _getAttrCfg
-         * @protected
-         * @param {String} name Optional. The attribute name. If not provided, the method will return the configuration for all attributes.
-         * @return {Object} The configuration properties for the given attribute, or all attributes.
-         */
-        _getAttrCfg : function(name) {
-            var o,
-                data = this._state.data;
-
-            if (data) {
-                o = {};
-
-                Y.each(data, function(cfg, cfgProp) {
-                    if (name) {
-                        if(name in cfg) {
-                            o[cfgProp] = cfg[name];
-                        }
-                    } else {
-                        Y.each(cfg, function(attrCfg, attr) {
-                           o[attr] = o[attr] || {};
-                           o[attr][cfgProp] = attrCfg;
-                        });
-                    }
-                });
-            }
-
-            return o;
-        },
-
-        /**
-         * Utility method to set up initial attributes defined during construction, either through the constructor.ATTRS property, or explicitly passed in.
-         * 
-         * @method _initAttrs
-         * @protected
-         * @param attrs {Object} The attributes to add during construction (passed through to <a href="#method_addAttrs">addAttrs</a>). These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor.
-         * @param values {Object} The initial attribute values to apply (passed through to <a href="#method_addAttrs">addAttrs</a>). These are not merged/cloned. The caller is responsible for isolating user provided values if required.
-         * @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href="#method_addAttrs">addAttrs</a>).
-         */
-        _initAttrs : function(attrs, values, lazy) {
-            // ATTRS support for Node, which is not Base based
-            attrs = attrs || this.constructor.ATTRS;
-    
-            var Base = Y.Base;
-            if ( attrs && !(Base && Y.instanceOf(this, Base))) {
-                this.addAttrs(this._protectAttrs(attrs), values, lazy);
-            }
-        }
-    };
-
-    // Basic prototype augment - no lazy constructor invocation.
-    Y.mix(Attribute, EventTarget, false, null, 1);
-
-    Y.Attribute = Attribute;
-
-
-}, '3.4.1' ,{requires:['event-custom']});

+ 0 - 7
hmc/yui-3.4.1/build/attribute-complex/attribute-complex-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("attribute-complex",function(b){var a=b.Object,c=".";b.Attribute.Complex=function(){};b.Attribute.Complex.prototype={_normAttrVals:function(g){var i={},h={},j,d,f,e;if(g){for(e in g){if(g.hasOwnProperty(e)){if(e.indexOf(c)!==-1){j=e.split(c);d=j.shift();f=h[d]=h[d]||[];f[f.length]={path:j,value:g[e]};}else{i[e]=g[e];}}}return{simple:i,complex:h};}else{return null;}},_getAttrInitVal:function(m,j,p){var e=j.value,o=j.valueFn,d,f,h,g,q,n,k;if(o){if(!o.call){o=this[o];}if(o){e=o.call(this);}}if(!j.readOnly&&p){d=p.simple;if(d&&d.hasOwnProperty(m)){e=d[m];}f=p.complex;if(f&&f.hasOwnProperty(m)){k=f[m];for(h=0,g=k.length;h<g;++h){q=k[h].path;n=k[h].value;a.setValue(e,q,n);}}}return e;}};b.mix(b.Attribute,b.Attribute.Complex,true,null,1);},"3.4.1",{requires:["attribute-base"]});

+ 0 - 1642
hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base-debug.js

@@ -1,1642 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-base', function(Y) {
-
-/**
- * Provides automatic input completion or suggestions for text input fields and
- * textareas.
- *
- * @module autocomplete
- * @main autocomplete
- * @since 3.3.0
- */
-
-/**
- * <code>Y.Base</code> extension that provides core autocomplete logic (but no
- * UI implementation) for a text input field or textarea. Must be mixed into a
- * <code>Y.Base</code>-derived class to be useful.
- *
- * @submodule autocomplete-base
- */
-
-/**
- * <p>
- * Extension that provides core autocomplete logic (but no UI implementation)
- * for a text input field or textarea.
- * </p>
- *
- * <p>
- * The <code>AutoCompleteBase</code> class provides events and attributes that
- * abstract away core autocomplete logic and configuration, but does not provide
- * a widget implementation or suggestion UI. For a prepackaged autocomplete
- * widget, see <code>AutoCompleteList</code>.
- * </p>
- *
- * <p>
- * This extension cannot be instantiated directly, since it doesn't provide an
- * actual implementation. It's intended to be mixed into a
- * <code>Y.Base</code>-based class or widget.
- * </p>
- *
- * <p>
- * <code>Y.Widget</code>-based example:
- * </p>
- *
- * <pre>
- * YUI().use('autocomplete-base', 'widget', function (Y) {
- * &nbsp;&nbsp;var MyAC = Y.Base.create('myAC', Y.Widget, [Y.AutoCompleteBase], {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom prototype methods and properties.
- * &nbsp;&nbsp;}, {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom static methods and properties.
- * &nbsp;&nbsp;});
- * &nbsp;
- * &nbsp;&nbsp;// Custom implementation code.
- * });
- * </pre>
- *
- * <p>
- * <code>Y.Base</code>-based example:
- * </p>
- *
- * <pre>
- * YUI().use('autocomplete-base', function (Y) {
- * &nbsp;&nbsp;var MyAC = Y.Base.create('myAC', Y.Base, [Y.AutoCompleteBase], {
- * &nbsp;&nbsp;&nbsp;&nbsp;initializer: function () {
- * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._bindUIACBase();
- * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._syncUIACBase();
- * &nbsp;&nbsp;&nbsp;&nbsp;},
- * &nbsp;
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom prototype methods and properties.
- * &nbsp;&nbsp;}, {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom static methods and properties.
- * &nbsp;&nbsp;});
- * &nbsp;
- * &nbsp;&nbsp;// Custom implementation code.
- * });
- * </pre>
- *
- * @class AutoCompleteBase
- */
-
-var Escape  = Y.Escape,
-    Lang    = Y.Lang,
-    YArray  = Y.Array,
-    YObject = Y.Object,
-
-    isFunction = Lang.isFunction,
-    isString   = Lang.isString,
-    trim       = Lang.trim,
-
-    INVALID_VALUE = Y.Attribute.INVALID_VALUE,
-
-    _FUNCTION_VALIDATOR = '_functionValidator',
-    _SOURCE_SUCCESS     = '_sourceSuccess',
-
-    ALLOW_BROWSER_AC    = 'allowBrowserAutocomplete',
-    INPUT_NODE          = 'inputNode',
-    QUERY               = 'query',
-    QUERY_DELIMITER     = 'queryDelimiter',
-    REQUEST_TEMPLATE    = 'requestTemplate',
-    RESULTS             = 'results',
-    RESULT_LIST_LOCATOR = 'resultListLocator',
-    VALUE               = 'value',
-    VALUE_CHANGE        = 'valueChange',
-
-    EVT_CLEAR   = 'clear',
-    EVT_QUERY   = QUERY,
-    EVT_RESULTS = RESULTS;
-
-function AutoCompleteBase() {
-    // AOP bindings.
-    Y.before(this._bindUIACBase, this, 'bindUI');
-    Y.before(this._destructorACBase, this, 'destructor');
-    Y.before(this._syncUIACBase, this, 'syncUI');
-
-    // -- Public Events --------------------------------------------------------
-
-    /**
-     * Fires after the query has been completely cleared or no longer meets the
-     * minimum query length requirement.
-     *
-     * @event clear
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>prevVal (String)</dt>
-     *   <dd>
-     *     Value of the query before it was cleared.
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defClearFn
-     */
-    this.publish(EVT_CLEAR, {
-        defaultFn: this._defClearFn
-    });
-
-    /**
-     * Fires when the contents of the input field have changed and the input
-     * value meets the criteria necessary to generate an autocomplete query.
-     *
-     * @event query
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>inputValue (String)</dt>
-     *   <dd>
-     *     Full contents of the text input field or textarea that generated
-     *     the query.
-     *   </dd>
-     *
-     *   <dt>query (String)</dt>
-     *   <dd>
-     *     Autocomplete query. This is the string that will be used to
-     *     request completion results. It may or may not be the same as
-     *     <code>inputValue</code>.
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defQueryFn
-     */
-    this.publish(EVT_QUERY, {
-        defaultFn: this._defQueryFn
-    });
-
-    /**
-     * Fires after query results are received from the <code>source</code>. If
-     * no source has been set, this event will not fire.
-     *
-     * @event results
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>data (Array|Object)</dt>
-     *   <dd>
-     *     Raw, unfiltered result data (if available).
-     *   </dd>
-     *
-     *   <dt>query (String)</dt>
-     *   <dd>
-     *     Query that generated these results.
-     *   </dd>
-     *
-     *   <dt>results (Array)</dt>
-     *   <dd>
-     *     Array of filtered, formatted, and highlighted results. Each item in
-     *     the array is an object with the following properties:
-     *
-     *     <dl>
-     *       <dt>display (Node|HTMLElement|String)</dt>
-     *       <dd>
-     *         Formatted result HTML suitable for display to the user. If no
-     *         custom formatter is set, this will be an HTML-escaped version of
-     *         the string in the <code>text</code> property.
-     *       </dd>
-     *
-     *       <dt>highlighted (String)</dt>
-     *       <dd>
-     *         Highlighted (but not formatted) result text. This property will
-     *         only be set if a highlighter is in use.
-     *       </dd>
-     *
-     *       <dt>raw (mixed)</dt>
-     *       <dd>
-     *         Raw, unformatted result in whatever form it was provided by the
-     *         <code>source</code>.
-     *       </dd>
-     *
-     *       <dt>text (String)</dt>
-     *       <dd>
-     *         Plain text version of the result, suitable for being inserted
-     *         into the value of a text input field or textarea when the result
-     *         is selected by a user. This value is not HTML-escaped and should
-     *         not be inserted into the page using innerHTML.
-     *       </dd>
-     *     </dl>
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defResultsFn
-     */
-    this.publish(EVT_RESULTS, {
-        defaultFn: this._defResultsFn
-    });
-}
-
-// -- Public Static Properties -------------------------------------------------
-AutoCompleteBase.ATTRS = {
-    /**
-     * Whether or not to enable the browser's built-in autocomplete
-     * functionality for input fields.
-     *
-     * @attribute allowBrowserAutocomplete
-     * @type Boolean
-     * @default false
-     */
-    allowBrowserAutocomplete: {
-        value: false
-    },
-
-    /**
-     * When a <code>queryDelimiter</code> is set, trailing delimiters will
-     * automatically be stripped from the input value by default when the
-     * input node loses focus. Set this to <code>true</code> to allow trailing
-     * delimiters.
-     *
-     * @attribute allowTrailingDelimiter
-     * @type Boolean
-     * @default false
-     */
-    allowTrailingDelimiter: {
-        value: false
-    },
-
-    /**
-     * Node to monitor for changes, which will generate <code>query</code>
-     * events when appropriate. May be either an input field or a textarea.
-     *
-     * @attribute inputNode
-     * @type Node|HTMLElement|String
-     * @writeonce
-     */
-    inputNode: {
-        setter: Y.one,
-        writeOnce: 'initOnly'
-    },
-
-    /**
-     * Maximum number of results to return. A value of <code>0</code> or less
-     * will allow an unlimited number of results.
-     *
-     * @attribute maxResults
-     * @type Number
-     * @default 0
-     */
-    maxResults: {
-        value: 0
-    },
-
-    /**
-     * Minimum number of characters that must be entered before a
-     * <code>query</code> event will be fired. A value of <code>0</code>
-     * allows empty queries; a negative value will effectively disable all
-     * <code>query</code> events.
-     *
-     * @attribute minQueryLength
-     * @type Number
-     * @default 1
-     */
-    minQueryLength: {
-        value: 1
-    },
-
-    /**
-     * <p>
-     * Current query, or <code>null</code> if there is no current query.
-     * </p>
-     *
-     * <p>
-     * The query might not be the same as the current value of the input
-     * node, both for timing reasons (due to <code>queryDelay</code>) and
-     * because when one or more <code>queryDelimiter</code> separators are
-     * in use, only the last portion of the delimited input string will be
-     * used as the query value.
-     * </p>
-     *
-     * @attribute query
-     * @type String|null
-     * @default null
-     * @readonly
-     */
-    query: {
-        readOnly: true,
-        value: null
-    },
-
-    /**
-     * <p>
-     * Number of milliseconds to delay after input before triggering a
-     * <code>query</code> event. If new input occurs before this delay is
-     * over, the previous input event will be ignored and a new delay will
-     * begin.
-     * </p>
-     *
-     * <p>
-     * This can be useful both to throttle queries to a remote data source
-     * and to avoid distracting the user by showing them less relevant
-     * results before they've paused their typing.
-     * </p>
-     *
-     * @attribute queryDelay
-     * @type Number
-     * @default 100
-     */
-    queryDelay: {
-        value: 100
-    },
-
-    /**
-     * Query delimiter string. When a delimiter is configured, the input value
-     * will be split on the delimiter, and only the last portion will be used in
-     * autocomplete queries and updated when the <code>query</code> attribute is
-     * modified.
-     *
-     * @attribute queryDelimiter
-     * @type String|null
-     * @default null
-     */
-    queryDelimiter: {
-        value: null
-    },
-
-    /**
-     * <p>
-     * Source request template. This can be a function that accepts a query as a
-     * parameter and returns a request string, or it can be a string containing
-     * the placeholder "{query}", which will be replaced with the actual
-     * URI-encoded query. In either case, the resulting string will be appended
-     * to the request URL when the <code>source</code> attribute is set to a
-     * remote DataSource, JSONP URL, or XHR URL (it will not be appended to YQL
-     * URLs).
-     * </p>
-     *
-     * <p>
-     * While <code>requestTemplate</code> may be set to either a function or
-     * a string, it will always be returned as a function that accepts a
-     * query argument and returns a string.
-     * </p>
-     *
-     * @attribute requestTemplate
-     * @type Function|String|null
-     * @default null
-     */
-    requestTemplate: {
-        setter: '_setRequestTemplate',
-        value: null
-    },
-
-    /**
-     * <p>
-     * Array of local result filter functions. If provided, each filter
-     * will be called with two arguments when results are received: the query
-     * and an array of result objects. See the documentation for the
-     * <code>results</code> event for a list of the properties available on each
-     * result object.
-     * </p>
-     *
-     * <p>
-     * Each filter is expected to return a filtered or modified version of the
-     * results array, which will then be passed on to subsequent filters, then
-     * the <code>resultHighlighter</code> function (if set), then the
-     * <code>resultFormatter</code> function (if set), and finally to
-     * subscribers to the <code>results</code> event.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, result filters will not be called.
-     * </p>
-     *
-     * <p>
-     * Prepackaged result filters provided by the autocomplete-filters and
-     * autocomplete-filters-accentfold modules can be used by specifying the
-     * filter name as a string, such as <code>'phraseMatch'</code> (assuming
-     * the necessary filters module is loaded).
-     * </p>
-     *
-     * @attribute resultFilters
-     * @type Array
-     * @default []
-     */
-    resultFilters: {
-        setter: '_setResultFilters',
-        value: []
-    },
-
-    /**
-     * <p>
-     * Function which will be used to format results. If provided, this function
-     * will be called with two arguments after results have been received and
-     * filtered: the query and an array of result objects. The formatter is
-     * expected to return an array of HTML strings or Node instances containing
-     * the desired HTML for each result.
-     * </p>
-     *
-     * <p>
-     * See the documentation for the <code>results</code> event for a list of
-     * the properties available on each result object.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, the formatter will not be called.
-     * </p>
-     *
-     * @attribute resultFormatter
-     * @type Function|null
-     */
-    resultFormatter: {
-        validator: _FUNCTION_VALIDATOR
-    },
-
-    /**
-     * <p>
-     * Function which will be used to highlight results. If provided, this
-     * function will be called with two arguments after results have been
-     * received and filtered: the query and an array of filtered result objects.
-     * The highlighter is expected to return an array of highlighted result
-     * text in the form of HTML strings.
-     * </p>
-     *
-     * <p>
-     * See the documentation for the <code>results</code> event for a list of
-     * the properties available on each result object.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, the highlighter will not be called.
-     * </p>
-     *
-     * @attribute resultHighlighter
-     * @type Function|null
-     */
-    resultHighlighter: {
-        setter: '_setResultHighlighter'
-    },
-
-    /**
-     * <p>
-     * Locator that should be used to extract an array of results from a
-     * non-array response.
-     * </p>
-     *
-     * <p>
-     * By default, no locator is applied, and all responses are assumed to be
-     * arrays by default. If all responses are already arrays, you don't need to
-     * define a locator.
-     * </p>
-     *
-     * <p>
-     * The locator may be either a function (which will receive the raw response
-     * as an argument and must return an array) or a string representing an
-     * object path, such as "foo.bar.baz" (which would return the value of
-     * <code>result.foo.bar.baz</code> if the response is an object).
-     * </p>
-     *
-     * <p>
-     * While <code>resultListLocator</code> may be set to either a function or a
-     * string, it will always be returned as a function that accepts a response
-     * argument and returns an array.
-     * </p>
-     *
-     * @attribute resultListLocator
-     * @type Function|String|null
-     */
-    resultListLocator: {
-        setter: '_setLocator'
-    },
-
-    /**
-     * Current results, or an empty array if there are no results.
-     *
-     * @attribute results
-     * @type Array
-     * @default []
-     * @readonly
-     */
-    results: {
-        readOnly: true,
-        value: []
-    },
-
-    /**
-     * <p>
-     * Locator that should be used to extract a plain text string from a
-     * non-string result item. The resulting text value will typically be the
-     * value that ends up being inserted into an input field or textarea when
-     * the user of an autocomplete implementation selects a result.
-     * </p>
-     *
-     * <p>
-     * By default, no locator is applied, and all results are assumed to be
-     * plain text strings. If all results are already plain text strings, you
-     * don't need to define a locator.
-     * </p>
-     *
-     * <p>
-     * The locator may be either a function (which will receive the raw result
-     * as an argument and must return a string) or a string representing an
-     * object path, such as "foo.bar.baz" (which would return the value of
-     * <code>result.foo.bar.baz</code> if the result is an object).
-     * </p>
-     *
-     * <p>
-     * While <code>resultTextLocator</code> may be set to either a function or a
-     * string, it will always be returned as a function that accepts a result
-     * argument and returns a string.
-     * </p>
-     *
-     * @attribute resultTextLocator
-     * @type Function|String|null
-     */
-    resultTextLocator: {
-        setter: '_setLocator'
-    },
-
-    /**
-     * <p>
-     * Source for autocomplete results. The following source types are
-     * supported:
-     * </p>
-     *
-     * <dl>
-     *   <dt>Array</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>['first result', 'second result', 'etc']</code>
-     *     </p>
-     *
-     *     <p>
-     *     The full array will be provided to any configured filters for each
-     *     query. This is an easy way to create a fully client-side autocomplete
-     *     implementation.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>DataSource</dt>
-     *   <dd>
-     *     <p>
-     *     A <code>DataSource</code> instance or other object that provides a
-     *     DataSource-like <code>sendRequest</code> method. See the
-     *     <code>DataSource</code> documentation for details.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>Function</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example (synchronous):</i> <code>function (query) { return ['foo', 'bar']; }</code><br>
-           <i>Example (async):</i> <code>function (query, callback) { callback(['foo', 'bar']); }</code>
-     *     </p>
-     *
-     *     <p>
-     *     A function source will be called with the current query and a
-     *     callback function as parameters, and should either return an array of
-     *     results (for synchronous operation) or return nothing and pass an
-     *     array of results to the provided callback (for asynchronous
-     *     operation).
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>Object</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>{foo: ['foo result 1', 'foo result 2'], bar: ['bar result']}</code>
-     *     </p>
-     *
-     *     <p>
-     *     An object will be treated as a query hashmap. If a property on the
-     *     object matches the current query, the value of that property will be
-     *     used as the response.
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be an array of results by default. If the
-     *     response is not an array, provide a <code>resultListLocator</code> to
-     *     process the response and return an array.
-     *     </p>
-     *   </dd>
-     * </dl>
-     *
-     * <p>
-     * If the optional <code>autocomplete-sources</code> module is loaded, then
-     * the following additional source types will be supported as well:
-     * </p>
-     *
-     * <dl>
-     *   <dt>&lt;select&gt; Node</dt>
-     *   <dd>
-     *     <p>
-     *     You may provide a YUI Node instance wrapping a &lt;select&gt;
-     *     element, and the options in the list will be used as results. You
-     *     will also need to specify a <code>resultTextLocator</code> of 'text'
-     *     or 'value', depending on what you want to use as the text of the
-     *     result.
-     *     </p>
-     *
-     *     <p>
-     *     Each result will be an object with the following properties:
-     *     </p>
-     *
-     *     <dl>
-     *       <dt>html (String)</dt>
-     *       <dd>
-     *         <p>HTML content of the &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>index (Number)</dt>
-     *       <dd>
-     *         <p>Index of the &lt;option&gt; element in the list.</p>
-     *       </dd>
-     *
-     *       <dt>node (Y.Node)</dt>
-     *       <dd>
-     *         <p>Node instance referring to the original &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>selected (Boolean)</dt>
-     *       <dd>
-     *         <p>Whether or not this item is currently selected in the
-     *         &lt;select&gt; list.</p>
-     *       </dd>
-     *
-     *       <dt>text (String)</dt>
-     *       <dd>
-     *         <p>Text content of the &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>value (String)</dt>
-     *       <dd>
-     *         <p>Value of the &lt;option&gt; element.</p>
-     *       </dd>
-     *     </dl>
-     *   </dd>
-     *
-     *   <dt>String (JSONP URL)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'http://example.com/search?q={query}&callback={callback}'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a URL with a <code>{callback}</code> placeholder is provided, it
-     *     will be used to make a JSONP request. The <code>{query}</code>
-     *     placeholder will be replaced with the current query, and the
-     *     <code>{callback}</code> placeholder will be replaced with an
-     *     internally-generated JSONP callback name. Both placeholders must
-     *     appear in the URL, or the request will fail. An optional
-     *     <code>{maxResults}</code> placeholder may also be provided, and will
-     *     be replaced with the value of the maxResults attribute (or 1000 if
-     *     the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be an array of results by default. If the
-     *     response is not an array, provide a <code>resultListLocator</code> to
-     *     process the response and return an array.
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>jsonp</code> module must be loaded in order for
-     *     JSONP URL sources to work.</strong> If the <code>jsonp</code> module
-     *     is not already loaded, it will be loaded on demand if possible.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>String (XHR URL)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'http://example.com/search?q={query}'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a URL without a <code>{callback}</code> placeholder is provided,
-     *     it will be used to make a same-origin XHR request. The
-     *     <code>{query}</code> placeholder will be replaced with the current
-     *     query. An optional <code>{maxResults}</code> placeholder may also be
-     *     provided, and will be replaced with the value of the maxResults
-     *     attribute (or 1000 if the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be a JSON array of results by default. If
-     *     the response is a JSON object and not an array, provide a
-     *     <code>resultListLocator</code> to process the response and return an
-     *     array. If the response is in some form other than JSON, you will
-     *     need to use a custom DataSource instance as the source.
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>io-base</code> and <code>json-parse</code> modules
-     *     must be loaded in order for XHR URL sources to work.</strong> If
-     *     these modules are not already loaded, they will be loaded on demand
-     *     if possible.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>String (YQL query)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'select * from search.suggest where query="{query}"'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a YQL query is provided, it will be used to make a YQL request.
-     *     The <code>{query}</code> placeholder will be replaced with the
-     *     current autocomplete query. This placeholder must appear in the YQL
-     *     query, or the request will fail. An optional
-     *     <code>{maxResults}</code> placeholder may also be provided, and will
-     *     be replaced with the value of the maxResults attribute (or 1000 if
-     *     the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>yql</code> module must be loaded in order for YQL
-     *     sources to work.</strong> If the <code>yql</code> module is not
-     *     already loaded, it will be loaded on demand if possible.
-     *     </p>
-     *   </dd>
-     * </dl>
-     *
-     * <p>
-     * As an alternative to providing a source, you could simply listen for
-     * <code>query</code> events and handle them any way you see fit. Providing
-     * a source is optional, but will usually be simpler.
-     * </p>
-     *
-     * @attribute source
-     * @type Array|DataSource|Function|Node|Object|String|null
-     */
-    source: {
-        setter: '_setSource'
-    },
-
-    /**
-     * <p>
-     * May be used to force a specific source type, overriding the automatic
-     * source type detection. It should almost never be necessary to do this,
-     * but as they taught us in the Boy Scouts, one should always be prepared,
-     * so it's here if you need it. Be warned that if you set this attribute and
-     * something breaks, it's your own fault.
-     * </p>
-     *
-     * <p>
-     * Supported <code>sourceType</code> values are: 'array', 'datasource',
-     * 'function', and 'object'.
-     * </p>
-     *
-     * <p>
-     * If the <code>autocomplete-sources</code> module is loaded, the following
-     * additional source types are supported: 'io', 'jsonp', 'select',
-     * 'string', 'yql'
-     * </p>
-     *
-     * @attribute sourceType
-     * @type String
-     */
-    sourceType: {
-        value: null
-    },
-
-    /**
-     * If the <code>inputNode</code> specified at instantiation time has a
-     * <code>node-tokeninput</code> plugin attached to it, this attribute will
-     * be a reference to the <code>Y.Plugin.TokenInput</code> instance.
-     *
-     * @attribute tokenInput
-     * @type Plugin.TokenInput
-     * @readonly
-     */
-    tokenInput: {
-        readOnly: true
-    },
-
-    /**
-     * Current value of the input node.
-     *
-     * @attribute value
-     * @type String
-     * @default ''
-     */
-    value: {
-        // Why duplicate this._inputNode.get('value')? Because we need a
-        // reliable way to track the source of value changes. We want to perform
-        // completion when the user changes the value, but not when we change
-        // the value.
-        value: ''
-    }
-};
-
-AutoCompleteBase.CSS_PREFIX = 'ac';
-AutoCompleteBase.UI_SRC = (Y.Widget && Y.Widget.UI_SRC) || 'ui';
-
-/**
- * Mapping of built-in source types to their setter functions. DataSource
- * instances and DataSource-like objects are handled natively, so are not
- * mapped here.
- *
- * @property SOURCE_TYPES
- * @type {Object}
- * @static
- */
-AutoCompleteBase.SOURCE_TYPES = {
-    array     : '_createArraySource',
-    'function': '_createFunctionSource',
-    object    : '_createObjectSource'
-};
-
-AutoCompleteBase.prototype = {
-    // -- Public Prototype Methods ---------------------------------------------
-
-    /**
-     * <p>
-     * Sends a request to the configured source. If no source is configured,
-     * this method won't do anything.
-     * </p>
-     *
-     * <p>
-     * Usually there's no reason to call this method manually; it will be
-     * called automatically when user input causes a <code>query</code> event to
-     * be fired. The only time you'll need to call this method manually is if
-     * you want to force a request to be sent when no user input has occurred.
-     * </p>
-     *
-     * @method sendRequest
-     * @param {String} query (optional) Query to send. If specified, the
-     *   <code>query</code> attribute will be set to this query. If not
-     *   specified, the current value of the <code>query</code> attribute will
-     *   be used.
-     * @param {Function} requestTemplate (optional) Request template function.
-     *   If not specified, the current value of the <code>requestTemplate</code>
-     *   attribute will be used.
-     * @chainable
-     */
-    sendRequest: function (query, requestTemplate) {
-        var request,
-            source = this.get('source');
-
-        if (query || query === '') {
-            this._set(QUERY, query);
-        } else {
-            query = this.get(QUERY) || '';
-        }
-
-        if (source) {
-            if (!requestTemplate) {
-                requestTemplate = this.get(REQUEST_TEMPLATE);
-            }
-
-            request = requestTemplate ?
-                requestTemplate.call(this, query) : query;
-
-            Y.log('sendRequest: ' + request, 'info', 'autocomplete-base');
-
-            source.sendRequest({
-                query  : query,
-                request: request,
-
-                callback: {
-                    success: Y.bind(this._onResponse, this, query)
-                }
-            });
-        }
-
-        return this;
-    },
-
-    // -- Protected Lifecycle Methods ------------------------------------------
-
-    /**
-     * Attaches event listeners and behaviors.
-     *
-     * @method _bindUIACBase
-     * @protected
-     */
-    _bindUIACBase: function () {
-        var inputNode  = this.get(INPUT_NODE),
-            tokenInput = inputNode && inputNode.tokenInput;
-
-        // If the inputNode has a node-tokeninput plugin attached, bind to the
-        // plugin's inputNode instead.
-        if (tokenInput) {
-            inputNode = tokenInput.get(INPUT_NODE);
-            this._set('tokenInput', tokenInput);
-        }
-
-        if (!inputNode) {
-            Y.error('No inputNode specified.');
-            return;
-        }
-
-        this._inputNode = inputNode;
-
-        this._acBaseEvents = new Y.EventHandle([
-            // This is the valueChange event on the inputNode, provided by the
-            // event-valuechange module, not our own valueChange.
-            inputNode.on(VALUE_CHANGE, this._onInputValueChange, this),
-            inputNode.on('blur', this._onInputBlur, this),
-
-            this.after(ALLOW_BROWSER_AC + 'Change', this._syncBrowserAutocomplete),
-            this.after('sourceTypeChange', this._afterSourceTypeChange),
-            this.after(VALUE_CHANGE, this._afterValueChange)
-        ]);
-    },
-
-    /**
-     * Detaches AutoCompleteBase event listeners.
-     *
-     * @method _destructorACBase
-     * @protected
-     */
-    _destructorACBase: function () {
-        this._acBaseEvents.detach();
-    },
-
-    /**
-     * Synchronizes the UI state of the <code>inputNode</code>.
-     *
-     * @method _syncUIACBase
-     * @protected
-     */
-    _syncUIACBase: function () {
-        this._syncBrowserAutocomplete();
-        this.set(VALUE, this.get(INPUT_NODE).get(VALUE));
-    },
-
-    // -- Protected Prototype Methods ------------------------------------------
-
-    /**
-     * Creates a DataSource-like object that simply returns the specified array
-     * as a response. See the <code>source</code> attribute for more details.
-     *
-     * @method _createArraySource
-     * @param {Array} source
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createArraySource: function (source) {
-        var that = this;
-
-        return {
-            type: 'array',
-            sendRequest: function (request) {
-                that[_SOURCE_SUCCESS](source.concat(), request);
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that passes the query to a
-     * custom-defined function, which is expected to call the provided callback
-     * with an array of results. See the <code>source</code> attribute for more
-     * details.
-     *
-     * @method _createFunctionSource
-     * @param {Function} source Function that accepts a query and a callback as
-     *   parameters, and calls the callback with an array of results.
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createFunctionSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'function',
-            sendRequest: function (request) {
-                var value;
-
-                function afterResults(results) {
-                    that[_SOURCE_SUCCESS](results || [], request);
-                }
-
-                // Allow both synchronous and asynchronous functions. If we get
-                // a truthy return value, assume the function is synchronous.
-                if ((value = source(request.query, afterResults))) {
-                    afterResults(value);
-                }
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that looks up queries as properties on
-     * the specified object, and returns the found value (if any) as a response.
-     * See the <code>source</code> attribute for more details.
-     *
-     * @method _createObjectSource
-     * @param {Object} source
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createObjectSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'object',
-            sendRequest: function (request) {
-                var query = request.query;
-
-                that[_SOURCE_SUCCESS](
-                    YObject.owns(source, query) ? source[query] : [],
-                    request
-                );
-            }
-        };
-    },
-
-    /**
-     * Returns <code>true</code> if <i>value</i> is either a function or
-     * <code>null</code>.
-     *
-     * @method _functionValidator
-     * @param {Function|null} value Value to validate.
-     * @protected
-     */
-    _functionValidator: function (value) {
-        return value === null || isFunction(value);
-    },
-
-    /**
-     * Faster and safer alternative to Y.Object.getValue(). Doesn't bother
-     * casting the path to an array (since we already know it's an array) and
-     * doesn't throw an error if a value in the middle of the object hierarchy
-     * is neither <code>undefined</code> nor an object.
-     *
-     * @method _getObjectValue
-     * @param {Object} obj
-     * @param {Array} path
-     * @return {mixed} Located value, or <code>undefined</code> if the value was
-     *   not found at the specified path.
-     * @protected
-     */
-    _getObjectValue: function (obj, path) {
-        if (!obj) {
-            return;
-        }
-
-        for (var i = 0, len = path.length; obj && i < len; i++) {
-            obj = obj[path[i]];
-        }
-
-        return obj;
-    },
-
-    /**
-     * Parses result responses, performs filtering and highlighting, and fires
-     * the <code>results</code> event.
-     *
-     * @method _parseResponse
-     * @param {String} query Query that generated these results.
-     * @param {Object} response Response containing results.
-     * @param {Object} data Raw response data.
-     * @protected
-     */
-    _parseResponse: function (query, response, data) {
-        var facade = {
-                data   : data,
-                query  : query,
-                results: []
-            },
-
-            listLocator = this.get(RESULT_LIST_LOCATOR),
-            results     = [],
-            unfiltered  = response && response.results,
-
-            filters,
-            formatted,
-            formatter,
-            highlighted,
-            highlighter,
-            i,
-            len,
-            maxResults,
-            result,
-            text,
-            textLocator;
-
-        if (unfiltered && listLocator) {
-            unfiltered = listLocator.call(this, unfiltered);
-        }
-
-        if (unfiltered && unfiltered.length) {
-            filters     = this.get('resultFilters');
-            textLocator = this.get('resultTextLocator');
-
-            // Create a lightweight result object for each result to make them
-            // easier to work with. The various properties on the object
-            // represent different formats of the result, and will be populated
-            // as we go.
-            for (i = 0, len = unfiltered.length; i < len; ++i) {
-                result = unfiltered[i];
-
-                text = textLocator ?
-                        textLocator.call(this, result) :
-                        result.toString();
-
-                results.push({
-                    display: Escape.html(text),
-                    raw    : result,
-                    text   : text
-                });
-            }
-
-            // Run the results through all configured result filters. Each
-            // filter returns an array of (potentially fewer) result objects,
-            // which is then passed to the next filter, and so on.
-            for (i = 0, len = filters.length; i < len; ++i) {
-                results = filters[i].call(this, query, results.concat());
-
-                if (!results) {
-                    Y.log("Filter didn't return anything.", 'warn', 'autocomplete-base');
-                    return;
-                }
-
-                if (!results.length) {
-                    break;
-                }
-            }
-
-            if (results.length) {
-                formatter   = this.get('resultFormatter');
-                highlighter = this.get('resultHighlighter');
-                maxResults  = this.get('maxResults');
-
-                // If maxResults is set and greater than 0, limit the number of
-                // results.
-                if (maxResults && maxResults > 0 &&
-                        results.length > maxResults) {
-                    results.length = maxResults;
-                }
-
-                // Run the results through the configured highlighter (if any).
-                // The highlighter returns an array of highlighted strings (not
-                // an array of result objects), and these strings are then added
-                // to each result object.
-                if (highlighter) {
-                    highlighted = highlighter.call(this, query,
-                            results.concat());
-
-                    if (!highlighted) {
-                        Y.log("Highlighter didn't return anything.", 'warn', 'autocomplete-base');
-                        return;
-                    }
-
-                    for (i = 0, len = highlighted.length; i < len; ++i) {
-                        result = results[i];
-                        result.highlighted = highlighted[i];
-                        result.display     = result.highlighted;
-                    }
-                }
-
-                // Run the results through the configured formatter (if any) to
-                // produce the final formatted results. The formatter returns an
-                // array of strings or Node instances (not an array of result
-                // objects), and these strings/Nodes are then added to each
-                // result object.
-                if (formatter) {
-                    formatted = formatter.call(this, query, results.concat());
-
-                    if (!formatted) {
-                        Y.log("Formatter didn't return anything.", 'warn', 'autocomplete-base');
-                        return;
-                    }
-
-                    for (i = 0, len = formatted.length; i < len; ++i) {
-                        results[i].display = formatted[i];
-                    }
-                }
-            }
-        }
-
-        facade.results = results;
-        this.fire(EVT_RESULTS, facade);
-    },
-
-    /**
-     * <p>
-     * Returns the query portion of the specified input value, or
-     * <code>null</code> if there is no suitable query within the input value.
-     * </p>
-     *
-     * <p>
-     * If a query delimiter is defined, the query will be the last delimited
-     * part of of the string.
-     * </p>
-     *
-     * @method _parseValue
-     * @param {String} value Input value from which to extract the query.
-     * @return {String|null} query
-     * @protected
-     */
-    _parseValue: function (value) {
-        var delim = this.get(QUERY_DELIMITER);
-
-        if (delim) {
-            value = value.split(delim);
-            value = value[value.length - 1];
-        }
-
-        return Lang.trimLeft(value);
-    },
-
-    /**
-     * Setter for locator attributes.
-     *
-     * @method _setLocator
-     * @param {Function|String|null} locator
-     * @return {Function|null}
-     * @protected
-     */
-    _setLocator: function (locator) {
-        if (this[_FUNCTION_VALIDATOR](locator)) {
-            return locator;
-        }
-
-        var that = this;
-
-        locator = locator.toString().split('.');
-
-        return function (result) {
-            return result && that._getObjectValue(result, locator);
-        };
-    },
-
-    /**
-     * Setter for the <code>requestTemplate</code> attribute.
-     *
-     * @method _setRequestTemplate
-     * @param {Function|String|null} template
-     * @return {Function|null}
-     * @protected
-     */
-    _setRequestTemplate: function (template) {
-        if (this[_FUNCTION_VALIDATOR](template)) {
-            return template;
-        }
-
-        template = template.toString();
-
-        return function (query) {
-            return Lang.sub(template, {query: encodeURIComponent(query)});
-        };
-    },
-
-    /**
-     * Setter for the <code>resultFilters</code> attribute.
-     *
-     * @method _setResultFilters
-     * @param {Array|Function|String|null} filters <code>null</code>, a filter
-     *   function, an array of filter functions, or a string or array of strings
-     *   representing the names of methods on
-     *   <code>Y.AutoCompleteFilters</code>.
-     * @return {Array} Array of filter functions (empty if <i>filters</i> is
-     *   <code>null</code>).
-     * @protected
-     */
-    _setResultFilters: function (filters) {
-        var acFilters, getFilterFunction;
-
-        if (filters === null) {
-            return [];
-        }
-
-        acFilters = Y.AutoCompleteFilters;
-
-        getFilterFunction = function (filter) {
-            if (isFunction(filter)) {
-                return filter;
-            }
-
-            if (isString(filter) && acFilters &&
-                    isFunction(acFilters[filter])) {
-                return acFilters[filter];
-            }
-
-            return false;
-        };
-
-        if (Lang.isArray(filters)) {
-            filters = YArray.map(filters, getFilterFunction);
-            return YArray.every(filters, function (f) { return !!f; }) ?
-                    filters : INVALID_VALUE;
-        } else {
-            filters = getFilterFunction(filters);
-            return filters ? [filters] : INVALID_VALUE;
-        }
-    },
-
-    /**
-     * Setter for the <code>resultHighlighter</code> attribute.
-     *
-     * @method _setResultHighlighter
-     * @param {Function|String|null} highlighter <code>null</code>, a
-     *   highlighter function, or a string representing the name of a method on
-     *   <code>Y.AutoCompleteHighlighters</code>.
-     * @return {Function|null}
-     * @protected
-     */
-    _setResultHighlighter: function (highlighter) {
-        var acHighlighters;
-
-        if (this._functionValidator(highlighter)) {
-            return highlighter;
-        }
-
-        acHighlighters = Y.AutoCompleteHighlighters;
-
-        if (isString(highlighter) && acHighlighters &&
-                isFunction(acHighlighters[highlighter])) {
-            return acHighlighters[highlighter];
-        }
-
-        return INVALID_VALUE;
-    },
-
-    /**
-     * Setter for the <code>source</code> attribute. Returns a DataSource or
-     * a DataSource-like object depending on the type of <i>source</i> and/or
-     * the value of the <code>sourceType</code> attribute.
-     *
-     * @method _setSource
-     * @param {mixed} source AutoComplete source. See the <code>source</code>
-     *   attribute for details.
-     * @return {DataSource|Object}
-     * @protected
-     */
-    _setSource: function (source) {
-        var sourceType = this.get('sourceType') || Lang.type(source),
-            sourceSetter;
-
-        if ((source && isFunction(source.sendRequest))
-                || source === null
-                || sourceType === 'datasource') {
-
-            // Quacks like a DataSource instance (or null). Make it so!
-            this._rawSource = source;
-            return source;
-        }
-
-        // See if there's a registered setter for this source type.
-        if ((sourceSetter = AutoCompleteBase.SOURCE_TYPES[sourceType])) {
-            this._rawSource = source;
-            return Lang.isString(sourceSetter) ?
-                    this[sourceSetter](source) : sourceSetter(source);
-        }
-
-        Y.error("Unsupported source type '" + sourceType + "'. Maybe autocomplete-sources isn't loaded?");
-        return INVALID_VALUE;
-    },
-
-    /**
-     * Shared success callback for non-DataSource sources.
-     *
-     * @method _sourceSuccess
-     * @param {mixed} data Response data.
-     * @param {Object} request Request object.
-     * @protected
-     */
-    _sourceSuccess: function (data, request) {
-        request.callback.success({
-            data: data,
-            response: {results: data}
-        });
-    },
-
-    /**
-     * Synchronizes the UI state of the <code>allowBrowserAutocomplete</code>
-     * attribute.
-     *
-     * @method _syncBrowserAutocomplete
-     * @protected
-     */
-    _syncBrowserAutocomplete: function () {
-        var inputNode = this.get(INPUT_NODE);
-
-        if (inputNode.get('nodeName').toLowerCase() === 'input') {
-            inputNode.setAttribute('autocomplete',
-                    this.get(ALLOW_BROWSER_AC) ? 'on' : 'off');
-        }
-    },
-
-    /**
-     * <p>
-     * Updates the query portion of the <code>value</code> attribute.
-     * </p>
-     *
-     * <p>
-     * If a query delimiter is defined, the last delimited portion of the input
-     * value will be replaced with the specified <i>value</i>.
-     * </p>
-     *
-     * @method _updateValue
-     * @param {String} newVal New value.
-     * @protected
-     */
-    _updateValue: function (newVal) {
-        var delim = this.get(QUERY_DELIMITER),
-            insertDelim,
-            len,
-            prevVal;
-
-        newVal = Lang.trimLeft(newVal);
-
-        if (delim) {
-            insertDelim = trim(delim); // so we don't double up on spaces
-            prevVal     = YArray.map(trim(this.get(VALUE)).split(delim), trim);
-            len         = prevVal.length;
-
-            if (len > 1) {
-                prevVal[len - 1] = newVal;
-                newVal = prevVal.join(insertDelim + ' ');
-            }
-
-            newVal = newVal + insertDelim + ' ';
-        }
-
-        this.set(VALUE, newVal);
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Updates the current <code>source</code> based on the new
-     * <code>sourceType</code> to ensure that the two attributes don't get out
-     * of sync when they're changed separately.
-     *
-     * @method _afterSourceTypeChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterSourceTypeChange: function (e) {
-        if (this._rawSource) {
-            this.set('source', this._rawSource);
-        }
-    },
-
-    /**
-     * Handles change events for the <code>value</code> attribute.
-     *
-     * @method _afterValueChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterValueChange: function (e) {
-        var delay,
-            fire,
-            minQueryLength,
-            newVal = e.newVal,
-            query,
-            that;
-
-        // Don't query on value changes that didn't come from the user.
-        if (e.src !== AutoCompleteBase.UI_SRC) {
-            this._inputNode.set(VALUE, newVal);
-            return;
-        }
-
-        Y.log('valueChange: new: "' + newVal + '"; old: "' + e.prevVal + '"', 'info', 'autocomplete-base');
-
-        minQueryLength = this.get('minQueryLength');
-        query          = this._parseValue(newVal) || '';
-
-        if (minQueryLength >= 0 && query.length >= minQueryLength) {
-            delay = this.get('queryDelay');
-            that  = this;
-
-            fire = function () {
-                that.fire(EVT_QUERY, {
-                    inputValue: newVal,
-                    query     : query
-                });
-            };
-
-            if (delay) {
-                clearTimeout(this._delay);
-                this._delay = setTimeout(fire, delay);
-            } else {
-                fire();
-            }
-        } else {
-            clearTimeout(this._delay);
-
-            this.fire(EVT_CLEAR, {
-                prevVal: e.prevVal ? this._parseValue(e.prevVal) : null
-            });
-        }
-    },
-
-    /**
-     * Handles <code>blur</code> events on the input node.
-     *
-     * @method _onInputBlur
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onInputBlur: function (e) {
-        var delim = this.get(QUERY_DELIMITER),
-            delimPos,
-            newVal,
-            value;
-
-        // If a query delimiter is set and the input's value contains one or
-        // more trailing delimiters, strip them.
-        if (delim && !this.get('allowTrailingDelimiter')) {
-            delim = Lang.trimRight(delim);
-            value = newVal = this._inputNode.get(VALUE);
-
-            if (delim) {
-                while ((newVal = Lang.trimRight(newVal)) &&
-                        (delimPos = newVal.length - delim.length) &&
-                        newVal.lastIndexOf(delim) === delimPos) {
-
-                    newVal = newVal.substring(0, delimPos);
-                }
-            } else {
-                // Delimiter is one or more space characters, so just trim the
-                // value.
-                newVal = Lang.trimRight(newVal);
-            }
-
-            if (newVal !== value) {
-                this.set(VALUE, newVal);
-            }
-        }
-    },
-
-    /**
-     * Handles <code>valueChange</code> events on the input node and fires a
-     * <code>query</code> event when the input value meets the configured
-     * criteria.
-     *
-     * @method _onInputValueChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onInputValueChange: function (e) {
-        var newVal = e.newVal;
-
-        // Don't query if the internal value is the same as the new value
-        // reported by valueChange.
-        if (newVal === this.get(VALUE)) {
-            return;
-        }
-
-        this.set(VALUE, newVal, {src: AutoCompleteBase.UI_SRC});
-    },
-
-    /**
-     * Handles source responses and fires the <code>results</code> event.
-     *
-     * @method _onResponse
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onResponse: function (query, e) {
-        // Ignore stale responses that aren't for the current query.
-        if (query === (this.get(QUERY) || '')) {
-            this._parseResponse(query || '', e.response, e.data);
-        }
-    },
-
-    // -- Protected Default Event Handlers -------------------------------------
-
-    /**
-     * Default <code>clear</code> event handler. Sets the <code>results</code>
-     * property to an empty array and <code>query</code> to null.
-     *
-     * @method _defClearFn
-     * @protected
-     */
-    _defClearFn: function () {
-        this._set(QUERY, null);
-        this._set(RESULTS, []);
-    },
-
-    /**
-     * Default <code>query</code> event handler. Sets the <code>query</code>
-     * property and sends a request to the source if one is configured.
-     *
-     * @method _defQueryFn
-     * @param {EventFacade} e
-     * @protected
-     */
-    _defQueryFn: function (e) {
-        var query = e.query;
-
-        Y.log('query: "' + query + '"; inputValue: "' + e.inputValue + '"', 'info', 'autocomplete-base');
-        this.sendRequest(query); // sendRequest will set the 'query' attribute
-    },
-
-    /**
-     * Default <code>results</code> event handler. Sets the <code>results</code>
-     * property to the latest results.
-     *
-     * @method _defResultsFn
-     * @param {EventFacade} e
-     * @protected
-     */
-    _defResultsFn: function (e) {
-        Y.log('results: ' + Y.dump(e.results), 'info', 'autocomplete-base');
-        this._set(RESULTS, e[RESULTS]);
-    }
-};
-
-Y.AutoCompleteBase = AutoCompleteBase;
-
-
-}, '3.4.1' ,{optional:['autocomplete-sources'], requires:['array-extras', 'base-build', 'escape', 'event-valuechange', 'node-base']});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base-min.js


+ 0 - 1635
hmc/yui-3.4.1/build/autocomplete-base/autocomplete-base.js

@@ -1,1635 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-base', function(Y) {
-
-/**
- * Provides automatic input completion or suggestions for text input fields and
- * textareas.
- *
- * @module autocomplete
- * @main autocomplete
- * @since 3.3.0
- */
-
-/**
- * <code>Y.Base</code> extension that provides core autocomplete logic (but no
- * UI implementation) for a text input field or textarea. Must be mixed into a
- * <code>Y.Base</code>-derived class to be useful.
- *
- * @submodule autocomplete-base
- */
-
-/**
- * <p>
- * Extension that provides core autocomplete logic (but no UI implementation)
- * for a text input field or textarea.
- * </p>
- *
- * <p>
- * The <code>AutoCompleteBase</code> class provides events and attributes that
- * abstract away core autocomplete logic and configuration, but does not provide
- * a widget implementation or suggestion UI. For a prepackaged autocomplete
- * widget, see <code>AutoCompleteList</code>.
- * </p>
- *
- * <p>
- * This extension cannot be instantiated directly, since it doesn't provide an
- * actual implementation. It's intended to be mixed into a
- * <code>Y.Base</code>-based class or widget.
- * </p>
- *
- * <p>
- * <code>Y.Widget</code>-based example:
- * </p>
- *
- * <pre>
- * YUI().use('autocomplete-base', 'widget', function (Y) {
- * &nbsp;&nbsp;var MyAC = Y.Base.create('myAC', Y.Widget, [Y.AutoCompleteBase], {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom prototype methods and properties.
- * &nbsp;&nbsp;}, {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom static methods and properties.
- * &nbsp;&nbsp;});
- * &nbsp;
- * &nbsp;&nbsp;// Custom implementation code.
- * });
- * </pre>
- *
- * <p>
- * <code>Y.Base</code>-based example:
- * </p>
- *
- * <pre>
- * YUI().use('autocomplete-base', function (Y) {
- * &nbsp;&nbsp;var MyAC = Y.Base.create('myAC', Y.Base, [Y.AutoCompleteBase], {
- * &nbsp;&nbsp;&nbsp;&nbsp;initializer: function () {
- * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._bindUIACBase();
- * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._syncUIACBase();
- * &nbsp;&nbsp;&nbsp;&nbsp;},
- * &nbsp;
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom prototype methods and properties.
- * &nbsp;&nbsp;}, {
- * &nbsp;&nbsp;&nbsp;&nbsp;// Custom static methods and properties.
- * &nbsp;&nbsp;});
- * &nbsp;
- * &nbsp;&nbsp;// Custom implementation code.
- * });
- * </pre>
- *
- * @class AutoCompleteBase
- */
-
-var Escape  = Y.Escape,
-    Lang    = Y.Lang,
-    YArray  = Y.Array,
-    YObject = Y.Object,
-
-    isFunction = Lang.isFunction,
-    isString   = Lang.isString,
-    trim       = Lang.trim,
-
-    INVALID_VALUE = Y.Attribute.INVALID_VALUE,
-
-    _FUNCTION_VALIDATOR = '_functionValidator',
-    _SOURCE_SUCCESS     = '_sourceSuccess',
-
-    ALLOW_BROWSER_AC    = 'allowBrowserAutocomplete',
-    INPUT_NODE          = 'inputNode',
-    QUERY               = 'query',
-    QUERY_DELIMITER     = 'queryDelimiter',
-    REQUEST_TEMPLATE    = 'requestTemplate',
-    RESULTS             = 'results',
-    RESULT_LIST_LOCATOR = 'resultListLocator',
-    VALUE               = 'value',
-    VALUE_CHANGE        = 'valueChange',
-
-    EVT_CLEAR   = 'clear',
-    EVT_QUERY   = QUERY,
-    EVT_RESULTS = RESULTS;
-
-function AutoCompleteBase() {
-    // AOP bindings.
-    Y.before(this._bindUIACBase, this, 'bindUI');
-    Y.before(this._destructorACBase, this, 'destructor');
-    Y.before(this._syncUIACBase, this, 'syncUI');
-
-    // -- Public Events --------------------------------------------------------
-
-    /**
-     * Fires after the query has been completely cleared or no longer meets the
-     * minimum query length requirement.
-     *
-     * @event clear
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>prevVal (String)</dt>
-     *   <dd>
-     *     Value of the query before it was cleared.
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defClearFn
-     */
-    this.publish(EVT_CLEAR, {
-        defaultFn: this._defClearFn
-    });
-
-    /**
-     * Fires when the contents of the input field have changed and the input
-     * value meets the criteria necessary to generate an autocomplete query.
-     *
-     * @event query
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>inputValue (String)</dt>
-     *   <dd>
-     *     Full contents of the text input field or textarea that generated
-     *     the query.
-     *   </dd>
-     *
-     *   <dt>query (String)</dt>
-     *   <dd>
-     *     Autocomplete query. This is the string that will be used to
-     *     request completion results. It may or may not be the same as
-     *     <code>inputValue</code>.
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defQueryFn
-     */
-    this.publish(EVT_QUERY, {
-        defaultFn: this._defQueryFn
-    });
-
-    /**
-     * Fires after query results are received from the <code>source</code>. If
-     * no source has been set, this event will not fire.
-     *
-     * @event results
-     * @param {EventFacade} e Event facade with the following additional
-     *   properties:
-     *
-     * <dl>
-     *   <dt>data (Array|Object)</dt>
-     *   <dd>
-     *     Raw, unfiltered result data (if available).
-     *   </dd>
-     *
-     *   <dt>query (String)</dt>
-     *   <dd>
-     *     Query that generated these results.
-     *   </dd>
-     *
-     *   <dt>results (Array)</dt>
-     *   <dd>
-     *     Array of filtered, formatted, and highlighted results. Each item in
-     *     the array is an object with the following properties:
-     *
-     *     <dl>
-     *       <dt>display (Node|HTMLElement|String)</dt>
-     *       <dd>
-     *         Formatted result HTML suitable for display to the user. If no
-     *         custom formatter is set, this will be an HTML-escaped version of
-     *         the string in the <code>text</code> property.
-     *       </dd>
-     *
-     *       <dt>highlighted (String)</dt>
-     *       <dd>
-     *         Highlighted (but not formatted) result text. This property will
-     *         only be set if a highlighter is in use.
-     *       </dd>
-     *
-     *       <dt>raw (mixed)</dt>
-     *       <dd>
-     *         Raw, unformatted result in whatever form it was provided by the
-     *         <code>source</code>.
-     *       </dd>
-     *
-     *       <dt>text (String)</dt>
-     *       <dd>
-     *         Plain text version of the result, suitable for being inserted
-     *         into the value of a text input field or textarea when the result
-     *         is selected by a user. This value is not HTML-escaped and should
-     *         not be inserted into the page using innerHTML.
-     *       </dd>
-     *     </dl>
-     *   </dd>
-     * </dl>
-     *
-     * @preventable _defResultsFn
-     */
-    this.publish(EVT_RESULTS, {
-        defaultFn: this._defResultsFn
-    });
-}
-
-// -- Public Static Properties -------------------------------------------------
-AutoCompleteBase.ATTRS = {
-    /**
-     * Whether or not to enable the browser's built-in autocomplete
-     * functionality for input fields.
-     *
-     * @attribute allowBrowserAutocomplete
-     * @type Boolean
-     * @default false
-     */
-    allowBrowserAutocomplete: {
-        value: false
-    },
-
-    /**
-     * When a <code>queryDelimiter</code> is set, trailing delimiters will
-     * automatically be stripped from the input value by default when the
-     * input node loses focus. Set this to <code>true</code> to allow trailing
-     * delimiters.
-     *
-     * @attribute allowTrailingDelimiter
-     * @type Boolean
-     * @default false
-     */
-    allowTrailingDelimiter: {
-        value: false
-    },
-
-    /**
-     * Node to monitor for changes, which will generate <code>query</code>
-     * events when appropriate. May be either an input field or a textarea.
-     *
-     * @attribute inputNode
-     * @type Node|HTMLElement|String
-     * @writeonce
-     */
-    inputNode: {
-        setter: Y.one,
-        writeOnce: 'initOnly'
-    },
-
-    /**
-     * Maximum number of results to return. A value of <code>0</code> or less
-     * will allow an unlimited number of results.
-     *
-     * @attribute maxResults
-     * @type Number
-     * @default 0
-     */
-    maxResults: {
-        value: 0
-    },
-
-    /**
-     * Minimum number of characters that must be entered before a
-     * <code>query</code> event will be fired. A value of <code>0</code>
-     * allows empty queries; a negative value will effectively disable all
-     * <code>query</code> events.
-     *
-     * @attribute minQueryLength
-     * @type Number
-     * @default 1
-     */
-    minQueryLength: {
-        value: 1
-    },
-
-    /**
-     * <p>
-     * Current query, or <code>null</code> if there is no current query.
-     * </p>
-     *
-     * <p>
-     * The query might not be the same as the current value of the input
-     * node, both for timing reasons (due to <code>queryDelay</code>) and
-     * because when one or more <code>queryDelimiter</code> separators are
-     * in use, only the last portion of the delimited input string will be
-     * used as the query value.
-     * </p>
-     *
-     * @attribute query
-     * @type String|null
-     * @default null
-     * @readonly
-     */
-    query: {
-        readOnly: true,
-        value: null
-    },
-
-    /**
-     * <p>
-     * Number of milliseconds to delay after input before triggering a
-     * <code>query</code> event. If new input occurs before this delay is
-     * over, the previous input event will be ignored and a new delay will
-     * begin.
-     * </p>
-     *
-     * <p>
-     * This can be useful both to throttle queries to a remote data source
-     * and to avoid distracting the user by showing them less relevant
-     * results before they've paused their typing.
-     * </p>
-     *
-     * @attribute queryDelay
-     * @type Number
-     * @default 100
-     */
-    queryDelay: {
-        value: 100
-    },
-
-    /**
-     * Query delimiter string. When a delimiter is configured, the input value
-     * will be split on the delimiter, and only the last portion will be used in
-     * autocomplete queries and updated when the <code>query</code> attribute is
-     * modified.
-     *
-     * @attribute queryDelimiter
-     * @type String|null
-     * @default null
-     */
-    queryDelimiter: {
-        value: null
-    },
-
-    /**
-     * <p>
-     * Source request template. This can be a function that accepts a query as a
-     * parameter and returns a request string, or it can be a string containing
-     * the placeholder "{query}", which will be replaced with the actual
-     * URI-encoded query. In either case, the resulting string will be appended
-     * to the request URL when the <code>source</code> attribute is set to a
-     * remote DataSource, JSONP URL, or XHR URL (it will not be appended to YQL
-     * URLs).
-     * </p>
-     *
-     * <p>
-     * While <code>requestTemplate</code> may be set to either a function or
-     * a string, it will always be returned as a function that accepts a
-     * query argument and returns a string.
-     * </p>
-     *
-     * @attribute requestTemplate
-     * @type Function|String|null
-     * @default null
-     */
-    requestTemplate: {
-        setter: '_setRequestTemplate',
-        value: null
-    },
-
-    /**
-     * <p>
-     * Array of local result filter functions. If provided, each filter
-     * will be called with two arguments when results are received: the query
-     * and an array of result objects. See the documentation for the
-     * <code>results</code> event for a list of the properties available on each
-     * result object.
-     * </p>
-     *
-     * <p>
-     * Each filter is expected to return a filtered or modified version of the
-     * results array, which will then be passed on to subsequent filters, then
-     * the <code>resultHighlighter</code> function (if set), then the
-     * <code>resultFormatter</code> function (if set), and finally to
-     * subscribers to the <code>results</code> event.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, result filters will not be called.
-     * </p>
-     *
-     * <p>
-     * Prepackaged result filters provided by the autocomplete-filters and
-     * autocomplete-filters-accentfold modules can be used by specifying the
-     * filter name as a string, such as <code>'phraseMatch'</code> (assuming
-     * the necessary filters module is loaded).
-     * </p>
-     *
-     * @attribute resultFilters
-     * @type Array
-     * @default []
-     */
-    resultFilters: {
-        setter: '_setResultFilters',
-        value: []
-    },
-
-    /**
-     * <p>
-     * Function which will be used to format results. If provided, this function
-     * will be called with two arguments after results have been received and
-     * filtered: the query and an array of result objects. The formatter is
-     * expected to return an array of HTML strings or Node instances containing
-     * the desired HTML for each result.
-     * </p>
-     *
-     * <p>
-     * See the documentation for the <code>results</code> event for a list of
-     * the properties available on each result object.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, the formatter will not be called.
-     * </p>
-     *
-     * @attribute resultFormatter
-     * @type Function|null
-     */
-    resultFormatter: {
-        validator: _FUNCTION_VALIDATOR
-    },
-
-    /**
-     * <p>
-     * Function which will be used to highlight results. If provided, this
-     * function will be called with two arguments after results have been
-     * received and filtered: the query and an array of filtered result objects.
-     * The highlighter is expected to return an array of highlighted result
-     * text in the form of HTML strings.
-     * </p>
-     *
-     * <p>
-     * See the documentation for the <code>results</code> event for a list of
-     * the properties available on each result object.
-     * </p>
-     *
-     * <p>
-     * If no <code>source</code> is set, the highlighter will not be called.
-     * </p>
-     *
-     * @attribute resultHighlighter
-     * @type Function|null
-     */
-    resultHighlighter: {
-        setter: '_setResultHighlighter'
-    },
-
-    /**
-     * <p>
-     * Locator that should be used to extract an array of results from a
-     * non-array response.
-     * </p>
-     *
-     * <p>
-     * By default, no locator is applied, and all responses are assumed to be
-     * arrays by default. If all responses are already arrays, you don't need to
-     * define a locator.
-     * </p>
-     *
-     * <p>
-     * The locator may be either a function (which will receive the raw response
-     * as an argument and must return an array) or a string representing an
-     * object path, such as "foo.bar.baz" (which would return the value of
-     * <code>result.foo.bar.baz</code> if the response is an object).
-     * </p>
-     *
-     * <p>
-     * While <code>resultListLocator</code> may be set to either a function or a
-     * string, it will always be returned as a function that accepts a response
-     * argument and returns an array.
-     * </p>
-     *
-     * @attribute resultListLocator
-     * @type Function|String|null
-     */
-    resultListLocator: {
-        setter: '_setLocator'
-    },
-
-    /**
-     * Current results, or an empty array if there are no results.
-     *
-     * @attribute results
-     * @type Array
-     * @default []
-     * @readonly
-     */
-    results: {
-        readOnly: true,
-        value: []
-    },
-
-    /**
-     * <p>
-     * Locator that should be used to extract a plain text string from a
-     * non-string result item. The resulting text value will typically be the
-     * value that ends up being inserted into an input field or textarea when
-     * the user of an autocomplete implementation selects a result.
-     * </p>
-     *
-     * <p>
-     * By default, no locator is applied, and all results are assumed to be
-     * plain text strings. If all results are already plain text strings, you
-     * don't need to define a locator.
-     * </p>
-     *
-     * <p>
-     * The locator may be either a function (which will receive the raw result
-     * as an argument and must return a string) or a string representing an
-     * object path, such as "foo.bar.baz" (which would return the value of
-     * <code>result.foo.bar.baz</code> if the result is an object).
-     * </p>
-     *
-     * <p>
-     * While <code>resultTextLocator</code> may be set to either a function or a
-     * string, it will always be returned as a function that accepts a result
-     * argument and returns a string.
-     * </p>
-     *
-     * @attribute resultTextLocator
-     * @type Function|String|null
-     */
-    resultTextLocator: {
-        setter: '_setLocator'
-    },
-
-    /**
-     * <p>
-     * Source for autocomplete results. The following source types are
-     * supported:
-     * </p>
-     *
-     * <dl>
-     *   <dt>Array</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>['first result', 'second result', 'etc']</code>
-     *     </p>
-     *
-     *     <p>
-     *     The full array will be provided to any configured filters for each
-     *     query. This is an easy way to create a fully client-side autocomplete
-     *     implementation.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>DataSource</dt>
-     *   <dd>
-     *     <p>
-     *     A <code>DataSource</code> instance or other object that provides a
-     *     DataSource-like <code>sendRequest</code> method. See the
-     *     <code>DataSource</code> documentation for details.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>Function</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example (synchronous):</i> <code>function (query) { return ['foo', 'bar']; }</code><br>
-           <i>Example (async):</i> <code>function (query, callback) { callback(['foo', 'bar']); }</code>
-     *     </p>
-     *
-     *     <p>
-     *     A function source will be called with the current query and a
-     *     callback function as parameters, and should either return an array of
-     *     results (for synchronous operation) or return nothing and pass an
-     *     array of results to the provided callback (for asynchronous
-     *     operation).
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>Object</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>{foo: ['foo result 1', 'foo result 2'], bar: ['bar result']}</code>
-     *     </p>
-     *
-     *     <p>
-     *     An object will be treated as a query hashmap. If a property on the
-     *     object matches the current query, the value of that property will be
-     *     used as the response.
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be an array of results by default. If the
-     *     response is not an array, provide a <code>resultListLocator</code> to
-     *     process the response and return an array.
-     *     </p>
-     *   </dd>
-     * </dl>
-     *
-     * <p>
-     * If the optional <code>autocomplete-sources</code> module is loaded, then
-     * the following additional source types will be supported as well:
-     * </p>
-     *
-     * <dl>
-     *   <dt>&lt;select&gt; Node</dt>
-     *   <dd>
-     *     <p>
-     *     You may provide a YUI Node instance wrapping a &lt;select&gt;
-     *     element, and the options in the list will be used as results. You
-     *     will also need to specify a <code>resultTextLocator</code> of 'text'
-     *     or 'value', depending on what you want to use as the text of the
-     *     result.
-     *     </p>
-     *
-     *     <p>
-     *     Each result will be an object with the following properties:
-     *     </p>
-     *
-     *     <dl>
-     *       <dt>html (String)</dt>
-     *       <dd>
-     *         <p>HTML content of the &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>index (Number)</dt>
-     *       <dd>
-     *         <p>Index of the &lt;option&gt; element in the list.</p>
-     *       </dd>
-     *
-     *       <dt>node (Y.Node)</dt>
-     *       <dd>
-     *         <p>Node instance referring to the original &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>selected (Boolean)</dt>
-     *       <dd>
-     *         <p>Whether or not this item is currently selected in the
-     *         &lt;select&gt; list.</p>
-     *       </dd>
-     *
-     *       <dt>text (String)</dt>
-     *       <dd>
-     *         <p>Text content of the &lt;option&gt; element.</p>
-     *       </dd>
-     *
-     *       <dt>value (String)</dt>
-     *       <dd>
-     *         <p>Value of the &lt;option&gt; element.</p>
-     *       </dd>
-     *     </dl>
-     *   </dd>
-     *
-     *   <dt>String (JSONP URL)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'http://example.com/search?q={query}&callback={callback}'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a URL with a <code>{callback}</code> placeholder is provided, it
-     *     will be used to make a JSONP request. The <code>{query}</code>
-     *     placeholder will be replaced with the current query, and the
-     *     <code>{callback}</code> placeholder will be replaced with an
-     *     internally-generated JSONP callback name. Both placeholders must
-     *     appear in the URL, or the request will fail. An optional
-     *     <code>{maxResults}</code> placeholder may also be provided, and will
-     *     be replaced with the value of the maxResults attribute (or 1000 if
-     *     the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be an array of results by default. If the
-     *     response is not an array, provide a <code>resultListLocator</code> to
-     *     process the response and return an array.
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>jsonp</code> module must be loaded in order for
-     *     JSONP URL sources to work.</strong> If the <code>jsonp</code> module
-     *     is not already loaded, it will be loaded on demand if possible.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>String (XHR URL)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'http://example.com/search?q={query}'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a URL without a <code>{callback}</code> placeholder is provided,
-     *     it will be used to make a same-origin XHR request. The
-     *     <code>{query}</code> placeholder will be replaced with the current
-     *     query. An optional <code>{maxResults}</code> placeholder may also be
-     *     provided, and will be replaced with the value of the maxResults
-     *     attribute (or 1000 if the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     The response is assumed to be a JSON array of results by default. If
-     *     the response is a JSON object and not an array, provide a
-     *     <code>resultListLocator</code> to process the response and return an
-     *     array. If the response is in some form other than JSON, you will
-     *     need to use a custom DataSource instance as the source.
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>io-base</code> and <code>json-parse</code> modules
-     *     must be loaded in order for XHR URL sources to work.</strong> If
-     *     these modules are not already loaded, they will be loaded on demand
-     *     if possible.
-     *     </p>
-     *   </dd>
-     *
-     *   <dt>String (YQL query)</dt>
-     *   <dd>
-     *     <p>
-     *     <i>Example:</i> <code>'select * from search.suggest where query="{query}"'</code>
-     *     </p>
-     *
-     *     <p>
-     *     If a YQL query is provided, it will be used to make a YQL request.
-     *     The <code>{query}</code> placeholder will be replaced with the
-     *     current autocomplete query. This placeholder must appear in the YQL
-     *     query, or the request will fail. An optional
-     *     <code>{maxResults}</code> placeholder may also be provided, and will
-     *     be replaced with the value of the maxResults attribute (or 1000 if
-     *     the maxResults attribute is 0 or less).
-     *     </p>
-     *
-     *     <p>
-     *     <strong>The <code>yql</code> module must be loaded in order for YQL
-     *     sources to work.</strong> If the <code>yql</code> module is not
-     *     already loaded, it will be loaded on demand if possible.
-     *     </p>
-     *   </dd>
-     * </dl>
-     *
-     * <p>
-     * As an alternative to providing a source, you could simply listen for
-     * <code>query</code> events and handle them any way you see fit. Providing
-     * a source is optional, but will usually be simpler.
-     * </p>
-     *
-     * @attribute source
-     * @type Array|DataSource|Function|Node|Object|String|null
-     */
-    source: {
-        setter: '_setSource'
-    },
-
-    /**
-     * <p>
-     * May be used to force a specific source type, overriding the automatic
-     * source type detection. It should almost never be necessary to do this,
-     * but as they taught us in the Boy Scouts, one should always be prepared,
-     * so it's here if you need it. Be warned that if you set this attribute and
-     * something breaks, it's your own fault.
-     * </p>
-     *
-     * <p>
-     * Supported <code>sourceType</code> values are: 'array', 'datasource',
-     * 'function', and 'object'.
-     * </p>
-     *
-     * <p>
-     * If the <code>autocomplete-sources</code> module is loaded, the following
-     * additional source types are supported: 'io', 'jsonp', 'select',
-     * 'string', 'yql'
-     * </p>
-     *
-     * @attribute sourceType
-     * @type String
-     */
-    sourceType: {
-        value: null
-    },
-
-    /**
-     * If the <code>inputNode</code> specified at instantiation time has a
-     * <code>node-tokeninput</code> plugin attached to it, this attribute will
-     * be a reference to the <code>Y.Plugin.TokenInput</code> instance.
-     *
-     * @attribute tokenInput
-     * @type Plugin.TokenInput
-     * @readonly
-     */
-    tokenInput: {
-        readOnly: true
-    },
-
-    /**
-     * Current value of the input node.
-     *
-     * @attribute value
-     * @type String
-     * @default ''
-     */
-    value: {
-        // Why duplicate this._inputNode.get('value')? Because we need a
-        // reliable way to track the source of value changes. We want to perform
-        // completion when the user changes the value, but not when we change
-        // the value.
-        value: ''
-    }
-};
-
-AutoCompleteBase.CSS_PREFIX = 'ac';
-AutoCompleteBase.UI_SRC = (Y.Widget && Y.Widget.UI_SRC) || 'ui';
-
-/**
- * Mapping of built-in source types to their setter functions. DataSource
- * instances and DataSource-like objects are handled natively, so are not
- * mapped here.
- *
- * @property SOURCE_TYPES
- * @type {Object}
- * @static
- */
-AutoCompleteBase.SOURCE_TYPES = {
-    array     : '_createArraySource',
-    'function': '_createFunctionSource',
-    object    : '_createObjectSource'
-};
-
-AutoCompleteBase.prototype = {
-    // -- Public Prototype Methods ---------------------------------------------
-
-    /**
-     * <p>
-     * Sends a request to the configured source. If no source is configured,
-     * this method won't do anything.
-     * </p>
-     *
-     * <p>
-     * Usually there's no reason to call this method manually; it will be
-     * called automatically when user input causes a <code>query</code> event to
-     * be fired. The only time you'll need to call this method manually is if
-     * you want to force a request to be sent when no user input has occurred.
-     * </p>
-     *
-     * @method sendRequest
-     * @param {String} query (optional) Query to send. If specified, the
-     *   <code>query</code> attribute will be set to this query. If not
-     *   specified, the current value of the <code>query</code> attribute will
-     *   be used.
-     * @param {Function} requestTemplate (optional) Request template function.
-     *   If not specified, the current value of the <code>requestTemplate</code>
-     *   attribute will be used.
-     * @chainable
-     */
-    sendRequest: function (query, requestTemplate) {
-        var request,
-            source = this.get('source');
-
-        if (query || query === '') {
-            this._set(QUERY, query);
-        } else {
-            query = this.get(QUERY) || '';
-        }
-
-        if (source) {
-            if (!requestTemplate) {
-                requestTemplate = this.get(REQUEST_TEMPLATE);
-            }
-
-            request = requestTemplate ?
-                requestTemplate.call(this, query) : query;
-
-
-            source.sendRequest({
-                query  : query,
-                request: request,
-
-                callback: {
-                    success: Y.bind(this._onResponse, this, query)
-                }
-            });
-        }
-
-        return this;
-    },
-
-    // -- Protected Lifecycle Methods ------------------------------------------
-
-    /**
-     * Attaches event listeners and behaviors.
-     *
-     * @method _bindUIACBase
-     * @protected
-     */
-    _bindUIACBase: function () {
-        var inputNode  = this.get(INPUT_NODE),
-            tokenInput = inputNode && inputNode.tokenInput;
-
-        // If the inputNode has a node-tokeninput plugin attached, bind to the
-        // plugin's inputNode instead.
-        if (tokenInput) {
-            inputNode = tokenInput.get(INPUT_NODE);
-            this._set('tokenInput', tokenInput);
-        }
-
-        if (!inputNode) {
-            Y.error('No inputNode specified.');
-            return;
-        }
-
-        this._inputNode = inputNode;
-
-        this._acBaseEvents = new Y.EventHandle([
-            // This is the valueChange event on the inputNode, provided by the
-            // event-valuechange module, not our own valueChange.
-            inputNode.on(VALUE_CHANGE, this._onInputValueChange, this),
-            inputNode.on('blur', this._onInputBlur, this),
-
-            this.after(ALLOW_BROWSER_AC + 'Change', this._syncBrowserAutocomplete),
-            this.after('sourceTypeChange', this._afterSourceTypeChange),
-            this.after(VALUE_CHANGE, this._afterValueChange)
-        ]);
-    },
-
-    /**
-     * Detaches AutoCompleteBase event listeners.
-     *
-     * @method _destructorACBase
-     * @protected
-     */
-    _destructorACBase: function () {
-        this._acBaseEvents.detach();
-    },
-
-    /**
-     * Synchronizes the UI state of the <code>inputNode</code>.
-     *
-     * @method _syncUIACBase
-     * @protected
-     */
-    _syncUIACBase: function () {
-        this._syncBrowserAutocomplete();
-        this.set(VALUE, this.get(INPUT_NODE).get(VALUE));
-    },
-
-    // -- Protected Prototype Methods ------------------------------------------
-
-    /**
-     * Creates a DataSource-like object that simply returns the specified array
-     * as a response. See the <code>source</code> attribute for more details.
-     *
-     * @method _createArraySource
-     * @param {Array} source
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createArraySource: function (source) {
-        var that = this;
-
-        return {
-            type: 'array',
-            sendRequest: function (request) {
-                that[_SOURCE_SUCCESS](source.concat(), request);
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that passes the query to a
-     * custom-defined function, which is expected to call the provided callback
-     * with an array of results. See the <code>source</code> attribute for more
-     * details.
-     *
-     * @method _createFunctionSource
-     * @param {Function} source Function that accepts a query and a callback as
-     *   parameters, and calls the callback with an array of results.
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createFunctionSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'function',
-            sendRequest: function (request) {
-                var value;
-
-                function afterResults(results) {
-                    that[_SOURCE_SUCCESS](results || [], request);
-                }
-
-                // Allow both synchronous and asynchronous functions. If we get
-                // a truthy return value, assume the function is synchronous.
-                if ((value = source(request.query, afterResults))) {
-                    afterResults(value);
-                }
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that looks up queries as properties on
-     * the specified object, and returns the found value (if any) as a response.
-     * See the <code>source</code> attribute for more details.
-     *
-     * @method _createObjectSource
-     * @param {Object} source
-     * @return {Object} DataSource-like object.
-     * @protected
-     */
-    _createObjectSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'object',
-            sendRequest: function (request) {
-                var query = request.query;
-
-                that[_SOURCE_SUCCESS](
-                    YObject.owns(source, query) ? source[query] : [],
-                    request
-                );
-            }
-        };
-    },
-
-    /**
-     * Returns <code>true</code> if <i>value</i> is either a function or
-     * <code>null</code>.
-     *
-     * @method _functionValidator
-     * @param {Function|null} value Value to validate.
-     * @protected
-     */
-    _functionValidator: function (value) {
-        return value === null || isFunction(value);
-    },
-
-    /**
-     * Faster and safer alternative to Y.Object.getValue(). Doesn't bother
-     * casting the path to an array (since we already know it's an array) and
-     * doesn't throw an error if a value in the middle of the object hierarchy
-     * is neither <code>undefined</code> nor an object.
-     *
-     * @method _getObjectValue
-     * @param {Object} obj
-     * @param {Array} path
-     * @return {mixed} Located value, or <code>undefined</code> if the value was
-     *   not found at the specified path.
-     * @protected
-     */
-    _getObjectValue: function (obj, path) {
-        if (!obj) {
-            return;
-        }
-
-        for (var i = 0, len = path.length; obj && i < len; i++) {
-            obj = obj[path[i]];
-        }
-
-        return obj;
-    },
-
-    /**
-     * Parses result responses, performs filtering and highlighting, and fires
-     * the <code>results</code> event.
-     *
-     * @method _parseResponse
-     * @param {String} query Query that generated these results.
-     * @param {Object} response Response containing results.
-     * @param {Object} data Raw response data.
-     * @protected
-     */
-    _parseResponse: function (query, response, data) {
-        var facade = {
-                data   : data,
-                query  : query,
-                results: []
-            },
-
-            listLocator = this.get(RESULT_LIST_LOCATOR),
-            results     = [],
-            unfiltered  = response && response.results,
-
-            filters,
-            formatted,
-            formatter,
-            highlighted,
-            highlighter,
-            i,
-            len,
-            maxResults,
-            result,
-            text,
-            textLocator;
-
-        if (unfiltered && listLocator) {
-            unfiltered = listLocator.call(this, unfiltered);
-        }
-
-        if (unfiltered && unfiltered.length) {
-            filters     = this.get('resultFilters');
-            textLocator = this.get('resultTextLocator');
-
-            // Create a lightweight result object for each result to make them
-            // easier to work with. The various properties on the object
-            // represent different formats of the result, and will be populated
-            // as we go.
-            for (i = 0, len = unfiltered.length; i < len; ++i) {
-                result = unfiltered[i];
-
-                text = textLocator ?
-                        textLocator.call(this, result) :
-                        result.toString();
-
-                results.push({
-                    display: Escape.html(text),
-                    raw    : result,
-                    text   : text
-                });
-            }
-
-            // Run the results through all configured result filters. Each
-            // filter returns an array of (potentially fewer) result objects,
-            // which is then passed to the next filter, and so on.
-            for (i = 0, len = filters.length; i < len; ++i) {
-                results = filters[i].call(this, query, results.concat());
-
-                if (!results) {
-                    return;
-                }
-
-                if (!results.length) {
-                    break;
-                }
-            }
-
-            if (results.length) {
-                formatter   = this.get('resultFormatter');
-                highlighter = this.get('resultHighlighter');
-                maxResults  = this.get('maxResults');
-
-                // If maxResults is set and greater than 0, limit the number of
-                // results.
-                if (maxResults && maxResults > 0 &&
-                        results.length > maxResults) {
-                    results.length = maxResults;
-                }
-
-                // Run the results through the configured highlighter (if any).
-                // The highlighter returns an array of highlighted strings (not
-                // an array of result objects), and these strings are then added
-                // to each result object.
-                if (highlighter) {
-                    highlighted = highlighter.call(this, query,
-                            results.concat());
-
-                    if (!highlighted) {
-                        return;
-                    }
-
-                    for (i = 0, len = highlighted.length; i < len; ++i) {
-                        result = results[i];
-                        result.highlighted = highlighted[i];
-                        result.display     = result.highlighted;
-                    }
-                }
-
-                // Run the results through the configured formatter (if any) to
-                // produce the final formatted results. The formatter returns an
-                // array of strings or Node instances (not an array of result
-                // objects), and these strings/Nodes are then added to each
-                // result object.
-                if (formatter) {
-                    formatted = formatter.call(this, query, results.concat());
-
-                    if (!formatted) {
-                        return;
-                    }
-
-                    for (i = 0, len = formatted.length; i < len; ++i) {
-                        results[i].display = formatted[i];
-                    }
-                }
-            }
-        }
-
-        facade.results = results;
-        this.fire(EVT_RESULTS, facade);
-    },
-
-    /**
-     * <p>
-     * Returns the query portion of the specified input value, or
-     * <code>null</code> if there is no suitable query within the input value.
-     * </p>
-     *
-     * <p>
-     * If a query delimiter is defined, the query will be the last delimited
-     * part of of the string.
-     * </p>
-     *
-     * @method _parseValue
-     * @param {String} value Input value from which to extract the query.
-     * @return {String|null} query
-     * @protected
-     */
-    _parseValue: function (value) {
-        var delim = this.get(QUERY_DELIMITER);
-
-        if (delim) {
-            value = value.split(delim);
-            value = value[value.length - 1];
-        }
-
-        return Lang.trimLeft(value);
-    },
-
-    /**
-     * Setter for locator attributes.
-     *
-     * @method _setLocator
-     * @param {Function|String|null} locator
-     * @return {Function|null}
-     * @protected
-     */
-    _setLocator: function (locator) {
-        if (this[_FUNCTION_VALIDATOR](locator)) {
-            return locator;
-        }
-
-        var that = this;
-
-        locator = locator.toString().split('.');
-
-        return function (result) {
-            return result && that._getObjectValue(result, locator);
-        };
-    },
-
-    /**
-     * Setter for the <code>requestTemplate</code> attribute.
-     *
-     * @method _setRequestTemplate
-     * @param {Function|String|null} template
-     * @return {Function|null}
-     * @protected
-     */
-    _setRequestTemplate: function (template) {
-        if (this[_FUNCTION_VALIDATOR](template)) {
-            return template;
-        }
-
-        template = template.toString();
-
-        return function (query) {
-            return Lang.sub(template, {query: encodeURIComponent(query)});
-        };
-    },
-
-    /**
-     * Setter for the <code>resultFilters</code> attribute.
-     *
-     * @method _setResultFilters
-     * @param {Array|Function|String|null} filters <code>null</code>, a filter
-     *   function, an array of filter functions, or a string or array of strings
-     *   representing the names of methods on
-     *   <code>Y.AutoCompleteFilters</code>.
-     * @return {Array} Array of filter functions (empty if <i>filters</i> is
-     *   <code>null</code>).
-     * @protected
-     */
-    _setResultFilters: function (filters) {
-        var acFilters, getFilterFunction;
-
-        if (filters === null) {
-            return [];
-        }
-
-        acFilters = Y.AutoCompleteFilters;
-
-        getFilterFunction = function (filter) {
-            if (isFunction(filter)) {
-                return filter;
-            }
-
-            if (isString(filter) && acFilters &&
-                    isFunction(acFilters[filter])) {
-                return acFilters[filter];
-            }
-
-            return false;
-        };
-
-        if (Lang.isArray(filters)) {
-            filters = YArray.map(filters, getFilterFunction);
-            return YArray.every(filters, function (f) { return !!f; }) ?
-                    filters : INVALID_VALUE;
-        } else {
-            filters = getFilterFunction(filters);
-            return filters ? [filters] : INVALID_VALUE;
-        }
-    },
-
-    /**
-     * Setter for the <code>resultHighlighter</code> attribute.
-     *
-     * @method _setResultHighlighter
-     * @param {Function|String|null} highlighter <code>null</code>, a
-     *   highlighter function, or a string representing the name of a method on
-     *   <code>Y.AutoCompleteHighlighters</code>.
-     * @return {Function|null}
-     * @protected
-     */
-    _setResultHighlighter: function (highlighter) {
-        var acHighlighters;
-
-        if (this._functionValidator(highlighter)) {
-            return highlighter;
-        }
-
-        acHighlighters = Y.AutoCompleteHighlighters;
-
-        if (isString(highlighter) && acHighlighters &&
-                isFunction(acHighlighters[highlighter])) {
-            return acHighlighters[highlighter];
-        }
-
-        return INVALID_VALUE;
-    },
-
-    /**
-     * Setter for the <code>source</code> attribute. Returns a DataSource or
-     * a DataSource-like object depending on the type of <i>source</i> and/or
-     * the value of the <code>sourceType</code> attribute.
-     *
-     * @method _setSource
-     * @param {mixed} source AutoComplete source. See the <code>source</code>
-     *   attribute for details.
-     * @return {DataSource|Object}
-     * @protected
-     */
-    _setSource: function (source) {
-        var sourceType = this.get('sourceType') || Lang.type(source),
-            sourceSetter;
-
-        if ((source && isFunction(source.sendRequest))
-                || source === null
-                || sourceType === 'datasource') {
-
-            // Quacks like a DataSource instance (or null). Make it so!
-            this._rawSource = source;
-            return source;
-        }
-
-        // See if there's a registered setter for this source type.
-        if ((sourceSetter = AutoCompleteBase.SOURCE_TYPES[sourceType])) {
-            this._rawSource = source;
-            return Lang.isString(sourceSetter) ?
-                    this[sourceSetter](source) : sourceSetter(source);
-        }
-
-        Y.error("Unsupported source type '" + sourceType + "'. Maybe autocomplete-sources isn't loaded?");
-        return INVALID_VALUE;
-    },
-
-    /**
-     * Shared success callback for non-DataSource sources.
-     *
-     * @method _sourceSuccess
-     * @param {mixed} data Response data.
-     * @param {Object} request Request object.
-     * @protected
-     */
-    _sourceSuccess: function (data, request) {
-        request.callback.success({
-            data: data,
-            response: {results: data}
-        });
-    },
-
-    /**
-     * Synchronizes the UI state of the <code>allowBrowserAutocomplete</code>
-     * attribute.
-     *
-     * @method _syncBrowserAutocomplete
-     * @protected
-     */
-    _syncBrowserAutocomplete: function () {
-        var inputNode = this.get(INPUT_NODE);
-
-        if (inputNode.get('nodeName').toLowerCase() === 'input') {
-            inputNode.setAttribute('autocomplete',
-                    this.get(ALLOW_BROWSER_AC) ? 'on' : 'off');
-        }
-    },
-
-    /**
-     * <p>
-     * Updates the query portion of the <code>value</code> attribute.
-     * </p>
-     *
-     * <p>
-     * If a query delimiter is defined, the last delimited portion of the input
-     * value will be replaced with the specified <i>value</i>.
-     * </p>
-     *
-     * @method _updateValue
-     * @param {String} newVal New value.
-     * @protected
-     */
-    _updateValue: function (newVal) {
-        var delim = this.get(QUERY_DELIMITER),
-            insertDelim,
-            len,
-            prevVal;
-
-        newVal = Lang.trimLeft(newVal);
-
-        if (delim) {
-            insertDelim = trim(delim); // so we don't double up on spaces
-            prevVal     = YArray.map(trim(this.get(VALUE)).split(delim), trim);
-            len         = prevVal.length;
-
-            if (len > 1) {
-                prevVal[len - 1] = newVal;
-                newVal = prevVal.join(insertDelim + ' ');
-            }
-
-            newVal = newVal + insertDelim + ' ';
-        }
-
-        this.set(VALUE, newVal);
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Updates the current <code>source</code> based on the new
-     * <code>sourceType</code> to ensure that the two attributes don't get out
-     * of sync when they're changed separately.
-     *
-     * @method _afterSourceTypeChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterSourceTypeChange: function (e) {
-        if (this._rawSource) {
-            this.set('source', this._rawSource);
-        }
-    },
-
-    /**
-     * Handles change events for the <code>value</code> attribute.
-     *
-     * @method _afterValueChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterValueChange: function (e) {
-        var delay,
-            fire,
-            minQueryLength,
-            newVal = e.newVal,
-            query,
-            that;
-
-        // Don't query on value changes that didn't come from the user.
-        if (e.src !== AutoCompleteBase.UI_SRC) {
-            this._inputNode.set(VALUE, newVal);
-            return;
-        }
-
-
-        minQueryLength = this.get('minQueryLength');
-        query          = this._parseValue(newVal) || '';
-
-        if (minQueryLength >= 0 && query.length >= minQueryLength) {
-            delay = this.get('queryDelay');
-            that  = this;
-
-            fire = function () {
-                that.fire(EVT_QUERY, {
-                    inputValue: newVal,
-                    query     : query
-                });
-            };
-
-            if (delay) {
-                clearTimeout(this._delay);
-                this._delay = setTimeout(fire, delay);
-            } else {
-                fire();
-            }
-        } else {
-            clearTimeout(this._delay);
-
-            this.fire(EVT_CLEAR, {
-                prevVal: e.prevVal ? this._parseValue(e.prevVal) : null
-            });
-        }
-    },
-
-    /**
-     * Handles <code>blur</code> events on the input node.
-     *
-     * @method _onInputBlur
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onInputBlur: function (e) {
-        var delim = this.get(QUERY_DELIMITER),
-            delimPos,
-            newVal,
-            value;
-
-        // If a query delimiter is set and the input's value contains one or
-        // more trailing delimiters, strip them.
-        if (delim && !this.get('allowTrailingDelimiter')) {
-            delim = Lang.trimRight(delim);
-            value = newVal = this._inputNode.get(VALUE);
-
-            if (delim) {
-                while ((newVal = Lang.trimRight(newVal)) &&
-                        (delimPos = newVal.length - delim.length) &&
-                        newVal.lastIndexOf(delim) === delimPos) {
-
-                    newVal = newVal.substring(0, delimPos);
-                }
-            } else {
-                // Delimiter is one or more space characters, so just trim the
-                // value.
-                newVal = Lang.trimRight(newVal);
-            }
-
-            if (newVal !== value) {
-                this.set(VALUE, newVal);
-            }
-        }
-    },
-
-    /**
-     * Handles <code>valueChange</code> events on the input node and fires a
-     * <code>query</code> event when the input value meets the configured
-     * criteria.
-     *
-     * @method _onInputValueChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onInputValueChange: function (e) {
-        var newVal = e.newVal;
-
-        // Don't query if the internal value is the same as the new value
-        // reported by valueChange.
-        if (newVal === this.get(VALUE)) {
-            return;
-        }
-
-        this.set(VALUE, newVal, {src: AutoCompleteBase.UI_SRC});
-    },
-
-    /**
-     * Handles source responses and fires the <code>results</code> event.
-     *
-     * @method _onResponse
-     * @param {EventFacade} e
-     * @protected
-     */
-    _onResponse: function (query, e) {
-        // Ignore stale responses that aren't for the current query.
-        if (query === (this.get(QUERY) || '')) {
-            this._parseResponse(query || '', e.response, e.data);
-        }
-    },
-
-    // -- Protected Default Event Handlers -------------------------------------
-
-    /**
-     * Default <code>clear</code> event handler. Sets the <code>results</code>
-     * property to an empty array and <code>query</code> to null.
-     *
-     * @method _defClearFn
-     * @protected
-     */
-    _defClearFn: function () {
-        this._set(QUERY, null);
-        this._set(RESULTS, []);
-    },
-
-    /**
-     * Default <code>query</code> event handler. Sets the <code>query</code>
-     * property and sends a request to the source if one is configured.
-     *
-     * @method _defQueryFn
-     * @param {EventFacade} e
-     * @protected
-     */
-    _defQueryFn: function (e) {
-        var query = e.query;
-
-        this.sendRequest(query); // sendRequest will set the 'query' attribute
-    },
-
-    /**
-     * Default <code>results</code> event handler. Sets the <code>results</code>
-     * property to the latest results.
-     *
-     * @method _defResultsFn
-     * @param {EventFacade} e
-     * @protected
-     */
-    _defResultsFn: function (e) {
-        this._set(RESULTS, e[RESULTS]);
-    }
-};
-
-Y.AutoCompleteBase = AutoCompleteBase;
-
-
-}, '3.4.1' ,{optional:['autocomplete-sources'], requires:['array-extras', 'base-build', 'escape', 'event-valuechange', 'node-base']});

+ 0 - 147
hmc/yui-3.4.1/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold-debug.js

@@ -1,147 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-filters-accentfold', function(Y) {
-
-/**
- * <p>
- * Provides pre-built accent-folding result matching filters for AutoComplete.
- * </p>
- *
- * <p>
- * These filters are similar to the ones provided by the
- * <code>autocomplete-filters</code> module, but use accent-aware comparisons.
- * For example, "resume" and "résumé" will be considered equal when using the
- * accent-folding filters.
- * </p>
- *
- * @module autocomplete
- * @submodule autocomplete-filters-accentfold
- */
-
-/**
- * @class AutoCompleteFilters
- * @static
- */
-
-var AccentFold = Y.Text.AccentFold,
-    WordBreak  = Y.Text.WordBreak,
-    YArray     = Y.Array,
-    YObject    = Y.Object;
-
-Y.mix(Y.namespace('AutoCompleteFilters'), {
-    /**
-     * Accent folding version of <code>charMatch()</code>.
-     *
-     * @method charMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryChars = YArray.unique(AccentFold.fold(query).split(''));
-
-        return YArray.filter(results, function (result) {
-            var text = AccentFold.fold(result.text);
-
-            return YArray.every(queryChars, function (chr) {
-                return text.indexOf(chr) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Accent folding version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        query = AccentFold.fold(query);
-
-        return YArray.filter(results, function (result) {
-            return AccentFold.fold(result.text).indexOf(query) !== -1;
-        });
-    },
-
-    /**
-     * Accent folding version of <code>startsWith()</code>.
-     *
-     * @method startsWithFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWithFold: function (query, results) {
-        if (!query) { return results; }
-
-        query = AccentFold.fold(query);
-
-        return YArray.filter(results, function (result) {
-            return AccentFold.fold(result.text).indexOf(query) === 0;
-        });
-    },
-
-    /**
-     * Accent folding version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
-
-        return YArray.filter(results, function (result) {
-            var resultText = AccentFold.fold(result.text);
-
-            return YArray.every(queryWords, function (queryWord) {
-                return resultText.indexOf(queryWord) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Accent folding version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
-
-        return YArray.filter(results, function (result) {
-            // Convert resultWords array to a hash for fast lookup.
-            var resultWords = YArray.hash(WordBreak.getUniqueWords(
-                    AccentFold.fold(result.text)));
-
-            return YArray.every(queryWords, function (word) {
-                return YObject.owns(resultWords, word);
-            });
-        });
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'text-accentfold', 'text-wordbreak']});

+ 0 - 147
hmc/yui-3.4.1/build/autocomplete-filters-accentfold/autocomplete-filters-accentfold.js

@@ -1,147 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-filters-accentfold', function(Y) {
-
-/**
- * <p>
- * Provides pre-built accent-folding result matching filters for AutoComplete.
- * </p>
- *
- * <p>
- * These filters are similar to the ones provided by the
- * <code>autocomplete-filters</code> module, but use accent-aware comparisons.
- * For example, "resume" and "résumé" will be considered equal when using the
- * accent-folding filters.
- * </p>
- *
- * @module autocomplete
- * @submodule autocomplete-filters-accentfold
- */
-
-/**
- * @class AutoCompleteFilters
- * @static
- */
-
-var AccentFold = Y.Text.AccentFold,
-    WordBreak  = Y.Text.WordBreak,
-    YArray     = Y.Array,
-    YObject    = Y.Object;
-
-Y.mix(Y.namespace('AutoCompleteFilters'), {
-    /**
-     * Accent folding version of <code>charMatch()</code>.
-     *
-     * @method charMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryChars = YArray.unique(AccentFold.fold(query).split(''));
-
-        return YArray.filter(results, function (result) {
-            var text = AccentFold.fold(result.text);
-
-            return YArray.every(queryChars, function (chr) {
-                return text.indexOf(chr) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Accent folding version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        query = AccentFold.fold(query);
-
-        return YArray.filter(results, function (result) {
-            return AccentFold.fold(result.text).indexOf(query) !== -1;
-        });
-    },
-
-    /**
-     * Accent folding version of <code>startsWith()</code>.
-     *
-     * @method startsWithFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWithFold: function (query, results) {
-        if (!query) { return results; }
-
-        query = AccentFold.fold(query);
-
-        return YArray.filter(results, function (result) {
-            return AccentFold.fold(result.text).indexOf(query) === 0;
-        });
-    },
-
-    /**
-     * Accent folding version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
-
-        return YArray.filter(results, function (result) {
-            var resultText = AccentFold.fold(result.text);
-
-            return YArray.every(queryWords, function (queryWord) {
-                return resultText.indexOf(queryWord) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Accent folding version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatchFold: function (query, results) {
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
-
-        return YArray.filter(results, function (result) {
-            // Convert resultWords array to a hash for fast lookup.
-            var resultWords = YArray.hash(WordBreak.getUniqueWords(
-                    AccentFold.fold(result.text)));
-
-            return YArray.every(queryWords, function (word) {
-                return YObject.owns(resultWords, word);
-            });
-        });
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'text-accentfold', 'text-wordbreak']});

+ 0 - 245
hmc/yui-3.4.1/build/autocomplete-filters/autocomplete-filters-debug.js

@@ -1,245 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-filters', function(Y) {
-
-/**
- * Provides pre-built result matching filters for AutoComplete.
- *
- * @module autocomplete
- * @submodule autocomplete-filters
- * @class AutoCompleteFilters
- * @static
- */
-
-var YArray     = Y.Array,
-    YObject    = Y.Object,
-    WordBreak  = Y.Text.WordBreak,
-
-Filters = Y.mix(Y.namespace('AutoCompleteFilters'), {
-    // -- Public Methods -------------------------------------------------------
-
-    /**
-     * Returns an array of results that contain all of the characters in the
-     * query, in any order (not necessarily consecutive). Case-insensitive.
-     *
-     * @method charMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // charMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var queryChars = YArray.unique((caseSensitive ? query :
-                query.toLowerCase()).split(''));
-
-        return YArray.filter(results, function (result) {
-            result = result.text;
-
-            if (!caseSensitive) {
-                result = result.toLowerCase();
-            }
-
-            return YArray.every(queryChars, function (chr) {
-                return result.indexOf(chr) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>charMatch()</code>.
-     *
-     * @method charMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatchCase: function (query, results) {
-        return Filters.charMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that contain the complete query as a phrase.
-     * Case-insensitive.
-     *
-     * @method phraseMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // phraseMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        if (!caseSensitive) {
-            query = query.toLowerCase();
-        }
-
-        return YArray.filter(results, function (result) {
-            return (caseSensitive ? result.text : result.text.toLowerCase()).indexOf(query) !== -1;
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatchCase: function (query, results) {
-        return Filters.phraseMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that start with the complete query as a
-     * phrase. Case-insensitive.
-     *
-     * @method startsWith
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWith: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // startsWithCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        if (!caseSensitive) {
-            query = query.toLowerCase();
-        }
-
-        return YArray.filter(results, function (result) {
-            return (caseSensitive ? result.text : result.text.toLowerCase()).indexOf(query) === 0;
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>startsWith()</code>.
-     *
-     * @method startsWithCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWithCase: function (query, results) {
-        return Filters.startsWith(query, results, true);
-    },
-
-    /**
-     * Returns an array of results in which all the words of the query match
-     * either whole words or parts of words in the result. Non-word characters
-     * like whitespace and certain punctuation are ignored. Case-insensitive.
-     *
-     * This is basically a combination of <code>wordMatch()</code> (by ignoring
-     * whitespace and word order) and <code>phraseMatch()</code> (by allowing
-     * partial matching instead of requiring the entire word to match).
-     *
-     * Example use case: Trying to find personal names independently of name
-     * order (Western or Eastern order) and supporting immediate feedback by
-     * allowing partial occurences. So queries like "J. Doe", "Doe, John", and
-     * "J. D." would all match "John Doe".
-     *
-     * @method subWordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // subWordMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(query, {
-            ignoreCase: !caseSensitive
-        });
-
-        return YArray.filter(results, function (result) {
-            var resultText = caseSensitive ? result.text :
-                    result.text.toLowerCase();
-
-            return YArray.every(queryWords, function (queryWord) {
-                return resultText.indexOf(queryWord) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatchCase: function (query, results) {
-        return Filters.subWordMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that contain all of the words in the query,
-     * in any order. Non-word characters like whitespace and certain punctuation
-     * are ignored. Case-insensitive.
-     *
-     * @method wordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // wordMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var options    = {ignoreCase: !caseSensitive},
-            queryWords = WordBreak.getUniqueWords(query, options);
-
-        return YArray.filter(results, function (result) {
-            // Convert resultWords array to a hash for fast lookup.
-            var resultWords = YArray.hash(WordBreak.getUniqueWords(result.text,
-                                options));
-
-            return YArray.every(queryWords, function (word) {
-                return YObject.owns(resultWords, word);
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatchCase: function (query, results) {
-        return Filters.wordMatch(query, results, true);
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'text-wordbreak']});

+ 0 - 245
hmc/yui-3.4.1/build/autocomplete-filters/autocomplete-filters.js

@@ -1,245 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-filters', function(Y) {
-
-/**
- * Provides pre-built result matching filters for AutoComplete.
- *
- * @module autocomplete
- * @submodule autocomplete-filters
- * @class AutoCompleteFilters
- * @static
- */
-
-var YArray     = Y.Array,
-    YObject    = Y.Object,
-    WordBreak  = Y.Text.WordBreak,
-
-Filters = Y.mix(Y.namespace('AutoCompleteFilters'), {
-    // -- Public Methods -------------------------------------------------------
-
-    /**
-     * Returns an array of results that contain all of the characters in the
-     * query, in any order (not necessarily consecutive). Case-insensitive.
-     *
-     * @method charMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // charMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var queryChars = YArray.unique((caseSensitive ? query :
-                query.toLowerCase()).split(''));
-
-        return YArray.filter(results, function (result) {
-            result = result.text;
-
-            if (!caseSensitive) {
-                result = result.toLowerCase();
-            }
-
-            return YArray.every(queryChars, function (chr) {
-                return result.indexOf(chr) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>charMatch()</code>.
-     *
-     * @method charMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    charMatchCase: function (query, results) {
-        return Filters.charMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that contain the complete query as a phrase.
-     * Case-insensitive.
-     *
-     * @method phraseMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // phraseMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        if (!caseSensitive) {
-            query = query.toLowerCase();
-        }
-
-        return YArray.filter(results, function (result) {
-            return (caseSensitive ? result.text : result.text.toLowerCase()).indexOf(query) !== -1;
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    phraseMatchCase: function (query, results) {
-        return Filters.phraseMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that start with the complete query as a
-     * phrase. Case-insensitive.
-     *
-     * @method startsWith
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWith: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // startsWithCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        if (!caseSensitive) {
-            query = query.toLowerCase();
-        }
-
-        return YArray.filter(results, function (result) {
-            return (caseSensitive ? result.text : result.text.toLowerCase()).indexOf(query) === 0;
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>startsWith()</code>.
-     *
-     * @method startsWithCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    startsWithCase: function (query, results) {
-        return Filters.startsWith(query, results, true);
-    },
-
-    /**
-     * Returns an array of results in which all the words of the query match
-     * either whole words or parts of words in the result. Non-word characters
-     * like whitespace and certain punctuation are ignored. Case-insensitive.
-     *
-     * This is basically a combination of <code>wordMatch()</code> (by ignoring
-     * whitespace and word order) and <code>phraseMatch()</code> (by allowing
-     * partial matching instead of requiring the entire word to match).
-     *
-     * Example use case: Trying to find personal names independently of name
-     * order (Western or Eastern order) and supporting immediate feedback by
-     * allowing partial occurences. So queries like "J. Doe", "Doe, John", and
-     * "J. D." would all match "John Doe".
-     *
-     * @method subWordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // subWordMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var queryWords = WordBreak.getUniqueWords(query, {
-            ignoreCase: !caseSensitive
-        });
-
-        return YArray.filter(results, function (result) {
-            var resultText = caseSensitive ? result.text :
-                    result.text.toLowerCase();
-
-            return YArray.every(queryWords, function (queryWord) {
-                return resultText.indexOf(queryWord) !== -1;
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    subWordMatchCase: function (query, results) {
-        return Filters.subWordMatch(query, results, true);
-    },
-
-    /**
-     * Returns an array of results that contain all of the words in the query,
-     * in any order. Non-word characters like whitespace and certain punctuation
-     * are ignored. Case-insensitive.
-     *
-     * @method wordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // wordMatchCase(). It's intentionally undocumented.
-
-        if (!query) { return results; }
-
-        var options    = {ignoreCase: !caseSensitive},
-            queryWords = WordBreak.getUniqueWords(query, options);
-
-        return YArray.filter(results, function (result) {
-            // Convert resultWords array to a hash for fast lookup.
-            var resultWords = YArray.hash(WordBreak.getUniqueWords(result.text,
-                                options));
-
-            return YArray.every(queryWords, function (word) {
-                return YObject.owns(resultWords, word);
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to filter
-     * @return {Array} Filtered results
-     * @static
-     */
-    wordMatchCase: function (query, results) {
-        return Filters.wordMatch(query, results, true);
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'text-wordbreak']});

+ 0 - 117
hmc/yui-3.4.1/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold-debug.js

@@ -1,117 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-highlighters-accentfold', function(Y) {
-
-/**
- * <p>
- * Provides pre-built accent-folding result highlighters for AutoComplete.
- * </p>
- *
- * <p>
- * These highlighters are similar to the ones provided by the
- * <code>autocomplete-highlighters</code> module, but use accent-aware
- * comparisons. For example, "resume" and "résumé" will be considered equal when
- * using the accent-folding highlighters.
- * </p>
- *
- * @module autocomplete
- * @submodule autocomplete-highlighters-accentfold
- */
-
-/**
- * @class AutoCompleteHighlighters
- * @static
- */
-
-var Highlight = Y.Highlight,
-    YArray    = Y.Array;
-
-Y.mix(Y.namespace('AutoCompleteHighlighters'), {
-    /**
-     * Accent-folding version of <code>charMatch()</code>.
-     *
-     * @method charMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatchFold: function (query, results) {
-        var queryChars = YArray.unique(query.split(''));
-
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, queryChars);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatchFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, [query]);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>startsWith()</code>.
-     *
-     * @method startsWithFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWithFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, [query], {
-                startsWith: true
-            });
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatchFold: function (query, results) {
-        var queryWords = Y.Text.WordBreak.getUniqueWords(query);
-
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, queryWords);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatchFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.wordsFold(result.text, query);
-        });
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'highlight-accentfold']});

+ 0 - 117
hmc/yui-3.4.1/build/autocomplete-highlighters-accentfold/autocomplete-highlighters-accentfold.js

@@ -1,117 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-highlighters-accentfold', function(Y) {
-
-/**
- * <p>
- * Provides pre-built accent-folding result highlighters for AutoComplete.
- * </p>
- *
- * <p>
- * These highlighters are similar to the ones provided by the
- * <code>autocomplete-highlighters</code> module, but use accent-aware
- * comparisons. For example, "resume" and "résumé" will be considered equal when
- * using the accent-folding highlighters.
- * </p>
- *
- * @module autocomplete
- * @submodule autocomplete-highlighters-accentfold
- */
-
-/**
- * @class AutoCompleteHighlighters
- * @static
- */
-
-var Highlight = Y.Highlight,
-    YArray    = Y.Array;
-
-Y.mix(Y.namespace('AutoCompleteHighlighters'), {
-    /**
-     * Accent-folding version of <code>charMatch()</code>.
-     *
-     * @method charMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatchFold: function (query, results) {
-        var queryChars = YArray.unique(query.split(''));
-
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, queryChars);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatchFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, [query]);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>startsWith()</code>.
-     *
-     * @method startsWithFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWithFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, [query], {
-                startsWith: true
-            });
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatchFold: function (query, results) {
-        var queryWords = Y.Text.WordBreak.getUniqueWords(query);
-
-        return YArray.map(results, function (result) {
-            return Highlight.allFold(result.text, queryWords);
-        });
-    },
-
-    /**
-     * Accent-folding version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchFold
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatchFold: function (query, results) {
-        return YArray.map(results, function (result) {
-            return Highlight.wordsFold(result.text, query);
-        });
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'highlight-accentfold']});

+ 0 - 205
hmc/yui-3.4.1/build/autocomplete-highlighters/autocomplete-highlighters-debug.js

@@ -1,205 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-highlighters', function(Y) {
-
-/**
- * Provides pre-built result highlighters for AutoComplete.
- *
- * @module autocomplete
- * @submodule autocomplete-highlighters
- * @class AutoCompleteHighlighters
- * @static
- */
-
-var YArray    = Y.Array,
-    Highlight = Y.Highlight,
-
-Highlighters = Y.mix(Y.namespace('AutoCompleteHighlighters'), {
-    // -- Public Methods -------------------------------------------------------
-
-    /**
-     * Highlights any individual query character that occurs anywhere in a
-     * result. Case-insensitive.
-     *
-     * @method charMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // charMatchCase(). It's intentionally undocumented.
-
-        var queryChars = YArray.unique((caseSensitive ? query :
-                query.toLowerCase()).split(''));
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, queryChars, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>charMatch()</code>.
-     *
-     * @method charMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatchCase: function (query, results) {
-        return Highlighters.charMatch(query, results, true);
-    },
-
-    /**
-     * Highlights the complete query as a phrase anywhere within a result.
-     * Case-insensitive.
-     *
-     * @method phraseMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // phraseMatchCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, [query], {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatchCase: function (query, results) {
-        return Highlighters.phraseMatch(query, results, true);
-    },
-
-    /**
-     * Highlights the complete query as a phrase at the beginning of a result.
-     * Case-insensitive.
-     *
-     * @method startsWith
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWith: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // startsWithCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, [query], {
-                caseSensitive: caseSensitive,
-                startsWith   : true
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>startsWith()</code>.
-     *
-     * @method startsWithCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWithCase: function (query, results) {
-        return Highlighters.startsWith(query, results, true);
-    },
-
-    /**
-     * Highlights portions of results in which words from the query match either
-     * whole words or parts of words in the result. Non-word characters like
-     * whitespace and certain punctuation are ignored. Case-insensitive.
-     *
-     * @method subWordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // subWordMatchCase(). It's intentionally undocumented.
-
-        var queryWords = Y.Text.WordBreak.getUniqueWords(query, {
-            ignoreCase: !caseSensitive
-        });
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, queryWords, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatchCase: function (query, results) {
-        return Highlighters.subWordMatch(query, results, true);
-    },
-
-    /**
-     * Highlights individual words in results that are also in the query.
-     * Non-word characters like punctuation are ignored. Case-insensitive.
-     *
-     * @method wordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // wordMatchCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.words(result.text, query, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatchCase: function (query, results) {
-        return Highlighters.wordMatch(query, results, true);
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'highlight-base']});

+ 0 - 205
hmc/yui-3.4.1/build/autocomplete-highlighters/autocomplete-highlighters.js

@@ -1,205 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-highlighters', function(Y) {
-
-/**
- * Provides pre-built result highlighters for AutoComplete.
- *
- * @module autocomplete
- * @submodule autocomplete-highlighters
- * @class AutoCompleteHighlighters
- * @static
- */
-
-var YArray    = Y.Array,
-    Highlight = Y.Highlight,
-
-Highlighters = Y.mix(Y.namespace('AutoCompleteHighlighters'), {
-    // -- Public Methods -------------------------------------------------------
-
-    /**
-     * Highlights any individual query character that occurs anywhere in a
-     * result. Case-insensitive.
-     *
-     * @method charMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // charMatchCase(). It's intentionally undocumented.
-
-        var queryChars = YArray.unique((caseSensitive ? query :
-                query.toLowerCase()).split(''));
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, queryChars, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>charMatch()</code>.
-     *
-     * @method charMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    charMatchCase: function (query, results) {
-        return Highlighters.charMatch(query, results, true);
-    },
-
-    /**
-     * Highlights the complete query as a phrase anywhere within a result.
-     * Case-insensitive.
-     *
-     * @method phraseMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // phraseMatchCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, [query], {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>phraseMatch()</code>.
-     *
-     * @method phraseMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    phraseMatchCase: function (query, results) {
-        return Highlighters.phraseMatch(query, results, true);
-    },
-
-    /**
-     * Highlights the complete query as a phrase at the beginning of a result.
-     * Case-insensitive.
-     *
-     * @method startsWith
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWith: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // startsWithCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, [query], {
-                caseSensitive: caseSensitive,
-                startsWith   : true
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>startsWith()</code>.
-     *
-     * @method startsWithCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    startsWithCase: function (query, results) {
-        return Highlighters.startsWith(query, results, true);
-    },
-
-    /**
-     * Highlights portions of results in which words from the query match either
-     * whole words or parts of words in the result. Non-word characters like
-     * whitespace and certain punctuation are ignored. Case-insensitive.
-     *
-     * @method subWordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // subWordMatchCase(). It's intentionally undocumented.
-
-        var queryWords = Y.Text.WordBreak.getUniqueWords(query, {
-            ignoreCase: !caseSensitive
-        });
-
-        return YArray.map(results, function (result) {
-            return Highlight.all(result.text, queryWords, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>subWordMatch()</code>.
-     *
-     * @method subWordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    subWordMatchCase: function (query, results) {
-        return Highlighters.subWordMatch(query, results, true);
-    },
-
-    /**
-     * Highlights individual words in results that are also in the query.
-     * Non-word characters like punctuation are ignored. Case-insensitive.
-     *
-     * @method wordMatch
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatch: function (query, results, caseSensitive) {
-        // The caseSensitive parameter is only intended for use by
-        // wordMatchCase(). It's intentionally undocumented.
-
-        return YArray.map(results, function (result) {
-            return Highlight.words(result.text, query, {
-                caseSensitive: caseSensitive
-            });
-        });
-    },
-
-    /**
-     * Case-sensitive version of <code>wordMatch()</code>.
-     *
-     * @method wordMatchCase
-     * @param {String} query Query to match
-     * @param {Array} results Results to highlight
-     * @return {Array} Highlighted results
-     * @static
-     */
-    wordMatchCase: function (query, results) {
-        return Highlighters.wordMatch(query, results, true);
-    }
-});
-
-
-}, '3.4.1' ,{requires:['array-extras', 'highlight-base']});

+ 0 - 194
hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys-debug.js

@@ -1,194 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-list-keys', function(Y) {
-
-/**
- * Mixes keyboard support into AutoCompleteList. By default, this module is not
- * loaded for iOS and Android devices.
- *
- * @module autocomplete
- * @submodule autocomplete-list-keys
- */
-
- // keyCode constants.
-var KEY_DOWN  = 40,
-    KEY_ENTER = 13,
-    KEY_ESC   = 27,
-    KEY_TAB   = 9,
-    KEY_UP    = 38;
-
-function ListKeys() {
-    Y.before(this._unbindKeys, this, 'destructor');
-    Y.before(this._bindKeys, this, 'bindUI');
-
-    this._initKeys();
-}
-
-ListKeys.prototype = {
-    // -- Lifecycle Methods ----------------------------------------------------
-
-    /**
-     * Initializes keyboard command mappings.
-     *
-     * @method _initKeys
-     * @protected
-     * @for AutoCompleteList
-     */
-    _initKeys: function () {
-        var keys        = {},
-            keysVisible = {};
-
-        this._keyEvents = [];
-
-        // Register keyboard command handlers. _keys contains handlers that will
-        // always be called; _keysVisible contains handlers that will only be
-        // called when the list is visible.
-        keys[KEY_DOWN] = this._keyDown;
-
-        keysVisible[KEY_ENTER] = this._keyEnter;
-        keysVisible[KEY_ESC]   = this._keyEsc;
-        keysVisible[KEY_TAB]   = this._keyTab;
-        keysVisible[KEY_UP]    = this._keyUp;
-
-        this._keys        = keys;
-        this._keysVisible = keysVisible;
-    },
-
-    /**
-     * Binds keyboard events.
-     *
-     * @method _bindKeys
-     * @protected
-     */
-    _bindKeys: function () {
-        this._keyEvents.push(this._inputNode.on('keydown', this._onInputKey,
-            this));
-    },
-
-    /**
-     * Unbinds keyboard events.
-     *
-     * @method _unbindKeys
-     * @protected
-     */
-    _unbindKeys: function () {
-        while (this._keyEvents.length) {
-            this._keyEvents.pop().detach();
-        }
-    },
-
-    // -- Protected Methods ----------------------------------------------------
-
-    /**
-     * Called when the down arrow key is pressed.
-     *
-     * @method _keyDown
-     * @protected
-     */
-    _keyDown: function () {
-        if (this.get('visible')) {
-            this._activateNextItem();
-        } else {
-            this.show();
-        }
-    },
-
-    /**
-     * Called when the enter key is pressed.
-     *
-     * @method _keyEnter
-     * @protected
-     */
-    _keyEnter: function (e) {
-        var item = this.get('activeItem');
-
-        if (item) {
-            this.selectItem(item, e);
-        } else {
-            // Don't prevent form submission when there's no active item.
-            return false;
-        }
-    },
-
-    /**
-     * Called when the escape key is pressed.
-     *
-     * @method _keyEsc
-     * @protected
-     */
-    _keyEsc: function () {
-        this.hide();
-    },
-
-    /**
-     * Called when the tab key is pressed.
-     *
-     * @method _keyTab
-     * @protected
-     */
-    _keyTab: function (e) {
-        var item;
-
-        if (this.get('tabSelect')) {
-            item = this.get('activeItem');
-
-            if (item) {
-                this.selectItem(item, e);
-                return true;
-            }
-        }
-
-        return false;
-    },
-
-    /**
-     * Called when the up arrow key is pressed.
-     *
-     * @method _keyUp
-     * @protected
-     */
-    _keyUp: function () {
-        this._activatePrevItem();
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Handles <code>inputNode</code> key events.
-     *
-     * @method _onInputKey
-     * @param {EventTarget} e
-     * @protected
-     */
-    _onInputKey: function (e) {
-        var handler,
-            keyCode = e.keyCode;
-
-        this._lastInputKey = keyCode;
-
-        if (this.get('results').length) {
-            handler = this._keys[keyCode];
-
-            if (!handler && this.get('visible')) {
-                handler = this._keysVisible[keyCode];
-            }
-
-            if (handler) {
-                // A handler may return false to indicate that it doesn't wish
-                // to prevent the default key behavior.
-                if (handler.call(this, e) !== false) {
-                    e.preventDefault();
-                }
-            }
-        }
-    }
-};
-
-Y.Base.mix(Y.AutoCompleteList, [ListKeys]);
-
-
-}, '3.4.1' ,{requires:['autocomplete-list', 'base-build']});

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("autocomplete-list-keys",function(g){var c=40,a=13,d=27,f=9,b=38;function e(){g.before(this._unbindKeys,this,"destructor");g.before(this._bindKeys,this,"bindUI");this._initKeys();}e.prototype={_initKeys:function(){var h={},i={};this._keyEvents=[];h[c]=this._keyDown;i[a]=this._keyEnter;i[d]=this._keyEsc;i[f]=this._keyTab;i[b]=this._keyUp;this._keys=h;this._keysVisible=i;},_bindKeys:function(){this._keyEvents.push(this._inputNode.on("keydown",this._onInputKey,this));},_unbindKeys:function(){while(this._keyEvents.length){this._keyEvents.pop().detach();}},_keyDown:function(){if(this.get("visible")){this._activateNextItem();}else{this.show();}},_keyEnter:function(i){var h=this.get("activeItem");if(h){this.selectItem(h,i);}else{return false;}},_keyEsc:function(){this.hide();},_keyTab:function(i){var h;if(this.get("tabSelect")){h=this.get("activeItem");if(h){this.selectItem(h,i);return true;}}return false;},_keyUp:function(){this._activatePrevItem();},_onInputKey:function(j){var h,i=j.keyCode;this._lastInputKey=i;if(this.get("results").length){h=this._keys[i];if(!h&&this.get("visible")){h=this._keysVisible[i];}if(h){if(h.call(this,j)!==false){j.preventDefault();}}}}};g.Base.mix(g.AutoCompleteList,[e]);},"3.4.1",{requires:["autocomplete-list","base-build"]});

+ 0 - 194
hmc/yui-3.4.1/build/autocomplete-list-keys/autocomplete-list-keys.js

@@ -1,194 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-list-keys', function(Y) {
-
-/**
- * Mixes keyboard support into AutoCompleteList. By default, this module is not
- * loaded for iOS and Android devices.
- *
- * @module autocomplete
- * @submodule autocomplete-list-keys
- */
-
- // keyCode constants.
-var KEY_DOWN  = 40,
-    KEY_ENTER = 13,
-    KEY_ESC   = 27,
-    KEY_TAB   = 9,
-    KEY_UP    = 38;
-
-function ListKeys() {
-    Y.before(this._unbindKeys, this, 'destructor');
-    Y.before(this._bindKeys, this, 'bindUI');
-
-    this._initKeys();
-}
-
-ListKeys.prototype = {
-    // -- Lifecycle Methods ----------------------------------------------------
-
-    /**
-     * Initializes keyboard command mappings.
-     *
-     * @method _initKeys
-     * @protected
-     * @for AutoCompleteList
-     */
-    _initKeys: function () {
-        var keys        = {},
-            keysVisible = {};
-
-        this._keyEvents = [];
-
-        // Register keyboard command handlers. _keys contains handlers that will
-        // always be called; _keysVisible contains handlers that will only be
-        // called when the list is visible.
-        keys[KEY_DOWN] = this._keyDown;
-
-        keysVisible[KEY_ENTER] = this._keyEnter;
-        keysVisible[KEY_ESC]   = this._keyEsc;
-        keysVisible[KEY_TAB]   = this._keyTab;
-        keysVisible[KEY_UP]    = this._keyUp;
-
-        this._keys        = keys;
-        this._keysVisible = keysVisible;
-    },
-
-    /**
-     * Binds keyboard events.
-     *
-     * @method _bindKeys
-     * @protected
-     */
-    _bindKeys: function () {
-        this._keyEvents.push(this._inputNode.on('keydown', this._onInputKey,
-            this));
-    },
-
-    /**
-     * Unbinds keyboard events.
-     *
-     * @method _unbindKeys
-     * @protected
-     */
-    _unbindKeys: function () {
-        while (this._keyEvents.length) {
-            this._keyEvents.pop().detach();
-        }
-    },
-
-    // -- Protected Methods ----------------------------------------------------
-
-    /**
-     * Called when the down arrow key is pressed.
-     *
-     * @method _keyDown
-     * @protected
-     */
-    _keyDown: function () {
-        if (this.get('visible')) {
-            this._activateNextItem();
-        } else {
-            this.show();
-        }
-    },
-
-    /**
-     * Called when the enter key is pressed.
-     *
-     * @method _keyEnter
-     * @protected
-     */
-    _keyEnter: function (e) {
-        var item = this.get('activeItem');
-
-        if (item) {
-            this.selectItem(item, e);
-        } else {
-            // Don't prevent form submission when there's no active item.
-            return false;
-        }
-    },
-
-    /**
-     * Called when the escape key is pressed.
-     *
-     * @method _keyEsc
-     * @protected
-     */
-    _keyEsc: function () {
-        this.hide();
-    },
-
-    /**
-     * Called when the tab key is pressed.
-     *
-     * @method _keyTab
-     * @protected
-     */
-    _keyTab: function (e) {
-        var item;
-
-        if (this.get('tabSelect')) {
-            item = this.get('activeItem');
-
-            if (item) {
-                this.selectItem(item, e);
-                return true;
-            }
-        }
-
-        return false;
-    },
-
-    /**
-     * Called when the up arrow key is pressed.
-     *
-     * @method _keyUp
-     * @protected
-     */
-    _keyUp: function () {
-        this._activatePrevItem();
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Handles <code>inputNode</code> key events.
-     *
-     * @method _onInputKey
-     * @param {EventTarget} e
-     * @protected
-     */
-    _onInputKey: function (e) {
-        var handler,
-            keyCode = e.keyCode;
-
-        this._lastInputKey = keyCode;
-
-        if (this.get('results').length) {
-            handler = this._keys[keyCode];
-
-            if (!handler && this.get('visible')) {
-                handler = this._keysVisible[keyCode];
-            }
-
-            if (handler) {
-                // A handler may return false to indicate that it doesn't wish
-                // to prevent the default key behavior.
-                if (handler.call(this, e) !== false) {
-                    e.preventDefault();
-                }
-            }
-        }
-    }
-};
-
-Y.Base.mix(Y.AutoCompleteList, [ListKeys]);
-
-
-}, '3.4.1' ,{requires:['autocomplete-list', 'base-build']});

+ 0 - 56
hmc/yui-3.4.1/build/autocomplete-list/assets/skins/night/autocomplete-list-skin.css

@@ -1,56 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-skin-night{
-	background-color:#000;
-    font-family: HelveticaNeue,arial,helvetica,clean,sans-serif;
-	color:#fff;
-}
-
-.yui3-skin-night .yui3-aclist-content {
-	font-size:100%;
-    background: #0E0E0E;
-	color: #ccc;
-    border: 1px solid #303030;
-	-moz-box-shadow: 0 0 17px rgba(0,0,0,0.58);
-	-webkit-box-shadow: 0 0 17px rgba(0,0,0,0.58);
-	box-shadow: 0 0 17px rgba(0,0,0,0.58);
-	margin: 5px 0 0 8px;
-}
-
-.yui3-skin-night .yui3-aclist-input {
-    background: #fff;
-	font-size:100%;
-    -moz-border-radius: 13px;
-    -webkit-border-radius: 13px;
-    border-radius: 13px;
-    -moz-box-shadow: inset 1px 1px 4px rgba(0,0,0,0.9);
-    -webkit-box-shadow: inset 1px 1px 4px rgba(0,0,0,0.9);
-    box-shadow: 1px 1px 4px rgba(0,0,0,0.6) inset;
-
-    border: none;
-	padding-left:0.6em;
-}
-
-.yui3-skin-night .yui3-aclist-item-active,
-.yui3-skin-night .yui3-aclist-item-hover {
-    background: -moz-linear-gradient(
-		0% 100% 90deg,
-		#252626 0%,
-		#333434 100%
-	);
-    background: -webkit-gradient(
-        linear,
-        left top,
-        left bottom,
-        from(#333434),
-        to(#252626)
-    );
-}
-
-.yui3-skin-night .yui3-aclist-item { padding: 0.4em 1em 0.6em; }
-.yui3-skin-night .yui3-aclist-item-active { outline: none; }
-.yui3-skin-night .yui3-highlight { color:#EFEFEF; }

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-list/assets/skins/night/autocomplete-list.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-aclist{position:absolute;z-index:1}.yui3-aclist-hidden{visibility:hidden}.yui3-aclist-aria{left:-9999px;position:absolute}.yui3-aclist-list{list-style:none;margin:0;overflow:hidden;padding:0}.yui3-aclist-item{cursor:pointer;list-style:none;padding:2px 5px}.yui3-aclist-item-active{outline:#afafaf dotted thin}.yui3-skin-night{background-color:#000;font-family:HelveticaNeue,arial,helvetica,clean,sans-serif;color:#fff}.yui3-skin-night .yui3-aclist-content{font-size:100%;background:#0e0e0e;color:#ccc;border:1px solid #303030;-moz-box-shadow:0 0 17px rgba(0,0,0,0.58);-webkit-box-shadow:0 0 17px rgba(0,0,0,0.58);box-shadow:0 0 17px rgba(0,0,0,0.58);margin:5px 0 0 8px}.yui3-skin-night .yui3-aclist-input{background:#fff;font-size:100%;-moz-border-radius:13px;-webkit-border-radius:13px;border-radius:13px;-moz-box-shadow:inset 1px 1px 4px rgba(0,0,0,0.9);-webkit-box-shadow:inset 1px 1px 4px rgba(0,0,0,0.9);box-shadow:1px 1px 4px rgba(0,0,0,0.6) inset;border:0;padding-left:.6em}.yui3-skin-night .yui3-aclist-item-active,.yui3-skin-night .yui3-aclist-item-hover{background:-moz-linear-gradient(0% 100% 90deg,#252626 0,#333434 100%);background:-webkit-gradient(linear,left top,left bottom,from(#333434),to(#252626))}.yui3-skin-night .yui3-aclist-item{padding:.4em 1em .6em}.yui3-skin-night .yui3-aclist-item-active{outline:0}.yui3-skin-night .yui3-highlight{color:#efefef}

+ 0 - 23
hmc/yui-3.4.1/build/autocomplete-list/assets/skins/sam/autocomplete-list-skin.css

@@ -1,23 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-skin-sam .yui3-aclist-content {
-    background: #fff;
-    border: 1px solid #afafaf;
-    -moz-box-shadow: 1px 1px 4px #888;
-    -webkit-box-shadow: 1px 1px 4px #888;
-    box-shadow: 1px 1px 4px #888;
-}
-
-.yui3-skin-sam .yui3-aclist-item-hover {
-    background: #bfdaff;
-}
-
-.yui3-skin-sam .yui3-aclist-item-active {
-    background: #2647a0;
-    color: #fff;
-    outline: none;
-}

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-list/assets/skins/sam/autocomplete-list.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-.yui3-aclist{position:absolute;z-index:1}.yui3-aclist-hidden{visibility:hidden}.yui3-aclist-aria{left:-9999px;position:absolute}.yui3-aclist-list{list-style:none;margin:0;overflow:hidden;padding:0}.yui3-aclist-item{cursor:pointer;list-style:none;padding:2px 5px}.yui3-aclist-item-active{outline:#afafaf dotted thin}.yui3-skin-sam .yui3-aclist-content{background:#fff;border:1px solid #afafaf;-moz-box-shadow:1px 1px 4px #888;-webkit-box-shadow:1px 1px 4px #888;box-shadow:1px 1px 4px #888}.yui3-skin-sam .yui3-aclist-item-hover{background:#bfdaff}.yui3-skin-sam .yui3-aclist-item-active{background:#2647a0;color:#fff;outline:0}

+ 0 - 901
hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list-debug.js

@@ -1,901 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-list', function(Y) {
-
-/**
- * Traditional autocomplete dropdown list widget, just like Mom used to make.
- *
- * @submodule autocomplete-list
- */
-
-/**
- * Traditional autocomplete dropdown list widget, just like Mom used to make.
- *
- * @class AutoCompleteList
- * @extends Widget
- * @uses AutoCompleteBase
- * @uses WidgetPosition
- * @uses WidgetPositionAlign
- * @constructor
- * @param {Object} config Configuration object.
- */
-
-var Lang   = Y.Lang,
-    Node   = Y.Node,
-    YArray = Y.Array,
-
-    // Whether or not we need an iframe shim.
-    useShim = Y.UA.ie && Y.UA.ie < 7,
-
-    // keyCode constants.
-    KEY_TAB = 9,
-
-    // String shorthand.
-    _CLASS_ITEM        = '_CLASS_ITEM',
-    _CLASS_ITEM_ACTIVE = '_CLASS_ITEM_ACTIVE',
-    _CLASS_ITEM_HOVER  = '_CLASS_ITEM_HOVER',
-    _SELECTOR_ITEM     = '_SELECTOR_ITEM',
-
-    ACTIVE_ITEM      = 'activeItem',
-    ALWAYS_SHOW_LIST = 'alwaysShowList',
-    CIRCULAR         = 'circular',
-    HOVERED_ITEM     = 'hoveredItem',
-    ID               = 'id',
-    ITEM             = 'item',
-    LIST             = 'list',
-    RESULT           = 'result',
-    RESULTS          = 'results',
-    VISIBLE          = 'visible',
-    WIDTH            = 'width',
-
-    // Event names.
-    EVT_SELECT = 'select',
-
-List = Y.Base.create('autocompleteList', Y.Widget, [
-    Y.AutoCompleteBase,
-    Y.WidgetPosition,
-    Y.WidgetPositionAlign
-], {
-    // -- Prototype Properties -------------------------------------------------
-    ARIA_TEMPLATE: '<div/>',
-    ITEM_TEMPLATE: '<li/>',
-    LIST_TEMPLATE: '<ul/>',
-
-    // -- Lifecycle Prototype Methods ------------------------------------------
-    initializer: function () {
-        var inputNode = this.get('inputNode');
-
-        if (!inputNode) {
-            Y.error('No inputNode specified.');
-            return;
-        }
-
-        this._inputNode  = inputNode;
-        this._listEvents = [];
-
-        // This ensures that the list is rendered inside the same parent as the
-        // input node by default, which is necessary for proper ARIA support.
-        this.DEF_PARENT_NODE = inputNode.get('parentNode');
-
-        // Cache commonly used classnames and selectors for performance.
-        this[_CLASS_ITEM]        = this.getClassName(ITEM);
-        this[_CLASS_ITEM_ACTIVE] = this.getClassName(ITEM, 'active');
-        this[_CLASS_ITEM_HOVER]  = this.getClassName(ITEM, 'hover');
-        this[_SELECTOR_ITEM]     = '.' + this[_CLASS_ITEM];
-
-        /**
-         * Fires when an autocomplete suggestion is selected from the list,
-         * typically via a keyboard action or mouse click.
-         *
-         * @event select
-         * @param {EventFacade} e Event facade with the following additional
-         *   properties:
-         *
-         * <dl>
-         *   <dt>itemNode (Node)</dt>
-         *   <dd>
-         *     List item node that was selected.
-         *   </dd>
-         *
-         *   <dt>result (Object)</dt>
-         *   <dd>
-         *     AutoComplete result object.
-         *   </dd>
-         * </dl>
-         *
-         * @preventable _defSelectFn
-         */
-        this.publish(EVT_SELECT, {
-            defaultFn: this._defSelectFn
-        });
-    },
-
-    destructor: function () {
-        while (this._listEvents.length) {
-            this._listEvents.pop().detach();
-        }
-
-        if (this._ariaNode) {
-            this._ariaNode.remove().destroy(true);
-        }
-    },
-
-    bindUI: function () {
-        this._bindInput();
-        this._bindList();
-    },
-
-    renderUI: function () {
-        var ariaNode    = this._createAriaNode(),
-            boundingBox = this.get('boundingBox'),
-            contentBox  = this.get('contentBox'),
-            inputNode   = this._inputNode,
-            listNode    = this._createListNode(),
-            parentNode  = inputNode.get('parentNode');
-
-        inputNode.addClass(this.getClassName('input')).setAttrs({
-            'aria-autocomplete': LIST,
-            'aria-expanded'    : false,
-            'aria-owns'        : listNode.get('id')
-        });
-
-        // ARIA node must be outside the widget or announcements won't be made
-        // when the widget is hidden.
-        parentNode.append(ariaNode);
-
-        // Add an iframe shim for IE6.
-        if (useShim) {
-            boundingBox.plug(Y.Plugin.Shim);
-        }
-
-        // Force position: absolute on the boundingBox. This works around a
-        // potential CSS loading race condition in Gecko that can cause the
-        // boundingBox to become relatively positioned, which is all kinds of
-        // no good.
-        boundingBox.setStyle('position', 'absolute');
-
-        this._ariaNode    = ariaNode;
-        this._boundingBox = boundingBox;
-        this._contentBox  = contentBox;
-        this._listNode    = listNode;
-        this._parentNode  = parentNode;
-    },
-
-    syncUI: function () {
-        // No need to call _syncPosition() here; the other _sync methods will
-        // call it when necessary.
-        this._syncResults();
-        this._syncVisibility();
-    },
-
-    // -- Public Prototype Methods ---------------------------------------------
-
-    /**
-     * Hides the list, unless the <code>alwaysShowList</code> attribute is
-     * <code>true</code>.
-     *
-     * @method hide
-     * @see show
-     * @chainable
-     */
-    hide: function () {
-        return this.get(ALWAYS_SHOW_LIST) ? this : this.set(VISIBLE, false);
-    },
-
-    /**
-     * Selects the specified <i>itemNode</i>, or the current
-     * <code>activeItem</code> if <i>itemNode</i> is not specified.
-     *
-     * @method selectItem
-     * @param {Node} itemNode (optional) Item node to select.
-     * @param {EventFacade} originEvent (optional) Event that triggered the
-     *     selection, if any.
-     * @chainable
-     */
-    selectItem: function (itemNode, originEvent) {
-        if (itemNode) {
-            if (!itemNode.hasClass(this[_CLASS_ITEM])) {
-                return this;
-            }
-        } else {
-            itemNode = this.get(ACTIVE_ITEM);
-
-            if (!itemNode) {
-                return this;
-            }
-        }
-
-        this.fire(EVT_SELECT, {
-            itemNode   : itemNode,
-            originEvent: originEvent || null,
-            result     : itemNode.getData(RESULT)
-        });
-
-        return this;
-    },
-
-    // -- Protected Prototype Methods ------------------------------------------
-
-    /**
-     * Activates the next item after the currently active item. If there is no
-     * next item and the <code>circular</code> attribute is <code>true</code>,
-     * focus will wrap back to the input node.
-     *
-     * @method _activateNextItem
-     * @chainable
-     * @protected
-     */
-    _activateNextItem: function () {
-        var item = this.get(ACTIVE_ITEM),
-            nextItem;
-
-        if (item) {
-            nextItem = item.next(this[_SELECTOR_ITEM]) ||
-                    (this.get(CIRCULAR) ? null : item);
-        } else {
-            nextItem = this._getFirstItemNode();
-        }
-
-        this.set(ACTIVE_ITEM, nextItem);
-
-        return this;
-    },
-
-    /**
-     * Activates the item previous to the currently active item. If there is no
-     * previous item and the <code>circular</code> attribute is
-     * <code>true</code>, focus will wrap back to the input node.
-     *
-     * @method _activatePrevItem
-     * @chainable
-     * @protected
-     */
-    _activatePrevItem: function () {
-        var item     = this.get(ACTIVE_ITEM),
-            prevItem = item ? item.previous(this[_SELECTOR_ITEM]) :
-                    this.get(CIRCULAR) && this._getLastItemNode();
-
-        this.set(ACTIVE_ITEM, prevItem || null);
-
-        return this;
-    },
-
-    /**
-     * Appends the specified result <i>items</i> to the list inside a new item
-     * node.
-     *
-     * @method _add
-     * @param {Array|Node|HTMLElement|String} items Result item or array of
-     *   result items.
-     * @return {NodeList} Added nodes.
-     * @protected
-     */
-    _add: function (items) {
-        var itemNodes = [];
-
-        YArray.each(Lang.isArray(items) ? items : [items], function (item) {
-            itemNodes.push(this._createItemNode(item).setData(RESULT, item));
-        }, this);
-
-        itemNodes = Y.all(itemNodes);
-        this._listNode.append(itemNodes.toFrag());
-
-        return itemNodes;
-    },
-
-    /**
-     * Updates the ARIA live region with the specified message.
-     *
-     * @method _ariaSay
-     * @param {String} stringId String id (from the <code>strings</code>
-     *   attribute) of the message to speak.
-     * @param {Object} subs (optional) Substitutions for placeholders in the
-     *   string.
-     * @protected
-     */
-    _ariaSay: function (stringId, subs) {
-        var message = this.get('strings.' + stringId);
-        this._ariaNode.setContent(subs ? Lang.sub(message, subs) : message);
-    },
-
-    /**
-     * Binds <code>inputNode</code> events and behavior.
-     *
-     * @method _bindInput
-     * @protected
-     */
-    _bindInput: function () {
-        var inputNode = this._inputNode,
-            alignNode, alignWidth, tokenInput;
-
-        // Null align means we can auto-align. Set align to false to prevent
-        // auto-alignment, or a valid alignment config to customize the
-        // alignment.
-        if (this.get('align') === null) {
-            // If this is a tokenInput, align with its bounding box.
-            // Otherwise, align with the inputNode. Bit of a cheat.
-            tokenInput = this.get('tokenInput');
-            alignNode  = (tokenInput && tokenInput.get('boundingBox')) || inputNode;
-
-            this.set('align', {
-                node  : alignNode,
-                points: ['tl', 'bl']
-            });
-
-            // If no width config is set, attempt to set the list's width to the
-            // width of the alignment node. If the alignment node's width is
-            // falsy, do nothing.
-            if (!this.get(WIDTH) && (alignWidth = alignNode.get('offsetWidth'))) {
-                this.set(WIDTH, alignWidth);
-            }
-        }
-
-        // Attach inputNode events.
-        this._listEvents.concat([
-            inputNode.after('blur',  this._afterListInputBlur, this),
-            inputNode.after('focus', this._afterListInputFocus, this)
-        ]);
-    },
-
-    /**
-     * Binds list events.
-     *
-     * @method _bindList
-     * @protected
-     */
-    _bindList: function () {
-        this._listEvents.concat([
-            Y.on('windowresize', this._syncPosition, this),
-
-            this.after({
-                blur     : this._afterListBlur,
-                focus    : this._afterListFocus,
-                mouseover: this._afterMouseOver,
-                mouseout : this._afterMouseOut,
-
-                activeItemChange    : this._afterActiveItemChange,
-                alwaysShowListChange: this._afterAlwaysShowListChange,
-                hoveredItemChange   : this._afterHoveredItemChange,
-                resultsChange       : this._afterResultsChange,
-                visibleChange       : this._afterVisibleChange
-            }),
-
-            this._listNode.delegate('click', this._onItemClick,
-                    this[_SELECTOR_ITEM], this)
-        ]);
-    },
-
-    /**
-     * Clears the contents of the tray.
-     *
-     * @method _clear
-     * @protected
-     */
-    _clear: function () {
-        this.set(ACTIVE_ITEM, null);
-        this._set(HOVERED_ITEM, null);
-
-        this._listNode.get('children').remove(true);
-    },
-
-    /**
-     * Creates and returns an ARIA live region node.
-     *
-     * @method _createAriaNode
-     * @return {Node} ARIA node.
-     * @protected
-     */
-    _createAriaNode: function () {
-        var ariaNode = Node.create(this.ARIA_TEMPLATE);
-
-        return ariaNode.addClass(this.getClassName('aria')).setAttrs({
-            'aria-live': 'polite',
-            role       : 'status'
-        });
-    },
-
-    /**
-     * Creates and returns an item node with the specified <i>content</i>.
-     *
-     * @method _createItemNode
-     * @param {Object} result Result object.
-     * @return {Node} Item node.
-     * @protected
-     */
-    _createItemNode: function (result) {
-        var itemNode = Node.create(this.ITEM_TEMPLATE);
-
-        return itemNode.addClass(this[_CLASS_ITEM]).setAttrs({
-            id  : Y.stamp(itemNode),
-            role: 'option'
-        }).setAttribute('data-text', result.text).append(result.display);
-    },
-
-    /**
-     * Creates and returns a list node. If the `listNode` attribute is already
-     * set to an existing node, that node will be used.
-     *
-     * @method _createListNode
-     * @return {Node} List node.
-     * @protected
-     */
-    _createListNode: function () {
-        var listNode = this.get('listNode') || Node.create(this.LIST_TEMPLATE);
-
-        listNode.addClass(this.getClassName(LIST)).setAttrs({
-            id  : Y.stamp(listNode),
-            role: 'listbox'
-        });
-
-        this._set('listNode', listNode);
-        this.get('contentBox').append(listNode);
-
-        return listNode;
-    },
-
-    /**
-     * Gets the first item node in the list, or <code>null</code> if the list is
-     * empty.
-     *
-     * @method _getFirstItemNode
-     * @return {Node|null}
-     * @protected
-     */
-    _getFirstItemNode: function () {
-        return this._listNode.one(this[_SELECTOR_ITEM]);
-    },
-
-    /**
-     * Gets the last item node in the list, or <code>null</code> if the list is
-     * empty.
-     *
-     * @method _getLastItemNode
-     * @return {Node|null}
-     * @protected
-     */
-    _getLastItemNode: function () {
-        return this._listNode.one(this[_SELECTOR_ITEM] + ':last-child');
-    },
-
-    /**
-     * Synchronizes the result list's position and alignment.
-     *
-     * @method _syncPosition
-     * @protected
-     */
-    _syncPosition: function () {
-        // Force WidgetPositionAlign to refresh its alignment.
-        this._syncUIPosAlign();
-
-        // Resize the IE6 iframe shim to match the list's dimensions.
-        this._syncShim();
-    },
-
-    /**
-     * Synchronizes the results displayed in the list with those in the
-     * <i>results</i> argument, or with the <code>results</code> attribute if an
-     * argument is not provided.
-     *
-     * @method _syncResults
-     * @param {Array} results (optional) Results.
-     * @protected
-     */
-    _syncResults: function (results) {
-        if (!results) {
-            results = this.get(RESULTS);
-        }
-
-        this._clear();
-
-        if (results.length) {
-            this._add(results);
-            this._ariaSay('items_available');
-        }
-
-        this._syncPosition();
-
-        if (this.get('activateFirstItem') && !this.get(ACTIVE_ITEM)) {
-            this.set(ACTIVE_ITEM, this._getFirstItemNode());
-        }
-    },
-
-    /**
-     * Synchronizes the size of the iframe shim used for IE6 and lower. In other
-     * browsers, this method is a noop.
-     *
-     * @method _syncShim
-     * @protected
-     */
-    _syncShim: useShim ? function () {
-        this._boundingBox.shim.sync();
-    } : function () {},
-
-    /**
-     * Synchronizes the visibility of the tray with the <i>visible</i> argument,
-     * or with the <code>visible</code> attribute if an argument is not
-     * provided.
-     *
-     * @method _syncVisibility
-     * @param {Boolean} visible (optional) Visibility.
-     * @protected
-     */
-    _syncVisibility: function (visible) {
-        if (this.get(ALWAYS_SHOW_LIST)) {
-            visible = true;
-            this.set(VISIBLE, visible);
-        }
-
-        if (typeof visible === 'undefined') {
-            visible = this.get(VISIBLE);
-        }
-
-        this._inputNode.set('aria-expanded', visible);
-        this._boundingBox.set('aria-hidden', !visible);
-
-        if (visible) {
-            this._syncPosition();
-        } else {
-            this.set(ACTIVE_ITEM, null);
-            this._set(HOVERED_ITEM, null);
-
-            // Force a reflow to work around a glitch in IE6 and 7 where some of
-            // the contents of the list will sometimes remain visible after the
-            // container is hidden.
-            this._boundingBox.get('offsetWidth');
-        }
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Handles <code>activeItemChange</code> events.
-     *
-     * @method _afterActiveItemChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterActiveItemChange: function (e) {
-        var inputNode = this._inputNode,
-            newVal    = e.newVal,
-            prevVal   = e.prevVal,
-            node;
-
-        // The previous item may have disappeared by the time this handler runs,
-        // so we need to be careful.
-        if (prevVal && prevVal._node) {
-            prevVal.removeClass(this[_CLASS_ITEM_ACTIVE]);
-        }
-
-        if (newVal) {
-            newVal.addClass(this[_CLASS_ITEM_ACTIVE]);
-            inputNode.set('aria-activedescendant', newVal.get(ID));
-        } else {
-            inputNode.removeAttribute('aria-activedescendant');
-        }
-
-        if (this.get('scrollIntoView')) {
-            node = newVal || inputNode;
-
-            if (!node.inRegion(Y.DOM.viewportRegion(), true)
-                    || !node.inRegion(this._contentBox, true)) {
-
-                node.scrollIntoView();
-            }
-        }
-    },
-
-    /**
-     * Handles <code>alwaysShowListChange</code> events.
-     *
-     * @method _afterAlwaysShowListChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterAlwaysShowListChange: function (e) {
-        this.set(VISIBLE, e.newVal || this.get(RESULTS).length > 0);
-    },
-
-    /**
-     * Handles <code>hoveredItemChange</code> events.
-     *
-     * @method _afterHoveredItemChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterHoveredItemChange: function (e) {
-        var newVal  = e.newVal,
-            prevVal = e.prevVal;
-
-        if (prevVal) {
-            prevVal.removeClass(this[_CLASS_ITEM_HOVER]);
-        }
-
-        if (newVal) {
-            newVal.addClass(this[_CLASS_ITEM_HOVER]);
-        }
-    },
-
-    /**
-     * Handles list blur events.
-     *
-     * @method _afterListBlur
-     * @protected
-     */
-    _afterListBlur: function () {
-        this._listFocused = false;
-
-        // Hide the list unless focus switched to the input node.
-        if (!this._listInputFocused) {
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles list focus events.
-     *
-     * @method _afterListFocus
-     * @protected
-     */
-    _afterListFocus: function () {
-        this._listFocused = true;
-    },
-
-    /**
-     * Handles `inputNode` blur events.
-     *
-     * @method _afterListInputBlur
-     * @protected
-     */
-    _afterListInputBlur: function () {
-        this._listInputFocused = false;
-
-        // Hide the list on inputNode blur events, unless the mouse is currently
-        // over the list (which indicates that the user is probably interacting
-        // with it). The _lastInputKey property comes from the
-        // autocomplete-list-keys module.
-        if ((!this._mouseOverList && !this._listFocused)
-                || this._lastInputKey === KEY_TAB) {
-
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles `inputNode` focus events.
-     *
-     * @method _afterListInputFocus
-     * @protected
-     */
-    _afterListInputFocus: function () {
-        this._listInputFocused = true;
-    },
-
-    /**
-     * Handles <code>mouseover</code> events.
-     *
-     * @method _afterMouseOver
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterMouseOver: function (e) {
-        var itemNode = e.domEvent.target.ancestor(this[_SELECTOR_ITEM], true);
-
-        this._mouseOverList = true;
-
-        if (itemNode) {
-            this._set(HOVERED_ITEM, itemNode);
-        }
-    },
-
-    /**
-     * Handles <code>mouseout</code> events.
-     *
-     * @method _afterMouseOut
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterMouseOut: function () {
-        this._mouseOverList = false;
-        this._set(HOVERED_ITEM, null);
-
-        // This takes care of the edge case where the user right-clicks on a
-        // list item, then clicks elsewhere in the document.
-        if (!this._listFocused && !this._listInputFocused) {
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles <code>resultsChange</code> events.
-     *
-     * @method _afterResultsChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterResultsChange: function (e) {
-        this._syncResults(e.newVal);
-
-        if (!this.get(ALWAYS_SHOW_LIST)) {
-            this.set(VISIBLE, !!e.newVal.length);
-        }
-    },
-
-    /**
-     * Handles <code>visibleChange</code> events.
-     *
-     * @method _afterVisibleChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterVisibleChange: function (e) {
-        this._syncVisibility(!!e.newVal);
-    },
-
-    /**
-     * Delegated event handler for item <code>click</code> events.
-     *
-     * @method _onItemClick
-     * @param {EventTarget} e
-     * @protected
-     */
-    _onItemClick: function (e) {
-        var itemNode = e.currentTarget;
-
-        this.set(ACTIVE_ITEM, itemNode);
-        this.selectItem(itemNode, e);
-    },
-
-    // -- Protected Default Event Handlers -------------------------------------
-
-    /**
-     * Default <code>select</code> event handler.
-     *
-     * @method _defSelectFn
-     * @param {EventTarget} e
-     * @protected
-     */
-    _defSelectFn: function (e) {
-        var text = e.result.text;
-
-        // TODO: support typeahead completion, etc.
-        this._inputNode.focus();
-        this._updateValue(text);
-        this._ariaSay('item_selected', {item: text});
-        this.hide();
-    }
-}, {
-    ATTRS: {
-        /**
-         * If <code>true</code>, the first item in the list will be activated by
-         * default when the list is initially displayed and when results change.
-         *
-         * @attribute activateFirstItem
-         * @type Boolean
-         * @default false
-         */
-        activateFirstItem: {
-            value: false
-        },
-
-        /**
-         * Item that's currently active, if any. When the user presses enter,
-         * this is the item that will be selected.
-         *
-         * @attribute activeItem
-         * @type Node
-         */
-        activeItem: {
-            setter: Y.one,
-            value: null
-        },
-
-        /**
-         * If <code>true</code>, the list will remain visible even when there
-         * are no results to display.
-         *
-         * @attribute alwaysShowList
-         * @type Boolean
-         * @default false
-         */
-        alwaysShowList: {
-            value: false
-        },
-
-        /**
-         * If <code>true</code>, keyboard navigation will wrap around to the
-         * opposite end of the list when navigating past the first or last item.
-         *
-         * @attribute circular
-         * @type Boolean
-         * @default true
-         */
-        circular: {
-            value: true
-        },
-
-        /**
-         * Item currently being hovered over by the mouse, if any.
-         *
-         * @attribute hoveredItem
-         * @type Node|null
-         * @readOnly
-         */
-        hoveredItem: {
-            readOnly: true,
-            value: null
-        },
-
-        /**
-         * Node that will contain result items.
-         *
-         * @attribute listNode
-         * @type Node|null
-         * @initOnly
-         */
-        listNode: {
-            writeOnce: 'initOnly',
-            value: null
-        },
-
-        /**
-         * If <code>true</code>, the viewport will be scrolled to ensure that
-         * the active list item is visible when necessary.
-         *
-         * @attribute scrollIntoView
-         * @type Boolean
-         * @default false
-         */
-        scrollIntoView: {
-            value: false
-        },
-
-        /**
-         * Translatable strings used by the AutoCompleteList widget.
-         *
-         * @attribute strings
-         * @type Object
-         */
-        strings: {
-            valueFn: function () {
-                return Y.Intl.get('autocomplete-list');
-            }
-        },
-
-        /**
-         * If <code>true</code>, pressing the tab key while the list is visible
-         * will select the active item, if any.
-         *
-         * @attribute tabSelect
-         * @type Boolean
-         * @default true
-         */
-        tabSelect: {
-            value: true
-        },
-
-        // The "visible" attribute is documented in Widget.
-        visible: {
-            value: false
-        }
-    },
-
-    CSS_PREFIX: Y.ClassNameManager.getClassName('aclist')
-});
-
-Y.AutoCompleteList = List;
-
-/**
- * Alias for <a href="AutoCompleteList.html"><code>AutoCompleteList</code></a>.
- * See that class for API docs.
- *
- * @class AutoComplete
- */
-
-Y.AutoComplete = List;
-
-
-}, '3.4.1' ,{lang:['en'], after:['autocomplete-sources'], requires:['autocomplete-base', 'event-resize', 'node-screen', 'selector-css3', 'shim-plugin', 'widget', 'widget-position', 'widget-position-align'], skinnable:true});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list-min.js


+ 0 - 901
hmc/yui-3.4.1/build/autocomplete-list/autocomplete-list.js

@@ -1,901 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-list', function(Y) {
-
-/**
- * Traditional autocomplete dropdown list widget, just like Mom used to make.
- *
- * @submodule autocomplete-list
- */
-
-/**
- * Traditional autocomplete dropdown list widget, just like Mom used to make.
- *
- * @class AutoCompleteList
- * @extends Widget
- * @uses AutoCompleteBase
- * @uses WidgetPosition
- * @uses WidgetPositionAlign
- * @constructor
- * @param {Object} config Configuration object.
- */
-
-var Lang   = Y.Lang,
-    Node   = Y.Node,
-    YArray = Y.Array,
-
-    // Whether or not we need an iframe shim.
-    useShim = Y.UA.ie && Y.UA.ie < 7,
-
-    // keyCode constants.
-    KEY_TAB = 9,
-
-    // String shorthand.
-    _CLASS_ITEM        = '_CLASS_ITEM',
-    _CLASS_ITEM_ACTIVE = '_CLASS_ITEM_ACTIVE',
-    _CLASS_ITEM_HOVER  = '_CLASS_ITEM_HOVER',
-    _SELECTOR_ITEM     = '_SELECTOR_ITEM',
-
-    ACTIVE_ITEM      = 'activeItem',
-    ALWAYS_SHOW_LIST = 'alwaysShowList',
-    CIRCULAR         = 'circular',
-    HOVERED_ITEM     = 'hoveredItem',
-    ID               = 'id',
-    ITEM             = 'item',
-    LIST             = 'list',
-    RESULT           = 'result',
-    RESULTS          = 'results',
-    VISIBLE          = 'visible',
-    WIDTH            = 'width',
-
-    // Event names.
-    EVT_SELECT = 'select',
-
-List = Y.Base.create('autocompleteList', Y.Widget, [
-    Y.AutoCompleteBase,
-    Y.WidgetPosition,
-    Y.WidgetPositionAlign
-], {
-    // -- Prototype Properties -------------------------------------------------
-    ARIA_TEMPLATE: '<div/>',
-    ITEM_TEMPLATE: '<li/>',
-    LIST_TEMPLATE: '<ul/>',
-
-    // -- Lifecycle Prototype Methods ------------------------------------------
-    initializer: function () {
-        var inputNode = this.get('inputNode');
-
-        if (!inputNode) {
-            Y.error('No inputNode specified.');
-            return;
-        }
-
-        this._inputNode  = inputNode;
-        this._listEvents = [];
-
-        // This ensures that the list is rendered inside the same parent as the
-        // input node by default, which is necessary for proper ARIA support.
-        this.DEF_PARENT_NODE = inputNode.get('parentNode');
-
-        // Cache commonly used classnames and selectors for performance.
-        this[_CLASS_ITEM]        = this.getClassName(ITEM);
-        this[_CLASS_ITEM_ACTIVE] = this.getClassName(ITEM, 'active');
-        this[_CLASS_ITEM_HOVER]  = this.getClassName(ITEM, 'hover');
-        this[_SELECTOR_ITEM]     = '.' + this[_CLASS_ITEM];
-
-        /**
-         * Fires when an autocomplete suggestion is selected from the list,
-         * typically via a keyboard action or mouse click.
-         *
-         * @event select
-         * @param {EventFacade} e Event facade with the following additional
-         *   properties:
-         *
-         * <dl>
-         *   <dt>itemNode (Node)</dt>
-         *   <dd>
-         *     List item node that was selected.
-         *   </dd>
-         *
-         *   <dt>result (Object)</dt>
-         *   <dd>
-         *     AutoComplete result object.
-         *   </dd>
-         * </dl>
-         *
-         * @preventable _defSelectFn
-         */
-        this.publish(EVT_SELECT, {
-            defaultFn: this._defSelectFn
-        });
-    },
-
-    destructor: function () {
-        while (this._listEvents.length) {
-            this._listEvents.pop().detach();
-        }
-
-        if (this._ariaNode) {
-            this._ariaNode.remove().destroy(true);
-        }
-    },
-
-    bindUI: function () {
-        this._bindInput();
-        this._bindList();
-    },
-
-    renderUI: function () {
-        var ariaNode    = this._createAriaNode(),
-            boundingBox = this.get('boundingBox'),
-            contentBox  = this.get('contentBox'),
-            inputNode   = this._inputNode,
-            listNode    = this._createListNode(),
-            parentNode  = inputNode.get('parentNode');
-
-        inputNode.addClass(this.getClassName('input')).setAttrs({
-            'aria-autocomplete': LIST,
-            'aria-expanded'    : false,
-            'aria-owns'        : listNode.get('id')
-        });
-
-        // ARIA node must be outside the widget or announcements won't be made
-        // when the widget is hidden.
-        parentNode.append(ariaNode);
-
-        // Add an iframe shim for IE6.
-        if (useShim) {
-            boundingBox.plug(Y.Plugin.Shim);
-        }
-
-        // Force position: absolute on the boundingBox. This works around a
-        // potential CSS loading race condition in Gecko that can cause the
-        // boundingBox to become relatively positioned, which is all kinds of
-        // no good.
-        boundingBox.setStyle('position', 'absolute');
-
-        this._ariaNode    = ariaNode;
-        this._boundingBox = boundingBox;
-        this._contentBox  = contentBox;
-        this._listNode    = listNode;
-        this._parentNode  = parentNode;
-    },
-
-    syncUI: function () {
-        // No need to call _syncPosition() here; the other _sync methods will
-        // call it when necessary.
-        this._syncResults();
-        this._syncVisibility();
-    },
-
-    // -- Public Prototype Methods ---------------------------------------------
-
-    /**
-     * Hides the list, unless the <code>alwaysShowList</code> attribute is
-     * <code>true</code>.
-     *
-     * @method hide
-     * @see show
-     * @chainable
-     */
-    hide: function () {
-        return this.get(ALWAYS_SHOW_LIST) ? this : this.set(VISIBLE, false);
-    },
-
-    /**
-     * Selects the specified <i>itemNode</i>, or the current
-     * <code>activeItem</code> if <i>itemNode</i> is not specified.
-     *
-     * @method selectItem
-     * @param {Node} itemNode (optional) Item node to select.
-     * @param {EventFacade} originEvent (optional) Event that triggered the
-     *     selection, if any.
-     * @chainable
-     */
-    selectItem: function (itemNode, originEvent) {
-        if (itemNode) {
-            if (!itemNode.hasClass(this[_CLASS_ITEM])) {
-                return this;
-            }
-        } else {
-            itemNode = this.get(ACTIVE_ITEM);
-
-            if (!itemNode) {
-                return this;
-            }
-        }
-
-        this.fire(EVT_SELECT, {
-            itemNode   : itemNode,
-            originEvent: originEvent || null,
-            result     : itemNode.getData(RESULT)
-        });
-
-        return this;
-    },
-
-    // -- Protected Prototype Methods ------------------------------------------
-
-    /**
-     * Activates the next item after the currently active item. If there is no
-     * next item and the <code>circular</code> attribute is <code>true</code>,
-     * focus will wrap back to the input node.
-     *
-     * @method _activateNextItem
-     * @chainable
-     * @protected
-     */
-    _activateNextItem: function () {
-        var item = this.get(ACTIVE_ITEM),
-            nextItem;
-
-        if (item) {
-            nextItem = item.next(this[_SELECTOR_ITEM]) ||
-                    (this.get(CIRCULAR) ? null : item);
-        } else {
-            nextItem = this._getFirstItemNode();
-        }
-
-        this.set(ACTIVE_ITEM, nextItem);
-
-        return this;
-    },
-
-    /**
-     * Activates the item previous to the currently active item. If there is no
-     * previous item and the <code>circular</code> attribute is
-     * <code>true</code>, focus will wrap back to the input node.
-     *
-     * @method _activatePrevItem
-     * @chainable
-     * @protected
-     */
-    _activatePrevItem: function () {
-        var item     = this.get(ACTIVE_ITEM),
-            prevItem = item ? item.previous(this[_SELECTOR_ITEM]) :
-                    this.get(CIRCULAR) && this._getLastItemNode();
-
-        this.set(ACTIVE_ITEM, prevItem || null);
-
-        return this;
-    },
-
-    /**
-     * Appends the specified result <i>items</i> to the list inside a new item
-     * node.
-     *
-     * @method _add
-     * @param {Array|Node|HTMLElement|String} items Result item or array of
-     *   result items.
-     * @return {NodeList} Added nodes.
-     * @protected
-     */
-    _add: function (items) {
-        var itemNodes = [];
-
-        YArray.each(Lang.isArray(items) ? items : [items], function (item) {
-            itemNodes.push(this._createItemNode(item).setData(RESULT, item));
-        }, this);
-
-        itemNodes = Y.all(itemNodes);
-        this._listNode.append(itemNodes.toFrag());
-
-        return itemNodes;
-    },
-
-    /**
-     * Updates the ARIA live region with the specified message.
-     *
-     * @method _ariaSay
-     * @param {String} stringId String id (from the <code>strings</code>
-     *   attribute) of the message to speak.
-     * @param {Object} subs (optional) Substitutions for placeholders in the
-     *   string.
-     * @protected
-     */
-    _ariaSay: function (stringId, subs) {
-        var message = this.get('strings.' + stringId);
-        this._ariaNode.setContent(subs ? Lang.sub(message, subs) : message);
-    },
-
-    /**
-     * Binds <code>inputNode</code> events and behavior.
-     *
-     * @method _bindInput
-     * @protected
-     */
-    _bindInput: function () {
-        var inputNode = this._inputNode,
-            alignNode, alignWidth, tokenInput;
-
-        // Null align means we can auto-align. Set align to false to prevent
-        // auto-alignment, or a valid alignment config to customize the
-        // alignment.
-        if (this.get('align') === null) {
-            // If this is a tokenInput, align with its bounding box.
-            // Otherwise, align with the inputNode. Bit of a cheat.
-            tokenInput = this.get('tokenInput');
-            alignNode  = (tokenInput && tokenInput.get('boundingBox')) || inputNode;
-
-            this.set('align', {
-                node  : alignNode,
-                points: ['tl', 'bl']
-            });
-
-            // If no width config is set, attempt to set the list's width to the
-            // width of the alignment node. If the alignment node's width is
-            // falsy, do nothing.
-            if (!this.get(WIDTH) && (alignWidth = alignNode.get('offsetWidth'))) {
-                this.set(WIDTH, alignWidth);
-            }
-        }
-
-        // Attach inputNode events.
-        this._listEvents.concat([
-            inputNode.after('blur',  this._afterListInputBlur, this),
-            inputNode.after('focus', this._afterListInputFocus, this)
-        ]);
-    },
-
-    /**
-     * Binds list events.
-     *
-     * @method _bindList
-     * @protected
-     */
-    _bindList: function () {
-        this._listEvents.concat([
-            Y.on('windowresize', this._syncPosition, this),
-
-            this.after({
-                blur     : this._afterListBlur,
-                focus    : this._afterListFocus,
-                mouseover: this._afterMouseOver,
-                mouseout : this._afterMouseOut,
-
-                activeItemChange    : this._afterActiveItemChange,
-                alwaysShowListChange: this._afterAlwaysShowListChange,
-                hoveredItemChange   : this._afterHoveredItemChange,
-                resultsChange       : this._afterResultsChange,
-                visibleChange       : this._afterVisibleChange
-            }),
-
-            this._listNode.delegate('click', this._onItemClick,
-                    this[_SELECTOR_ITEM], this)
-        ]);
-    },
-
-    /**
-     * Clears the contents of the tray.
-     *
-     * @method _clear
-     * @protected
-     */
-    _clear: function () {
-        this.set(ACTIVE_ITEM, null);
-        this._set(HOVERED_ITEM, null);
-
-        this._listNode.get('children').remove(true);
-    },
-
-    /**
-     * Creates and returns an ARIA live region node.
-     *
-     * @method _createAriaNode
-     * @return {Node} ARIA node.
-     * @protected
-     */
-    _createAriaNode: function () {
-        var ariaNode = Node.create(this.ARIA_TEMPLATE);
-
-        return ariaNode.addClass(this.getClassName('aria')).setAttrs({
-            'aria-live': 'polite',
-            role       : 'status'
-        });
-    },
-
-    /**
-     * Creates and returns an item node with the specified <i>content</i>.
-     *
-     * @method _createItemNode
-     * @param {Object} result Result object.
-     * @return {Node} Item node.
-     * @protected
-     */
-    _createItemNode: function (result) {
-        var itemNode = Node.create(this.ITEM_TEMPLATE);
-
-        return itemNode.addClass(this[_CLASS_ITEM]).setAttrs({
-            id  : Y.stamp(itemNode),
-            role: 'option'
-        }).setAttribute('data-text', result.text).append(result.display);
-    },
-
-    /**
-     * Creates and returns a list node. If the `listNode` attribute is already
-     * set to an existing node, that node will be used.
-     *
-     * @method _createListNode
-     * @return {Node} List node.
-     * @protected
-     */
-    _createListNode: function () {
-        var listNode = this.get('listNode') || Node.create(this.LIST_TEMPLATE);
-
-        listNode.addClass(this.getClassName(LIST)).setAttrs({
-            id  : Y.stamp(listNode),
-            role: 'listbox'
-        });
-
-        this._set('listNode', listNode);
-        this.get('contentBox').append(listNode);
-
-        return listNode;
-    },
-
-    /**
-     * Gets the first item node in the list, or <code>null</code> if the list is
-     * empty.
-     *
-     * @method _getFirstItemNode
-     * @return {Node|null}
-     * @protected
-     */
-    _getFirstItemNode: function () {
-        return this._listNode.one(this[_SELECTOR_ITEM]);
-    },
-
-    /**
-     * Gets the last item node in the list, or <code>null</code> if the list is
-     * empty.
-     *
-     * @method _getLastItemNode
-     * @return {Node|null}
-     * @protected
-     */
-    _getLastItemNode: function () {
-        return this._listNode.one(this[_SELECTOR_ITEM] + ':last-child');
-    },
-
-    /**
-     * Synchronizes the result list's position and alignment.
-     *
-     * @method _syncPosition
-     * @protected
-     */
-    _syncPosition: function () {
-        // Force WidgetPositionAlign to refresh its alignment.
-        this._syncUIPosAlign();
-
-        // Resize the IE6 iframe shim to match the list's dimensions.
-        this._syncShim();
-    },
-
-    /**
-     * Synchronizes the results displayed in the list with those in the
-     * <i>results</i> argument, or with the <code>results</code> attribute if an
-     * argument is not provided.
-     *
-     * @method _syncResults
-     * @param {Array} results (optional) Results.
-     * @protected
-     */
-    _syncResults: function (results) {
-        if (!results) {
-            results = this.get(RESULTS);
-        }
-
-        this._clear();
-
-        if (results.length) {
-            this._add(results);
-            this._ariaSay('items_available');
-        }
-
-        this._syncPosition();
-
-        if (this.get('activateFirstItem') && !this.get(ACTIVE_ITEM)) {
-            this.set(ACTIVE_ITEM, this._getFirstItemNode());
-        }
-    },
-
-    /**
-     * Synchronizes the size of the iframe shim used for IE6 and lower. In other
-     * browsers, this method is a noop.
-     *
-     * @method _syncShim
-     * @protected
-     */
-    _syncShim: useShim ? function () {
-        this._boundingBox.shim.sync();
-    } : function () {},
-
-    /**
-     * Synchronizes the visibility of the tray with the <i>visible</i> argument,
-     * or with the <code>visible</code> attribute if an argument is not
-     * provided.
-     *
-     * @method _syncVisibility
-     * @param {Boolean} visible (optional) Visibility.
-     * @protected
-     */
-    _syncVisibility: function (visible) {
-        if (this.get(ALWAYS_SHOW_LIST)) {
-            visible = true;
-            this.set(VISIBLE, visible);
-        }
-
-        if (typeof visible === 'undefined') {
-            visible = this.get(VISIBLE);
-        }
-
-        this._inputNode.set('aria-expanded', visible);
-        this._boundingBox.set('aria-hidden', !visible);
-
-        if (visible) {
-            this._syncPosition();
-        } else {
-            this.set(ACTIVE_ITEM, null);
-            this._set(HOVERED_ITEM, null);
-
-            // Force a reflow to work around a glitch in IE6 and 7 where some of
-            // the contents of the list will sometimes remain visible after the
-            // container is hidden.
-            this._boundingBox.get('offsetWidth');
-        }
-    },
-
-    // -- Protected Event Handlers ---------------------------------------------
-
-    /**
-     * Handles <code>activeItemChange</code> events.
-     *
-     * @method _afterActiveItemChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterActiveItemChange: function (e) {
-        var inputNode = this._inputNode,
-            newVal    = e.newVal,
-            prevVal   = e.prevVal,
-            node;
-
-        // The previous item may have disappeared by the time this handler runs,
-        // so we need to be careful.
-        if (prevVal && prevVal._node) {
-            prevVal.removeClass(this[_CLASS_ITEM_ACTIVE]);
-        }
-
-        if (newVal) {
-            newVal.addClass(this[_CLASS_ITEM_ACTIVE]);
-            inputNode.set('aria-activedescendant', newVal.get(ID));
-        } else {
-            inputNode.removeAttribute('aria-activedescendant');
-        }
-
-        if (this.get('scrollIntoView')) {
-            node = newVal || inputNode;
-
-            if (!node.inRegion(Y.DOM.viewportRegion(), true)
-                    || !node.inRegion(this._contentBox, true)) {
-
-                node.scrollIntoView();
-            }
-        }
-    },
-
-    /**
-     * Handles <code>alwaysShowListChange</code> events.
-     *
-     * @method _afterAlwaysShowListChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterAlwaysShowListChange: function (e) {
-        this.set(VISIBLE, e.newVal || this.get(RESULTS).length > 0);
-    },
-
-    /**
-     * Handles <code>hoveredItemChange</code> events.
-     *
-     * @method _afterHoveredItemChange
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterHoveredItemChange: function (e) {
-        var newVal  = e.newVal,
-            prevVal = e.prevVal;
-
-        if (prevVal) {
-            prevVal.removeClass(this[_CLASS_ITEM_HOVER]);
-        }
-
-        if (newVal) {
-            newVal.addClass(this[_CLASS_ITEM_HOVER]);
-        }
-    },
-
-    /**
-     * Handles list blur events.
-     *
-     * @method _afterListBlur
-     * @protected
-     */
-    _afterListBlur: function () {
-        this._listFocused = false;
-
-        // Hide the list unless focus switched to the input node.
-        if (!this._listInputFocused) {
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles list focus events.
-     *
-     * @method _afterListFocus
-     * @protected
-     */
-    _afterListFocus: function () {
-        this._listFocused = true;
-    },
-
-    /**
-     * Handles `inputNode` blur events.
-     *
-     * @method _afterListInputBlur
-     * @protected
-     */
-    _afterListInputBlur: function () {
-        this._listInputFocused = false;
-
-        // Hide the list on inputNode blur events, unless the mouse is currently
-        // over the list (which indicates that the user is probably interacting
-        // with it). The _lastInputKey property comes from the
-        // autocomplete-list-keys module.
-        if ((!this._mouseOverList && !this._listFocused)
-                || this._lastInputKey === KEY_TAB) {
-
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles `inputNode` focus events.
-     *
-     * @method _afterListInputFocus
-     * @protected
-     */
-    _afterListInputFocus: function () {
-        this._listInputFocused = true;
-    },
-
-    /**
-     * Handles <code>mouseover</code> events.
-     *
-     * @method _afterMouseOver
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterMouseOver: function (e) {
-        var itemNode = e.domEvent.target.ancestor(this[_SELECTOR_ITEM], true);
-
-        this._mouseOverList = true;
-
-        if (itemNode) {
-            this._set(HOVERED_ITEM, itemNode);
-        }
-    },
-
-    /**
-     * Handles <code>mouseout</code> events.
-     *
-     * @method _afterMouseOut
-     * @param {EventTarget} e
-     * @protected
-     */
-    _afterMouseOut: function () {
-        this._mouseOverList = false;
-        this._set(HOVERED_ITEM, null);
-
-        // This takes care of the edge case where the user right-clicks on a
-        // list item, then clicks elsewhere in the document.
-        if (!this._listFocused && !this._listInputFocused) {
-            this.hide();
-        }
-    },
-
-    /**
-     * Handles <code>resultsChange</code> events.
-     *
-     * @method _afterResultsChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterResultsChange: function (e) {
-        this._syncResults(e.newVal);
-
-        if (!this.get(ALWAYS_SHOW_LIST)) {
-            this.set(VISIBLE, !!e.newVal.length);
-        }
-    },
-
-    /**
-     * Handles <code>visibleChange</code> events.
-     *
-     * @method _afterVisibleChange
-     * @param {EventFacade} e
-     * @protected
-     */
-    _afterVisibleChange: function (e) {
-        this._syncVisibility(!!e.newVal);
-    },
-
-    /**
-     * Delegated event handler for item <code>click</code> events.
-     *
-     * @method _onItemClick
-     * @param {EventTarget} e
-     * @protected
-     */
-    _onItemClick: function (e) {
-        var itemNode = e.currentTarget;
-
-        this.set(ACTIVE_ITEM, itemNode);
-        this.selectItem(itemNode, e);
-    },
-
-    // -- Protected Default Event Handlers -------------------------------------
-
-    /**
-     * Default <code>select</code> event handler.
-     *
-     * @method _defSelectFn
-     * @param {EventTarget} e
-     * @protected
-     */
-    _defSelectFn: function (e) {
-        var text = e.result.text;
-
-        // TODO: support typeahead completion, etc.
-        this._inputNode.focus();
-        this._updateValue(text);
-        this._ariaSay('item_selected', {item: text});
-        this.hide();
-    }
-}, {
-    ATTRS: {
-        /**
-         * If <code>true</code>, the first item in the list will be activated by
-         * default when the list is initially displayed and when results change.
-         *
-         * @attribute activateFirstItem
-         * @type Boolean
-         * @default false
-         */
-        activateFirstItem: {
-            value: false
-        },
-
-        /**
-         * Item that's currently active, if any. When the user presses enter,
-         * this is the item that will be selected.
-         *
-         * @attribute activeItem
-         * @type Node
-         */
-        activeItem: {
-            setter: Y.one,
-            value: null
-        },
-
-        /**
-         * If <code>true</code>, the list will remain visible even when there
-         * are no results to display.
-         *
-         * @attribute alwaysShowList
-         * @type Boolean
-         * @default false
-         */
-        alwaysShowList: {
-            value: false
-        },
-
-        /**
-         * If <code>true</code>, keyboard navigation will wrap around to the
-         * opposite end of the list when navigating past the first or last item.
-         *
-         * @attribute circular
-         * @type Boolean
-         * @default true
-         */
-        circular: {
-            value: true
-        },
-
-        /**
-         * Item currently being hovered over by the mouse, if any.
-         *
-         * @attribute hoveredItem
-         * @type Node|null
-         * @readOnly
-         */
-        hoveredItem: {
-            readOnly: true,
-            value: null
-        },
-
-        /**
-         * Node that will contain result items.
-         *
-         * @attribute listNode
-         * @type Node|null
-         * @initOnly
-         */
-        listNode: {
-            writeOnce: 'initOnly',
-            value: null
-        },
-
-        /**
-         * If <code>true</code>, the viewport will be scrolled to ensure that
-         * the active list item is visible when necessary.
-         *
-         * @attribute scrollIntoView
-         * @type Boolean
-         * @default false
-         */
-        scrollIntoView: {
-            value: false
-        },
-
-        /**
-         * Translatable strings used by the AutoCompleteList widget.
-         *
-         * @attribute strings
-         * @type Object
-         */
-        strings: {
-            valueFn: function () {
-                return Y.Intl.get('autocomplete-list');
-            }
-        },
-
-        /**
-         * If <code>true</code>, pressing the tab key while the list is visible
-         * will select the active item, if any.
-         *
-         * @attribute tabSelect
-         * @type Boolean
-         * @default true
-         */
-        tabSelect: {
-            value: true
-        },
-
-        // The "visible" attribute is documented in Widget.
-        visible: {
-            value: false
-        }
-    },
-
-    CSS_PREFIX: Y.ClassNameManager.getClassName('aclist')
-});
-
-Y.AutoCompleteList = List;
-
-/**
- * Alias for <a href="AutoCompleteList.html"><code>AutoCompleteList</code></a>.
- * See that class for API docs.
- *
- * @class AutoComplete
- */
-
-Y.AutoComplete = List;
-
-
-}, '3.4.1' ,{lang:['en'], after:['autocomplete-sources'], requires:['autocomplete-base', 'event-resize', 'node-screen', 'selector-css3', 'shim-plugin', 'widget', 'widget-position', 'widget-position-align'], skinnable:true});

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-list/lang/autocomplete-list.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("lang/autocomplete-list",function(a){a.Intl.add("autocomplete-list","",{item_selected:"{item} selected.",items_available:"Suggestions are available. Use the up and down arrow keys to select suggestions."});},"3.4.1");

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-list/lang/autocomplete-list_en.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("lang/autocomplete-list_en",function(a){a.Intl.add("autocomplete-list","en",{item_selected:"{item} selected.",items_available:"Suggestions are available. Use the up and down arrow keys to select suggestions."});},"3.4.1");

+ 0 - 60
hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin-debug.js

@@ -1,60 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-plugin', function(Y) {
-
-/**
- * Binds an AutoCompleteList instance to a Node instance.
- *
- * @module autocomplete
- * @submodule autocomplete-plugin
- */
-
-/**
- * <p>
- * Binds an AutoCompleteList instance to a Node instance.
- * </p>
- *
- * <p>
- * Example:
- * </p>
- *
- * <pre>
- * Y.one('#my-input').plug(Y.Plugin.AutoComplete, {
- * &nbsp;&nbsp;source: 'select * from search.suggest where query="{query}"'
- * });
- * &nbsp;
- * // You can now access the AutoCompleteList instance at Y.one('#my-input').ac
- * </pre>
- *
- * @class Plugin.AutoComplete
- * @extends AutoCompleteList
- */
-
-var Plugin = Y.Plugin;
-
-function ACListPlugin(config) {
-    config.inputNode = config.host;
-
-    // Render by default.
-    if (!config.render && config.render !== false) {
-      config.render = true;
-    }
-
-    ACListPlugin.superclass.constructor.apply(this, arguments);
-}
-
-Y.extend(ACListPlugin, Y.AutoCompleteList, {}, {
-    NAME      : 'autocompleteListPlugin',
-    NS        : 'ac',
-    CSS_PREFIX: Y.ClassNameManager.getClassName('aclist')
-});
-
-Plugin.AutoComplete     = ACListPlugin;
-Plugin.AutoCompleteList = ACListPlugin;
-
-
-}, '3.4.1' ,{requires:['autocomplete-list', 'node-pluginhost']});

+ 0 - 7
hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin-min.js

@@ -1,7 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add("autocomplete-plugin",function(b){var a=b.Plugin;function c(d){d.inputNode=d.host;if(!d.render&&d.render!==false){d.render=true;}c.superclass.constructor.apply(this,arguments);}b.extend(c,b.AutoCompleteList,{},{NAME:"autocompleteListPlugin",NS:"ac",CSS_PREFIX:b.ClassNameManager.getClassName("aclist")});a.AutoComplete=c;a.AutoCompleteList=c;},"3.4.1",{requires:["autocomplete-list","node-pluginhost"]});

+ 0 - 60
hmc/yui-3.4.1/build/autocomplete-plugin/autocomplete-plugin.js

@@ -1,60 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-plugin', function(Y) {
-
-/**
- * Binds an AutoCompleteList instance to a Node instance.
- *
- * @module autocomplete
- * @submodule autocomplete-plugin
- */
-
-/**
- * <p>
- * Binds an AutoCompleteList instance to a Node instance.
- * </p>
- *
- * <p>
- * Example:
- * </p>
- *
- * <pre>
- * Y.one('#my-input').plug(Y.Plugin.AutoComplete, {
- * &nbsp;&nbsp;source: 'select * from search.suggest where query="{query}"'
- * });
- * &nbsp;
- * // You can now access the AutoCompleteList instance at Y.one('#my-input').ac
- * </pre>
- *
- * @class Plugin.AutoComplete
- * @extends AutoCompleteList
- */
-
-var Plugin = Y.Plugin;
-
-function ACListPlugin(config) {
-    config.inputNode = config.host;
-
-    // Render by default.
-    if (!config.render && config.render !== false) {
-      config.render = true;
-    }
-
-    ACListPlugin.superclass.constructor.apply(this, arguments);
-}
-
-Y.extend(ACListPlugin, Y.AutoCompleteList, {}, {
-    NAME      : 'autocompleteListPlugin',
-    NS        : 'ac',
-    CSS_PREFIX: Y.ClassNameManager.getClassName('aclist')
-});
-
-Plugin.AutoComplete     = ACListPlugin;
-Plugin.AutoCompleteList = ACListPlugin;
-
-
-}, '3.4.1' ,{requires:['autocomplete-list', 'node-pluginhost']});

+ 0 - 490
hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources-debug.js

@@ -1,490 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-sources', function(Y) {
-
-/**
- * Mixes support for JSONP and YQL result sources into AutoCompleteBase.
- *
- * @module autocomplete
- * @submodule autocomplete-sources
- */
-
-var ACBase = Y.AutoCompleteBase,
-    Lang   = Y.Lang,
-
-    _SOURCE_SUCCESS = '_sourceSuccess',
-
-    MAX_RESULTS         = 'maxResults',
-    REQUEST_TEMPLATE    = 'requestTemplate',
-    RESULT_LIST_LOCATOR = 'resultListLocator';
-
-// Add prototype properties and methods to AutoCompleteBase.
-Y.mix(ACBase.prototype, {
-    /**
-     * Regular expression used to determine whether a String source is a YQL
-     * query.
-     *
-     * @property _YQL_SOURCE_REGEX
-     * @type RegExp
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _YQL_SOURCE_REGEX: /^(?:select|set|use)\s+/i,
-
-    /**
-     * Runs before AutoCompleteBase's <code>_createObjectSource()</code> method
-     * and augments it to support additional object-based source types.
-     *
-     * @method _beforeCreateObjectSource
-     * @param {String} source
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _beforeCreateObjectSource: function (source) {
-        // If the object is a <select> node, use the options as the result
-        // source.
-        if (source instanceof Y.Node &&
-                source.get('nodeName').toLowerCase() === 'select') {
-
-            return this._createSelectSource(source);
-        }
-
-        // If the object is a JSONPRequest instance, try to use it as a JSONP
-        // source.
-        if (Y.JSONPRequest && source instanceof Y.JSONPRequest) {
-            return this._createJSONPSource(source);
-        }
-
-        // Fall back to a basic object source.
-        return this._createObjectSource(source);
-    },
-
-    /**
-     * Creates a DataSource-like object that uses <code>Y.io</code> as a source.
-     * See the <code>source</code> attribute for more details.
-     *
-     * @method _createIOSource
-     * @param {String} source URL.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createIOSource: function (source) {
-        var cache    = {},
-            ioSource = {type: 'io'},
-            that     = this,
-            ioRequest, lastRequest, loading;
-
-        // Private internal _sendRequest method that will be assigned to
-        // ioSource.sendRequest once io-base and json-parse are available.
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query;
-
-            // Return immediately on a cached response.
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            // Cancel any outstanding requests.
-            if (ioRequest && ioRequest.isInProgress()) {
-                ioRequest.abort();
-            }
-
-            ioRequest = Y.io(that._getXHRUrl(source, request), {
-                on: {
-                    success: function (tid, response) {
-                        var data;
-
-                        try {
-                            data = Y.JSON.parse(response.responseText);
-                        } catch (ex) {
-                            Y.error('JSON parse error', ex);
-                        }
-
-                        if (data) {
-                            cache[cacheKey] = data;
-                            that[_SOURCE_SUCCESS](data, request);
-                        }
-                    }
-                }
-            });
-        }
-
-        ioSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the IO module to load. Only the
-            // most recent request will be sent.
-            lastRequest = request;
-
-            if (loading) { return; }
-
-            loading = true;
-
-            // Lazy-load the io-base and json-parse modules if necessary,
-            // then overwrite the sendRequest method to bypass this check in
-            // the future.
-            Y.use('io-base', 'json-parse', function () {
-                ioSource.sendRequest = _sendRequest;
-                _sendRequest(lastRequest);
-            });
-        };
-
-        return ioSource;
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified JSONPRequest
-     * instance as a source. See the <code>source</code> attribute for more
-     * details.
-     *
-     * @method _createJSONPSource
-     * @param {JSONPRequest|String} source URL string or JSONPRequest instance.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createJSONPSource: function (source) {
-        var cache       = {},
-            jsonpSource = {type: 'jsonp'},
-            that        = this,
-            lastRequest, loading;
-
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query;
-
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            // Hack alert: JSONPRequest currently doesn't support
-            // per-request callbacks, so we're reaching into the protected
-            // _config object to make it happen.
-            //
-            // This limitation is mentioned in the following JSONP
-            // enhancement ticket:
-            //
-            // http://yuilibrary.com/projects/yui3/ticket/2529371
-            source._config.on.success = function (data) {
-                cache[cacheKey] = data;
-                that[_SOURCE_SUCCESS](data, request);
-            };
-
-            source.send(query);
-        }
-
-        jsonpSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the JSONP module to load. Only
-            // the most recent request will be sent.
-            lastRequest = request;
-
-            if (loading) { return; }
-
-            loading = true;
-
-            // Lazy-load the JSONP module if necessary, then overwrite the
-            // sendRequest method to bypass this check in the future.
-            Y.use('jsonp', function () {
-                // Turn the source into a JSONPRequest instance if it isn't
-                // one already.
-                if (!(source instanceof Y.JSONPRequest)) {
-                    source = new Y.JSONPRequest(source, {
-                        format: Y.bind(that._jsonpFormatter, that)
-                    });
-                }
-
-                jsonpSource.sendRequest = _sendRequest;
-                _sendRequest(lastRequest);
-            });
-        };
-
-        return jsonpSource;
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified &lt;select&gt;
-     * node as a source.
-     *
-     * @method _createSelectSource
-     * @param {Node} source YUI Node instance wrapping a &lt;select&gt; node.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createSelectSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'select',
-            sendRequest: function (request) {
-                var options = [];
-
-                source.get('options').each(function (option) {
-                    options.push({
-                        html    : option.get('innerHTML'),
-                        index   : option.get('index'),
-                        node    : option,
-                        selected: option.get('selected'),
-                        text    : option.get('text'),
-                        value   : option.get('value')
-                    });
-                });
-
-                that[_SOURCE_SUCCESS](options, request);
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that calls the specified  URL or
-     * executes the specified YQL query for results. If the string starts
-     * with "select ", "use ", or "set " (case-insensitive), it's assumed to be
-     * a YQL query; otherwise, it's assumed to be a URL (which may be absolute
-     * or relative). URLs containing a "{callback}" placeholder are assumed to
-     * be JSONP URLs; all others will use XHR. See the <code>source</code>
-     * attribute for more details.
-     *
-     * @method _createStringSource
-     * @param {String} source URL or YQL query.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createStringSource: function (source) {
-        if (this._YQL_SOURCE_REGEX.test(source)) {
-            // Looks like a YQL query.
-            return this._createYQLSource(source);
-        } else if (source.indexOf('{callback}') !== -1) {
-            // Contains a {callback} param and isn't a YQL query, so it must be
-            // JSONP.
-            return this._createJSONPSource(source);
-        } else {
-            // Not a YQL query or JSONP, so we'll assume it's an XHR URL.
-            return this._createIOSource(source);
-        }
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified YQL query string
-     * to create a YQL-based source. See the <code>source</code> attribute for
-     * details. If no <code>resultListLocator</code> is defined, this method
-     * will set a best-guess locator that might work for many typical YQL
-     * queries.
-     *
-     * @method _createYQLSource
-     * @param {String} source YQL query.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createYQLSource: function (source) {
-        var cache     = {},
-            yqlSource = {type: 'yql'},
-            that      = this,
-            lastRequest, loading, yqlRequest;
-
-        if (!this.get(RESULT_LIST_LOCATOR)) {
-            this.set(RESULT_LIST_LOCATOR, this._defaultYQLLocator);
-        }
-
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query,
-                callback, env, maxResults, opts, yqlQuery;
-
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            callback = function (data) {
-                cache[cacheKey] = data;
-                that[_SOURCE_SUCCESS](data, request);
-            };
-
-            env        = that.get('yqlEnv');
-            maxResults = that.get(MAX_RESULTS);
-
-            opts = {proto: that.get('yqlProtocol')};
-
-            yqlQuery = Lang.sub(source, {
-                maxResults: maxResults > 0 ? maxResults : 1000,
-                query     : query
-            });
-
-            // Only create a new YQLRequest instance if this is the
-            // first request. For subsequent requests, we'll reuse the
-            // original instance.
-            if (yqlRequest) {
-                yqlRequest._callback   = callback;
-                yqlRequest._opts       = opts;
-                yqlRequest._params.q   = yqlQuery;
-
-                if (env) {
-                    yqlRequest._params.env = env;
-                }
-            } else {
-                yqlRequest = new Y.YQLRequest(yqlQuery, {
-                    on: {success: callback},
-                    allowCache: false // temp workaround until JSONP has per-URL callback proxies
-                }, env ? {env: env} : null, opts);
-            }
-
-            yqlRequest.send();
-        }
-
-        yqlSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the YQL module to load. Only the
-            // most recent request will be sent.
-            lastRequest = request;
-
-            if (!loading) {
-                // Lazy-load the YQL module if necessary, then overwrite the
-                // sendRequest method to bypass this check in the future.
-                loading = true;
-
-                Y.use('yql', function () {
-                    yqlSource.sendRequest = _sendRequest;
-                    _sendRequest(lastRequest);
-                });
-            }
-        };
-
-        return yqlSource;
-    },
-
-    /**
-     * Default resultListLocator used when a string-based YQL source is set and
-     * the implementer hasn't already specified one.
-     *
-     * @method _defaultYQLLocator
-     * @param {Object} response YQL response object.
-     * @return {Array}
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _defaultYQLLocator: function (response) {
-        var results = response && response.query && response.query.results,
-            values;
-
-        if (results && Lang.isObject(results)) {
-            // If there's only a single value on YQL's results object, that
-            // value almost certainly contains the array of results we want. If
-            // there are 0 or 2+ values, then the values themselves are most
-            // likely the results we want.
-            values  = Y.Object.values(results) || [];
-            results = values.length === 1 ? values[0] : values;
-
-            if (!Lang.isArray(results)) {
-                results = [results];
-            }
-        } else {
-            results = [];
-        }
-
-        return results;
-    },
-
-    /**
-     * Returns a formatted XHR URL based on the specified base <i>url</i>,
-     * <i>query</i>, and the current <i>requestTemplate</i> if any.
-     *
-     * @method _getXHRUrl
-     * @param {String} url Base URL.
-     * @param {Object} request Request object containing `query` and `request`
-     *   properties.
-     * @return {String} Formatted URL.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _getXHRUrl: function (url, request) {
-        var maxResults = this.get(MAX_RESULTS);
-
-        if (request.query !== request.request) {
-            // Append the request template to the URL.
-            url += request.request;
-        }
-
-        return Lang.sub(url, {
-            maxResults: maxResults > 0 ? maxResults : 1000,
-            query     : encodeURIComponent(request.query)
-        });
-    },
-
-    /**
-     * URL formatter passed to <code>JSONPRequest</code> instances.
-     *
-     * @method _jsonpFormatter
-     * @param {String} url
-     * @param {String} proxy
-     * @param {String} query
-     * @return {String} Formatted URL
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _jsonpFormatter: function (url, proxy, query) {
-        var maxResults      = this.get(MAX_RESULTS),
-            requestTemplate = this.get(REQUEST_TEMPLATE);
-
-        if (requestTemplate) {
-            url += requestTemplate(query);
-        }
-
-        return Lang.sub(url, {
-            callback  : proxy,
-            maxResults: maxResults > 0 ? maxResults : 1000,
-            query     : encodeURIComponent(query)
-        });
-    }
-});
-
-// Add attributes to AutoCompleteBase.
-Y.mix(ACBase.ATTRS, {
-    /**
-     * YQL environment file URL to load when the <code>source</code> is set to
-     * a YQL query. Set this to <code>null</code> to use the default Open Data
-     * Tables environment file (http://datatables.org/alltables.env).
-     *
-     * @attribute yqlEnv
-     * @type String
-     * @default null
-     * @for AutoCompleteBase
-     */
-    yqlEnv: {
-        value: null
-    },
-
-    /**
-     * URL protocol to use when the <code>source</code> is set to a YQL query.
-     *
-     * @attribute yqlProtocol
-     * @type String
-     * @default 'http'
-     * @for AutoCompleteBase
-     */
-    yqlProtocol: {
-        value: 'http'
-    }
-});
-
-// Tell AutoCompleteBase about the new source types it can now support.
-Y.mix(ACBase.SOURCE_TYPES, {
-    io    : '_createIOSource',
-    jsonp : '_createJSONPSource',
-    object: '_beforeCreateObjectSource', // Run our version before the base version.
-    select: '_createSelectSource',
-    string: '_createStringSource',
-    yql   : '_createYQLSource'
-}, true);
-
-
-}, '3.4.1' ,{optional:['io-base', 'json-parse', 'jsonp', 'yql'], requires:['autocomplete-base']});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources-min.js


+ 0 - 490
hmc/yui-3.4.1/build/autocomplete-sources/autocomplete-sources.js

@@ -1,490 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('autocomplete-sources', function(Y) {
-
-/**
- * Mixes support for JSONP and YQL result sources into AutoCompleteBase.
- *
- * @module autocomplete
- * @submodule autocomplete-sources
- */
-
-var ACBase = Y.AutoCompleteBase,
-    Lang   = Y.Lang,
-
-    _SOURCE_SUCCESS = '_sourceSuccess',
-
-    MAX_RESULTS         = 'maxResults',
-    REQUEST_TEMPLATE    = 'requestTemplate',
-    RESULT_LIST_LOCATOR = 'resultListLocator';
-
-// Add prototype properties and methods to AutoCompleteBase.
-Y.mix(ACBase.prototype, {
-    /**
-     * Regular expression used to determine whether a String source is a YQL
-     * query.
-     *
-     * @property _YQL_SOURCE_REGEX
-     * @type RegExp
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _YQL_SOURCE_REGEX: /^(?:select|set|use)\s+/i,
-
-    /**
-     * Runs before AutoCompleteBase's <code>_createObjectSource()</code> method
-     * and augments it to support additional object-based source types.
-     *
-     * @method _beforeCreateObjectSource
-     * @param {String} source
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _beforeCreateObjectSource: function (source) {
-        // If the object is a <select> node, use the options as the result
-        // source.
-        if (source instanceof Y.Node &&
-                source.get('nodeName').toLowerCase() === 'select') {
-
-            return this._createSelectSource(source);
-        }
-
-        // If the object is a JSONPRequest instance, try to use it as a JSONP
-        // source.
-        if (Y.JSONPRequest && source instanceof Y.JSONPRequest) {
-            return this._createJSONPSource(source);
-        }
-
-        // Fall back to a basic object source.
-        return this._createObjectSource(source);
-    },
-
-    /**
-     * Creates a DataSource-like object that uses <code>Y.io</code> as a source.
-     * See the <code>source</code> attribute for more details.
-     *
-     * @method _createIOSource
-     * @param {String} source URL.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createIOSource: function (source) {
-        var cache    = {},
-            ioSource = {type: 'io'},
-            that     = this,
-            ioRequest, lastRequest, loading;
-
-        // Private internal _sendRequest method that will be assigned to
-        // ioSource.sendRequest once io-base and json-parse are available.
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query;
-
-            // Return immediately on a cached response.
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            // Cancel any outstanding requests.
-            if (ioRequest && ioRequest.isInProgress()) {
-                ioRequest.abort();
-            }
-
-            ioRequest = Y.io(that._getXHRUrl(source, request), {
-                on: {
-                    success: function (tid, response) {
-                        var data;
-
-                        try {
-                            data = Y.JSON.parse(response.responseText);
-                        } catch (ex) {
-                            Y.error('JSON parse error', ex);
-                        }
-
-                        if (data) {
-                            cache[cacheKey] = data;
-                            that[_SOURCE_SUCCESS](data, request);
-                        }
-                    }
-                }
-            });
-        }
-
-        ioSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the IO module to load. Only the
-            // most recent request will be sent.
-            lastRequest = request;
-
-            if (loading) { return; }
-
-            loading = true;
-
-            // Lazy-load the io-base and json-parse modules if necessary,
-            // then overwrite the sendRequest method to bypass this check in
-            // the future.
-            Y.use('io-base', 'json-parse', function () {
-                ioSource.sendRequest = _sendRequest;
-                _sendRequest(lastRequest);
-            });
-        };
-
-        return ioSource;
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified JSONPRequest
-     * instance as a source. See the <code>source</code> attribute for more
-     * details.
-     *
-     * @method _createJSONPSource
-     * @param {JSONPRequest|String} source URL string or JSONPRequest instance.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createJSONPSource: function (source) {
-        var cache       = {},
-            jsonpSource = {type: 'jsonp'},
-            that        = this,
-            lastRequest, loading;
-
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query;
-
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            // Hack alert: JSONPRequest currently doesn't support
-            // per-request callbacks, so we're reaching into the protected
-            // _config object to make it happen.
-            //
-            // This limitation is mentioned in the following JSONP
-            // enhancement ticket:
-            //
-            // http://yuilibrary.com/projects/yui3/ticket/2529371
-            source._config.on.success = function (data) {
-                cache[cacheKey] = data;
-                that[_SOURCE_SUCCESS](data, request);
-            };
-
-            source.send(query);
-        }
-
-        jsonpSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the JSONP module to load. Only
-            // the most recent request will be sent.
-            lastRequest = request;
-
-            if (loading) { return; }
-
-            loading = true;
-
-            // Lazy-load the JSONP module if necessary, then overwrite the
-            // sendRequest method to bypass this check in the future.
-            Y.use('jsonp', function () {
-                // Turn the source into a JSONPRequest instance if it isn't
-                // one already.
-                if (!(source instanceof Y.JSONPRequest)) {
-                    source = new Y.JSONPRequest(source, {
-                        format: Y.bind(that._jsonpFormatter, that)
-                    });
-                }
-
-                jsonpSource.sendRequest = _sendRequest;
-                _sendRequest(lastRequest);
-            });
-        };
-
-        return jsonpSource;
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified &lt;select&gt;
-     * node as a source.
-     *
-     * @method _createSelectSource
-     * @param {Node} source YUI Node instance wrapping a &lt;select&gt; node.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createSelectSource: function (source) {
-        var that = this;
-
-        return {
-            type: 'select',
-            sendRequest: function (request) {
-                var options = [];
-
-                source.get('options').each(function (option) {
-                    options.push({
-                        html    : option.get('innerHTML'),
-                        index   : option.get('index'),
-                        node    : option,
-                        selected: option.get('selected'),
-                        text    : option.get('text'),
-                        value   : option.get('value')
-                    });
-                });
-
-                that[_SOURCE_SUCCESS](options, request);
-            }
-        };
-    },
-
-    /**
-     * Creates a DataSource-like object that calls the specified  URL or
-     * executes the specified YQL query for results. If the string starts
-     * with "select ", "use ", or "set " (case-insensitive), it's assumed to be
-     * a YQL query; otherwise, it's assumed to be a URL (which may be absolute
-     * or relative). URLs containing a "{callback}" placeholder are assumed to
-     * be JSONP URLs; all others will use XHR. See the <code>source</code>
-     * attribute for more details.
-     *
-     * @method _createStringSource
-     * @param {String} source URL or YQL query.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createStringSource: function (source) {
-        if (this._YQL_SOURCE_REGEX.test(source)) {
-            // Looks like a YQL query.
-            return this._createYQLSource(source);
-        } else if (source.indexOf('{callback}') !== -1) {
-            // Contains a {callback} param and isn't a YQL query, so it must be
-            // JSONP.
-            return this._createJSONPSource(source);
-        } else {
-            // Not a YQL query or JSONP, so we'll assume it's an XHR URL.
-            return this._createIOSource(source);
-        }
-    },
-
-    /**
-     * Creates a DataSource-like object that uses the specified YQL query string
-     * to create a YQL-based source. See the <code>source</code> attribute for
-     * details. If no <code>resultListLocator</code> is defined, this method
-     * will set a best-guess locator that might work for many typical YQL
-     * queries.
-     *
-     * @method _createYQLSource
-     * @param {String} source YQL query.
-     * @return {Object} DataSource-like object.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _createYQLSource: function (source) {
-        var cache     = {},
-            yqlSource = {type: 'yql'},
-            that      = this,
-            lastRequest, loading, yqlRequest;
-
-        if (!this.get(RESULT_LIST_LOCATOR)) {
-            this.set(RESULT_LIST_LOCATOR, this._defaultYQLLocator);
-        }
-
-        function _sendRequest(request) {
-            var cacheKey = request.request,
-                query    = request.query,
-                callback, env, maxResults, opts, yqlQuery;
-
-            if (cache[cacheKey]) {
-                that[_SOURCE_SUCCESS](cache[cacheKey], request);
-                return;
-            }
-
-            callback = function (data) {
-                cache[cacheKey] = data;
-                that[_SOURCE_SUCCESS](data, request);
-            };
-
-            env        = that.get('yqlEnv');
-            maxResults = that.get(MAX_RESULTS);
-
-            opts = {proto: that.get('yqlProtocol')};
-
-            yqlQuery = Lang.sub(source, {
-                maxResults: maxResults > 0 ? maxResults : 1000,
-                query     : query
-            });
-
-            // Only create a new YQLRequest instance if this is the
-            // first request. For subsequent requests, we'll reuse the
-            // original instance.
-            if (yqlRequest) {
-                yqlRequest._callback   = callback;
-                yqlRequest._opts       = opts;
-                yqlRequest._params.q   = yqlQuery;
-
-                if (env) {
-                    yqlRequest._params.env = env;
-                }
-            } else {
-                yqlRequest = new Y.YQLRequest(yqlQuery, {
-                    on: {success: callback},
-                    allowCache: false // temp workaround until JSONP has per-URL callback proxies
-                }, env ? {env: env} : null, opts);
-            }
-
-            yqlRequest.send();
-        }
-
-        yqlSource.sendRequest = function (request) {
-            // Keep track of the most recent request in case there are multiple
-            // requests while we're waiting for the YQL module to load. Only the
-            // most recent request will be sent.
-            lastRequest = request;
-
-            if (!loading) {
-                // Lazy-load the YQL module if necessary, then overwrite the
-                // sendRequest method to bypass this check in the future.
-                loading = true;
-
-                Y.use('yql', function () {
-                    yqlSource.sendRequest = _sendRequest;
-                    _sendRequest(lastRequest);
-                });
-            }
-        };
-
-        return yqlSource;
-    },
-
-    /**
-     * Default resultListLocator used when a string-based YQL source is set and
-     * the implementer hasn't already specified one.
-     *
-     * @method _defaultYQLLocator
-     * @param {Object} response YQL response object.
-     * @return {Array}
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _defaultYQLLocator: function (response) {
-        var results = response && response.query && response.query.results,
-            values;
-
-        if (results && Lang.isObject(results)) {
-            // If there's only a single value on YQL's results object, that
-            // value almost certainly contains the array of results we want. If
-            // there are 0 or 2+ values, then the values themselves are most
-            // likely the results we want.
-            values  = Y.Object.values(results) || [];
-            results = values.length === 1 ? values[0] : values;
-
-            if (!Lang.isArray(results)) {
-                results = [results];
-            }
-        } else {
-            results = [];
-        }
-
-        return results;
-    },
-
-    /**
-     * Returns a formatted XHR URL based on the specified base <i>url</i>,
-     * <i>query</i>, and the current <i>requestTemplate</i> if any.
-     *
-     * @method _getXHRUrl
-     * @param {String} url Base URL.
-     * @param {Object} request Request object containing `query` and `request`
-     *   properties.
-     * @return {String} Formatted URL.
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _getXHRUrl: function (url, request) {
-        var maxResults = this.get(MAX_RESULTS);
-
-        if (request.query !== request.request) {
-            // Append the request template to the URL.
-            url += request.request;
-        }
-
-        return Lang.sub(url, {
-            maxResults: maxResults > 0 ? maxResults : 1000,
-            query     : encodeURIComponent(request.query)
-        });
-    },
-
-    /**
-     * URL formatter passed to <code>JSONPRequest</code> instances.
-     *
-     * @method _jsonpFormatter
-     * @param {String} url
-     * @param {String} proxy
-     * @param {String} query
-     * @return {String} Formatted URL
-     * @protected
-     * @for AutoCompleteBase
-     */
-    _jsonpFormatter: function (url, proxy, query) {
-        var maxResults      = this.get(MAX_RESULTS),
-            requestTemplate = this.get(REQUEST_TEMPLATE);
-
-        if (requestTemplate) {
-            url += requestTemplate(query);
-        }
-
-        return Lang.sub(url, {
-            callback  : proxy,
-            maxResults: maxResults > 0 ? maxResults : 1000,
-            query     : encodeURIComponent(query)
-        });
-    }
-});
-
-// Add attributes to AutoCompleteBase.
-Y.mix(ACBase.ATTRS, {
-    /**
-     * YQL environment file URL to load when the <code>source</code> is set to
-     * a YQL query. Set this to <code>null</code> to use the default Open Data
-     * Tables environment file (http://datatables.org/alltables.env).
-     *
-     * @attribute yqlEnv
-     * @type String
-     * @default null
-     * @for AutoCompleteBase
-     */
-    yqlEnv: {
-        value: null
-    },
-
-    /**
-     * URL protocol to use when the <code>source</code> is set to a YQL query.
-     *
-     * @attribute yqlProtocol
-     * @type String
-     * @default 'http'
-     * @for AutoCompleteBase
-     */
-    yqlProtocol: {
-        value: 'http'
-    }
-});
-
-// Tell AutoCompleteBase about the new source types it can now support.
-Y.mix(ACBase.SOURCE_TYPES, {
-    io    : '_createIOSource',
-    jsonp : '_createJSONPSource',
-    object: '_beforeCreateObjectSource', // Run our version before the base version.
-    select: '_createSelectSource',
-    string: '_createStringSource',
-    yql   : '_createYQLSource'
-}, true);
-
-
-}, '3.4.1' ,{optional:['io-base', 'json-parse', 'jsonp', 'yql'], requires:['autocomplete-base']});

+ 0 - 627
hmc/yui-3.4.1/build/base-base/base-base-debug.js

@@ -1,627 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('base-base', function(Y) {
-
-    /**
-     * The base module provides the Base class, which objects requiring attribute and custom event support can extend. 
-     * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides 
-     * plugin support and also provides the Base.build method which provides a way to build custom classes using extensions.
-     *
-     * @module base
-     */
-
-    /**
-     * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, 
-     * and without the extension support provided by Base.build.
-     *
-     * @module base
-     * @submodule base-base
-     */
-    var O = Y.Object,
-        L = Y.Lang,
-        DOT = ".",
-        DESTROY = "destroy",
-        INIT = "init",
-        INITIALIZED = "initialized",
-        DESTROYED = "destroyed",
-        INITIALIZER = "initializer",
-        BUBBLETARGETS = "bubbleTargets",
-        _BUBBLETARGETS = "_bubbleTargets",
-        OBJECT_CONSTRUCTOR = Object.prototype.constructor,
-        DEEP = "deep",
-        SHALLOW = "shallow",
-        DESTRUCTOR = "destructor",
-
-        Attribute = Y.Attribute,
-
-        _wlmix = function(r, s, wlhash) {
-            var p;
-            for (p in s) {
-                if(wlhash[p]) { 
-                    r[p] = s[p];
-                }
-            }
-            return r;
-        };
-
-    /**
-     * <p>
-     * A base class which objects requiring attributes and custom event support can 
-     * extend. Base also handles the chaining of initializer and destructor methods across 
-     * the hierarchy as part of object construction and destruction. Additionally, attributes configured 
-     * through the static <a href="#property_Base.ATTRS">ATTRS</a> property for each class 
-     * in the hierarchy will be initialized by Base.
-     * </p>
-     *
-     * <p>
-     * The static <a href="#property_Base.NAME">NAME</a> property of each class extending 
-     * from Base will be used as the identifier for the class, and is used by Base to prefix 
-     * all events fired by instances of that class.
-     * </p>
-     *
-     * @class Base
-     * @constructor
-     * @uses Attribute
-     * @uses Plugin.Host
-     *
-     * @param {Object} config Object with configuration property name/value pairs. The object can be 
-     * used to provide default values for the objects published attributes.
-     *
-     * <p>
-     * The config object can also contain the following non-attribute properties, providing a convenient 
-     * way to configure events listeners and plugins for the instance, as part of the constructor call:
-     * </p>
-     *
-     * <dl>
-     *     <dt>on</dt>
-     *     <dd>An event name to listener function map, to register event listeners for the "on" moment of the event. A constructor convenience property for the <a href="Base.html#method_on">on</a> method.</dd>
-     *     <dt>after</dt>
-     *     <dd>An event name to listener function map, to register event listeners for the "after" moment of the event. A constructor convenience property for the <a href="Base.html#method_after">after</a> method.</dd>
-     *     <dt>bubbleTargets</dt>
-     *     <dd>An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the <a href="EventTarget.html#method_addTarget">addTarget</a> method.</dd>
-     *     <dt>plugins</dt>
-     *     <dd>A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the <a href="Plugin.Host.html#method_plug">plug</a> method.</dd>
-     * </dl>
-     */
-    function Base() {
-        Y.log('constructor called', 'life', 'base');
-
-        // So the object can be used as a hash key (as DD does)
-        Y.stamp(this);
-
-        Attribute.call(this);
-
-        // If Plugin.Host has been augmented [ through base-pluginhost ], setup it's
-        // initial state, but don't initialize Plugins yet. That's done after initialization.
-        var PluginHost = Y.Plugin && Y.Plugin.Host;  
-        if (this._initPlugins && PluginHost) {
-            PluginHost.call(this);
-        }
-
-        if (this._lazyAddAttrs !== false) { this._lazyAddAttrs = true; }
-
-        /**
-         * The string used to identify the class of this object.
-         *
-         * @deprecated Use this.constructor.NAME
-         * @property name
-         * @type String
-         */
-        this.name = this.constructor.NAME;
-        this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME;
-
-        this.init.apply(this, arguments);
-    }
-
-    /**
-     * The list of properties which can be configured for 
-     * each attribute (e.g. setter, getter, writeOnce, readOnly etc.)
-     *
-     * @property _ATTR_CFG
-     * @type Array
-     * @static
-     * @private
-     */
-    Base._ATTR_CFG = Attribute._ATTR_CFG.concat("cloneDefaultValue");
-    Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG);
-
-    /**
-     * <p>
-     * The string to be used to identify instances of 
-     * this class, for example in prefixing events.
-     * </p>
-     * <p>
-     * Classes extending Base, should define their own
-     * static NAME property, which should be camelCase by
-     * convention (e.g. MyClass.NAME = "myClass";).
-     * </p>
-     * @property NAME
-     * @type String
-     * @static
-     */
-    Base.NAME = "base";
-
-    /**
-     * The default set of attributes which will be available for instances of this class, and 
-     * their configuration. In addition to the configuration properties listed by 
-     * Attribute's <a href="Attribute.html#method_addAttr">addAttr</a> method, the attribute 
-     * can also be configured with a "cloneDefaultValue" property, which defines how the statically
-     * defined value field should be protected ("shallow", "deep" and false are supported values). 
-     *
-     * By default if the value is an object literal or an array it will be "shallow" cloned, to 
-     * protect the default value.
-     *
-     * @property ATTRS
-     * @type Object
-     * @static
-     */
-    Base.ATTRS = {
-        /**
-         * Flag indicating whether or not this object
-         * has been through the init lifecycle phase.
-         *
-         * @attribute initialized
-         * @readonly
-         * @default false
-         * @type boolean
-         */
-        initialized: {
-            readOnly:true,
-            value:false
-        },
-
-        /**
-         * Flag indicating whether or not this object
-         * has been through the destroy lifecycle phase.
-         *
-         * @attribute destroyed
-         * @readonly
-         * @default false
-         * @type boolean
-         */
-        destroyed: {
-            readOnly:true,
-            value:false
-        }
-    };
-
-    Base.prototype = {
-
-        /**
-         * Init lifecycle method, invoked during construction.
-         * Fires the init event prior to setting up attributes and 
-         * invoking initializers for the class hierarchy.
-         *
-         * @method init
-         * @chainable
-         * @param {Object} config Object with configuration property name/value pairs
-         * @return {Base} A reference to this object
-         */
-        init: function(config) {
-            Y.log('init called', 'life', 'base');
-
-            this._yuievt.config.prefix = this._eventPrefix;
-
-            /**
-             * <p>
-             * Lifecycle event for the init phase, fired prior to initialization. 
-             * Invoking the preventDefault() method on the event object provided 
-             * to subscribers will prevent initialization from occuring.
-             * </p>
-             * <p>
-             * Subscribers to the "after" momemt of this event, will be notified
-             * after initialization of the object is complete (and therefore
-             * cannot prevent initialization).
-             * </p>
-             *
-             * @event init
-             * @preventable _defInitFn
-             * @param {EventFacade} e Event object, with a cfg property which 
-             * refers to the configuration object passed to the constructor.
-             */
-            this.publish(INIT, {
-                queuable:false,
-                fireOnce:true,
-                defaultTargetOnly:true,
-                defaultFn:this._defInitFn
-            });
-
-            this._preInitEventCfg(config);
-
-            this.fire(INIT, {cfg: config});
-
-            return this;
-        },
-
-        /**
-         * Handles the special on, after and target properties which allow the user to
-         * easily configure on and after listeners as well as bubble targets during 
-         * construction, prior to init.
-         *
-         * @private
-         * @method _preInitEventCfg
-         * @param {Object} config The user configuration object
-         */
-        _preInitEventCfg : function(config) {
-            if (config) {
-                if (config.on) {
-                    this.on(config.on);
-                }
-                if (config.after) {
-                    this.after(config.after);
-                }
-            }
-
-            var i, l, target,
-                userTargets = (config && BUBBLETARGETS in config);
-
-            if (userTargets || _BUBBLETARGETS in this) {
-                target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets;
-                if (L.isArray(target)) {
-                    for (i = 0, l = target.length; i < l; i++) { 
-                        this.addTarget(target[i]);
-                    }
-                } else if (target) {
-                    this.addTarget(target);
-                }
-            }
-        },
-
-        /**
-         * <p>
-         * Destroy lifecycle method. Fires the destroy
-         * event, prior to invoking destructors for the
-         * class hierarchy.
-         * </p>
-         * <p>
-         * Subscribers to the destroy
-         * event can invoke preventDefault on the event object, to prevent destruction
-         * from proceeding.
-         * </p>
-         * @method destroy
-         * @return {Base} A reference to this object
-         * @chainable
-         */
-        destroy: function() {
-            Y.log('destroy called', 'life', 'base');
-
-            /**
-             * <p>
-             * Lifecycle event for the destroy phase, 
-             * fired prior to destruction. Invoking the preventDefault 
-             * method on the event object provided to subscribers will 
-             * prevent destruction from proceeding.
-             * </p>
-             * <p>
-             * Subscribers to the "after" moment of this event, will be notified
-             * after destruction is complete (and as a result cannot prevent
-             * destruction).
-             * </p>
-             * @event destroy
-             * @preventable _defDestroyFn
-             * @param {EventFacade} e Event object
-             */
-            this.publish(DESTROY, {
-                queuable:false,
-                fireOnce:true,
-                defaultTargetOnly:true,
-                defaultFn: this._defDestroyFn
-            });
-            this.fire(DESTROY);
-
-            this.detachAll();
-            return this;
-        },
-
-        /**
-         * Default init event handler
-         *
-         * @method _defInitFn
-         * @param {EventFacade} e Event object, with a cfg property which 
-         * refers to the configuration object passed to the constructor.
-         * @protected
-         */
-        _defInitFn : function(e) {
-            this._initHierarchy(e.cfg);
-            if (this._initPlugins) {
-                // Need to initPlugins manually, to handle constructor parsing, static Plug parsing
-                this._initPlugins(e.cfg);
-            }
-            this._set(INITIALIZED, true);
-        },
-
-        /**
-         * Default destroy event handler
-         *
-         * @method _defDestroyFn
-         * @param {EventFacade} e Event object
-         * @protected
-         */
-        _defDestroyFn : function(e) {
-            if (this._destroyPlugins) {
-                this._destroyPlugins();
-            }
-            this._destroyHierarchy();
-            this._set(DESTROYED, true);
-        },
-
-        /**
-         * Returns the class hierarchy for this object, with Base being the last class in the array.
-         *
-         * @method _getClasses
-         * @protected
-         * @return {Function[]} An array of classes (constructor functions), making up the class hierarchy for this object.
-         * This value is cached the first time the method, or _getAttrCfgs, is invoked. Subsequent invocations return the 
-         * cached value.
-         */
-        _getClasses : function() {
-            if (!this._classes) {
-                this._initHierarchyData();
-            }
-            return this._classes;
-        },
-
-        /**
-         * Returns an aggregated set of attribute configurations, by traversing the class hierarchy.
-         *
-         * @method _getAttrCfgs
-         * @protected
-         * @return {Object} The hash of attribute configurations, aggregated across classes in the hierarchy
-         * This value is cached the first time the method, or _getClasses, is invoked. Subsequent invocations return
-         * the cached value.
-         */
-        _getAttrCfgs : function() {
-            if (!this._attrs) {
-                this._initHierarchyData();
-            }
-            return this._attrs;
-        },
-
-        /**
-         * A helper method used when processing ATTRS across the class hierarchy during 
-         * initialization. Returns a disposable object with the attributes defined for 
-         * the provided class, extracted from the set of all attributes passed in .
-         *
-         * @method _filterAttrCfs
-         * @private
-         *
-         * @param {Function} clazz The class for which the desired attributes are required.
-         * @param {Object} allCfgs The set of all attribute configurations for this instance. 
-         * Attributes will be removed from this set, if they belong to the filtered class, so
-         * that by the time all classes are processed, allCfgs will be empty.
-         * 
-         * @return {Object} The set of attributes belonging to the class passed in, in the form
-         * of an object with attribute name/configuration pairs.
-         */
-        _filterAttrCfgs : function(clazz, allCfgs) {
-            var cfgs = null, attr, attrs = clazz.ATTRS;
-
-            if (attrs) {
-                for (attr in attrs) {
-                    if (allCfgs[attr]) {
-                        cfgs = cfgs || {};
-                        cfgs[attr] = allCfgs[attr];
-                        allCfgs[attr] = null;
-                    }
-                }
-            }
-
-            return cfgs;
-        },
-
-        /**
-         * A helper method used by _getClasses and _getAttrCfgs, which determines both
-         * the array of classes and aggregate set of attribute configurations
-         * across the class hierarchy for the instance.
-         *
-         * @method _initHierarchyData
-         * @private
-         */
-        _initHierarchyData : function() {
-            var c = this.constructor,
-                classes = [],
-                attrs = [];
-
-            while (c) {
-                // Add to classes
-                classes[classes.length] = c;
-
-                // Add to attributes
-                if (c.ATTRS) {
-                    attrs[attrs.length] = c.ATTRS;
-                }
-                c = c.superclass ? c.superclass.constructor : null;
-            }
-
-            this._classes = classes;
-            this._attrs = this._aggregateAttrs(attrs);
-        },
-
-        /**
-         * A helper method, used by _initHierarchyData to aggregate 
-         * attribute configuration across the instances class hierarchy.
-         *
-         * The method will protect the attribute configuration value to protect the statically defined 
-         * default value in ATTRS if required (if the value is an object literal, array or the 
-         * attribute configuration has cloneDefaultValue set to shallow or deep).
-         *
-         * @method _aggregateAttrs
-         * @private
-         * @param {Array} allAttrs An array of ATTRS definitions across classes in the hierarchy 
-         * (subclass first, Base last)
-         * @return {Object} The aggregate set of ATTRS definitions for the instance
-         */
-        _aggregateAttrs : function(allAttrs) {
-            var attr,
-                attrs,
-                cfg,
-                val,
-                path,
-                i,
-                clone, 
-                cfgPropsHash = Base._ATTR_CFG_HASH,
-                aggAttrs = {};
-
-            if (allAttrs) {
-                for (i = allAttrs.length-1; i >= 0; --i) {
-                    attrs = allAttrs[i];
-
-                    for (attr in attrs) {
-                        if (attrs.hasOwnProperty(attr)) {
-
-                            // Protect config passed in
-                            //cfg = Y.mix({}, attrs[attr], true, cfgProps);
-                            //cfg = Y.Object(attrs[attr]);
-                            cfg = _wlmix({}, attrs[attr], cfgPropsHash);
-
-                            val = cfg.value;
-                            clone = cfg.cloneDefaultValue;
-
-                            if (val) {
-                                if ( (clone === undefined && (OBJECT_CONSTRUCTOR === val.constructor || L.isArray(val))) || clone === DEEP || clone === true) {
-                                    Y.log('Cloning default value for attribute:' + attr, 'info', 'base');
-                                    cfg.value = Y.clone(val);
-                                } else if (clone === SHALLOW) {
-                                    Y.log('Merging default value for attribute:' + attr, 'info', 'base');
-                                    cfg.value = Y.merge(val);
-                                }
-                                // else if (clone === false), don't clone the static default value. 
-                                // It's intended to be used by reference.
-                            }
-
-                            path = null;
-                            if (attr.indexOf(DOT) !== -1) {
-                                path = attr.split(DOT);
-                                attr = path.shift();
-                            }
-
-                            if (path && aggAttrs[attr] && aggAttrs[attr].value) {
-                                O.setValue(aggAttrs[attr].value, path, val);
-                            } else if (!path) {
-                                if (!aggAttrs[attr]) {
-                                    aggAttrs[attr] = cfg;
-                                } else {
-                                    _wlmix(aggAttrs[attr], cfg, cfgPropsHash);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            return aggAttrs;
-        },
-
-        /**
-         * Initializes the class hierarchy for the instance, which includes 
-         * initializing attributes for each class defined in the class's 
-         * static <a href="#property_Base.ATTRS">ATTRS</a> property and 
-         * invoking the initializer method on the prototype of each class in the hierarchy.
-         *
-         * @method _initHierarchy
-         * @param {Object} userVals Object with configuration property name/value pairs
-         * @private
-         */
-        _initHierarchy : function(userVals) {
-            var lazy = this._lazyAddAttrs,
-                constr,
-                constrProto,
-                ci,
-                ei,
-                el,
-                extProto,
-                exts,
-                classes = this._getClasses(),
-                attrCfgs = this._getAttrCfgs();
-
-            for (ci = classes.length-1; ci >= 0; ci--) {
-
-                constr = classes[ci];
-                constrProto = constr.prototype;
-                exts = constr._yuibuild && constr._yuibuild.exts; 
-
-                if (exts) {
-                    for (ei = 0, el = exts.length; ei < el; ei++) {
-                        exts[ei].apply(this, arguments);
-                    }
-                }
-
-                this.addAttrs(this._filterAttrCfgs(constr, attrCfgs), userVals, lazy);
-
-                // Using INITIALIZER in hasOwnProperty check, for performance reasons (helps IE6 avoid GC thresholds when
-                // referencing string literals). Not using it in apply, again, for performance "." is faster. 
-                if (constrProto.hasOwnProperty(INITIALIZER)) {
-                    constrProto.initializer.apply(this, arguments);
-                }
-
-                if (exts) {
-                    for (ei = 0; ei < el; ei++) {
-                        extProto = exts[ei].prototype;
-                        if (extProto.hasOwnProperty(INITIALIZER)) {
-                            extProto.initializer.apply(this, arguments);
-                        }
-                    }
-                }
-            }
-        },
-
-        /**
-         * Destroys the class hierarchy for this instance by invoking
-         * the destructor method on the prototype of each class in the hierarchy.
-         *
-         * @method _destroyHierarchy
-         * @private
-         */
-        _destroyHierarchy : function() {
-            var constr,
-                constrProto,
-                ci, cl, ei, el, exts, extProto,
-                classes = this._getClasses();
-
-            for (ci = 0, cl = classes.length; ci < cl; ci++) {
-                constr = classes[ci];
-                constrProto = constr.prototype;
-                exts = constr._yuibuild && constr._yuibuild.exts; 
-
-                if (exts) {
-                    for (ei = 0, el = exts.length; ei < el; ei++) {
-                        extProto = exts[ei].prototype;
-                        if (extProto.hasOwnProperty(DESTRUCTOR)) {
-                            extProto.destructor.apply(this, arguments);
-                        }
-                    }
-                }
-
-                if (constrProto.hasOwnProperty(DESTRUCTOR)) {
-                    constrProto.destructor.apply(this, arguments);
-                }
-            }
-        },
-
-        /**
-         * Default toString implementation. Provides the constructor NAME
-         * and the instance guid, if set.
-         *
-         * @method toString
-         * @return {String} String representation for this object
-         */
-        toString: function() {
-            return this.name + "[" + Y.stamp(this, true) + "]";
-        }
-
-    };
-
-    // Straightup augment, no wrapper functions
-    Y.mix(Base, Attribute, false, null, 1);
-
-    // Fix constructor
-    Base.prototype.constructor = Base;
-
-    Y.Base = Base;
-
-
-}, '3.4.1' ,{requires:['attribute-base']});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/base-base/base-base-min.js


+ 0 - 622
hmc/yui-3.4.1/build/base-base/base-base.js

@@ -1,622 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('base-base', function(Y) {
-
-    /**
-     * The base module provides the Base class, which objects requiring attribute and custom event support can extend. 
-     * The module also provides two ways to reuse code - It augments Base with the Plugin.Host interface which provides 
-     * plugin support and also provides the Base.build method which provides a way to build custom classes using extensions.
-     *
-     * @module base
-     */
-
-    /**
-     * The base-base submodule provides the Base class without the Plugin support, provided by Plugin.Host, 
-     * and without the extension support provided by Base.build.
-     *
-     * @module base
-     * @submodule base-base
-     */
-    var O = Y.Object,
-        L = Y.Lang,
-        DOT = ".",
-        DESTROY = "destroy",
-        INIT = "init",
-        INITIALIZED = "initialized",
-        DESTROYED = "destroyed",
-        INITIALIZER = "initializer",
-        BUBBLETARGETS = "bubbleTargets",
-        _BUBBLETARGETS = "_bubbleTargets",
-        OBJECT_CONSTRUCTOR = Object.prototype.constructor,
-        DEEP = "deep",
-        SHALLOW = "shallow",
-        DESTRUCTOR = "destructor",
-
-        Attribute = Y.Attribute,
-
-        _wlmix = function(r, s, wlhash) {
-            var p;
-            for (p in s) {
-                if(wlhash[p]) { 
-                    r[p] = s[p];
-                }
-            }
-            return r;
-        };
-
-    /**
-     * <p>
-     * A base class which objects requiring attributes and custom event support can 
-     * extend. Base also handles the chaining of initializer and destructor methods across 
-     * the hierarchy as part of object construction and destruction. Additionally, attributes configured 
-     * through the static <a href="#property_Base.ATTRS">ATTRS</a> property for each class 
-     * in the hierarchy will be initialized by Base.
-     * </p>
-     *
-     * <p>
-     * The static <a href="#property_Base.NAME">NAME</a> property of each class extending 
-     * from Base will be used as the identifier for the class, and is used by Base to prefix 
-     * all events fired by instances of that class.
-     * </p>
-     *
-     * @class Base
-     * @constructor
-     * @uses Attribute
-     * @uses Plugin.Host
-     *
-     * @param {Object} config Object with configuration property name/value pairs. The object can be 
-     * used to provide default values for the objects published attributes.
-     *
-     * <p>
-     * The config object can also contain the following non-attribute properties, providing a convenient 
-     * way to configure events listeners and plugins for the instance, as part of the constructor call:
-     * </p>
-     *
-     * <dl>
-     *     <dt>on</dt>
-     *     <dd>An event name to listener function map, to register event listeners for the "on" moment of the event. A constructor convenience property for the <a href="Base.html#method_on">on</a> method.</dd>
-     *     <dt>after</dt>
-     *     <dd>An event name to listener function map, to register event listeners for the "after" moment of the event. A constructor convenience property for the <a href="Base.html#method_after">after</a> method.</dd>
-     *     <dt>bubbleTargets</dt>
-     *     <dd>An object, or array of objects, to register as bubble targets for bubbled events fired by this instance. A constructor convenience property for the <a href="EventTarget.html#method_addTarget">addTarget</a> method.</dd>
-     *     <dt>plugins</dt>
-     *     <dd>A plugin, or array of plugins to be plugged into the instance (see PluginHost's plug method for signature details). A constructor convenience property for the <a href="Plugin.Host.html#method_plug">plug</a> method.</dd>
-     * </dl>
-     */
-    function Base() {
-
-        // So the object can be used as a hash key (as DD does)
-        Y.stamp(this);
-
-        Attribute.call(this);
-
-        // If Plugin.Host has been augmented [ through base-pluginhost ], setup it's
-        // initial state, but don't initialize Plugins yet. That's done after initialization.
-        var PluginHost = Y.Plugin && Y.Plugin.Host;  
-        if (this._initPlugins && PluginHost) {
-            PluginHost.call(this);
-        }
-
-        if (this._lazyAddAttrs !== false) { this._lazyAddAttrs = true; }
-
-        /**
-         * The string used to identify the class of this object.
-         *
-         * @deprecated Use this.constructor.NAME
-         * @property name
-         * @type String
-         */
-        this.name = this.constructor.NAME;
-        this._eventPrefix = this.constructor.EVENT_PREFIX || this.constructor.NAME;
-
-        this.init.apply(this, arguments);
-    }
-
-    /**
-     * The list of properties which can be configured for 
-     * each attribute (e.g. setter, getter, writeOnce, readOnly etc.)
-     *
-     * @property _ATTR_CFG
-     * @type Array
-     * @static
-     * @private
-     */
-    Base._ATTR_CFG = Attribute._ATTR_CFG.concat("cloneDefaultValue");
-    Base._ATTR_CFG_HASH = Y.Array.hash(Base._ATTR_CFG);
-
-    /**
-     * <p>
-     * The string to be used to identify instances of 
-     * this class, for example in prefixing events.
-     * </p>
-     * <p>
-     * Classes extending Base, should define their own
-     * static NAME property, which should be camelCase by
-     * convention (e.g. MyClass.NAME = "myClass";).
-     * </p>
-     * @property NAME
-     * @type String
-     * @static
-     */
-    Base.NAME = "base";
-
-    /**
-     * The default set of attributes which will be available for instances of this class, and 
-     * their configuration. In addition to the configuration properties listed by 
-     * Attribute's <a href="Attribute.html#method_addAttr">addAttr</a> method, the attribute 
-     * can also be configured with a "cloneDefaultValue" property, which defines how the statically
-     * defined value field should be protected ("shallow", "deep" and false are supported values). 
-     *
-     * By default if the value is an object literal or an array it will be "shallow" cloned, to 
-     * protect the default value.
-     *
-     * @property ATTRS
-     * @type Object
-     * @static
-     */
-    Base.ATTRS = {
-        /**
-         * Flag indicating whether or not this object
-         * has been through the init lifecycle phase.
-         *
-         * @attribute initialized
-         * @readonly
-         * @default false
-         * @type boolean
-         */
-        initialized: {
-            readOnly:true,
-            value:false
-        },
-
-        /**
-         * Flag indicating whether or not this object
-         * has been through the destroy lifecycle phase.
-         *
-         * @attribute destroyed
-         * @readonly
-         * @default false
-         * @type boolean
-         */
-        destroyed: {
-            readOnly:true,
-            value:false
-        }
-    };
-
-    Base.prototype = {
-
-        /**
-         * Init lifecycle method, invoked during construction.
-         * Fires the init event prior to setting up attributes and 
-         * invoking initializers for the class hierarchy.
-         *
-         * @method init
-         * @chainable
-         * @param {Object} config Object with configuration property name/value pairs
-         * @return {Base} A reference to this object
-         */
-        init: function(config) {
-
-            this._yuievt.config.prefix = this._eventPrefix;
-
-            /**
-             * <p>
-             * Lifecycle event for the init phase, fired prior to initialization. 
-             * Invoking the preventDefault() method on the event object provided 
-             * to subscribers will prevent initialization from occuring.
-             * </p>
-             * <p>
-             * Subscribers to the "after" momemt of this event, will be notified
-             * after initialization of the object is complete (and therefore
-             * cannot prevent initialization).
-             * </p>
-             *
-             * @event init
-             * @preventable _defInitFn
-             * @param {EventFacade} e Event object, with a cfg property which 
-             * refers to the configuration object passed to the constructor.
-             */
-            this.publish(INIT, {
-                queuable:false,
-                fireOnce:true,
-                defaultTargetOnly:true,
-                defaultFn:this._defInitFn
-            });
-
-            this._preInitEventCfg(config);
-
-            this.fire(INIT, {cfg: config});
-
-            return this;
-        },
-
-        /**
-         * Handles the special on, after and target properties which allow the user to
-         * easily configure on and after listeners as well as bubble targets during 
-         * construction, prior to init.
-         *
-         * @private
-         * @method _preInitEventCfg
-         * @param {Object} config The user configuration object
-         */
-        _preInitEventCfg : function(config) {
-            if (config) {
-                if (config.on) {
-                    this.on(config.on);
-                }
-                if (config.after) {
-                    this.after(config.after);
-                }
-            }
-
-            var i, l, target,
-                userTargets = (config && BUBBLETARGETS in config);
-
-            if (userTargets || _BUBBLETARGETS in this) {
-                target = userTargets ? (config && config.bubbleTargets) : this._bubbleTargets;
-                if (L.isArray(target)) {
-                    for (i = 0, l = target.length; i < l; i++) { 
-                        this.addTarget(target[i]);
-                    }
-                } else if (target) {
-                    this.addTarget(target);
-                }
-            }
-        },
-
-        /**
-         * <p>
-         * Destroy lifecycle method. Fires the destroy
-         * event, prior to invoking destructors for the
-         * class hierarchy.
-         * </p>
-         * <p>
-         * Subscribers to the destroy
-         * event can invoke preventDefault on the event object, to prevent destruction
-         * from proceeding.
-         * </p>
-         * @method destroy
-         * @return {Base} A reference to this object
-         * @chainable
-         */
-        destroy: function() {
-
-            /**
-             * <p>
-             * Lifecycle event for the destroy phase, 
-             * fired prior to destruction. Invoking the preventDefault 
-             * method on the event object provided to subscribers will 
-             * prevent destruction from proceeding.
-             * </p>
-             * <p>
-             * Subscribers to the "after" moment of this event, will be notified
-             * after destruction is complete (and as a result cannot prevent
-             * destruction).
-             * </p>
-             * @event destroy
-             * @preventable _defDestroyFn
-             * @param {EventFacade} e Event object
-             */
-            this.publish(DESTROY, {
-                queuable:false,
-                fireOnce:true,
-                defaultTargetOnly:true,
-                defaultFn: this._defDestroyFn
-            });
-            this.fire(DESTROY);
-
-            this.detachAll();
-            return this;
-        },
-
-        /**
-         * Default init event handler
-         *
-         * @method _defInitFn
-         * @param {EventFacade} e Event object, with a cfg property which 
-         * refers to the configuration object passed to the constructor.
-         * @protected
-         */
-        _defInitFn : function(e) {
-            this._initHierarchy(e.cfg);
-            if (this._initPlugins) {
-                // Need to initPlugins manually, to handle constructor parsing, static Plug parsing
-                this._initPlugins(e.cfg);
-            }
-            this._set(INITIALIZED, true);
-        },
-
-        /**
-         * Default destroy event handler
-         *
-         * @method _defDestroyFn
-         * @param {EventFacade} e Event object
-         * @protected
-         */
-        _defDestroyFn : function(e) {
-            if (this._destroyPlugins) {
-                this._destroyPlugins();
-            }
-            this._destroyHierarchy();
-            this._set(DESTROYED, true);
-        },
-
-        /**
-         * Returns the class hierarchy for this object, with Base being the last class in the array.
-         *
-         * @method _getClasses
-         * @protected
-         * @return {Function[]} An array of classes (constructor functions), making up the class hierarchy for this object.
-         * This value is cached the first time the method, or _getAttrCfgs, is invoked. Subsequent invocations return the 
-         * cached value.
-         */
-        _getClasses : function() {
-            if (!this._classes) {
-                this._initHierarchyData();
-            }
-            return this._classes;
-        },
-
-        /**
-         * Returns an aggregated set of attribute configurations, by traversing the class hierarchy.
-         *
-         * @method _getAttrCfgs
-         * @protected
-         * @return {Object} The hash of attribute configurations, aggregated across classes in the hierarchy
-         * This value is cached the first time the method, or _getClasses, is invoked. Subsequent invocations return
-         * the cached value.
-         */
-        _getAttrCfgs : function() {
-            if (!this._attrs) {
-                this._initHierarchyData();
-            }
-            return this._attrs;
-        },
-
-        /**
-         * A helper method used when processing ATTRS across the class hierarchy during 
-         * initialization. Returns a disposable object with the attributes defined for 
-         * the provided class, extracted from the set of all attributes passed in .
-         *
-         * @method _filterAttrCfs
-         * @private
-         *
-         * @param {Function} clazz The class for which the desired attributes are required.
-         * @param {Object} allCfgs The set of all attribute configurations for this instance. 
-         * Attributes will be removed from this set, if they belong to the filtered class, so
-         * that by the time all classes are processed, allCfgs will be empty.
-         * 
-         * @return {Object} The set of attributes belonging to the class passed in, in the form
-         * of an object with attribute name/configuration pairs.
-         */
-        _filterAttrCfgs : function(clazz, allCfgs) {
-            var cfgs = null, attr, attrs = clazz.ATTRS;
-
-            if (attrs) {
-                for (attr in attrs) {
-                    if (allCfgs[attr]) {
-                        cfgs = cfgs || {};
-                        cfgs[attr] = allCfgs[attr];
-                        allCfgs[attr] = null;
-                    }
-                }
-            }
-
-            return cfgs;
-        },
-
-        /**
-         * A helper method used by _getClasses and _getAttrCfgs, which determines both
-         * the array of classes and aggregate set of attribute configurations
-         * across the class hierarchy for the instance.
-         *
-         * @method _initHierarchyData
-         * @private
-         */
-        _initHierarchyData : function() {
-            var c = this.constructor,
-                classes = [],
-                attrs = [];
-
-            while (c) {
-                // Add to classes
-                classes[classes.length] = c;
-
-                // Add to attributes
-                if (c.ATTRS) {
-                    attrs[attrs.length] = c.ATTRS;
-                }
-                c = c.superclass ? c.superclass.constructor : null;
-            }
-
-            this._classes = classes;
-            this._attrs = this._aggregateAttrs(attrs);
-        },
-
-        /**
-         * A helper method, used by _initHierarchyData to aggregate 
-         * attribute configuration across the instances class hierarchy.
-         *
-         * The method will protect the attribute configuration value to protect the statically defined 
-         * default value in ATTRS if required (if the value is an object literal, array or the 
-         * attribute configuration has cloneDefaultValue set to shallow or deep).
-         *
-         * @method _aggregateAttrs
-         * @private
-         * @param {Array} allAttrs An array of ATTRS definitions across classes in the hierarchy 
-         * (subclass first, Base last)
-         * @return {Object} The aggregate set of ATTRS definitions for the instance
-         */
-        _aggregateAttrs : function(allAttrs) {
-            var attr,
-                attrs,
-                cfg,
-                val,
-                path,
-                i,
-                clone, 
-                cfgPropsHash = Base._ATTR_CFG_HASH,
-                aggAttrs = {};
-
-            if (allAttrs) {
-                for (i = allAttrs.length-1; i >= 0; --i) {
-                    attrs = allAttrs[i];
-
-                    for (attr in attrs) {
-                        if (attrs.hasOwnProperty(attr)) {
-
-                            // Protect config passed in
-                            //cfg = Y.mix({}, attrs[attr], true, cfgProps);
-                            //cfg = Y.Object(attrs[attr]);
-                            cfg = _wlmix({}, attrs[attr], cfgPropsHash);
-
-                            val = cfg.value;
-                            clone = cfg.cloneDefaultValue;
-
-                            if (val) {
-                                if ( (clone === undefined && (OBJECT_CONSTRUCTOR === val.constructor || L.isArray(val))) || clone === DEEP || clone === true) {
-                                    cfg.value = Y.clone(val);
-                                } else if (clone === SHALLOW) {
-                                    cfg.value = Y.merge(val);
-                                }
-                                // else if (clone === false), don't clone the static default value. 
-                                // It's intended to be used by reference.
-                            }
-
-                            path = null;
-                            if (attr.indexOf(DOT) !== -1) {
-                                path = attr.split(DOT);
-                                attr = path.shift();
-                            }
-
-                            if (path && aggAttrs[attr] && aggAttrs[attr].value) {
-                                O.setValue(aggAttrs[attr].value, path, val);
-                            } else if (!path) {
-                                if (!aggAttrs[attr]) {
-                                    aggAttrs[attr] = cfg;
-                                } else {
-                                    _wlmix(aggAttrs[attr], cfg, cfgPropsHash);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            return aggAttrs;
-        },
-
-        /**
-         * Initializes the class hierarchy for the instance, which includes 
-         * initializing attributes for each class defined in the class's 
-         * static <a href="#property_Base.ATTRS">ATTRS</a> property and 
-         * invoking the initializer method on the prototype of each class in the hierarchy.
-         *
-         * @method _initHierarchy
-         * @param {Object} userVals Object with configuration property name/value pairs
-         * @private
-         */
-        _initHierarchy : function(userVals) {
-            var lazy = this._lazyAddAttrs,
-                constr,
-                constrProto,
-                ci,
-                ei,
-                el,
-                extProto,
-                exts,
-                classes = this._getClasses(),
-                attrCfgs = this._getAttrCfgs();
-
-            for (ci = classes.length-1; ci >= 0; ci--) {
-
-                constr = classes[ci];
-                constrProto = constr.prototype;
-                exts = constr._yuibuild && constr._yuibuild.exts; 
-
-                if (exts) {
-                    for (ei = 0, el = exts.length; ei < el; ei++) {
-                        exts[ei].apply(this, arguments);
-                    }
-                }
-
-                this.addAttrs(this._filterAttrCfgs(constr, attrCfgs), userVals, lazy);
-
-                // Using INITIALIZER in hasOwnProperty check, for performance reasons (helps IE6 avoid GC thresholds when
-                // referencing string literals). Not using it in apply, again, for performance "." is faster. 
-                if (constrProto.hasOwnProperty(INITIALIZER)) {
-                    constrProto.initializer.apply(this, arguments);
-                }
-
-                if (exts) {
-                    for (ei = 0; ei < el; ei++) {
-                        extProto = exts[ei].prototype;
-                        if (extProto.hasOwnProperty(INITIALIZER)) {
-                            extProto.initializer.apply(this, arguments);
-                        }
-                    }
-                }
-            }
-        },
-
-        /**
-         * Destroys the class hierarchy for this instance by invoking
-         * the destructor method on the prototype of each class in the hierarchy.
-         *
-         * @method _destroyHierarchy
-         * @private
-         */
-        _destroyHierarchy : function() {
-            var constr,
-                constrProto,
-                ci, cl, ei, el, exts, extProto,
-                classes = this._getClasses();
-
-            for (ci = 0, cl = classes.length; ci < cl; ci++) {
-                constr = classes[ci];
-                constrProto = constr.prototype;
-                exts = constr._yuibuild && constr._yuibuild.exts; 
-
-                if (exts) {
-                    for (ei = 0, el = exts.length; ei < el; ei++) {
-                        extProto = exts[ei].prototype;
-                        if (extProto.hasOwnProperty(DESTRUCTOR)) {
-                            extProto.destructor.apply(this, arguments);
-                        }
-                    }
-                }
-
-                if (constrProto.hasOwnProperty(DESTRUCTOR)) {
-                    constrProto.destructor.apply(this, arguments);
-                }
-            }
-        },
-
-        /**
-         * Default toString implementation. Provides the constructor NAME
-         * and the instance guid, if set.
-         *
-         * @method toString
-         * @return {String} String representation for this object
-         */
-        toString: function() {
-            return this.name + "[" + Y.stamp(this, true) + "]";
-        }
-
-    };
-
-    // Straightup augment, no wrapper functions
-    Y.mix(Base, Attribute, false, null, 1);
-
-    // Fix constructor
-    Base.prototype.constructor = Base;
-
-    Y.Base = Base;
-
-
-}, '3.4.1' ,{requires:['attribute-base']});

+ 0 - 328
hmc/yui-3.4.1/build/base-build/base-build-debug.js

@@ -1,328 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('base-build', function(Y) {
-
-    /**
-     * The base-build submodule provides Base.build functionality, which
-     * can be used to create custom classes, by aggregating extensions onto 
-     * a main class.
-     *
-     * @module base
-     * @submodule base-build
-     * @for Base
-     */
-    var Base = Y.Base,
-        L = Y.Lang,
-        INITIALIZER = "initializer",
-        DESTRUCTOR = "destructor",
-        build;
-
-    Base._build = function(name, main, extensions, px, sx, cfg) {
-
-        var build = Base._build,
-
-            builtClass = build._ctor(main, cfg),
-            buildCfg = build._cfg(main, cfg),
-
-            _mixCust = build._mixCust,
-
-            aggregates = buildCfg.aggregates,
-            custom = buildCfg.custom,
-
-            dynamic = builtClass._yuibuild.dynamic,
-
-            i, l, val, extClass, extProto,
-            initializer,
-            destructor;
-
-        if (dynamic && aggregates) {
-            for (i = 0, l = aggregates.length; i < l; ++i) {
-                val = aggregates[i];
-                if (main.hasOwnProperty(val)) {
-                    builtClass[val] = L.isArray(main[val]) ? [] : {};
-                }
-            }
-        }
-
-        // Augment/Aggregate
-        for (i = 0, l = extensions.length; i < l; i++) {
-            extClass = extensions[i];
-
-            extProto = extClass.prototype;
-            
-            initializer = extProto[INITIALIZER];
-            destructor = extProto[DESTRUCTOR];
-            delete extProto[INITIALIZER];
-            delete extProto[DESTRUCTOR];
-
-            // Prototype, old non-displacing augment
-            Y.mix(builtClass, extClass, true, null, 1);
-
-             // Custom Statics
-            _mixCust(builtClass, extClass, aggregates, custom);
-            
-            if (initializer) { 
-                extProto[INITIALIZER] = initializer;
-            }
-
-            if (destructor) {
-                extProto[DESTRUCTOR] = destructor;
-            }
-
-            builtClass._yuibuild.exts.push(extClass);
-        }
-
-        if (px) {
-            Y.mix(builtClass.prototype, px, true);
-        }
-
-        if (sx) {
-            Y.mix(builtClass, build._clean(sx, aggregates, custom), true);
-            _mixCust(builtClass, sx, aggregates, custom);
-        }
-
-        builtClass.prototype.hasImpl = build._impl;
-
-        if (dynamic) {
-            builtClass.NAME = name;
-            builtClass.prototype.constructor = builtClass;
-        }
-
-        return builtClass;
-    };
-
-    build = Base._build;
-
-    Y.mix(build, {
-
-        _mixCust: function(r, s, aggregates, custom) {
-
-            if (aggregates) {
-                Y.aggregate(r, s, true, aggregates);
-            }
-
-            if (custom) {
-                for (var j in custom) {
-                    if (custom.hasOwnProperty(j)) {
-                        custom[j](j, r, s);
-                    }
-                }
-            }
-        },
-
-        _tmpl: function(main) {
-
-            function BuiltClass() {
-                BuiltClass.superclass.constructor.apply(this, arguments);
-            }
-            Y.extend(BuiltClass, main);
-
-            return BuiltClass;
-        },
-
-        _impl : function(extClass) {
-            var classes = this._getClasses(), i, l, cls, exts, ll, j;
-            for (i = 0, l = classes.length; i < l; i++) {
-                cls = classes[i];
-                if (cls._yuibuild) {
-                    exts = cls._yuibuild.exts;
-                    ll = exts.length;
-    
-                    for (j = 0; j < ll; j++) {
-                        if (exts[j] === extClass) {
-                            return true;
-                        }
-                    }
-                }
-            }
-            return false;
-        },
-
-        _ctor : function(main, cfg) {
-
-           var dynamic = (cfg && false === cfg.dynamic) ? false : true,
-               builtClass = (dynamic) ? build._tmpl(main) : main,
-               buildCfg = builtClass._yuibuild;
-
-            if (!buildCfg) {
-                buildCfg = builtClass._yuibuild = {};
-            }
-
-            buildCfg.id = buildCfg.id || null;
-            buildCfg.exts = buildCfg.exts || [];
-            buildCfg.dynamic = dynamic;
-
-            return builtClass;
-        },
-
-        _cfg : function(main, cfg) {
-            var aggr = [], 
-                cust = {},
-                buildCfg,
-                cfgAggr = (cfg && cfg.aggregates),
-                cfgCustBuild = (cfg && cfg.custom),
-                c = main;
-
-            while (c && c.prototype) {
-                buildCfg = c._buildCfg; 
-                if (buildCfg) {
-                    if (buildCfg.aggregates) {
-                        aggr = aggr.concat(buildCfg.aggregates);
-                    }
-                    if (buildCfg.custom) {
-                        Y.mix(cust, buildCfg.custom, true);
-                    }
-                }
-                c = c.superclass ? c.superclass.constructor : null;
-            }
-
-            if (cfgAggr) {
-                aggr = aggr.concat(cfgAggr);
-            }
-            if (cfgCustBuild) {
-                Y.mix(cust, cfg.cfgBuild, true);
-            }
-
-            return {
-                aggregates: aggr,
-                custom: cust
-            };
-        },
-
-        _clean : function(sx, aggregates, custom) {
-            var prop, i, l, sxclone = Y.merge(sx);
-
-            for (prop in custom) {
-                if (sxclone.hasOwnProperty(prop)) {
-                    delete sxclone[prop];
-                }
-            }
-
-            for (i = 0, l = aggregates.length; i < l; i++) {
-                prop = aggregates[i];
-                if (sxclone.hasOwnProperty(prop)) {
-                    delete sxclone[prop];
-                }
-            }
-
-            return sxclone;
-        }
-    });
-
-    /**
-     * <p>
-     * Builds a custom constructor function (class) from the
-     * main function, and array of extension functions (classes)
-     * provided. The NAME field for the constructor function is 
-     * defined by the first argument passed in.
-     * </p>
-     * <p>
-     * The cfg object supports the following properties
-     * </p>
-     * <dl>
-     *    <dt>dynamic &#60;boolean&#62;</dt>
-     *    <dd>
-     *    <p>If true (default), a completely new class
-     *    is created which extends the main class, and acts as the 
-     *    host on which the extension classes are augmented.</p>
-     *    <p>If false, the extensions classes are augmented directly to
-     *    the main class, modifying the main class' prototype.</p>
-     *    </dd>
-     *    <dt>aggregates &#60;String[]&#62;</dt>
-     *    <dd>An array of static property names, which will get aggregated
-     *    on to the built class, in addition to the default properties build 
-     *    will always aggregate as defined by the main class' static _buildCfg
-     *    property.
-     *    </dd>
-     * </dl>
-     *
-     * @method build
-     * @deprecated Use the more convenient Base.create and Base.mix methods instead
-     * @static
-     * @param {Function} name The name of the new class. Used to defined the NAME property for the new class.
-     * @param {Function} main The main class on which to base the built class
-     * @param {Function[]} extensions The set of extension classes which will be
-     * augmented/aggregated to the built class.
-     * @param {Object} cfg Optional. Build configuration for the class (see description).
-     * @return {Function} A custom class, created from the provided main and extension classes
-     */
-    Base.build = function(name, main, extensions, cfg) {
-        return build(name, main, extensions, null, null, cfg);
-    };
-
-    /**
-     * <p>Creates a new class (constructor function) which extends the base class passed in as the second argument, 
-     * and mixes in the array of extensions provided.</p>
-     * <p>Prototype properties or methods can be added to the new class, using the px argument (similar to Y.extend).</p>
-     * <p>Static properties or methods can be added to the new class, using the sx argument (similar to Y.extend).</p>
-     * <p>
-     * 
-     * </p>
-     * @method create
-     * @static
-     * @param {Function} name The name of the newly created class. Used to defined the NAME property for the new class.
-     * @param {Function} main The base class which the new class should extend. This class needs to be Base or a class derived from base (e.g. Widget).
-     * @param {Function[]} extensions The list of extensions which will be mixed into the built class.
-     * @param {Object} px The set of prototype properties/methods to add to the built class.
-     * @param {Object} sx The set of static properties/methods to add to the built class.
-     * @return {Function} The newly created class.
-     */
-    Base.create = function(name, base, extensions, px, sx) {
-        return build(name, base, extensions, px, sx);
-    };
-
-    /**
-     * <p>Mixes in a list of extensions to an existing class.</p>
-     * @method mix
-     * @static
-     * @param {Function} main The existing class into which the extensions should be mixed.  The class needs to be Base or a class derived from Base (e.g. Widget)
-     * @param {Function[]} extensions The set of extension classes which will mixed into the existing main class.
-     * @return {Function} The modified main class, with extensions mixed in.
-     */
-    Base.mix = function(main, extensions) {
-        return build(null, main, extensions, null, null, {dynamic:false});
-    };
-
-    /**
-     * The build configuration for the Base class.
-     *
-     * Defines the static fields which need to be aggregated
-     * when the Base class is used as the main class passed to
-     * the <a href="#method_Base.build">Base.build</a> method.
-     *
-     * @property _buildCfg
-     * @type Object
-     * @static
-     * @final
-     * @private
-     */
-    Base._buildCfg = {
-        custom : {
-            ATTRS : function(prop, r, s) {
-
-                r.ATTRS = r.ATTRS || {};
-
-                if (s.ATTRS) {
-
-                    var sAttrs = s.ATTRS,
-                        rAttrs = r.ATTRS,
-                        a;
-
-                    for (a in sAttrs) {
-                        if (sAttrs.hasOwnProperty(a)) {
-                            rAttrs[a] = rAttrs[a] || {};
-                            Y.mix(rAttrs[a], sAttrs[a], true);
-                        }
-                    }
-                }
-            }
-        },
-        aggregates : ["_PLUG", "_UNPLUG"]
-    };
-
-
-}, '3.4.1' ,{requires:['base-base']});

File diff suppressed because it is too large
+ 0 - 6
hmc/yui-3.4.1/build/base-build/base-build-min.js


+ 0 - 328
hmc/yui-3.4.1/build/base-build/base-build.js

@@ -1,328 +0,0 @@
-/*
-YUI 3.4.1 (build 4118)
-Copyright 2011 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-YUI.add('base-build', function(Y) {
-
-    /**
-     * The base-build submodule provides Base.build functionality, which
-     * can be used to create custom classes, by aggregating extensions onto 
-     * a main class.
-     *
-     * @module base
-     * @submodule base-build
-     * @for Base
-     */
-    var Base = Y.Base,
-        L = Y.Lang,
-        INITIALIZER = "initializer",
-        DESTRUCTOR = "destructor",
-        build;
-
-    Base._build = function(name, main, extensions, px, sx, cfg) {
-
-        var build = Base._build,
-
-            builtClass = build._ctor(main, cfg),
-            buildCfg = build._cfg(main, cfg),
-
-            _mixCust = build._mixCust,
-
-            aggregates = buildCfg.aggregates,
-            custom = buildCfg.custom,
-
-            dynamic = builtClass._yuibuild.dynamic,
-
-            i, l, val, extClass, extProto,
-            initializer,
-            destructor;
-
-        if (dynamic && aggregates) {
-            for (i = 0, l = aggregates.length; i < l; ++i) {
-                val = aggregates[i];
-                if (main.hasOwnProperty(val)) {
-                    builtClass[val] = L.isArray(main[val]) ? [] : {};
-                }
-            }
-        }
-
-        // Augment/Aggregate
-        for (i = 0, l = extensions.length; i < l; i++) {
-            extClass = extensions[i];
-
-            extProto = extClass.prototype;
-            
-            initializer = extProto[INITIALIZER];
-            destructor = extProto[DESTRUCTOR];
-            delete extProto[INITIALIZER];
-            delete extProto[DESTRUCTOR];
-
-            // Prototype, old non-displacing augment
-            Y.mix(builtClass, extClass, true, null, 1);
-
-             // Custom Statics
-            _mixCust(builtClass, extClass, aggregates, custom);
-            
-            if (initializer) { 
-                extProto[INITIALIZER] = initializer;
-            }
-
-            if (destructor) {
-                extProto[DESTRUCTOR] = destructor;
-            }
-
-            builtClass._yuibuild.exts.push(extClass);
-        }
-
-        if (px) {
-            Y.mix(builtClass.prototype, px, true);
-        }
-
-        if (sx) {
-            Y.mix(builtClass, build._clean(sx, aggregates, custom), true);
-            _mixCust(builtClass, sx, aggregates, custom);
-        }
-
-        builtClass.prototype.hasImpl = build._impl;
-
-        if (dynamic) {
-            builtClass.NAME = name;
-            builtClass.prototype.constructor = builtClass;
-        }
-
-        return builtClass;
-    };
-
-    build = Base._build;
-
-    Y.mix(build, {
-
-        _mixCust: function(r, s, aggregates, custom) {
-
-            if (aggregates) {
-                Y.aggregate(r, s, true, aggregates);
-            }
-
-            if (custom) {
-                for (var j in custom) {
-                    if (custom.hasOwnProperty(j)) {
-                        custom[j](j, r, s);
-                    }
-                }
-            }
-        },
-
-        _tmpl: function(main) {
-
-            function BuiltClass() {
-                BuiltClass.superclass.constructor.apply(this, arguments);
-            }
-            Y.extend(BuiltClass, main);
-
-            return BuiltClass;
-        },
-
-        _impl : function(extClass) {
-            var classes = this._getClasses(), i, l, cls, exts, ll, j;
-            for (i = 0, l = classes.length; i < l; i++) {
-                cls = classes[i];
-                if (cls._yuibuild) {
-                    exts = cls._yuibuild.exts;
-                    ll = exts.length;
-    
-                    for (j = 0; j < ll; j++) {
-                        if (exts[j] === extClass) {
-                            return true;
-                        }
-                    }
-                }
-            }
-            return false;
-        },
-
-        _ctor : function(main, cfg) {
-
-           var dynamic = (cfg && false === cfg.dynamic) ? false : true,
-               builtClass = (dynamic) ? build._tmpl(main) : main,
-               buildCfg = builtClass._yuibuild;
-
-            if (!buildCfg) {
-                buildCfg = builtClass._yuibuild = {};
-            }
-
-            buildCfg.id = buildCfg.id || null;
-            buildCfg.exts = buildCfg.exts || [];
-            buildCfg.dynamic = dynamic;
-
-            return builtClass;
-        },
-
-        _cfg : function(main, cfg) {
-            var aggr = [], 
-                cust = {},
-                buildCfg,
-                cfgAggr = (cfg && cfg.aggregates),
-                cfgCustBuild = (cfg && cfg.custom),
-                c = main;
-
-            while (c && c.prototype) {
-                buildCfg = c._buildCfg; 
-                if (buildCfg) {
-                    if (buildCfg.aggregates) {
-                        aggr = aggr.concat(buildCfg.aggregates);
-                    }
-                    if (buildCfg.custom) {
-                        Y.mix(cust, buildCfg.custom, true);
-                    }
-                }
-                c = c.superclass ? c.superclass.constructor : null;
-            }
-
-            if (cfgAggr) {
-                aggr = aggr.concat(cfgAggr);
-            }
-            if (cfgCustBuild) {
-                Y.mix(cust, cfg.cfgBuild, true);
-            }
-
-            return {
-                aggregates: aggr,
-                custom: cust
-            };
-        },
-
-        _clean : function(sx, aggregates, custom) {
-            var prop, i, l, sxclone = Y.merge(sx);
-
-            for (prop in custom) {
-                if (sxclone.hasOwnProperty(prop)) {
-                    delete sxclone[prop];
-                }
-            }
-
-            for (i = 0, l = aggregates.length; i < l; i++) {
-                prop = aggregates[i];
-                if (sxclone.hasOwnProperty(prop)) {
-                    delete sxclone[prop];
-                }
-            }
-
-            return sxclone;
-        }
-    });
-
-    /**
-     * <p>
-     * Builds a custom constructor function (class) from the
-     * main function, and array of extension functions (classes)
-     * provided. The NAME field for the constructor function is 
-     * defined by the first argument passed in.
-     * </p>
-     * <p>
-     * The cfg object supports the following properties
-     * </p>
-     * <dl>
-     *    <dt>dynamic &#60;boolean&#62;</dt>
-     *    <dd>
-     *    <p>If true (default), a completely new class
-     *    is created which extends the main class, and acts as the 
-     *    host on which the extension classes are augmented.</p>
-     *    <p>If false, the extensions classes are augmented directly to
-     *    the main class, modifying the main class' prototype.</p>
-     *    </dd>
-     *    <dt>aggregates &#60;String[]&#62;</dt>
-     *    <dd>An array of static property names, which will get aggregated
-     *    on to the built class, in addition to the default properties build 
-     *    will always aggregate as defined by the main class' static _buildCfg
-     *    property.
-     *    </dd>
-     * </dl>
-     *
-     * @method build
-     * @deprecated Use the more convenient Base.create and Base.mix methods instead
-     * @static
-     * @param {Function} name The name of the new class. Used to defined the NAME property for the new class.
-     * @param {Function} main The main class on which to base the built class
-     * @param {Function[]} extensions The set of extension classes which will be
-     * augmented/aggregated to the built class.
-     * @param {Object} cfg Optional. Build configuration for the class (see description).
-     * @return {Function} A custom class, created from the provided main and extension classes
-     */
-    Base.build = function(name, main, extensions, cfg) {
-        return build(name, main, extensions, null, null, cfg);
-    };
-
-    /**
-     * <p>Creates a new class (constructor function) which extends the base class passed in as the second argument, 
-     * and mixes in the array of extensions provided.</p>
-     * <p>Prototype properties or methods can be added to the new class, using the px argument (similar to Y.extend).</p>
-     * <p>Static properties or methods can be added to the new class, using the sx argument (similar to Y.extend).</p>
-     * <p>
-     * 
-     * </p>
-     * @method create
-     * @static
-     * @param {Function} name The name of the newly created class. Used to defined the NAME property for the new class.
-     * @param {Function} main The base class which the new class should extend. This class needs to be Base or a class derived from base (e.g. Widget).
-     * @param {Function[]} extensions The list of extensions which will be mixed into the built class.
-     * @param {Object} px The set of prototype properties/methods to add to the built class.
-     * @param {Object} sx The set of static properties/methods to add to the built class.
-     * @return {Function} The newly created class.
-     */
-    Base.create = function(name, base, extensions, px, sx) {
-        return build(name, base, extensions, px, sx);
-    };
-
-    /**
-     * <p>Mixes in a list of extensions to an existing class.</p>
-     * @method mix
-     * @static
-     * @param {Function} main The existing class into which the extensions should be mixed.  The class needs to be Base or a class derived from Base (e.g. Widget)
-     * @param {Function[]} extensions The set of extension classes which will mixed into the existing main class.
-     * @return {Function} The modified main class, with extensions mixed in.
-     */
-    Base.mix = function(main, extensions) {
-        return build(null, main, extensions, null, null, {dynamic:false});
-    };
-
-    /**
-     * The build configuration for the Base class.
-     *
-     * Defines the static fields which need to be aggregated
-     * when the Base class is used as the main class passed to
-     * the <a href="#method_Base.build">Base.build</a> method.
-     *
-     * @property _buildCfg
-     * @type Object
-     * @static
-     * @final
-     * @private
-     */
-    Base._buildCfg = {
-        custom : {
-            ATTRS : function(prop, r, s) {
-
-                r.ATTRS = r.ATTRS || {};
-
-                if (s.ATTRS) {
-
-                    var sAttrs = s.ATTRS,
-                        rAttrs = r.ATTRS,
-                        a;
-
-                    for (a in sAttrs) {
-                        if (sAttrs.hasOwnProperty(a)) {
-                            rAttrs[a] = rAttrs[a] || {};
-                            Y.mix(rAttrs[a], sAttrs[a], true);
-                        }
-                    }
-                }
-            }
-        },
-        aggregates : ["_PLUG", "_UNPLUG"]
-    };
-
-
-}, '3.4.1' ,{requires:['base-base']});

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