1*9e94795aSAndroid Build Coastguard Workervar resizePackagesNav; 2*9e94795aSAndroid Build Coastguard Workervar classesNav; 3*9e94795aSAndroid Build Coastguard Workervar devdocNav; 4*9e94795aSAndroid Build Coastguard Workervar sidenav; 5*9e94795aSAndroid Build Coastguard Workervar content; 6*9e94795aSAndroid Build Coastguard Workervar HEADER_HEIGHT = 117; 7*9e94795aSAndroid Build Coastguard Workervar cookie_namespace = 'android_developer'; 8*9e94795aSAndroid Build Coastguard Workervar NAV_PREF_TREE = "tree"; 9*9e94795aSAndroid Build Coastguard Workervar NAV_PREF_PANELS = "panels"; 10*9e94795aSAndroid Build Coastguard Workervar nav_pref; 11*9e94795aSAndroid Build Coastguard Workervar toRoot; 12*9e94795aSAndroid Build Coastguard Workervar isMobile = false; // true if mobile, so we can adjust some layout 13*9e94795aSAndroid Build Coastguard Workervar isIE6 = false; // true if IE6 14*9e94795aSAndroid Build Coastguard Worker 15*9e94795aSAndroid Build Coastguard Worker// TODO: use $(document).ready instead 16*9e94795aSAndroid Build Coastguard Workerfunction addLoadEvent(newfun) { 17*9e94795aSAndroid Build Coastguard Worker var current = window.onload; 18*9e94795aSAndroid Build Coastguard Worker if (typeof window.onload != 'function') { 19*9e94795aSAndroid Build Coastguard Worker window.onload = newfun; 20*9e94795aSAndroid Build Coastguard Worker } else { 21*9e94795aSAndroid Build Coastguard Worker window.onload = function() { 22*9e94795aSAndroid Build Coastguard Worker current(); 23*9e94795aSAndroid Build Coastguard Worker newfun(); 24*9e94795aSAndroid Build Coastguard Worker } 25*9e94795aSAndroid Build Coastguard Worker } 26*9e94795aSAndroid Build Coastguard Worker} 27*9e94795aSAndroid Build Coastguard Worker 28*9e94795aSAndroid Build Coastguard Workervar agent = navigator['userAgent'].toLowerCase(); 29*9e94795aSAndroid Build Coastguard Worker// If a mobile phone, set flag and do mobile setup 30*9e94795aSAndroid Build Coastguard Workerif ((agent.indexOf("mobile") != -1) || // android, iphone, ipod 31*9e94795aSAndroid Build Coastguard Worker (agent.indexOf("blackberry") != -1) || 32*9e94795aSAndroid Build Coastguard Worker (agent.indexOf("webos") != -1) || 33*9e94795aSAndroid Build Coastguard Worker (agent.indexOf("mini") != -1)) { // opera mini browsers 34*9e94795aSAndroid Build Coastguard Worker isMobile = true; 35*9e94795aSAndroid Build Coastguard Worker addLoadEvent(mobileSetup); 36*9e94795aSAndroid Build Coastguard Worker// If not a mobile browser, set the onresize event for IE6, and others 37*9e94795aSAndroid Build Coastguard Worker} else if (agent.indexOf("msie 6") != -1) { 38*9e94795aSAndroid Build Coastguard Worker isIE6 = true; 39*9e94795aSAndroid Build Coastguard Worker addLoadEvent(function() { 40*9e94795aSAndroid Build Coastguard Worker window.onresize = resizeAll; 41*9e94795aSAndroid Build Coastguard Worker }); 42*9e94795aSAndroid Build Coastguard Worker} else { 43*9e94795aSAndroid Build Coastguard Worker addLoadEvent(function() { 44*9e94795aSAndroid Build Coastguard Worker window.onresize = resizeHeight; 45*9e94795aSAndroid Build Coastguard Worker }); 46*9e94795aSAndroid Build Coastguard Worker} 47*9e94795aSAndroid Build Coastguard Worker 48*9e94795aSAndroid Build Coastguard Workerfunction mobileSetup() { 49*9e94795aSAndroid Build Coastguard Worker $("body").css({'overflow':'auto'}); 50*9e94795aSAndroid Build Coastguard Worker $("html").css({'overflow':'auto'}); 51*9e94795aSAndroid Build Coastguard Worker $("#body-content").css({'position':'relative', 'top':'0'}); 52*9e94795aSAndroid Build Coastguard Worker $("#doc-content").css({'overflow':'visible', 'border-left':'3px solid #DDD'}); 53*9e94795aSAndroid Build Coastguard Worker $("#side-nav").css({'padding':'0'}); 54*9e94795aSAndroid Build Coastguard Worker $("#nav-tree").css({'overflow-y': 'auto'}); 55*9e94795aSAndroid Build Coastguard Worker} 56*9e94795aSAndroid Build Coastguard Worker 57*9e94795aSAndroid Build Coastguard Worker/* loads the lists.js file to the page. 58*9e94795aSAndroid Build Coastguard WorkerLoading this in the head was slowing page load time */ 59*9e94795aSAndroid Build Coastguard WorkeraddLoadEvent( function() { 60*9e94795aSAndroid Build Coastguard Worker var lists = document.createElement("script"); 61*9e94795aSAndroid Build Coastguard Worker lists.setAttribute("type","text/javascript"); 62*9e94795aSAndroid Build Coastguard Worker lists.setAttribute("src", toRoot+"reference/lists.js"); 63*9e94795aSAndroid Build Coastguard Worker document.getElementsByTagName("head")[0].appendChild(lists); 64*9e94795aSAndroid Build Coastguard Worker} ); 65*9e94795aSAndroid Build Coastguard Worker 66*9e94795aSAndroid Build Coastguard WorkeraddLoadEvent( function() { 67*9e94795aSAndroid Build Coastguard Worker $("pre:not(.no-pretty-print)").addClass("prettyprint"); 68*9e94795aSAndroid Build Coastguard Worker prettyPrint(); 69*9e94795aSAndroid Build Coastguard Worker} ); 70*9e94795aSAndroid Build Coastguard Worker 71*9e94795aSAndroid Build Coastguard Workerfunction setToRoot(root) { 72*9e94795aSAndroid Build Coastguard Worker toRoot = root; 73*9e94795aSAndroid Build Coastguard Worker // note: toRoot also used by carousel.js 74*9e94795aSAndroid Build Coastguard Worker} 75*9e94795aSAndroid Build Coastguard Worker 76*9e94795aSAndroid Build Coastguard Workerfunction restoreWidth(navWidth) { 77*9e94795aSAndroid Build Coastguard Worker var windowWidth = $(window).width() + "px"; 78*9e94795aSAndroid Build Coastguard Worker content.css({marginLeft:parseInt(navWidth) + 6 + "px"}); //account for 6px-wide handle-bar 79*9e94795aSAndroid Build Coastguard Worker 80*9e94795aSAndroid Build Coastguard Worker if (isIE6) { 81*9e94795aSAndroid Build Coastguard Worker content.css({width:parseInt(windowWidth) - parseInt(navWidth) - 6 + "px"}); // necessary in order for scrollbars to be visible 82*9e94795aSAndroid Build Coastguard Worker } 83*9e94795aSAndroid Build Coastguard Worker 84*9e94795aSAndroid Build Coastguard Worker sidenav.css({width:navWidth}); 85*9e94795aSAndroid Build Coastguard Worker resizePackagesNav.css({width:navWidth}); 86*9e94795aSAndroid Build Coastguard Worker classesNav.css({width:navWidth}); 87*9e94795aSAndroid Build Coastguard Worker $("#packages-nav").css({width:navWidth}); 88*9e94795aSAndroid Build Coastguard Worker} 89*9e94795aSAndroid Build Coastguard Worker 90*9e94795aSAndroid Build Coastguard Workerfunction restoreHeight(packageHeight) { 91*9e94795aSAndroid Build Coastguard Worker var windowHeight = ($(window).height() - HEADER_HEIGHT); 92*9e94795aSAndroid Build Coastguard Worker var swapperHeight = windowHeight - 13; 93*9e94795aSAndroid Build Coastguard Worker $("#swapper").css({height:swapperHeight + "px"}); 94*9e94795aSAndroid Build Coastguard Worker sidenav.css({height:windowHeight + "px"}); 95*9e94795aSAndroid Build Coastguard Worker content.css({height:windowHeight + "px"}); 96*9e94795aSAndroid Build Coastguard Worker resizePackagesNav.css({maxHeight:swapperHeight + "px", height:packageHeight}); 97*9e94795aSAndroid Build Coastguard Worker classesNav.css({height:swapperHeight - parseInt(packageHeight) + "px"}); 98*9e94795aSAndroid Build Coastguard Worker $("#packages-nav").css({height:parseInt(packageHeight) - 6 + "px"}); //move 6px to give space for the resize handle 99*9e94795aSAndroid Build Coastguard Worker devdocNav.css({height:sidenav.css("height")}); 100*9e94795aSAndroid Build Coastguard Worker $("#nav-tree").css({height:swapperHeight + "px"}); 101*9e94795aSAndroid Build Coastguard Worker} 102*9e94795aSAndroid Build Coastguard Worker 103*9e94795aSAndroid Build Coastguard Workerfunction readCookie(cookie) { 104*9e94795aSAndroid Build Coastguard Worker var myCookie = cookie_namespace+"_"+cookie+"="; 105*9e94795aSAndroid Build Coastguard Worker if (document.cookie) { 106*9e94795aSAndroid Build Coastguard Worker var index = document.cookie.indexOf(myCookie); 107*9e94795aSAndroid Build Coastguard Worker if (index != -1) { 108*9e94795aSAndroid Build Coastguard Worker var valStart = index + myCookie.length; 109*9e94795aSAndroid Build Coastguard Worker var valEnd = document.cookie.indexOf(";", valStart); 110*9e94795aSAndroid Build Coastguard Worker if (valEnd == -1) { 111*9e94795aSAndroid Build Coastguard Worker valEnd = document.cookie.length; 112*9e94795aSAndroid Build Coastguard Worker } 113*9e94795aSAndroid Build Coastguard Worker var val = document.cookie.substring(valStart, valEnd); 114*9e94795aSAndroid Build Coastguard Worker return val; 115*9e94795aSAndroid Build Coastguard Worker } 116*9e94795aSAndroid Build Coastguard Worker } 117*9e94795aSAndroid Build Coastguard Worker return 0; 118*9e94795aSAndroid Build Coastguard Worker} 119*9e94795aSAndroid Build Coastguard Worker 120*9e94795aSAndroid Build Coastguard Workerfunction writeCookie(cookie, val, section, expiration) { 121*9e94795aSAndroid Build Coastguard Worker if (val==undefined) return; 122*9e94795aSAndroid Build Coastguard Worker section = section == null ? "_" : "_"+section+"_"; 123*9e94795aSAndroid Build Coastguard Worker if (expiration == null) { 124*9e94795aSAndroid Build Coastguard Worker var date = new Date(); 125*9e94795aSAndroid Build Coastguard Worker date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week 126*9e94795aSAndroid Build Coastguard Worker expiration = date.toGMTString(); 127*9e94795aSAndroid Build Coastguard Worker } 128*9e94795aSAndroid Build Coastguard Worker document.cookie = cookie_namespace + section + cookie + "=" + val + "; expires=" + expiration+"; path=/"; 129*9e94795aSAndroid Build Coastguard Worker} 130*9e94795aSAndroid Build Coastguard Worker 131*9e94795aSAndroid Build Coastguard Workerfunction init() { 132*9e94795aSAndroid Build Coastguard Worker $("#side-nav").css({position:"absolute",left:0}); 133*9e94795aSAndroid Build Coastguard Worker content = $("#doc-content"); 134*9e94795aSAndroid Build Coastguard Worker resizePackagesNav = $("#resize-packages-nav"); 135*9e94795aSAndroid Build Coastguard Worker classesNav = $("#classes-nav"); 136*9e94795aSAndroid Build Coastguard Worker sidenav = $("#side-nav"); 137*9e94795aSAndroid Build Coastguard Worker devdocNav = $("#devdoc-nav"); 138*9e94795aSAndroid Build Coastguard Worker 139*9e94795aSAndroid Build Coastguard Worker var cookiePath = ""; 140*9e94795aSAndroid Build Coastguard Worker if (location.href.indexOf("/reference/") != -1) { 141*9e94795aSAndroid Build Coastguard Worker cookiePath = "reference_"; 142*9e94795aSAndroid Build Coastguard Worker } else if (location.href.indexOf("/guide/") != -1) { 143*9e94795aSAndroid Build Coastguard Worker cookiePath = "guide_"; 144*9e94795aSAndroid Build Coastguard Worker } else if (location.href.indexOf("/sdk/") != -1) { 145*9e94795aSAndroid Build Coastguard Worker cookiePath = "sdk_"; 146*9e94795aSAndroid Build Coastguard Worker } else if ((location.href.indexOf("/resources/") != -1) || 147*9e94795aSAndroid Build Coastguard Worker (location.href.indexOf("/training/") != -1)) { 148*9e94795aSAndroid Build Coastguard Worker cookiePath = "resources_"; 149*9e94795aSAndroid Build Coastguard Worker } 150*9e94795aSAndroid Build Coastguard Worker 151*9e94795aSAndroid Build Coastguard Worker if (!isMobile) { 152*9e94795aSAndroid Build Coastguard Worker $("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizePackagesHeight(); } }); 153*9e94795aSAndroid Build Coastguard Worker $("#side-nav").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } }); 154*9e94795aSAndroid Build Coastguard Worker var cookieWidth = readCookie(cookiePath+'width'); 155*9e94795aSAndroid Build Coastguard Worker var cookieHeight = readCookie(cookiePath+'height'); 156*9e94795aSAndroid Build Coastguard Worker if (cookieWidth) { 157*9e94795aSAndroid Build Coastguard Worker restoreWidth(cookieWidth); 158*9e94795aSAndroid Build Coastguard Worker } else if ($("#side-nav").length) { 159*9e94795aSAndroid Build Coastguard Worker resizeWidth(); 160*9e94795aSAndroid Build Coastguard Worker } 161*9e94795aSAndroid Build Coastguard Worker if (cookieHeight) { 162*9e94795aSAndroid Build Coastguard Worker restoreHeight(cookieHeight); 163*9e94795aSAndroid Build Coastguard Worker } else { 164*9e94795aSAndroid Build Coastguard Worker resizeHeight(); 165*9e94795aSAndroid Build Coastguard Worker } 166*9e94795aSAndroid Build Coastguard Worker } 167*9e94795aSAndroid Build Coastguard Worker 168*9e94795aSAndroid Build Coastguard Worker if (devdocNav.length) { // only dev guide, resources, and sdk 169*9e94795aSAndroid Build Coastguard Worker tryPopulateResourcesNav(); 170*9e94795aSAndroid Build Coastguard Worker highlightNav(location.href); 171*9e94795aSAndroid Build Coastguard Worker } 172*9e94795aSAndroid Build Coastguard Worker} 173*9e94795aSAndroid Build Coastguard Worker 174*9e94795aSAndroid Build Coastguard Workerfunction tryPopulateResourcesNav() { 175*9e94795aSAndroid Build Coastguard Worker var sampleList = $('#devdoc-nav-sample-list'); 176*9e94795aSAndroid Build Coastguard Worker var articleList = $('#devdoc-nav-article-list'); 177*9e94795aSAndroid Build Coastguard Worker var tutorialList = $('#devdoc-nav-tutorial-list'); 178*9e94795aSAndroid Build Coastguard Worker var topicList = $('#devdoc-nav-topic-list'); 179*9e94795aSAndroid Build Coastguard Worker 180*9e94795aSAndroid Build Coastguard Worker if (!topicList.length || !ANDROID_TAGS || !ANDROID_RESOURCES) 181*9e94795aSAndroid Build Coastguard Worker return; 182*9e94795aSAndroid Build Coastguard Worker 183*9e94795aSAndroid Build Coastguard Worker var topics = []; 184*9e94795aSAndroid Build Coastguard Worker for (var topic in ANDROID_TAGS['topic']) { 185*9e94795aSAndroid Build Coastguard Worker topics.push({name:topic,title:ANDROID_TAGS['topic'][topic]}); 186*9e94795aSAndroid Build Coastguard Worker } 187*9e94795aSAndroid Build Coastguard Worker topics.sort(function(x,y){ return (x.title < y.title) ? -1 : 1; }); 188*9e94795aSAndroid Build Coastguard Worker for (var i = 0; i < topics.length; i++) { 189*9e94795aSAndroid Build Coastguard Worker topicList.append( 190*9e94795aSAndroid Build Coastguard Worker $('<li>').append( 191*9e94795aSAndroid Build Coastguard Worker $('<a>') 192*9e94795aSAndroid Build Coastguard Worker .attr('href', toRoot + "resources/browser.html?tag=" + topics[i].name) 193*9e94795aSAndroid Build Coastguard Worker .append($('<span>') 194*9e94795aSAndroid Build Coastguard Worker .addClass('en') 195*9e94795aSAndroid Build Coastguard Worker .html(topics[i].title) 196*9e94795aSAndroid Build Coastguard Worker ) 197*9e94795aSAndroid Build Coastguard Worker ) 198*9e94795aSAndroid Build Coastguard Worker ); 199*9e94795aSAndroid Build Coastguard Worker } 200*9e94795aSAndroid Build Coastguard Worker 201*9e94795aSAndroid Build Coastguard Worker var _renderResourceList = function(tag, listNode) { 202*9e94795aSAndroid Build Coastguard Worker var resources = []; 203*9e94795aSAndroid Build Coastguard Worker var tags; 204*9e94795aSAndroid Build Coastguard Worker var resource; 205*9e94795aSAndroid Build Coastguard Worker var i, j; 206*9e94795aSAndroid Build Coastguard Worker for (i = 0; i < ANDROID_RESOURCES.length; i++) { 207*9e94795aSAndroid Build Coastguard Worker resource = ANDROID_RESOURCES[i]; 208*9e94795aSAndroid Build Coastguard Worker tags = resource.tags || []; 209*9e94795aSAndroid Build Coastguard Worker var hasTag = false; 210*9e94795aSAndroid Build Coastguard Worker for (j = 0; j < tags.length; j++) 211*9e94795aSAndroid Build Coastguard Worker if (tags[j] == tag) { 212*9e94795aSAndroid Build Coastguard Worker hasTag = true; 213*9e94795aSAndroid Build Coastguard Worker break; 214*9e94795aSAndroid Build Coastguard Worker } 215*9e94795aSAndroid Build Coastguard Worker if (!hasTag) 216*9e94795aSAndroid Build Coastguard Worker continue; 217*9e94795aSAndroid Build Coastguard Worker resources.push(resource); 218*9e94795aSAndroid Build Coastguard Worker } 219*9e94795aSAndroid Build Coastguard Worker //resources.sort(function(x,y){ return (x.title.en < y.title.en) ? -1 : 1; }); 220*9e94795aSAndroid Build Coastguard Worker for (i = 0; i < resources.length; i++) { 221*9e94795aSAndroid Build Coastguard Worker resource = resources[i]; 222*9e94795aSAndroid Build Coastguard Worker var listItemNode = $('<li>').append( 223*9e94795aSAndroid Build Coastguard Worker $('<a>') 224*9e94795aSAndroid Build Coastguard Worker .attr('href', toRoot + "resources/" + resource.path) 225*9e94795aSAndroid Build Coastguard Worker .append($('<span>') 226*9e94795aSAndroid Build Coastguard Worker .addClass('en') 227*9e94795aSAndroid Build Coastguard Worker .html(resource.title.en) 228*9e94795aSAndroid Build Coastguard Worker ) 229*9e94795aSAndroid Build Coastguard Worker ); 230*9e94795aSAndroid Build Coastguard Worker tags = resource.tags || []; 231*9e94795aSAndroid Build Coastguard Worker for (j = 0; j < tags.length; j++) { 232*9e94795aSAndroid Build Coastguard Worker if (tags[j] == 'new') { 233*9e94795aSAndroid Build Coastguard Worker listItemNode.get(0).innerHTML += ' <span class="new">new!</span>'; 234*9e94795aSAndroid Build Coastguard Worker break; 235*9e94795aSAndroid Build Coastguard Worker } else if (tags[j] == 'updated') { 236*9e94795aSAndroid Build Coastguard Worker listItemNode.get(0).innerHTML += ' <span class="new">updated!</span>'; 237*9e94795aSAndroid Build Coastguard Worker break; 238*9e94795aSAndroid Build Coastguard Worker } 239*9e94795aSAndroid Build Coastguard Worker } 240*9e94795aSAndroid Build Coastguard Worker listNode.append(listItemNode); 241*9e94795aSAndroid Build Coastguard Worker } 242*9e94795aSAndroid Build Coastguard Worker }; 243*9e94795aSAndroid Build Coastguard Worker 244*9e94795aSAndroid Build Coastguard Worker _renderResourceList('sample', sampleList); 245*9e94795aSAndroid Build Coastguard Worker _renderResourceList('article', articleList); 246*9e94795aSAndroid Build Coastguard Worker _renderResourceList('tutorial', tutorialList); 247*9e94795aSAndroid Build Coastguard Worker} 248*9e94795aSAndroid Build Coastguard Worker 249*9e94795aSAndroid Build Coastguard Workerfunction highlightNav(fullPageName) { 250*9e94795aSAndroid Build Coastguard Worker var lastSlashPos = fullPageName.lastIndexOf("/"); 251*9e94795aSAndroid Build Coastguard Worker var firstSlashPos; 252*9e94795aSAndroid Build Coastguard Worker if (fullPageName.indexOf("/guide/") != -1) { 253*9e94795aSAndroid Build Coastguard Worker firstSlashPos = fullPageName.indexOf("/guide/"); 254*9e94795aSAndroid Build Coastguard Worker } else if (fullPageName.indexOf("/sdk/") != -1) { 255*9e94795aSAndroid Build Coastguard Worker firstSlashPos = fullPageName.indexOf("/sdk/"); 256*9e94795aSAndroid Build Coastguard Worker } else if (fullPageName.indexOf("/resources/") != -1) { 257*9e94795aSAndroid Build Coastguard Worker firstSlashPos = fullPageName.indexOf("/resources/"); 258*9e94795aSAndroid Build Coastguard Worker } else if (fullPageName.indexOf("/training/") != -1) { 259*9e94795aSAndroid Build Coastguard Worker firstSlashPos = fullPageName.indexOf("/training/"); 260*9e94795aSAndroid Build Coastguard Worker } 261*9e94795aSAndroid Build Coastguard Worker if (lastSlashPos == (fullPageName.length - 1)) { // if the url ends in slash (add 'index.html') 262*9e94795aSAndroid Build Coastguard Worker fullPageName = fullPageName + "index.html"; 263*9e94795aSAndroid Build Coastguard Worker } 264*9e94795aSAndroid Build Coastguard Worker 265*9e94795aSAndroid Build Coastguard Worker // get the path and page name from the URL (such as 'guide/topics/graphics/index.html') 266*9e94795aSAndroid Build Coastguard Worker var htmlPos = fullPageName.indexOf(".html"); 267*9e94795aSAndroid Build Coastguard Worker var pathPageName = fullPageName.slice(firstSlashPos, htmlPos + 5); // +5 advances past ".html" 268*9e94795aSAndroid Build Coastguard Worker // find instances of the page name in the side nav 269*9e94795aSAndroid Build Coastguard Worker var link = $("#devdoc-nav a[href$='"+ pathPageName+"']"); 270*9e94795aSAndroid Build Coastguard Worker // if there's no match, then let's backstep through the directory until we find an index.html 271*9e94795aSAndroid Build Coastguard Worker // page that matches our ancestor directories (only for dev guide and resources) 272*9e94795aSAndroid Build Coastguard Worker if ((link.length == 0) && ((fullPageName.indexOf("/guide/") != -1) || 273*9e94795aSAndroid Build Coastguard Worker (fullPageName.indexOf("/resources/") != -1))) { 274*9e94795aSAndroid Build Coastguard Worker lastBackstep = pathPageName.lastIndexOf("/"); 275*9e94795aSAndroid Build Coastguard Worker while (link.length == 0) { 276*9e94795aSAndroid Build Coastguard Worker backstepDirectory = pathPageName.lastIndexOf("/", lastBackstep); 277*9e94795aSAndroid Build Coastguard Worker link = $("#devdoc-nav a[href$='"+ pathPageName.slice(0, backstepDirectory + 278*9e94795aSAndroid Build Coastguard Worker 1)+"index.html']"); 279*9e94795aSAndroid Build Coastguard Worker lastBackstep = pathPageName.lastIndexOf("/", lastBackstep - 1); 280*9e94795aSAndroid Build Coastguard Worker if (lastBackstep == 0) break; 281*9e94795aSAndroid Build Coastguard Worker } 282*9e94795aSAndroid Build Coastguard Worker } 283*9e94795aSAndroid Build Coastguard Worker 284*9e94795aSAndroid Build Coastguard Worker // add 'selected' to the <li> or <div> that wraps this <a> 285*9e94795aSAndroid Build Coastguard Worker link.parent().addClass('selected'); 286*9e94795aSAndroid Build Coastguard Worker 287*9e94795aSAndroid Build Coastguard Worker // if we're in a toggleable root link (<li class=toggle-list><div><a>) 288*9e94795aSAndroid Build Coastguard Worker if (link.parent().parent().hasClass('toggle-list')) { 289*9e94795aSAndroid Build Coastguard Worker toggle(link.parent().parent(), false); // open our own list 290*9e94795aSAndroid Build Coastguard Worker // then also check if we're in a third-level nested list that's toggleable 291*9e94795aSAndroid Build Coastguard Worker if (link.parent().parent().parent().is(':hidden')) { 292*9e94795aSAndroid Build Coastguard Worker toggle(link.parent().parent().parent().parent(), false); // open the super parent list 293*9e94795aSAndroid Build Coastguard Worker } 294*9e94795aSAndroid Build Coastguard Worker } 295*9e94795aSAndroid Build Coastguard Worker // if we're in a normal nav link (<li><a>) and the parent <ul> is hidden 296*9e94795aSAndroid Build Coastguard Worker else if (link.parent().parent().is(':hidden')) { 297*9e94795aSAndroid Build Coastguard Worker toggle(link.parent().parent().parent(), false); // open the parent list 298*9e94795aSAndroid Build Coastguard Worker // then also check if the parent list is also nested in a hidden list 299*9e94795aSAndroid Build Coastguard Worker if (link.parent().parent().parent().parent().is(':hidden')) { 300*9e94795aSAndroid Build Coastguard Worker toggle(link.parent().parent().parent().parent().parent(), false); // open the super parent list 301*9e94795aSAndroid Build Coastguard Worker } 302*9e94795aSAndroid Build Coastguard Worker } 303*9e94795aSAndroid Build Coastguard Worker} 304*9e94795aSAndroid Build Coastguard Worker 305*9e94795aSAndroid Build Coastguard Worker/* Resize the height of the nav panels in the reference, 306*9e94795aSAndroid Build Coastguard Worker * and save the new size to a cookie */ 307*9e94795aSAndroid Build Coastguard Workerfunction resizePackagesHeight() { 308*9e94795aSAndroid Build Coastguard Worker var windowHeight = ($(window).height() - HEADER_HEIGHT); 309*9e94795aSAndroid Build Coastguard Worker var swapperHeight = windowHeight - 13; // move 13px for swapper link at the bottom 310*9e94795aSAndroid Build Coastguard Worker resizePackagesNav.css({maxHeight:swapperHeight + "px"}); 311*9e94795aSAndroid Build Coastguard Worker classesNav.css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"}); 312*9e94795aSAndroid Build Coastguard Worker 313*9e94795aSAndroid Build Coastguard Worker $("#swapper").css({height:swapperHeight + "px"}); 314*9e94795aSAndroid Build Coastguard Worker $("#packages-nav").css({height:parseInt(resizePackagesNav.css("height")) - 6 + "px"}); //move 6px for handle 315*9e94795aSAndroid Build Coastguard Worker 316*9e94795aSAndroid Build Coastguard Worker var basePath = getBaseUri(location.pathname); 317*9e94795aSAndroid Build Coastguard Worker var section = basePath.substring(1,basePath.indexOf("/",1)); 318*9e94795aSAndroid Build Coastguard Worker writeCookie("height", resizePackagesNav.css("height"), section, null); 319*9e94795aSAndroid Build Coastguard Worker} 320*9e94795aSAndroid Build Coastguard Worker 321*9e94795aSAndroid Build Coastguard Worker/* Resize the height of the side-nav and doc-content divs, 322*9e94795aSAndroid Build Coastguard Worker * which creates the frame effect */ 323*9e94795aSAndroid Build Coastguard Workerfunction resizeHeight() { 324*9e94795aSAndroid Build Coastguard Worker var docContent = $("#doc-content"); 325*9e94795aSAndroid Build Coastguard Worker 326*9e94795aSAndroid Build Coastguard Worker // Get the window height and always resize the doc-content and side-nav divs 327*9e94795aSAndroid Build Coastguard Worker var windowHeight = ($(window).height() - HEADER_HEIGHT); 328*9e94795aSAndroid Build Coastguard Worker docContent.css({height:windowHeight + "px"}); 329*9e94795aSAndroid Build Coastguard Worker $("#side-nav").css({height:windowHeight + "px"}); 330*9e94795aSAndroid Build Coastguard Worker 331*9e94795aSAndroid Build Coastguard Worker var href = location.href; 332*9e94795aSAndroid Build Coastguard Worker // If in the reference docs, also resize the "swapper", "classes-nav", and "nav-tree" divs 333*9e94795aSAndroid Build Coastguard Worker if (href.indexOf("/reference/") != -1) { 334*9e94795aSAndroid Build Coastguard Worker var swapperHeight = windowHeight - 13; 335*9e94795aSAndroid Build Coastguard Worker $("#swapper").css({height:swapperHeight + "px"}); 336*9e94795aSAndroid Build Coastguard Worker $("#classes-nav").css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"}); 337*9e94795aSAndroid Build Coastguard Worker $("#nav-tree").css({height:swapperHeight + "px"}); 338*9e94795aSAndroid Build Coastguard Worker 339*9e94795aSAndroid Build Coastguard Worker // Also resize the "devdoc-nav" div 340*9e94795aSAndroid Build Coastguard Worker } else if ($("#devdoc-nav").length) { 341*9e94795aSAndroid Build Coastguard Worker $("#devdoc-nav").css({height:sidenav.css("height")}); 342*9e94795aSAndroid Build Coastguard Worker } 343*9e94795aSAndroid Build Coastguard Worker 344*9e94795aSAndroid Build Coastguard Worker // Hide the "Go to top" link if there's no vertical scroll 345*9e94795aSAndroid Build Coastguard Worker if ( parseInt($("#jd-content").css("height")) <= parseInt(docContent.css("height")) ) { 346*9e94795aSAndroid Build Coastguard Worker $("a[href='#top']").css({'display':'none'}); 347*9e94795aSAndroid Build Coastguard Worker } else { 348*9e94795aSAndroid Build Coastguard Worker $("a[href='#top']").css({'display':'inline'}); 349*9e94795aSAndroid Build Coastguard Worker } 350*9e94795aSAndroid Build Coastguard Worker} 351*9e94795aSAndroid Build Coastguard Worker 352*9e94795aSAndroid Build Coastguard Worker/* Resize the width of the "side-nav" and the left margin of the "doc-content" div, 353*9e94795aSAndroid Build Coastguard Worker * which creates the resizable side bar */ 354*9e94795aSAndroid Build Coastguard Workerfunction resizeWidth() { 355*9e94795aSAndroid Build Coastguard Worker var windowWidth = $(window).width() + "px"; 356*9e94795aSAndroid Build Coastguard Worker var sidenav = $("#side-nav"); 357*9e94795aSAndroid Build Coastguard Worker if (sidenav.length) { 358*9e94795aSAndroid Build Coastguard Worker var sidenavWidth = sidenav.css("width"); 359*9e94795aSAndroid Build Coastguard Worker } else { 360*9e94795aSAndroid Build Coastguard Worker var sidenavWidth = 0; 361*9e94795aSAndroid Build Coastguard Worker } 362*9e94795aSAndroid Build Coastguard Worker content.css({marginLeft:parseInt(sidenavWidth) + 6 + "px"}); //account for 6px-wide handle-bar 363*9e94795aSAndroid Build Coastguard Worker 364*9e94795aSAndroid Build Coastguard Worker if (isIE6) { 365*9e94795aSAndroid Build Coastguard Worker content.css({width:parseInt(windowWidth) - parseInt(sidenavWidth) - 6 + "px"}); // necessary in order to for scrollbars to be visible 366*9e94795aSAndroid Build Coastguard Worker } 367*9e94795aSAndroid Build Coastguard Worker 368*9e94795aSAndroid Build Coastguard Worker resizePackagesNav.css({width:sidenavWidth}); 369*9e94795aSAndroid Build Coastguard Worker classesNav.css({width:sidenavWidth}); 370*9e94795aSAndroid Build Coastguard Worker $("#packages-nav").css({width:sidenavWidth}); 371*9e94795aSAndroid Build Coastguard Worker 372*9e94795aSAndroid Build Coastguard Worker if (sidenav.length) { // Must check if the nav exists because IE6 calls resizeWidth() from resizeAll() for all pages 373*9e94795aSAndroid Build Coastguard Worker var basePath = getBaseUri(location.pathname); 374*9e94795aSAndroid Build Coastguard Worker var section = basePath.substring(1,basePath.indexOf("/",1)); 375*9e94795aSAndroid Build Coastguard Worker section = section.indexOf("training") != -1 ? "resources" : section; 376*9e94795aSAndroid Build Coastguard Worker writeCookie("width", sidenavWidth, section, null); 377*9e94795aSAndroid Build Coastguard Worker } 378*9e94795aSAndroid Build Coastguard Worker} 379*9e94795aSAndroid Build Coastguard Worker 380*9e94795aSAndroid Build Coastguard Worker/* For IE6 only, 381*9e94795aSAndroid Build Coastguard Worker * because it can't properly perform auto width for "doc-content" div, 382*9e94795aSAndroid Build Coastguard Worker * avoiding this for all browsers provides better performance */ 383*9e94795aSAndroid Build Coastguard Workerfunction resizeAll() { 384*9e94795aSAndroid Build Coastguard Worker resizeHeight(); 385*9e94795aSAndroid Build Coastguard Worker resizeWidth(); 386*9e94795aSAndroid Build Coastguard Worker} 387*9e94795aSAndroid Build Coastguard Worker 388*9e94795aSAndroid Build Coastguard Workerfunction getBaseUri(uri) { 389*9e94795aSAndroid Build Coastguard Worker var intlUrl = (uri.substring(0,6) == "/intl/"); 390*9e94795aSAndroid Build Coastguard Worker if (intlUrl) { 391*9e94795aSAndroid Build Coastguard Worker base = uri.substring(uri.indexOf('intl/')+5,uri.length); 392*9e94795aSAndroid Build Coastguard Worker base = base.substring(base.indexOf('/')+1, base.length); 393*9e94795aSAndroid Build Coastguard Worker //alert("intl, returning base url: /" + base); 394*9e94795aSAndroid Build Coastguard Worker return ("/" + base); 395*9e94795aSAndroid Build Coastguard Worker } else { 396*9e94795aSAndroid Build Coastguard Worker //alert("not intl, returning uri as found."); 397*9e94795aSAndroid Build Coastguard Worker return uri; 398*9e94795aSAndroid Build Coastguard Worker } 399*9e94795aSAndroid Build Coastguard Worker} 400*9e94795aSAndroid Build Coastguard Worker 401*9e94795aSAndroid Build Coastguard Workerfunction requestAppendHL(uri) { 402*9e94795aSAndroid Build Coastguard Worker//append "?hl=<lang> to an outgoing request (such as to blog) 403*9e94795aSAndroid Build Coastguard Worker var lang = getLangPref(); 404*9e94795aSAndroid Build Coastguard Worker if (lang) { 405*9e94795aSAndroid Build Coastguard Worker var q = 'hl=' + lang; 406*9e94795aSAndroid Build Coastguard Worker uri += '?' + q; 407*9e94795aSAndroid Build Coastguard Worker window.location = uri; 408*9e94795aSAndroid Build Coastguard Worker return false; 409*9e94795aSAndroid Build Coastguard Worker } else { 410*9e94795aSAndroid Build Coastguard Worker return true; 411*9e94795aSAndroid Build Coastguard Worker } 412*9e94795aSAndroid Build Coastguard Worker} 413*9e94795aSAndroid Build Coastguard Worker 414*9e94795aSAndroid Build Coastguard Workerfunction loadLast(cookiePath) { 415*9e94795aSAndroid Build Coastguard Worker var location = window.location.href; 416*9e94795aSAndroid Build Coastguard Worker if (location.indexOf("/"+cookiePath+"/") != -1) { 417*9e94795aSAndroid Build Coastguard Worker return true; 418*9e94795aSAndroid Build Coastguard Worker } 419*9e94795aSAndroid Build Coastguard Worker var lastPage = readCookie(cookiePath + "_lastpage"); 420*9e94795aSAndroid Build Coastguard Worker if (lastPage) { 421*9e94795aSAndroid Build Coastguard Worker window.location = lastPage; 422*9e94795aSAndroid Build Coastguard Worker return false; 423*9e94795aSAndroid Build Coastguard Worker } 424*9e94795aSAndroid Build Coastguard Worker return true; 425*9e94795aSAndroid Build Coastguard Worker} 426*9e94795aSAndroid Build Coastguard Worker 427*9e94795aSAndroid Build Coastguard Worker$(window).unload(function(){ 428*9e94795aSAndroid Build Coastguard Worker var path = getBaseUri(location.pathname); 429*9e94795aSAndroid Build Coastguard Worker if (path.indexOf("/reference/") != -1) { 430*9e94795aSAndroid Build Coastguard Worker writeCookie("lastpage", path, "reference", null); 431*9e94795aSAndroid Build Coastguard Worker } else if (path.indexOf("/guide/") != -1) { 432*9e94795aSAndroid Build Coastguard Worker writeCookie("lastpage", path, "guide", null); 433*9e94795aSAndroid Build Coastguard Worker } else if ((path.indexOf("/resources/") != -1) || (path.indexOf("/training/") != -1)) { 434*9e94795aSAndroid Build Coastguard Worker writeCookie("lastpage", path, "resources", null); 435*9e94795aSAndroid Build Coastguard Worker } 436*9e94795aSAndroid Build Coastguard Worker}); 437*9e94795aSAndroid Build Coastguard Worker 438*9e94795aSAndroid Build Coastguard Workerfunction toggle(obj, slide) { 439*9e94795aSAndroid Build Coastguard Worker var ul = $("ul:first", obj); 440*9e94795aSAndroid Build Coastguard Worker var li = ul.parent(); 441*9e94795aSAndroid Build Coastguard Worker if (li.hasClass("closed")) { 442*9e94795aSAndroid Build Coastguard Worker if (slide) { 443*9e94795aSAndroid Build Coastguard Worker ul.slideDown("fast"); 444*9e94795aSAndroid Build Coastguard Worker } else { 445*9e94795aSAndroid Build Coastguard Worker ul.show(); 446*9e94795aSAndroid Build Coastguard Worker } 447*9e94795aSAndroid Build Coastguard Worker li.removeClass("closed"); 448*9e94795aSAndroid Build Coastguard Worker li.addClass("open"); 449*9e94795aSAndroid Build Coastguard Worker $(".toggle-img", li).attr("title", "hide pages"); 450*9e94795aSAndroid Build Coastguard Worker } else { 451*9e94795aSAndroid Build Coastguard Worker ul.slideUp("fast"); 452*9e94795aSAndroid Build Coastguard Worker li.removeClass("open"); 453*9e94795aSAndroid Build Coastguard Worker li.addClass("closed"); 454*9e94795aSAndroid Build Coastguard Worker $(".toggle-img", li).attr("title", "show pages"); 455*9e94795aSAndroid Build Coastguard Worker } 456*9e94795aSAndroid Build Coastguard Worker} 457*9e94795aSAndroid Build Coastguard Worker 458*9e94795aSAndroid Build Coastguard Workerfunction buildToggleLists() { 459*9e94795aSAndroid Build Coastguard Worker $(".toggle-list").each( 460*9e94795aSAndroid Build Coastguard Worker function(i) { 461*9e94795aSAndroid Build Coastguard Worker $("div:first", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>"); 462*9e94795aSAndroid Build Coastguard Worker $(this).addClass("closed"); 463*9e94795aSAndroid Build Coastguard Worker }); 464*9e94795aSAndroid Build Coastguard Worker} 465*9e94795aSAndroid Build Coastguard Worker 466*9e94795aSAndroid Build Coastguard Workerfunction getNavPref() { 467*9e94795aSAndroid Build Coastguard Worker var v = readCookie('reference_nav'); 468*9e94795aSAndroid Build Coastguard Worker if (v != NAV_PREF_TREE) { 469*9e94795aSAndroid Build Coastguard Worker v = NAV_PREF_PANELS; 470*9e94795aSAndroid Build Coastguard Worker } 471*9e94795aSAndroid Build Coastguard Worker return v; 472*9e94795aSAndroid Build Coastguard Worker} 473*9e94795aSAndroid Build Coastguard Worker 474*9e94795aSAndroid Build Coastguard Workerfunction chooseDefaultNav() { 475*9e94795aSAndroid Build Coastguard Worker nav_pref = getNavPref(); 476*9e94795aSAndroid Build Coastguard Worker if (nav_pref == NAV_PREF_TREE) { 477*9e94795aSAndroid Build Coastguard Worker $("#nav-panels").toggle(); 478*9e94795aSAndroid Build Coastguard Worker $("#panel-link").toggle(); 479*9e94795aSAndroid Build Coastguard Worker $("#nav-tree").toggle(); 480*9e94795aSAndroid Build Coastguard Worker $("#tree-link").toggle(); 481*9e94795aSAndroid Build Coastguard Worker } 482*9e94795aSAndroid Build Coastguard Worker} 483*9e94795aSAndroid Build Coastguard Worker 484*9e94795aSAndroid Build Coastguard Workerfunction swapNav() { 485*9e94795aSAndroid Build Coastguard Worker if (nav_pref == NAV_PREF_TREE) { 486*9e94795aSAndroid Build Coastguard Worker nav_pref = NAV_PREF_PANELS; 487*9e94795aSAndroid Build Coastguard Worker } else { 488*9e94795aSAndroid Build Coastguard Worker nav_pref = NAV_PREF_TREE; 489*9e94795aSAndroid Build Coastguard Worker init_default_navtree(toRoot); 490*9e94795aSAndroid Build Coastguard Worker } 491*9e94795aSAndroid Build Coastguard Worker var date = new Date(); 492*9e94795aSAndroid Build Coastguard Worker date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years 493*9e94795aSAndroid Build Coastguard Worker writeCookie("nav", nav_pref, "reference", date.toGMTString()); 494*9e94795aSAndroid Build Coastguard Worker 495*9e94795aSAndroid Build Coastguard Worker $("#nav-panels").toggle(); 496*9e94795aSAndroid Build Coastguard Worker $("#panel-link").toggle(); 497*9e94795aSAndroid Build Coastguard Worker $("#nav-tree").toggle(); 498*9e94795aSAndroid Build Coastguard Worker $("#tree-link").toggle(); 499*9e94795aSAndroid Build Coastguard Worker 500*9e94795aSAndroid Build Coastguard Worker if ($("#nav-tree").is(':visible')) scrollIntoView("nav-tree"); 501*9e94795aSAndroid Build Coastguard Worker else { 502*9e94795aSAndroid Build Coastguard Worker scrollIntoView("packages-nav"); 503*9e94795aSAndroid Build Coastguard Worker scrollIntoView("classes-nav"); 504*9e94795aSAndroid Build Coastguard Worker } 505*9e94795aSAndroid Build Coastguard Worker} 506*9e94795aSAndroid Build Coastguard Worker 507*9e94795aSAndroid Build Coastguard Workerfunction scrollIntoView(nav) { 508*9e94795aSAndroid Build Coastguard Worker var navObj = $("#"+nav); 509*9e94795aSAndroid Build Coastguard Worker if (navObj.is(':visible')) { 510*9e94795aSAndroid Build Coastguard Worker var selected = $(".selected", navObj); 511*9e94795aSAndroid Build Coastguard Worker if (selected.length == 0) return; 512*9e94795aSAndroid Build Coastguard Worker if (selected.is("div")) selected = selected.parent(); // when the selected item is a parent 513*9e94795aSAndroid Build Coastguard Worker 514*9e94795aSAndroid Build Coastguard Worker var scrolling = document.getElementById(nav); 515*9e94795aSAndroid Build Coastguard Worker var navHeight = navObj.height(); 516*9e94795aSAndroid Build Coastguard Worker var offsetTop = selected.position().top; 517*9e94795aSAndroid Build Coastguard Worker 518*9e94795aSAndroid Build Coastguard Worker // handle nested items 519*9e94795aSAndroid Build Coastguard Worker if (selected.parent().parent().is(".toggle-list")) { 520*9e94795aSAndroid Build Coastguard Worker selected = selected.parent().parent(); 521*9e94795aSAndroid Build Coastguard Worker // handle second level nested items 522*9e94795aSAndroid Build Coastguard Worker if (selected.parent().parent().is(".toggle-list")) { 523*9e94795aSAndroid Build Coastguard Worker selected = selected.parent().parent(); 524*9e94795aSAndroid Build Coastguard Worker } 525*9e94795aSAndroid Build Coastguard Worker offsetTop += selected.position().top; 526*9e94795aSAndroid Build Coastguard Worker } 527*9e94795aSAndroid Build Coastguard Worker 528*9e94795aSAndroid Build Coastguard Worker // 180px from the bottom of the list is the threshold 529*9e94795aSAndroid Build Coastguard Worker if(offsetTop > navHeight - 180) { 530*9e94795aSAndroid Build Coastguard Worker scrolling.scrollTop = offsetTop - navHeight + 180; 531*9e94795aSAndroid Build Coastguard Worker } 532*9e94795aSAndroid Build Coastguard Worker } 533*9e94795aSAndroid Build Coastguard Worker} 534*9e94795aSAndroid Build Coastguard Worker 535*9e94795aSAndroid Build Coastguard Workerfunction changeTabLang(lang) { 536*9e94795aSAndroid Build Coastguard Worker var nodes = $("#header-tabs").find("."+lang); 537*9e94795aSAndroid Build Coastguard Worker for (i=0; i < nodes.length; i++) { // for each node in this language 538*9e94795aSAndroid Build Coastguard Worker var node = $(nodes[i]); 539*9e94795aSAndroid Build Coastguard Worker node.siblings().css("display","none"); // hide all siblings 540*9e94795aSAndroid Build Coastguard Worker if (node.not(":empty").length != 0) { //if this languages node has a translation, show it 541*9e94795aSAndroid Build Coastguard Worker node.css("display","inline"); 542*9e94795aSAndroid Build Coastguard Worker } else { //otherwise, show English instead 543*9e94795aSAndroid Build Coastguard Worker node.css("display","none"); 544*9e94795aSAndroid Build Coastguard Worker node.siblings().filter(".en").css("display","inline"); 545*9e94795aSAndroid Build Coastguard Worker } 546*9e94795aSAndroid Build Coastguard Worker } 547*9e94795aSAndroid Build Coastguard Worker} 548*9e94795aSAndroid Build Coastguard Worker 549*9e94795aSAndroid Build Coastguard Workerfunction changeNavLang(lang) { 550*9e94795aSAndroid Build Coastguard Worker var nodes = $("#side-nav").find("."+lang); 551*9e94795aSAndroid Build Coastguard Worker for (i=0; i < nodes.length; i++) { // for each node in this language 552*9e94795aSAndroid Build Coastguard Worker var node = $(nodes[i]); 553*9e94795aSAndroid Build Coastguard Worker node.siblings().css("display","none"); // hide all siblings 554*9e94795aSAndroid Build Coastguard Worker if (node.not(":empty").length != 0) { // if this languages node has a translation, show it 555*9e94795aSAndroid Build Coastguard Worker node.css("display","inline"); 556*9e94795aSAndroid Build Coastguard Worker } else { // otherwise, show English instead 557*9e94795aSAndroid Build Coastguard Worker node.css("display","none"); 558*9e94795aSAndroid Build Coastguard Worker node.siblings().filter(".en").css("display","inline"); 559*9e94795aSAndroid Build Coastguard Worker } 560*9e94795aSAndroid Build Coastguard Worker } 561*9e94795aSAndroid Build Coastguard Worker} 562*9e94795aSAndroid Build Coastguard Worker 563*9e94795aSAndroid Build Coastguard Workerfunction changeDocLang(lang) { 564*9e94795aSAndroid Build Coastguard Worker changeTabLang(lang); 565*9e94795aSAndroid Build Coastguard Worker changeNavLang(lang); 566*9e94795aSAndroid Build Coastguard Worker} 567*9e94795aSAndroid Build Coastguard Worker 568*9e94795aSAndroid Build Coastguard Workerfunction changeLangPref(lang, refresh) { 569*9e94795aSAndroid Build Coastguard Worker var date = new Date(); 570*9e94795aSAndroid Build Coastguard Worker expires = date.toGMTString(date.setTime(date.getTime()+(10*365*24*60*60*1000))); // keep this for 50 years 571*9e94795aSAndroid Build Coastguard Worker //alert("expires: " + expires) 572*9e94795aSAndroid Build Coastguard Worker writeCookie("pref_lang", lang, null, expires); 573*9e94795aSAndroid Build Coastguard Worker //changeDocLang(lang); 574*9e94795aSAndroid Build Coastguard Worker if (refresh) { 575*9e94795aSAndroid Build Coastguard Worker l = getBaseUri(location.pathname); 576*9e94795aSAndroid Build Coastguard Worker window.location = l; 577*9e94795aSAndroid Build Coastguard Worker } 578*9e94795aSAndroid Build Coastguard Worker} 579*9e94795aSAndroid Build Coastguard Worker 580*9e94795aSAndroid Build Coastguard Workerfunction loadLangPref() { 581*9e94795aSAndroid Build Coastguard Worker var lang = readCookie("pref_lang"); 582*9e94795aSAndroid Build Coastguard Worker if (lang != 0) { 583*9e94795aSAndroid Build Coastguard Worker $("#language").find("option[value='"+lang+"']").attr("selected",true); 584*9e94795aSAndroid Build Coastguard Worker } 585*9e94795aSAndroid Build Coastguard Worker} 586*9e94795aSAndroid Build Coastguard Worker 587*9e94795aSAndroid Build Coastguard Workerfunction getLangPref() { 588*9e94795aSAndroid Build Coastguard Worker var lang = $("#language").find(":selected").attr("value"); 589*9e94795aSAndroid Build Coastguard Worker if (!lang) { 590*9e94795aSAndroid Build Coastguard Worker lang = readCookie("pref_lang"); 591*9e94795aSAndroid Build Coastguard Worker } 592*9e94795aSAndroid Build Coastguard Worker return (lang != 0) ? lang : 'en'; 593*9e94795aSAndroid Build Coastguard Worker} 594*9e94795aSAndroid Build Coastguard Worker 595*9e94795aSAndroid Build Coastguard Worker 596*9e94795aSAndroid Build Coastguard Worker/* Used to hide and reveal supplemental content, such as long code samples. 597*9e94795aSAndroid Build Coastguard Worker See the companion CSS in android-developer-docs.css */ 598*9e94795aSAndroid Build Coastguard Workerfunction toggleContent(obj) { 599*9e94795aSAndroid Build Coastguard Worker var div = $(obj.parentNode.parentNode); 600*9e94795aSAndroid Build Coastguard Worker var toggleMe = $(".toggle-content-toggleme",div); 601*9e94795aSAndroid Build Coastguard Worker if (div.hasClass("closed")) { // if it's closed, open it 602*9e94795aSAndroid Build Coastguard Worker toggleMe.slideDown(); 603*9e94795aSAndroid Build Coastguard Worker $(".toggle-content-text", obj).toggle(); 604*9e94795aSAndroid Build Coastguard Worker div.removeClass("closed").addClass("open"); 605*9e94795aSAndroid Build Coastguard Worker $(".toggle-content-img", div).attr("title", "hide").attr("src", toRoot + "assets/images/triangle-opened.png"); 606*9e94795aSAndroid Build Coastguard Worker } else { // if it's open, close it 607*9e94795aSAndroid Build Coastguard Worker toggleMe.slideUp('fast', function() { // Wait until the animation is done before closing arrow 608*9e94795aSAndroid Build Coastguard Worker $(".toggle-content-text", obj).toggle(); 609*9e94795aSAndroid Build Coastguard Worker div.removeClass("open").addClass("closed"); 610*9e94795aSAndroid Build Coastguard Worker $(".toggle-content-img", div).attr("title", "show").attr("src", toRoot + "assets/images/triangle-closed.png"); 611*9e94795aSAndroid Build Coastguard Worker }); 612*9e94795aSAndroid Build Coastguard Worker } 613*9e94795aSAndroid Build Coastguard Worker return false; 614*9e94795aSAndroid Build Coastguard Worker} 615