bdf238650c3dfeb20fc3c1e983f05eee0ed979ce
4 Gallery
.entryOrder
= [];
5 Gallery
.runningDemo
= null;
8 * Shortcut for creating HTML associated with a parent.
10 Gallery
.create
= function(type
, parent
, className
) {
11 var elem
= document
.createElement(type
);
12 parent
.appendChild(elem
);
14 elem
.className
= className
;
19 Gallery
.start
= function() {
20 Gallery
.toc
= document
.getElementById("toc");
21 Gallery
.workarea
= document
.getElementById("workarea");
22 Gallery
.subtitle
= Gallery
.create("div", Gallery
.workarea
);
23 Gallery
.workareaChild
= Gallery
.create("div", Gallery
.workarea
);
24 Gallery
.title
= document
.getElementById("title");
25 Gallery
.textarea
= new TextArea();
27 for (var idx
in Gallery
.entryOrder
) {
28 var id
= Gallery
.entryOrder
[idx
];
29 var demo
= Gallery
.entries
[id
];
31 var div
= Gallery
.create("div", Gallery
.toc
, "entry");
33 var innerDiv
= Gallery
.create("div", div
, "");
35 // Storing extra data in the demo object.
37 demo
.innerDiv
= innerDiv
;
39 innerDiv
.textContent
= demo
.name
;
40 div
.onclick
= function(demo
, id
) { return function() {
41 if (Gallery
.runningDemo
!= null) {
42 Gallery
.runningDemo
.innerDiv
.className
= "";
43 if (Gallery
.runningDemo
.clean
!= null) {
44 Gallery
.runningDemo
.clean(Gallery
.workareaChild
);
47 Gallery
.subtitle
.innerHTML
= "";
48 var codeLink
= Gallery
.create("a", Gallery
.subtitle
);
49 codeLink
.textContent
= "code";
51 Gallery
.title
.textContent
= demo
.title
? demo
.title
: "";
52 demo
.innerDiv
.className
= "selected";
53 Gallery
.workareaChild
.id
= id
;
54 location
.hash
= "g/" + id
;
55 Gallery
.workareaChild
.innerHTML
='';
57 demo
.setup(Gallery
.workareaChild
);
59 var html
= Gallery
.workareaChild
.innerHTML
;
60 codeLink
.onclick
= function() {
61 var javascript
= demo
.run
.toString();
62 Gallery
.textarea
.show("Code", "HTML\n\n" + html
+ "\n\njavascript\n\n" + javascript
);
64 demo
.run(Gallery
.workareaChild
);
65 Gallery
.runningDemo
= demo
;
71 window
.onhashchange
= Gallery
.setHash
;("hashchange", Gallery
.hashChange
, false);
74 Gallery
.register
= function(id
, demo
) {
75 if (Gallery
.entries
[id
]) {
76 throw id
+ " already registered";
78 Gallery
.entries
[id
] = demo
;
79 Gallery
.entryOrder
.push(id
);
82 Gallery
.hashChange
= function(event
) {
84 if (location
.hash
.indexOf("#g/") == 0) {
85 var id
= location
.hash
.substring(3) + "-toc";
86 var elem
= document
.getElementById(id
);
91 Gallery
.workareaChild
.innerHTML
= "<h3>Select a demo from the gallery on the left</h3>"