├── img ├── up.png ├── chrome.jpg ├── clock.png ├── close.png ├── stars.jpg ├── chrome_2.jpg ├── chat_yellow.png ├── planets │ ├── sun.jpg │ ├── earth.jpg │ ├── mars.jpg │ ├── pluto.jpg │ ├── stars.jpg │ ├── venus.jpg │ └── mercury.jpg ├── soapbubble.jpg ├── alien_metal1.jpg ├── black_metal_b.jpg ├── black_metal_s.jpg ├── compass │ ├── east.png │ ├── north.png │ ├── south.png │ ├── west.png │ ├── northeast.png │ ├── northwest.png │ ├── southeast.png │ └── southwest.png ├── dark_stone_b.jpg ├── dark_stone_s.jpg ├── whatsock_logo.jpg ├── rsa_fellowship_logo.jpg ├── ic_close.svg ├── guidance.svg ├── ic_help.svg ├── atree.svg └── whatsock.svg ├── ARIA 101.pdf ├── aria_checklist.pdf ├── css ├── anton-webfont.eot ├── anton-webfont.ttf ├── anton-webfont.woff ├── OpenSans-Bold-webfont.eot ├── OpenSans-Bold-webfont.ttf ├── nobile-bold-webfont.eot ├── nobile-bold-webfont.ttf ├── nobile-bold-webfont.woff ├── nobile-bold-webfont.woff2 ├── nobile-italic-webfont.eot ├── nobile-italic-webfont.ttf ├── OpenSans-Bold-webfont.woff ├── OpenSans-Italic-webfont.eot ├── OpenSans-Italic-webfont.ttf ├── OpenSans-Light-webfont.eot ├── OpenSans-Light-webfont.ttf ├── OpenSans-Light-webfont.woff ├── nobile-italic-webfont.woff ├── nobile-italic-webfont.woff2 ├── nobile-regular-webfont.eot ├── nobile-regular-webfont.ttf ├── nobile-regular-webfont.woff ├── OpenSans-Italic-webfont.woff ├── OpenSans-Regular-webfont.eot ├── OpenSans-Regular-webfont.ttf ├── OpenSans-Regular-webfont.woff ├── nobile-regular-webfont.woff2 └── global.css ├── minify.bat ├── Static vs. Interactive Widget Roles - Ensuring Proper Functionality in ARIA.pdf ├── Format.bat ├── LICENSE ├── files ├── policy_tabs │ ├── mcLegal.html │ ├── mcAbout.html │ ├── mcTerms.html │ └── mcPrivacy.html ├── left_tabs │ ├── mcContact.html │ ├── mcDemo.html │ └── mcOverview.html └── core │ ├── s9.htm │ └── s3.htm ├── Dependencies.txt ├── Understanding AccDC - A Quick Start Guide.txt ├── AccDC.htm ├── README.md └── js ├── helpers.js ├── demo.js ├── ready.js └── css_drag_drop_module_for_standalone_dojo_and_mootools.min.js /img/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/up.png -------------------------------------------------------------------------------- /ARIA 101.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/ARIA 101.pdf -------------------------------------------------------------------------------- /img/chrome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/chrome.jpg -------------------------------------------------------------------------------- /img/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/clock.png -------------------------------------------------------------------------------- /img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/close.png -------------------------------------------------------------------------------- /img/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/stars.jpg -------------------------------------------------------------------------------- /img/chrome_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/chrome_2.jpg -------------------------------------------------------------------------------- /aria_checklist.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/aria_checklist.pdf -------------------------------------------------------------------------------- /img/chat_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/chat_yellow.png -------------------------------------------------------------------------------- /img/planets/sun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/sun.jpg -------------------------------------------------------------------------------- /img/soapbubble.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/soapbubble.jpg -------------------------------------------------------------------------------- /css/anton-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/anton-webfont.eot -------------------------------------------------------------------------------- /css/anton-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/anton-webfont.ttf -------------------------------------------------------------------------------- /img/alien_metal1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/alien_metal1.jpg -------------------------------------------------------------------------------- /img/black_metal_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/black_metal_b.jpg -------------------------------------------------------------------------------- /img/black_metal_s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/black_metal_s.jpg -------------------------------------------------------------------------------- /img/compass/east.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/east.png -------------------------------------------------------------------------------- /img/compass/north.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/north.png -------------------------------------------------------------------------------- /img/compass/south.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/south.png -------------------------------------------------------------------------------- /img/compass/west.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/west.png -------------------------------------------------------------------------------- /img/dark_stone_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/dark_stone_b.jpg -------------------------------------------------------------------------------- /img/dark_stone_s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/dark_stone_s.jpg -------------------------------------------------------------------------------- /img/planets/earth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/earth.jpg -------------------------------------------------------------------------------- /img/planets/mars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/mars.jpg -------------------------------------------------------------------------------- /img/planets/pluto.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/pluto.jpg -------------------------------------------------------------------------------- /img/planets/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/stars.jpg -------------------------------------------------------------------------------- /img/planets/venus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/venus.jpg -------------------------------------------------------------------------------- /img/whatsock_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/whatsock_logo.jpg -------------------------------------------------------------------------------- /css/anton-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/anton-webfont.woff -------------------------------------------------------------------------------- /img/planets/mercury.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/planets/mercury.jpg -------------------------------------------------------------------------------- /minify.bat: -------------------------------------------------------------------------------- 1 | call uglifyjs Acc.DC.API.U.js --comments /^!/ --compress --mangle --output Acc.DC.API.js -------------------------------------------------------------------------------- /img/compass/northeast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/northeast.png -------------------------------------------------------------------------------- /img/compass/northwest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/northwest.png -------------------------------------------------------------------------------- /img/compass/southeast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/southeast.png -------------------------------------------------------------------------------- /img/compass/southwest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/compass/southwest.png -------------------------------------------------------------------------------- /css/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /css/OpenSans-Bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Bold-webfont.ttf -------------------------------------------------------------------------------- /css/nobile-bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-bold-webfont.eot -------------------------------------------------------------------------------- /css/nobile-bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-bold-webfont.ttf -------------------------------------------------------------------------------- /css/nobile-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-bold-webfont.woff -------------------------------------------------------------------------------- /css/nobile-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-bold-webfont.woff2 -------------------------------------------------------------------------------- /css/nobile-italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-italic-webfont.eot -------------------------------------------------------------------------------- /css/nobile-italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-italic-webfont.ttf -------------------------------------------------------------------------------- /img/rsa_fellowship_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/img/rsa_fellowship_logo.jpg -------------------------------------------------------------------------------- /css/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /css/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /css/OpenSans-Italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Italic-webfont.ttf -------------------------------------------------------------------------------- /css/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /css/OpenSans-Light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Light-webfont.ttf -------------------------------------------------------------------------------- /css/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /css/nobile-italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-italic-webfont.woff -------------------------------------------------------------------------------- /css/nobile-italic-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-italic-webfont.woff2 -------------------------------------------------------------------------------- /css/nobile-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-regular-webfont.eot -------------------------------------------------------------------------------- /css/nobile-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-regular-webfont.ttf -------------------------------------------------------------------------------- /css/nobile-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-regular-webfont.woff -------------------------------------------------------------------------------- /css/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /css/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /css/OpenSans-Regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Regular-webfont.ttf -------------------------------------------------------------------------------- /css/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /css/nobile-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/css/nobile-regular-webfont.woff2 -------------------------------------------------------------------------------- /Static vs. Interactive Widget Roles - Ensuring Proper Functionality in ARIA.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhatSock/accdc/HEAD/Static vs. Interactive Widget Roles - Ensuring Proper Functionality in ARIA.pdf -------------------------------------------------------------------------------- /Format.bat: -------------------------------------------------------------------------------- 1 | (call prettier --write "./Acc.DC.API.U.js") 2 | (call prettier --write "./**/{demo.js,helpers.js,ready.js}") 3 | (call prettier --write "./**/*{.css,.json}") 4 | (call js-beautify -r --type="html" "./**/*.{htm,html}") 5 | (call js-beautify -r --type="html" "./AccDC.htm") 6 | (call .\minify.bat) -------------------------------------------------------------------------------- /img/ic_close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /img/guidance.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Bryan Garaventa 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /img/ic_help.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /img/atree.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 18 | 19 | -------------------------------------------------------------------------------- /files/policy_tabs/mcLegal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
7 |
8 |
9 |

Legal-FTC Guides Disclosures

10 |
11 |
12 |

AccDC is an unregistered mark of WhatSock; all other trademarks are the property of their respective owners.

13 |
    14 |
  1. FTC Disclosure Policy - Material Connections with Advertisers. The Federal Trade Commission (FTC) 15 | requires that we disclose any material connection we may have with a product manufacturer or service 16 | provider (advertiser) (16 CFR, Part 255 - Guides Concerning the Use of Endorsements and Testimonials 17 | in Advertising). Material connections involve the payment of compensation by advertisers to us or 18 | advertisers providing free promotional materials or benefits to us. 19 |
      20 |
    1. No Commissions or Fees. None of the advertisers for which we provide testimonials or comments 21 | on this site pay us commissions, referral fees, or any other fees.
    2. 22 |
    3. No Promotional Materials or Benefits. None of the advertisers for which we provide testimonials 23 | or comments on this site provide us with free promotional materials or benefits.
    4. 24 |
    25 |
  2. 26 |
27 |

Use of this site including any content, service, or product displayed, published, or downloaded from this site 28 | is subject to all the terms and conditions of our Terms of Use and Privacy Policy. 29 | In addition, licensed users are required to enter into an additional agreement.

30 |
31 |
32 | 33 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /Dependencies.txt: -------------------------------------------------------------------------------- 1 | Notes and Dependencies 2 | 3 | 1. 4 | 5 | In order to view the Core API reference materials and Functionality Templates in some browsers, the source code files must be hosted on a web server. 6 | 7 | 2. 8 | 9 | When making changes to the JavaScript code and HTML markup of Functionality Templates, it is very important to test these changes using the keyboard (without using the mouse at all), to ensure that keyboard accessibility is maintained. 10 | 11 | Similarly, to ensure that all code changes remain fully accessible to screen reader users as well, all newly added features should be tested with the following screen reader and browser combinations: (Again, without use of the mouse at all) 12 | 13 | a) The latest release of JAWS For Windows from http://www.freedomscientific.com/ 14 | 15 | And 16 | 17 | b) The latest release of NVDA from http://www.nvda-project.org/ 18 | 19 | 3. 20 | 21 | Important CSS considerations: 22 | 23 | You can change the visual styling for all Functionality Templates to fit the visual layout of any UI design without negatively impacting screen reader or keyboard accessibility. 24 | 25 | E.G: Foreground and background coloration, bordering, font and window sizes, floating and positioning, etc. 26 | 27 | With the following exceptions: 28 | 29 | a) 30 | 31 | Pure white font on a black background should not be used anywhere within the same page. 32 | E.G: "color: #fff; background-color: #000;" 33 | 34 | Doing so, will cause JAWS13 (and +?) to announce the text with this color combination every time a control that uses role=dialog is opened and keyboard focus is set within. 35 | 36 | Setting the foreground color to White Smoke will prevent this issue from occurring. 37 | E.G: "color: #f5f5f5; background-color: #000;" 38 | 39 | b) 40 | 41 | The styles "display: none;" and "visibility: hidden;" will hide all contained elements and text from both sighted users and screen reader users alike. 42 | 43 | To hide all contained elements and text from sighted users, while at the same time keeping the same elements and text visible for screen reader users, the following styling may be used instead: 44 | 45 | .sraCSS { 46 | position: absolute; 47 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 48 | clip: rect(1px, 1px, 1px, 1px); 49 | clip-path: polygon(0px 0px, 0px 0px,0px 0px, 0px 0px); 50 | padding: 0; 51 | border: 0; 52 | height: 1px; 53 | width: 1px; 54 | overflow: hidden; 55 | z-index: -1000; 56 | } 57 | 58 | This is referred to as Screen Reader Accessible Hidden Text or Off Screen Text, and will ensure that the element and all content within is invisible for sighted users, while at the same time keeping it visible to screen readers. 59 | 60 | Screen Reader Accessible Hidden Text should only be used when it's desirable to present additional content to screen reader users, and should never be used simply to hide content, nor should it be used to embed SEO content within pages since this will cause screen reader users to stumble across nonsensical information during navigation. 61 | 62 | 4. 63 | 64 | Tips: 65 | 66 | a) 67 | 68 | To view and test the DOM positioning and verbiage of Screen Reader Accessible Hidden Text, simply disable CSS in the browser. 69 | 70 | -------------------------------------------------------------------------------- /Understanding AccDC - A Quick Start Guide.txt: -------------------------------------------------------------------------------- 1 | Understanding AccDC: A Quick Start Guide 2 | 3 | It helps to understand precisely what AccDC is and how it works at the most basic level. 4 | 5 | The AccDC API is designed to process and normalize code across the three most widely used JavaScript libraries and frameworks, jQuery, Dojo, and MooTools. 6 | 7 | To be specific, the AccDC API is an extension for jQuery, Dojo, and MooTools. 8 | 9 | The AccDC API module interfaces with each of these libraries and frameworks in order to utilize all of the available rendering, AJAX, event handling, and associated processes, and extends them, so that any relevant command that is processed using the $A namespace, is automatically powered by the core processes within jQuery, Dojo, or MooTools. 10 | 11 | This means that, any widget that uses the following AccDC API methods, will automatically normalize equally across jQuery, Dojo, and MooTools, without requiring any coding changes to work correctly. 12 | 13 | • $A.getEl // Get the element with the specified ID 14 | • $A.createEl // Create a new element node, plus optional attributes, styling, and content 15 | • $A.getAttr // Get the value of a specified attribute 16 | • $A.setAttr // Set the value of one or more attributes 17 | • $A.remAttr // Remove one or more attributes 18 | • $A.getText // Get the textual content of a container element 19 | (Coding documentation: WhatSock.com > Core API > Misc) 20 | 21 | • $A.css // Get or Set the styling properties of one or more elements 22 | • $A.hasClass // Check if an element includes one or more class names 23 | • $A.addClass // Add one or more class names to an element 24 | • $A.remClass // Remove one or more class names from an element 25 | (Coding documentation: WhatSock.com > Core API > CSS) 26 | 27 | • $A.bind // Add event handlers for one or more elements 28 | • $A.unbind // Remove event handlers for one or more elements 29 | • $A.trigger // Fire the specified event on an element 30 | (Coding documentation: WhatSock.com > Core API > Events) 31 | 32 | • $A.load // Pull markup code from an external resource and load into a container element 33 | • $A.get // Pull code from an external resource and process it 34 | • $A.getJSON // Pull JSON code from an external resource and process it 35 | • $A.getScript // Execute an external JavaScript file 36 | • $A.post // Submit data to a server side script using a POST request 37 | • $A.ajax // Manually configure custom AJAX GET or POST requests 38 | (Coding documentation: WhatSock.com > Core API > AJAX) 39 | 40 | • $A.announce // Announce a string or the content of a container element to screen reader users 41 | (Coding documentation: WhatSock.com > Core API > Accessibility) 42 | 43 | There are many more AccDC API commands and customizable rendering functionalities documented on the Core API tab at WhatSock.com, but these cover all of the most commonly used public methods. 44 | 45 | In order to test and verify this functionality, there are three dedicated TSG GitHub projects, all of which use the same component code for each widget type shared between them, which tie into the AccDC API for automatic normalization. 46 | 47 | • Powered by jQuery: https://github.com/whatsock/tsg 48 | • Powered by Dojo: https://github.com/whatsock/tsg-dojo 49 | • Powered by MooTools: https://github.com/whatsock/tsg-mootools 50 | 51 | In order to ensure the highest level of accessibility possible for all user types, including non-sighted screen reader users, mobility impaired keyboard only users, voice navigation software users, and low vision screen magnification software users, all of the scalable widgets provided within the TSG archives are programmed specifically to be as accessible as possible using all current standards, with specific adherence to the principles and guidelines documented at: 52 | 53 | http://whatsock.com/training 54 | 55 | Also available for download at: 56 | https://github.com/whatsock/training 57 | 58 | For community support, please address any questions to the Accessibility Innovators LinkedIn group, at: 59 | https://www.linkedin.com/groups/Accessibility-Innovators-4512178 60 | 61 | Future updates and announcements will be posted on Twitter, at 62 | https://twitter.com/bryanegaraventa -------------------------------------------------------------------------------- /files/policy_tabs/mcAbout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
7 |
8 |
9 |

About Us

10 |
11 |
12 |

WhatSock is based in the San Francisco Bay Area, and was founded by Bryan Garaventa in 2010 to provide 13 | enterprise business solutions for the development of performance enhanced, automatically accessible 14 | web technologies.

15 |

Bryan Garaventa attended Notre Dame de 16 | Namur University in Belmont California; worked at Napster in the early 2000's to introduce accessibility 17 | within mainstream applications; has worked to expand the concept of Accessible Innovation in subsequent 18 | years; is a member of the Guild of Accessible Web Designers, and is a Fellow of the 19 | RSA (Royal Society of Arts).

20 | 21 |

WhatSock provides the AccDC API as a free scalable business solution, which can be integrated with any architecture, 22 | platform, or framework that supports JavaScript.

23 | 24 |

All visual design by Angela Ricci (web designer and web front-end developer). You can check her work at 25 | her personal site or you can follow her on Twitter.

26 |
27 |
28 |
29 | 30 | 63 |
64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /files/left_tabs/mcContact.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 |
8 |

Contact Us

9 |
10 | 11 |
12 |

(* = Required Field)

13 |
14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 | Contact 22 | 23 |
24 |

25 |

26 | 27 |

28 |

29 | 30 |

31 |

32 |
33 | 34 |
35 |

36 |

37 | 38 |

39 |

40 | 41 |

42 |

43 |
44 | 45 |
46 | 47 | 48 |
49 | 50 | Message 51 | 52 |

53 |

54 | 55 |
56 |

57 |

58 |
59 | 60 |
61 | 62 |

63 | 64 |
65 |
66 | 67 | 99 |
100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /AccDC.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | AccDC - Accelerated Dynamic Content 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 |
26 |

AccDC Accelerated Dynamic Content

27 |

AccDC API for Standalone, version:

28 | 29 | 30 | 40 |
41 | 42 |
43 | 44 |
45 |
46 |
47 |
48 |

Overview

49 |
50 |

AccDC is a free development resource for international businesses, organizations, and academic institutions.

51 |

AccDC powers Accessible Innovation within web technologies.

52 |

"Accessible Innovation" refers to the creation of technologies that include Accessibility as a core platform feature of development.

53 |
54 | 55 |

The AccDC API is a JavaScript based Dynamic Content Management System that automates the 56 | rendering of dynamic content to ensure accessibility for screen reader and keyboard only users.

57 |

The AccDC Technical Style Guide is designed to provide reliable 58 | and consistent interaction designs that are accessible to the highest percentage of people possible, 59 | and to establish a baseline for Functional Accessibility that can be utilized, built upon, 60 | studied, and tested against.

61 |

AccDC Bootstrap is an HTML parser that renders advanced, 62 | accessible interactive controls using semantic HTML markup.

63 |

AccDC API Mirrors:

64 | 70 |
71 |
72 | 73 | 88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | 107 | 108 | 109 |
110 | 111 | 112 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | AccDC API - 3.4 Standalone (12/11/2017) 2 | ===== 3 | 4 | IMPORTANT: All of the AccDC projects have been deprecated as of May4, 2021. All future development will instead be done through the Apex 4X project, which is much more powerful and feature rich. To learn more, read the Apex 4X release article at: https://www.linkedin.com/pulse/released-apex-4x-comprehensive-aria-development-suite-bryan-garaventa 5 | 6 | AccDC is a scalable, cross-browser and cross-platform compatible Dynamic Content Management System that automates the rendering of dynamic content to ensure accessibility for screen reader and keyboard only users. 7 | 8 | Supported by the Royal Society of Arts, AccDC was awarded the "Above and Beyond Accessibility Award" from the United States Department of Labor, and was presented at the Developing with Accessibility Event, hosted by the Federal Communications Commission in Washington DC in 2012. 9 | 10 | How it works 11 | ----- 12 | 13 | AccDC generates independent JavaScript objects, called AccDC Objects, that include customizable properties and methods which are used to control the functionality, content, and behavior of each AccDC Object at runtime. 14 | 15 | This makes it possible to render any type of user interface component, including wizards, carousels, dialogs, toolbars, tooltips, popups, lightboxes, menus, banners, tab controls, drag and drop controls, toggles, sliders, calendar pickers, or any other type of fully functional accessible user interface component. 16 | 17 | AccDC includes integrated ARIA support to enhance intuitive page structuring for screen reader users, as well as a recursive Announce method that can be used to send textual messages to be dynamically announced for screen reader users. Additional ARIA attributes may be dynamically added to enhance advanced controls using AccDC's in-built Flow Control methods. 18 | 19 | AccDC renders HTML/XHTML valid markup, HTML5, DOM nodes, JavaScript output, XML node content, JSON object data, and content from remote API callbacks. 20 | 21 | AccDC automates accessibility by managing the processes associated with dynamic content rendering, so that the majority of common accessibility issues are automatically addressed when DOM manipulation occurs. 22 | 23 | For specific coding guidance, visit: http://whatsock.com/tsg 24 | 25 | Distributed under the terms of the Open Source Initiative OSI - MIT License. 26 | 27 | Developed and maintained by: Bryan Garaventa https://www.linkedin.com/in/bgaraventa 28 | Or on Twitter at https://twitter.com/bryanegaraventa 29 | 30 | Note: All visual design by Angela Ricci (web designer and web front-end developer). You can check her work at her personal site http://gericci.me/ 31 | Or you can follow her on Twitter at https://twitter.com/gericci 32 | 33 | Project home: 34 | ----- 35 | 36 | http://whatsock.com 37 | 38 | Related projects: 39 | ----- 40 | 41 | * WhatSock Organization: https://github.com/whatsock 42 | * Visual ARIA: https://github.com/accdc/visual-aria 43 | 44 | Understanding AccDC: A Quick Start Guide 45 | ----- 46 | 47 | It helps to understand precisely what AccDC is and how it works at the most basic level. 48 | 49 | The AccDC API is designed to process and normalize code across the three most widely used JavaScript libraries and frameworks, jQuery, Dojo, and MooTools. 50 | 51 | To be specific, the AccDC API is an extension for jQuery, Dojo, and MooTools. 52 | 53 | The AccDC API module interfaces with each of these libraries and frameworks in order to utilize all of the available rendering, AJAX, event handling, and associated processes, and extends them, so that any relevant command that is processed using the $A namespace, is automatically powered by the core processes within jQuery, Dojo, or MooTools. 54 | 55 | An example showing the value of this, is described in the LinkedIn article at 56 | http://lnkd.in/b9VGQxf 57 | 58 | This means that, any widget that uses the following AccDC API methods, will automatically normalize equally across jQuery, Dojo, and MooTools, without requiring any coding changes to work correctly. 59 | 60 | * $A.getEl // Get the element with the specified ID 61 | * $A.createEl // Create a new element node, plus optional attributes, styling, and content 62 | * $A.getAttr // Get the value of a specified attribute 63 | * $A.setAttr // Set the value of one or more attributes 64 | * $A.remAttr // Remove one or more attributes 65 | * $A.getText // Get the textual content of a container element 66 | (Coding documentation: WhatSock.com > Core API > Misc) 67 | 68 | * $A.css // Get or Set the styling properties of one or more elements 69 | * $A.hasClass // Check if an element includes one or more class names 70 | * $A.addClass // Add one or more class names to an element 71 | * $A.remClass // Remove one or more class names from an element 72 | (Coding documentation: WhatSock.com > Core API > CSS) 73 | 74 | * $A.bind // Add event handlers for one or more elements 75 | * $A.unbind // Remove event handlers for one or more elements 76 | * $A.trigger // Fire the specified event on an element 77 | (Coding documentation: WhatSock.com > Core API > Events) 78 | 79 | * $A.load // Pull markup code from an external resource and load into a container element 80 | * $A.get // Pull code from an external resource and process it 81 | * $A.getJSON // Pull JSON code from an external resource and process it 82 | * $A.getScript // Execute an external JavaScript file 83 | * $A.post // Submit data to a server side script using a POST request 84 | * $A.ajax // Manually configure custom AJAX GET or POST requests 85 | (Coding documentation: WhatSock.com > Core API > AJAX) 86 | 87 | * $A.announce // Announce a string or the content of a container element to screen reader users 88 | (Coding documentation: WhatSock.com > Core API > Accessibility) 89 | 90 | There are many more AccDC API commands and customizable rendering functionalities documented on the Core API tab at WhatSock.com, but these cover all of the most commonly used public methods. 91 | 92 | In order to test and verify this functionality, there are three dedicated TSG GitHub projects, all of which use the same component code for each widget type shared between them, which tie into the AccDC API for automatic normalization. 93 | 94 | * Powered by jQuery: https://github.com/whatsock/tsg 95 | * Powered by Dojo: https://github.com/whatsock/tsg-dojo 96 | * Powered by MooTools: https://github.com/whatsock/tsg-mootools 97 | 98 | In order to ensure the highest level of accessibility possible for all user types, including non-sighted screen reader users, mobility impaired keyboard only users, voice navigation software users, and low vision screen magnification software users, all of the scalable widgets provided within the TSG archives are programmed specifically to be as accessible as possible using all current standards, with specific adherence to the principles and guidelines documented at: 99 | 100 | http://whatsock.com/training 101 | 102 | Also available for download at: 103 | https://github.com/whatsock/training 104 | 105 | For community support, please address any questions to the Accessibility Innovators LinkedIn group, at: 106 | https://www.linkedin.com/groups/Accessibility-Innovators-4512178 107 | 108 | Future updates and announcements will be posted on Twitter, at 109 | https://twitter.com/bryanegaraventa -------------------------------------------------------------------------------- /js/helpers.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Helper functions for the WhatSock.com website 3 | Copyright 2010-2013 Bryan Garaventa (WhatSock.com) 4 | Part of AccDC, a Cross-Browser JavaScript accessibility API, distributed under the terms of the Open Source Initiative OSI - MIT License 5 | */ 6 | 7 | var firstChild = function(e, t) { 8 | var e = e ? e.firstChild : null; 9 | 10 | while (e) { 11 | if ( 12 | e.nodeType === 1 && 13 | (!t || t.toLowerCase() === e.nodeName.toLowerCase()) 14 | ) 15 | break; 16 | 17 | e = e.nextSibling; 18 | } 19 | return e; 20 | }, 21 | getClosest = function(start, targ) { 22 | while (start) { 23 | start = start.parentNode; 24 | 25 | if (typeof targ === "string") { 26 | if (start.nodeName.toLowerCase() === targ.toLowerCase()) return start; 27 | } else if (targ.nodeType === 1) { 28 | if (start == targ) return start; 29 | } 30 | } 31 | 32 | return null; 33 | }, 34 | serialize = function(form) { 35 | if (!form || !form.elements) return ""; 36 | var pairs = [], 37 | fields = form.elements; 38 | 39 | for (var i = 0; i < fields.length; i++) { 40 | if (fields[i].name && fields[i].value) 41 | pairs.push(fields[i].name + "=" + encodeURIComponent(fields[i].value)); 42 | } 43 | return pairs.join("&"); 44 | }, 45 | hds = {}, 46 | createHeaderNav = function() { 47 | var ph = $A.getEl("ph"), 48 | hs = $A.query("div.hd > h3"); 49 | hds = {}; 50 | 51 | for (var i = 0; i < hs.length; i++) { 52 | var h = hs[i]; 53 | 54 | if (ph && !$A.hasClass(h, "skip")) { 55 | h.id = "H" + $A.genId(); 56 | var a = $A.createEl( 57 | "a", 58 | { 59 | href: "#" 60 | }, 61 | null, 62 | h.id, 63 | document.createTextNode(h.innerText || h.textContent) 64 | ); 65 | 66 | ph.appendChild(a); 67 | $A.setAttr(h, "tabindex", -1); 68 | hds[h.id] = h; 69 | $A.bind(a, "click", function(ev) { 70 | hds[this.className].focus(); 71 | ev.preventDefault(); 72 | }); 73 | 74 | if (i < hs.length - 1) 75 | ph.appendChild( 76 | $A.createEl( 77 | "span", 78 | null, 79 | null, 80 | null, 81 | document.createTextNode(" | ") 82 | ) 83 | ); 84 | } 85 | } 86 | }, 87 | elastic = function(obj, maxheight) { 88 | if (!obj || obj.nodeName.toLowerCase() !== "textarea") return obj; 89 | var mimics = [ 90 | "paddingTop", 91 | "paddingRight", 92 | "paddingBottom", 93 | "paddingLeft", 94 | "fontSize", 95 | "lineHeight", 96 | "fontFamily", 97 | "fontWeight", 98 | "border-top-width", 99 | "border-right-width", 100 | "border-bottom-width", 101 | "border-left-width", 102 | "borderTopStyle", 103 | "borderTopColor", 104 | "borderRightStyle", 105 | "borderRightColor", 106 | "borderBottomStyle", 107 | "borderBottomColor", 108 | "borderLeftStyle", 109 | "borderLeftColor" 110 | ], 111 | $textarea = obj, 112 | $twin = $A.createEl("div", null, { 113 | position: "absolute", 114 | zIndex: -1000, 115 | visibility: "hidden" 116 | }); 117 | 118 | $textarea.parentNode.appendChild($twin); 119 | 120 | for (var i = mimics.length - 1; i >= 0; i--) 121 | $A.css($twin, mimics[i], $A.css($textarea, mimics[i])); 122 | $A.bind($textarea, "keyup change cut paste resize input", function() { 123 | if (!updating) { 124 | updating = true; 125 | setTimeout(update, 200); 126 | } 127 | }); 128 | $A.bind(window, "resize", update); 129 | var lineHeight = 130 | parseInt($A.css($textarea, "line-height"), 10) || 131 | parseInt($A.css($textarea, "font-size"), 10), 132 | minheight = 30, 133 | maxheight = 134 | maxheight || 135 | parseInt($A.css($textarea, "max-height"), 10) || 136 | Number.MAX_VALUE, 137 | exceeded = false, 138 | updating = false; 139 | 140 | function update() { 141 | var txw = $textarea.offsetWidth, 142 | tww = $twin.offsetWidth; 143 | 144 | if (txw != tww) $A.css($twin, "width", $A.css($textarea, "width")); 145 | var text = $textarea.value 146 | .replace(/&/g, "&") 147 | .replace(/ {2}/g, " ") 148 | .replace(/<|>/g, ">") 149 | .replace(/\n/g, "
"), 150 | html = $twin.innerHTML.replace(/
/gi, "
"); 151 | 152 | if (text + " " !== html) { 153 | $twin.innerHTML = text + " "; 154 | var twh = $twin.offsetHeight; 155 | 156 | if (twh <= maxheight) { 157 | if (twh >= minheight) 158 | $A.css($textarea, "height", twh + lineHeight / 2); 159 | else $A.css($textarea, "height", minheight); 160 | 161 | if (exceeded) { 162 | $A.css($textarea, "overflow", "hidden"); 163 | exceeded = false; 164 | } 165 | } else if (twh > maxheight) { 166 | exceeded = true; 167 | $A.css($textarea, "overflow", "auto"); 168 | } 169 | } 170 | updating = false; 171 | } 172 | exceeded = true; 173 | update(); 174 | return obj; 175 | }, 176 | transition = function(ele, targ, config) { 177 | if (!ele) return; 178 | var start = {}, 179 | disp = {}, 180 | uTotalTime = config.duration || 0; 181 | 182 | for (t in targ) { 183 | if (t == "transform") start[t] = 0; 184 | else start[t] = parseInt($A.css(ele, t)); 185 | 186 | disp[t] = targ[t] - start[t]; 187 | } 188 | (freq = Math.PI / (2 * uTotalTime)), 189 | (startTime = new Date().getTime()), 190 | (tmr = setInterval(function() { 191 | var elapsedTime = new Date().getTime() - startTime; 192 | 193 | if (elapsedTime < uTotalTime) { 194 | var f = Math.abs(Math.sin(elapsedTime * freq)), 195 | nw = {}; 196 | 197 | for (s in start) { 198 | nw[s] = Math.round(f * disp[s] + start[s]); 199 | 200 | if (s == "transform") 201 | $A.css(ele, { 202 | "-ms-transform": "rotate(" + nw[s] + "deg)", 203 | "-moz-transform": "rotate(" + nw[s] + "deg)", 204 | "-webkit-transform": "rotate(" + nw[s] + "deg)", 205 | "-o-transform": "rotate(" + nw[s] + "deg)" 206 | }); 207 | else $A.css(ele, s, nw[s]); 208 | } 209 | 210 | if (config.step) config.step.apply(ele, [nw]); 211 | } else { 212 | clearInterval(tmr); 213 | 214 | for (t in targ) { 215 | if (t == "transform") 216 | $A.css(ele, { 217 | "-ms-transform": "rotate(" + targ[t] + "deg)", 218 | "-moz-transform": "rotate(" + targ[t] + "deg)", 219 | "-webkit-transform": "rotate(" + targ[t] + "deg)", 220 | "-o-transform": "rotate(" + targ[t] + "deg)" 221 | }); 222 | else $A.css(ele, t, targ[t]); 223 | } 224 | 225 | if (config.complete) config.complete.apply(ele, [targ]); 226 | } 227 | }, 10)); 228 | }; 229 | 230 | if (top != window) top.location.href = "http://whatsock.com"; 231 | -------------------------------------------------------------------------------- /files/left_tabs/mcDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 | 8 |
9 | 10 | 11 |
12 |
13 |

Live Demo

14 |
15 |
16 | 17 |
18 |
19 |

All of WhatSock.com is powered by the AccDC API to maximize speed and efficiency.

20 |

To see how this is done, view the initial setup script at 21 | js/ready.js, 22 | which declares all of the tab links on the left as top-level AccDC Objects.

23 |

View the Live Demo setup file at js/demo.js, 24 | to see how the below demo is configured as child AccDC Objects, with the Live 25 | Demo tab specified as the top-level parent AccDC Object.

26 |
27 |
28 | 29 |
30 |
31 |

Drag & Drop

32 |
33 | 34 |
35 |
36 |

Standard images converted into draggable AccDC Objects that are automatically 37 | accessible to screen reader and keyboard only users with customizable drop zones.

38 |

Click the "Morph" button to convert all of the planet images into draggable AccDC Objects. 39 | All of the draggable planet AccDC Objects are keyboard accessible when morphed. 40 | (The sun is also draggable, though it is not configured to be keyboard accessible 41 | since there is no drop zone specified.)

42 |

Directions for keyboard access:

43 |
    44 |
  1. When the Morph button has focus after being activated, press tab.
  2. 45 |
  3. Press Enter on the planet links to toggle dragging.
  4. 46 |
  5. Keep tabbing until focus is set on a related drop link, and press Enter to start dropping.
  6. 47 |
  7. Press shift+tab to reverse.
  8. 48 |
49 |

50 |

51 |
52 | 53 |
54 |
55 |
56 | Universe 57 |
58 |
59 |
    60 |
  • 61 | Mercury 62 |
  • 63 |
  • 64 | Earth 65 |
  • 66 |
  • 67 | Mars 68 |
  • 69 |
  • 70 | Venus 71 |
  • 72 |
73 |
74 | Sun 75 |
76 |
77 | Galaxy 78 |
79 |
80 |
    81 |
    82 |
    83 |

    (Starscape courtesy of the NASA Image Gallery; all rights reserved)

    84 |
    85 |
    86 |
    87 |
    88 | 89 | 121 |
    122 | 123 |
    124 | 125 | 126 | -------------------------------------------------------------------------------- /js/demo.js: -------------------------------------------------------------------------------- 1 | /* ! 2 | This is the setup script to register all demo related AccDC Object declarations. 3 | This file is only parsed when the Live Demo tab is opened from the left navigation links. 4 | */ 5 | 6 | // Configure the AccDC Objects for the demo on the Live Demo tab 7 | 8 | // Keyboard Accessible Drag and Drop 9 | // Bind a click handler to the Convert button 10 | $A.bind("input.morphBtn", "click", function(ev) { 11 | // Configure the Keyboard accessible drag and drop sample by morphing all planet images into draggable AccDC Objects 12 | $A.query("div.dndContainer ul li > img", function(i, obj) { 13 | // Set the mcDemo AccDC Object as the parent 14 | $A.morph($A.reg.mcDemo, obj, { 15 | // Dynamically generate a unique ID 16 | id: "list" + i, 17 | // Use the alt attribute value of the image to set the role (to be used later for keyboard accessibility) 18 | role: $A.getAttr(obj, "alt"), 19 | // Prevent hidden boundary information from being displayed to screen reader users 20 | showHiddenBounds: false, 21 | // Prevent the object from being closable from the keyboard. 22 | showHiddenClose: false, 23 | // Set initial visual styling 24 | cssObj: { 25 | position: "absolute", 26 | zIndex: 3 27 | }, 28 | // Make the object draggable 29 | isDraggable: true, 30 | // Set temporary variables for tracking 31 | inUniverse: true, 32 | dropped: false, 33 | // Store object to prevent same - side drop triggering 34 | currentZone: null, 35 | // Run script after rendering completes 36 | runAfter: function(dc) { 37 | // Set additional styling for the drag links to allow for color contrast differences 38 | dc.accDD.dragLinkStyle = { 39 | color: "white", 40 | backgroundColor: "black", 41 | border: "solid thin white" 42 | }; 43 | 44 | // CSS to reset positioning 45 | dc.clearCSS = { 46 | zIndex: 3, 47 | top: "", 48 | left: "", 49 | height: "", 50 | width: "" 51 | }; 52 | 53 | // Save references to the relevant list objects to prevent unnecessary queries later 54 | var lists = $A.query("div.dndContainer ul, div.dndContainer ol"); 55 | 56 | // Set initial drag and drop options 57 | dc.dropTarget = "div.subDivR"; 58 | // Limit dragging to the bounds of a specific container 59 | dc.drag.confineTo = "div.dndContainer"; 60 | // Enable keyboard accessibility for the drag and drop action 61 | dc.accDD.on = true; 62 | // Set the drop animation duration in milliseconds 63 | dc.accDD.duration = 3000; 64 | // Set a point to return keyboard focus to after dragging has begun to ensure keyboard accessibility 65 | dc.accDD.returnFocusTo = "div.subDivL ul"; 66 | 67 | // Configure the drag / drop event handlers 68 | 69 | dc.onDragStart = function(ev, dd, dc) { 70 | dc.css("z-index", 4); 71 | dc.originalXY = { 72 | top: dd.originalY, 73 | left: dd.originalX 74 | }; 75 | }; 76 | 77 | dc.onDrop = function(ev, dd, dc) { 78 | if (dc.currentZone != this) { 79 | dc.currentZone = this; 80 | dc.dropped = true; 81 | var tmp = dc.dropTarget; 82 | // Remove old drag and drop bindings 83 | dc.unsetDrag(); 84 | // Clear drag styling 85 | dc.css(dc.clearCSS); 86 | 87 | if (dc.inUniverse) { 88 | dc.inUniverse = false; 89 | dc.dropTarget = "div.subDivL"; 90 | dc.accDD.returnFocusTo = "div.subDivR ol"; 91 | // Move the dragged element into the galaxy list 92 | lists[1].appendChild(dc.accDCObj.parentNode); 93 | } else { 94 | dc.inUniverse = true; 95 | dc.dropTarget = "div.subDivR"; 96 | dc.accDD.returnFocusTo = "div.subDivL ul"; 97 | // Move the dragged element into the Universe list 98 | lists[0].appendChild(dc.accDCObj.parentNode); 99 | } 100 | // Now set drag and drop bindings with the newly configured options 101 | dc.setDrag(); 102 | } 103 | }; 104 | 105 | dc.onDragEnd = function(ev, dd, dc) { 106 | // Check if a valid drop has occurred, and move back to the starting point if not 107 | if (!dc.dropped) dropIntoTheSun(dc); 108 | 109 | dc.dropped = false; 110 | }; 111 | 112 | // Now set initial event bindings 113 | dc.setDrag(); 114 | 115 | // Expand parent li tag to account for position absolute 116 | $A.css(dc.accDCObj.parentNode, { 117 | height: dc.accDCObj.offsetHeight, 118 | width: dc.accDCObj.offsetWidth 119 | }); 120 | 121 | dc.accDCObj.parentNode.appendChild( 122 | $A.createEl( 123 | "div", 124 | null, 125 | { 126 | clear: "both" 127 | }, 128 | null, 129 | document.createTextNode(" ") 130 | ) 131 | ); 132 | } 133 | }); 134 | }); 135 | 136 | // Make the sun a draggable AccDC Object as well 137 | var sunImg = $A.query("div.dndContainer img.sun")[0]; 138 | $A.morph($A.reg.mcDemo, sunImg, { 139 | id: "sun", 140 | role: "Sun", 141 | showHiddenBounds: false, 142 | showHiddenClose: false, 143 | isDraggable: true, 144 | drag: { 145 | confineTo: "div.dndContainer" 146 | }, 147 | cssObj: { 148 | position: "absolute", 149 | // Copy the current coordinates for the image 150 | left: $A.xOffset(sunImg).left, 151 | top: $A.xOffset(sunImg).top, 152 | // Set the depth 153 | zIndex: 2 154 | } 155 | }); 156 | 157 | // Change the status message and announce it to screen reader users 158 | $A.announce( 159 | ($A.getEl("morphI").innerHTML = 160 | "Converted all images into draggable AccDC Objects") 161 | ); 162 | 163 | ev.preventDefault(); 164 | }); 165 | 166 | function dropIntoTheSun(dc) { 167 | var sun = firstChild($A.reg.sun.containerDiv, "img"), 168 | planet = firstChild(dc.containerDiv, "img"), 169 | additional = sun.offsetHeight / 2, 170 | sunOS = $A.xOffset(sun); 171 | // Move planet to the sun 172 | transition( 173 | dc.accDCObj, 174 | { 175 | top: sunOS.top + additional, 176 | left: sunOS.left + additional 177 | }, 178 | { 179 | duration: 3000, 180 | complete: function(cb) { 181 | // Fall into the sun 182 | transition( 183 | dc.accDCObj, 184 | { 185 | height: 0, 186 | width: 0, 187 | transform: 360 188 | }, 189 | { 190 | duration: 2000, 191 | step: function(cb) { 192 | // cb contains cb.top and cb.left to match the wrapper, so sync the image to this at runtime 193 | $A.css(planet, cb); 194 | }, 195 | complete: function(cb) { 196 | // Stick the planet behind the sun and resize it, including both the wrapper and the image 197 | $A.css([dc.accDCObj, planet], { 198 | zIndex: 1, 199 | height: "20px", 200 | width: "20px" 201 | }); 202 | 203 | // Move the planet back to its original position 204 | transition(dc.accDCObj, dc.originalXY, { 205 | duration: 3000, 206 | complete: function(cb) { 207 | // Bring the planet to the front once again 208 | $A.css(dc.accDCObj, "z-index", 4); 209 | // Zoom the planet back into focus 210 | transition( 211 | dc.accDCObj, 212 | { 213 | height: 75, 214 | width: 75, 215 | transform: 0 216 | }, 217 | { 218 | duration: 2000, 219 | step: function(cb) { 220 | $A.css(planet, cb); 221 | }, 222 | complete: function(cb) { 223 | // Now clear css ! 224 | dc.css(dc.clearCSS); 225 | } 226 | } 227 | ); 228 | } 229 | }); 230 | } 231 | } 232 | ); 233 | } 234 | } 235 | ); 236 | } 237 | -------------------------------------------------------------------------------- /files/policy_tabs/mcTerms.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 |
    6 |
    7 |
    8 |
    9 |

    Terms of Use

    10 |
    11 |
    12 |

    By accessing or otherwise using this site, you agree to be bound contractually by these Terms of Use.

    13 |

    Effective Date: August 18, 2010

    14 | 15 |

    To review material modifications and their effective dates scroll to the bottom of the page.

    16 | 17 |
      18 |
    1. Parties. The parties to these Terms of Use are you, and the owner of the business WhatSock.com ("WhatSock"). All references to "we", "us", "our", this "website" or this "site" shall be construed to mean WhatSock. 19 |
    2. 20 |
    3. Modification. We reserve the right to modify these Terms of Use at any time, and without prior notice, by posting an amended Terms of Use that is always accessible through the Terms of Use link on this site's home page. You should scroll to the bottom of this page periodically to review material modifications and their effective dates. YOUR CONTINUED USE OF THIS SITE FOLLOWING OUR POSTING OF A MODIFICATION NOTICE OR NEW TERMS OF USE ON THIS SITE WILL CONSTITUTE BINDING ACCEPTANCE OF THE MODIFICATION OR NEW TERMS OF USE. 21 |
    4. 22 |
    5. Use And Restrictions. Subject to these Terms of Use and our Privacy Policy, you may use the public areas of this site, but only for your own internal purposes. You agree not to access (or attempt to access) this site by any means other than through the interface we provide, unless you have been specifically allowed to do so in a separate agreement. You agree not to access (or attempt to access) this site through any automated means (including use of scripts or web crawlers), and you agree to comply with the instructions set out in any robots.txt file present on this site. You are not authorized to (i) resell, sublicense, transfer, assign, or distribute the site, its services or content; (ii) modify or make derivative works based on the site, its services or content; or (iii) "frame" or "mirror" the site, its services or content on any other server or Internet-enabled device. All rights not expressly granted in this Agreement are reserved by us and our licensors. 23 |
    6. 24 |
    7. Monitoring. We reserve the right, but not the obligation, to monitor your access and use of this site without notification to you. We may record or log your use in a manner as set out in our Privacy Policy that is accessible through the Privacy Policy link on this site’s home page. 25 |
    8. 26 |
    9. Separate Agreements. You may acquire products, services and/or content from this site. We reserve the right to require that you agree to separate agreements as a condition of your use and/or purchase of such products, services and/or content. 27 |
    10. 28 |
    11. Ownership. The material provided on this site is protected by law, including, but not limited to, United States copyright law and international treaties. The copyright in the content of this site is owned by us or others. Except for the limited rights granted above, all other rights are reserved. 29 |
    12. 30 |
    13. Warranty Disclaimers. EXCEPT AS MAY BE PROVIDED IN ANY SEPARATE WRITTEN AGREEMENTS SIGNED BY THE PARTIES, THE SERVICES, CONTENT, AND/OR PRODUCTS ON THIS SITE ARE PROVIDED "AS-IS", AND NEITHER WE NOR ANY OF OUR LICENSORS MAKE ANY REPRESENTATION OR WARRANTY WITH RESPECT TO SUCH PRODUCTS, SERVICES, AND/OR CONTENT. EXCEPT AS MAY BE PROVIDED IN ANY SEPARATE WRITTEN AGREEMENT SIGNED BY THE PARTIES OR SEPARATE AGREEMENT ORIGINATING FROM THIS SITE, THIS SITE AND ITS LICENSORS SPECIFICALLY DISCLAIM, TO THE FULLEST EXTENT PERMITTED BY LAW, ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, RELATING TO THIS SITE OR PRODUCTS, SERVICES AND/OR CONTENT ACQUIRED FROM THIS SITE, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, COMPLETENESS, TIMELINESS, CORRECTNESS, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE. THIS SITE AND ITS LICENSORS DO NOT REPRESENT OR WARRANT THAT THIS SITE, ITS PRODUCTS, SERVICES, AND/OR CONTENT: (A) WILL BE SECURE, TIMELY, UNINTERRUPTED OR ERROR-FREE OR OPERATE IN COMBINATION WITH ANY OTHER HARDWARE, SOFTWARE, SYSTEM OR DATA, OR (B) WILL MEET YOUR REQUIREMENTS OR EXPECTATIONS. THESE DISCLAIMERS CONSTITUTE AN ESSENTIAL PART OF THIS AGREEMENT. NO PURCHASE OR USE OF THE ITEMS OFFERED BY THIS SITE IS AUTHORIZED HEREUNDER EXCEPT UNDER THESE DISCLAIMERS. IF IMPLIED WARRANTIES MAY NOT BE DISCLAIMED UNDER APPLICABLE LAW, THEN ANY IMPLIED WARRANTIES ARE LIMITED IN DURATION TO THE PERIOD REQUIRED BY APPLICABLE LAW. SOME STATES OR JURISDICTIONS DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY MAY LAST, SO THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU. 31 |
    14. 32 |
    15. Limitation of Liability. IN NO EVENT SHALL THIS SITE AND/OR ITS LICENSORS BE LIABLE TO ANYONE FOR ANY DIRECT, INDIRECT, PUNITIVE, SPECIAL, EXEMPLARY, INCIDENTAL, CONSEQUENTIAL OR OTHER DAMAGES OF ANY TYPE OR KIND (INCLUDING LOSS OF DATA, REVENUE, PROFITS, USE OR OTHER ECONOMIC ADVANTAGE) ARISING OUT OF, OR IN ANY WAY CONNECTED WITH THIS SITE, ITS PRODUCTS, SERVICES, AND/OR CONTENT, ANY INTERRUPTION, INACCURACY, ERROR OR OMISSION, REGARDLESS OF CAUSE, EVEN IF THIS SITE OR OUR LICENSORS HAVE BEEN PREVIOUSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 33 |
    16. 34 |
    17. Links to This Site. We grant to you a limited, revocable, and nonexclusive right to create a hyperlink to this site provided that the link does not portray us or our products or services in a false, misleading, derogatory, or offensive matter. You may not use any logo, trademark, or tradename that may be displayed on this site or other proprietary graphic image in the link without our prior written consent. 35 |
    18. 36 |
    19. Links to Third Party Websites. We do not review or control third party websites that link to or from this site, and we are not responsible for their content, and do not represent that their content is accurate or appropriate. Your use of any third party site is on your own initiative and at your own risk, and may be subject to the other sites’ terms of use and privacy policy. 37 |
    20. 38 |
    21. Participation In Promotions of Advertisers. You may enter into correspondence with or participate in promotions of advertisers promoting their products, services or content on this site. Any such correspondence or participation, including the delivery of and the payment for products, services or content, are solely between you and each such advertiser. 39 |
    22. 40 |
    23. Arbitration. Except for actions to protect intellectual property rights and to enforce an arbitrator's decision hereunder, all disputes, controversies, or claims arising out of or relating to this Agreement or a breach thereof shall be submitted to and finally resolved by arbitration under the rules of the American Arbitration Association ("AAA") then in effect. There shall be one arbitrator, and such arbitrator shall be chosen by mutual agreement of the parties in accordance with AAA rules. The arbitration shall take place in San Francisco, California, USA, and may be conducted by telephone or online. The arbitrator shall apply the laws of the State of California, USA to all issues in dispute. The controversy or claim shall be arbitrated on an individual basis, and shall not be consolidated in any arbitration with any claim or controversy of any other party. The findings of the arbitrator shall be final and binding on the parties, and may be entered in any court of competent jurisdiction for enforcement. Enforcements of any award or judgment shall be governed by the United Nations Convention on the Recognition and Enforcement of Foreign Arbitral Awards. Should either party file an action contrary to this provision, the other party may recover attorney's fees and costs up to $1000.00. 41 |
    24. 42 |
    25. Jurisdiction And Venue. The courts of San Mateo County in the State of California, USA and the nearest U.S. District Court shall be the exclusive jurisdiction and venue for all legal proceedings that are not arbitrated under these Terms of Use. 43 |
    26. 44 |
    27. Controlling Law. This Agreement shall be construed under the laws of the State of California, USA, excluding rules regarding conflicts of law. The application the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. 45 |
    28. 46 |
    29. Onward Transfer of Personal Information Outside Your Country of Residence. Any personal information which we may collect on this site will be stored and processed in our servers located only in the United States. If you reside outside the United States, you consent to the transfer of personal information outside your country of residence to the United States. 47 |
    30. 48 |
    31. Force Majeure. We shall not be liable for damages for any delay or failure of delivery arising out of causes beyond our reasonable control and without our fault or negligence, including, but not limited to, Acts of God, acts of civil or military authority, fires, riots, wars, embargoes, Internet disruptions, hacker attacks, or communications failures. 49 |
    32. 50 |
    33. Privacy. Please review this site's Privacy Policy which also governs your visit to this site. Our Privacy Policy is always accessible on our site's home page. 51 |
    34. 52 |
    53 |

    Material Modifications Since August 18, 2010: none.

    54 |
    55 |
    56 |
    57 |
    58 |
    59 | 60 | 61 | -------------------------------------------------------------------------------- /files/left_tabs/mcOverview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 |
    9 |
    10 |

    Overview

    11 |
    12 |
    13 |

    AccDC is a free development resource for international businesses, organizations, and academic institutions.

    14 |

    AccDC powers Accessible Innovation within web technologies.

    15 |

    "Accessible Innovation" refers to the creation of technologies that include Accessibility as a core platform feature of development.

    16 |
    17 | 18 |

    The AccDC API is a JavaScript based Dynamic Content Management System that automates the 19 | rendering of dynamic content to ensure accessibility for screen reader and keyboard only users.

    20 |

    The AccDC Technical Style Guide is designed to provide reliable 21 | and consistent interaction designs that are accessible to the highest percentage of people possible, 22 | and to establish a baseline for Functional Accessibility that can be utilized, built upon, 23 | studied, and tested against.

    24 |

    AccDC Bootstrap is an HTML parser that renders advanced, 25 | accessible interactive controls using semantic HTML markup.

    26 |

    AccDC API Mirrors:

    27 | 33 | 34 |
    35 |

    How It Works

    36 |
    37 |
    38 |

    At its core, AccDC is a JavaScript based API that manages dynamic content objects, called AccDC Objects, 39 | by automating accessible rendering processes for Rich Internet Applications.

    40 |

    This works by acting as a standalone interface, or as a scaled down plugin for jQuery, Dojo, 41 | or MooTools, that extends the functionality of each by tying into their respective rendering processes.

    42 |

    This normalization makes it possible to share UI components built using AccDC Objects between 43 | jQuery, Dojo, and MooTools, without requiring modification, since all such functionality ties 44 | into the same AccDC API commands.

    45 |

    The AccDC API manages all of the following rendering processes separately within each AccDC Object instance:

    46 | 47 |
      48 |
    • Script flow control for sequential processing
    • 49 |
    • Rendering of HTML markup, DOM nodes, or content from AJAX queries
    • 50 |
    • Parent, child, and sibling relationship mapping
    • 51 |
    • Auto-positioning of layered content relative to specific DOM nodes
    • 52 |
    • CSS styling overrides for full visual customization
    • 53 |
    • Content overrides for full language customization
    • 54 |
    • Handler overrides for full event customization
    • 55 |
    • Rendering overrides for full behavior customization
    • 56 |
    • Global and sibling overrides for property and method prototyping
    • 57 |
    • Load latency for full programmatic configuration before rendering
    • 58 |
    59 | 60 |

    Additionally, the AccDC API automates all of the following accessibility features for rendered 61 | dynamic content through AccDC Objects:

    62 | 63 |
      64 |
    • Configurable beginning and ending boundary information for screen reader users
    • 65 |
    • Configurable ARIA heading structures for screen reader users
    • 66 |
    • Configurable dynamic Close link for screen reader and keyboard only users
    • 67 |
    • Configurable DOM insertion to manage reading order for screen reader users
    • 68 |
    • Configurable auto-focus positioning for screen reader and keyboard only users
    • 69 |
    • Configurable role and state information for screen reader users
    • 70 |
    • Invokable or automatic announcement of text or DOM node content for screen reader users
    • 71 |
    72 | 73 |

    View the Core API tab for a comprehensive listing of AccDC API properties and methods.

    74 | 75 |

    To learn how to set up AccDC within a working code environment, view the 76 | AccDC Technical Style Guide.

    77 | 78 |
    79 | 80 | 81 |
    82 |

    Downloads

    83 |
    84 | 85 |
    86 |
      87 |
    • Browse All 88 | WhatSock Projects on GitHub 89 |
    • 90 |
    • The AccDC API (Standalone) 91 | [ GitHub | 92 | Zip ] 93 |
    • 94 |
    • The AccDC API (for jQuery) 95 | [ GitHub | 96 | Zip ] 97 |
    • 98 |
    • The AccDC API (for Dojo) 99 | [ GitHub | 100 | Zip ] 101 |
    • 102 |
    • The AccDC API (for MooTools) 103 | [ GitHub | 104 | Zip ] 105 |
    • 106 |
    • AccDC Bootstrap (Standalone) 107 | [ GitHub | 108 | Zip ] 109 |
    • 110 |
    • AccDC Bootstrap (for jQuery) 111 | [ GitHub | 112 | Zip ] 113 |
    • 114 |
    • AccDC Bootstrap (for Dojo) 115 | [ GitHub | 116 | Zip ] 117 |
    • 118 |
    • AccDC Bootstrap (for MooTools) 119 | [ GitHub | 120 | Zip ] 121 |
    • 122 |
    • The AccDC Technical Style Guide and Coding Arena (for AccDC Standalone and jQuery) 123 | [ GitHub | 124 | Zip ] 125 |
    • 126 |
    • The AccDC Technical Style Guide and Coding Arena (for Dojo) 127 | [ GitHub | 128 | Zip ] 129 |
    • 130 |
    • The AccDC Technical Style Guide and Coding Arena (for MooTools) 131 | [ GitHub | 132 | Zip ] 133 |
    • 134 |
    135 |
    136 |
    137 | 138 | 139 |
    140 | 141 | 173 | 174 |
    175 | 176 |
    177 | 178 | 179 | -------------------------------------------------------------------------------- /js/ready.js: -------------------------------------------------------------------------------- 1 | /* ! 2 | Setup script to register all top - level AccDC Object declarations. 3 | */ 4 | 5 | // Enable AccDC API debugging mode. 6 | // When set to true, an alert will appear when required properties are missing or when rendering issues break the shell structure of AccDC Objects. 7 | // When set to false, no alerts will appear. (default) 8 | $A.fn.debug = true; 9 | 10 | // Add conditionally displayed AccDC Objects 11 | 12 | /* ! 13 | IMPORTANT : Note that the first argument of $A is an array of AccDC Object declarations. 14 | If an instance of an AccDC object is passed as the first argument instead (see other declarations below), the "children" and "parent" properties will be populated with relevant instances. E.G. 15 | dc.children = An array of AccDC Objects 16 | dc.parent = the parent AccDC Object instance 17 | (Both are null by default if omitted) 18 | As implemented below, "dc" refers to the current AccDC Object instance, and is synonymous with "this" 19 | so that dc.parent is the same as this.parent. 20 | If no parent AccDC Object is specified, such as $A( [ {id : 'AccDCObj'} ] ) where the first argument is an array of object declarations, 21 | all such AccDC Objects will be registered as top - level objects with this.parent set to null. 22 | */ 23 | 24 | // Create AccDC Dynamic Content Object declarations for all AccDC Tab Controls 25 | $A( 26 | [ 27 | // Overview tab 28 | { 29 | id: "mcOverview", 30 | role: "Overview", 31 | trigger: "#tab1", 32 | source: "files/left_tabs/mcOverview.html #mcOverview", 33 | autoStart: true, 34 | forceFocus: false, 35 | // Run script only once before the Overview tab is first opened 36 | runOnceBefore: function(dc) { 37 | $A.query("nav button, footer button", function() { 38 | $A.setAttr(this, "aria-expanded", "false"); 39 | }); 40 | $A.bind("nav button, footer button", "click", function(ev) { 41 | $A.query("nav button, footer button", function() { 42 | $A.setAttr(this, "aria-expanded", "false"); 43 | }); 44 | $A.setAttr(this, "aria-expanded", "true"); 45 | }); 46 | 47 | $A.setAttr(dc.triggerObj, "aria-expanded", "true"); 48 | 49 | // Setup Back To Top link functionality 50 | $A.bind("p.topLink a", "click", function(ev) { 51 | $A.setFocus($A.query("h1")[0]); 52 | ev.preventDefault(); 53 | }); 54 | 55 | // Setup skip link functionality 56 | $A.bind("#skipLink", "click", function(ev) { 57 | $A.setFocus($A.getEl("wrapper")); 58 | ev.preventDefault(); 59 | }); 60 | }, 61 | runAfter: function(dc) { 62 | createHeaderNav(); 63 | 64 | $A.bind("#tab4sub", "click", function(ev) { 65 | $A.trigger($A.getEl("tab4"), "click"); 66 | ev.preventDefault(); 67 | }); 68 | 69 | // Announce "Ready" to screen reader users 70 | "Ready".announce(); 71 | 72 | if (!dc.forceFocus) dc.forceFocus = true; 73 | } 74 | }, 75 | 76 | // Live Demo tab 77 | { 78 | id: "mcDemo", 79 | role: "Live Demo", 80 | trigger: "#tab3", 81 | source: "files/left_tabs/mcDemo.html #mcDemo", 82 | // Run external script after the object has been rendered 83 | runJSAfter: [ 84 | // Import script to enable Live Demo functionality 85 | "js/demo.js" 86 | ], 87 | // Run script after the object has been rendered 88 | runAfter: function(dc) { 89 | createHeaderNav(); 90 | 91 | // Asynchronously load the background image for the drag / drop section 92 | $A.css( 93 | $A.query("div.dndContainer")[0], 94 | "background", 95 | 'url("img/planets/stars.jpg") black repeat' 96 | ); 97 | 98 | "Ready".announce(); 99 | } 100 | }, 101 | 102 | // Core API tab 103 | { 104 | id: "mcCore", 105 | role: "Core API", 106 | trigger: "#tab4", 107 | // Set Mode to render literal HTML 108 | mode: 0, 109 | // Start with an empty container object 110 | source: "", 111 | // Run internal script after the object is rendered 112 | runAfter: function(dc) { 113 | // Save a reference to the current dc object 114 | var dcp = dc; 115 | 116 | // Add an object to hold key / value pairs 117 | dc.core = { 118 | s1: "coreS1", 119 | s2: "coreS2", 120 | s3: "coreS3", 121 | s4: "coreS4", 122 | s5: "coreS5", 123 | s6: "coreS6", 124 | s7: "coreS7", 125 | s8: "coreS8", 126 | s9: "coreS9" 127 | }; 128 | 129 | // Create an array to hold a series of AccDC Objects 130 | var AccDC_Sections = []; 131 | 132 | // Loop through the "core" object and add section containers 133 | for (i in dc.core) { 134 | var d = $A.createEl("div", { 135 | id: dc.core[i] 136 | }); 137 | 138 | dc.containerDiv.appendChild(d); 139 | AccDC_Sections.push({ 140 | // Set the ID to match the ID attribute of the container object 141 | id: dc.core[i], 142 | // Set the Target Zone as the dynamically created container object 143 | isStatic: "#" + dc.core[i], 144 | // Set the source as content from the related external file 145 | source: 146 | "files/core/" + i + ".htm div.apiDocumentationContentSection" 147 | }); 148 | // End of the "core" object loop 149 | } 150 | 151 | // Add an internal runAfter function to the last AccDC Object declared in the "core" object loop 152 | AccDC_Sections[AccDC_Sections.length - 1].runAfter = function(dc) { 153 | var links = {}; 154 | 155 | $A.query("dt.heading a", function() { 156 | var a = this; 157 | a.id = "subH" + $A.genId(); 158 | links[a.id] = false; 159 | $A.setAttr(a, "aria-expanded", "false"); 160 | $A.bind(a, "click", function(ev) { 161 | if (links[this.id]) { 162 | links[this.id] = false; 163 | $A.addClass( 164 | $A.query("dd.detail", getClosest(this, "dl"))[0], 165 | "hidden" 166 | ); 167 | $A.setAttr(this, "aria-expanded", "false"); 168 | } else { 169 | links[this.id] = true; 170 | $A.remClass( 171 | $A.query("dd.detail", getClosest(this, "dl"))[0], 172 | "hidden" 173 | ); 174 | $A.setAttr(this, "aria-expanded", "true"); 175 | } 176 | // For AT users, set focus back to the triggering element 177 | this.focus(); 178 | ev.preventDefault(); 179 | }); 180 | }); 181 | 182 | $A.bind("#ph2 > a.expand", "click", function(ev) { 183 | "Please wait".announce(); 184 | $A.query("dd.detail", function(j, p) { 185 | $A.remClass(p, "hidden"); 186 | $A.query("a.toggle", p.parentNode, function() { 187 | $A.setAttr(this, "aria-expanded", "true"); 188 | }); 189 | }); 190 | // Refocus to the triggering element 191 | this.focus(); 192 | 193 | for (link in links) links[link] = true; 194 | "Expanded".announce(); 195 | ev.preventDefault(); 196 | }); 197 | 198 | $A.bind("#ph2 > a.collapse", "click", function(ev) { 199 | "Please wait".announce(); 200 | $A.query("dd.detail", function(j, p) { 201 | $A.addClass(p, "hidden"); 202 | $A.query("a.toggle", p.parentNode, function() { 203 | $A.setAttr(this, "aria-expanded", "false"); 204 | }); 205 | }); 206 | // Refocus to the triggering element 207 | this.focus(); 208 | 209 | for (link in links) links[link] = false; 210 | "Collapsed".announce(); 211 | ev.preventDefault(); 212 | }); 213 | 214 | createHeaderNav(); 215 | "Ready".announce(); 216 | 217 | // End of internal runAfter function added to the last object declared in the "core" object loop 218 | }; 219 | 220 | // Declare a key / value map to be merged with all AccDC Objects in the AccDC_Sections array 221 | var overrides = { 222 | autoStart: true, 223 | role: "Core API Section", 224 | mode: 1, 225 | showHiddenClose: false, 226 | showHiddenBounds: false, 227 | allowMultiple: true, 228 | triggerObj: dc.triggerObj 229 | }; 230 | 231 | // Register all previously declared AccDC Objects, merge overrides, skip execution delay, and disable Async processing to preserve order 232 | $A(dc, AccDC_Sections, overrides, null, true); 233 | } 234 | }, 235 | 236 | // Contact Us tab 237 | { 238 | id: "mcContact", 239 | role: "Contact Us", 240 | trigger: "#tab5", 241 | source: "files/left_tabs/mcContact.html #mcContact", 242 | runOnceAfter: function(dc) { 243 | $A(dc, [ 244 | { 245 | id: "cuStatus", 246 | role: "Status", 247 | showHiddenClose: false, 248 | returnFocus: false, 249 | allowReopen: true, 250 | isStatic: "#contactUsFrm", 251 | prepend: true, 252 | autoFix: 9, 253 | cssObj: { 254 | width: "70%", 255 | zIndex: 100, 256 | position: "static" 257 | }, 258 | className: "cuStatus", 259 | showHiddenBounds: false, 260 | runDuring: function(dc) { 261 | $A.setAttr(dc.accDCObj, { 262 | role: "alertdialog", 263 | "aria-label": "Status", 264 | "aria-describedby": dc.containerDivId 265 | }); 266 | }, 267 | runAfter: function(dc) { 268 | $A.getEl("okBtn").focus(); 269 | $A.bind("#okBtn", { 270 | click: function(ev) { 271 | var lis = $A.query("#sMsg ol li"); 272 | 273 | if (lis.length) 274 | $A.getEl("contactUsFrm")[ 275 | lis[0].innerText || lis[0].textContent 276 | ].focus(); 277 | dc.close(); 278 | ev.preventDefault(); 279 | }, 280 | keydown: function(ev) { 281 | var k = ev.which || ev.keyCode; 282 | 283 | if (k == 13 || k == 32) { 284 | $A.trigger(this, "click"); 285 | } 286 | ev.preventDefault(); 287 | } 288 | }); 289 | } 290 | } 291 | ]); 292 | }, 293 | runAfter: function(dc) { 294 | createHeaderNav(); 295 | 296 | // Make the textarea automatically expandable 297 | elastic($A.getEl("cufm2")); 298 | 299 | $A.bind("#" + dc.containerId + " form", "submit", function(ev) { 300 | ev.preventDefault(); 301 | // Check for missing fields 302 | var errList = []; 303 | $A.query(".required", this, function() { 304 | if (!this.value) errList.push(escape(this.name)); 305 | }); 306 | 307 | if (errList.length) { 308 | var status = $A.reg.cuStatus; 309 | status.source = 310 | '

    Error: Missing Required Fields

    1. ' + 311 | errList.join("
    2. ") + 312 | '

    '; 313 | status.open(); 314 | } else $A.getScript("http://whatsock.com/mail/submit.php?" + serialize(this)); 315 | }); 316 | 317 | "Ready".announce(); 318 | } 319 | }, 320 | 321 | // About tab 322 | { 323 | id: "mcAbout", 324 | role: "About Us", 325 | trigger: "#tab6", 326 | source: "files/policy_tabs/mcAbout.html #mcAbout", 327 | runAfter: function(dc) { 328 | createHeaderNav(); 329 | "Ready".announce(); 330 | } 331 | }, 332 | 333 | // Legal tab 334 | { 335 | id: "mcLegal", 336 | role: "Legal-FTC Guides Disclosures", 337 | trigger: "#tab7", 338 | source: "files/policy_tabs/mcLegal.html #mcLegal", 339 | runAfter: function(dc) { 340 | createHeaderNav(); 341 | "Ready".announce(); 342 | } 343 | }, 344 | 345 | // Terms tab 346 | { 347 | id: "mcTerms", 348 | role: "Terms of Use", 349 | trigger: "#tab8", 350 | source: "files/policy_tabs/mcTerms.html #mcTerms", 351 | runAfter: function(dc) { 352 | createHeaderNav(); 353 | "Ready".announce(); 354 | } 355 | }, 356 | 357 | // Privacy tab 358 | { 359 | id: "mcPrivacy", 360 | role: "Privacy Policy", 361 | trigger: "#tab9", 362 | source: "files/policy_tabs/mcPrivacy.html #mcPrivacy", 363 | runAfter: function(dc) { 364 | createHeaderNav(); 365 | "Ready".announce(); 366 | } 367 | } 368 | ], 369 | // Declare all key / value map overrides to be merged with each AccDC Tab Control in the prior array 370 | { 371 | bind: "click", 372 | isStatic: "#mContent", 373 | isTab: true, 374 | // Clear default text for tab role and state properties in favor of ARIA button attributes 375 | tabRole: "", 376 | tabState: "", 377 | mode: 1, 378 | showHiddenClose: false, 379 | showHiddenBounds: false, 380 | // Move focus to the beginning of the new content when rendered 381 | forceFocus: true, 382 | runBefore: function(dc) { 383 | // Check if other tabs are loading and cancel current if so 384 | for (var i = 0; i < dc.siblings.length; i++) { 385 | if (dc.siblings[i].loading) return (dc.cancel = true); 386 | } 387 | 388 | "Please wait".announce(); 389 | 390 | // Switch classes 391 | $A.remClass($A.query("li.active, li.policy.active"), "active"); 392 | $A.addClass(dc.triggerObj.parentNode, "active"); 393 | } 394 | }, 395 | true 396 | ); 397 | 398 | $A.bind(window, "load", function() { 399 | var verNode = $A.getEl("AccDCCurrentVerS1"); 400 | 401 | if (verNode && $A.version) { 402 | verNode.innerHTML = $A.version.announce(); 403 | } 404 | 405 | if (window.navigator.onLine) 406 | // Check for updates 407 | $A.getScript("http://api.whatsock.com/accdc-jquery-updates.js"); 408 | }); 409 | -------------------------------------------------------------------------------- /img/whatsock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 13 | 15 | 18 | 20 | 25 | 29 | 32 | 34 | 35 | 39 | 41 | 44 | 47 | 51 | 52 | 55 | 59 | 61 | 63 | 65 | 69 | 73 | 78 | 79 | 83 | 87 | 90 | 92 | 97 | 99 | 101 | 106 | 109 | 111 | 114 | 116 | 117 | 121 | 123 | 124 | 125 | 131 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /files/policy_tabs/mcPrivacy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 |
    6 |
    7 |
    8 |
    9 |

    Privacy Policy

    10 |
    11 |
    12 |

    By accessing or otherwise using this site (WhatSock.com), you agree to be bound contractually by this Privacy Policy.

    13 |

    Effective Date: August 18, 2010

    14 |

    To review material modifications and their effective dates scroll to the bottom of the page.

    15 |
      16 |
    1. Privacy Statement; Collection of Personal Information. 17 |
        18 |
      1. WhatSock owns and operates this website business. All references to "we", "us", this "website" or this "site" shall be construed to mean WhatSock. 19 |
      2. 20 |
      3. We understand that visitors to this website are concerned about the privacy of information. The following describes our privacy policy regarding information, including personal information, that we collect through this website. 21 |
      4. 22 |
      23 |
    2. 24 |
    3. Modification of Privacy Policy. We reserve the right to modify this Privacy Policy at any time, and without prior notice, by posting an amended Privacy Policy that is always accessible by clicking on the "Privacy Policy" link on this site's home page. Your continued use of this site indicates your acceptance of the amended Privacy Policy. You should check the Privacy Policy through this link periodically for modifications by clicking on the link provided near the top of the Privacy Policy for a listing of material modifications and their effective dates. Regarding personal information, if any modifications are materially less restrictive on our use or disclosure of the personal information previously disclosed by you, we will obtain your consent before implementing such revisions with respect to such information. 25 |
    4. 26 |
    5. Collection of Anonymous, Passive Information. We reserve the right to monitor your use of this site. As you navigate through this site, certain anonymous information may be passively collected (that is, gathered without your actively providing the information) using various technologies, such as cookies, Internet tags or web beacons, and navigational data collection (log files, server logs, clickstream). The following is a listing and a brief explanation of passive information collection methodologies which we may use from time to time to better understand how this site is being used. 27 |
        28 |
      1. A "cookie" is a text file that this site sends to your browser in the form of a text file The information generated by the cookie about your use of this site (including your IP address) will be transmitted to and stored. Most browsers automatically accept cookies, but they usually can be modified to decline cookies if you prefer; however, certain features of this site might not work without cookies. 29 |
      2. 30 |
      3. "Session" cookies are temporary bits of information that are used to improve navigation, block visitors from providing information where inappropriate (the site "remembers" previous entries of country of origin that were outside the specified parameters and blocks subsequent changes), and collect aggregate statistical information on the site. They are erased once you exit your Web browser or otherwise turn off your computer. 31 |
      4. 32 |
      5. "Persistent" cookies are more permanent bits of information that are placed on the hard drive of your computer and stay there unless you delete the cookie. Persistent cookies store information on your computer for a number of purposes, such as retrieving certain information you have previously provided, helping to determine what areas of the site you may find most valuable, and customizing the site based on your preferences on an ongoing basis. Persistent cookies placed by this site in your computer do not hold personal information. 33 |
      6. 34 |
      7. You can set your browser to accept all cookies, to reject all cookies, or to notify you whenever a cookie is offered so that you can decide each time whether to accept it. To learn more about cookies and how to specify your preferences, please search for "cookie" in the "Help" portion of your browser. 35 |
      8. 36 |
      9. An Internet Protocol (IP) address is a number assigned to your computer by your Internet service provider so you can access the Internet and is generally considered to be non-personally identifiable information, because in many cases an IP address is dynamic (changing each time you connect to the Internet), rather than static (unique to a particular user's computer). The IP address can be used to diagnose problems with a server, report aggregate information, determine the fastest route for your computer to use in connecting to a site, and administer and improve the site. 37 |
      10. 38 |
      11. "Internet tags" (also known as Web Beacons, single-pixel GIFs, clear GIFs, invisible GIFs, and 1-by-1 GIFs) tell the website server information such as the IP address and browser type related to the visitor's computer. Tags may be placed both on online advertisements that bring people to the site and on different pages of the site. Such tags indicate how many times a page is opened and which information is consulted. 39 |
      12. 40 |
      13. "Navigational data" (log files, server logs, and clickstream data) are used for system management, to improve the content of the site, market research purposes, and to communicate information to visitors. 41 |
      14. 42 |
      43 |
    6. 44 |
    7. Use and Sharing of Anonymous, Passive Information. This site may make full use of passively collected anonymous information, including without limitation the right to use such information to provide better service to site visitors, customize the site based on your preferences, compile and analyze statistics and trends, and otherwise administer and improve this site for your use. We reserve the right to share this anonymous, passive information in aggregated form. 45 |
    8. 46 |
    9. Use of 3rd Party Cookies. We reserve the right to use web analytics services provided by third parties. These services use 3rd party cookies to collect anonymous, passive information about your use of this site (see explanation of cookies in Collection of Anonymous, Passive Information above). We use this information for the purpose of evaluating your use of this site, compiling reports on website activity, and providing other services. These web analytics services may also transfer this information to third parties where required to do so by law, or where such third parties process the information on the service's behalf. 47 |
    10. 48 |
    11. Collection of Personal Information; Categories. 49 |
        50 |
      1. We will ask you for personal information when you sign up for any specific benefit or purpose that requires registration. Personal information that we collect may vary with each registration, and it may include one or more of the following categories: name, physical address, an email address, and phone number. 51 |
      2. 52 |
      3. We do NOT tie or link your personal information to anonymous, passive information with persistent identifiers. For example, we would not tie or link your email address (personal information) with information collected by a cookie regarding the length of time you visit our site anonymously. 53 |
      4. 54 |
      55 |
    12. 56 |
    13. Use And Sharing of Personal Information: General Policy And Exceptions. Our general policy (subject to the exceptions listed below) is that we will use your personal information only for: the performance of the services or transaction for which it was given, our private, internal reporting for this site, and security assessments for this site, and we will not share, sell, or rent your personal information to others. The only exceptions to this general policy: (i) are described in the subsections below, and (ii) if you explicitly approve through our site. 57 |
        58 |
      1. Affiliates And Service Providers. We reserve the right to provide such information to our affiliates or subsidiaries, or trusted service providers for the purpose of hosting our servers or processing or archiving personal information for us. We require that these parties agree to privacy and security safeguards for this information that are consistent with this Privacy Policy. 59 |
      2. 60 |
      3. Acquisition; Bankruptcy. In the event that we are acquired by or merged with a third party entity, or if we sell this website business or a line of business from this website, we reserve the right to transfer such information as part of such merger, acquisition, sale, or other change of control. In the unlikely event of our bankruptcy, insolvency, reorganization, receivership, or assignment for the benefit of creditors, or the application of laws or equitable principles affecting creditors' rights generally, we reserve the right to transfer such information to protect our rights or as required by law. 61 |
      4. 62 |
      5. Enforcement; Legal Process. We reserve the right to transfer such information if we have a good faith belief that access, use, preservation or disclosure of such information is reasonably necessary (i) to satisfy any applicable law, regulation, legal process or enforceable governmental request, or (ii) to investigate or enforce violations of our rights or the security of this site. 63 |
      6. 64 |
      65 |
    14. 66 |
    15. Onward Transfer of Personal Information Outside Your Country of Residence. Any personal information which we may collect on this site will be stored and processed in our servers located only in the United States. By using this site, if you reside outside the United States, you consent to the transfer of personal information outside your country of residence to the United States. 67 |
    16. 68 |
    17. Security of Personal Information. We follow reasonable and appropriate industry standards to protect your personal information and data. Unfortunately, no data transmission over the Internet or method of data storage can be guaranteed 100% secure. Therefore, while we strive to protect your personal information by following generally accepted industry standards, we cannot ensure or warrant the absolute security of any information you transmit to us or archive at this site. 69 |
    18. 70 |
    19. Changing And Updating Personal Information. Upon request, we will permit you to request or make changes or updates to your personal information for legitimate purposes. We request identification prior to approving such requests. We reserve the right to decline any requests that are unreasonably repetitive or systematic, require unreasonable time or effort of our technical or administrative personnel, or undermine the privacy rights of others. We reserve the right to permit you to access your personal information in any account you establish with this site for purposes of making your own changes or updates, and in such case, instructions for making such changes or updates will be provided where necessary. 71 |
    20. 72 |
    21. Email From This Site; Opt-Out Rights. If you supply us with your e-mail address you may receive periodic messages from us with information specific to the site and required for the normal functioning of the site as well as for new products or services or upcoming events. If you prefer not to receive periodic email messages, you may opt-out by following the instructions on the email. 73 |
    22. 74 |
    23. Links To Other Sites Including Online Ads. This site may contain links to other websites with whom we have a business relationship. These links may include online advertisements that we deem to be appropriate. Any information that you provide in the process of registration or purchase will be transferred to these sites. We have no responsibility or liability for the policies and practices of these sites; however, we have entered into agreements with these websites which provide that unless you specifically agree otherwise, they will use and share your personal information only for the purpose of providing or fulfilling your request for products or services. You should be careful to review any privacy policies posted on any of these sites before providing information to them. 75 |
    24. 76 |
    25. Children's Online Policy. We are committed to preserving online privacy for all of its website visitors, including children. This site is a general audience site. Consistent with the Children's Online Privacy Protection Act (COPPA), we will not knowingly collect any information from, or sell to, children under the age of 13. If you are a parent or guardian who has discovered that your child under the age of 13 has submitted his or her personally identifiable information without your permission or consent, we will remove the information from our active list, at your request. To request the removal of your child's information, please contact our site as provided below under "Contact Us", and be sure to include in your message the same login information that your child submitted. 77 |
    26. 78 |
    27. Email And Other Messages Through This Site; ECPA Notice. This site treats email messages and other electronic messages that are sent through this site and not viewable by others as confidential and private, except as required by law, including without limitation, the Electronic Communications Privacy Act of 1986, 18 U.S.C. Sections 2701-2711 (the "ECPA"). The ECPA permits this site's limited ability to intercept and/or disclose electronic messages, for example (i) as necessary to operate our system or to protect our rights or property, (ii) upon legal demand (court orders, warrants, subpoenas), or (iii) where we receive information inadvertently which appears to pertain to the commission of a crime. This site is not considered a "secure communications medium" under the ECPA. 79 |
    28. 80 |
    29. Contact Us. If you have any questions regarding this Privacy Policy, please contact the owner and operator of WhatSock.com using the form provided on the Contact Us page of this site. 81 |
    30. 82 |
    83 | 84 |

    Material Modifications Since August 18, 2010: none.

    85 |
    86 |
    87 |
    88 |
    89 |
    90 | 91 | 92 | -------------------------------------------------------------------------------- /js/css_drag_drop_module_for_standalone_dojo_and_mootools.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CSS Drag and Drop Module R2.5 for AccDC Standalone, Dojo, and MooTools 3 | (Requires AccDC API version 3.4+> ) 4 | Copyright 2010-2017 Bryan Garaventa (WhatSock.com) 5 | Part of AccDC, a Cross-Browser JavaScript accessibility API, distributed under the terms of the Open Source Initiative OSI - MIT License 6 | */ 7 | (function(){(function(a){(function(f){f.fn.drag=function(k,g,j){var i=typeof k=="string"?k:"",h=f.isFunction(k)?k:f.isFunction(g)?g:null;if(i.indexOf("drag")!==0){i="drag"+i}j=(k==h?g:j)||{};if(h){this.bind(i,j,h)}else{this.trigger(i)}return this};var c=f.event,b=c.special,e=b.drag={defaults:{which:1,distance:0,not:"input, textarea, select, button",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",livekey:"livedrag",add:function(i){var h=f.data(this,e.datakey),g=i.data||{};h.related+=1;if(!h.live&&i.selector){h.live=true;c.add(this,"draginit."+e.livekey,e.delegate)}f.each(e.defaults,function(j,k){if(g[j]!==undefined){h[j]=g[j]}})},remove:function(){f.data(this,e.datakey).related-=1},setup:function(){if(f.data(this,e.datakey)){return}var g=f.extend({related:0},e.defaults);f.data(this,e.datakey,g);c.add(this,"touchstart mousedown",e.init,g);if(this.attachEvent){this.attachEvent("ondragstart",e.dontstart)}},teardown:function(){if(f.data(this,e.datakey).related){return}f.removeData(this,e.datakey);c.remove(this,"touchstart mousedown",e.init);c.remove(this,"draginit",e.delegate);e.textselect(true);if(this.detachEvent){this.detachEvent("ondragstart",e.dontstart)}},init:function(l){if(e.touched){return}var g=l.data,k;if(l.which!=0&&g.which>0&&l.which!=g.which){return}if(g.not){var h=$A.query(g.not,l.target.parentNode);for(var j=0;j0||navigator.msMaxTouchPoints>0)?this:null;g.propagates=1;g.interactions=[e.interaction(this,g)];g.target=l.target;g.pageX=l.pageX;g.pageY=l.pageY;g.dragging=null;k=e.hijack(l,"draginit",g);if(!g.propagates){return}k=e.flatten(k);if(k&&k.length){g.interactions=[];f.each(k,function(){g.interactions.push(e.interaction(this,g))})}g.propagates=g.interactions.length;if(g.drop!==false&&b.drop){b.drop.handler(l,g)}e.textselect(false);if(e.touched){c.add(e.touched,"touchmove touchend",e.handler,g)}else{c.add(document,"mousemove mouseup",e.handler,g)}if(!e.touched||g.live){return false}},interaction:function(h,g){var i=$A.xOffset(h);return{drag:h,callback:new e.callback(),droppable:[],offset:i}},handler:function(h){var g=h.data;switch(h.type){case !g.dragging&&"touchmove":h.preventDefault();case !g.dragging&&"mousemove":if(Math.pow(h.pageX-g.pageX,2)+Math.pow(h.pageY-g.pageY,2)=f.left&&(g[0]||g.right)<=f.right&&(g[1]||g.top)>=f.top&&(g[1]||g.bottom)<=f.bottom)},modes:{intersect:function(g,f,h){return this.contains(h,[g.pageX,g.pageY])?1000000000:this.modes.overlap.apply(this,arguments)},overlap:function(g,f,h){return Math.max(0,Math.min(h.bottom,f.bottom)-Math.max(h.top,f.top))*Math.max(0,Math.min(h.right,f.right)-Math.max(h.left,f.left))},fit:function(g,f,h){return this.contains(h,f)?1:0},middle:function(g,f,h){return this.contains(h,[f.left+f.width*0.5,f.top+f.height*0.5])?1:0}},sort:function(g,f){return(f.winner-g.winner)||(g.index-f.index)},tolerate:function(r){var l,f,o,k,m,n,h,q=0,g,j=r.interactions.length,s=$A.pointerPos(c.event),t=[s.x,s.y],p=c.tolerance||c.modes[c.mode];do{if(g=r.interactions[q]){if(!g){return}g.drop=[];m=[];n=g.droppable.length;if(p){o=c.locate(g.proxy)}l=0;do{if(h=g.droppable[l]){k=e.data(h,c.datakey);f=k.location;if(!f){continue}k.winner=p?p.call(c,c.event,o,f):c.contains(f,t)?1:0;m.push(k)}}while(++l0){e.distance=a.drag.minDistance}a.drag.confineToN=null;c(a.accDCObj).drag("init",function(i,f){a.fn.isDragging=true;var k=$A.xOffset(this,false,false,true);$A.css(this,k);if(typeof a.drag.confineTo==="string"){a.drag.confineToN=$A.query(a.drag.confineTo)[0]}else{if(a.drag.confineTo&&a.drag.confineTo.nodeType===1){a.drag.confineToN=a.drag.confineTo}}if(a.drag.confineToN&&a.drag.confineToN.nodeType===1){d.nFixed=false;var g=$A.css(this,"position"),h=$A.css(a.drag.confineToN,"position"),j=$A.xOffset(a.drag.confineToN,true);if(g=="absolute"){d.dAbsolute=true;d.dFixed=d.dRelative=false}else{if(g=="relative"){d.dRelative=true;d.dAbsolute=d.dFixed=false}else{if(g=="fixed"){d.dFixed=true;d.dAbsolute=d.dRelative=false}}}if(d.dFixed&&h=="fixed"){d.nFixed=true;j=$A.xOffset(a.drag.confineToN)}f.limit=j}$A.setAttr(a.accDCObj,"aria-grabbed","true");if(a.drag.init&&typeof a.drag.init==="function"){a.drag.init.apply(this,[i,f,a])}}).drag("start",function(g,f){a.onDragStart.apply(this,[g,f,a])}).drag(function(h,f){if(d.y!=f.offsetY||d.x!=f.offsetX){if(a.drag.override&&typeof a.drag.override==="function"){a.drag.override.apply(this,[h,f,a])}else{if(a.drag.confineToN&&a.drag.confineToN.nodeType===1){var g=false,i=false,k={top:f.offsetY,left:f.offsetX},j=$A.xOffset(this,true);if(d.dFixed&&d.nFixed){j=$A.xOffset(this,false,false)}if(j.topf.limit.bottom){if(d.dAbsolute||(d.dFixed&&d.nFixed)){k.top=f.limit.bottom-j.height}else{i=true}}if(j.leftf.limit.right){if(d.dAbsolute||(d.dFixed&&d.nFixed)){k.left=f.limit.right-j.width}else{g=true}}if(!i){$A.xTop(this,k.top)}if(!g){$A.xLeft(this,k.left)}}else{if(typeof a.drag.maxX==="number"||typeof a.drag.maxY==="number"){if(typeof a.drag.maxX==="number"&&((f.originalXf.offsetX&&(f.originalX-f.offsetX)<=a.drag.maxX))){$A.xLeft(this,f.offsetX)}if(typeof a.drag.maxY==="number"&&((f.originalYf.offsetY&&(f.originalY-f.offsetY)<=a.drag.maxY))){$A.xTop(this,f.offsetY)}}else{$A.xTop(this,f.offsetY);$A.xLeft(this,f.offsetX)}}}a.onDrag.apply(this,[h,f,a]);d.y=f.offsetY;d.x=f.offsetX}}).drag("end",function(g,f){a.fn.isDragging=false;a.drag.y=f.offsetY;a.drag.x=f.offsetX;$A.setAttr(a.accDCObj,"aria-grabbed","false");a.onDragEnd.apply(this,[g,f,a])},e);if(a.dropTarget){c(a.dropTarget).drop("init",function(g,f){if(a.fn.isDragging){if(a.dropInit&&typeof a.dropInit==="function"){a.dropInit.apply(this,[g,f,a])}}}).drop("start",function(g,f){if(a.fn.isDragging){a.onDropStart.apply(this,[g,f,a])}}).drop(function(g,f){if(a.fn.isDragging){a.onDrop.apply(this,[g,f,a])}}).drop("end",function(g,f){if(a.fn.isDragging){a.onDropEnd.apply(this,[g,f,a])}});c.drop(a.drop);if(a.accDD.on){a.accDD.dropTargets=[];a.accDD.dropAnchors=[];a.accDD.dropLinks=[];$A.query(a.dropTarget,function(g,f){a.accDD.dropAnchors[g]=f;a.accDD.dropTargets[g]=f;$A.setAttr(f,"aria-dropeffect",a.accDD.dropEffect);a.accDD.dropLinks[g]=$A.createEl("a",{href:"#"},a.sraCSS,a.accDD.dragClassName,$A.createText(a.accDD.dragText+" "+a.role+" "+a.accDD.toText+" "+$A.getAttr(f,"data-label")));a.containerDiv.appendChild(a.accDD.dropLinks[g]);$A.bind(a.accDD.dropLinks[g],{focus:function(h){$A.css($A.sraCSSClear(this),{position:"relative",zIndex:1000},a.accDD.dragLinkStyle)},blur:function(h){$A.css(this,a.sraCSS)},click:function(h){if(!a.accDD.isDragging){a.accDD.isDragging=true;$A.css(this,a.sraCSS);$A.setAttr(a.accDCObj,"aria-grabbed","true");$A.announce(a.accDD.actionText);a.accDD.fireDrag.apply(a.accDCObj,[h,a]);a.accDD.fireDrop.apply(a.accDD.dropTargets[g],[h,a])}h.preventDefault()}})});$A.setAttr(a.accDCObj,"aria-grabbed","false")}}return b[a.indexVal]=a};$A.setDragAndDrop.unsetDrag=function(a,d,b,c){var a=b[a.indexVal];if(!a.closing&&!a.loaded){return a}$A.unbind(a.drag.handle?a.drag.handle:a.accDCObj,"draginit dragstart dragend drag");$A.remAttr(a.accDCObj,"aria-grabbed");if(a.dropTarget){if(d){$A.unbind(a.dropTarget,"dropinit dropstart dropend drop");$A.query(a.dropTarget,function(f,e){$A.remAttr(e,"aria-dropeffect")})}if(a.accDD.on){c.each(a.accDD.dropLinks,function(f,e){if(e.parentNode){e.parentNode.removeChild(e)}})}}a.fn.isDragSet=false;return b[a.indexVal]=a}})(); -------------------------------------------------------------------------------- /files/core/s9.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 |
    8 | 9 |
    10 |

    Misc

    11 |
    12 | 13 |
    14 |
    15 | $A.getEl() 16 |
    17 |
    18 |

    19 | The "$A.getEl()" method returns an element with a matching ID attribute. 20 |

    21 |
    22 | 30 |
    31 | 32 |
    33 |
    34 | $A.createEl() 35 |
    36 |
    37 |

    38 | The "$A.createEl()" method returns a newly created element. 39 |

    40 |
    41 | 67 |
    68 | 69 |
    70 |
    71 | $A.getAttr() 72 |
    73 |
    74 |

    75 | The "$A.getAttr()" method returns the value of an attribute on a DOM node. 76 |

    77 |
    78 | 86 |
    87 | 88 |
    89 |
    90 | $A.remAttr() 91 |
    92 |
    93 |

    94 | The "$A.remAttr()" method removes an attribute, or an array of attributes from a DOM node. 95 |

    96 |
    97 | 115 |
    116 | 117 |
    118 |
    119 | $A.setAttr() 120 |
    121 |
    122 |

    123 | The "$A.setAttr()" method sets an attribute, or a series of attributes on a DOM node. 124 |

    125 |
    126 | 144 |
    145 | 146 |
    147 |
    148 | $A.getText() 149 |
    150 |
    151 |

    152 | The "$A.getText()" method returns the textual content of any DOM node. 153 |

    154 |
    155 | 163 |
    164 | 165 |
    166 |
    167 | $A.inArray() 168 |
    169 |
    170 |

    171 | The "$A.inArray()" method returns the index value of a matching item within an array or string. 172 |

    173 |
    174 | 198 |
    199 | 200 |
    201 |

    Extensions

    202 |
    203 | 204 |
    205 |
    206 | $A.fn.globalDC 207 |
    208 |
    209 |

    210 | The "$A.fn.globalDC" object is merged with every AccDC Object, simulating a prototype where plugins and extensions can be globally added to each instance. 211 |

    212 |
    213 | 250 |
    251 | 252 |
    253 |
    254 | $A.globalDCMerge() 255 |
    256 |
    257 |

    258 | The "$A.globalDCMerge()" method manually merges the "$A.fn.globalDC" object with all previously instantiated AccDC Objects. 259 |

    260 |
    261 | 269 |
    270 | 271 |
    272 |

    Namespaces

    273 |
    274 | 275 |
    276 |
    277 | $A 278 |
    279 |
    280 |

    281 | "$A" is the global namespace for the AccDC API, which includes internal namespaces that should not be overwritten. 282 |

    283 |
    284 | 322 |
    323 | 324 |
    325 |
    326 | dc 327 |
    328 |
    329 |

    330 | "dc" refers to the current instance of any registered AccDC Object, which includes internal namespaces that should not be overwritten. 331 |

    332 |
    333 | 358 |
    359 |
    360 |
    361 | 362 |
    363 | 364 | 365 | -------------------------------------------------------------------------------- /files/core/s3.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | 8 |
    9 |
    10 |

    Behavior

    11 |
    12 | 13 |
    14 |
    15 | .open() 16 |
    17 |
    18 |

    19 | The ".open()" method manually opens an AccDC Object. 20 |

    21 |
    22 | 30 |
    31 | 32 |
    33 |
    34 | .close() 35 |
    36 |
    37 |

    38 | The ".close()" method manually closes an AccDC Object. 39 |

    40 |
    41 | 67 |
    68 | 69 |
    70 |
    71 | .allowMultiple 72 |
    73 |
    74 |

    75 | The ".allowMultiple" property determines if an AccDC Object will automatically be closed when another AccDC Object is opened. 76 |

    77 |
    78 | 111 |
    112 | 113 |
    114 |
    115 | .allowReopen 116 |
    117 |
    118 |

    119 | The ".allowReopen" property determines whether an AccDC Object can be repeatedly opened. 120 |

    121 |
    122 | 155 |
    156 | 157 |
    158 |
    159 | .isToggle 160 |
    161 |
    162 |

    163 | The ".isToggle" property specifies that an AccDC Object will toggle between open or closed when activated. 164 |

    165 |
    166 | 211 |
    212 | 213 |
    214 |
    215 | .isStatic 216 |
    217 |
    218 |

    219 | The "isStatic" property specifies a container element where an AccDC Object will be inserted. 220 |

    221 |
    222 | 266 |
    267 | 268 |
    269 |
    270 | .isTab 271 |
    272 |
    273 |

    274 | The "isTab" property specifies whether an AccDC Object is a tab control. 275 |

    276 |
    277 | 340 |
    341 | 342 |
    343 |
    344 | .autoStart 345 |
    346 |
    347 |

    348 | The "autoStart" property specifies that an AccDC Object will automatically open when registered. 349 |

    350 |
    351 | 383 |
    384 | 385 |
    386 |
    387 | $A.genId() 388 |
    389 |
    390 |

    391 | The "$A.genId()" method generates a unique ID timestamp. 392 |

    393 |
    394 | 402 |
    403 | 404 |
    405 |
    406 | $A.setFocus() 407 |
    408 |
    409 |

    410 | The ".$A.setFocus()" method manually sets keyboard focus on any non-focusable DOM node. 411 |

    412 |
    413 | 422 |
    423 |
    424 |
    425 | 426 |
    427 | 428 | 429 | -------------------------------------------------------------------------------- /css/global.css: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------------- 2 | WHATSOCKC AccDC 3 | 2015-2016 4 | -------------------------------------------------------------------- */ 5 | 6 | /* CSS index: 7 | RESET 8 | DEFAULT VALUES 9 | PAGE STRUCTURE 10 | FORMS 11 | NAVIGATION 12 | SPECIFICS 13 | PRINT STYLES 14 | MEDIA QUERIES 15 | */ 16 | 17 | /* ------------------------------ RESET ---------------------------- */ 18 | 19 | html, 20 | body, 21 | div, 22 | span, 23 | object, 24 | iframe, 25 | h1, 26 | h2, 27 | h3, 28 | h4, 29 | h5, 30 | h6, 31 | p, 32 | blockquote, 33 | pre, 34 | a, 35 | abbr, 36 | acronym, 37 | address, 38 | big, 39 | cite, 40 | code, 41 | del, 42 | dfn, 43 | em, 44 | font, 45 | img, 46 | ins, 47 | kbd, 48 | q, 49 | s, 50 | samp, 51 | small, 52 | strike, 53 | strong, 54 | sub, 55 | sup, 56 | tt, 57 | var, 58 | main, 59 | figure, 60 | dl, 61 | dt, 62 | dd, 63 | ol, 64 | ul, 65 | li, 66 | fieldset, 67 | form, 68 | label, 69 | legend, 70 | table, 71 | caption, 72 | tbody, 73 | tfoot, 74 | thead, 75 | tr, 76 | th, 77 | td { 78 | margin: 0; 79 | padding: 0; 80 | border: 0; 81 | } 82 | 83 | article, 84 | aside, 85 | details, 86 | figcaption, 87 | figure, 88 | footer, 89 | header, 90 | hgroup, 91 | main, 92 | menu, 93 | nav, 94 | section { 95 | display: block; 96 | } 97 | 98 | body { 99 | overflow-y: scroll; 100 | } 101 | 102 | /* Generated by Font Squirrel (http://www.fontsquirrel.com) on December 10, 2015 */ 103 | 104 | @font-face { 105 | font-family: "open_sansregular"; 106 | src: url("OpenSans-Regular-webfont.eot"); 107 | src: url("OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), 108 | url("OpenSans-Regular-webfont.woff") format("woff"), 109 | url("OpenSans-Regular-webfont.ttf") format("truetype"), 110 | url("OpenSans-Regular-webfont.svg#open_sansregular") format("svg"); 111 | font-weight: normal; 112 | font-style: normal; 113 | } 114 | 115 | @font-face { 116 | font-family: "open_sanslight"; 117 | src: url("OpenSans-Light-webfont.eot"); 118 | src: url("OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), 119 | url("OpenSans-Light-webfont.woff") format("woff"), 120 | url("OpenSans-Light-webfont.ttf") format("truetype"), 121 | url("OpenSans-Light-webfont.svg#open_sanslight") format("svg"); 122 | font-weight: normal; 123 | font-style: normal; 124 | } 125 | 126 | @font-face { 127 | font-family: "open_sansitalic"; 128 | src: url("OpenSans-Italic-webfont.eot"); 129 | src: url("OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"), 130 | url("OpenSans-Italic-webfont.woff") format("woff"), 131 | url("OpenSans-Italic-webfont.ttf") format("truetype"), 132 | url("OpenSans-Italic-webfont.svg#open_sansitalic") format("svg"); 133 | font-weight: normal; 134 | font-style: normal; 135 | } 136 | 137 | @font-face { 138 | font-family: "open_sansbold"; 139 | src: url("OpenSans-Bold-webfont.eot"); 140 | src: url("OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), 141 | url("OpenSans-Bold-webfont.woff") format("woff"), 142 | url("OpenSans-Bold-webfont.ttf") format("truetype"), 143 | url("OpenSans-Bold-webfont.svg#open_sansbold") format("svg"); 144 | font-weight: normal; 145 | font-style: normal; 146 | } 147 | 148 | @font-face { 149 | font-family: "antonregular"; 150 | src: url("anton-webfont.eot"); 151 | src: url("anton-webfont.eot?#iefix") format("embedded-opentype"), 152 | url("anton-webfont.woff") format("woff"), 153 | url("anton-webfont.ttf") format("truetype"), 154 | url("anton-webfont.svg#antonregular") format("svg"); 155 | font-weight: normal; 156 | font-style: normal; 157 | } 158 | 159 | /* --------------------------------------------------------------------------- */ 160 | /* ----------------------------- DEFAULT VALUES ------------------------------ */ 161 | /* --------------------------------------------------------------------------- */ 162 | 163 | body { 164 | font: 100%/1 open_sansregular, Frutiger, "Frutiger Linotype", Univers, Calibri, 165 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 166 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 167 | Helvetica, Arial, sans-serif; 168 | background-color: #2e3135; 169 | } 170 | 171 | h1 { 172 | font: normal 1em/1.2 antonregular, Frutiger, "Frutiger Linotype", Univers, 173 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 174 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 175 | "Helvetica Neue", Helvetica, Arial, sans-serif; 176 | text-transform: capitalize; 177 | text-align: left; 178 | color: #b8b7ab; 179 | padding: 0 2.5% 0 75px; 180 | margin-left: 2.5%; 181 | } 182 | h1 strong { 183 | display: block; 184 | position: relative; 185 | top: 0.2em; 186 | font: normal 235%/1.05 antonregular, Frutiger, "Frutiger Linotype", Univers, 187 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 188 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 189 | "Helvetica Neue", Helvetica, Arial, sans-serif; 190 | color: #63b7c2; 191 | margin-bottom: 0.5rem; 192 | } 193 | 194 | h2 { 195 | font: normal 2.5em/1.3 antonregular, Frutiger, "Frutiger Linotype", Univers, 196 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 197 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 198 | "Helvetica Neue", Helvetica, Arial, sans-serif; 199 | text-transform: uppercase; 200 | color: #2e3135; 201 | margin: 0 0 0.5em 0; 202 | } 203 | 204 | .hd h2 { 205 | margin: 1.5em 0 0.5em; 206 | } 207 | article > .hd h2, 208 | main > .hd h2 { 209 | margin: 0.5em 0; 210 | } 211 | 212 | h3 { 213 | font: normal 1.8em/1.3 antonregular, Frutiger, "Frutiger Linotype", Univers, 214 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 215 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 216 | "Helvetica Neue", Helvetica, Arial, sans-serif; 217 | text-transform: uppercase; 218 | color: #2e3135; 219 | margin: 1.5em 0 0.5em; 220 | } 221 | aside section h3 { 222 | margin: 0 0 0.5em; 223 | } 224 | 225 | h4 { 226 | font: normal 1.3em/1.3 open_sansbold, Frutiger, "Frutiger Linotype", Univers, 227 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 228 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 229 | "Helvetica Neue", Helvetica, Arial, sans-serif; 230 | color: #2e3135; 231 | margin: 1.5em 0 0.5em; 232 | } 233 | 234 | p, 235 | li, 236 | dt, 237 | dd { 238 | font-size: 0.9em; 239 | line-height: 1.45; 240 | } 241 | 242 | li li { 243 | font-size: 100%; 244 | } 245 | 246 | a, 247 | a:link { 248 | color: #000; 249 | background: #fce7c7; 250 | } 251 | 252 | a:visited { 253 | color: #404040; 254 | background: transparent; 255 | } 256 | a:hover { 257 | text-decoration: none; 258 | background: transparent; 259 | } 260 | 261 | *:focus { 262 | color: #000; 263 | background: #fc0; 264 | } 265 | 266 | img { 267 | max-width: 100%; 268 | border: none; 269 | } 270 | 271 | em { 272 | font-family: open_sansitalic, Frutiger, "Frutiger Linotype", Univers, Calibri, 273 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 274 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 275 | Helvetica, Arial, sans-serif; 276 | font-style: normal; 277 | } 278 | strong { 279 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 280 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 281 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 282 | Helvetica, Arial, sans-serif; 283 | font-weight: 600; 284 | } 285 | 286 | button { 287 | cursor: pointer; 288 | } 289 | 290 | code { 291 | display: block; 292 | color: #000; 293 | background: #e4e4e4; 294 | padding: 1rem; 295 | margin: 1rem 0; 296 | } 297 | 298 | /* --------------------------------------------------------------------------- */ 299 | /* ----------------------------- PAGE STRUCTURE ------------------------------ */ 300 | /* --------------------------------------------------------------------------- */ 301 | 302 | #container { 303 | } 304 | 305 | header { 306 | position: relative; 307 | color: #fff; 308 | background: #2e3135; 309 | background-image: linear-gradient(rgba(0, 0, 0, 0.5), transparent); 310 | } 311 | 312 | main, 313 | div.apiDocumentationContentSection { 314 | background-color: #f7f7f7; 315 | padding: 2rem 5%; 316 | } 317 | 318 | aside { 319 | color: #000; 320 | background: #e1e1e1; 321 | padding: 2rem 5%; 322 | } 323 | 324 | p.baseline { 325 | font-size: 0.75em; 326 | padding-left: 2.5%; 327 | margin: 1.5em 0 0 75px; 328 | } 329 | p.logo { 330 | position: absolute; 331 | top: 0.5rem; 332 | left: 2.5%; 333 | width: 60px; 334 | height: 60px; 335 | } 336 | 337 | p.logo a { 338 | background: transparent; 339 | } 340 | p.logo img { 341 | max-height: 100%; 342 | } 343 | 344 | /* --------------- FOOTER --------------- */ 345 | 346 | footer { 347 | margin: 1rem 0 2rem; 348 | text-align: center; 349 | } 350 | p.copyright { 351 | font-size: 0.7em; 352 | color: #fff; 353 | background: transparent; 354 | margin-top: 1rem; 355 | } 356 | 357 | ul.policies li { 358 | display: inline-block; 359 | position: relative; 360 | list-style-type: none; 361 | } 362 | ul.policies li::after { 363 | position: absolute; 364 | top: 0.7em; 365 | right: -0.35em; 366 | display: block; 367 | content: ""; 368 | width: 5px; 369 | height: 5px; 370 | background: #e2a037; 371 | border-radius: 5px; 372 | } 373 | ul.policies li:last-child::after { 374 | content: none; 375 | } 376 | 377 | footer button { 378 | color: #fff; 379 | background: transparent; 380 | border: none; 381 | } 382 | 383 | /* --------------------------------------------------------------------------- */ 384 | /* ---------------------------------- FORMS ---------------------------------- */ 385 | /* --------------------------------------------------------------------------- */ 386 | 387 | form p + p { 388 | margin-top: 1em; 389 | } 390 | 391 | fieldset { 392 | margin-bottom: 2rem; 393 | } 394 | 395 | legend { 396 | font: normal 1.5em/1 antonregular, Frutiger, "Frutiger Linotype", Univers, 397 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 398 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 399 | "Helvetica Neue", Helvetica, Arial, sans-serif; 400 | text-transform: uppercase; 401 | padding-bottom: 1.5rem; 402 | } 403 | 404 | label { 405 | display: block; 406 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 407 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 408 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 409 | Helvetica, Arial, sans-serif; 410 | padding-bottom: 0.1em; 411 | } 412 | 413 | input { 414 | font-size: 100%; 415 | padding: 2px 3px; 416 | border: 1px solid #c0c0c0; 417 | border-radius: 2px; 418 | } 419 | 420 | .mandatory-info { 421 | text-align: right; 422 | } 423 | 424 | .buttons-bar { 425 | text-align: center; 426 | margin: 2rem 0 0; 427 | } 428 | .buttons-bar input { 429 | margin: 0 0.5rem; 430 | } 431 | 432 | input[type="submit"], 433 | input[type="reset"] { 434 | font-size: 100%; 435 | text-transform: uppercase; 436 | color: #fff; 437 | background: #49182e; 438 | padding: 0.3em 0.5em; 439 | border: none; 440 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); 441 | border-radius: 2px; 442 | cursor: pointer; 443 | } 444 | input[type="reset"] { 445 | color: #fff; 446 | background: #555; 447 | } 448 | 449 | input[type="submit"]:hover, 450 | input[type="reset"]:hover { 451 | color: #fff; 452 | background: #286278; 453 | box-shadow: none; 454 | border-radius: 0; 455 | } 456 | 457 | input[type="submit"]:focus { 458 | background: #f60; 459 | } 460 | 461 | /* --------------------------------------------------------------------------- */ 462 | /* -------------------------------- NAVIGATION ------------------------------- */ 463 | /* --------------------------------------------------------------------------- */ 464 | 465 | nav { 466 | text-align: center; 467 | margin-top: 1rem; 468 | } 469 | nav h2, 470 | aside h2 { 471 | position: absolute; 472 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 473 | clip: rect(1px, 1px, 1px, 1px); 474 | clip-path: inset(50%); 475 | padding: 0; 476 | border: 0; 477 | height: 1px; 478 | width: 1px; 479 | overflow: hidden; 480 | white-space: nowrap; 481 | } 482 | 483 | nav li { 484 | list-style-type: none; 485 | } 486 | nav button, 487 | nav a, 488 | nav a:link, 489 | nav a:visited { 490 | display: block; 491 | width: 100%; 492 | font: normal 1.2em open_sansbold, Frutiger, "Frutiger Linotype", Univers, 493 | Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, 494 | "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, 495 | "Helvetica Neue", Helvetica, Arial, sans-serif; 496 | text-transform: uppercase; 497 | text-decoration: none; 498 | color: #fff; 499 | background: #444a51; 500 | padding: 0.5em 0; 501 | border: none; 502 | border-top: 1px solid #ccc; 503 | } 504 | nav button:hover, 505 | nav a:hover { 506 | color: #191b1d; 507 | background: #63b7c2; 508 | text-decoration: none; 509 | } 510 | 511 | nav li.active button, 512 | nav li.active a, 513 | nav li.active a:link, 514 | nav li.active a:visited { 515 | color: #191b1d; 516 | background: #63b7c2; 517 | } 518 | 519 | /* --------------------------------------------------------------------------- */ 520 | /* ------------------------------------- ASIDE ------------------------------- */ 521 | /* --------------------------------------------------------------------------- */ 522 | 523 | section + section { 524 | margin-top: 2rem; 525 | } 526 | 527 | section.honors h3 a { 528 | display: block; 529 | max-width: 220px; 530 | background: #fff; 531 | padding: 2rem; 532 | margin: 1rem 0; 533 | } 534 | section.honors h3 img { 535 | vertical-align: baseline; 536 | } 537 | 538 | section.at-guide { 539 | min-height: 90px; 540 | color: #fff; 541 | background: #444a51 url(../img/atree.svg) 1rem 0.8rem no-repeat; 542 | padding: 1rem 1rem 1rem 120px; 543 | } 544 | 545 | section.at-guide h3 { 546 | margin-bottom: 0.5em; 547 | } 548 | section.at-guide h3, 549 | section.at-guide h3 a { 550 | color: #fff; 551 | background: #444a51; 552 | } 553 | 554 | section.at-guide p a { 555 | display: block; 556 | width: 7em; 557 | } 558 | 559 | /* --------------------------------------------------------------------------- */ 560 | /* ---------------------------------- ARTICLES/SECTIONS ---------------------- */ 561 | /* --------------------------------------------------------------------------- */ 562 | 563 | article { 564 | max-width: 50em; 565 | } 566 | 567 | article > .hd:first-of-type h3 { 568 | margin-top: 0; 569 | } 570 | 571 | article p + p { 572 | margin-top: 0.8em; 573 | } 574 | article ul, 575 | section ul, 576 | article ol, 577 | section ol { 578 | margin: 1em; 579 | } 580 | article li, 581 | section li { 582 | margin: 0 0 0.8em 0; 583 | } 584 | 585 | /* FIGURES */ 586 | 587 | figcaption { 588 | font: 0.8em open_sansitalic, Frutiger, "Frutiger Linotype", Univers, Calibri, 589 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 590 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 591 | Helvetica, Arial, sans-serif; 592 | text-align: right; 593 | margin: 0.3em 1rem; 594 | } 595 | 596 | /* Notes */ 597 | 598 | .note { 599 | font: 0.9em open_sansitalic, Frutiger, "Frutiger Linotype", Univers, Calibri, 600 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 601 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 602 | Helvetica, Arial, sans-serif; 603 | padding-top: 2rem; 604 | margin-top: 2rem; 605 | border-top: 1px dotted #2e3135; 606 | } 607 | 608 | /* --------------------------------------------------------------------------- */ 609 | /* ---------------------------------- UTILITIES ------------------------------ */ 610 | /* --------------------------------------------------------------------------- */ 611 | 612 | .links-list a { 613 | display: block; 614 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 615 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 616 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 617 | Helvetica, Arial, sans-serif; 618 | text-decoration: underline; 619 | color: #2e3135; 620 | background: transparent; 621 | } 622 | 623 | p.topLink { 624 | text-align: center; 625 | margin: 1rem 0; 626 | } 627 | p.topLink a { 628 | background: transparent; 629 | } 630 | 631 | /* --------------------------------------------------------------------------- */ 632 | /* ---------------------------------- SPECIFICS ------------------------------ */ 633 | /* --------------------------------------------------------------------------- */ 634 | 635 | .downloads strong { 636 | display: block; 637 | font-family: open_sansregular, Frutiger, "Frutiger Linotype", Univers, Calibri, 638 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 639 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 640 | Helvetica, Arial, sans-serif; 641 | } 642 | 643 | /* Contextual menu */ 644 | 645 | #ph { 646 | margin-bottom: 2rem; 647 | } 648 | 649 | #ph a { 650 | display: inline-block; 651 | font: 1em open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 652 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 653 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 654 | Helvetica, Arial, sans-serif; 655 | text-decoration: none; 656 | background: transparent; 657 | padding: 0.2em 0.5em; 658 | margin-bottom: 0.3em; 659 | } 660 | #ph a:hover, 661 | #ph a:focus { 662 | color: #fff; 663 | background: #2e3135; 664 | } 665 | #ph span { 666 | color: #999; 667 | } 668 | 669 | .heading { 670 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 671 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 672 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 673 | Helvetica, Arial, sans-serif; 674 | margin-top: 1rem; 675 | } 676 | code + .heading { 677 | margin-top: 2rem; 678 | } 679 | 680 | dl.api { 681 | background: #fff; 682 | padding: 0.5rem 1rem 1rem; 683 | margin: 2rem 0; 684 | border: 1px solid #63b7c2; 685 | } 686 | 687 | dt.heading { 688 | margin-bottom: 1rem; 689 | } 690 | 691 | dd.detail.hidden { 692 | display: none; 693 | } 694 | 695 | /* DEMOS */ 696 | 697 | div.demo { 698 | clear: both; 699 | padding: 1rem 5%; 700 | margin: 2rem 0; 701 | border: 1px solid #63b7c2; 702 | } 703 | 704 | div.demo h2, 705 | div.demo h3 { 706 | font-size: 3em; 707 | text-transform: uppercase; 708 | color: #1e474c; 709 | margin: 0 0 0.5em; 710 | } 711 | 712 | div.demo .editLink, 713 | input[type="button"] { 714 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 715 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 716 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 717 | Helvetica, Arial, sans-serif; 718 | text-transform: uppercase; 719 | color: #fff; 720 | background: #286278; 721 | padding: 0.3em 0.5em; 722 | border: none; 723 | border-radius: 3px; 724 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); 725 | transition: border-radius; 726 | -webkit-transition: border-radius; 727 | } 728 | 729 | div.demo .editLink:hover, 730 | input[type="button"]:hover { 731 | text-decoration: none; 732 | border-radius: 0; 733 | box-shadow: none; 734 | } 735 | 736 | p.morphCtrl { 737 | text-align: right; 738 | margin: 1rem 0 0.5rem; 739 | } 740 | 741 | /* DYNAMIC EDITOR */ 742 | 743 | div.dynContent { 744 | line-height: 1.5; 745 | background: #d4eff5; 746 | padding: 0.7rem 1rem; 747 | margin: 0.5rem 0; 748 | } 749 | div.dynContent + p { 750 | text-align: right; 751 | margin: 1.5em 0 0.5em; 752 | } 753 | 754 | div.dynContent { 755 | font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, 756 | "DejaVu Serif", "Bitstream Vera Serif", "Liberation Serif", Georgia, serif; 757 | } 758 | 759 | div.demoDynamicEditor { 760 | width: 65%; 761 | font-family: Corbel, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", 762 | "DejaVu Sans", "Bitstream Vera Sans", "Liberation Sans", Verdana, 763 | "Verdana Ref", sans-serif; 764 | font-size: 0.9em; 765 | text-align: center; 766 | color: #000; 767 | background-color: #ccc; 768 | border-radius: 0.23rem; 769 | z-index: 10; 770 | } 771 | 772 | button.close { 773 | position: absolute; 774 | top: 0.5em; 775 | right: 0.5em; 776 | background: transparent; 777 | border: none; 778 | } 779 | button.close { 780 | position: absolute; 781 | top: 0.5em; 782 | right: 0.5em; 783 | background: transparent; 784 | border: none; 785 | } 786 | 787 | div.dynEditorTop1 { 788 | font-size: 1.3em; 789 | text-align: left; 790 | text-transform: uppercase; 791 | color: #fff; 792 | background: #286278; 793 | padding: 0.3em 0.5em; 794 | border-top-left-radius: 0.23rem; 795 | border-top-right-radius: 0.23rem; 796 | } 797 | 798 | div.dynEditorBody1 { 799 | width: 80%; 800 | text-align: center; 801 | margin: 1rem 10%; 802 | } 803 | div.dynEditorBody1 p { 804 | line-height: 1.4; 805 | } 806 | 807 | div.dynEditorBody2 textarea { 808 | width: 88%; 809 | height: 300px; 810 | font-family: Arial, Helvetica, sans-serif; 811 | margin-bottom: 1rem; 812 | padding: 0.5rem 3%; 813 | } 814 | 815 | div.demoMenuBarDiv { 816 | background-color: #f5f5f5; 817 | } 818 | 819 | div.demoMenuBar { 820 | display: table; 821 | width: 100%; 822 | background: #2e3135; 823 | } 824 | 825 | div.demoMenuBar a, 826 | div.demoMenuBar a:link, 827 | div.demoMenuBar a:visited, 828 | div.demoMenuBar a:active { 829 | display: inline-block; 830 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 831 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 832 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 833 | Helvetica, Arial, sans-serif; 834 | text-transform: uppercase; 835 | color: #fff; 836 | background: transparent; 837 | padding: 0.3em 0.5em; 838 | margin: 0.5rem; 839 | border: none; 840 | } 841 | div.demoMenuBar > div a:hover { 842 | text-decoration: none; 843 | } 844 | div.demoMenuBar > div > a::after { 845 | content: "\00A0 \25BC"; 846 | } 847 | 848 | div.demoMenuBar > div { 849 | display: table-cell; 850 | } 851 | 852 | div.demoMenuBar > div a:hover { 853 | color: #2e3135; 854 | background: #63b7c2; 855 | } 856 | 857 | div.demoSubMenus { 858 | position: absolute; 859 | color: #fff; 860 | background-color: #2e3135; 861 | z-index: 11; 862 | } 863 | 864 | div.demoSubMenus div, 865 | div.demoSubMenus ul, 866 | div.demoSubMenus li { 867 | margin: 1px auto 2px auto; 868 | } 869 | 870 | div.demoMenuBar a:focus, 871 | div.demoMenuBar a:hover { 872 | background-color: #3a5fcd; 873 | color: #f5f5f5; 874 | } 875 | 876 | ul.demoMenu { 877 | list-style-type: none; 878 | padding: 0px; 879 | margin: 0px; 880 | } 881 | 882 | textarea.editor { 883 | width: 70%; 884 | } 885 | 886 | div.announceMsg { 887 | font-size: 0.8em; 888 | background-color: #f5f5f5; 889 | color: #4b0000; 890 | border: solid thin black; 891 | z-index: 12; 892 | } 893 | 894 | /* LISTS */ 895 | ol.lsn { 896 | counter-reset: level; 897 | } 898 | ol.lsn li { 899 | display: block; 900 | text-indent: -1em; 901 | } 902 | ol.lsn ol li { 903 | display: block; 904 | text-indent: -2em; 905 | margin-left: 1.3em; 906 | } 907 | ol.lsn li::before { 908 | content: counters(level, ".") ". "; 909 | counter-increment: level; 910 | } 911 | 912 | /* HELP */ 913 | p.guidance { 914 | min-height: 30px; 915 | font-family: open_sansitalic, Frutiger, "Frutiger Linotype", Univers, Calibri, 916 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 917 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 918 | Helvetica, Arial, sans-serif; 919 | background: url(../img/guidance.svg) 0 0 no-repeat; 920 | padding: 0 0 2rem 40px; 921 | margin: 2rem 0 0; 922 | } 923 | 924 | /* DEMO PAGES */ 925 | 926 | div.demo-block { 927 | clear: both; 928 | padding: 1rem 0; 929 | border-top: 2px dotted #63b7c2; 930 | } 931 | 932 | div.demo-block h3 { 933 | margin: 0 0 0.5em; 934 | } 935 | 936 | #demos h2 strong { 937 | display: block; 938 | font-size: 60%; 939 | text-transform: uppercase; 940 | } 941 | 942 | #demos nav { 943 | text-align: left; 944 | } 945 | #demos nav a, 946 | #demos nav a:link, 947 | #demos nav a:visited { 948 | width: auto; 949 | font-size: 90%; 950 | font-weight: normal; 951 | text-transform: none; 952 | background: transparent; 953 | padding: 1em 5%; 954 | } 955 | #demos nav a:hover { 956 | color: #fff; 957 | text-decoration: underline; 958 | } 959 | #demos nav a::before { 960 | content: "< "; 961 | } 962 | 963 | /* CONTACT FORM */ 964 | 965 | .cuStatus { 966 | position: static; 967 | background: #fff; 968 | padding: 1rem; 969 | margin: 2rem 0; 970 | border-left: 4px solid #c00; 971 | } 972 | 973 | .cuStatus ol { 974 | margin: 0.5rem 1rem; 975 | } 976 | 977 | .cuStatus button { 978 | font-family: open_sansbold, Frutiger, "Frutiger Linotype", Univers, Calibri, 979 | "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", 980 | "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", 981 | Helvetica, Arial, sans-serif; 982 | text-transform: uppercase; 983 | color: #fff; 984 | background: #286278; 985 | padding: 0.3em 0.5em; 986 | border: none; 987 | border-radius: 3px; 988 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); 989 | transition: border-radius; 990 | -webkit-transition: border-radius; 991 | } 992 | .cuStatus button:hover { 993 | box-shadow: none; 994 | border-radius: 0; 995 | } 996 | .cuStatus button:focus { 997 | background: #f60; 998 | } 999 | 1000 | #cufc1, 1001 | #cufc5, 1002 | #cufc6 { 1003 | width: 60%; 1004 | max-width: 250px; 1005 | } 1006 | #cufc2, 1007 | #cufm1 { 1008 | width: 80%; 1009 | } 1010 | 1011 | #contactUsFrm div[role="application"] { 1012 | margin-top: 1rem; 1013 | } 1014 | 1015 | /* --------------------------------------------------------------------------- */ 1016 | /* ---------------------------------- QUERIES -------------------------------- */ 1017 | /* --------------------------------------------------------------------------- */ 1018 | 1019 | @media screen and (min-width: 700px) and (max-width: 1600px) { 1020 | section.honors { 1021 | position: relative; 1022 | min-height: 220px; 1023 | padding: 1rem 0 0 320px; 1024 | } 1025 | section.honors h3 a { 1026 | position: absolute; 1027 | top: 0; 1028 | left: 0; 1029 | } 1030 | } 1031 | 1032 | @media screen and (min-width: 780px) { 1033 | ul.menuList { 1034 | display: -webkit-flex; 1035 | -webkit-justify-content: space-around; 1036 | display: -ms-flex; 1037 | -ms-justify-content: space-around; 1038 | display: flex; 1039 | justify-content: space-around; 1040 | background: #444a51; 1041 | } 1042 | nav button, 1043 | nav a, 1044 | nav a:link, 1045 | nav a:visited { 1046 | padding: 0.5em; 1047 | border: none; 1048 | } 1049 | 1050 | div.demo-block .trigger { 1051 | float: right; 1052 | width: 35%; 1053 | text-align: right; 1054 | margin-top: -3.5rem; 1055 | } 1056 | } 1057 | 1058 | @media screen and (min-width: 1000px) { 1059 | #container { 1060 | display: -webkit-flex; 1061 | display: -ms-flex; 1062 | display: flex; 1063 | flex-flow: row wrap; 1064 | } 1065 | 1066 | header { 1067 | width: 20%; 1068 | text-align: left; 1069 | padding: 2rem 5%; 1070 | } 1071 | h1 { 1072 | font-size: 3vw; 1073 | line-height: 1.2; 1074 | padding: 120px 0 0; 1075 | margin: 0; 1076 | } 1077 | h1 strong { 1078 | font-size: 250%; 1079 | margin: 2rem 0 1.5rem; 1080 | } 1081 | p.logo { 1082 | width: 150px; 1083 | height: 150px; 1084 | top: 2rem; 1085 | left: 15%; 1086 | margin: 0; 1087 | } 1088 | p.baseline { 1089 | padding: 0; 1090 | margin-left: 0; 1091 | } 1092 | 1093 | main, 1094 | #mcOverview { 1095 | min-height: 800px; 1096 | } 1097 | 1098 | h2 { 1099 | font-size: 4em; 1100 | } 1101 | h3 { 1102 | font-size: 2.5em; 1103 | } 1104 | aside section h3 { 1105 | font-size: 2em; 1106 | } 1107 | 1108 | ul.menuList { 1109 | display: block; 1110 | background: transparent; 1111 | } 1112 | ul.menuList li { 1113 | margin-bottom: 0.5rem; 1114 | } 1115 | 1116 | #wrapper { 1117 | width: 70%; 1118 | } 1119 | 1120 | nav { 1121 | margin-top: 4rem; 1122 | } 1123 | nav button, 1124 | nav a, 1125 | nav a:link, 1126 | nav a:visited { 1127 | font-size: 1em; 1128 | padding: 0.5em 0; 1129 | } 1130 | 1131 | footer { 1132 | width: 98%; 1133 | text-align: left; 1134 | padding: 0 1%; 1135 | } 1136 | footer ul { 1137 | width: 60%; 1138 | margin-top: -4rem; 1139 | } 1140 | p.topLink { 1141 | width: 100%; 1142 | text-align: right; 1143 | margin: 1rem; 1144 | } 1145 | } 1146 | 1147 | @media screen and (min-width: 1200px) { 1148 | p, 1149 | li, 1150 | dt, 1151 | dd { 1152 | font-size: 1.1em; 1153 | } 1154 | aside p, 1155 | aside li { 1156 | font-size: 1em; 1157 | } 1158 | } 1159 | 1160 | @media screen and (min-width: 1600px) { 1161 | header { 1162 | width: 14%; 1163 | padding: 2rem 3%; 1164 | } 1165 | h1 { 1166 | font-size: 2.3vw; 1167 | } 1168 | #wrapper { 1169 | width: 80%; 1170 | } 1171 | #mcOverview, 1172 | #mcDemo, 1173 | #mcAbout, 1174 | #mcContact { 1175 | display: -webkit-flex; 1176 | display: -ms-flex; 1177 | display: flex; 1178 | } 1179 | main, 1180 | div.apiDocumentationContentSection { 1181 | width: 70%; 1182 | } 1183 | aside { 1184 | width: 24%; 1185 | padding: 2rem 3%; 1186 | } 1187 | section.honors h3 a { 1188 | max-width: 150px; 1189 | padding: 0.5rem; 1190 | } 1191 | } 1192 | --------------------------------------------------------------------------------