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 Feb 23 20:30:18 2015 -0800
Revision:
39:a963f69cb2de
Parent:
34:2616445d0823
added httpAcceptWebsocket API

Who changed what in which revision?

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