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