Code drop from //branches/cupcake/...@124589
diff --git a/tools/droiddoc/templates/assets/carousel.js b/tools/droiddoc/templates/assets/carousel.js
old mode 100755
new mode 100644
index 9aecad7..dee3130
--- a/tools/droiddoc/templates/assets/carousel.js
+++ b/tools/droiddoc/templates/assets/carousel.js
@@ -1,291 +1,293 @@
-/* file: carousel.js
- date: oct 2008
- author: jeremydw,smain
- info: operates the carousel widget for announcements on
- the android developers home page. modified from the
- original market.js from jeremydw. */
-
-/* -- video switcher -- */
-
-var oldVid = "multi"; // set the default video
-var nowPlayingString = "Now playing:";
-var assetsRoot = "/gae/assets/";
-
-
-/* -- app thumbnail switcher -- */
-
-var currentDroid;
-var oldDroid;
-
-// shows a random application
-function randomDroid(){
-
- // count the total number of apps
- var droidListLength = 0;
- for (var k in droidList)
- droidListLength++;
-
- // pick a random app and show it
- var j = 0;
- var i = Math.floor(droidListLength*Math.random());
- for (var x in droidList) {
- if(j++ == i){
- currentDroid = x;
- showPreview(x);
- centerSlide(x);
- }
- }
-
-}
-
-// shows a bulletin, swaps the carousel highlighting
-function droid(appName){
-
- oldDroid = $("#droidlink-"+currentDroid);
- currentDroid = appName;
-
- var droid = droidList[appName];
- var layout = droid.layout;
- var imgDiv = document.getElementById("bulletinImg");
- var descDiv = document.getElementById("bulletinDesc");
-
- if (layout == "imgLeft") {
- imgDiv.className = "img-left";
- descDiv.className = "desc-right";
- } else if (layout == "imgTop") {
- imgDiv.className = "img-top";
- descDiv.className = "desc-bottom";
- } else if (layout == "imgRight") {
- imgDiv.className = "img-right";
- descDiv.className = "desc-left";
- }
-
- imgDiv.innerHTML = "<img src='" + assetsRoot + "images/home/" + droid.img + "'>";
- descDiv.innerHTML = (droid.title != "") ? "<h3>" + droid.title + "</h3>" + droid.desc : droid.desc;
-
- if(oldDroid)
- oldDroid.removeClass("selected");
-
- $("#droidlink-"+appName).addClass("selected");
-}
-
-
-// -- * build the carousel based on the droidList * -- //
-function buildCarousel() {
- var appList = document.getElementById("app-list");
- for (var x in droidList) {
- var droid = droidList[x];
- var icon = droid.icon;
- var name = droid.name;
- var a = document.createElement("a");
- var img = document.createElement("img");
- var br = document.createElement("br");
- var text = document.createTextNode(droid.name);
-
- a.setAttribute("id", "droidlink-" + x);
- a.className = x;
- a.setAttribute("href", "#");
- a.onclick = function() { showPreview(this.className); return false; }
- img.setAttribute("src", assetsRoot + "images/home/" + droid.icon);
- img.setAttribute("alt", "");
-
- a.appendChild(img);
- a.appendChild(br);
- a.appendChild(text);
- appList.appendChild(a);
- }
-}
-
-// -- * slider * -- //
-
-// -- dependencies:
-// (1) div containing slides, (2) a "clip" div to hide the scroller
-// (3) control arrows
-
-// -- * config below * -- //
-
-var slideCode = droidList; // the dictionary of slides
-var slideList = 'app-list'; // the div containing the slides
-var arrowRight = 'arrow-right'; // the right control arrow
-var arrowLeft = 'arrow-left'; // the left control arrow
-
-
-function showPreview(slideName) {
-// centerSlide(slideName);
- droid(slideName); // do this function when slide is clicked
-
-}
-
-var thumblist = document.getElementById(slideList);// the div containing the slides
-
-var slideWidth = 144; // width of a slide including all margins, etc.
-var slidesAtOnce = 3; // no. of slides to appear at once (requires odd number to have a centered slide)
-
-// -- * no editing should be needed below * -- //
-
-var originPosition = {};
-var is_animating = 0;
-var currentStripPosition = 0;
-var centeringPoint = 0;
-var rightScrollLimit = 0;
-
-// makeSlideStrip()
-// - figures out how many slides there are
-// - determines the centering point of the slide strip
-function makeSlideStrip() {
- var slideTotal = 0;
- centeringPoint = Math.ceil(slidesAtOnce/2);
- for (var x in slideCode) {
- slideTotal++;
- }
- var i = 0;
- for (var code in slideCode) {
- if (i <= centeringPoint-1) {
- originPosition[code] = 0;
- } else {
- if (i >= slideTotal-centeringPoint+1) {
- originPosition[code] = (slideTotal-slidesAtOnce)*slideWidth;
- } else {
- originPosition[code] = (i-centeringPoint+1)*slideWidth;
- }
- }
- i++;
- }
- rightScrollLimit = -1*(slideTotal-slidesAtOnce)*slideWidth;
-}
-
-// slides with acceleration
-function slide(goal, id, go_left, cp) {
- var div = document.getElementById(id);
- var animation = {};
- animation.time = 0.5; // in seconds
- animation.fps = 60;
- animation.goal = goal;
- origin = 0.0;
- animation.origin = Math.abs(origin);
- animation.frames = (animation.time * animation.fps) - 1.0;
- var current_frame = 0;
- var motions = Math.abs(animation.goal - animation.origin);
- function animate() {
- var ease_right = function (t) { return (1 - Math.cos(t * Math.PI))/2.0; };
- var ease = ease_right;
- if (go_left == 1) {
- ease = function(t) { return 1.0 - ease_right(t); };
- }
- var left = (ease(current_frame/animation.frames) * Math.abs(animation.goal - animation.origin)) - cp;
- if(left < 0) {
- left = 0;
- }
- if(!isNaN(left)) {
- div.style.left = '-' + Math.round(left) + 'px';
- }
- current_frame += 1;
- if (current_frame == animation.frames) {
- is_animating = 0;
- window.clearInterval(timeoutId)
- }
- }
- var timeoutId = window.setInterval(animate, animation.time/animation.fps * 1000);
-}
-
-//Get style property
-function getStyle(element, cssProperty){
- var elem = document.getElementById(element);
- if(elem.currentStyle){
- return elem.currentStyle[cssProperty]; //IE
- } else{
- var style = document.defaultView.getComputedStyle(elem, null); //firefox, Opera
- return style.getPropertyValue(cssProperty);
- }
-}
-
-// Left and right arrows
-function page_left() {
- var amount = slideWidth;
- animateSlide(amount, 'left');
-}
-
-function page_right() {
- var amount = slideWidth;
- animateSlide(amount, 'right');
-}
-
-
-// animates the strip
-// - sets arrows to on or off
-function animateSlide(amount,dir) {
- var currentStripPosition = parseInt(getStyle(slideList,'left'));
- var motionDistance;
- if (amount == slideWidth ) {
- motionDistance = slideWidth;
- } else {
- motionDistance = amount;
- }
-
- var rightarrow = document.getElementById(arrowRight);
- var leftarrow = document.getElementById(arrowLeft);
-
- function aToggle(state,aDir) {
- if (state == 'on') {
- if (aDir =='right') {
- rightarrow.className = 'arrow-right-on';
- rightarrow.href = "javascript:page_right()";
- } else {
- leftarrow.className = 'arrow-left-on';
- leftarrow.href = "javascript:page_left()";
- }
- } else {
- if (aDir =='right') {
- rightarrow.href = "javascript:{}";
- rightarrow.className = 'arrow-right-off';
- } else {
- leftarrow.href = "javascript:{}";
- leftarrow.className = 'arrow-left-off';
- }
- }
- }
-
- function arrowChange(rP) {
- if (rP >= rightScrollLimit) {
- aToggle('on','right');
- }
- if (rP <= rightScrollLimit) {
- aToggle('off','right');
- }
- if (rP <= slideWidth) {
- aToggle('on','left');
- }
- if (rP >= 0) {
- aToggle('off','left');
- }
- }
-
- if (dir == 'right' && is_animating == 0) {
- arrowChange(currentStripPosition-motionDistance);
- is_animating = 1;
- slide(motionDistance, slideList, 0, currentStripPosition);
- } else if (dir == 'left' && is_animating == 0) {
- arrowChange(currentStripPosition+motionDistance);
- is_animating = 1;
- rightStripPosition = currentStripPosition + motionDistance;
- slide(motionDistance, slideList, 1, rightStripPosition);
- }
-}
-
-function centerSlide(slideName) {
- var currentStripPosition = parseInt(getStyle(slideList,'left'));
- var dir = 'left';
- var originpoint = Math.abs(currentStripPosition);
- if (originpoint <= originPosition[slideName]) {
- dir = 'right';
- }
- var motionValue = Math.abs(originPosition[slideName]-originpoint);
- animateSlide(motionValue,dir);
-}
-
-
-function initCarousel(def) {
- buildCarousel();
- showPreview(def);
- makeSlideStrip();
-}
\ No newline at end of file
+/* file: carousel.js
+ date: oct 2008
+ author: jeremydw,smain
+ info: operates the carousel widget for announcements on
+ the android developers home page. modified from the
+ original market.js from jeremydw. */
+
+/* -- video switcher -- */
+
+var oldVid = "multi"; // set the default video
+var nowPlayingString = "Now playing:";
+var assetsRoot = "/assets/";
+
+
+/* -- app thumbnail switcher -- */
+
+var currentDroid;
+var oldDroid;
+
+// shows a random application
+function randomDroid(){
+
+ // count the total number of apps
+ var droidListLength = 0;
+ for (var k in droidList)
+ droidListLength++;
+
+ // pick a random app and show it
+ var j = 0;
+ var i = Math.floor(droidListLength*Math.random());
+ for (var x in droidList) {
+ if(j++ == i){
+ currentDroid = x;
+ showPreview(x);
+ centerSlide(x);
+ }
+ }
+
+}
+
+// shows a bulletin, swaps the carousel highlighting
+function droid(appName){
+
+ oldDroid = $("#droidlink-"+currentDroid);
+ currentDroid = appName;
+
+ var droid = droidList[appName];
+ var layout = droid.layout;
+ var imgDiv = document.getElementById("bulletinImg");
+ var descDiv = document.getElementById("bulletinDesc");
+
+ if (layout == "imgLeft") {
+ imgDiv.className = "img-left";
+ descDiv.className = "desc-right";
+ } else if (layout == "imgTop") {
+ imgDiv.className = "img-top";
+ descDiv.className = "desc-bottom";
+ } else if (layout == "imgRight") {
+ imgDiv.className = "img-right";
+ descDiv.className = "desc-left";
+ }
+
+ imgDiv.innerHTML = "<img src='" + assetsRoot + "images/home/" + droid.img + "'>";
+ descDiv.innerHTML = (droid.title != "") ? "<h3>" + droid.title + "</h3>" + droid.desc : droid.desc;
+
+ if(oldDroid)
+ oldDroid.removeClass("selected");
+
+ $("#droidlink-"+appName).addClass("selected");
+}
+
+
+// -- * build the carousel based on the droidList * -- //
+function buildCarousel() {
+ var appList = document.getElementById("app-list");
+ for (var x in droidList) {
+ var droid = droidList[x];
+ var icon = droid.icon;
+ var name = droid.name;
+ var a = document.createElement("a");
+ var img = document.createElement("img");
+ var br = document.createElement("br");
+ var text = document.createTextNode(droid.name);
+
+ a.setAttribute("id", "droidlink-" + x);
+ a.className = x;
+ a.setAttribute("href", "#");
+ a.onclick = function() { showPreview(this.className); return false; }
+ img.setAttribute("src", assetsRoot + "images/home/" + droid.icon);
+ img.setAttribute("alt", "");
+
+ a.appendChild(img);
+ a.appendChild(br);
+ a.appendChild(text);
+ appList.appendChild(a);
+ }
+}
+
+// -- * slider * -- //
+
+// -- dependencies:
+// (1) div containing slides, (2) a "clip" div to hide the scroller
+// (3) control arrows
+
+// -- * config below * -- //
+
+var slideCode = droidList; // the dictionary of slides
+var slideList = 'app-list'; // the div containing the slides
+var arrowRight = 'arrow-right'; // the right control arrow
+var arrowLeft = 'arrow-left'; // the left control arrow
+
+
+function showPreview(slideName) {
+// centerSlide(slideName);
+ if (slideName.indexOf('selected') != -1) {
+ return false;
+ }
+ droid(slideName); // do this function when slide is clicked
+}
+
+var thumblist = document.getElementById(slideList);// the div containing the slides
+
+var slideWidth = 144; // width of a slide including all margins, etc.
+var slidesAtOnce = 3; // no. of slides to appear at once (requires odd number to have a centered slide)
+
+// -- * no editing should be needed below * -- //
+
+var originPosition = {};
+var is_animating = 0;
+var currentStripPosition = 0;
+var centeringPoint = 0;
+var rightScrollLimit = 0;
+
+// makeSlideStrip()
+// - figures out how many slides there are
+// - determines the centering point of the slide strip
+function makeSlideStrip() {
+ var slideTotal = 0;
+ centeringPoint = Math.ceil(slidesAtOnce/2);
+ for (var x in slideCode) {
+ slideTotal++;
+ }
+ var i = 0;
+ for (var code in slideCode) {
+ if (i <= centeringPoint-1) {
+ originPosition[code] = 0;
+ } else {
+ if (i >= slideTotal-centeringPoint+1) {
+ originPosition[code] = (slideTotal-slidesAtOnce)*slideWidth;
+ } else {
+ originPosition[code] = (i-centeringPoint+1)*slideWidth;
+ }
+ }
+ i++;
+ }
+ rightScrollLimit = -1*(slideTotal-slidesAtOnce)*slideWidth;
+}
+
+// slides with acceleration
+function slide(goal, id, go_left, cp) {
+ var div = document.getElementById(id);
+ var animation = {};
+ animation.time = 0.5; // in seconds
+ animation.fps = 60;
+ animation.goal = goal;
+ origin = 0.0;
+ animation.origin = Math.abs(origin);
+ animation.frames = (animation.time * animation.fps) - 1.0;
+ var current_frame = 0;
+ var motions = Math.abs(animation.goal - animation.origin);
+ function animate() {
+ var ease_right = function (t) { return (1 - Math.cos(t * Math.PI))/2.0; };
+ var ease = ease_right;
+ if (go_left == 1) {
+ ease = function(t) { return 1.0 - ease_right(t); };
+ }
+ var left = (ease(current_frame/animation.frames) * Math.abs(animation.goal - animation.origin)) - cp;
+ if(left < 0) {
+ left = 0;
+ }
+ if(!isNaN(left)) {
+ div.style.left = '-' + Math.round(left) + 'px';
+ }
+ current_frame += 1;
+ if (current_frame == animation.frames) {
+ is_animating = 0;
+ window.clearInterval(timeoutId)
+ }
+ }
+ var timeoutId = window.setInterval(animate, animation.time/animation.fps * 1000);
+}
+
+//Get style property
+function getStyle(element, cssProperty){
+ var elem = document.getElementById(element);
+ if(elem.currentStyle){
+ return elem.currentStyle[cssProperty]; //IE
+ } else{
+ var style = document.defaultView.getComputedStyle(elem, null); //firefox, Opera
+ return style.getPropertyValue(cssProperty);
+ }
+}
+
+// Left and right arrows
+function page_left() {
+ var amount = slideWidth;
+ animateSlide(amount, 'left');
+}
+
+function page_right() {
+ var amount = slideWidth;
+ animateSlide(amount, 'right');
+}
+
+
+// animates the strip
+// - sets arrows to on or off
+function animateSlide(amount,dir) {
+ var currentStripPosition = parseInt(getStyle(slideList,'left'));
+ var motionDistance;
+ if (amount == slideWidth ) {
+ motionDistance = slideWidth;
+ } else {
+ motionDistance = amount;
+ }
+
+ var rightarrow = document.getElementById(arrowRight);
+ var leftarrow = document.getElementById(arrowLeft);
+
+ function aToggle(state,aDir) {
+ if (state == 'on') {
+ if (aDir =='right') {
+ rightarrow.className = 'arrow-right-on';
+ rightarrow.href = "javascript:page_right()";
+ } else {
+ leftarrow.className = 'arrow-left-on';
+ leftarrow.href = "javascript:page_left()";
+ }
+ } else {
+ if (aDir =='right') {
+ rightarrow.href = "javascript:{}";
+ rightarrow.className = 'arrow-right-off';
+ } else {
+ leftarrow.href = "javascript:{}";
+ leftarrow.className = 'arrow-left-off';
+ }
+ }
+ }
+
+ function arrowChange(rP) {
+ if (rP >= rightScrollLimit) {
+ aToggle('on','right');
+ }
+ if (rP <= rightScrollLimit) {
+ aToggle('off','right');
+ }
+ if (rP <= slideWidth) {
+ aToggle('on','left');
+ }
+ if (rP >= 0) {
+ aToggle('off','left');
+ }
+ }
+
+ if (dir == 'right' && is_animating == 0) {
+ arrowChange(currentStripPosition-motionDistance);
+ is_animating = 1;
+ slide(motionDistance, slideList, 0, currentStripPosition);
+ } else if (dir == 'left' && is_animating == 0) {
+ arrowChange(currentStripPosition+motionDistance);
+ is_animating = 1;
+ rightStripPosition = currentStripPosition + motionDistance;
+ slide(motionDistance, slideList, 1, rightStripPosition);
+ }
+}
+
+function centerSlide(slideName) {
+ var currentStripPosition = parseInt(getStyle(slideList,'left'));
+ var dir = 'left';
+ var originpoint = Math.abs(currentStripPosition);
+ if (originpoint <= originPosition[slideName]) {
+ dir = 'right';
+ }
+ var motionValue = Math.abs(originPosition[slideName]-originpoint);
+ animateSlide(motionValue,dir);
+}
+
+
+function initCarousel(def) {
+ buildCarousel();
+ showPreview(def);
+ makeSlideStrip();
+}