188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project/* file: carousel.js 288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project date: oct 2008 388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project author: jeremydw,smain 488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project info: operates the carousel widget for announcements on 588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project the android developers home page. modified from the 688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project original market.js from jeremydw. */ 788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project/* -- video switcher -- */ 988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar oldVid = "multi"; // set the default video 1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar nowPlayingString = "Now playing:"; 1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar assetsRoot = "assets/"; 1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project/* -- app thumbnail switcher -- */ 1688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar currentDroid; 1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar oldDroid; 1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// shows a random application 2188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction randomDroid(){ 2288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project // count the total number of apps 2488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var droidListLength = 0; 2588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project for (var k in droidList) 2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project droidListLength++; 2788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project // pick a random app and show it 2988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var j = 0; 3088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var i = Math.floor(droidListLength*Math.random()); 3188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project for (var x in droidList) { 3288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if(j++ == i){ 3388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project currentDroid = x; 3488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project showPreview(x); 3588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project centerSlide(x); 3688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 3788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 3888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 3988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 4088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// shows a bulletin, swaps the carousel highlighting 4288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction droid(appName){ 4388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project oldDroid = $("#droidlink-"+currentDroid); 4588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project currentDroid = appName; 4688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var droid = droidList[appName]; 485db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 495db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $("#"+appName).show().siblings().hide(); 5088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if(oldDroid) 5288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project oldDroid.removeClass("selected"); 5388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $("#droidlink-"+appName).addClass("selected"); 5588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 5688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// -- * build the carousel based on the droidList * -- // 5988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction buildCarousel() { 6088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var appList = document.getElementById("app-list"); 6188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project for (var x in droidList) { 6288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var droid = droidList[x]; 6388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var icon = droid.icon; 6488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var name = droid.name; 6588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var a = document.createElement("a"); 6688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var img = document.createElement("img"); 6788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var br = document.createElement("br"); 6888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var span = document.createElement("span"); 6988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var text = document.createTextNode(droid.name); 7088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.setAttribute("id", "droidlink-" + x); 7288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.className = x; 7388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.setAttribute("href", "#"); 7488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.onclick = function() { showPreview(this.className); return false; } 7588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project img.setAttribute("src", toRoot + assetsRoot + "images/home/" + droid.icon); 7688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project img.setAttribute("alt", ""); 7788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project span.appendChild(text); 7988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.appendChild(img); 8088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.appendChild(br); 8188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project a.appendChild(span); 8288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project appList.appendChild(a); 835db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 845db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 855db40c6db73db3f4433dd3456107efb4468a4a99Scott Main /* add the bulletins */ 861fcce11eed06362b8ea5cdc3ae328990d816bf52Alexey Tarasov var layout = droid.layout; 875db40c6db73db3f4433dd3456107efb4468a4a99Scott Main var div = document.createElement("div"); 885db40c6db73db3f4433dd3456107efb4468a4a99Scott Main var imgDiv = document.createElement("div"); 895db40c6db73db3f4433dd3456107efb4468a4a99Scott Main var descDiv = document.createElement("div"); 905db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 915db40c6db73db3f4433dd3456107efb4468a4a99Scott Main div.setAttribute("id", x); 925db40c6db73db3f4433dd3456107efb4468a4a99Scott Main div.setAttribute("style", "display:none"); 935db40c6db73db3f4433dd3456107efb4468a4a99Scott Main imgDiv.setAttribute("class", "bulletinImg"); 945db40c6db73db3f4433dd3456107efb4468a4a99Scott Main descDiv.setAttribute("class", "bulletinDesc"); 955db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 965db40c6db73db3f4433dd3456107efb4468a4a99Scott Main if (layout == "imgLeft") { 975db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(imgDiv).addClass("img-left"); 985db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(descDiv).addClass("desc-right"); 995db40c6db73db3f4433dd3456107efb4468a4a99Scott Main } else if (layout == "imgTop") { 1005db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(imgDiv).addClass("img-top"); 1015db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(descDiv).addClass("desc-bottom"); 1025db40c6db73db3f4433dd3456107efb4468a4a99Scott Main } else if (layout == "imgRight") { 1035db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(imgDiv).addClass("img-right"); 1045db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(descDiv).addClass("desc-left"); 1055db40c6db73db3f4433dd3456107efb4468a4a99Scott Main } 1065db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 1075db40c6db73db3f4433dd3456107efb4468a4a99Scott Main imgDiv.innerHTML = "<img src='" + toRoot + assetsRoot + "images/home/" + droid.img + "'>"; 1085db40c6db73db3f4433dd3456107efb4468a4a99Scott Main descDiv.innerHTML = (droid.title != "") ? "<h3>" + droid.title + "</h3>" + droid.desc : droid.desc; 1095db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(div).append(imgDiv); 1105db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $(div).append(descDiv); 1115db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 1125db40c6db73db3f4433dd3456107efb4468a4a99Scott Main $("#carouselMain").append(div); 1135db40c6db73db3f4433dd3456107efb4468a4a99Scott Main 11488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 11588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 11688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 11788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// -- * slider * -- // 11888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 11988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// -- dependencies: 12088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// (1) div containing slides, (2) a "clip" div to hide the scroller 12188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// (3) control arrows 12288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 12388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// -- * config below * -- // 12488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 12588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar slideCode = droidList; // the dictionary of slides 12688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar slideList = 'app-list'; // the div containing the slides 12788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar arrowRight = 'arrow-right'; // the right control arrow 12888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar arrowLeft = 'arrow-left'; // the left control arrow 12988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction showPreview(slideName) { 13288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project centerSlide(slideName); 13388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (slideName.indexOf('selected') != -1) { 13488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project return false; 13588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 13688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project droid(slideName); // do this function when slide is clicked 13788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 13888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar thumblist = document.getElementById(slideList);// the div containing the slides 14088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar slideWidth = 144; // width of a slide including all margins, etc. 14288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar slidesAtOnce = 3; // no. of slides to appear at once (requires odd number to have a centered slide) 14388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// -- * no editing should be needed below * -- // 14588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar originPosition = {}; 14788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar is_animating = 0; 14888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar currentStripPosition = 0; 14988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar centeringPoint = 0; 15088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar rightScrollLimit = 0; 15188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// makeSlideStrip() 15388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// - figures out how many slides there are 15488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// - determines the centering point of the slide strip 15588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction makeSlideStrip() { 15688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var slideTotal = 0; 15788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project centeringPoint = Math.ceil(slidesAtOnce/2); 15888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project for (var x in slideCode) { 15988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project slideTotal++; 16088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 16188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var i = 0; 16288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project for (var code in slideCode) { 16388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (i <= centeringPoint-1) { 16488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project originPosition[code] = 0; 16588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 16688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (i >= slideTotal-centeringPoint+1) { 16788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project originPosition[code] = (slideTotal-slidesAtOnce)*slideWidth; 16888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 16988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project originPosition[code] = (i-centeringPoint+1)*slideWidth; 17088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 17188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 17288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project i++; 17388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 17488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightScrollLimit = -1*(slideTotal-slidesAtOnce)*slideWidth; 17588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 17688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// slides with acceleration 17888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction slide(goal, id, go_left, cp) { 17988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var div = document.getElementById(id); 18088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var animation = {}; 18188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animation.time = 0.5; // in seconds 18288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animation.fps = 60; 18388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animation.goal = goal; 18488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project origin = 0.0; 18588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animation.origin = Math.abs(origin); 18688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animation.frames = (animation.time * animation.fps) - 1.0; 18788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var current_frame = 0; 18888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var motions = Math.abs(animation.goal - animation.origin); 18988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project function animate() { 19088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var ease_right = function (t) { return (1 - Math.cos(t * Math.PI))/2.0; }; 19188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var ease = ease_right; 19288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (go_left == 1) { 19388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ease = function(t) { return 1.0 - ease_right(t); }; 19488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 19588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var left = (ease(current_frame/animation.frames) * Math.abs(animation.goal - animation.origin)) - cp; 19688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if(left < 0) { 19788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project left = 0; 19888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 19988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if(!isNaN(left)) { 20088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project div.style.left = '-' + Math.round(left) + 'px'; 20188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 20288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project current_frame += 1; 20388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (current_frame == animation.frames) { 20488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project is_animating = 0; 20588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project window.clearInterval(timeoutId) 20688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 20788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 20888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var timeoutId = window.setInterval(animate, animation.time/animation.fps * 1000); 20988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 21088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 21188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project//Get style property 21288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction getStyle(element, cssProperty){ 21388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var elem = document.getElementById(element); 21488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if(elem.currentStyle){ 21588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project return elem.currentStyle[cssProperty]; //IE 21688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else{ 21788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var style = document.defaultView.getComputedStyle(elem, null); //firefox, Opera 21888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project return style.getPropertyValue(cssProperty); 21988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 22088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 22188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// Left and right arrows 22388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction page_left() { 22488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var amount = slideWidth; 22588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animateSlide(amount, 'left'); 22688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 22788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction page_right() { 22988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var amount = slideWidth; 23088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animateSlide(amount, 'right'); 23188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 23288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// animates the strip 23588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project// - sets arrows to on or off 23688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction animateSlide(amount,dir) { 23788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var currentStripPosition = parseInt(getStyle(slideList,'left')); 23888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var motionDistance; 23988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (amount == slideWidth ) { 24088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project motionDistance = slideWidth; 24188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 24288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project motionDistance = amount; 24388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 24488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 24588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var rightarrow = document.getElementById(arrowRight); 24688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var leftarrow = document.getElementById(arrowLeft); 24788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 24888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project function aToggle(state,aDir) { 24988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (state == 'on') { 25088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (aDir =='right') { 25188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightarrow.className = 'arrow-right-on'; 25288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightarrow.href = "javascript:page_right()"; 25388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 25488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project leftarrow.className = 'arrow-left-on'; 25588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project leftarrow.href = "javascript:page_left()"; 25688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 25788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 25888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (aDir =='right') { 25988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightarrow.href = "javascript:{}"; 26088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightarrow.className = 'arrow-right-off'; 26188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else { 26288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project leftarrow.href = "javascript:{}"; 26388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project leftarrow.className = 'arrow-left-off'; 26488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 26588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 26688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 26788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 26888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project function arrowChange(rP) { 26988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (rP >= rightScrollLimit) { 27088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project aToggle('on','right'); 27188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 27288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (rP <= rightScrollLimit) { 27388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project aToggle('off','right'); 27488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 27588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (rP <= slideWidth) { 27688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project aToggle('on','left'); 27788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 27888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (rP >= 0) { 27988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project aToggle('off','left'); 28088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 28188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 28288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 28388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (dir == 'right' && is_animating == 0) { 28488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project arrowChange(currentStripPosition-motionDistance); 28588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project is_animating = 1; 28688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project slide(motionDistance, slideList, 0, currentStripPosition); 28788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } else if (dir == 'left' && is_animating == 0) { 28888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project arrowChange(currentStripPosition+motionDistance); 28988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project is_animating = 1; 29088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rightStripPosition = currentStripPosition + motionDistance; 29188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project slide(motionDistance, slideList, 1, rightStripPosition); 29288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 29388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 29488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 29588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction centerSlide(slideName) { 29688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var currentStripPosition = parseInt(getStyle(slideList,'left')); 29788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var dir = 'left'; 29888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var originpoint = Math.abs(currentStripPosition); 29988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if (originpoint <= originPosition[slideName]) { 30088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project dir = 'right'; 30188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 30288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project var motionValue = Math.abs(originPosition[slideName]-originpoint); 30388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project animateSlide(motionValue,dir); 30488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 30588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 30688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 30788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction initCarousel(def) { 30888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project buildCarousel(); 30988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project showPreview(def); 31088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project makeSlideStrip(); 31188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project} 312