1541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar classesNav; 2541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar devdocNav; 3541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar sidenav; 4541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar cookie_namespace = 'android_developer'; 5541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NAV_PREF_TREE = "tree"; 6541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NAV_PREF_PANELS = "panels"; 7541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar nav_pref; 8541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar isMobile = false; // true if mobile, so we can adjust some layout 9541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar mPagePath; // initialized in ready() function 10541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 11541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar basePath = getBaseUri(location.pathname); 12541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar SITE_ROOT = toRoot + basePath.substring(1,basePath.indexOf("/",1)); 13541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar GOOGLE_DATA; // combined data for google service apis, used for search suggest 14541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 15541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// Ensure that all ajax getScript() requests allow caching 16541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$.ajaxSetup({ 17541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cache: true 18541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 19541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 20541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/****** ON LOAD SET UP STUFF *********/ 21541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 22541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar navBarIsFixed = false; 23541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$(document).ready(function() { 24541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 25541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for JD doc search suggestions 26541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'jd_lists_unified.js'); 27541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for Android API search suggestions 28541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'reference/lists.js'); 29541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json files for Google services API suggestions 30541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'reference/gcm_lists.js', function(data, textStatus, jqxhr) { 31541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // once the GCM json (GCM_DATA) is loaded, load the GMS json (GMS_DATA) and merge the data 32541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 33541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'reference/gms_lists.js', function(data, textStatus, jqxhr) { 34541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 35541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // combine GCM and GMS data 36541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty GOOGLE_DATA = GMS_DATA; 37541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var start = GOOGLE_DATA.length; 38541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<GCM_DATA.length; i++) { 39541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty GOOGLE_DATA.push({id:start+i, label:GCM_DATA[i].label, 40541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty link:GCM_DATA[i].link, type:GCM_DATA[i].type}); 41541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 42541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 43541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 44541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 45541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 46541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 47541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // setup keyboard listener for search shortcut 48541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('body').keyup(function(event) { 49541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (event.which == 191) { 50541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#search_autocomplete').focus(); 51541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 52541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 53541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 54541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // init the fullscreen toggle click event 55541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#nav-swap .fullscreen').click(function(){ 56541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(this).hasClass('disabled')) { 57541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleFullscreen(true); 58541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 59541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleFullscreen(false); 60541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 61541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 62541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 63541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // initialize the divs with custom scrollbars 64541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.scroll-pane').jScrollPane( {verticalGutter:0} ); 65541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 66541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // add HRs below all H2s (except for a few other h2 variants) 67541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('h2').not('#qv h2').not('#tb h2').not('.sidebox h2').not('#devdoc-nav h2').not('h2.norule').css({marginBottom:0}).after('<hr/>'); 68541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 69541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set up the search close button 70541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.search .close').click(function() { 71541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $searchInput = $('#search_autocomplete'); 72541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $searchInput.attr('value', ''); 73541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).addClass("hide"); 74541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").removeClass('active'); 75541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").blur(); 76541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty search_focus_changed($searchInput.get(), false); 77541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty hideResults(); 78541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 79541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 80541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up quicknav 81541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var quicknav_open = false; 82541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#btn-quicknav").click(function() { 83541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (quicknav_open) { 84541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).removeClass('active'); 85541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty quicknav_open = false; 86541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty collapse(); 87541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 88541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).addClass('active'); 89541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty quicknav_open = true; 90541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expand(); 91541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 92541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 93541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 94541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var expand = function() { 95541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#header-wrap').addClass('quicknav'); 96541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#quicknav').stop().show().animate({opacity:'1'}); 97541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 98541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 99541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var collapse = function() { 100541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#quicknav').stop().animate({opacity:'0'}, 100, function() { 101541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).hide(); 102541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#header-wrap').removeClass('quicknav'); 103541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 104541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 105541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 106541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 107541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Set up search 108541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").focus(function() { 109541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").addClass('active'); 110541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 111541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").mouseover(function() { 112541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").addClass('active'); 113541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").focus(); 114541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 115541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").mouseout(function() { 116541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#search_autocomplete").is(":focus")) return; 117541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#search_autocomplete").val() == '') { 118541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(function(){ 119541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").removeClass('active'); 120541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").blur(); 121541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty },250); 122541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 123541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 124541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").blur(function() { 125541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#search_autocomplete").val() == '') { 126541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search-container").removeClass('active'); 127541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 128541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 129541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 130541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 131541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // prep nav expandos 132541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pagePath = document.location.pathname; 133541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // account for intl docs by removing the intl/*/ path 134541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (pagePath.indexOf("/intl/") == 0) { 135541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pagePath = pagePath.substr(pagePath.indexOf("/",6)); // start after intl/ to get last / 136541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 137541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 138541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (pagePath.indexOf(SITE_ROOT) == 0) { 139541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') { 140541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pagePath += 'index.html'; 141541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 142541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 143541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 144541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Need a copy of the pagePath before it gets changed in the next block; 145541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it's needed to perform proper tab highlighting in offline docs (see rootDir below) 146541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pagePathOriginal = pagePath; 147541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') { 148541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If running locally, SITE_ROOT will be a relative path, so account for that by 149541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // finding the relative URL to this page. This will allow us to find links on the page 150541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // leading back to this page. 151541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pathParts = pagePath.split('/'); 152541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var relativePagePathParts = []; 153541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3; 154541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i = 0; i < upDirs; i++) { 155541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty relativePagePathParts.push('..'); 156541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 157541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i = 0; i < upDirs; i++) { 158541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]); 159541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 160541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty relativePagePathParts.push(pathParts[pathParts.length - 1]); 161541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pagePath = relativePagePathParts.join('/'); 162541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 163541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Otherwise the page path is already an absolute URL 164541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 165541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 166541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Highlight the header tabs... 167541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // highlight Design tab 168541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("body").hasClass("design")) { 169541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#header li.design a").addClass("selected"); 17008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#sticky-header").addClass("design"); 171541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 172541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // highlight Develop tab 173541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ($("body").hasClass("develop") || $("body").hasClass("google")) { 174541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#header li.develop a").addClass("selected"); 17508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#sticky-header").addClass("develop"); 176541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // In Develop docs, also highlight appropriate sub-tab 177541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var rootDir = pagePathOriginal.substring(1,pagePathOriginal.indexOf('/', 1)); 178541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (rootDir == "training") { 179541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.training a").addClass("selected"); 180541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (rootDir == "guide") { 181541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.guide a").addClass("selected"); 182541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (rootDir == "reference") { 183541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If the root is reference, but page is also part of Google Services, select Google 184541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("body").hasClass("google")) { 185541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.google a").addClass("selected"); 186541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 187541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.reference a").addClass("selected"); 188541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 189541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ((rootDir == "tools") || (rootDir == "sdk")) { 190541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.tools a").addClass("selected"); 191541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ($("body").hasClass("google")) { 192541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.google a").addClass("selected"); 193541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ($("body").hasClass("samples")) { 194541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-x li.samples a").addClass("selected"); 195541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 196541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 197541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // highlight Distribute tab 198541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ($("body").hasClass("distribute")) { 199541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#header li.distribute a").addClass("selected"); 20008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#sticky-header").addClass("distribute"); 20108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 20208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var baseFrag = pagePathOriginal.indexOf('/', 1) + 1; 20308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var secondFrag = pagePathOriginal.substring(baseFrag, pagePathOriginal.indexOf('/', baseFrag)); 20408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (secondFrag == "users") { 20508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.users a").addClass("selected"); 20608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "engage") { 20708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.engage a").addClass("selected"); 20808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "monetize") { 20908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.monetize a").addClass("selected"); 21008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "tools") { 21108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.disttools a").addClass("selected"); 21208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "stories") { 21308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.stories a").addClass("selected"); 21408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "essentials") { 21508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.essentials a").addClass("selected"); 21608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (secondFrag == "googleplay") { 21708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $("#nav-x li.googleplay a").addClass("selected"); 21808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 219318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } else if ($("body").hasClass("about")) { 220318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $("#sticky-header").addClass("about"); 221318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } 222318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty 223541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set global variable so we can highlight the sidenav a bit later (such as for google reference) 224541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // and highlight the sidenav 225541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mPagePath = pagePath; 226541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty highlightSidenav(); 22720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main buildBreadcrumbs(); 228541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 229541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set up prev/next links if they exist 230541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selNavLink = $('#nav').find('a[href="' + pagePath + '"]'); 231541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selListItem; 232541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selNavLink.length) { 233541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selListItem = $selNavLink.closest('li'); 234541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 235541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set up prev links 236541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $prevLink = []; 237541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $prevListItem = $selListItem.prev('li'); 238541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 239541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var crossBoundaries = ($("body.design").length > 0) || ($("body.guide").length > 0) ? true : 240541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfalse; // navigate across topic boundaries only in design docs 241541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($prevListItem.length) { 242541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($prevListItem.hasClass('nav-section')) { 243541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // jump to last topic of previous section 244541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $prevLink = $prevListItem.find('a:last'); 245541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (!$selListItem.hasClass('nav-section')) { 246541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // jump to previous topic in this section 247541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $prevLink = $prevListItem.find('a:eq(0)'); 248541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 249541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 250541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // jump to this section's index page (if it exists) 251541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $parentListItem = $selListItem.parents('li'); 252541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $prevLink = $selListItem.parents('li').find('a'); 253541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 254541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // except if cross boundaries aren't allowed, and we're at the top of a section already 255541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // (and there's another parent) 256541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!crossBoundaries && $parentListItem.hasClass('nav-section') 257541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && $selListItem.hasClass('nav-section')) { 258541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $prevLink = []; 259541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 260541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 261541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 262541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set up next links 263541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $nextLink = []; 264541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var startClass = false; 265541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var training = $(".next-class-link").length; // decides whether to provide "next class" link 266541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var isCrossingBoundary = false; 267541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 268541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selListItem.hasClass('nav-section') && $selListItem.children('div.empty').length == 0) { 269541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // we're on an index page, jump to the first topic 270541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nextLink = $selListItem.find('ul:eq(0)').find('a:eq(0)'); 271541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 272541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if there aren't any children, go to the next section (required for About pages) 273541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if($nextLink.length == 0) { 274541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nextLink = $selListItem.next('li').find('a'); 275541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ($('.topic-start-link').length) { 276541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // as long as there's a child link and there is a "topic start link" (we're on a landing) 277541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // then set the landing page "start link" text to be the first doc title 278541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.topic-start-link').text($nextLink.text().toUpperCase()); 279541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 280541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 281541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If the selected page has a description, then it's a class or article homepage 282541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selListItem.find('a[description]').length) { 283541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // this means we're on a class landing page 284541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty startClass = true; 285541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 286541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 287541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // jump to the next topic in this section (if it exists) 288541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nextLink = $selListItem.next('li').find('a:eq(0)'); 289541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($nextLink.length == 0) { 290541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty isCrossingBoundary = true; 291541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // no more topics in this section, jump to the first topic in the next section 292541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nextLink = $selListItem.parents('li:eq(0)').next('li.nav-section').find('a:eq(0)'); 293541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!$nextLink.length) { // Go up another layer to look for next page (lesson > class > course) 294541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nextLink = $selListItem.parents('li:eq(1)').next('li.nav-section').find('a:eq(0)'); 295541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($nextLink.length == 0) { 296541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if that doesn't work, we're at the end of the list, so disable NEXT link 297541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-page-link').attr('href','').addClass("disabled") 298541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .click(function() { return false; }); 299541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 300541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 301541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 302541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 303541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 304541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (startClass) { 305541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.start-class-link').attr('href', $nextLink.attr('href')).removeClass("hide"); 306541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 307541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if there's no training bar (below the start button), 308541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // then we need to add a bottom border to button 309541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!$("#tb").length) { 310541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.start-class-link').css({'border-bottom':'1px solid #DADADA'}); 311541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 312541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (isCrossingBoundary && !$('body.design').length) { // Design always crosses boundaries 313541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.content-footer.next-class').show(); 314541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-page-link').attr('href','') 315541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .removeClass("hide").addClass("disabled") 316541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .click(function() { return false; }); 317541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($nextLink.length) { 318541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-class-link').attr('href',$nextLink.attr('href')) 319541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .removeClass("hide").append($nextLink.html()); 320541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-class-link').find('.new').empty(); 321541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 322541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 323541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-page-link').attr('href', $nextLink.attr('href')).removeClass("hide"); 324541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 325541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 326541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!startClass && $prevLink.length) { 327541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var prevHref = $prevLink.attr('href'); 328541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (prevHref == SITE_ROOT + 'index.html') { 329541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Don't show Previous when it leads to the homepage 330541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 331541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.prev-page-link').attr('href', $prevLink.attr('href')).removeClass("hide"); 332541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 333541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 334541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 335541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If this is a training 'article', there should be no prev/next nav 336541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // ... if the grandparent is the "nav" ... and it has no child list items... 337541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (training && $selListItem.parents('ul').eq(1).is('[id="nav"]') && 338541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty !$selListItem.find('li').length) { 339541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.next-page-link,.prev-page-link').attr('href','').addClass("disabled") 340541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .click(function() { return false; }); 341541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 342541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 343541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 344541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 345541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 346541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 347541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up the course landing pages for Training with class names and descriptions 348541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($('body.trainingcourse').length) { 349541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $classLinks = $selListItem.find('ul li a').not('#nav .nav-section .nav-section ul a'); 350541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $classDescriptions = $classLinks.attr('description'); 351541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 352541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $olClasses = $('<ol class="class-list"></ol>'); 353541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $liClass; 354541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $imgIcon; 355541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $h2Title; 356541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $pSummary; 357541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $olLessons; 358541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $liLesson; 359541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $classLinks.each(function(index) { 360541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $liClass = $('<li></li>'); 361541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $h2Title = $('<a class="title" href="'+$(this).attr('href')+'"><h2>' + $(this).html()+'</h2><span></span></a>'); 362541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $pSummary = $('<p class="description">' + $(this).attr('description') + '</p>'); 363541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 364541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $olLessons = $('<ol class="lesson-list"></ol>'); 365541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 366541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $lessons = $(this).closest('li').find('ul li a'); 367541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 368541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($lessons.length) { 369541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $imgIcon = $('<img src="'+toRoot+'assets/images/resource-tutorial.png" ' 370541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + ' width="64" height="64" alt=""/>'); 371541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $lessons.each(function(index) { 372541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $olLessons.append('<li><a href="'+$(this).attr('href')+'">' + $(this).html()+'</a></li>'); 373541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 374541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 375541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $imgIcon = $('<img src="'+toRoot+'assets/images/resource-article.png" ' 376541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + ' width="64" height="64" alt=""/>'); 377541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $pSummary.addClass('article'); 378541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 379541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 380541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $liClass.append($h2Title).append($imgIcon).append($pSummary).append($olLessons); 381541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $olClasses.append($liClass); 382541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 383541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.jd-descr').append($olClasses); 384541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 385541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 386541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up expand/collapse behavior 387541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty initExpandableNavItems("#nav"); 388541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 389541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 390541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".scroll-pane").scroll(function(event) { 391541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty event.preventDefault(); 392541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 393541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 394541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 395541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* Resize nav height when window height changes */ 396541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(window).resize(function() { 397541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($('#side-nav').length == 0) return; 398541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var stylesheet = $('link[rel="stylesheet"][class="fullscreen"]'); 399541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setNavBarLeftPos(); // do this even if sidenav isn't fixed because it could become fixed 400541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // make sidenav behave when resizing the window and side-scolling is a concern 401541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (navBarIsFixed) { 402541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((stylesheet.attr("disabled") == "disabled") || stylesheet.length == 0) { 403541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateSideNavPosition(); 404541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 405541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateSidenavFullscreenWidth(); 406541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 407541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 408541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 409541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 410541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 411541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 412541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var navBarLeftPos; 413541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($('#devdoc-nav').length) { 414541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setNavBarLeftPos(); 415541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 416541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 417541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 418541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up play-on-hover <video> tags. 419541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('video.play-on-hover').bind('click', function(){ 420541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).get(0).load(); // in case the video isn't seekable 421541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).get(0).play(); 422541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 423541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 424541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up tooltips 425541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var TOOLTIP_MARGIN = 10; 426541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('acronym,.tooltip-link').each(function() { 427541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $target = $(this); 428541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $tooltip = $('<div>') 429541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .addClass('tooltip-box') 430541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .append($target.attr('title')) 431541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .hide() 432541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .appendTo('body'); 433541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $target.removeAttr('title'); 434541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 435541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $target.hover(function() { 436541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // in 437541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var targetRect = $target.offset(); 438541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty targetRect.width = $target.width(); 439541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty targetRect.height = $target.height(); 440541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 441541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $tooltip.css({ 442541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty left: targetRect.left, 443541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty top: targetRect.top + targetRect.height + TOOLTIP_MARGIN 444541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 445541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $tooltip.addClass('below'); 446541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $tooltip.show(); 447541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }, function() { 448541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // out 449541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $tooltip.hide(); 450541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 451541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 452541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 453541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Set up <h2> deeplinks 454541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('h2').click(function() { 455541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var id = $(this).attr('id'); 456541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (id) { 457541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty document.location.hash = id; 458541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 459541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 460541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 461541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Loads the +1 button 462541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; 463541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty po.src = 'https://apis.google.com/js/plusone.js'; 464541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); 465541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 466541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 467541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Revise the sidenav widths to make room for the scrollbar 468541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // which avoids the visible width from changing each time the bar appears 469541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $sidenav = $("#side-nav"); 470541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var sidenav_width = parseInt($sidenav.innerWidth()); 471541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 472541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#devdoc-nav #nav").css("width", sidenav_width - 4 + "px"); // 4px is scrollbar width 473541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 474541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 475541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".scroll-pane").removeAttr("tabindex"); // get rid of tabindex added by jscroller 476541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 477541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".scroll-pane").length > 1) { 478541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if there's a user preference for the panel heights 479541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var cookieHeight = readCookie("reference_height"); 480541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (cookieHeight) { 481541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty restoreHeight(cookieHeight); 482541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 483541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 484541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 485541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 486541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 487541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* init the language selector based on user cookie for lang */ 488541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty loadLangPref(); 489541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty changeNavLang(getLangPref()); 490541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 491541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* setup event handlers to ensure the overflow menu is visible while picking lang */ 492541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#language select") 493541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .mousedown(function() { 494541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("div.morehover").addClass("hover"); }) 495541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .blur(function() { 496541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("div.morehover").removeClass("hover"); }); 497541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 498541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* some global variable setup */ 499541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizePackagesNav = $("#resize-packages-nav"); 500541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty classesNav = $("#classes-nav"); 501541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty devdocNav = $("#devdoc-nav"); 502541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 503541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var cookiePath = ""; 504541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (location.href.indexOf("/reference/") != -1) { 505541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "reference_"; 506541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (location.href.indexOf("/guide/") != -1) { 507541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "guide_"; 508541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (location.href.indexOf("/tools/") != -1) { 509541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "tools_"; 510541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (location.href.indexOf("/training/") != -1) { 511541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "training_"; 512541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (location.href.indexOf("/design/") != -1) { 513541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "design_"; 514541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (location.href.indexOf("/distribute/") != -1) { 515541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty cookiePath = "distribute_"; 516541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 517541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 518541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 519541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// END of the onload event 520541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 521541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 522541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction initExpandableNavItems(rootTag) { 523541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(rootTag + ' li.nav-section .nav-section-header').click(function() { 524541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var section = $(this).closest('li.nav-section'); 525541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (section.hasClass('expanded')) { 526541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* hide me and descendants */ 527541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty section.find('ul').slideUp(250, function() { 528541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // remove 'expanded' class from my section and any children 529541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty section.closest('li').removeClass('expanded'); 530541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li.nav-section', section).removeClass('expanded'); 531541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 532541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 533541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 534541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* show me */ 535541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // first hide all other siblings 536541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $others = $('li.nav-section.expanded', $(this).closest('ul')).not('.sticky'); 537541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $others.removeClass('expanded').children('ul').slideUp(250); 538541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 539541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // now expand me 540541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty section.closest('li').addClass('expanded'); 541541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty section.children('ul').slideDown(250, function() { 542541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 543541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 544541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 545541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 546541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 547541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Stop expand/collapse behavior when clicking on nav section links 548541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // (since we're navigating away from the page) 549541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // This selector captures the first instance of <a>, but not those with "#" as the href. 550541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.nav-section-header').find('a:eq(0)').not('a[href="#"]').click(function(evt) { 551541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.location.href = $(this).attr('href'); 552541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 553541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 554541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 555541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 55620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 55720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main/** Create the list of breadcrumb links in the sticky header */ 55820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Mainfunction buildBreadcrumbs() { 55920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var $breadcrumbUl = $("#sticky-header ul.breadcrumb"); 56020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Add the secondary horizontal nav item, if provided 56120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var $selectedSecondNav = $("div#nav-x ul.nav-x a.selected").clone().removeClass("selected"); 56220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if ($selectedSecondNav.length) { 56320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $breadcrumbUl.prepend($("<li>").append($selectedSecondNav)) 56420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } 56520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Add the primary horizontal nav 56620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var $selectedFirstNav = $("div#header-wrap ul.nav-x a.selected").clone().removeClass("selected"); 5677a6ab434bc34319f06818d12d3abaf9070630684Scott Main // If there's no header nav item, use the logo link and title from alt text 5687a6ab434bc34319f06818d12d3abaf9070630684Scott Main if ($selectedFirstNav.length < 1) { 5697a6ab434bc34319f06818d12d3abaf9070630684Scott Main $selectedFirstNav = $("<a>") 5707a6ab434bc34319f06818d12d3abaf9070630684Scott Main .attr('href', $("div#header .logo a").attr('href')) 5717a6ab434bc34319f06818d12d3abaf9070630684Scott Main .text($("div#header .logo img").attr('alt')); 5727a6ab434bc34319f06818d12d3abaf9070630684Scott Main } 57320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $breadcrumbUl.prepend($("<li>").append($selectedFirstNav)); 57420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main} 57520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 57620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 57720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 578541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/** Highlight the current page in sidenav, expanding children as appropriate */ 579541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction highlightSidenav() { 580541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if something is already highlighted, undo it. This is for dynamic navigation (Samples index) 581541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("ul#nav li.selected").length) { 582541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty unHighlightSidenav(); 583541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 584541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // look for URL in sidenav, including the hash 585541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selNavLink = $('#nav').find('a[href="' + mPagePath + location.hash + '"]'); 586541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 587541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If the selNavLink is still empty, look for it without the hash 588541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selNavLink.length == 0) { 589541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selNavLink = $('#nav').find('a[href="' + mPagePath + '"]'); 590541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 591541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 592541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selListItem; 593541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selNavLink.length) { 594541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Find this page's <li> in sidenav and set selected 595541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selListItem = $selNavLink.closest('li'); 596541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selListItem.addClass('selected'); 597541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 598541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Traverse up the tree and expand all parent nav-sections 599541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selNavLink.parents('li.nav-section').each(function() { 600541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).addClass('expanded'); 601541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).children('ul').show(); 602541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 603541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 604541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 605541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 606541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction unHighlightSidenav() { 607541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("ul#nav li.selected").removeClass("selected"); 608541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('ul#nav li.nav-section.expanded').removeClass('expanded').children('ul').hide(); 609541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 610541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 611541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleFullscreen(enable) { 612541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var delay = 20; 613541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var enabled = true; 614541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var stylesheet = $('link[rel="stylesheet"][class="fullscreen"]'); 615541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (enable) { 616541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Currently NOT USING fullscreen; enable fullscreen 617541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty stylesheet.removeAttr('disabled'); 618541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#nav-swap .fullscreen').removeClass('disabled'); 619541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav').css({left:''}); 620541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(updateSidenavFullscreenWidth,delay); // need to wait a moment for css to switch 621541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty enabled = true; 622541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 623541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Currently USING fullscreen; disable fullscreen 624541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty stylesheet.attr('disabled', 'disabled'); 625541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#nav-swap .fullscreen').addClass('disabled'); 626541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(updateSidenavFixedWidth,delay); // need to wait a moment for css to switch 627541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty enabled = false; 628541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 629541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty writeCookie("fullscreen", enabled, null, null); 630541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setNavBarLeftPos(); 631541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(delay); 632541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateSideNavPosition(); 633541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(initSidenavHeightResize,delay); 634541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 635541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 636541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 637541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction setNavBarLeftPos() { 638541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty navBarLeftPos = $('#body-content').offset().left; 639541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 640541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 641541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 642541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction updateSideNavPosition() { 643541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var newLeft = $(window).scrollLeft() - navBarLeftPos; 644541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav').css({left: -newLeft}); 645541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav .totop').css({left: -(newLeft - parseInt($('#side-nav').css('margin-left')))}); 646541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 647541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 648541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// TODO: use $(document).ready instead 649541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction addLoadEvent(newfun) { 650541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var current = window.onload; 651541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (typeof window.onload != 'function') { 652541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.onload = newfun; 653541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 654541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.onload = function() { 655541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty current(); 656541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty newfun(); 657541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 658541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 659541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 660541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 661541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar agent = navigator['userAgent'].toLowerCase(); 662541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// If a mobile phone, set flag and do mobile setup 663541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyif ((agent.indexOf("mobile") != -1) || // android, iphone, ipod 664541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (agent.indexOf("blackberry") != -1) || 665541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (agent.indexOf("webos") != -1) || 666541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (agent.indexOf("mini") != -1)) { // opera mini browsers 667541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty isMobile = true; 668541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 669541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 670541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 671541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$(document).ready(function() { 672541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("pre:not(.no-pretty-print)").addClass("prettyprint"); 673541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty prettyPrint(); 674541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 675541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 676541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 677541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 678541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 679541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######### RESIZE THE SIDENAV HEIGHT ########## */ 680541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 681541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction resizeNav(delay) { 682541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $nav = $("#devdoc-nav"); 683541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $window = $(window); 684541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var navHeight; 685541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 686541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Get the height of entire window and the total header height. 687541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Then figure out based on scroll position whether the header is visible 688541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var windowHeight = $window.height(); 689541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var scrollTop = $window.scrollTop(); 69020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var headerHeight = $('#header-wrapper').outerHeight(); 69120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var headerVisible = scrollTop < stickyTop; 692541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 693541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // get the height of space between nav and top of window. 694541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Could be either margin or top position, depending on whether the nav is fixed. 695541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var topMargin = (parseInt($nav.css('margin-top')) || parseInt($nav.css('top'))) + 1; 696541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // add 1 for the #side-nav bottom margin 697541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 698541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Depending on whether the header is visible, set the side nav's height. 699541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (headerVisible) { 700541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // The sidenav height grows as the header goes off screen 70120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main navHeight = windowHeight - (headerHeight - scrollTop) - topMargin; 702541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 703541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Once header is off screen, the nav height is almost full window height 704541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty navHeight = windowHeight - topMargin; 705541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 706541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 707541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 708541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 709541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $scrollPanes = $(".scroll-pane"); 710541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($scrollPanes.length > 1) { 711541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // subtract the height of the api level widget and nav swapper from the available nav height 712541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty navHeight -= ($('#api-nav-header').outerHeight(true) + $('#nav-swap').outerHeight(true)); 713541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 714541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#swapper").css({height:navHeight + "px"}); 715541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#nav-tree").is(":visible")) { 716541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-tree").css({height:navHeight}); 717541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 718541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 719541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var classesHeight = navHeight - parseInt($("#resize-packages-nav").css("height")) - 10 + "px"; 720541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //subtract 10px to account for drag bar 721541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 722541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the window becomes small enough to make the class panel height 0, 723541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // then the package panel should begin to shrink 724541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (parseInt(classesHeight) <= 0) { 725541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#resize-packages-nav").css({height:navHeight - 10}); //subtract 10px for drag bar 726541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#packages-nav").css({height:navHeight - 10}); 727541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 728541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 729541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#classes-nav").css({'height':classesHeight, 'margin-top':'10px'}); 730541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#classes-nav .jspContainer").css({height:classesHeight}); 731541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 732541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 733541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 734541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $nav.height(navHeight); 735541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 736541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 737541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (delay) { 738541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateFromResize = true; 739541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty delayedReInitScrollbars(delay); 740541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 741541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty reInitScrollbars(); 742541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 743541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 744541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 745541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 746541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar updateScrollbars = false; 747541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar updateFromResize = false; 748541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 749541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Re-initialize the scrollbars to account for changed nav size. 750541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * This method postpones the actual update by a 1/4 second in order to optimize the 751541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * scroll performance while the header is still visible, because re-initializing the 752541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * scroll panes is an intensive process. 753541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 754541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction delayedReInitScrollbars(delay) { 755541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If we're scheduled for an update, but have received another resize request 756541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // before the scheduled resize has occured, just ignore the new request 757541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // (and wait for the scheduled one). 758541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (updateScrollbars && updateFromResize) { 759541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateFromResize = false; 760541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 761541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 762541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 763541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // We're scheduled for an update and the update request came from this method's setTimeout 764541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (updateScrollbars && !updateFromResize) { 765541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty reInitScrollbars(); 766541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateScrollbars = false; 767541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 768541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateScrollbars = true; 769541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateFromResize = false; 770541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout('delayedReInitScrollbars()',delay); 771541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 772541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 773541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 774541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Re-initialize the scrollbars to account for changed nav size. */ 775541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction reInitScrollbars() { 776541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pane = $(".scroll-pane").each(function(){ 777541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var api = $(this).data('jsp'); 778541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!api) { setTimeout(reInitScrollbars,300); return;} 779541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty api.reinitialise( {verticalGutter:0} ); 780541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 781541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".scroll-pane").removeAttr("tabindex"); // get rid of tabindex added by jscroller 782541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 783541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 784541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 785541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Resize the height of the nav panels in the reference, 786541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * and save the new size to a cookie */ 787541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction saveNavPanels() { 788541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var basePath = getBaseUri(location.pathname); 789541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var section = basePath.substring(1,basePath.indexOf("/",1)); 790541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty writeCookie("height", resizePackagesNav.css("height"), section, null); 791541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 792541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 793541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 794541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 795541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction restoreHeight(packageHeight) { 796541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#resize-packages-nav").height(packageHeight); 797541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#packages-nav").height(packageHeight); 798541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // var classesHeight = navHeight - packageHeight; 799541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // $("#classes-nav").css({height:classesHeight}); 800541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // $("#classes-nav .jspContainer").css({height:classesHeight}); 801541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 802541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 803541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 804541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 805541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######### END RESIZE THE SIDENAV HEIGHT ########## */ 806541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 807541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 808541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 809541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 810541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 811541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/** Scroll the jScrollPane to make the currently selected item visible 812541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty This is called when the page finished loading. */ 813541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction scrollIntoView(nav) { 814541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $nav = $("#"+nav); 815541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var element = $nav.jScrollPane({/* ...settings... */}); 816541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var api = element.data('jsp'); 817541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 818541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($nav.is(':visible')) { 819541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selected = $(".selected", $nav); 820541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($selected.length == 0) { 821541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If no selected item found, exit 822541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 823541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 824541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // get the selected item's offset from its container nav by measuring the item's offset 825541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // relative to the document then subtract the container nav's offset relative to the document 826541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedOffset = $selected.offset().top - $nav.offset().top; 827541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (selectedOffset > $nav.height() * .8) { // multiply nav height by .8 so we move up the item 828541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if it's more than 80% down the nav 829541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // scroll the item up by an amount equal to 80% the container nav's height 830541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty api.scrollTo(0, selectedOffset - ($nav.height() * .8), false); 831541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 832541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 833541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 834541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 835541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 836541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 837541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 838541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 839541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 840541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Show popup dialogs */ 841541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction showDialog(id) { 842541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $dialog = $("#"+id); 843541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $dialog.prepend('<div class="box-border"><div class="top"> <div class="left"></div> <div class="right"></div></div><div class="bottom"> <div class="left"></div> <div class="right"></div> </div> </div>'); 844541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $dialog.wrapInner('<div/>'); 845541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $dialog.removeClass("hide"); 846541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 847541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 848541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 849541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 850541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 851541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 852541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######### COOKIES! ########## */ 853541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 854541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction readCookie(cookie) { 855541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var myCookie = cookie_namespace+"_"+cookie+"="; 856541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (document.cookie) { 857541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var index = document.cookie.indexOf(myCookie); 858541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (index != -1) { 859541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var valStart = index + myCookie.length; 860541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var valEnd = document.cookie.indexOf(";", valStart); 861541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (valEnd == -1) { 862541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty valEnd = document.cookie.length; 863541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 864541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var val = document.cookie.substring(valStart, valEnd); 865541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return val; 866541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 867541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 868541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return 0; 869541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 870541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 871541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction writeCookie(cookie, val, section, expiration) { 872541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (val==undefined) return; 873541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty section = section == null ? "_" : "_"+section+"_"; 874541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (expiration == null) { 875541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var date = new Date(); 876541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week 877541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expiration = date.toGMTString(); 878541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 879541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var cookieValue = cookie_namespace + section + cookie + "=" + val 880541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "; expires=" + expiration+"; path=/"; 881541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty document.cookie = cookieValue; 882541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 883541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 884541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######### END COOKIES! ########## */ 885541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 886541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 887541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 888541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 889d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Mainvar stickyTop; 890d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main/* Sets the vertical scoll position at which the sticky bar should appear. 891d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main This method is called to reset the position when search results appear or hide */ 892d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Mainfunction setStickyTop() { 893d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main stickyTop = $('#header-wrapper').outerHeight() - $('#sticky-header').outerHeight(); 894d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main} 895d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main 896541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 89708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty/* 89808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty * Displays sticky nav bar on pages when dac header scrolls out of view 89908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty */ 90008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty(function() { 90108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $(document).ready(function() { 90208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 903d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main setStickyTop(); 90408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var sticky = false; 90508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var hiding = false; 90608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $stickyEl = $('#sticky-header'); 90708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $menuEl = $('.menu-container'); 90808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 90920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var prevScrollLeft = 0; // used to compare current position to previous position of horiz scroll 91020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 91108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $(window).scroll(function() { 91220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Exit if there's no sidenav 91320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if ($('#side-nav').length == 0) return; 91420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Exit if the mouse target is a DIV, because that means the event is coming 91520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // from a scrollable div and so there's no need to make adjustments to our layout 91620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if (event.target.nodeName == "DIV") { 91720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main return; 91820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } 91920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 92020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 92108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var top = $(window).scrollTop(); 92220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // we set the navbar fixed when the scroll position is beyond the height of the site header... 92320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var shouldBeSticky = top >= stickyTop; 92420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // ... except if the document content is shorter than the sidenav height. 92520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // (this is necessary to avoid crazy behavior on OSX Lion due to overscroll bouncing) 92620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if ($("#doc-col").height() < $("#side-nav").height()) { 92720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main shouldBeSticky = false; 92820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } 92920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 93020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Don't continue if the header is sufficently far away 93120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // (to avoid intensive resizing that slows scrolling) 93220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if (sticky && shouldBeSticky) { 93320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main return; 93420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } 93508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 93620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // Account for horizontal scroll 93720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var scrollLeft = $(window).scrollLeft(); 93820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // When the sidenav is fixed and user scrolls horizontally, reposition the sidenav to match 93920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if (navBarIsFixed && (scrollLeft != prevScrollLeft)) { 94020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main updateSideNavPosition(); 94120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main prevScrollLeft = scrollLeft; 94220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } 94320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 94420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // If sticky header visible and position is now near top, hide sticky 94520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main if (sticky && !shouldBeSticky) { 94608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sticky = false; 94708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty hiding = true; 94820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // make the sidenav static again 94920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $('#devdoc-nav') 95020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .removeClass('fixed') 95120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .css({'width':'auto','margin':''}) 95220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .prependTo('#side-nav'); 95320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // delay hide the sticky 95420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $menuEl.removeClass('sticky-menu'); 95520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $stickyEl.fadeOut(250); 95620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main hiding = false; 95720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 95820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // update the sidenaav position for side scrolling 95920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main updateSideNavPosition(); 96020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main } else if (!sticky && shouldBeSticky) { 96108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sticky = true; 96220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $stickyEl.fadeIn(10); 96308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $menuEl.addClass('sticky-menu'); 96408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 96520cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // make the sidenav fixed 96620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main var width = $('#devdoc-nav').width(); 96720cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main $('#devdoc-nav') 96820cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .addClass('fixed') 96920cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .css({'width':width+'px'}) 97020cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main .prependTo('#body-content'); 97120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 97220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // update the sidenaav position for side scrolling 97320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main updateSideNavPosition(); 97420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main 97508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (hiding && top < 15) { 97608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $menuEl.removeClass('sticky-menu'); 97708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $stickyEl.hide(); 97808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty hiding = false; 97908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 98008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 98120cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main resizeNav(250); // pass true in order to delay the scrollbar re-initialization for performance 98208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 98308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 98408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Stack hover states 98508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('.section-card-menu').each(function(index, el) { 98608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var height = $(el).height(); 98708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $(el).css({height:height+'px', position:'relative'}); 98808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $cardInfo = $(el).find('.card-info'); 98908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 99008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $cardInfo.css({position: 'absolute', bottom:'0px', left:'0px', right:'0px', overflow:'visible'}); 99108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 99208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 99320cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main resizeNav(); // must resize once loading is finished 99408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 99508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 99608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty})(); 997541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 998541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 999541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1000541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1001541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1002541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1003541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1004541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1005541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1006541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1007541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1008541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1009541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1010541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1011541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* MISC LIBRARY FUNCTIONS */ 1012541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1013541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1014541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1015541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1016541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1017541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggle(obj, slide) { 1018541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var ul = $("ul:first", obj); 1019541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var li = ul.parent(); 1020541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (li.hasClass("closed")) { 1021541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (slide) { 1022541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.slideDown("fast"); 1023541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1024541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.show(); 1025541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1026541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.removeClass("closed"); 1027541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.addClass("open"); 1028541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-img", li).attr("title", "hide pages"); 1029541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1030541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.slideUp("fast"); 1031541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.removeClass("open"); 1032541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.addClass("closed"); 1033541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-img", li).attr("title", "show pages"); 1034541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1035541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1036541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1037541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1038541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction buildToggleLists() { 1039541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-list").each( 1040541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function(i) { 1041541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("div:first", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>"); 1042541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).addClass("closed"); 1043541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1044541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1045541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1046541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1047541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1048541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction hideNestedItems(list, toggle) { 1049541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $list = $(list); 1050541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // hide nested lists 1051541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if($list.hasClass('showing')) { 1052541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li ol", $list).hide('fast'); 1053541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $list.removeClass('showing'); 1054541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // show nested lists 1055541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1056541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li ol", $list).show('fast'); 1057541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $list.addClass('showing'); 1058541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1059541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".more,.less",$(toggle)).toggle(); 1060541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1061541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1062541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1063541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1064541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1065541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1066541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1067541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1068541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1069541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1070541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1071541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1072541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1073541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1074541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1075541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1076541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1077541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1078541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1079541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1080541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1081541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1082541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1083541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1084541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1085541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1086541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1087541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1088541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1089541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* REFERENCE NAV SWAP */ 1090541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1091541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1092541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction getNavPref() { 1093541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var v = readCookie('reference_nav'); 1094541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (v != NAV_PREF_TREE) { 1095541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty v = NAV_PREF_PANELS; 1096541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1097541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return v; 1098541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1099541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1100541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction chooseDefaultNav() { 1101541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_pref = getNavPref(); 1102541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (nav_pref == NAV_PREF_TREE) { 1103541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-panels").toggle(); 1104541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#panel-link").toggle(); 1105541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-tree").toggle(); 1106541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#tree-link").toggle(); 1107541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1108541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1109541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1110541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction swapNav() { 1111541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (nav_pref == NAV_PREF_TREE) { 1112541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_pref = NAV_PREF_PANELS; 1113541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1114541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_pref = NAV_PREF_TREE; 1115541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_default_navtree(toRoot); 1116541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1117541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var date = new Date(); 1118541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years 1119541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty writeCookie("nav", nav_pref, "reference", date.toGMTString()); 1120541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1121541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-panels").toggle(); 1122541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#panel-link").toggle(); 1123541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-tree").toggle(); 1124541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#tree-link").toggle(); 1125541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1126541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 1127541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1128541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Gross nasty hack to make tree view show up upon first swap by setting height manually 1129541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav-tree .jspContainer:visible") 1130541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .css({'height':$("#nav-tree .jspContainer .jspPane").height() +'px'}); 1131541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Another nasty hack to make the scrollbar appear now that we have height 1132541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 1133541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1134541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#nav-tree").is(':visible')) { 1135541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty scrollIntoView("nav-tree"); 1136541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1137541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty scrollIntoView("packages-nav"); 1138541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty scrollIntoView("classes-nav"); 1139541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1140541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1141541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1142541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1143541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1144541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ############################################ */ 1145541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ########## LOCALIZATION ############ */ 1146541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ############################################ */ 1147541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1148541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction getBaseUri(uri) { 1149541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var intlUrl = (uri.substring(0,6) == "/intl/"); 1150541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (intlUrl) { 1151541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty base = uri.substring(uri.indexOf('intl/')+5,uri.length); 1152541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty base = base.substring(base.indexOf('/')+1, base.length); 1153541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //alert("intl, returning base url: /" + base); 1154541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return ("/" + base); 1155541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1156541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //alert("not intl, returning uri as found."); 1157541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return uri; 1158541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1159541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1160541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1161541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction requestAppendHL(uri) { 1162541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty//append "?hl=<lang> to an outgoing request (such as to blog) 1163541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var lang = getLangPref(); 1164541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (lang) { 1165541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var q = 'hl=' + lang; 1166541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty uri += '?' + q; 1167541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.location = uri; 1168541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1169541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1170541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return true; 1171541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1172541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1173541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1174541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1175541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction changeNavLang(lang) { 1176541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $links = $("#devdoc-nav,#header,#nav-x,.training-nav-top,.content-footer").find("a["+lang+"-lang]"); 1177541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $links.each(function(i){ // for each link with a translation 1178541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $link = $(this); 1179541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (lang != "en") { // No need to worry about English, because a language change invokes new request 1180541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // put the desired language from the attribute as the text 1181541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $link.text($link.attr(lang+"-lang")) 1182541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1183541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1184541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1185541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1186541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction changeLangPref(lang, submit) { 1187541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var date = new Date(); 1188541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expires = date.toGMTString(date.setTime(date.getTime()+(10*365*24*60*60*1000))); 1189541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // keep this for 50 years 1190541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //alert("expires: " + expires) 1191541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty writeCookie("pref_lang", lang, null, expires); 1192541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1193541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // ####### TODO: Remove this condition once we're stable on devsite ####### 1194541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // This condition is only needed if we still need to support legacy GAE server 1195541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (devsite) { 1196541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Switch language when on Devsite server 1197541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (submit) { 1198541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#setlang").submit(); 1199541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1200541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1201541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Switch language when on legacy GAE server 1202541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (submit) { 1203541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.location = getBaseUri(location.pathname); 1204541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1205541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1206541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1207541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1208541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction loadLangPref() { 1209541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var lang = readCookie("pref_lang"); 1210541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (lang != 0) { 1211541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#language").find("option[value='"+lang+"']").attr("selected",true); 1212541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1213541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1214541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1215541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction getLangPref() { 1216541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var lang = $("#language").find(":selected").attr("value"); 1217541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!lang) { 1218541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty lang = readCookie("pref_lang"); 1219541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1220541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return (lang != 0) ? lang : 'en'; 1221541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1222541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1223541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ########## END LOCALIZATION ############ */ 1224541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1225541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1226541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1227541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1228541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1229541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1230541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Used to hide and reveal supplemental content, such as long code samples. 1231541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty See the companion CSS in android-developer-docs.css */ 1232541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleContent(obj) { 1233541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var div = $(obj).closest(".toggle-content"); 1234541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var toggleMe = $(".toggle-content-toggleme:eq(0)",div); 1235541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (div.hasClass("closed")) { // if it's closed, open it 1236541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleMe.slideDown(); 1237541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-content-text:eq(0)", obj).toggle(); 1238541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.removeClass("closed").addClass("open"); 1239541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-content-img:eq(0)", div).attr("title", "hide").attr("src", toRoot 1240541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "assets/images/triangle-opened.png"); 1241541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { // if it's open, close it 1242541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleMe.slideUp('fast', function() { // Wait until the animation is done before closing arrow 1243541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-content-text:eq(0)", obj).toggle(); 1244541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.removeClass("open").addClass("closed"); 1245541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.find(".toggle-content").removeClass("open").addClass("closed") 1246541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .find(".toggle-content-toggleme").hide(); 1247541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".toggle-content-img", div).attr("title", "show").attr("src", toRoot 1248541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "assets/images/triangle-closed.png"); 1249541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1250541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1251541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1252541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1253541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1254541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1255541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* New version of expandable content */ 1256541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleExpandable(link,id) { 1257541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if($(id).is(':visible')) { 1258541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(id).slideUp(); 1259541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(link).removeClass('expanded'); 1260541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1261541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(id).slideDown(); 1262541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(link).addClass('expanded'); 1263541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1264541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1265541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1266541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction hideExpandable(ids) { 1267541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(ids).slideUp(); 1268541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(ids).prev('h4').find('a.expandable').removeClass('expanded'); 1269541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1270541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1271541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1272541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1273541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1274541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1275541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* 1276541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Slideshow 1.0 1277541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Used on /index.html and /develop/index.html for carousel 1278541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1279541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Sample usage: 1280541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * HTML - 1281541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <div class="slideshow-container"> 1282541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <a href="" class="slideshow-prev">Prev</a> 1283541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <a href="" class="slideshow-next">Next</a> 1284541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <ul> 1285541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee1.jpg"></li> 1286541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee2.jpg"></li> 1287541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee3.jpg"></li> 1288541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee4.jpg"></li> 1289541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </ul> 1290541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </div> 1291541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1292541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <script type="text/javascript"> 1293541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * $('.slideshow-container').dacSlideshow({ 1294541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * auto: true, 1295541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnPrev: '.slideshow-prev', 1296541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnNext: '.slideshow-next' 1297541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * }); 1298541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </script> 1299541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1300541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Options: 1301541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnPrev: optional identifier for previous button 1302541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnNext: optional identifier for next button 1303541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnPause: optional identifier for pause button 1304541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * auto: whether or not to auto-proceed 1305541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * speed: animation speed 1306541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * autoTime: time between auto-rotation 1307541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * easing: easing function for transition 1308541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * start: item to select by default 1309541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * scroll: direction to scroll in 1310541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * pagination: whether or not to include dotted pagination 1311541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1312541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 1313541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1314541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (function($) { 1315541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.fn.dacSlideshow = function(o) { 1316541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1317541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Options - see above 1318541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty o = $.extend({ 1319541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty btnPrev: null, 1320541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty btnNext: null, 1321541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty btnPause: null, 1322541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty auto: true, 1323541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty speed: 500, 1324541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty autoTime: 12000, 1325541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty easing: null, 1326541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty start: 0, 1327541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty scroll: 1, 1328541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pagination: true 1329541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1330541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }, o || {}); 1331541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1332541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Set up a carousel for each 1333541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return this.each(function() { 1334541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1335541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var running = false; 1336541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var animCss = o.vertical ? "top" : "left"; 1337541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var sizeCss = o.vertical ? "height" : "width"; 1338541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var div = $(this); 1339541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var ul = $("ul", div); 1340541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var tLi = $("li", ul); 1341541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var tl = tLi.size(); 1342541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var timer = null; 1343541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1344541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var li = $("li", ul); 1345541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var itemLength = li.size(); 1346541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var curr = o.start; 1347541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1348541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.css({float: o.vertical ? "none" : "left"}); 1349541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.css({margin: "0", padding: "0", position: "relative", "list-style-type": "none", "z-index": "1"}); 1350541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.css({position: "relative", "z-index": "2", left: "0px"}); 1351541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1352541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var liSize = o.vertical ? height(li) : width(li); 1353541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var ulSize = liSize * itemLength; 1354541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var divSize = liSize; 1355541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1356541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.css({width: li.width(), height: li.height()}); 1357541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.css(sizeCss, ulSize+"px").css(animCss, -(curr*liSize)); 1358541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1359541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.css(sizeCss, divSize+"px"); 1360541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1361541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Pagination 1362541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (o.pagination) { 1363541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pagination = $("<div class='pagination'></div>"); 1364541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pag_ul = $("<ul></ul>"); 1365541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (tl > 1) { 1366541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0;i<tl;i++) { 1367541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var li = $("<li>"+i+"</li>"); 1368541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pag_ul.append(li); 1369541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (i==o.start) li.addClass('active'); 1370541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty li.click(function() { 1371541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty go(parseInt($(this).text())); 1372541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 1373541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1374541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pagination.append(pag_ul); 1375541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty div.append(pagination); 1376541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1377541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1378541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1379541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Previous button 1380541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(o.btnPrev) 1381541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnPrev).click(function(e) { 1382541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty e.preventDefault(); 1383541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return go(curr-o.scroll); 1384541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1385541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1386541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Next button 1387541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(o.btnNext) 1388541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnNext).click(function(e) { 1389541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty e.preventDefault(); 1390541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return go(curr+o.scroll); 1391541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1392541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1393541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Pause button 1394541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(o.btnPause) 1395541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnPause).click(function(e) { 1396541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty e.preventDefault(); 1397541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(this).hasClass('paused')) { 1398541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty startRotateTimer(); 1399541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1400541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty pauseRotateTimer(); 1401541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1402541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1403541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1404541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Auto rotation 1405541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(o.auto) startRotateTimer(); 1406541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1407541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function startRotateTimer() { 1408541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty clearInterval(timer); 1409541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty timer = setInterval(function() { 1410541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (curr == tl-1) { 1411541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty go(0); 1412541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1413541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty go(curr+o.scroll); 1414541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1415541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }, o.autoTime); 1416541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnPause).removeClass('paused'); 1417541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1418541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1419541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function pauseRotateTimer() { 1420541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty clearInterval(timer); 1421541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnPause).addClass('paused'); 1422541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1423541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1424541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Go to an item 1425541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function go(to) { 1426541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(!running) { 1427541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1428541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(to<0) { 1429541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty to = itemLength-1; 1430541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (to>itemLength-1) { 1431541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty to = 0; 1432541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1433541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty curr = to; 1434541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1435541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty running = true; 1436541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1437541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ul.animate( 1438541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty animCss == "left" ? { left: -(curr*liSize) } : { top: -(curr*liSize) } , o.speed, o.easing, 1439541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function() { 1440541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty running = false; 1441541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1442541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ); 1443541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1444541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(o.btnPrev + "," + o.btnNext).removeClass("disabled"); 1445541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $( (curr-o.scroll<0 && o.btnPrev) 1446541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty || 1447541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (curr+o.scroll > itemLength && o.btnNext) 1448541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty || 1449541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty [] 1450541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ).addClass("disabled"); 1451541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1452541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1453541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var nav_items = $('li', pagination); 1454541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_items.removeClass('active'); 1455541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_items.eq(to).addClass('active'); 1456541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1457541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1458541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1459541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(o.auto) startRotateTimer(); 1460541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1461541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1462541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1463541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1464541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1465541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function css(el, prop) { 1466541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return parseInt($.css(el[0], prop)) || 0; 1467541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1468541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function width(el) { 1469541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight'); 1470541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1471541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function height(el) { 1472541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom'); 1473541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1474541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1475541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty })(jQuery); 1476541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1477541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1478541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* 1479541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * dacSlideshow 1.0 1480541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Used on develop/index.html for side-sliding tabs 1481541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1482541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Sample usage: 1483541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * HTML - 1484541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <div class="slideshow-container"> 1485541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <a href="" class="slideshow-prev">Prev</a> 1486541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <a href="" class="slideshow-next">Next</a> 1487541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <ul> 1488541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee1.jpg"></li> 1489541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee2.jpg"></li> 1490541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee3.jpg"></li> 1491541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <li class="item"><img src="images/marquee4.jpg"></li> 1492541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </ul> 1493541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </div> 1494541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1495541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * <script type="text/javascript"> 1496541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * $('.slideshow-container').dacSlideshow({ 1497541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * auto: true, 1498541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnPrev: '.slideshow-prev', 1499541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnNext: '.slideshow-next' 1500541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * }); 1501541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * </script> 1502541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1503541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Options: 1504541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnPrev: optional identifier for previous button 1505541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * btnNext: optional identifier for next button 1506541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * auto: whether or not to auto-proceed 1507541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * speed: animation speed 1508541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * autoTime: time between auto-rotation 1509541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * easing: easing function for transition 1510541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * start: item to select by default 1511541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * scroll: direction to scroll in 1512541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * pagination: whether or not to include dotted pagination 1513541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 1514541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 1515541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (function($) { 1516541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.fn.dacTabbedList = function(o) { 1517541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1518541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Options - see above 1519541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty o = $.extend({ 1520541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty speed : 250, 1521541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty easing: null, 1522541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_id: null, 1523541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty frame_id: null 1524541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }, o || {}); 1525541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1526541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Set up a carousel for each 1527541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return this.each(function() { 1528541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1529541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var curr = 0; 1530541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var running = false; 1531541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var animCss = "margin-left"; 1532541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var sizeCss = "width"; 1533541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var div = $(this); 1534541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1535541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var nav = $(o.nav_id, div); 1536541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var nav_li = $("li", nav); 1537541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var nav_size = nav_li.size(); 1538541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var frame = div.find(o.frame_id); 1539541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var content_width = $(frame).find('ul').width(); 1540541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Buttons 1541541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(nav_li).click(function(e) { 1542541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty go($(nav_li).index($(this))); 1543541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }) 1544541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1545541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //Go to an item 1546541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function go(to) { 1547541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(!running) { 1548541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty curr = to; 1549541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty running = true; 1550541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1551541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty frame.animate({ 'margin-left' : -(curr*content_width) }, o.speed, o.easing, 1552541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function() { 1553541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty running = false; 1554541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1555541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ); 1556541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1557541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1558541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_li.removeClass('active'); 1559541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty nav_li.eq(to).addClass('active'); 1560541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1561541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1562541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1563541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1564541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1565541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1566541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1567541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1568541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function css(el, prop) { 1569541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return parseInt($.css(el[0], prop)) || 0; 1570541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1571541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function width(el) { 1572541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight'); 1573541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1574541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function height(el) { 1575541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom'); 1576541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 1577541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1578541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty })(jQuery); 1579541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1580541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1581541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1582541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1583541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1584541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######################################################## */ 1585541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ################ SEARCH SUGGESTIONS ################## */ 1586541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######################################################## */ 1587541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1588541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1589541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1590541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gSelectedIndex = -1; // the index position of currently highlighted suggestion 1591541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gSelectedColumn = -1; // which column of suggestion lists is currently focused 1592541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1593541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gMatches = new Array(); 1594541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gLastText = ""; 1595541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gInitialized = false; 1596541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar ROW_COUNT_FRAMEWORK = 20; // max number of results in list 1597541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gListLength = 0; 1598541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1599541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1600541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gGoogleMatches = new Array(); 1601541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar ROW_COUNT_GOOGLE = 15; // max number of results in list 1602541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gGoogleListLength = 0; 1603541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1604541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gDocsMatches = new Array(); 1605541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar ROW_COUNT_DOCS = 100; // max number of results in list 1606541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar gDocsListLength = 0; 1607541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1608541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction onSuggestionClick(link) { 1609541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // When user clicks a suggested document, track it 1610541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty _gaq.push(['_trackEvent', 'Suggestion Click', 'clicked: ' + $(link).text(), 1611541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'from: ' + $("#search_autocomplete").val()]); 1612541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1613541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1614541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction set_item_selected($li, selected) 1615541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 1616541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (selected) { 1617541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.attr('class','jd-autocomplete jd-selected'); 1618541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1619541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.attr('class','jd-autocomplete'); 1620541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1621541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1622541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1623541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction set_item_values(toroot, $li, match) 1624541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 1625541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $link = $('a',$li); 1626541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $link.html(match.__hilabel || match.label); 1627541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $link.attr('href',toroot + match.link); 1628541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1629541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1630541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction set_item_values_jd(toroot, $li, match) 1631541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 1632541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $link = $('a',$li); 1633541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $link.html(match.title); 1634541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $link.attr('href',toroot + match.url); 1635541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1636541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1637541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction new_suggestion($list) { 1638541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li = $("<li class='jd-autocomplete'></li>"); 1639541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $list.append($li); 1640541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1641541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.mousedown(function() { 1642541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty window.location = this.firstChild.getAttribute("href"); 1643541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1644541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.mouseover(function() { 1645541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.search_filtered_wrapper li').removeClass('jd-selected'); 1646541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(this).addClass('jd-selected'); 1647541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedColumn = $(".search_filtered:visible").index($(this).closest('.search_filtered')); 1648541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex = $("li", $(".search_filtered:visible")[gSelectedColumn]).index(this); 1649541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 1650541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.append("<a onclick='onSuggestionClick(this)'></a>"); 1651541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.attr('class','show-item'); 1652541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return $li; 1653541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1654541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1655541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction sync_selection_table(toroot) 1656541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 1657541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li; //list item jquery object 1658541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var i; //list item iterator 1659541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1660541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if there are NO results at all, hide all columns 1661541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!(gMatches.length > 0) && !(gGoogleMatches.length > 0) && !(gDocsMatches.length > 0)) { 1662541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card').hide(300); 1663541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 1664541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1665541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1666541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if there are api results 1667541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((gMatches.length > 0) || (gGoogleMatches.length > 0)) { 1668541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // reveal suggestion list 1669541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.dummy').show(); 1670541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.reference').show(); 1671541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var listIndex = 0; // list index position 1672541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1673541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // reset the lists 1674541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search_filtered_wrapper.reference li").remove(); 1675541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1676541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // ########### ANDROID RESULTS ############# 1677541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gMatches.length > 0) { 1678541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1679541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // determine android results to show 1680541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gListLength = gMatches.length < ROW_COUNT_FRAMEWORK ? 1681541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gMatches.length : ROW_COUNT_FRAMEWORK; 1682541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (i=0; i<gListLength; i++) { 1683541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li = new_suggestion($(".suggest-card.reference ul")); 1684541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_values(toroot, $li, gMatches[i]); 1685541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_selected($li, i == gSelectedIndex); 1686541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1687541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1688541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1689541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // ########### GOOGLE RESULTS ############# 1690541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gGoogleMatches.length > 0) { 1691541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // show header for list 1692541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.reference ul").append("<li class='header'>in Google Services:</li>"); 1693541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1694541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // determine google results to show 1695541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gGoogleListLength = gGoogleMatches.length < ROW_COUNT_GOOGLE ? gGoogleMatches.length : ROW_COUNT_GOOGLE; 1696541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (i=0; i<gGoogleListLength; i++) { 1697541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li = new_suggestion($(".suggest-card.reference ul")); 1698541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_values(toroot, $li, gGoogleMatches[i]); 1699541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_selected($li, i == gSelectedIndex); 1700541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1701541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1702541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1703541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.reference').hide(); 1704541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.dummy').hide(); 1705541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1706541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1707541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // ########### JD DOC RESULTS ############# 1708541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gDocsMatches.length > 0) { 1709541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // reset the lists 1710541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search_filtered_wrapper.docs li").remove(); 1711541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1712541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // determine google results to show 1713541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // NOTE: The order of the conditions below for the sugg.type MUST BE SPECIFIC: 1714541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // The order must match the reverse order that each section appears as a card in 1715541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // the suggestion UI... this may be only for the "develop" grouped items though. 1716541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsListLength = gDocsMatches.length < ROW_COUNT_DOCS ? gDocsMatches.length : ROW_COUNT_DOCS; 1717541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (i=0; i<gDocsListLength; i++) { 1718541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var sugg = gDocsMatches[i]; 1719541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li; 1720541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (sugg.type == "design") { 1721541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li = new_suggestion($(".suggest-card.design ul")); 1722541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else 1723541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (sugg.type == "distribute") { 1724541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li = new_suggestion($(".suggest-card.distribute ul")); 1725541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else 1726541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (sugg.type == "samples") { 1727541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li = new_suggestion($(".suggest-card.develop .child-card.samples")); 1728541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else 1729541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (sugg.type == "training") { 1730541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li = new_suggestion($(".suggest-card.develop .child-card.training")); 1731541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else 1732541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (sugg.type == "about"||"guide"||"tools"||"google") { 1733541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li = new_suggestion($(".suggest-card.develop .child-card.guides")); 1734541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1735541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty continue; 1736541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1737541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1738541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_values_jd(toroot, $li, sugg); 1739541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty set_item_selected($li, i == gSelectedIndex); 1740541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1741541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1742541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // add heading and show or hide card 1743541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".suggest-card.design li").length > 0) { 1744541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.design ul").prepend("<li class='header'>Design:</li>"); 1745541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.design").show(300); 1746541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1747541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.design').hide(300); 1748541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1749541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".suggest-card.distribute li").length > 0) { 1750541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.distribute ul").prepend("<li class='header'>Distribute:</li>"); 1751541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.distribute").show(300); 1752541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1753541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.distribute').hide(300); 1754541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1755541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".child-card.guides li").length > 0) { 1756541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.guides").prepend("<li class='header'>Guides:</li>"); 1757541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.guides li").appendTo(".suggest-card.develop ul"); 1758541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1759541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".child-card.training li").length > 0) { 1760541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.training").prepend("<li class='header'>Training:</li>"); 1761541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.training li").appendTo(".suggest-card.develop ul"); 1762541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1763541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".child-card.samples li").length > 0) { 1764541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.samples").prepend("<li class='header'>Samples:</li>"); 1765541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".child-card.samples li").appendTo(".suggest-card.develop ul"); 1766541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1767541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1768541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(".suggest-card.develop li").length > 0) { 1769541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card.develop").show(300); 1770541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1771541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card.develop').hide(300); 1772541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1773541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1774541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1775541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.search_filtered_wrapper.docs .suggest-card:not(.dummy)').hide(300); 1776541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1777541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 1778541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1779541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/** Called by the search input's onkeydown and onkeyup events. 1780541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * Handles navigation with keyboard arrows, Enter key to invoke search, 1781541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * otherwise invokes search suggestions on key-up event. 1782541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param e The JS event 1783541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param kd True if the event is key-down 1784541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param toroot A string for the site's root path 1785541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @returns True if the event should bubble up 1786541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 1787541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction search_changed(e, kd, toroot) 1788541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 1789541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var currentLang = getLangPref(); 1790541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var search = document.getElementById("search_autocomplete"); 1791541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var text = search.value.replace(/(^ +)|( +$)/g, ''); 1792541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // get the ul hosting the currently selected item 1793541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedColumn = gSelectedColumn >= 0 ? gSelectedColumn : 0; 1794541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $columns = $(".search_filtered_wrapper").find(".search_filtered:visible"); 1795541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $selectedUl = $columns[gSelectedColumn]; 1796541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1797541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // show/hide the close button 1798541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (text != '') { 1799541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").removeClass("hide"); 1800541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1801541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").addClass("hide"); 1802541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1803541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 27 = esc 1804541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (e.keyCode == 27) { 1805541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // close all search results 1806541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (kd) $('.search .close').trigger('click'); 1807541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return true; 1808541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1809541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 13 = enter 1810541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (e.keyCode == 13) { 1811541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gSelectedIndex < 0) { 1812541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('.suggest-card').hide(); 1813541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#searchResults").is(":hidden") && (search.value != "")) { 1814541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if results aren't showing (and text not empty), return true to allow search to execute 18154868e9bf92fb88a94c377dfda5d97e38b0948b7dScott Main $('body,html').animate({scrollTop:0}, '500', 'swing'); 1816541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return true; 1817541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 1818541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // otherwise, results are already showing, so allow ajax to auto refresh the results 1819541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // and ignore this Enter press to avoid the reload. 1820541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1821541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1822541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (kd && gSelectedIndex >= 0) { 1823541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // click the link corresponding to selected item 1824541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("a",$("li",$selectedUl)[gSelectedIndex]).get()[0].click(); 1825541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1826541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1827541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1828541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Stop here if Google results are showing 1829541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if ($("#searchResults").is(":visible")) { 1830541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return true; 1831541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1832541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 38 UP ARROW 1833541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (kd && (e.keyCode == 38)) { 1834541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the next item is a header, skip it 1835541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($($("li", $selectedUl)[gSelectedIndex-1]).hasClass("header")) { 1836541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex--; 1837541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1838541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gSelectedIndex >= 0) { 1839541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li', $selectedUl).removeClass('jd-selected'); 1840541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex--; 1841541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); 1842541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If user reaches top, reset selected column 1843541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (gSelectedIndex < 0) { 1844541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedColumn = -1; 1845541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1846541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1847541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1848541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1849541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 40 DOWN ARROW 1850541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (kd && (e.keyCode == 40)) { 1851541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the next item is a header, skip it 1852541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($($("li", $selectedUl)[gSelectedIndex+1]).hasClass("header")) { 1853541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex++; 1854541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1855541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((gSelectedIndex < $("li", $selectedUl).length-1) || 1856541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ($($("li", $selectedUl)[gSelectedIndex+1]).hasClass("header"))) { 1857541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li', $selectedUl).removeClass('jd-selected'); 1858541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex++; 1859541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); 1860541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1861541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1862541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1863541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Consider left/right arrow navigation 1864541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // NOTE: Order of suggest columns are reverse order (index position 0 is on right) 1865541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (kd && $columns.length > 1 && gSelectedColumn >= 0) { 1866541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 37 LEFT ARROW 1867541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // go left only if current column is not left-most column (last column) 1868541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (e.keyCode == 37 && gSelectedColumn < $columns.length - 1) { 1869541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li', $selectedUl).removeClass('jd-selected'); 1870541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedColumn++; 1871541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selectedUl = $columns[gSelectedColumn]; 1872541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // keep or reset the selected item to last item as appropriate 1873541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex = gSelectedIndex > 1874541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li", $selectedUl).length-1 ? 1875541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li", $selectedUl).length-1 : gSelectedIndex; 1876541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the corresponding item is a header, move down 1877541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($($("li", $selectedUl)[gSelectedIndex]).hasClass("header")) { 1878541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex++; 1879541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1880541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set item selected 1881541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); 1882541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1883541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1884541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // 39 RIGHT ARROW 1885541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // go right only if current column is not the right-most column (first column) 1886541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (e.keyCode == 39 && gSelectedColumn > 0) { 1887541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li', $selectedUl).removeClass('jd-selected'); 1888541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedColumn--; 1889541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selectedUl = $columns[gSelectedColumn]; 1890541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // keep or reset the selected item to last item as appropriate 1891541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex = gSelectedIndex > 1892541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li", $selectedUl).length-1 ? 1893541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("li", $selectedUl).length-1 : gSelectedIndex; 1894541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the corresponding item is a header, move down 1895541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($($("li", $selectedUl)[gSelectedIndex]).hasClass("header")) { 1896541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex++; 1897541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1898541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // set item selected 1899541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); 1900541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 1901541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1902541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1903541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1904541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if key-up event and not arrow down/up/left/right, 1905541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // read the search query and add suggestions to gMatches 1906541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (!kd && (e.keyCode != 40) 1907541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && (e.keyCode != 38) 1908541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && (e.keyCode != 37) 1909541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && (e.keyCode != 39)) { 1910541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gSelectedIndex = -1; 1911541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gMatches = new Array(); 1912541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCount = 0; 1913541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gGoogleMatches = new Array(); 1914541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountGoogle = 0; 1915541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches = new Array(); 1916541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs = 0; 1917541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1918541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Android matches 1919541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<DATA.length; i++) { 1920541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = DATA[i]; 1921541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (text.length != 0 && 1922541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.label.toLowerCase().indexOf(text.toLowerCase()) != -1) { 1923541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gMatches[matchedCount] = s; 1924541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCount++; 1925541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1926541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1927541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty rank_autocomplete_api_results(text, gMatches); 1928541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<gMatches.length; i++) { 1929541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = gMatches[i]; 1930541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1931541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1932541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1933541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Google matches 1934541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<GOOGLE_DATA.length; i++) { 1935541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = GOOGLE_DATA[i]; 1936541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (text.length != 0 && 1937541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.label.toLowerCase().indexOf(text.toLowerCase()) != -1) { 1938541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gGoogleMatches[matchedCountGoogle] = s; 1939541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountGoogle++; 1940541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1941541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1942541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty rank_autocomplete_api_results(text, gGoogleMatches); 1943541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<gGoogleMatches.length; i++) { 1944541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = gGoogleMatches[i]; 1945541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1946541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1947541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty highlight_autocomplete_result_labels(text); 1948541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1949541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1950541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1951541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for matching JD docs 1952541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (text.length >= 3) { 1953541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Regex to match only the beginning of a word 1954541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var textRegex = new RegExp("\\b" + text.toLowerCase(), "g"); 1955541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1956541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1957541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Training classes 1958541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<TRAINING_RESOURCES.length; i++) { 1959541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 1960541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 1961541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = TRAINING_RESOURCES[i]; 1962541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 1963541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 1964541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 1965541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1966541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 1967541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 1968541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 1969541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 1970541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 1971541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 1972541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1973541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1974541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Don't consider doc title for lessons (only for class landing pages), 1975541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // unless the lesson has a tag that already matches 1976541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((s.lang == currentLang) && 1977541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty (!(s.type == "training" && s.url.indexOf("index.html") == -1) || matched)) { 1978541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches the doc title 1979541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 1980541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 1981541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 1982541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1983541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1984541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 1985541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 1986541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 1987541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1988541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 1989541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1990541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 1991541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for API Guides 1992541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<GUIDE_RESOURCES.length; i++) { 1993541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 1994541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 1995541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = GUIDE_RESOURCES[i]; 1996541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 1997541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 1998541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 1999541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2000541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2001541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2002541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2003541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2004541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2005541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2006541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2007541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2008541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2009541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2010541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2011541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2012541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2013541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2014541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2015541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2016541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2017541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2018541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2019541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2020541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2021541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2022541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2023541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Tools Guides 2024541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<TOOLS_RESOURCES.length; i++) { 2025541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2026541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2027541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = TOOLS_RESOURCES[i]; 2028541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2029541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2030541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2031541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2032541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2033541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2034541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2035541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2036541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2037541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2038541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2039541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2040541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2041541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2042541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2043541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2044541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2045541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2046541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2047541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2048541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2049541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2050541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2051541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2052541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2053541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2054541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2055541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for About docs 2056541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<ABOUT_RESOURCES.length; i++) { 2057541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2058541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2059541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = ABOUT_RESOURCES[i]; 2060541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2061541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2062541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2063541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2064541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2065541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2066541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2067541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2068541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2069541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2070541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2071541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2072541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2073541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2074541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2075541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2076541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2077541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2078541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2079541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2080541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2081541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2082541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2083541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2084541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2085541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2086541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2087541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Design guides 2088541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<DESIGN_RESOURCES.length; i++) { 2089541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2090541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2091541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = DESIGN_RESOURCES[i]; 2092541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2093541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2094541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2095541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2096541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2097541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2098541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2099541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2100541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2101541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2102541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2103541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2104541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2105541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2106541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2107541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2108541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2109541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2110541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2111541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2112541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2113541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2114541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2115541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2116541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2117541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2118541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2119541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Distribute guides 2120541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<DISTRIBUTE_RESOURCES.length; i++) { 2121541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2122541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2123541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = DISTRIBUTE_RESOURCES[i]; 2124541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2125541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2126541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2127541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2128541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2129541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2130541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2131541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2132541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2133541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2134541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2135541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2136541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2137541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2138541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2139541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2140541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2141541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2142541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2143541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2144541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2145541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2146541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2147541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2148541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2149541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2150541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2151541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Google guides 2152541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<GOOGLE_RESOURCES.length; i++) { 2153541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2154541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2155541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = GOOGLE_RESOURCES[i]; 2156541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2157541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2158541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2159541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2160541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2161541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2162541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2163541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2164541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2165541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2166541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2167541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2168541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2169541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2170541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title 2171541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2172541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2173541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2174541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2175541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2176541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2177541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2178541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2179541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2180541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2181541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2182541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2183541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Search for Samples 2184541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<SAMPLES_RESOURCES.length; i++) { 2185541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // current search comparison, with counters for tag and title, 2186541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // used later to improve ranking 2187541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var s = SAMPLES_RESOURCES[i]; 2188541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = 0; 2189541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 0; 2190541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var matched = false; 2191541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches any tags; work backwards toward 1 to assist ranking 2192541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var j = s.keywords.length - 1; j >= 0; j--) { 2193541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // it matches a tag 2194541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.keywords[j].toLowerCase().match(textRegex)) { 2195541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2196541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_tag = j + 1; // add 1 to index position 2197541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2198541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2199541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Check if query matches the doc title, but only for current language 2200541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.lang == currentLang) { 2201541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if query matches the doc title.t 2202541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.title.toLowerCase().match(textRegex)) { 2203541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matched = true; 2204541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s.matched_title = 1; 2205541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2206541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2207541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matched) { 2208541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gDocsMatches[matchedCountDocs] = s; 2209541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matchedCountDocs++; 2210541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2211541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2212541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2213541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Rank/sort all the matched pages 2214541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty rank_autocomplete_doc_results(text, gDocsMatches); 2215541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2216541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2217541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // draw the suggestions 2218541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty sync_selection_table(toroot); 2219541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return true; // allow the event to bubble up to the search api 2220541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2221541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2222541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2223541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Order the jd doc result list based on match quality */ 2224541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction rank_autocomplete_doc_results(query, matches) { 2225541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty query = query || ''; 2226541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!matches || !matches.length) 2227541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2228541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2229541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var _resultScoreFn = function(match) { 2230541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var score = 1.0; 2231541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2232541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the query matched a tag 2233541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (match.matched_tag > 0) { 2234541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // multiply score by factor relative to position in tags list (max of 3) 2235541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty score *= 3 / match.matched_tag; 2236541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2237541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if it also matched the title 2238541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (match.matched_title > 0) { 2239541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty score *= 2; 2240541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2241541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (match.matched_title > 0) { 2242541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty score *= 3; 2243541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2244541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2245541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return score; 2246541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2247541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2248541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<matches.length; i++) { 2249541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matches[i].__resultScore = _resultScoreFn(matches[i]); 2250541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2251541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2252541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matches.sort(function(a,b){ 2253541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var n = b.__resultScore - a.__resultScore; 2254541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (n == 0) // lexicographical sort if scores are the same 2255541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty n = (a.label < b.label) ? -1 : 1; 2256541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return n; 2257541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2258541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2259541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2260541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Order the result list based on match quality */ 2261541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction rank_autocomplete_api_results(query, matches) { 2262541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty query = query || ''; 2263541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!matches || !matches.length) 2264541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2265541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2266541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // helper function that gets the last occurence index of the given regex 2267541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // in the given string, or -1 if not found 2268541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var _lastSearch = function(s, re) { 2269541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s == '') 2270541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return -1; 2271541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var l = -1; 2272541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var tmp; 2273541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty while ((tmp = s.search(re)) >= 0) { 2274541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (l < 0) l = 0; 2275541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty l += tmp; 2276541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty s = s.substr(tmp + 1); 2277541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2278541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return l; 2279541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2280541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2281541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // helper function that counts the occurrences of a given character in 2282541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // a given string 2283541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var _countChar = function(s, c) { 2284541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var n = 0; 2285541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<s.length; i++) 2286541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (s.charAt(i) == c) ++n; 2287541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return n; 2288541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2289541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2290541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryLower = query.toLowerCase(); 2291541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryAlnum = (queryLower.match(/\w+/) || [''])[0]; 2292541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var partPrefixAlnumRE = new RegExp('\\b' + queryAlnum); 2293541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var partExactAlnumRE = new RegExp('\\b' + queryAlnum + '\\b'); 2294541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2295541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var _resultScoreFn = function(result) { 2296541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // scores are calculated based on exact and prefix matches, 2297541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // and then number of path separators (dots) from the last 2298541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // match (i.e. favoring classes and deep package names) 2299541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var score = 1.0; 2300541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var labelLower = result.label.toLowerCase(); 2301541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var t; 2302541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty t = _lastSearch(labelLower, partExactAlnumRE); 2303541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (t >= 0) { 2304541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // exact part match 2305541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var partsAfter = _countChar(labelLower.substr(t + 1), '.'); 2306541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty score *= 200 / (partsAfter + 1); 2307541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2308541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty t = _lastSearch(labelLower, partPrefixAlnumRE); 2309541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (t >= 0) { 2310541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // part prefix match 2311541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var partsAfter = _countChar(labelLower.substr(t + 1), '.'); 2312541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty score *= 20 / (partsAfter + 1); 2313541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2314541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2315541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2316541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return score; 2317541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2318541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2319541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<matches.length; i++) { 2320541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if the API is deprecated, default score is 0; otherwise, perform scoring 2321541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (matches[i].deprecated == "true") { 2322541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matches[i].__resultScore = 0; 2323541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2324541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matches[i].__resultScore = _resultScoreFn(matches[i]); 2325541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2326541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2327541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2328541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty matches.sort(function(a,b){ 2329541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var n = b.__resultScore - a.__resultScore; 2330541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (n == 0) // lexicographical sort if scores are the same 2331541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty n = (a.label < b.label) ? -1 : 1; 2332541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return n; 2333541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2334541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2335541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2336541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Add emphasis to part of string that matches query */ 2337541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction highlight_autocomplete_result_labels(query) { 2338541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty query = query || ''; 2339541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((!gMatches || !gMatches.length) && (!gGoogleMatches || !gGoogleMatches.length)) 2340541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2341541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2342541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryLower = query.toLowerCase(); 2343541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryAlnumDot = (queryLower.match(/[\w\.]+/) || [''])[0]; 2344541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryRE = new RegExp( 2345541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty '(' + queryAlnumDot.replace(/\./g, '\\.') + ')', 'ig'); 2346541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<gMatches.length; i++) { 2347541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gMatches[i].__hilabel = gMatches[i].label.replace( 2348541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty queryRE, '<b>$1</b>'); 2349541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2350541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i=0; i<gGoogleMatches.length; i++) { 2351541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty gGoogleMatches[i].__hilabel = gGoogleMatches[i].label.replace( 2352541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty queryRE, '<b>$1</b>'); 2353541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2354541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2355541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2356541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction search_focus_changed(obj, focused) 2357541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2358541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!focused) { 2359541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(obj.value == ""){ 2360541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").addClass("hide"); 2361541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2362541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".suggest-card").hide(); 2363541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2364541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2365541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2366541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction submit_search() { 2367541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var query = document.getElementById('search_autocomplete').value; 2368541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty location.hash = 'q=' + query; 2369541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty loadSearchResults(); 2370d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main $("#searchResults").slideDown('slow', setStickyTop); 2371541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 2372541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2373541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2374541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2375541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction hideResults() { 2376d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main $("#searchResults").slideUp('fast', setStickyTop); 2377541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").addClass("hide"); 2378541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty location.hash = ''; 2379541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2380541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").val("").blur(); 2381541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2382541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // reset the ajax search callback to nothing, so results don't appear unless ENTER 2383541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setSearchStartingCallback(this, function(control, searcher, query) {}); 2384541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2385541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // forcefully regain key-up event control (previously jacked by search api) 2386541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").keyup(function(event) { 2387541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return search_changed(event, false, toRoot); 2388541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2389541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2390541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 2391541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2392541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2393541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2394541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2395541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ########################################################## */ 2396541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ################ CUSTOM SEARCH ENGINE ################## */ 2397541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ########################################################## */ 2398541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2399541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar searchControl; 2400541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertygoogle.load('search', '1', {"callback" : function() { 2401541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl = new google.search.SearchControl(); 2402541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } }); 2403541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2404541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction loadSearchResults() { 2405541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty document.getElementById("search_autocomplete").style.color = "#000"; 2406541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2407541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl = new google.search.SearchControl(); 2408541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2409541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // use our existing search form and use tabs when multiple searchers are used 2410541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty drawOptions = new google.search.DrawOptions(); 2411541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED); 2412541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty drawOptions.setInput(document.getElementById("search_autocomplete")); 2413541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2414541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // configure search result options 2415541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchOptions = new google.search.SearcherOptions(); 2416541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN); 2417541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2418541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // configure each of the searchers, for each tab 2419541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty devSiteSearcher = new google.search.WebSearch(); 2420541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty devSiteSearcher.setUserDefinedLabel("All"); 2421541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty devSiteSearcher.setSiteRestriction("001482626316274216503:zu90b7s047u"); 2422541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2423541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty designSearcher = new google.search.WebSearch(); 2424541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty designSearcher.setUserDefinedLabel("Design"); 2425541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty designSearcher.setSiteRestriction("http://developer.android.com/design/"); 2426541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2427541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty trainingSearcher = new google.search.WebSearch(); 2428541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty trainingSearcher.setUserDefinedLabel("Training"); 2429541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty trainingSearcher.setSiteRestriction("http://developer.android.com/training/"); 2430541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2431541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty guidesSearcher = new google.search.WebSearch(); 2432541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty guidesSearcher.setUserDefinedLabel("Guides"); 2433541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty guidesSearcher.setSiteRestriction("http://developer.android.com/guide/"); 2434541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2435541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty referenceSearcher = new google.search.WebSearch(); 2436541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty referenceSearcher.setUserDefinedLabel("Reference"); 2437541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty referenceSearcher.setSiteRestriction("http://developer.android.com/reference/"); 2438541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2439541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty googleSearcher = new google.search.WebSearch(); 2440541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty googleSearcher.setUserDefinedLabel("Google Services"); 2441541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty googleSearcher.setSiteRestriction("http://developer.android.com/google/"); 2442541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2443541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty blogSearcher = new google.search.WebSearch(); 2444541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty blogSearcher.setUserDefinedLabel("Blog"); 2445541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty blogSearcher.setSiteRestriction("http://android-developers.blogspot.com"); 2446541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2447541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // add each searcher to the search control 2448541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(devSiteSearcher, searchOptions); 2449541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(designSearcher, searchOptions); 2450541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(trainingSearcher, searchOptions); 2451541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(guidesSearcher, searchOptions); 2452541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(referenceSearcher, searchOptions); 2453541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(googleSearcher, searchOptions); 2454541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.addSearcher(blogSearcher, searchOptions); 2455541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2456541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // configure result options 2457541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET); 2458541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF); 2459541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_SHORT); 2460541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING); 2461541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2462541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // upon ajax search, refresh the url and search title 2463541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setSearchStartingCallback(this, function(control, searcher, query) { 2464541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateResultTitle(query); 2465541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var query = document.getElementById('search_autocomplete').value; 2466541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty location.hash = 'q=' + query; 2467541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2468541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2469541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // once search results load, set up click listeners 2470541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.setSearchCompleteCallback(this, function(control, searcher, query) { 2471541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty addResultClickListeners(); 2472541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2473541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2474541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // draw the search results box 2475541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.draw(document.getElementById("leftSearchControl"), drawOptions); 2476541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2477541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // get query and execute the search 2478541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.execute(decodeURI(getQuery(location.hash))); 2479541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2480541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty document.getElementById("search_autocomplete").focus(); 2481541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty addTabListeners(); 2482541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2483541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// End of loadSearchResults 2484541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2485541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2486541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertygoogle.setOnLoadCallback(function(){ 2487541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (location.hash.indexOf("q=") == -1) { 2488541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if there's no query in the url, don't search and make sure results are hidden 2489541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#searchResults').hide(); 2490541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2491541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2492541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // first time loading search results for this page 2493d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main $('#searchResults').slideDown('slow', setStickyTop); 2494541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").removeClass("hide"); 2495541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty loadSearchResults(); 2496541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2497541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}, true); 2498541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2499541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// when an event on the browser history occurs (back, forward, load) requery hash and do search 2500541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$(window).hashchange( function(){ 25014868e9bf92fb88a94c377dfda5d97e38b0948b7dScott Main // If the hash isn't a search query or there's an error in the query, 25024868e9bf92fb88a94c377dfda5d97e38b0948b7dScott Main // then adjust the scroll position to account for sticky header, then exit. 2503541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ((location.hash.indexOf("q=") == -1) || (query == "undefined")) { 2504541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // If the results pane is open, close it. 2505541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!$("#searchResults").is(":hidden")) { 2506541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty hideResults(); 2507541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 25084868e9bf92fb88a94c377dfda5d97e38b0948b7dScott Main // Adjust the scroll position to account for sticky header 25094868e9bf92fb88a94c377dfda5d97e38b0948b7dScott Main $(window).scrollTop($(window).scrollTop() - 60); 2510541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2511541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2512541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2513541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Otherwise, we have a search to do 2514541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var query = decodeURI(getQuery(location.hash)); 2515541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty searchControl.execute(query); 2516d6a8e662cf43f72acd219ff39b6ff73a5011da22Scott Main $('#searchResults').slideDown('slow', setStickyTop); 2517541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#search_autocomplete").focus(); 2518541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".search .close").removeClass("hide"); 2519541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2520541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty updateResultTitle(query); 2521541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 2522541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2523541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction updateResultTitle(query) { 2524541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#searchTitle").html("Results for <em>" + escapeHTML(query) + "</em>"); 2525541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2526541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2527541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// forcefully regain key-up event control (previously jacked by search api) 2528541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$("#search_autocomplete").keyup(function(event) { 2529541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return search_changed(event, false, toRoot); 2530541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 2531541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2532541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// add event listeners to each tab so we can track the browser history 2533541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction addTabListeners() { 2534541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var tabHeaders = $(".gsc-tabHeader"); 2535541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i = 0; i < tabHeaders.length; i++) { 2536541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(tabHeaders[i]).attr("id",i).click(function() { 2537541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty /* 2538541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // make a copy of the page numbers for the search left pane 2539541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(function() { 2540541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // remove any residual page numbers 2541541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#searchResults .gsc-tabsArea .gsc-cursor-box.gs-bidi-start-align').remove(); 2542541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // move the page numbers to the left position; make a clone, 2543541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // because the element is drawn to the DOM only once 2544541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // and because we're going to remove it (previous line), 2545541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // we need it to be available to move again as the user navigates 2546541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#searchResults .gsc-webResult .gsc-cursor-box.gs-bidi-start-align:visible') 2547541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .clone().appendTo('#searchResults .gsc-tabsArea'); 2548541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }, 200); 2549541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 2550541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2551541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2552541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty setTimeout(function(){$(tabHeaders[0]).click()},200); 2553541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2554541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2555541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// add analytics tracking events to each result link 2556541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction addResultClickListeners() { 2557541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#searchResults a.gs-title").each(function(index, link) { 2558541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // When user clicks enter for Google search results, track it 2559541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(link).click(function() { 2560541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty _gaq.push(['_trackEvent', 'Google Click', 'clicked: ' + $(this).text(), 2561541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'from: ' + $("#search_autocomplete").val()]); 2562541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2563541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2564541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2565541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2566541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2567541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction getQuery(hash) { 2568541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var queryParts = hash.split('='); 2569541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return queryParts[1]; 2570541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2571541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2572541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* returns the given string with all HTML brackets converted to entities 2573541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty TODO: move this to the site's JS library */ 2574541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction escapeHTML(string) { 2575541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return string.replace(/</g,"<") 2576541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty .replace(/>/g,">"); 2577541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2578541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2579541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2580541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2581541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2582541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2583541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2584541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2585541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######################################################## */ 2586541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ################# JAVADOC REFERENCE ################### */ 2587541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ######################################################## */ 2588541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2589541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Initialize some droiddoc stuff, but only if we're in the reference */ 2590541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyif (location.pathname.indexOf("/reference") == 0) { 2591541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(!(location.pathname.indexOf("/reference-gms/packages.html") == 0) 2592541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && !(location.pathname.indexOf("/reference-gcm/packages.html") == 0) 2593541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty && !(location.pathname.indexOf("/reference/com/google") == 0)) { 2594541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(document).ready(function() { 2595541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // init available apis based on user pref 2596541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty changeApiLevel(); 2597541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty initSidenavHeightResize() 2598541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2599541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2600541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2601541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2602541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar API_LEVEL_COOKIE = "api_level"; 2603541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar minLevel = 1; 2604541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar maxLevel = 1; 2605541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2606541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/******* SIDENAV DIMENSIONS ************/ 2607541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2608541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty function initSidenavHeightResize() { 2609541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Change the drag bar size to nicely fit the scrollbar positions 2610541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $dragBar = $(".ui-resizable-s"); 2611541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $dragBar.css({'width': $dragBar.parent().width() - 5 + "px"}); 2612541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2613541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $( "#resize-packages-nav" ).resizable({ 2614541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty containment: "#nav-panels", 2615541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty handles: "s", 2616541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty alsoResize: "#packages-nav", 2617541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resize: function(event, ui) { resizeNav(); }, /* resize the nav while dragging */ 2618541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty stop: function(event, ui) { saveNavPanels(); } /* once stopped, save the sizes to cookie */ 2619541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2620541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2621541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2622541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2623541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction updateSidenavFixedWidth() { 2624541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!navBarIsFixed) return; 2625541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav').css({ 2626541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'width' : $('#side-nav').css('width'), 2627541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'margin' : $('#side-nav').css('margin') 2628541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2629541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav a.totop').css({'display':'block','width':$("#nav").innerWidth()+'px'}); 2630541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2631541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty initSidenavHeightResize(); 2632541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2633541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2634541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction updateSidenavFullscreenWidth() { 2635541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!navBarIsFixed) return; 2636541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav').css({ 2637541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'width' : $('#side-nav').css('width'), 2638541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 'margin' : $('#side-nav').css('margin') 2639541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2640541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $('#devdoc-nav .totop').css({'left': 'inherit'}); 2641541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2642541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty initSidenavHeightResize(); 2643541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2644541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2645541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction buildApiLevelSelector() { 2646541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty maxLevel = SINCE_DATA.length; 2647541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var userApiLevel = parseInt(readCookie(API_LEVEL_COOKIE)); 2648541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty userApiLevel = userApiLevel == 0 ? maxLevel : userApiLevel; // If there's no cookie (zero), use the max by default 2649541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2650541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty minLevel = parseInt($("#doc-api-level").attr("class")); 2651541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Handle provisional api levels; the provisional level will always be the highest possible level 2652541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Provisional api levels will also have a length; other stuff that's just missing a level won't, 2653541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // so leave those kinds of entities at the default level of 1 (for example, the R.styleable class) 2654541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (isNaN(minLevel) && minLevel.length) { 2655541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty minLevel = maxLevel; 2656541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2657541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var select = $("#apiLevelSelector").html("").change(changeApiLevel); 2658541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i = maxLevel-1; i >= 0; i--) { 2659541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]); 2660541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames) 2661541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty select.append(option); 2662541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2663541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2664541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true) 2665541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0); 2666541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selectedLevelItem.setAttribute('selected',true); 2667541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2668541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2669541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction changeApiLevel() { 2670541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty maxLevel = SINCE_DATA.length; 2671541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedLevel = maxLevel; 2672541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2673541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selectedLevel = parseInt($("#apiLevelSelector option:selected").val()); 2674541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleVisisbleApis(selectedLevel, "body"); 2675541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2676541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var date = new Date(); 2677541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years 2678541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var expiration = date.toGMTString(); 2679541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty writeCookie(API_LEVEL_COOKIE, selectedLevel, null, expiration); 2680541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2681541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (selectedLevel < minLevel) { 2682541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class"; 2683541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#naMessage").show().html("<div><p><strong>This " + thing 2684541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + " requires API level " + minLevel + " or higher.</strong></p>" 2685541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "<p>This document is hidden because your selected API level for the documentation is " 2686541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + selectedLevel + ". You can change the documentation API level with the selector " 2687541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "above the left navigation.</p>" 2688541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "<p>For more information about specifying the API level your app requires, " 2689541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "read <a href='" + toRoot + "training/basics/supporting-devices/platforms.html'" 2690541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + ">Supporting Different Platform Versions</a>.</p>" 2691541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "<input type='button' value='OK, make this page visible' " 2692541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "title='Change the API level to " + minLevel + "' " 2693541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "onclick='$(\"#apiLevelSelector\").val(\"" + minLevel + "\");changeApiLevel();' />" 2694541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "</div>"); 2695541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2696541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#naMessage").hide(); 2697541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2698541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2699541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2700541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleVisisbleApis(selectedLevel, context) { 2701541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var apis = $(".api",context); 2702541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty apis.each(function(i) { 2703541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var obj = $(this); 2704541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var className = obj.attr("class"); 2705541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var apiLevelIndex = className.lastIndexOf("-")+1; 2706541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var apiLevelEndIndex = className.indexOf(" ", apiLevelIndex); 2707541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty apiLevelEndIndex = apiLevelEndIndex != -1 ? apiLevelEndIndex : className.length; 2708541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var apiLevel = className.substring(apiLevelIndex, apiLevelEndIndex); 2709541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (apiLevel.length == 0) { // for odd cases when the since data is actually missing, just bail 2710541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return; 2711541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2712541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty apiLevel = parseInt(apiLevel); 2713541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2714541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Handle provisional api levels; if this item's level is the provisional one, set it to the max 2715541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedLevelNum = parseInt(selectedLevel) 2716541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var apiLevelNum = parseInt(apiLevel); 2717541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (isNaN(apiLevelNum)) { 2718541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty apiLevelNum = maxLevel; 2719541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2720541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2721541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Grey things out that aren't available and give a tooltip title 2722541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (apiLevelNum > selectedLevelNum) { 2723541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty obj.addClass("absent").attr("title","Requires API Level \"" 2724541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + apiLevel + "\" or higher. To reveal, change the target API level " 2725541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + "above the left navigation."); 2726541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2727541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else obj.removeClass("absent").removeAttr("title"); 2728541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2729541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2730541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2731541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2732541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2733541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2734541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* ################# SIDENAV TREE VIEW ################### */ 2735541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2736541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction new_node(me, mom, text, link, children_data, api_level) 2737541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2738541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var node = new Object(); 2739541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children = Array(); 2740541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_data = children_data; 2741541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.depth = mom.depth + 1; 2742541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2743541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li = document.createElement("li"); 2744541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.get_children_ul().appendChild(node.li); 2745541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2746541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div = document.createElement("div"); 2747541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div.className = "label"; 2748541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (api_level != null) { 2749541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.label_div).addClass("api"); 2750541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.label_div).addClass("api-level-"+api_level); 2751541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2752541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.appendChild(node.label_div); 2753541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2754541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (children_data != null) { 2755541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expand_toggle = document.createElement("a"); 2756541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expand_toggle.href = "javascript:void(0)"; 2757541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expand_toggle.onclick = function() { 2758541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node.expanded) { 2759541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.get_children_ul()).slideUp("fast"); 2760541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png"; 2761541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expanded = false; 2762541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2763541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expand_node(me, node); 2764541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2765541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2766541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div.appendChild(node.expand_toggle); 2767541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2768541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img = document.createElement("img"); 2769541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png"; 2770541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.className = "plus"; 2771541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.width = "8"; 2772541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.border = "0"; 2773541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expand_toggle.appendChild(node.plus_img); 2774541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2775541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expanded = false; 2776541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2777541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2778541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var a = document.createElement("a"); 2779541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div.appendChild(a); 2780541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label = document.createTextNode(text); 2781541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.appendChild(node.label); 2782541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (link) { 2783541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.href = me.toroot + link; 2784541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2785541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (children_data != null) { 2786541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.className = "nolink"; 2787541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.href = "javascript:void(0)"; 2788541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.onclick = node.expand_toggle.onclick; 2789541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // This next line shouldn't be necessary. I'll buy a beer for the first 2790541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // person who figures out how to remove this line and have the link 2791541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // toggle shut on the first try. --joeo@android.com 2792541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expanded = false; 2793541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2794541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2795541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2796541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2797541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul = null; 2798541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.get_children_ul = function() { 2799541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!node.children_ul) { 2800541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul = document.createElement("ul"); 2801541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul.className = "children_ul"; 2802541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul.style.display = "none"; 2803541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.appendChild(node.children_ul); 2804541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2805541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return node.children_ul; 2806541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2807541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2808541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return node; 2809541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2810541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2811541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2812541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2813541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2814541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction expand_node(me, node) 2815541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2816541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node.children_data && !node.expanded) { 2817541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node.children_visited) { 2818541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.get_children_ul()).slideDown("fast"); 2819541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2820541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty get_node(me, node); 2821541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($(node.label_div).hasClass("absent")) { 2822541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.get_children_ul()).addClass("absent"); 2823541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2824541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(node.get_children_ul()).slideDown("fast"); 2825541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2826541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.plus_img.src = me.toroot + "assets/images/triangle-opened-small.png"; 2827541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.expanded = true; 2828541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2829541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // perform api level toggling because new nodes are new to the DOM 2830541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedLevel = $("#apiLevelSelector option:selected").val(); 2831541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleVisisbleApis(selectedLevel, "#side-nav"); 2832541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2833541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2834541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2835541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction get_node(me, mom) 2836541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2837541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.children_visited = true; 2838541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in mom.children_data) { 2839541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var node_data = mom.children_data[i]; 2840541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.children[i] = new_node(me, mom, node_data[0], node_data[1], 2841541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node_data[2], node_data[3]); 2842541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2843541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2844541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2845541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction this_page_relative(toroot) 2846541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2847541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var full = document.location.pathname; 2848541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var file = ""; 2849541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (toroot.substr(0, 1) == "/") { 2850541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (full.substr(0, toroot.length) == toroot) { 2851541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return full.substr(toroot.length); 2852541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2853541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // the file isn't under toroot. Fail. 2854541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return null; 2855541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2856541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 2857541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (toroot != "./") { 2858541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toroot = "./" + toroot; 2859541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2860541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty do { 2861541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (toroot.substr(toroot.length-3, 3) == "../" || toroot == "./") { 2862541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var pos = full.lastIndexOf("/"); 2863541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty file = full.substr(pos) + file; 2864541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty full = full.substr(0, pos); 2865541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toroot = toroot.substr(0, toroot.length-3); 2866541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2867541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } while (toroot != "" && toroot != "/"); 2868541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return file.substr(1); 2869541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2870541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2871541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2872541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction find_page(url, data) 2873541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2874541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var nodes = data; 2875541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var result = null; 2876541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in nodes) { 2877541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var d = nodes[i]; 2878541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (d[1] == url) { 2879541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return new Array(i); 2880541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2881541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else if (d[2] != null) { 2882541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty result = find_page(url, d[2]); 2883541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (result != null) { 2884541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return (new Array(i).concat(result)); 2885541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2886541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2887541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2888541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return null; 2889541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2890541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2891541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_default_navtree(toroot) { 2892541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for navtree data 2893541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'navtree_data.js', function(data, textStatus, jqxhr) { 2894541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // when the file is loaded, initialize the tree 2895541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 2896541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_navtree("tree-list", toroot, NAVTREE_DATA); 2897541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2898541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2899541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2900541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // perform api level toggling because because the whole tree is new to the DOM 2901541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var selectedLevel = $("#apiLevelSelector option:selected").val(); 2902541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleVisisbleApis(selectedLevel, "#side-nav"); 2903541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2904541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2905541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_navtree(navtree_id, toroot, root_nodes) 2906541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2907541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var me = new Object(); 2908541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.toroot = toroot; 2909541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node = new Object(); 2910541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2911541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.li = document.getElementById(navtree_id); 2912541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children_data = root_nodes; 2913541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children = new Array(); 2914541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children_ul = document.createElement("ul"); 2915541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.get_children_ul = function() { return me.node.children_ul; }; 2916541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //me.node.children_ul.className = "children_ul"; 2917541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.li.appendChild(me.node.children_ul); 2918541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.depth = 0; 2919541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2920541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty get_node(me, me.node); 2921541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2922541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.this_page = this_page_relative(toroot); 2923541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.breadcrumbs = find_page(me.this_page, root_nodes); 2924541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (me.breadcrumbs != null && me.breadcrumbs.length != 0) { 2925541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var mom = me.node; 2926541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in me.breadcrumbs) { 2927541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var j = me.breadcrumbs[i]; 2928541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom = mom.children[j]; 2929541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expand_node(me, mom); 2930541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2931541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.label_div.className = mom.label_div.className + " selected"; 2932541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty addLoadEvent(function() { 2933541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty scrollIntoView("nav-tree"); 2934541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 2935541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2936541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2937541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2938541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2939541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2940541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2941541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2942541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2943541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2944541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2945541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* TODO: eliminate redundancy with non-google functions */ 2946541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_google_navtree(navtree_id, toroot, root_nodes) 2947541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2948541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var me = new Object(); 2949541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.toroot = toroot; 2950541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node = new Object(); 2951541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2952541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.li = document.getElementById(navtree_id); 2953541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children_data = root_nodes; 2954541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children = new Array(); 2955541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.children_ul = document.createElement("ul"); 2956541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.get_children_ul = function() { return me.node.children_ul; }; 2957541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty //me.node.children_ul.className = "children_ul"; 2958541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.li.appendChild(me.node.children_ul); 2959541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty me.node.depth = 0; 2960541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2961541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty get_google_node(me, me.node); 2962541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 2963541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2964541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction new_google_node(me, mom, text, link, children_data, api_level) 2965541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 2966541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var node = new Object(); 2967541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var child; 2968541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children = Array(); 2969541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_data = children_data; 2970541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.depth = mom.depth + 1; 2971541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.get_children_ul = function() { 2972541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!node.children_ul) { 2973541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul = document.createElement("ul"); 2974541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul.className = "tree-list-children"; 2975541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.appendChild(node.children_ul); 2976541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2977541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return node.children_ul; 2978541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }; 2979541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li = document.createElement("li"); 2980541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2981541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.get_children_ul().appendChild(node.li); 2982541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2983541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2984541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(link) { 2985541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty child = document.createElement("a"); 2986541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2987541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2988541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else { 2989541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty child = document.createElement("span"); 2990541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty child.className = "tree-list-subtitle"; 2991541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 2992541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 2993541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (children_data != null) { 2994541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.className="nav-section"; 2995541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div = document.createElement("div"); 2996541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div.className = "nav-section-header-ref"; 2997541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.appendChild(node.label_div); 2998541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty get_google_node(me, node); 2999541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label_div.appendChild(child); 3000541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3001541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty else { 3002541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.li.appendChild(child); 3003541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3004541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(link) { 3005541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty child.href = me.toroot + link; 3006541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3007541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.label = document.createTextNode(text); 3008541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty child.appendChild(node.label); 3009541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3010541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node.children_ul = null; 3011541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3012541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return node; 3013541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3014541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3015541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction get_google_node(me, mom) 3016541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 3017541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.children_visited = true; 3018541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var linkText; 3019541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in mom.children_data) { 3020541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var node_data = mom.children_data[i]; 3021541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty linkText = node_data[0]; 3022541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3023541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(linkText.match("^"+"com.google.android")=="com.google.android"){ 3024541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty linkText = linkText.substr(19, linkText.length); 3025541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3026541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty mom.children[i] = new_google_node(me, mom, linkText, node_data[1], 3027541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty node_data[2], node_data[3]); 3028541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3029541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3030541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3031541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3032541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3033541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3034541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3035541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3036541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/****** NEW version of script to build google and sample navs dynamically ******/ 3037541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// TODO: update Google reference docs to tolerate this new implementation 3038541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3039541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NODE_NAME = 0; 3040541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NODE_HREF = 1; 3041541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NODE_GROUP = 2; 3042541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NODE_TAGS = 3; 3043541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar NODE_CHILDREN = 4; 3044541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3045541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_google_navtree2(navtree_id, data) 3046541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 3047541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $containerUl = $("#"+navtree_id); 3048541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in data) { 3049541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var node_data = data[i]; 3050541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $containerUl.append(new_google_node2(node_data)); 3051541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3052541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3053541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // Make all third-generation list items 'sticky' to prevent them from collapsing 3054541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $containerUl.find('li li li.nav-section').addClass('sticky'); 3055541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3056541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty initExpandableNavItems("#"+navtree_id); 3057541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3058541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3059541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction new_google_node2(node_data) 3060541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty{ 3061541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var linkText = node_data[NODE_NAME]; 3062541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(linkText.match("^"+"com.google.android")=="com.google.android"){ 3063541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty linkText = linkText.substr(19, linkText.length); 3064541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3065541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li = $('<li>'); 3066541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $a; 3067541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node_data[NODE_HREF] != null) { 3068541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $a = $('<a href="' + toRoot + node_data[NODE_HREF] + '" title="' + linkText + '" >' 3069541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + linkText + '</a>'); 3070541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 3071541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $a = $('<a href="#" onclick="return false;" title="' + linkText + '" >' 3072541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty + linkText + '/</a>'); 3073541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3074541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $childUl = $('<ul>'); 3075541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node_data[NODE_CHILDREN] != null) { 3076541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.addClass("nav-section"); 3077541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $a = $('<div class="nav-section-header">').append($a); 3078541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (node_data[NODE_HREF] == null) $a.addClass('empty'); 3079541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3080541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty for (var i in node_data[NODE_CHILDREN]) { 3081541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var child_node_data = node_data[NODE_CHILDREN][i]; 3082541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $childUl.append(new_google_node2(child_node_data)); 3083541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3084541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.append($childUl); 3085541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3086541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $li.prepend($a); 3087541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3088541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return $li; 3089541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3090541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3091541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3092541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3093541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3094541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3095541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3096541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3097541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3098541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3099541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3100541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3101541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction showGoogleRefTree() { 3102541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_default_google_navtree(toRoot); 3103541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_default_gcm_navtree(toRoot); 3104541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3105541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3106541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_default_google_navtree(toroot) { 3107541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for navtree data 3108541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'gms_navtree_data.js', function(data, textStatus, jqxhr) { 3109541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // when the file is loaded, initialize the tree 3110541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 3111541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_google_navtree("gms-tree-list", toroot, GMS_NAVTREE_DATA); 3112541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty highlightSidenav(); 3113541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 3114541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3115541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3116541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3117541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3118541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_default_gcm_navtree(toroot) { 3119541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for navtree data 3120541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'gcm_navtree_data.js', function(data, textStatus, jqxhr) { 3121541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // when the file is loaded, initialize the tree 3122541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 3123541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_google_navtree("gcm-tree-list", toroot, GCM_NAVTREE_DATA); 3124541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty highlightSidenav(); 3125541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 3126541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3127541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3128541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3129541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3130541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction showSamplesRefTree() { 3131541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_default_samples_navtree(toRoot); 3132541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3133541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3134541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction init_default_samples_navtree(toroot) { 3135541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // load json file for navtree data 3136541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $.getScript(toRoot + 'samples_navtree_data.js', function(data, textStatus, jqxhr) { 3137541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // when the file is loaded, initialize the tree 3138541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if(jqxhr.status === 200) { 3139541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // hack to remove the "about the samples" link then put it back in 3140541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // after we nuke the list to remove the dummy static list of samples 3141541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $firstLi = $("#nav.samples-nav > li:first-child").clone(); 3142541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav.samples-nav").empty(); 3143541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#nav.samples-nav").append($firstLi); 3144541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3145541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty init_google_navtree2("nav.samples-nav", SAMPLES_NAVTREE_DATA); 3146541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty highlightSidenav(); 3147541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty resizeNav(); 3148541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ($("#jd-content #samples").length) { 3149541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty showSamples(); 3150541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3151541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3152541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3153541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3154541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3155541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* TOGGLE INHERITED MEMBERS */ 3156541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3157541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Toggle an inherited class (arrow toggle) 3158541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param linkObj The link that was clicked. 3159541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed. 3160541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 'null' to simply toggle. 3161541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 3162541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleInherited(linkObj, expand) { 3163541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var base = linkObj.getAttribute("id"); 3164541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var list = document.getElementById(base + "-list"); 3165541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var summary = document.getElementById(base + "-summary"); 3166541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var trigger = document.getElementById(base + "-trigger"); 3167541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var a = $(linkObj); 3168541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ( (expand == null && a.hasClass("closed")) || expand ) { 3169541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty list.style.display = "none"; 3170541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty summary.style.display = "block"; 3171541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty trigger.src = toRoot + "assets/images/triangle-opened.png"; 3172541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.removeClass("closed"); 3173541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.addClass("opened"); 3174541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ( (expand == null && a.hasClass("opened")) || (expand == false) ) { 3175541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty list.style.display = "block"; 3176541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty summary.style.display = "none"; 3177541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty trigger.src = toRoot + "assets/images/triangle-closed.png"; 3178541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.removeClass("opened"); 3179541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.addClass("closed"); 3180541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3181541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 3182541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3183541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3184541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Toggle all inherited classes in a single table (e.g. all inherited methods) 3185541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param linkObj The link that was clicked. 3186541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed. 3187541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * 'null' to simply toggle. 3188541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 3189541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleAllInherited(linkObj, expand) { 3190541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var a = $(linkObj); 3191541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var table = $(a.parent().parent().parent()); // ugly way to get table/tbody 3192541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var expandos = $(".jd-expando-trigger", table); 3193541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if ( (expand == null && a.text() == "[Expand]") || expand ) { 3194541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expandos.each(function(i) { 3195541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleInherited(this, true); 3196541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3197541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.text("[Collapse]"); 3198541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if ( (expand == null && a.text() == "[Collapse]") || (expand == false) ) { 3199541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty expandos.each(function(i) { 3200541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleInherited(this, false); 3201541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3202541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.text("[Expand]"); 3203541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3204541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 3205541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3206541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3207541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Toggle all inherited members in the class (link in the class title) 3208541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 3209541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction toggleAllClassInherited() { 3210541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var a = $("#toggleAllClassInherited"); // get toggle link from class title 3211541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var toggles = $(".toggle-all", $("#body-content")); 3212541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (a.text() == "[Expand All]") { 3213541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggles.each(function(i) { 3214541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleAllInherited(this, true); 3215541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3216541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.text("[Collapse All]"); 3217541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else { 3218541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggles.each(function(i) { 3219541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleAllInherited(this, false); 3220541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3221541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty a.text("[Expand All]"); 3222541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3223541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty return false; 3224541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3225541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3226541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* Expand all inherited members in the class. Used when initiating page search */ 3227541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction ensureAllInheritedExpanded() { 3228541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var toggles = $(".toggle-all", $("#body-content")); 3229541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggles.each(function(i) { 3230541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty toggleAllInherited(this, true); 3231541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3232541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#toggleAllClassInherited").text("[Collapse All]"); 3233541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3234541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3235541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3236541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* HANDLE KEY EVENTS 3237541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty * - Listen for Ctrl+F (Cmd on Mac) and expand all inherited members (to aid page search) 3238541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty */ 3239541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar agent = navigator['userAgent'].toLowerCase(); 3240541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar mac = agent.indexOf("macintosh") != -1; 3241541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3242541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$(document).keydown( function(e) { 3243541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar control = mac ? e.metaKey && !e.ctrlKey : e.ctrlKey; // get ctrl key 3244541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (control && e.which == 70) { // 70 is "F" 3245541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ensureAllInheritedExpanded(); 3246541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3247541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty}); 3248541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3249541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3250541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3251541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3252541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3253541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3254541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/* On-demand functions */ 3255541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3256541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/** Move sample code line numbers out of PRE block and into non-copyable column */ 3257541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction initCodeLineNumbers() { 3258541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var numbers = $("#codesample-block a.number"); 3259541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (numbers.length) { 3260541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#codesample-line-numbers").removeClass("hidden").append(numbers); 3261541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3262541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3263541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(document).ready(function() { 3264541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // select entire line when clicked 3265541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("span.code-line").click(function() { 3266541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (!shifted) { 3267541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selectText(this); 3268541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3269541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3270541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // invoke line link on double click 3271541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(".code-line").dblclick(function() { 3272541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty document.location.hash = $(this).attr('id'); 3273541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3274541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty // highlight the line when hovering on the number 3275541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#codesample-line-numbers a.number").mouseover(function() { 3276541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var id = $(this).attr('href'); 3277541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(id).css('background','#e7e7e7'); 3278541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3279541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#codesample-line-numbers a.number").mouseout(function() { 3280541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var id = $(this).attr('href'); 3281541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $(id).css('background','none'); 3282541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3283541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3284541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3285541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3286541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// create SHIFT key binder to avoid the selectText method when selecting multiple lines 3287541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyvar shifted = false; 3288541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty$(document).bind('keyup keydown', function(e){shifted = e.shiftKey; return true;} ); 3289541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3290541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty// courtesy of jasonedelman.com 3291541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction selectText(element) { 3292541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var doc = document 3293541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty , range, selection 3294541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty ; 3295541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty if (doc.body.createTextRange) { //ms 3296541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty range = doc.body.createTextRange(); 3297541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty range.moveToElementText(element); 3298541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty range.select(); 3299541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } else if (window.getSelection) { //all others 3300541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selection = window.getSelection(); 3301541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty range = doc.createRange(); 3302541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty range.selectNodeContents(element); 3303541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selection.removeAllRanges(); 3304541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty selection.addRange(range); 3305541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty } 3306541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 3307541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3308541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3309541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3310541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3311541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty/** Display links and other information about samples that match the 3312541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty group specified by the URL */ 3313541b494103857da31505ba745b0da5bdbe0499b9Dirk Doughertyfunction showSamples() { 3314541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var group = $("#samples").attr('class'); 3315541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#samples").html("<p>Here are some samples for <b>" + group + "</b> apps:</p>"); 3316541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3317541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $ul = $("<ul>"); 3318541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selectedLi = $("#nav li.selected"); 3319541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3320541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $selectedLi.children("ul").children("li").each(function() { 3321541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty var $li = $("<li>").append($(this).find("a").first().clone()); 3322541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $ul.append($li); 3323541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty }); 3324541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3325541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty $("#samples").append($ul); 3326541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty 3327541b494103857da31505ba745b0da5bdbe0499b9Dirk Dougherty} 332808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 332908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 333008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 333108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty/* ########################################################## */ 333208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty/* ################### RESOURCE CARDS ##################### */ 333308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty/* ########################################################## */ 333408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 333508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty/** Handle resource queries, collections, and grids (sections). Requires 333608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty jd_tag_helpers.js and the *_unified_data.js to be loaded. */ 333708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 333808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty(function() { 333908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Prevent the same resource from being loaded more than once per page. 334008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var addedPageResources = {}; 334108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 334208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $(document).ready(function() { 334308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('.resource-widget').each(function() { 334408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty initResourceWidget(this); 334508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 334608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 3347318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty /* Pass the line height to ellipsisfade() to adjust the height of the 3348318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty text container to show the max number of lines possible, without 3349318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty showing lines that are cut off. This works with the css ellipsis 3350318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty classes to fade last text line and apply an ellipsis char. */ 3351318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty 3352318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty //card text currently uses 15px line height. 3353318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var lineHeight = 15; 3354318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $('.card-info .text').ellipsisfade(lineHeight); 335508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 335608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 335708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* 335808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty Three types of resource layouts: 335908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty Flow - Uses a fixed row-height flow using float left style. 3360318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty Carousel - Single card slideshow all same dimension absolute. 336108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty Stack - Uses fixed columns and flexible element height. 336208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty */ 336308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function initResourceWidget(widget) { 336408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $widget = $(widget); 336508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var isFlow = $widget.hasClass('resource-flow-layout'), 336608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty isCarousel = $widget.hasClass('resource-carousel-layout'), 336708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty isStack = $widget.hasClass('resource-stack-layout'); 336808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 336908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // find size of widget by pulling out its class name 337008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var sizeCols = 1; 337108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var m = $widget.get(0).className.match(/\bcol-(\d+)\b/); 337208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (m) { 337308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sizeCols = parseInt(m[1], 10); 337408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 337508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 337608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var opts = { 337708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty cardSizes: ($widget.data('cardsizes') || '').split(','), 337808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty maxResults: parseInt($widget.data('maxresults') || '100', 10), 337908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty itemsPerPage: $widget.data('itemsperpage'), 338008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sortOrder: $widget.data('sortorder'), 338108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty query: $widget.data('query'), 338208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty section: $widget.data('section'), 338308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sizeCols: sizeCols 338408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 338508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 338608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // run the search for the set of resources to show 338708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 338808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var resources = buildResourceList(opts); 338908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 339008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (isFlow) { 339108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty drawResourcesFlowWidget($widget, opts, resources); 339208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (isCarousel) { 339308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty drawResourcesCarouselWidget($widget, opts, resources); 339408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (isStack) { 339508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var sections = buildSectionList(opts); 339608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty opts['numStacks'] = $widget.data('numstacks'); 339708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty drawResourcesStackWidget($widget, opts, resources, sections); 339808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 339908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 340008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 340108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Initializes a Resource Carousel Widget */ 340208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function drawResourcesCarouselWidget($widget, opts, resources) { 340308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $widget.empty(); 3404318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var plusone = true; //always show plusone on carousel 340508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 340608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $widget.addClass('resource-card slideshow-container') 340708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<a>').addClass('slideshow-prev').text('Prev')) 340808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<a>').addClass('slideshow-next').text('Next')); 340908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 341008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var css = { 'width': $widget.width() + 'px', 341108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 'height': $widget.height() + 'px' }; 341208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 341308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $ul = $('<ul>'); 341408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 341508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < resources.length; ++i) { 341608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 341708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urlPrefix = resources[i].url.indexOf("//") > -1 ? "" : toRoot; 341808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $card = $('<a>') 341908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('href', urlPrefix + resources[i].url) 3420318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .decorateResourceCard(resources[i],plusone); 342108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 342208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<li>').css(css) 342308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($card) 342408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($ul); 342508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 342608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 342708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<div>').addClass('frame') 342808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($ul) 342908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($widget); 343008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 343108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $widget.dacSlideshow({ 343208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty auto: true, 343308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty btnPrev: '.slideshow-prev', 343408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty btnNext: '.slideshow-next' 343508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 343608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 343708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 343808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Initializes a Resource Card Stack Widget (column-based layout) */ 343908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function drawResourcesStackWidget($widget, opts, resources, sections) { 344008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Don't empty widget, grab all items inside since they will be the first 344108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // items stacked, followed by the resource query 3442318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var plusone = true; //by default show plusone on section cards 344308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var cards = $widget.find('.resource-card').detach().toArray(); 344408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var numStacks = opts.numStacks || 1; 344508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $stacks = []; 344608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urlString; 344708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 344808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < numStacks; ++i) { 344908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $stacks[i] = $('<div>').addClass('resource-card-stack') 345008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($widget); 345108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 345208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 345308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var sectionResources = []; 345408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 345508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Extract any subsections that are actually resource cards 345608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < sections.length; ++i) { 345708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (!sections[i].sections || !sections[i].sections.length) { 345808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 345908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty urlPrefix = sections[i].url.indexOf("//") > -1 ? "" : toRoot; 346008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Render it as a resource card 346108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 346208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty sectionResources.push( 346308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<a>') 346408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('resource-card section-card') 346508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('href', urlPrefix + sections[i].resource.url) 3466318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .decorateResourceCard(sections[i].resource,plusone)[0] 346708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty ); 346808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 346908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else { 347008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty cards.push( 347108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<div>') 347208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('resource-card section-card-menu') 3473318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .decorateResourceSection(sections[i],plusone)[0] 347408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty ); 347508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 347608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 347708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 347808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty cards = cards.concat(sectionResources); 347908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 348008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < resources.length; ++i) { 348108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 348208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty urlPrefix = resources[i].url.indexOf("//") > -1 ? "" : toRoot; 348308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $card = $('<a>') 348408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('resource-card related-card') 348508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('href', urlPrefix + resources[i].url) 3486318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .decorateResourceCard(resources[i],plusone); 348708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 348808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty cards.push($card[0]); 348908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 349008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 349108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < cards.length; ++i) { 349208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Find the stack with the shortest height, but give preference to 349308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // left to right order. 349408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var minHeight = $stacks[0].height(); 349508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var minIndex = 0; 349608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 349708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var j = 1; j < numStacks; ++j) { 349808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var height = $stacks[j].height(); 349908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (height < minHeight - 45) { 350008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty minHeight = height; 350108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty minIndex = j; 350208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 350308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 350408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 350508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $stacks[minIndex].append($(cards[i])); 350608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 350708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 350808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 350908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 351008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Initializes a flow widget, see distribute.scss for generating accompanying css */ 351108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function drawResourcesFlowWidget($widget, opts, resources) { 351208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $widget.empty(); 351308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var cardSizes = opts.cardSizes || ['6x6']; 351408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var i = 0, j = 0; 3515318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var plusone = true; // by default show plusone on resource cards 351608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 351708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty while (i < resources.length) { 351808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var cardSize = cardSizes[j++ % cardSizes.length]; 351908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty cardSize = cardSize.replace(/^\s+|\s+$/,''); 3520318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty console.log("cardsize is " + cardSize); 3521318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty // Some card sizes do not get a plusone button, such as where space is constrained 3522318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty // or for cards commonly embedded in docs (to improve overall page speed). 3523318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty plusone = !((cardSize == "6x2") || (cardSize == "6x3") || 3524318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty (cardSize == "9x2") || (cardSize == "9x3") || 3525318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty (cardSize == "12x2") || (cardSize == "12x3")); 352608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 352708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // A stack has a third dimension which is the number of stacked items 352808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var isStack = cardSize.match(/(\d+)x(\d+)x(\d+)/); 352908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var stackCount = 0; 353008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $stackDiv = null; 353108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 353208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (isStack) { 353308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Create a stack container which should have the dimensions defined 353408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // by the product of the items inside. 353508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $stackDiv = $('<div>').addClass('resource-card-stack resource-card-' + isStack[1] 353608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty + 'x' + isStack[2] * isStack[3]) .appendTo($widget); 353708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 353808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 353908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Build each stack item or just a single item 354008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty do { 354108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var resource = resources[i]; 354208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 354308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty urlPrefix = resource.url.indexOf("//") > -1 ? "" : toRoot; 354408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $card = $('<a>') 354508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('resource-card resource-card-' + cardSize + ' resource-card-' + resource.type) 354608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('href', urlPrefix + resource.url); 354708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 354808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (isStack) { 354908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $card.addClass('resource-card-' + isStack[1] + 'x' + isStack[2]); 355008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (++stackCount == parseInt(isStack[3])) { 355108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $card.addClass('resource-card-row-stack-last'); 355208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty stackCount = 0; 355308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 355408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else { 355508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty stackCount = 0; 355608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 355708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 3558318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $card.decorateResourceCard(resource,plusone) 355908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($stackDiv || $widget); 356008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 356108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } while (++i < resources.length && stackCount > 0); 356208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 356308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 356408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 356508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Build a site map of resources using a section as a root. */ 356608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function buildSectionList(opts) { 356708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (opts.section && SECTION_BY_ID[opts.section]) { 356808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return SECTION_BY_ID[opts.section].sections || []; 356908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 357008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return []; 357108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 357208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 357308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function buildResourceList(opts) { 357408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var maxResults = opts.maxResults || 100; 357508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 357608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var query = opts.query || ''; 357708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var expressions = parseResourceQuery(query); 357808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var addedResourceIndices = {}; 357908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var results = []; 358008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 358108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < expressions.length; i++) { 358208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var clauses = expressions[i]; 358308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 358408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // build initial set of resources from first clause 358508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var firstClause = clauses[0]; 358608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var resources = []; 358708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty switch (firstClause.attr) { 358808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'type': 358908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = ALL_RESOURCES_BY_TYPE[firstClause.value]; 359008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 359108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'lang': 359208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = ALL_RESOURCES_BY_LANG[firstClause.value]; 359308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 359408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'tag': 359508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = ALL_RESOURCES_BY_TAG[firstClause.value]; 359608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 359708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'collection': 359808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urls = RESOURCE_COLLECTIONS[firstClause.value].resources || []; 359908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = urls.map(function(url){ return ALL_RESOURCES_BY_URL[url]; }); 360008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 360108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'section': 360208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urls = SITE_MAP[firstClause.value].sections || []; 360308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = urls.map(function(url){ return ALL_RESOURCES_BY_URL[url]; }); 360408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 360508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 360620cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // console.log(firstClause.attr + ':' + firstClause.value); 360708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = resources || []; 360808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 360908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // use additional clauses to filter corpus 361008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (clauses.length > 1) { 361108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var otherClauses = clauses.slice(1); 361208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = resources.filter(getResourceMatchesClausesFilter(otherClauses)); 361308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 361408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 361508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // filter out resources already added 361608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (i > 1) { 361708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty resources = resources.filter(getResourceNotAlreadyAddedFilter(addedResourceIndices)); 361808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 361908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 362008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // add to list of already added indices 362108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var j = 0; j < resources.length; j++) { 362220cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main // console.log(resources[j].title); 362308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty addedResourceIndices[resources[j].index] = 1; 362408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 362508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 362608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // concat to final results list 362708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results = results.concat(resources); 362808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 362908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 363008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (opts.sortOrder && results.length) { 363108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var attr = opts.sortOrder; 363208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 363308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (opts.sortOrder == 'random') { 363408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var i = results.length, j, temp; 363508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty while (--i) { 363608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty j = Math.floor(Math.random() * (i + 1)); 363708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty temp = results[i]; 363808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results[i] = results[j]; 363908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results[j] = temp; 364008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 364108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else { 364208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var desc = attr.charAt(0) == '-'; 364308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (desc) { 364408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty attr = attr.substring(1); 364508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 364608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results = results.sort(function(x,y) { 364708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return (desc ? -1 : 1) * (parseInt(x[attr], 10) - parseInt(y[attr], 10)); 364808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 364908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 365008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 365108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 365208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results = results.filter(getResourceNotAlreadyAddedFilter(addedPageResources)); 365308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty results = results.slice(0, maxResults); 365408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 365508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var j = 0; j < results.length; ++j) { 365608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty addedPageResources[results[j].index] = 1; 365708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 365808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 365908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return results; 366008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 366108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 366208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 366308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function getResourceNotAlreadyAddedFilter(addedResourceIndices) { 366408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return function(resource) { 366508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return !addedResourceIndices[resource.index]; 366608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 366708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 366808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 366908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 367008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function getResourceMatchesClausesFilter(clauses) { 367108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return function(resource) { 367208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return doesResourceMatchClauses(resource, clauses); 367308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 367408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 367508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 367608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 367708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function doesResourceMatchClauses(resource, clauses) { 367808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < clauses.length; i++) { 367908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var map; 368008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty switch (clauses[i].attr) { 368108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'type': 368208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty map = IS_RESOURCE_OF_TYPE[clauses[i].value]; 368308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 368408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'lang': 368508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty map = IS_RESOURCE_IN_LANG[clauses[i].value]; 368608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 368708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty case 'tag': 368808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty map = IS_RESOURCE_TAGGED[clauses[i].value]; 368908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 369008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 369108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 369208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (!map || (!!clauses[i].negative ? map[resource.index] : !map[resource.index])) { 369308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return clauses[i].negative; 369408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 369508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 369608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return true; 369708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 369808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 369908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 370008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty function parseResourceQuery(query) { 370108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Parse query into array of expressions (expression e.g. 'tag:foo + type:video') 370208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var expressions = []; 370308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var expressionStrs = query.split(',') || []; 370408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < expressionStrs.length; i++) { 370508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var expr = expressionStrs[i] || ''; 370608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 370708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Break expression into clauses (clause e.g. 'tag:foo') 370808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var clauses = []; 370908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var clauseStrs = expr.split(/(?=[\+\-])/); 371008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var j = 0; j < clauseStrs.length; j++) { 371108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var clauseStr = clauseStrs[j] || ''; 371208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 371308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Get attribute and value from clause (e.g. attribute='tag', value='foo') 371408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var parts = clauseStr.split(':'); 371508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var clause = {}; 371608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 371708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clause.attr = parts[0].replace(/^\s+|\s+$/g,''); 371808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (clause.attr) { 371908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (clause.attr.charAt(0) == '+') { 372008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clause.attr = clause.attr.substring(1); 372108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else if (clause.attr.charAt(0) == '-') { 372208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clause.negative = true; 372308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clause.attr = clause.attr.substring(1); 372408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 372508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 372608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 372708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (parts.length > 1) { 372808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clause.value = parts[1].replace(/^\s+|\s+$/g,''); 372908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 373008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 373108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty clauses.push(clause); 373208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 373308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 373408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (!clauses.length) { 373508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty continue; 373608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 373708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 373808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty expressions.push(clauses); 373908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 374008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 374108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return expressions; 374208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 374308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty})(); 374408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 374508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty(function($) { 374608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Simple jquery function to create dom for a standard resource card */ 3747318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $.fn.decorateResourceCard = function(resource,plusone) { 374808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var section = resource.group || resource.type; 374908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var imgUrl; 375008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (resource.image) { 375108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 375208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urlPrefix = resource.image.indexOf("//") > -1 ? "" : toRoot; 375308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty imgUrl = urlPrefix + resource.image; 375408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 3755318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty //add linkout logic here. check url or type, assign a class, map to css :after 375608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<div>') 375708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('card-bg') 375808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .css('background-image', 'url(' + (imgUrl || toRoot + 'assets/images/resource-card-default-android.jpg') + ')') 375908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo(this); 3760318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty if (!plusone) { 3761318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $('<div>').addClass('card-info' + (!resource.summary ? ' empty-desc' : '')) 376208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('section').text(section)) 376308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('title').html(resource.title)) 3764318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('description ellipsis') 3765318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('text').html(resource.summary)) 3766318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('util'))) 3767318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .appendTo(this); 3768318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } else { 3769318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $('<div>').addClass('card-info' + (!resource.summary ? ' empty-desc' : '')) 3770318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('section').text(section)) 3771318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('title').html(resource.title)) 3772318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('description ellipsis') 3773318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('text').html(resource.summary)) 377408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('util') 377508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('g-plusone') 377608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('data-size', 'small') 377708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('data-align', 'right') 377808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('data-href', resource.url)))) 3779318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .appendTo(this); 3780318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } 378108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 378208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return this; 378308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 378408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 378508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty /* Simple jquery function to create dom for a resource section card (menu) */ 3786318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $.fn.decorateResourceSection = function(section,plusone) { 378708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var resource = section.resource; 378808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty //keep url clean for matching and offline mode handling 378908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var urlPrefix = resource.image.indexOf("//") > -1 ? "" : toRoot; 379008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $base = $('<a>') 379108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('card-bg') 379208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .attr('href', resource.url) 379308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('card-section-icon') 379408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('icon')) 379508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>').addClass('section').html(resource.title))) 379608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo(this); 379708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 379808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $cardInfo = $('<div>').addClass('card-info').appendTo(this); 379908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 380008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (section.sections && section.sections.length) { 380108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Recurse the section sub-tree to find a resource image. 380208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var stack = [section]; 380308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 380408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty while (stack.length) { 380508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (stack[0].resource.image) { 380608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $base.css('background-image', 'url(' + urlPrefix + stack[0].resource.image + ')'); 380708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty break; 380808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 380908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 381008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (stack[0].sections) { 381108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty stack = stack.concat(stack[0].sections); 381208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 381308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 381408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty stack.shift(); 381508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 381608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 381708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $ul = $('<ul>') 381808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($cardInfo); 381908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 382008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var max = section.sections.length > 3 ? 3 : section.sections.length; 382108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 382208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty for (var i = 0; i < max; ++i) { 382308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 382408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var subResource = section.sections[i]; 3825318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty if (!plusone) { 3826318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $('<li>') 3827318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<a>').attr('href', subResource.url) 3828318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('title').html(subResource.title)) 3829318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('description ellipsis') 3830318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('text').html(subResource.summary)) 3831318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('util')))) 3832318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .appendTo($ul); 3833318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } else { 3834318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $('<li>') 3835318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<a>').attr('href', subResource.url) 3836318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('title').html(subResource.title)) 3837318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('description ellipsis') 3838318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('text').html(subResource.summary)) 3839318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('util') 3840318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .append($('<div>').addClass('g-plusone') 3841318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .attr('data-size', 'small') 3842318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .attr('data-align', 'right') 3843318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .attr('data-href', resource.url))))) 3844318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty .appendTo($ul); 3845318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty } 384608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 384708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 384808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // Add a more row 384908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty if (max < section.sections.length) { 385008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty $('<li>') 385108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<a>').attr('href', resource.url) 385208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .append($('<div>') 385308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .addClass('title') 385408032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .text('More'))) 385508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty .appendTo($ul); 385608032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 385708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } else { 385808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // No sub-resources, just render description? 385908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty } 386008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 386108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return this; 386208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 386308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty})(jQuery); 3864318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty/* Calculate the vertical area remaining */ 386508032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty(function($) { 3866318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $.fn.ellipsisfade= function(lineHeight) { 386708032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty this.each(function() { 386808032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty // get element text 386908032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty var $this = $(this); 3870318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var remainingHeight = $this.parent().parent().height(); 3871318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $this.parent().siblings().each(function () 3872318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty { 3873318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty var h = $(this).height(); 3874318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty remainingHeight = remainingHeight - h; 3875318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty }); 3876318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty 3877318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty adjustedRemainingHeight = ((remainingHeight)/lineHeight>>0)*lineHeight 3878318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $this.parent().css({'height': adjustedRemainingHeight}); 3879318fb97168396d21a958a415e9a1cf8167ebdc86Dirk Dougherty $this.css({'height': "auto"}); 388008032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }); 388108032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty 388208032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty return this; 388308032409b4dd29740e1c8e703eada0d1ce86e58cDirk Dougherty }; 388420cf2a91f0c157875574dd0b0d9b4e040f94e656Scott Main}) (jQuery); 3885