am 9b5fdb9c: docs: add checkbox to toggle the api level filter on and off; this includes some function renaming for the related scripts.

Merge commit '9b5fdb9c23f9301d1a963a6e9be4b46ad70922d7' into eclair

* commit '9b5fdb9c23f9301d1a963a6e9be4b46ad70922d7':
  docs: add checkbox to toggle the api level filter on and off;
diff --git a/tools/droiddoc/templates-sdk/customization.cs b/tools/droiddoc/templates-sdk/customization.cs
index 6bdb992..6ae8446 100644
--- a/tools/droiddoc/templates-sdk/customization.cs
+++ b/tools/droiddoc/templates-sdk/customization.cs
@@ -73,9 +73,10 @@
           call:default_search_box() ?><?cs 
     	 	  if:reference ?>
     			  <div id="api-level-toggle">
-    			    <label for="apiLevelControl"><a href="<?cs var:toroot ?>guide/appendix/api-levels.html">Filter by API Level</a>: </label>
-    			    <select id="apiLevelControl">
-    			      <!-- option elements added by buildApiLevelToggle() -->
+    			    <input type="checkbox" id="apiLevelCheckbox" onclick="toggleApiLevelSelector(this)" />
+    			    <label for="apiLevelCheckbox" class="disabled">Filter by API Level: </label>
+    			    <select id="apiLevelSelector">
+    			      <!-- option elements added by buildApiLevelSelector() -->
     			    </select>
     			  </div>
     	 	    <script>
@@ -85,7 +86,7 @@
                   if:!last(since) ?>, <?cs /if ?><?cs
                 /each 
               ?> ];
-              buildApiLevelToggle();
+              buildApiLevelSelector();
             </script><?cs 
     			/if ?>
       </div><!-- headerRight -->
diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css
index eb7e107..954032b 100644
--- a/tools/droiddoc/templates/assets/android-developer-core.css
+++ b/tools/droiddoc/templates/assets/android-developer-core.css
@@ -48,11 +48,12 @@
 }
 
 input, select,
-textarea, option {
+textarea, option, label {
   font-family:inherit;
   font-size:inherit;
   padding:0;
   margin:0;
+  vertical-align:middle;
 }
 
 option {
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.css b/tools/droiddoc/templates/assets/android-developer-docs.css
index e8dc20b..d700c0e 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.css
+++ b/tools/droiddoc/templates/assets/android-developer-docs.css
@@ -341,6 +341,9 @@
 #api-level-toggle {
   padding:0 10px;
   font-size:11px;
+}
+
+#api-level-toggle label.disabled {
   color:#999;
 }
 
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.js b/tools/droiddoc/templates/assets/android-developer-docs.js
index 5f472f6..db5e64f 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.js
+++ b/tools/droiddoc/templates/assets/android-developer-docs.js
@@ -99,7 +99,7 @@
 }
 
 function writeCookie(cookie, val, section, expiration) {
-  if (!val) return;  
+  if (val==undefined) return;
   section = section == null ? "_" : "_"+section+"_";
   if (expiration == null) {
     var date = new Date();
diff --git a/tools/droiddoc/templates/assets/android-developer-reference.js b/tools/droiddoc/templates/assets/android-developer-reference.js
index 3080760..b96e136 100644
--- a/tools/droiddoc/templates/assets/android-developer-reference.js
+++ b/tools/droiddoc/templates/assets/android-developer-reference.js
@@ -1,48 +1,77 @@
 
 /* API LEVEL TOGGLE */
 addLoadEvent(changeApiLevel);
+
+var API_LEVEL_ENABLED_COOKIE = "api_level_enabled";
 var API_LEVEL_COOKIE = "api_level";
 var minLevel = 1;
 
-function buildApiLevelToggle() {
-	var maxLevel = SINCE_DATA.length;
-	var userApiLevel = readCookie(API_LEVEL_COOKIE);
-	
-	if (userApiLevel != 0) {
-		selectedLevel = userApiLevel;
-	} else {
-	  selectedLevel = maxLevel;
-	}
+function toggleApiLevelSelector(checkbox) {
+  var date = new Date();
+  date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
+  var expiration = date.toGMTString();
+  if (checkbox.checked) {
+    $("#apiLevelSelector").removeAttr("disabled");
+    $("#api-level-toggle label").removeClass("disabled");
+    writeCookie(API_LEVEL_ENABLED_COOKIE, 1, null, expiration);
+  } else {
+    $("#apiLevelSelector").attr("disabled","disabled");
+    $("#api-level-toggle label").addClass("disabled");
+    writeCookie(API_LEVEL_ENABLED_COOKIE, 0, null, expiration);
+  }
+  changeApiLevel();
+}
+
+function buildApiLevelSelector() {
+  var maxLevel = SINCE_DATA.length;
+  var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
+  var userApiLevel = readCookie(API_LEVEL_COOKIE);
+
+  if (userApiLevelEnabled == 0) {
+    $("#apiLevelSelector").attr("disabled","disabled");
+  } else {
+    $("#apiLevelCheckbox").attr("checked","checked");
+    $("#api-level-toggle label").removeClass("disabled");
+  }
 	
   minLevel = $("body").attr("class");
-	var select = $("#apiLevelControl").html("").change(changeApiLevel);
-	for (var i = maxLevel-1; i >= 0; i--) {
-		var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
-//		if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
-		select.append(option);
-	}
+  var select = $("#apiLevelSelector").html("").change(changeApiLevel);
+  for (var i = maxLevel-1; i >= 0; i--) {
+    var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
+  //  if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
+	  select.append(option);
+  }
 	
   // get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true)
-	var selectedLevelItem = $("#apiLevelControl option[value='"+selectedLevel+"']").get(0); 
+  var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0); 
   selectedLevelItem.setAttribute('selected',true); 
 }
 
 function changeApiLevel() {
-	var selectedLevel = $("#apiLevelControl option:selected").val();
-  toggleVisisbleApis(selectedLevel, "body");
+  var maxLevel = SINCE_DATA.length;
+  var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
+  var selectedLevel = maxLevel;	
+	
+  if (userApiLevelEnabled == 0) {
+    toggleVisisbleApis(selectedLevel, "body");
+  } else {
+    selectedLevel = $("#apiLevelSelector option:selected").val();
+    toggleVisisbleApis(selectedLevel, "body");
+    
+    var date = new Date();
+    date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
+    var expiration = date.toGMTString();
+    writeCookie(API_LEVEL_COOKIE, selectedLevel, null, expiration);
+  }
   
-  var date = new Date();
-  date.setTime(date.getTime()+(50*365*24*60*60*1000)); // keep this for 50 years
-  writeCookie(API_LEVEL_COOKIE, selectedLevel, null, date);
-  
-	if (selectedLevel < minLevel) {
-	  var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
-	  $("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
+  if (selectedLevel < minLevel) {
+    var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
+    $("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
                               + "<p>To use this " + thing + ", your application must specify API Level " + minLevel + " or higher in its manifest "
                               + "and be compiled against a version of the Android library that supports an equal or higher API Level. To reveal this "
                               + "document, change the value of the API Level filter above.</p>"
                               + "<p><a href='" +toRoot+ "guide/appendix/api-levels.html'>What is the API Level?</a></p></div>");
-	} else {
+  } else {
     $("#naMessage").hide();
   }
 }
@@ -156,7 +185,7 @@
     node.expanded = true;
     
     // perform api level toggling because new nodes are new to the DOM 
-	  var selectedLevel = $("#apiLevelControl option:selected").val();
+	  var selectedLevel = $("#apiLevelSelector option:selected").val();
     toggleVisisbleApis(selectedLevel, "#side-nav");
   }
 }
@@ -228,7 +257,7 @@
   init_navtree("nav-tree", toroot, NAVTREE_DATA);
   
   // perform api level toggling because because the whole tree is new to the DOM 
-	var selectedLevel = $("#apiLevelControl option:selected").val();
+	var selectedLevel = $("#apiLevelSelector option:selected").val();
   toggleVisisbleApis(selectedLevel, "#side-nav");
 }