index.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <title>Untitled Document</title>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  8. <meta name="apple-mobile-web-app-capable" content="yes" />
  9. <link type="text/css" href="resources/css/reset.css" rel="Stylesheet" />
  10. <link type="text/css" href="resources/css/default.css" rel="Stylesheet" />
  11. <!--<link href='https://fonts.googleapis.com/css?family=Nunito:300' rel='stylesheet' type='text/css'>-->
  12. <script type="text/javascript">
  13. if (location.href.toString().indexOf('file://localhost/') == 0) {
  14. location.href = location.href.toString().replace('file://localhost/', 'file:///');
  15. }
  16. </script>
  17. <!-- 8.0.0.3398 -->
  18. <script src="resources/scripts/jquery-1.7.1.min.js"></script>
  19. <script src="resources/scripts/startPre.js"></script>
  20. <script src="data/document.js"></script>
  21. <style type="text/css">
  22. #outerContainer {
  23. width:1000px;
  24. height:1500px;
  25. }
  26. .vsplitbar {
  27. display: none!important;
  28. width: 3px;
  29. /*background: #B9B9B9;*/
  30. border-right: 1px solid #8f949a;
  31. }
  32. .vsplitbar:hover, .vsplitbar.active {
  33. background: #8f949a;
  34. }
  35. #rightPanel {
  36. background-color: White;
  37. }
  38. #interfaceControlFrameHeaderContainer{
  39. display: none!important;
  40. }
  41. #interfaceControlFrame {
  42. margin: 0!important;
  43. }
  44. #leftPanel {
  45. width: 240px!important;
  46. }
  47. #sitemapHeader {
  48. display: none!important;
  49. }
  50. #searchDiv {
  51. margin-top: 20px;
  52. }
  53. /*#leftPanel {
  54. min-width: 120px;
  55. }*/
  56. .splitterMask {
  57. position:absolute;
  58. top: 0;
  59. left: 0;
  60. width: 100%;
  61. height: 100%;
  62. overflow: hidden;
  63. background-image: url(resources/images/transparent.gif);
  64. z-index: 20000;
  65. }
  66. </style>
  67. <script type="text/javascript" language="JavaScript">
  68. var SITEMAP_COLLAPSE_VAR_NAME = 'c';
  69. var PLUGIN_VAR_NAME = 'g';
  70. var FOOTNOTES_VAR_NAME = 'fn';
  71. var ADAPTIVE_VIEW_VAR_NAME = 'view';
  72. var lastLeftPanelWidth = 295;
  73. var toolBarOnly = true;
  74. // isolate scope
  75. (function() {
  76. setUpController();
  77. var configuration = $axure.document.configuration;
  78. var _settings = {};
  79. _settings.projectId = configuration.prototypeId;
  80. _settings.isAxshare = configuration.isAxshare;
  81. _settings.loadFeedbackPlugin = configuration.loadFeedbackPlugin;
  82. var cHash = getHashStringVar(SITEMAP_COLLAPSE_VAR_NAME);
  83. _settings.startCollapsed = cHash == "1";
  84. if(cHash == "2") closePlayer();
  85. var gHash = getHashStringVar(PLUGIN_VAR_NAME);
  86. if(gHash == "") gHash = 1;
  87. _settings.startPluginGid = gHash;
  88. $axure.player.settings = _settings;
  89. // $(window).bind('load', function() {
  90. // if(CHROME_5_LOCAL && !$('body').attr('pluginDetected')) {
  91. // window.location = 'resources/chrome/chrome.html';
  92. // }
  93. // if (FIREFOX && BROWSER_VERSION >= 68 && document.location.href.indexOf('file://') >= 0) { //detecting firefox and local
  94. // window.location = 'resources/chrome/firefox.html';
  95. // }
  96. // });
  97. $(document).ready(function() {
  98. $axure.page.bind('load.start', mainFrame_onload);
  99. $axure.messageCenter.addMessageListener(messageCenter_message);
  100. $(document).on('pluginShown', function (event, data) {
  101. setVarInCurrentUrlHash('g', data ? data : '');
  102. });
  103. $(document).on('pluginCreated', function(event, data) {
  104. if($axure.player.settings.startPluginGid == data) {
  105. $axure.player.showPlugin(data);
  106. }
  107. });
  108. if($axure.player.settings.loadFeedbackPlugin) {
  109. if($axure.player.settings.isAxshare) {
  110. $axure.utils.loadJS('/Scripts/plugins/feedback/feedback8.js');
  111. } else {
  112. $axure.utils.loadJS('http://share.axure.com/Scripts/plugins/feedback/feedback8.js');
  113. }
  114. }
  115. if(navigator.userAgent.indexOf("MSIE") >= 0) $('#outerContainer').width('100%');
  116. initialize();
  117. if($axure.player.settings.startCollapsed) $('#outerContainer').splitter({ sizeLeft: 0 });
  118. else $('#outerContainer').splitter({ sizeLeft: lastLeftPanelWidth });
  119. $('#leftPanel').width(lastLeftPanelWidth);
  120. $(window).resize(function() { resizeContent(); });
  121. $('#maximizePanelContainer').hide();
  122. initializeLogo();
  123. $(window).resize();
  124. resizeContent();
  125. $axure.player.collapseToBar();
  126. if($axure.player.settings.startCollapsed) {
  127. collapse();
  128. $('#leftPanel').width(0);
  129. }
  130. if(MOBILE_DEVICE) {
  131. $('#interfaceControlFrameMinimizeContainer').height('45px')
  132. $('#interfaceControlFrameMinimizeContainer a').height('45px');
  133. $('#interfaceControlFrameHeaderContainer').css('margin-top','45px');
  134. $('#interfaceControlFrameCloseContainer a').css('padding','10px 0px');
  135. $('#maximizePanelContainer').height('45px');//.css('top','inherit').css('bottom','0px');
  136. $('body').removeClass('hashover');
  137. if(IOS) {
  138. $('#rightPanel').css('overflow', 'auto').css('-webkit-overflow-scrolling', 'touch').css('-ms-overflow-x', 'hidden');
  139. window.addEventListener("orientationchange", function() {
  140. var viewport = document.querySelector("meta[name=viewport]");
  141. //so iOS doesn't zoom when switching back to portrait
  142. viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0');
  143. viewport.setAttribute('content', 'width=device-width, initial-scale=1.0');
  144. resizeContent();
  145. }, false);
  146. $axure.page.bind('load.start', function() {
  147. resizeContent();
  148. });
  149. }
  150. }
  151. });
  152. function initialize() {
  153. var legacyQString = getQueryString("Page");
  154. if (legacyQString.length > 0) {
  155. location.href = location.href.substring(0, location.href.indexOf("?")) + "#p=" + legacyQString;
  156. return;
  157. }
  158. var mainFrame = document.getElementById("mainFrame");
  159. //if it's local file on safari, test if we can access mainframe after its loaded
  160. if(SAFARI && document.location.href.indexOf('file://') >= 0) {
  161. $(mainFrame).load(function () {
  162. var canAccess;
  163. try {
  164. var mainFrameWindow = mainFrame.contentWindow || mainFrame.contentDocument;
  165. mainFrameWindow['safari_file_CORS'] = 'Y';
  166. canAccess = mainFrameWindow['safari_file_CORS'] === 'Y';
  167. } catch(err) {
  168. canAccess = false;
  169. }
  170. if(!canAccess) window.location = 'resources/chrome/safari.html';
  171. });
  172. }
  173. mainFrame.contentWindow.location.href = getInitialUrl();
  174. }
  175. function initializeLogo() {
  176. if($axure.document.configuration.logoImagePath) {
  177. var image = new Image();
  178. image.onload = function() {
  179. $('#logoImage').css('max-width', this.width + 'px');
  180. $axure.player.resizeContent();
  181. };
  182. image.src = $axure.document.configuration.logoImagePath;
  183. $('#interfaceControlFrameLogoImageContainer').html('<img id="logoImage" src="" />');
  184. $('#logoImage').attr('src', $axure.document.configuration.logoImagePath).load(function() { resizeContent(); });
  185. } else $('#interfaceControlFrameLogoImageContainer').hide();
  186. if ($axure.document.configuration.logoImageCaption) {
  187. $('#interfaceControlFrameLogoCaptionContainer').html($axure.document.configuration.logoImageCaption);
  188. } else $('#interfaceControlFrameLogoCaptionContainer').hide();
  189. if(!$('#interfaceControlFrameLogoImageContainer').is(':visible') && !$('#interfaceControlFrameLogoCaptionContainer').is(':visible')) {
  190. $('#interfaceControlFrameLogoContainer').hide();
  191. }
  192. }
  193. var resizeContent = $axure.player.resizeContent = function() {
  194. var newHeight = $(window).height();
  195. var newWidth = $(window).width();
  196. var controlContainerHeight = newHeight;// - 30;
  197. if($('#interfaceControlFrameLogoContainer').is(':visible')) controlContainerHeight -= $('#interfaceControlFrameLogoContainer').outerHeight();// + 16;
  198. $('#outerContainer').height(newHeight).width(newWidth);
  199. $('.vsplitbar').height(newHeight);
  200. $('#leftPanel').height(newHeight);
  201. $('#interfaceControlFrame').height(newHeight);
  202. $('#interfaceControlFrameContainer').height(newHeight);
  203. $('#interfaceControlFrameHostContainer').height(controlContainerHeight);
  204. $('#rightPanel').height(newHeight);
  205. $('#mainFrame').height(newHeight);
  206. if($('#leftPanel').is(':visible')) $('#rightPanel').width($(window).width() - $('#leftPanel').width() - 1);// $('.vsplitbar').width());
  207. else $('#rightPanel').width($(window).width());
  208. $(document).trigger('ContainerHeightChange',[controlContainerHeight]);
  209. if(MOBILE_DEVICE) {
  210. if(!(getHashStringVar(ADAPTIVE_VIEW_VAR_NAME).length > 0)) $axure.messageCenter.postMessage('setAdaptiveViewForSize', {'width':newWidth, 'height':$('#rightPanel').height()});
  211. }
  212. }
  213. var collapseToBar = $axure.player.collapseToBar = function() {
  214. lastLeftPanelWidth = $('#leftPanel').width();
  215. $('#leftPanel').width('55px');
  216. $('.vsplitbar').hide();
  217. $('#rightPanel').width($(window).width() - $('#leftPanel').width());
  218. $(window).resize();
  219. $('#outerContainer').trigger('resize');
  220. toolBarOnly = true;
  221. }
  222. var expandFromBar = $axure.player.expandFromBar = function() {
  223. if($('.vsplitbar').is(':visible')) return;
  224. $('#leftPanel').width(lastLeftPanelWidth);
  225. $('.vsplitbar').show();
  226. $('#rightPanel').width($(window).width() - $('#leftPanel').width() - 1);// $('.vsplitbar').width());
  227. $(window).resize();
  228. $('#outerContainer').trigger('resize');
  229. toolBarOnly = false;
  230. }
  231. })();
  232. function messageCenter_message(message, data) {
  233. if(message == 'expandFrame') expand();
  234. else if(message == 'getCollapseFrameOnLoad' && $axure.player.settings.startCollapsed && !MOBILE_DEVICE) $axure.messageCenter.postMessage('collapseFrameOnLoad');
  235. }
  236. function getInitialUrl() {
  237. var pageName = getHashStringVar("p");
  238. if(pageName.length > 0) return pageName + ".html";
  239. else {
  240. var url = getFirstPageUrl($axure.document.sitemap.rootNodes);
  241. return (url ? url : "about:blank");
  242. }
  243. }
  244. function getFirstPageUrl(nodes) {
  245. for (var i = 0; i < nodes.length; i++) {
  246. var node = nodes[i];
  247. if (node.url) return node.url;
  248. else {
  249. var hasChildren = (node.children && node.children.length > 0);
  250. if (hasChildren) {
  251. var url = getFirstPageUrl(node.children);
  252. if (url) return url;
  253. }
  254. }
  255. }
  256. return null;
  257. }
  258. function closePlayer() {
  259. if($axure.page.location) window.location.href = $axure.page.location;
  260. else {
  261. var pageFile = getInitialUrl();
  262. var currentLocation = window.location.toString();
  263. window.location.href = currentLocation.substr(0, currentLocation.lastIndexOf("/") + 1) + pageFile;
  264. }
  265. }
  266. function replaceHash(newHash) {
  267. var currentLocWithoutHash = window.location.toString().split('#')[0];
  268. //We use replace so that every hash change doesn't get appended to the history stack.
  269. //We use replaceState in browsers that support it, else replace the location
  270. if(typeof window.history.replaceState != 'undefined') {
  271. try {
  272. //Chrome 45 (Version 45.0.2454.85 m) started throwing an error here when generated locally (this only happens with sitemap open) which broke all interactions.
  273. //try catch breaks the url adjusting nicely when the sitemap is open, but all interactions and forward and back buttons work.
  274. //Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'file:///C:/Users/Ian/Documents/Axure/HTML/Untitled/start.html#p=home' cannot be created in a document with origin 'null'.
  275. window.history.replaceState(null, null, currentLocWithoutHash + newHash);
  276. } catch(ex) {}
  277. } else {
  278. window.location.replace(currentLocWithoutHash + newHash);
  279. }
  280. }
  281. function collapse() {
  282. setVarInCurrentUrlHash('c', 1);
  283. if(!toolBarOnly) lastLeftPanelWidth = $('#leftPanel').width();
  284. $('#maximizePanelContainer').show();
  285. $('#leftPanel').hide();
  286. $('.vsplitbar').hide();
  287. $('#rightPanel').width($(window).width());
  288. $(window).resize();
  289. $('#outerContainer').trigger('resize');
  290. $(document).trigger('sidebarCollapse');
  291. if(MOBILE_DEVICE) {
  292. $('#maximizePanelContainer').animate({
  293. top:$('#rightPanel').height() - $('#maximizePanelContainer').height()
  294. }, 300, 'swing', function() {
  295. $('#maximizePanelContainer').css('top', 'inherit').css('bottom', '0px');
  296. });
  297. }
  298. }
  299. function expand() {
  300. if(MOBILE_DEVICE) {
  301. $('#maximizePanelContainer').css('top', '0px').css('bottom', 'inherit');
  302. }
  303. deleteVarFromCurrentUrlHash('c');
  304. $('#maximizePanelContainer').hide();
  305. $('#leftPanel').width(lastLeftPanelWidth);
  306. $('#leftPanel').show();
  307. if(!toolBarOnly) {
  308. $('.vsplitbar').show();
  309. $('#rightPanel').width($(window).width() - $('#leftPanel').width() - 1);
  310. } else {
  311. $axure.player.collapseToBar();
  312. }
  313. $(window).resize();
  314. $('#outerContainer').trigger('resize');
  315. $(document).trigger('sidebarExpanded');
  316. }
  317. function mainFrame_onload() {
  318. if($axure.page.pageName) document.title = $axure.page.pageName;
  319. }
  320. function getQueryString(query) {
  321. var qstring = self.location.href.split("?");
  322. if(qstring.length < 2) return "";
  323. return GetParameter(qstring, query);
  324. }
  325. function GetParameter(qstring, query) {
  326. var prms = qstring[1].split("&");
  327. var frmelements = new Array();
  328. var currprmeter, querystr = "";
  329. for(var i = 0; i < prms.length; i++) {
  330. currprmeter = prms[i].split("=");
  331. frmelements[i] = new Array();
  332. frmelements[i][0] = currprmeter[0];
  333. frmelements[i][1] = currprmeter[1];
  334. }
  335. for(j = 0; j < frmelements.length; j++) {
  336. if(frmelements[j][0].toLowerCase() == query.toLowerCase()) {
  337. querystr = frmelements[j][1];
  338. break;
  339. }
  340. }
  341. return querystr;
  342. }
  343. function getHashStringVar(query) {
  344. var qstring = self.location.href.split("#");
  345. if(qstring.length < 2) return "";
  346. return GetParameter(qstring, query);
  347. }
  348. function setHashStringVar(currentHash, varName, varVal) {
  349. var varWithEqual = varName + '=';
  350. var poundVarWithEqual = varVal === '' ? '' : '#' + varName + '=' + varVal;
  351. var ampVarWithEqual = varVal === '' ? '' : '&' + varName + '=' + varVal;
  352. var hashToSet = '';
  353. var pageIndex = currentHash.indexOf('#' + varWithEqual);
  354. if(pageIndex == -1) pageIndex = currentHash.indexOf('&' + varWithEqual);
  355. if(pageIndex != -1) {
  356. var newHash = currentHash.substring(0, pageIndex);
  357. newHash = newHash == '' ? poundVarWithEqual : newHash + ampVarWithEqual;
  358. var ampIndex = currentHash.indexOf('&', pageIndex + 1);
  359. if(ampIndex != -1) {
  360. newHash = newHash == '' ? '#' + currentHash.substring(ampIndex + 1) : newHash + currentHash.substring(ampIndex);
  361. }
  362. hashToSet = newHash;
  363. } else if(currentHash.indexOf('#') != -1) {
  364. hashToSet = currentHash + ampVarWithEqual;
  365. } else {
  366. hashToSet = poundVarWithEqual;
  367. }
  368. if(hashToSet != '' || varVal == '') {
  369. return hashToSet;
  370. }
  371. return null;
  372. }
  373. function setVarInCurrentUrlHash(varName, varVal) {
  374. var newHash = setHashStringVar(window.location.hash, varName, varVal);
  375. if(newHash != null) {
  376. replaceHash(newHash);
  377. }
  378. }
  379. function deleteHashStringVar(currentHash, varName) {
  380. var varWithEqual = varName + '=';
  381. var pageIndex = currentHash.indexOf('#' + varWithEqual);
  382. if(pageIndex == -1) pageIndex = currentHash.indexOf('&' + varWithEqual);
  383. if(pageIndex != -1) {
  384. var newHash = currentHash.substring(0, pageIndex);
  385. var ampIndex = currentHash.indexOf('&', pageIndex + 1);
  386. //IF begin of string....if none blank, ELSE # instead of & and rest
  387. //IF in string....prefix + if none blank, ELSE &-rest
  388. if(newHash == '') { //beginning of string
  389. newHash = ampIndex != -1 ? '#' + currentHash.substring(ampIndex + 1) : '';
  390. } else { //somewhere in the middle
  391. newHash = newHash + (ampIndex != -1 ? currentHash.substring(ampIndex) : '');
  392. }
  393. return newHash;
  394. }
  395. return null;
  396. }
  397. function deleteVarFromCurrentUrlHash(varName) {
  398. var newHash = deleteHashStringVar(window.location.hash, varName);
  399. if(newHash != null) {
  400. replaceHash(newHash);
  401. }
  402. }
  403. </script>
  404. <link type="text/css" rel="Stylesheet" href="plugins/sitemap/styles/sitemap.css" />
  405. <link type="text/css" rel="Stylesheet" href="plugins/page_notes/styles/page_notes.css" />
  406. <link type="text/css" rel="Stylesheet" href="plugins/debug/styles/debug.css" />
  407. <script src="resources/scripts/startPost.js"></script>
  408. <!--<link type="text/css" rel="Stylesheet" href="plugins/recordplay/styles/recordplay.css" />
  409. <script type="text/javascript" src="plugins/recordplay/recordplay.js"></script>-->
  410. </head>
  411. <body scroll="no" class="hashover">
  412. <div id="outerContainer">
  413. <div id="leftPanel">
  414. <div id="interfaceControlFrame">
  415. <div id="interfaceControlFrameMinimizeContainer">
  416. <a title="Collapse" id="interfaceControlFrameMinimizeButton" onclick="collapse();">&nbsp;</a>
  417. </div>
  418. <div id="interfaceControlFrameHeaderContainer">
  419. <ul id="interfaceControlFrameHeader"></ul>
  420. </div>
  421. <div id="interfaceControlFrameContainer">
  422. <div id="interfaceControlFrameLogoContainer">
  423. <div id="interfaceControlFrameLogoImageContainer"></div>
  424. <div id="interfaceControlFrameLogoCaptionContainer"></div>
  425. </div>
  426. <div id="interfaceControlFrameHostContainer">
  427. </div>
  428. </div>
  429. <!-- <div id="interfaceControlFrameCloseContainer">
  430. <a title="Close" id="interfaceControlFrameCloseButton" onclick="closePlayer();">CLOSE</a>
  431. </div> -->
  432. </div>
  433. </div>
  434. <div id="rightPanel">
  435. <iframe id="mainFrame" name="mainFrame" width="100%" height="100%" src="" frameborder="0" style="display: block;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
  436. </div>
  437. </div>
  438. <div id="maximizePanelContainer">
  439. <div id="maximizePanelOver">
  440. <div id="maximizePanel" class="maximizePanel" title="Expand" onclick='expand();'>
  441. </div>
  442. </div>
  443. <!-- <iframe id="expandFrame" src="resources/expand.html" width="100%" height="100%" scrolling="no" allowtransparency="true" frameborder="0"></iframe> -->
  444. </div>
  445. </body>
  446. </html>
  447. <style>
  448. #interfaceControlFrameMinimizeContainer{
  449. left:204px;
  450. top: 50%;
  451. margin-top: -25px;
  452. transform:rotate(90deg);
  453. }
  454. #maximizePanelContainer {
  455. top: 50%;
  456. margin-top: -25px;
  457. left:-18px;
  458. transform:rotate(90deg);
  459. }
  460. </style>