annotate src/main/webapp/resources/js/mobile/slidfast.js @ 7:764f47286679

(none)
author jurzua
date Wed, 29 Oct 2014 14:28:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
jurzua
parents:
diff changeset
1 /*!
jurzua
parents:
diff changeset
2 * JBoss, Home of Professional Open Source
jurzua
parents:
diff changeset
3 * Copyright 2011, Red Hat, Inc. and individual contributors
jurzua
parents:
diff changeset
4 * by the @authors tag. See the copyright.txt in the distribution for a
jurzua
parents:
diff changeset
5 * full listing of individual contributors.
jurzua
parents:
diff changeset
6 *
jurzua
parents:
diff changeset
7 * This is free software; you can redistribute it and/or modify it
jurzua
parents:
diff changeset
8 * under the terms of the GNU Lesser General Public License as
jurzua
parents:
diff changeset
9 * published by the Free Software Foundation; either version 2.1 of
jurzua
parents:
diff changeset
10 * the License, or (at your option) any later version.
jurzua
parents:
diff changeset
11 *
jurzua
parents:
diff changeset
12 * This software is distributed in the hope that it will be useful,
jurzua
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jurzua
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
jurzua
parents:
diff changeset
15 * Lesser General Public License for more details.
jurzua
parents:
diff changeset
16 *
jurzua
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
jurzua
parents:
diff changeset
18 * License along with this software; if not, write to the Free
jurzua
parents:
diff changeset
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
jurzua
parents:
diff changeset
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
jurzua
parents:
diff changeset
21 *
jurzua
parents:
diff changeset
22 * Author: Wesley Hales
jurzua
parents:
diff changeset
23 *
jurzua
parents:
diff changeset
24 * version: 1.0.0.Alpha
jurzua
parents:
diff changeset
25 */
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 (function(window,document,undefined){
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 var slidfast = (function(){
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 var slidfast = function(startupOptions){
jurzua
parents:
diff changeset
32 options = startupOptions;
jurzua
parents:
diff changeset
33 return new slidfast.core.init();
jurzua
parents:
diff changeset
34 },
jurzua
parents:
diff changeset
35
jurzua
parents:
diff changeset
36 options,
jurzua
parents:
diff changeset
37
jurzua
parents:
diff changeset
38 defaultPageID = "",
jurzua
parents:
diff changeset
39
jurzua
parents:
diff changeset
40 defaultPageHash = "",
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 backButtonID = "",
jurzua
parents:
diff changeset
43
jurzua
parents:
diff changeset
44 focusPage = null,
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 isReady = false;
jurzua
parents:
diff changeset
47
jurzua
parents:
diff changeset
48 slidfast.core = slidfast.prototype = {
jurzua
parents:
diff changeset
49
jurzua
parents:
diff changeset
50 constructor: slidfast,
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 start: function() {
jurzua
parents:
diff changeset
53 if(options){
jurzua
parents:
diff changeset
54 try{
jurzua
parents:
diff changeset
55 defaultPageID = options.defaultPageID;
jurzua
parents:
diff changeset
56 defaultPageHash = options.defaultPageHash;
jurzua
parents:
diff changeset
57 backButtonID = options.backButtonID;
jurzua
parents:
diff changeset
58 }catch(e){
jurzua
parents:
diff changeset
59
jurzua
parents:
diff changeset
60 }
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62 try{
jurzua
parents:
diff changeset
63 slidfast.core.hideURLBar();
jurzua
parents:
diff changeset
64 slidfast.core.locationChange();
jurzua
parents:
diff changeset
65 }catch(e){
jurzua
parents:
diff changeset
66 alert('You must define the page ID and location hash as default parameters. \n Error:' + e)
jurzua
parents:
diff changeset
67 }
jurzua
parents:
diff changeset
68 },
jurzua
parents:
diff changeset
69
jurzua
parents:
diff changeset
70 hideURLBar: function() {
jurzua
parents:
diff changeset
71 //hide the url bar on mobile devices
jurzua
parents:
diff changeset
72 setTimeout(scrollTo, 0, 0, 1)
jurzua
parents:
diff changeset
73 },
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 slideTo : function (id) {
jurzua
parents:
diff changeset
76 if(!focusPage) {
jurzua
parents:
diff changeset
77 focusPage = document.getElementById(defaultPageID);
jurzua
parents:
diff changeset
78 }
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 //1.)the page we are bringing into focus dictates how
jurzua
parents:
diff changeset
81 // the current page will exit. So let's see what classes
jurzua
parents:
diff changeset
82 // our incoming page is using. We know it will have stage[right|left|etc...]
jurzua
parents:
diff changeset
83 var classes = document.getElementById(id).className.split(' ');
jurzua
parents:
diff changeset
84
jurzua
parents:
diff changeset
85 //2.)decide if the incoming page is assigned to right or left
jurzua
parents:
diff changeset
86 // (-1 if no match)
jurzua
parents:
diff changeset
87 var stageType = classes.indexOf('stage-left');
jurzua
parents:
diff changeset
88
jurzua
parents:
diff changeset
89 //3.) decide how this focused page should exit.
jurzua
parents:
diff changeset
90 if (stageType > 0) {
jurzua
parents:
diff changeset
91 focusPage.className = 'page transition stage-right';
jurzua
parents:
diff changeset
92 } else {
jurzua
parents:
diff changeset
93 focusPage.className = 'page transition stage-left';
jurzua
parents:
diff changeset
94 }
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96 //4. refresh/set the variable
jurzua
parents:
diff changeset
97 focusPage = document.getElementById(id);
jurzua
parents:
diff changeset
98
jurzua
parents:
diff changeset
99 //5. Bring in the new page and set the global.
jurzua
parents:
diff changeset
100 focusPage.className = 'page transition stage-center';
jurzua
parents:
diff changeset
101 },
jurzua
parents:
diff changeset
102
jurzua
parents:
diff changeset
103 init: function() {
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 window.addEventListener('load', function(e) {
jurzua
parents:
diff changeset
106 isReady = true;
jurzua
parents:
diff changeset
107 slidfast.core.start(defaultPageID, defaultPageHash);
jurzua
parents:
diff changeset
108 }, false);
jurzua
parents:
diff changeset
109
jurzua
parents:
diff changeset
110 window.addEventListener('hashchange', function(e) {
jurzua
parents:
diff changeset
111 slidfast.core.locationChange();
jurzua
parents:
diff changeset
112 }, false);
jurzua
parents:
diff changeset
113
jurzua
parents:
diff changeset
114 return slidfast.core;
jurzua
parents:
diff changeset
115
jurzua
parents:
diff changeset
116 },
jurzua
parents:
diff changeset
117
jurzua
parents:
diff changeset
118 locationChange: function() {
jurzua
parents:
diff changeset
119 if (location.hash === "#" + defaultPageHash || location.hash == '') {
jurzua
parents:
diff changeset
120 slidfast.core.slideTo(defaultPageID);
jurzua
parents:
diff changeset
121 if(backButtonID){
jurzua
parents:
diff changeset
122 //we're on the default page, so no need for back button
jurzua
parents:
diff changeset
123 document.getElementById(backButtonID).className = 'hide-button';
jurzua
parents:
diff changeset
124 }
jurzua
parents:
diff changeset
125 } else {
jurzua
parents:
diff changeset
126 var hashArray = location.hash.split(':');
jurzua
parents:
diff changeset
127 var id;
jurzua
parents:
diff changeset
128 var sample;
jurzua
parents:
diff changeset
129 if (hashArray.length === 2) {
jurzua
parents:
diff changeset
130 id = hashArray[0].replace('#', '');
jurzua
parents:
diff changeset
131 sample = hashArray[1];
jurzua
parents:
diff changeset
132 try{
jurzua
parents:
diff changeset
133 //method defined in a4j:jsFunction
jurzua
parents:
diff changeset
134 handleHashChange(id, sample);
jurzua
parents:
diff changeset
135 }catch(e){
jurzua
parents:
diff changeset
136 alert('you must define an a4j:jsFunction component with name=\"handleHashChange\"')
jurzua
parents:
diff changeset
137 }
jurzua
parents:
diff changeset
138 if(backButtonID){
jurzua
parents:
diff changeset
139 //show the back button and attach functions
jurzua
parents:
diff changeset
140 document.getElementById(backButtonID).className = 'basic-button left-header-button';
jurzua
parents:
diff changeset
141 document.getElementById(backButtonID).onclick = function() {
jurzua
parents:
diff changeset
142 location.hash = defaultPageHash;
jurzua
parents:
diff changeset
143 };
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145 }
jurzua
parents:
diff changeset
146
jurzua
parents:
diff changeset
147 }
jurzua
parents:
diff changeset
148 },
jurzua
parents:
diff changeset
149
jurzua
parents:
diff changeset
150 flip: function() {
jurzua
parents:
diff changeset
151 //get a handle on the flippable region
jurzua
parents:
diff changeset
152 var front = document.getElementById('front');
jurzua
parents:
diff changeset
153 var back = document.getElementById('back');
jurzua
parents:
diff changeset
154
jurzua
parents:
diff changeset
155 //just a simple way to see what the state is
jurzua
parents:
diff changeset
156 var classes = front.className.split(' ');
jurzua
parents:
diff changeset
157 var flipped = classes.indexOf('flipped');
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 if (flipped >= 0) {
jurzua
parents:
diff changeset
160 //already flipped, so return to original
jurzua
parents:
diff changeset
161 front.className = 'normal';
jurzua
parents:
diff changeset
162 back.className = 'flipped';
jurzua
parents:
diff changeset
163 } else {
jurzua
parents:
diff changeset
164 //do the flip
jurzua
parents:
diff changeset
165 front.className = 'flipped';
jurzua
parents:
diff changeset
166 back.className = 'normal';
jurzua
parents:
diff changeset
167
jurzua
parents:
diff changeset
168 }
jurzua
parents:
diff changeset
169 }
jurzua
parents:
diff changeset
170
jurzua
parents:
diff changeset
171 };
jurzua
parents:
diff changeset
172 slidfast.core.init.prototype = slidfast.core;
jurzua
parents:
diff changeset
173 return slidfast;
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175 })();
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 window.slidfast = slidfast;
jurzua
parents:
diff changeset
178 })(window,document);
jurzua
parents:
diff changeset
179
jurzua
parents:
diff changeset
180
jurzua
parents:
diff changeset
181