Host library for controlling a WiConnect enabled Wi-Fi module.

Dependents:   wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more

Committer:
dan_ackme
Date:
Mon Aug 11 21:59:00 2014 -0700
Revision:
10:735194df0097
Child:
11:ea484e1b7fc4
added doc files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 10:735194df0097 1 var NAVTREE =
dan_ackme 10:735194df0097 2 [
dan_ackme 10:735194df0097 3 [ "WiConnect Library", "index.html", [
dan_ackme 10:735194df0097 4 [ "WiConnect Library Overview", "index.html", [
dan_ackme 10:735194df0097 5 [ "Overview", "index.html#Overview", null ],
dan_ackme 10:735194df0097 6 [ "Important Notes", "index.html#notes", null ],
dan_ackme 10:735194df0097 7 [ "Library Settings", "index.html#features", [
dan_ackme 10:735194df0097 8 [ "Blocking / Non-blocking Modes", "index.html#setting_blocking_modes", [
dan_ackme 10:735194df0097 9 [ "Blocking Mode", "index.html#setting_blocking_mode", null ],
dan_ackme 10:735194df0097 10 [ "Non-Blocking Mode", "index.html#setting_nonblocking_mode", null ]
dan_ackme 10:735194df0097 11 ] ],
dan_ackme 10:735194df0097 12 [ "Dynamic / Static Allocation", "index.html#setting_alloc", null ],
dan_ackme 10:735194df0097 13 [ "Asynchronous Processing", "index.html#setting_async_processing", null ]
dan_ackme 10:735194df0097 14 ] ],
dan_ackme 10:735194df0097 15 [ "Sending Commands To WiFi Module", "index.html#send_command_desc", null ]
dan_ackme 10:735194df0097 16 ] ],
dan_ackme 10:735194df0097 17 [ "Modules", "modules.html", "modules" ],
dan_ackme 10:735194df0097 18 [ "Classes", null, [
dan_ackme 10:735194df0097 19 [ "Class List", "annotated.html", "annotated" ],
dan_ackme 10:735194df0097 20 [ "Class Index", "classes.html", null ],
dan_ackme 10:735194df0097 21 [ "Class Members", "functions.html", [
dan_ackme 10:735194df0097 22 [ "All", "functions.html", null ],
dan_ackme 10:735194df0097 23 [ "Functions", "functions_func.html", null ]
dan_ackme 10:735194df0097 24 ] ]
dan_ackme 10:735194df0097 25 ] ],
dan_ackme 10:735194df0097 26 [ "Files", null, [
dan_ackme 10:735194df0097 27 [ "File List", "files.html", "files" ]
dan_ackme 10:735194df0097 28 ] ]
dan_ackme 10:735194df0097 29 ] ]
dan_ackme 10:735194df0097 30 ];
dan_ackme 10:735194df0097 31
dan_ackme 10:735194df0097 32 var NAVTREEINDEX =
dan_ackme 10:735194df0097 33 [
dan_ackme 10:735194df0097 34 ".html"
dan_ackme 10:735194df0097 35 ];
dan_ackme 10:735194df0097 36
dan_ackme 10:735194df0097 37 var SYNCONMSG = 'click to disable panel synchronisation';
dan_ackme 10:735194df0097 38 var SYNCOFFMSG = 'click to enable panel synchronisation';
dan_ackme 10:735194df0097 39 var navTreeSubIndices = new Array();
dan_ackme 10:735194df0097 40
dan_ackme 10:735194df0097 41 function getData(varName)
dan_ackme 10:735194df0097 42 {
dan_ackme 10:735194df0097 43 var i = varName.lastIndexOf('/');
dan_ackme 10:735194df0097 44 var n = i>=0 ? varName.substring(i+1) : varName;
dan_ackme 10:735194df0097 45 return eval(n.replace(/\-/g,'_'));
dan_ackme 10:735194df0097 46 }
dan_ackme 10:735194df0097 47
dan_ackme 10:735194df0097 48 function stripPath(uri)
dan_ackme 10:735194df0097 49 {
dan_ackme 10:735194df0097 50 return uri.substring(uri.lastIndexOf('/')+1);
dan_ackme 10:735194df0097 51 }
dan_ackme 10:735194df0097 52
dan_ackme 10:735194df0097 53 function stripPath2(uri)
dan_ackme 10:735194df0097 54 {
dan_ackme 10:735194df0097 55 var i = uri.lastIndexOf('/');
dan_ackme 10:735194df0097 56 var s = uri.substring(i+1);
dan_ackme 10:735194df0097 57 var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
dan_ackme 10:735194df0097 58 return m ? uri.substring(i-6) : s;
dan_ackme 10:735194df0097 59 }
dan_ackme 10:735194df0097 60
dan_ackme 10:735194df0097 61 function hashValue()
dan_ackme 10:735194df0097 62 {
dan_ackme 10:735194df0097 63 return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,'');
dan_ackme 10:735194df0097 64 }
dan_ackme 10:735194df0097 65
dan_ackme 10:735194df0097 66 function hashUrl()
dan_ackme 10:735194df0097 67 {
dan_ackme 10:735194df0097 68 return '#'+hashValue();
dan_ackme 10:735194df0097 69 }
dan_ackme 10:735194df0097 70
dan_ackme 10:735194df0097 71 function pathName()
dan_ackme 10:735194df0097 72 {
dan_ackme 10:735194df0097 73 return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, '');
dan_ackme 10:735194df0097 74 }
dan_ackme 10:735194df0097 75
dan_ackme 10:735194df0097 76 function localStorageSupported()
dan_ackme 10:735194df0097 77 {
dan_ackme 10:735194df0097 78 try {
dan_ackme 10:735194df0097 79 return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
dan_ackme 10:735194df0097 80 }
dan_ackme 10:735194df0097 81 catch(e) {
dan_ackme 10:735194df0097 82 return false;
dan_ackme 10:735194df0097 83 }
dan_ackme 10:735194df0097 84 }
dan_ackme 10:735194df0097 85
dan_ackme 10:735194df0097 86
dan_ackme 10:735194df0097 87 function storeLink(link)
dan_ackme 10:735194df0097 88 {
dan_ackme 10:735194df0097 89 if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
dan_ackme 10:735194df0097 90 window.localStorage.setItem('navpath',link);
dan_ackme 10:735194df0097 91 }
dan_ackme 10:735194df0097 92 }
dan_ackme 10:735194df0097 93
dan_ackme 10:735194df0097 94 function deleteLink()
dan_ackme 10:735194df0097 95 {
dan_ackme 10:735194df0097 96 if (localStorageSupported()) {
dan_ackme 10:735194df0097 97 window.localStorage.setItem('navpath','');
dan_ackme 10:735194df0097 98 }
dan_ackme 10:735194df0097 99 }
dan_ackme 10:735194df0097 100
dan_ackme 10:735194df0097 101 function cachedLink()
dan_ackme 10:735194df0097 102 {
dan_ackme 10:735194df0097 103 if (localStorageSupported()) {
dan_ackme 10:735194df0097 104 return window.localStorage.getItem('navpath');
dan_ackme 10:735194df0097 105 } else {
dan_ackme 10:735194df0097 106 return '';
dan_ackme 10:735194df0097 107 }
dan_ackme 10:735194df0097 108 }
dan_ackme 10:735194df0097 109
dan_ackme 10:735194df0097 110 function getScript(scriptName,func,show)
dan_ackme 10:735194df0097 111 {
dan_ackme 10:735194df0097 112 var head = document.getElementsByTagName("head")[0];
dan_ackme 10:735194df0097 113 var script = document.createElement('script');
dan_ackme 10:735194df0097 114 script.id = scriptName;
dan_ackme 10:735194df0097 115 script.type = 'text/javascript';
dan_ackme 10:735194df0097 116 script.onload = func;
dan_ackme 10:735194df0097 117 script.src = scriptName+'.js';
dan_ackme 10:735194df0097 118 if ($.browser.msie && $.browser.version<=8) {
dan_ackme 10:735194df0097 119 // script.onload does not work with older versions of IE
dan_ackme 10:735194df0097 120 script.onreadystatechange = function() {
dan_ackme 10:735194df0097 121 if (script.readyState=='complete' || script.readyState=='loaded') {
dan_ackme 10:735194df0097 122 func(); if (show) showRoot();
dan_ackme 10:735194df0097 123 }
dan_ackme 10:735194df0097 124 }
dan_ackme 10:735194df0097 125 }
dan_ackme 10:735194df0097 126 head.appendChild(script);
dan_ackme 10:735194df0097 127 }
dan_ackme 10:735194df0097 128
dan_ackme 10:735194df0097 129 function createIndent(o,domNode,node,level)
dan_ackme 10:735194df0097 130 {
dan_ackme 10:735194df0097 131 var level=-1;
dan_ackme 10:735194df0097 132 var n = node;
dan_ackme 10:735194df0097 133 while (n.parentNode) { level++; n=n.parentNode; }
dan_ackme 10:735194df0097 134 if (node.childrenData) {
dan_ackme 10:735194df0097 135 var imgNode = document.createElement("img");
dan_ackme 10:735194df0097 136 imgNode.style.paddingLeft=(16*level).toString()+'px';
dan_ackme 10:735194df0097 137 imgNode.width = 16;
dan_ackme 10:735194df0097 138 imgNode.height = 22;
dan_ackme 10:735194df0097 139 imgNode.border = 0;
dan_ackme 10:735194df0097 140 node.plus_img = imgNode;
dan_ackme 10:735194df0097 141 node.expandToggle = document.createElement("a");
dan_ackme 10:735194df0097 142 node.expandToggle.href = "javascript:void(0)";
dan_ackme 10:735194df0097 143 node.expandToggle.onclick = function() {
dan_ackme 10:735194df0097 144 if (node.expanded) {
dan_ackme 10:735194df0097 145 $(node.getChildrenUL()).slideUp("fast");
dan_ackme 10:735194df0097 146 node.plus_img.src = node.relpath+"ftv2pnode.png";
dan_ackme 10:735194df0097 147 node.expanded = false;
dan_ackme 10:735194df0097 148 } else {
dan_ackme 10:735194df0097 149 expandNode(o, node, false, false);
dan_ackme 10:735194df0097 150 }
dan_ackme 10:735194df0097 151 }
dan_ackme 10:735194df0097 152 node.expandToggle.appendChild(imgNode);
dan_ackme 10:735194df0097 153 domNode.appendChild(node.expandToggle);
dan_ackme 10:735194df0097 154 imgNode.src = node.relpath+"ftv2pnode.png";
dan_ackme 10:735194df0097 155 } else {
dan_ackme 10:735194df0097 156 var span = document.createElement("span");
dan_ackme 10:735194df0097 157 span.style.display = 'inline-block';
dan_ackme 10:735194df0097 158 span.style.width = 16*(level+1)+'px';
dan_ackme 10:735194df0097 159 span.style.height = '22px';
dan_ackme 10:735194df0097 160 span.innerHTML = '&#160;';
dan_ackme 10:735194df0097 161 domNode.appendChild(span);
dan_ackme 10:735194df0097 162 }
dan_ackme 10:735194df0097 163 }
dan_ackme 10:735194df0097 164
dan_ackme 10:735194df0097 165 var animationInProgress = false;
dan_ackme 10:735194df0097 166
dan_ackme 10:735194df0097 167 function gotoAnchor(anchor,aname,updateLocation)
dan_ackme 10:735194df0097 168 {
dan_ackme 10:735194df0097 169 var pos, docContent = $('#doc-content');
dan_ackme 10:735194df0097 170 var ancParent = $(anchor.parent());
dan_ackme 10:735194df0097 171 if (ancParent.hasClass('memItemLeft') ||
dan_ackme 10:735194df0097 172 ancParent.hasClass('fieldname') ||
dan_ackme 10:735194df0097 173 ancParent.hasClass('fieldtype') ||
dan_ackme 10:735194df0097 174 ancParent.is(':header'))
dan_ackme 10:735194df0097 175 {
dan_ackme 10:735194df0097 176 pos = ancParent.position().top;
dan_ackme 10:735194df0097 177 } else if (anchor.position()) {
dan_ackme 10:735194df0097 178 pos = anchor.position().top;
dan_ackme 10:735194df0097 179 }
dan_ackme 10:735194df0097 180 if (pos) {
dan_ackme 10:735194df0097 181 var dist = Math.abs(Math.min(
dan_ackme 10:735194df0097 182 pos-docContent.offset().top,
dan_ackme 10:735194df0097 183 docContent[0].scrollHeight-
dan_ackme 10:735194df0097 184 docContent.height()-docContent.scrollTop()));
dan_ackme 10:735194df0097 185 animationInProgress=true;
dan_ackme 10:735194df0097 186 docContent.animate({
dan_ackme 10:735194df0097 187 scrollTop: pos + docContent.scrollTop() - docContent.offset().top
dan_ackme 10:735194df0097 188 },Math.max(50,Math.min(500,dist)),function(){
dan_ackme 10:735194df0097 189 if (updateLocation) window.location.href=aname;
dan_ackme 10:735194df0097 190 animationInProgress=false;
dan_ackme 10:735194df0097 191 });
dan_ackme 10:735194df0097 192 }
dan_ackme 10:735194df0097 193 }
dan_ackme 10:735194df0097 194
dan_ackme 10:735194df0097 195 function newNode(o, po, text, link, childrenData, lastNode)
dan_ackme 10:735194df0097 196 {
dan_ackme 10:735194df0097 197 var node = new Object();
dan_ackme 10:735194df0097 198 node.children = Array();
dan_ackme 10:735194df0097 199 node.childrenData = childrenData;
dan_ackme 10:735194df0097 200 node.depth = po.depth + 1;
dan_ackme 10:735194df0097 201 node.relpath = po.relpath;
dan_ackme 10:735194df0097 202 node.isLast = lastNode;
dan_ackme 10:735194df0097 203
dan_ackme 10:735194df0097 204 node.li = document.createElement("li");
dan_ackme 10:735194df0097 205 po.getChildrenUL().appendChild(node.li);
dan_ackme 10:735194df0097 206 node.parentNode = po;
dan_ackme 10:735194df0097 207
dan_ackme 10:735194df0097 208 node.itemDiv = document.createElement("div");
dan_ackme 10:735194df0097 209 node.itemDiv.className = "item";
dan_ackme 10:735194df0097 210
dan_ackme 10:735194df0097 211 node.labelSpan = document.createElement("span");
dan_ackme 10:735194df0097 212 node.labelSpan.className = "label";
dan_ackme 10:735194df0097 213
dan_ackme 10:735194df0097 214 createIndent(o,node.itemDiv,node,0);
dan_ackme 10:735194df0097 215 node.itemDiv.appendChild(node.labelSpan);
dan_ackme 10:735194df0097 216 node.li.appendChild(node.itemDiv);
dan_ackme 10:735194df0097 217
dan_ackme 10:735194df0097 218 var a = document.createElement("a");
dan_ackme 10:735194df0097 219 node.labelSpan.appendChild(a);
dan_ackme 10:735194df0097 220 node.label = document.createTextNode(text);
dan_ackme 10:735194df0097 221 node.expanded = false;
dan_ackme 10:735194df0097 222 a.appendChild(node.label);
dan_ackme 10:735194df0097 223 if (link) {
dan_ackme 10:735194df0097 224 var url;
dan_ackme 10:735194df0097 225 if (link.substring(0,1)=='^') {
dan_ackme 10:735194df0097 226 url = link.substring(1);
dan_ackme 10:735194df0097 227 link = url;
dan_ackme 10:735194df0097 228 } else {
dan_ackme 10:735194df0097 229 url = node.relpath+link;
dan_ackme 10:735194df0097 230 }
dan_ackme 10:735194df0097 231 a.className = stripPath(link.replace('#',':'));
dan_ackme 10:735194df0097 232 if (link.indexOf('#')!=-1) {
dan_ackme 10:735194df0097 233 var aname = '#'+link.split('#')[1];
dan_ackme 10:735194df0097 234 var srcPage = stripPath(pathName());
dan_ackme 10:735194df0097 235 var targetPage = stripPath(link.split('#')[0]);
dan_ackme 10:735194df0097 236 a.href = srcPage!=targetPage ? url : "javascript:void(0)";
dan_ackme 10:735194df0097 237 a.onclick = function(){
dan_ackme 10:735194df0097 238 storeLink(link);
dan_ackme 10:735194df0097 239 if (!$(a).parent().parent().hasClass('selected'))
dan_ackme 10:735194df0097 240 {
dan_ackme 10:735194df0097 241 $('.item').removeClass('selected');
dan_ackme 10:735194df0097 242 $('.item').removeAttr('id');
dan_ackme 10:735194df0097 243 $(a).parent().parent().addClass('selected');
dan_ackme 10:735194df0097 244 $(a).parent().parent().attr('id','selected');
dan_ackme 10:735194df0097 245 }
dan_ackme 10:735194df0097 246 var anchor = $(aname);
dan_ackme 10:735194df0097 247 gotoAnchor(anchor,aname,true);
dan_ackme 10:735194df0097 248 };
dan_ackme 10:735194df0097 249 } else {
dan_ackme 10:735194df0097 250 a.href = url;
dan_ackme 10:735194df0097 251 a.onclick = function() { storeLink(link); }
dan_ackme 10:735194df0097 252 }
dan_ackme 10:735194df0097 253 } else {
dan_ackme 10:735194df0097 254 if (childrenData != null)
dan_ackme 10:735194df0097 255 {
dan_ackme 10:735194df0097 256 a.className = "nolink";
dan_ackme 10:735194df0097 257 a.href = "javascript:void(0)";
dan_ackme 10:735194df0097 258 a.onclick = node.expandToggle.onclick;
dan_ackme 10:735194df0097 259 }
dan_ackme 10:735194df0097 260 }
dan_ackme 10:735194df0097 261
dan_ackme 10:735194df0097 262 node.childrenUL = null;
dan_ackme 10:735194df0097 263 node.getChildrenUL = function() {
dan_ackme 10:735194df0097 264 if (!node.childrenUL) {
dan_ackme 10:735194df0097 265 node.childrenUL = document.createElement("ul");
dan_ackme 10:735194df0097 266 node.childrenUL.className = "children_ul";
dan_ackme 10:735194df0097 267 node.childrenUL.style.display = "none";
dan_ackme 10:735194df0097 268 node.li.appendChild(node.childrenUL);
dan_ackme 10:735194df0097 269 }
dan_ackme 10:735194df0097 270 return node.childrenUL;
dan_ackme 10:735194df0097 271 };
dan_ackme 10:735194df0097 272
dan_ackme 10:735194df0097 273 return node;
dan_ackme 10:735194df0097 274 }
dan_ackme 10:735194df0097 275
dan_ackme 10:735194df0097 276 function showRoot()
dan_ackme 10:735194df0097 277 {
dan_ackme 10:735194df0097 278 var headerHeight = $("#top").height();
dan_ackme 10:735194df0097 279 var footerHeight = $("#nav-path").height();
dan_ackme 10:735194df0097 280 var windowHeight = $(window).height() - headerHeight - footerHeight;
dan_ackme 10:735194df0097 281 (function (){ // retry until we can scroll to the selected item
dan_ackme 10:735194df0097 282 try {
dan_ackme 10:735194df0097 283 var navtree=$('#nav-tree');
dan_ackme 10:735194df0097 284 navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
dan_ackme 10:735194df0097 285 } catch (err) {
dan_ackme 10:735194df0097 286 setTimeout(arguments.callee, 0);
dan_ackme 10:735194df0097 287 }
dan_ackme 10:735194df0097 288 })();
dan_ackme 10:735194df0097 289 }
dan_ackme 10:735194df0097 290
dan_ackme 10:735194df0097 291 function expandNode(o, node, imm, showRoot)
dan_ackme 10:735194df0097 292 {
dan_ackme 10:735194df0097 293 if (node.childrenData && !node.expanded) {
dan_ackme 10:735194df0097 294 if (typeof(node.childrenData)==='string') {
dan_ackme 10:735194df0097 295 var varName = node.childrenData;
dan_ackme 10:735194df0097 296 getScript(node.relpath+varName,function(){
dan_ackme 10:735194df0097 297 node.childrenData = getData(varName);
dan_ackme 10:735194df0097 298 expandNode(o, node, imm, showRoot);
dan_ackme 10:735194df0097 299 }, showRoot);
dan_ackme 10:735194df0097 300 } else {
dan_ackme 10:735194df0097 301 if (!node.childrenVisited) {
dan_ackme 10:735194df0097 302 getNode(o, node);
dan_ackme 10:735194df0097 303 } if (imm || ($.browser.msie && $.browser.version>8)) {
dan_ackme 10:735194df0097 304 // somehow slideDown jumps to the start of tree for IE9 :-(
dan_ackme 10:735194df0097 305 $(node.getChildrenUL()).show();
dan_ackme 10:735194df0097 306 } else {
dan_ackme 10:735194df0097 307 $(node.getChildrenUL()).slideDown("fast");
dan_ackme 10:735194df0097 308 }
dan_ackme 10:735194df0097 309 if (node.isLast) {
dan_ackme 10:735194df0097 310 node.plus_img.src = node.relpath+"ftv2mlastnode.png";
dan_ackme 10:735194df0097 311 } else {
dan_ackme 10:735194df0097 312 node.plus_img.src = node.relpath+"ftv2mnode.png";
dan_ackme 10:735194df0097 313 }
dan_ackme 10:735194df0097 314 node.expanded = true;
dan_ackme 10:735194df0097 315 }
dan_ackme 10:735194df0097 316 }
dan_ackme 10:735194df0097 317 }
dan_ackme 10:735194df0097 318
dan_ackme 10:735194df0097 319 function glowEffect(n,duration)
dan_ackme 10:735194df0097 320 {
dan_ackme 10:735194df0097 321 n.addClass('glow').delay(duration).queue(function(next){
dan_ackme 10:735194df0097 322 $(this).removeClass('glow');next();
dan_ackme 10:735194df0097 323 });
dan_ackme 10:735194df0097 324 }
dan_ackme 10:735194df0097 325
dan_ackme 10:735194df0097 326 function highlightAnchor()
dan_ackme 10:735194df0097 327 {
dan_ackme 10:735194df0097 328 var aname = hashUrl();
dan_ackme 10:735194df0097 329 var anchor = $(aname);
dan_ackme 10:735194df0097 330 if (anchor.parent().attr('class')=='memItemLeft'){
dan_ackme 10:735194df0097 331 var rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
dan_ackme 10:735194df0097 332 glowEffect(rows.children(),300); // member without details
dan_ackme 10:735194df0097 333 } else if (anchor.parent().attr('class')=='fieldname'){
dan_ackme 10:735194df0097 334 glowEffect(anchor.parent().parent(),1000); // enum value
dan_ackme 10:735194df0097 335 } else if (anchor.parent().attr('class')=='fieldtype'){
dan_ackme 10:735194df0097 336 glowEffect(anchor.parent().parent(),1000); // struct field
dan_ackme 10:735194df0097 337 } else if (anchor.parent().is(":header")) {
dan_ackme 10:735194df0097 338 glowEffect(anchor.parent(),1000); // section header
dan_ackme 10:735194df0097 339 } else {
dan_ackme 10:735194df0097 340 glowEffect(anchor.next(),1000); // normal member
dan_ackme 10:735194df0097 341 }
dan_ackme 10:735194df0097 342 gotoAnchor(anchor,aname,false);
dan_ackme 10:735194df0097 343 }
dan_ackme 10:735194df0097 344
dan_ackme 10:735194df0097 345 function selectAndHighlight(hash,n)
dan_ackme 10:735194df0097 346 {
dan_ackme 10:735194df0097 347 var a;
dan_ackme 10:735194df0097 348 if (hash) {
dan_ackme 10:735194df0097 349 var link=stripPath(pathName())+':'+hash.substring(1);
dan_ackme 10:735194df0097 350 a=$('.item a[class$="'+link+'"]');
dan_ackme 10:735194df0097 351 }
dan_ackme 10:735194df0097 352 if (a && a.length) {
dan_ackme 10:735194df0097 353 a.parent().parent().addClass('selected');
dan_ackme 10:735194df0097 354 a.parent().parent().attr('id','selected');
dan_ackme 10:735194df0097 355 highlightAnchor();
dan_ackme 10:735194df0097 356 } else if (n) {
dan_ackme 10:735194df0097 357 $(n.itemDiv).addClass('selected');
dan_ackme 10:735194df0097 358 $(n.itemDiv).attr('id','selected');
dan_ackme 10:735194df0097 359 }
dan_ackme 10:735194df0097 360 if ($('#nav-tree-contents .item:first').hasClass('selected')) {
dan_ackme 10:735194df0097 361 $('#nav-sync').css('top','30px');
dan_ackme 10:735194df0097 362 } else {
dan_ackme 10:735194df0097 363 $('#nav-sync').css('top','5px');
dan_ackme 10:735194df0097 364 }
dan_ackme 10:735194df0097 365 showRoot();
dan_ackme 10:735194df0097 366 }
dan_ackme 10:735194df0097 367
dan_ackme 10:735194df0097 368 function showNode(o, node, index, hash)
dan_ackme 10:735194df0097 369 {
dan_ackme 10:735194df0097 370 if (node && node.childrenData) {
dan_ackme 10:735194df0097 371 if (typeof(node.childrenData)==='string') {
dan_ackme 10:735194df0097 372 var varName = node.childrenData;
dan_ackme 10:735194df0097 373 getScript(node.relpath+varName,function(){
dan_ackme 10:735194df0097 374 node.childrenData = getData(varName);
dan_ackme 10:735194df0097 375 showNode(o,node,index,hash);
dan_ackme 10:735194df0097 376 },true);
dan_ackme 10:735194df0097 377 } else {
dan_ackme 10:735194df0097 378 if (!node.childrenVisited) {
dan_ackme 10:735194df0097 379 getNode(o, node);
dan_ackme 10:735194df0097 380 }
dan_ackme 10:735194df0097 381 $(node.getChildrenUL()).css({'display':'block'});
dan_ackme 10:735194df0097 382 if (node.isLast) {
dan_ackme 10:735194df0097 383 node.plus_img.src = node.relpath+"ftv2mlastnode.png";
dan_ackme 10:735194df0097 384 } else {
dan_ackme 10:735194df0097 385 node.plus_img.src = node.relpath+"ftv2mnode.png";
dan_ackme 10:735194df0097 386 }
dan_ackme 10:735194df0097 387 node.expanded = true;
dan_ackme 10:735194df0097 388 var n = node.children[o.breadcrumbs[index]];
dan_ackme 10:735194df0097 389 if (index+1<o.breadcrumbs.length) {
dan_ackme 10:735194df0097 390 showNode(o,n,index+1,hash);
dan_ackme 10:735194df0097 391 } else {
dan_ackme 10:735194df0097 392 if (typeof(n.childrenData)==='string') {
dan_ackme 10:735194df0097 393 var varName = n.childrenData;
dan_ackme 10:735194df0097 394 getScript(n.relpath+varName,function(){
dan_ackme 10:735194df0097 395 n.childrenData = getData(varName);
dan_ackme 10:735194df0097 396 node.expanded=false;
dan_ackme 10:735194df0097 397 showNode(o,node,index,hash); // retry with child node expanded
dan_ackme 10:735194df0097 398 },true);
dan_ackme 10:735194df0097 399 } else {
dan_ackme 10:735194df0097 400 var rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
dan_ackme 10:735194df0097 401 if (rootBase=="index" || rootBase=="pages" || rootBase=="search") {
dan_ackme 10:735194df0097 402 expandNode(o, n, true, true);
dan_ackme 10:735194df0097 403 }
dan_ackme 10:735194df0097 404 selectAndHighlight(hash,n);
dan_ackme 10:735194df0097 405 }
dan_ackme 10:735194df0097 406 }
dan_ackme 10:735194df0097 407 }
dan_ackme 10:735194df0097 408 } else {
dan_ackme 10:735194df0097 409 selectAndHighlight(hash);
dan_ackme 10:735194df0097 410 }
dan_ackme 10:735194df0097 411 }
dan_ackme 10:735194df0097 412
dan_ackme 10:735194df0097 413 function removeToInsertLater(element) {
dan_ackme 10:735194df0097 414 var parentNode = element.parentNode;
dan_ackme 10:735194df0097 415 var nextSibling = element.nextSibling;
dan_ackme 10:735194df0097 416 parentNode.removeChild(element);
dan_ackme 10:735194df0097 417 return function() {
dan_ackme 10:735194df0097 418 if (nextSibling) {
dan_ackme 10:735194df0097 419 parentNode.insertBefore(element, nextSibling);
dan_ackme 10:735194df0097 420 } else {
dan_ackme 10:735194df0097 421 parentNode.appendChild(element);
dan_ackme 10:735194df0097 422 }
dan_ackme 10:735194df0097 423 };
dan_ackme 10:735194df0097 424 }
dan_ackme 10:735194df0097 425
dan_ackme 10:735194df0097 426 function getNode(o, po)
dan_ackme 10:735194df0097 427 {
dan_ackme 10:735194df0097 428 var insertFunction = removeToInsertLater(po.li);
dan_ackme 10:735194df0097 429 po.childrenVisited = true;
dan_ackme 10:735194df0097 430 var l = po.childrenData.length-1;
dan_ackme 10:735194df0097 431 for (var i in po.childrenData) {
dan_ackme 10:735194df0097 432 var nodeData = po.childrenData[i];
dan_ackme 10:735194df0097 433 po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
dan_ackme 10:735194df0097 434 i==l);
dan_ackme 10:735194df0097 435 }
dan_ackme 10:735194df0097 436 insertFunction();
dan_ackme 10:735194df0097 437 }
dan_ackme 10:735194df0097 438
dan_ackme 10:735194df0097 439 function gotoNode(o,subIndex,root,hash,relpath)
dan_ackme 10:735194df0097 440 {
dan_ackme 10:735194df0097 441 var nti = navTreeSubIndices[subIndex][root+hash];
dan_ackme 10:735194df0097 442 o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
dan_ackme 10:735194df0097 443 if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
dan_ackme 10:735194df0097 444 navTo(o,NAVTREE[0][1],"",relpath);
dan_ackme 10:735194df0097 445 $('.item').removeClass('selected');
dan_ackme 10:735194df0097 446 $('.item').removeAttr('id');
dan_ackme 10:735194df0097 447 }
dan_ackme 10:735194df0097 448 if (o.breadcrumbs) {
dan_ackme 10:735194df0097 449 o.breadcrumbs.unshift(0); // add 0 for root node
dan_ackme 10:735194df0097 450 showNode(o, o.node, 0, hash);
dan_ackme 10:735194df0097 451 }
dan_ackme 10:735194df0097 452 }
dan_ackme 10:735194df0097 453
dan_ackme 10:735194df0097 454 function navTo(o,root,hash,relpath)
dan_ackme 10:735194df0097 455 {
dan_ackme 10:735194df0097 456 var link = cachedLink();
dan_ackme 10:735194df0097 457 if (link) {
dan_ackme 10:735194df0097 458 var parts = link.split('#');
dan_ackme 10:735194df0097 459 root = parts[0];
dan_ackme 10:735194df0097 460 if (parts.length>1) hash = '#'+parts[1].replace(/[^\w\-]/g,'');
dan_ackme 10:735194df0097 461 else hash='';
dan_ackme 10:735194df0097 462 }
dan_ackme 10:735194df0097 463 if (hash.match(/^#l\d+$/)) {
dan_ackme 10:735194df0097 464 var anchor=$('a[name='+hash.substring(1)+']');
dan_ackme 10:735194df0097 465 glowEffect(anchor.parent(),1000); // line number
dan_ackme 10:735194df0097 466 hash=''; // strip line number anchors
dan_ackme 10:735194df0097 467 }
dan_ackme 10:735194df0097 468 var url=root+hash;
dan_ackme 10:735194df0097 469 var i=-1;
dan_ackme 10:735194df0097 470 while (NAVTREEINDEX[i+1]<=url) i++;
dan_ackme 10:735194df0097 471 if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
dan_ackme 10:735194df0097 472 if (navTreeSubIndices[i]) {
dan_ackme 10:735194df0097 473 gotoNode(o,i,root,hash,relpath)
dan_ackme 10:735194df0097 474 } else {
dan_ackme 10:735194df0097 475 getScript(relpath+'navtreeindex'+i,function(){
dan_ackme 10:735194df0097 476 navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
dan_ackme 10:735194df0097 477 if (navTreeSubIndices[i]) {
dan_ackme 10:735194df0097 478 gotoNode(o,i,root,hash,relpath);
dan_ackme 10:735194df0097 479 }
dan_ackme 10:735194df0097 480 },true);
dan_ackme 10:735194df0097 481 }
dan_ackme 10:735194df0097 482 }
dan_ackme 10:735194df0097 483
dan_ackme 10:735194df0097 484 function showSyncOff(n,relpath)
dan_ackme 10:735194df0097 485 {
dan_ackme 10:735194df0097 486 n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
dan_ackme 10:735194df0097 487 }
dan_ackme 10:735194df0097 488
dan_ackme 10:735194df0097 489 function showSyncOn(n,relpath)
dan_ackme 10:735194df0097 490 {
dan_ackme 10:735194df0097 491 n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
dan_ackme 10:735194df0097 492 }
dan_ackme 10:735194df0097 493
dan_ackme 10:735194df0097 494 function toggleSyncButton(relpath)
dan_ackme 10:735194df0097 495 {
dan_ackme 10:735194df0097 496 var navSync = $('#nav-sync');
dan_ackme 10:735194df0097 497 if (navSync.hasClass('sync')) {
dan_ackme 10:735194df0097 498 navSync.removeClass('sync');
dan_ackme 10:735194df0097 499 showSyncOff(navSync,relpath);
dan_ackme 10:735194df0097 500 storeLink(stripPath2(pathName())+hashUrl());
dan_ackme 10:735194df0097 501 } else {
dan_ackme 10:735194df0097 502 navSync.addClass('sync');
dan_ackme 10:735194df0097 503 showSyncOn(navSync,relpath);
dan_ackme 10:735194df0097 504 deleteLink();
dan_ackme 10:735194df0097 505 }
dan_ackme 10:735194df0097 506 }
dan_ackme 10:735194df0097 507
dan_ackme 10:735194df0097 508 function initNavTree(toroot,relpath)
dan_ackme 10:735194df0097 509 {
dan_ackme 10:735194df0097 510 var o = new Object();
dan_ackme 10:735194df0097 511 o.toroot = toroot;
dan_ackme 10:735194df0097 512 o.node = new Object();
dan_ackme 10:735194df0097 513 o.node.li = document.getElementById("nav-tree-contents");
dan_ackme 10:735194df0097 514 o.node.childrenData = NAVTREE;
dan_ackme 10:735194df0097 515 o.node.children = new Array();
dan_ackme 10:735194df0097 516 o.node.childrenUL = document.createElement("ul");
dan_ackme 10:735194df0097 517 o.node.getChildrenUL = function() { return o.node.childrenUL; };
dan_ackme 10:735194df0097 518 o.node.li.appendChild(o.node.childrenUL);
dan_ackme 10:735194df0097 519 o.node.depth = 0;
dan_ackme 10:735194df0097 520 o.node.relpath = relpath;
dan_ackme 10:735194df0097 521 o.node.expanded = false;
dan_ackme 10:735194df0097 522 o.node.isLast = true;
dan_ackme 10:735194df0097 523 o.node.plus_img = document.createElement("img");
dan_ackme 10:735194df0097 524 o.node.plus_img.src = relpath+"ftv2pnode.png";
dan_ackme 10:735194df0097 525 o.node.plus_img.width = 16;
dan_ackme 10:735194df0097 526 o.node.plus_img.height = 22;
dan_ackme 10:735194df0097 527
dan_ackme 10:735194df0097 528 if (localStorageSupported()) {
dan_ackme 10:735194df0097 529 var navSync = $('#nav-sync');
dan_ackme 10:735194df0097 530 if (cachedLink()) {
dan_ackme 10:735194df0097 531 showSyncOff(navSync,relpath);
dan_ackme 10:735194df0097 532 navSync.removeClass('sync');
dan_ackme 10:735194df0097 533 } else {
dan_ackme 10:735194df0097 534 showSyncOn(navSync,relpath);
dan_ackme 10:735194df0097 535 }
dan_ackme 10:735194df0097 536 navSync.click(function(){ toggleSyncButton(relpath); });
dan_ackme 10:735194df0097 537 }
dan_ackme 10:735194df0097 538
dan_ackme 10:735194df0097 539 $(window).load(function(){
dan_ackme 10:735194df0097 540 navTo(o,toroot,hashUrl(),relpath);
dan_ackme 10:735194df0097 541 showRoot();
dan_ackme 10:735194df0097 542 });
dan_ackme 10:735194df0097 543
dan_ackme 10:735194df0097 544 $(window).bind('hashchange', function(){
dan_ackme 10:735194df0097 545 if (window.location.hash && window.location.hash.length>1){
dan_ackme 10:735194df0097 546 var a;
dan_ackme 10:735194df0097 547 if ($(location).attr('hash')){
dan_ackme 10:735194df0097 548 var clslink=stripPath(pathName())+':'+hashValue();
dan_ackme 10:735194df0097 549 a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]');
dan_ackme 10:735194df0097 550 }
dan_ackme 10:735194df0097 551 if (a==null || !$(a).parent().parent().hasClass('selected')){
dan_ackme 10:735194df0097 552 $('.item').removeClass('selected');
dan_ackme 10:735194df0097 553 $('.item').removeAttr('id');
dan_ackme 10:735194df0097 554 }
dan_ackme 10:735194df0097 555 var link=stripPath2(pathName());
dan_ackme 10:735194df0097 556 navTo(o,link,hashUrl(),relpath);
dan_ackme 10:735194df0097 557 } else if (!animationInProgress) {
dan_ackme 10:735194df0097 558 $('#doc-content').scrollTop(0);
dan_ackme 10:735194df0097 559 $('.item').removeClass('selected');
dan_ackme 10:735194df0097 560 $('.item').removeAttr('id');
dan_ackme 10:735194df0097 561 navTo(o,toroot,hashUrl(),relpath);
dan_ackme 10:735194df0097 562 }
dan_ackme 10:735194df0097 563 })
dan_ackme 10:735194df0097 564 }
dan_ackme 10:735194df0097 565