golf 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +10 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +21 -0
- data/Rakefile +12 -0
- data/bin/golf +8 -0
- data/golf-java/README.markdown +41 -0
- data/golf-java/THANKS.markdown +14 -0
- data/golf-java/build/classes.zip +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfResource$MimeMapping$MimeMappingSingleton.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfResource$MimeMapping.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfResource.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$1.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$GolfContext.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$GolfParams.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$GolfSession.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$PermanentRedirectException.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$RedirectException.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet$StoredJSVM.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/GolfServlet.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/JsonpTunnel.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/Main$1.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/Main$RingList.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/Main.class +0 -0
- data/golf-java/build/com/thinkminimo/golf/ProxyServlet.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/CssCompressor.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/JarClassLoader.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/JavaScriptCompressor.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/JavaScriptToken.class +0 -0
- data/golf-java/build/com/yahoo/platform/yui/compressor/ScriptOrFnScope.class +0 -0
- data/golf-java/build/depends.zip +0 -0
- data/golf-java/build/golf +2 -0
- data/golf-java/build/org/json/JSONArray.class +0 -0
- data/golf-java/build/org/json/JSONException.class +0 -0
- data/golf-java/build/org/json/JSONObject$1.class +0 -0
- data/golf-java/build/org/json/JSONObject$Null.class +0 -0
- data/golf-java/build/org/json/JSONObject.class +0 -0
- data/golf-java/build/org/json/JSONString.class +0 -0
- data/golf-java/build/org/json/JSONStringer.class +0 -0
- data/golf-java/build/org/json/JSONTokener.class +0 -0
- data/golf-java/build/org/json/JSONWriter.class +0 -0
- data/golf-java/build/resources.zip +0 -0
- data/golf-java/build.xml +174 -0
- data/golf-java/dist/golf.zip +0 -0
- data/golf-java/lib/ant-launcher.jar +0 -0
- data/golf-java/lib/ant.jar +0 -0
- data/golf-java/lib/commons-codec-1.4.jar +0 -0
- data/golf-java/lib/commons-collections-3.2.1.jar +0 -0
- data/golf-java/lib/commons-fileupload-1.2.1.jar +0 -0
- data/golf-java/lib/commons-httpclient-3.1.jar +0 -0
- data/golf-java/lib/commons-io-1.4.jar +0 -0
- data/golf-java/lib/commons-lang-2.4.jar +0 -0
- data/golf-java/lib/commons-logging-1.1.1.jar +0 -0
- data/golf-java/lib/cssparser-0.9.5.jar +0 -0
- data/golf-java/lib/getopt-0.1-dev.jar +0 -0
- data/golf-java/lib/htmlunit-2.6.jar +0 -0
- data/golf-java/lib/htmlunit-core-js-2.6.jar +0 -0
- data/golf-java/lib/java-xmlbuilder-1.jar +0 -0
- data/golf-java/lib/jets3t-0.7.0.jar +0 -0
- data/golf-java/lib/jetty-6.1.15.jar +0 -0
- data/golf-java/lib/jetty-util-6.1.15.jar +0 -0
- data/golf-java/lib/log4j-1.2.15.jar +0 -0
- data/golf-java/lib/nekohtml-1.9.13.jar +0 -0
- data/golf-java/lib/sac-1.3.jar +0 -0
- data/golf-java/lib/serializer-2.7.1.jar +0 -0
- data/golf-java/lib/servlet-api-2.5-20081211.jar +0 -0
- data/golf-java/lib/xalan-2.7.1.jar +0 -0
- data/golf-java/lib/xercesImpl-2.9.1.jar +0 -0
- data/golf-java/lib/xml-apis-1.3.04.jar +0 -0
- data/golf-java/resources/app_error.html +60 -0
- data/golf-java/resources/error.html +29 -0
- data/golf-java/resources/forcebot.txt +0 -0
- data/golf-java/resources/forceclient.txt +0 -0
- data/golf-java/resources/forceproxy.txt +0 -0
- data/golf-java/resources/head.html +0 -0
- data/golf-java/resources/jquery.address.js +439 -0
- data/golf-java/resources/jquery.golf.js +945 -0
- data/golf-java/resources/jquery.js +4376 -0
- data/golf-java/resources/jsdetect.html +23 -0
- data/golf-java/resources/loading.gif +0 -0
- data/golf-java/resources/new.html +45 -0
- data/golf-java/resources/new.static.html +45 -0
- data/golf-java/resources/noscript.forceclient.html +11 -0
- data/golf-java/resources/noscript.html +18 -0
- data/golf-java/resources/noscript.static.html +15 -0
- data/golf-java/resources/project.xml +21 -0
- data/golf-java/resources/proxy_project.xml +11 -0
- data/golf-java/resources/proxy_web.xml +40 -0
- data/golf-java/resources/static_project.xml +37 -0
- data/golf-java/resources/version +1 -0
- data/golf-java/resources/web.xml +36 -0
- data/golf-java/resources/welcome2golf.html +50 -0
- data/golf-java/src/com/thinkminimo/golf/GolfResource.java +582 -0
- data/golf-java/src/com/thinkminimo/golf/GolfServlet.java +1055 -0
- data/golf-java/src/com/thinkminimo/golf/JsonpTunnel.java +86 -0
- data/golf-java/src/com/thinkminimo/golf/Main.java +1299 -0
- data/golf-java/src/com/thinkminimo/golf/ProxyServlet.java +577 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/CssCompressor.java +188 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/JarClassLoader.java +158 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java +1281 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java +55 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java +28 -0
- data/golf-java/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java +160 -0
- data/golf-java/src/org/json/JSONArray.java +934 -0
- data/golf-java/src/org/json/JSONException.java +27 -0
- data/golf-java/src/org/json/JSONObject.java +1550 -0
- data/golf-java/src/org/json/JSONString.java +18 -0
- data/golf-java/src/org/json/JSONStringer.java +78 -0
- data/golf-java/src/org/json/JSONTokener.java +422 -0
- data/golf-java/src/org/json/JSONWriter.java +323 -0
- data/golf-java/test/client/golftest/README.markdown +3 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.css +114 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.html +17 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.js +81 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.res/asc.gif +0 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.res/bg.gif +0 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.res/desc.gif +0 -0
- data/golf-java/test/client/golftest/components/com/thinkminimo/golf/test/Harness.res/test/test.html +1 -0
- data/golf-java/test/client/golftest/controller.js +131 -0
- data/golf-java/test/client/golftest/forceclient.txt +0 -0
- data/golf-java/test/client/golftest/forceproxy.txt +0 -0
- data/golf-java/test/client/golftest/head.html +1 -0
- data/golf-java/test/client/golftest/scripts/jquery.tablesort.js +75 -0
- data/golf-java/test/client/golftest/styles/style.css +18 -0
- data/golf-java/test/client/golftest/test/test.html +1 -0
- data/golf.gemspec +24 -0
- data/lib/golf/cli.rb +32 -0
- data/lib/golf/compiler.rb +12 -0
- data/lib/golf/rack.rb +17 -0
- data/lib/golf/version.rb +3 -0
- data/lib/golf.rb +6 -0
- data/template/Gemfile +5 -0
- data/template/config.ru +7 -0
- data/template/golfapp/components/Test/Test.html +22 -0
- data/template/golfapp/components/Test/Test.res/myfile.txt +1 -0
- data/template/golfapp/controller.js +10 -0
- data/template/golfapp/plugins/mylib.js +12 -0
- data/test/test_compiler.rb +10 -0
- data/test/test_helper.rb +6 -0
- data/test/test_rack.rb +17 -0
- metadata +208 -0
@@ -0,0 +1,439 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery Address Plugin v1.0
|
3
|
+
* http://www.asual.com/jquery/address/
|
4
|
+
*
|
5
|
+
* Copyright (c) 2009 Rostislav Hristov
|
6
|
+
* Dual licensed under the MIT and GPL licenses.
|
7
|
+
* http://docs.jquery.com/License
|
8
|
+
*
|
9
|
+
* Date: 2009-04-28 16:54:00 +0300 (Tue, 28 Apr 2009)
|
10
|
+
* Revision: 399
|
11
|
+
*/
|
12
|
+
(function ($) {
|
13
|
+
|
14
|
+
$.address = (function () {
|
15
|
+
|
16
|
+
var _trigger = function(name) {
|
17
|
+
$(this).trigger(
|
18
|
+
$.extend($.Event(name),
|
19
|
+
(function() {
|
20
|
+
var event = {
|
21
|
+
value: this.value(),
|
22
|
+
path: this.path(),
|
23
|
+
pathNames: this.pathNames(),
|
24
|
+
parameterNames: this.parameterNames(),
|
25
|
+
parameters: {},
|
26
|
+
queryString: this.queryString()
|
27
|
+
};
|
28
|
+
for (var i = 0, l = event.parameterNames.length; i < l; i++)
|
29
|
+
event.parameters[event.parameterNames[i]] = this.parameter(event.parameterNames[i]);
|
30
|
+
return event;
|
31
|
+
}).call(this)
|
32
|
+
)
|
33
|
+
);
|
34
|
+
};
|
35
|
+
|
36
|
+
var _init = function() {
|
37
|
+
_trigger.call($.address, 'init');
|
38
|
+
};
|
39
|
+
|
40
|
+
var _change = function() {
|
41
|
+
_trigger.call($.address, 'change');
|
42
|
+
};
|
43
|
+
|
44
|
+
var _getHash = function() {
|
45
|
+
var index = _l.href.indexOf('#');
|
46
|
+
return index != -1 ? _ec(_dc(_l.href.substr(index + 1))) : '';
|
47
|
+
};
|
48
|
+
|
49
|
+
var _getWindow = function() {
|
50
|
+
try {
|
51
|
+
top.document;
|
52
|
+
return top;
|
53
|
+
} catch (e) {
|
54
|
+
return window;
|
55
|
+
}
|
56
|
+
};
|
57
|
+
|
58
|
+
var _strictCheck = function(value, force) {
|
59
|
+
if (_opts.strict)
|
60
|
+
value = force ? (value.substr(0, 1) != '/' ? '/' + value : value) : (value == '' ? '/' : value);
|
61
|
+
return value;
|
62
|
+
};
|
63
|
+
|
64
|
+
var _ieLocal = function(value, direction) {
|
65
|
+
return (_msie && _l.protocol == 'file:') ?
|
66
|
+
(direction ? _value.replace(/\?/, '%3F') : _value.replace(/%253F/, '?')) : value;
|
67
|
+
};
|
68
|
+
|
69
|
+
var _searchScript = function(el) {
|
70
|
+
for (var i = 0, l = el.childNodes.length, s; i < l; i++) {
|
71
|
+
if (el.childNodes[i].src)
|
72
|
+
_url = String(el.childNodes[i].src);
|
73
|
+
if (s = _searchScript(el.childNodes[i]))
|
74
|
+
return s;
|
75
|
+
}
|
76
|
+
};
|
77
|
+
|
78
|
+
var _listen = function() {
|
79
|
+
if (!_silent) {
|
80
|
+
var hash = _getHash();
|
81
|
+
var diff = !(_value == hash);
|
82
|
+
if (_safari && _version < 523) {
|
83
|
+
if (_length != _h.length) {
|
84
|
+
_length = _h.length;
|
85
|
+
if (typeof _stack[_length - 1] != UNDEFINED)
|
86
|
+
_value = _stack[_length - 1];
|
87
|
+
_update();
|
88
|
+
}
|
89
|
+
} else if (_msie && diff) {
|
90
|
+
if (_version < 7)
|
91
|
+
_l.reload();
|
92
|
+
else
|
93
|
+
_setters.value(hash);
|
94
|
+
} else if (diff) {
|
95
|
+
_value = hash;
|
96
|
+
_update();
|
97
|
+
}
|
98
|
+
}
|
99
|
+
};
|
100
|
+
|
101
|
+
var _update = function() {
|
102
|
+
_change();
|
103
|
+
_st(_track, 10);
|
104
|
+
};
|
105
|
+
|
106
|
+
var _track = function() {
|
107
|
+
var value = (_l.pathname + (/\/$/.test(_l.pathname) ? '' : '/') + _getters.value()).replace(/\/\//, '/').replace(/^\/$/, '');
|
108
|
+
var fn = window[_opts.tracker];
|
109
|
+
if (typeof fn == FUNCTION)
|
110
|
+
fn(value);
|
111
|
+
else if (typeof pageTracker != UNDEFINED && typeof pageTracker._trackPageview == FUNCTION)
|
112
|
+
pageTracker._trackPageview(value);
|
113
|
+
else if (typeof urchinTracker == FUNCTION)
|
114
|
+
urchinTracker(value);
|
115
|
+
};
|
116
|
+
|
117
|
+
var _htmlWrite = function() {
|
118
|
+
var doc = _iframe.contentWindow.document;
|
119
|
+
doc.open();
|
120
|
+
doc.write('<html><head><title>' + _d.title + '</title><script>var ' + ID + ' = "' + _getHash() + '";</script></head></html>');
|
121
|
+
doc.close();
|
122
|
+
};
|
123
|
+
|
124
|
+
var _load = function() {
|
125
|
+
if (!_loaded) {
|
126
|
+
_loaded = true;
|
127
|
+
$('a').attr('xref', function() {
|
128
|
+
return $(this).attr('href');
|
129
|
+
});
|
130
|
+
if (_msie && _version < 8) {
|
131
|
+
_d.body.innerHTML = '<iframe id="' + ID + '" src="javascript:false;" width="0" height="0"></iframe>' + _d.body.innerHTML;
|
132
|
+
_iframe = _d.getElementById(ID);
|
133
|
+
_st(function() {
|
134
|
+
$(_iframe).bind('load', function() {
|
135
|
+
var win = _iframe.contentWindow;
|
136
|
+
var src = win.location.href;
|
137
|
+
_value = (typeof win[ID] != UNDEFINED ? win[ID] : '');
|
138
|
+
if (_value != _getHash()) {
|
139
|
+
_update();
|
140
|
+
_l.hash = _ieLocal(_value, true);
|
141
|
+
}
|
142
|
+
});
|
143
|
+
if (typeof _iframe.contentWindow[ID] == UNDEFINED)
|
144
|
+
_htmlWrite();
|
145
|
+
}, 50);
|
146
|
+
} else if (_safari) {
|
147
|
+
if (_version < 418) {
|
148
|
+
$(_d.body).append('<form id="' + ID + '" style="position:absolute;top:-9999px;" method="get"></form>');
|
149
|
+
_form = _d.getElementById(ID);
|
150
|
+
}
|
151
|
+
if (typeof _l[ID] == UNDEFINED) _l[ID] = {};
|
152
|
+
if (typeof _l[ID][_l.pathname] != UNDEFINED) _stack = _l[ID][_l.pathname].split(',');
|
153
|
+
}
|
154
|
+
|
155
|
+
_st(function() {
|
156
|
+
_init();
|
157
|
+
_change();
|
158
|
+
_track();
|
159
|
+
}, 1);
|
160
|
+
|
161
|
+
if (_msie && _version >= 8)
|
162
|
+
_d.body.onhashchange = _listen;
|
163
|
+
else
|
164
|
+
_si(_listen, 50);
|
165
|
+
|
166
|
+
$('a').attr('href', function() {
|
167
|
+
return $(this).attr('xref');
|
168
|
+
}).removeAttr('xref');
|
169
|
+
|
170
|
+
$('a[rel*=address:]').address();
|
171
|
+
}
|
172
|
+
};
|
173
|
+
|
174
|
+
var _getters = {
|
175
|
+
baseURL: function() {
|
176
|
+
var url = _l.href;
|
177
|
+
if (url.indexOf('#') != -1)
|
178
|
+
url = url.substr(0, url.indexOf('#'));
|
179
|
+
if (url.substr(url.length - 1) == '/')
|
180
|
+
url = url.substr(0, url.length - 1);
|
181
|
+
return url;
|
182
|
+
},
|
183
|
+
strict: function() {
|
184
|
+
return _opts.strict;
|
185
|
+
},
|
186
|
+
history: function() {
|
187
|
+
return _opts.history;
|
188
|
+
},
|
189
|
+
tracker: function() {
|
190
|
+
return _opts.tracker;
|
191
|
+
},
|
192
|
+
title: function() {
|
193
|
+
return _d.title;
|
194
|
+
},
|
195
|
+
value: function() {
|
196
|
+
if (!_supported) return null;
|
197
|
+
return _dc(_strictCheck(_ieLocal(_value, false), false));
|
198
|
+
},
|
199
|
+
path: function() {
|
200
|
+
var value = this.value();
|
201
|
+
return (value.indexOf('?') != -1) ? value.split('?')[0] : value;
|
202
|
+
},
|
203
|
+
pathNames: function() {
|
204
|
+
var path = this.path();
|
205
|
+
var names = path.split('/');
|
206
|
+
if (path.substr(0, 1) == '/' || path.length == 0)
|
207
|
+
names.splice(0, 1);
|
208
|
+
if (path.substr(path.length - 1, 1) == '/')
|
209
|
+
names.splice(names.length - 1, 1);
|
210
|
+
return names;
|
211
|
+
},
|
212
|
+
queryString: function() {
|
213
|
+
var value = this.value();
|
214
|
+
var index = value.indexOf('?');
|
215
|
+
return (index != -1 && index < value.length) ? value.substr(index + 1) : '';
|
216
|
+
},
|
217
|
+
parameter: function(param) {
|
218
|
+
var value = this.value();
|
219
|
+
var index = value.indexOf('?');
|
220
|
+
if (index != -1) {
|
221
|
+
value = value.substr(index + 1);
|
222
|
+
var params = value.split('&');
|
223
|
+
var p, i = params.length;
|
224
|
+
while(i--) {
|
225
|
+
p = params[i].split('=');
|
226
|
+
if (p[0] == param)
|
227
|
+
return p[1];
|
228
|
+
}
|
229
|
+
}
|
230
|
+
},
|
231
|
+
parameterNames: function() {
|
232
|
+
var value = this.value();
|
233
|
+
var index = value.indexOf('?');
|
234
|
+
var names = [];
|
235
|
+
if (index != -1) {
|
236
|
+
value = value.substr(index + 1);
|
237
|
+
if (value != '' && value.indexOf('=') != -1) {
|
238
|
+
var params = value.split('&');
|
239
|
+
var i = 0;
|
240
|
+
while(i < params.length) {
|
241
|
+
names.push(params[i].split('=')[0]);
|
242
|
+
i++;
|
243
|
+
}
|
244
|
+
}
|
245
|
+
}
|
246
|
+
return names;
|
247
|
+
}
|
248
|
+
};
|
249
|
+
|
250
|
+
var _setters = {
|
251
|
+
strict: function(strict) {
|
252
|
+
_opts.strict = strict;
|
253
|
+
},
|
254
|
+
history: function(history) {
|
255
|
+
_opts.history = history;
|
256
|
+
},
|
257
|
+
tracker: function(tracker) {
|
258
|
+
_opts.tracker = tracker;
|
259
|
+
},
|
260
|
+
title: function(title) {
|
261
|
+
_st(function() {
|
262
|
+
_title = _d.title = title;
|
263
|
+
if (_juststart && _iframe && _iframe.contentWindow && _iframe.contentWindow.document) {
|
264
|
+
_iframe.contentWindow.document.title = title;
|
265
|
+
_juststart = false;
|
266
|
+
}
|
267
|
+
if (!_justset && _mozilla)
|
268
|
+
_l.replace(_l.href.indexOf('#') != -1 ? _l.href : _l.href + '#');
|
269
|
+
_justset = false;
|
270
|
+
}, 50);
|
271
|
+
},
|
272
|
+
value: function(value) {
|
273
|
+
value = _ec(_dc(_strictCheck(value, true)));
|
274
|
+
if (value == '/') value = '';
|
275
|
+
if (_value == value) return;
|
276
|
+
_justset = true;
|
277
|
+
_value = value;
|
278
|
+
_silent = true;
|
279
|
+
_update();
|
280
|
+
_stack[_h.length] = _value;
|
281
|
+
if (_safari) {
|
282
|
+
if (_opts.history) {
|
283
|
+
_l[ID][_l.pathname] = _stack.toString();
|
284
|
+
_length = _h.length + 1;
|
285
|
+
if (_version < 418) {
|
286
|
+
if (_l.search == '') {
|
287
|
+
_form.action = '#' + _value;
|
288
|
+
_form.submit();
|
289
|
+
}
|
290
|
+
} else if (_version < 523 || _value == '') {
|
291
|
+
var evt = _d.createEvent('MouseEvents');
|
292
|
+
evt.initEvent('click', true, true);
|
293
|
+
var anchor = _d.createElement('a');
|
294
|
+
anchor.href = '#' + _value;
|
295
|
+
anchor.dispatchEvent(evt);
|
296
|
+
} else {
|
297
|
+
_l.hash = '#' + _value;
|
298
|
+
}
|
299
|
+
} else {
|
300
|
+
_l.replace('#' + _value);
|
301
|
+
}
|
302
|
+
} else if (_value != _getHash()) {
|
303
|
+
if (_opts.history)
|
304
|
+
_l.hash = '#' + _ieLocal(_value, true);
|
305
|
+
else
|
306
|
+
_l.replace('#' + _value);
|
307
|
+
}
|
308
|
+
if ((_msie && _version < 8) && _opts.history) {
|
309
|
+
_st(_htmlWrite, 50);
|
310
|
+
}
|
311
|
+
if (_safari)
|
312
|
+
_st(function(){ _silent = false; }, 1);
|
313
|
+
else
|
314
|
+
_silent = false;
|
315
|
+
}
|
316
|
+
};
|
317
|
+
|
318
|
+
var ID = 'jQueryAddress',
|
319
|
+
FUNCTION = 'function',
|
320
|
+
UNDEFINED = 'undefined',
|
321
|
+
_browser = $.browser,
|
322
|
+
_version = parseFloat($.browser.version),
|
323
|
+
_mozilla = _browser.mozilla,
|
324
|
+
_msie = _browser.msie,
|
325
|
+
_opera = _browser.opera,
|
326
|
+
_safari = _browser.safari,
|
327
|
+
_supported = false,
|
328
|
+
_t = _getWindow(),
|
329
|
+
_d = _t.document,
|
330
|
+
_h = _t.history,
|
331
|
+
_l = _t.location,
|
332
|
+
_si = setInterval,
|
333
|
+
_st = setTimeout,
|
334
|
+
_dc = decodeURI,
|
335
|
+
_ec = encodeURI,
|
336
|
+
_agent = navigator.userAgent,
|
337
|
+
_iframe,
|
338
|
+
_form,
|
339
|
+
_url,
|
340
|
+
_title = _d.title,
|
341
|
+
_length = _h.length,
|
342
|
+
_silent = false,
|
343
|
+
_loaded = false,
|
344
|
+
_justset = true,
|
345
|
+
_juststart = true,
|
346
|
+
_stack = [],
|
347
|
+
_listeners = {},
|
348
|
+
_value = _getHash(),
|
349
|
+
_api = {},
|
350
|
+
_opts = {history: true, strict: true};
|
351
|
+
|
352
|
+
if (_msie)
|
353
|
+
_version = parseFloat(_agent.substr(_agent.indexOf('MSIE') + 4));
|
354
|
+
|
355
|
+
_supported =
|
356
|
+
(_mozilla && _version >= 1) ||
|
357
|
+
(_msie && _version >= 6) ||
|
358
|
+
(_opera && _version >= 9.5) ||
|
359
|
+
(_safari && _version >= 312);
|
360
|
+
|
361
|
+
if (_supported) {
|
362
|
+
|
363
|
+
for (var i = 1; i < _length; i++)
|
364
|
+
_stack.push('');
|
365
|
+
|
366
|
+
_stack.push(_getHash());
|
367
|
+
|
368
|
+
if (_msie && _l.hash != _getHash())
|
369
|
+
_l.hash = '#' + _ieLocal(_getHash(), true);
|
370
|
+
|
371
|
+
if (_opera)
|
372
|
+
history.navigationMode = 'compatible';
|
373
|
+
|
374
|
+
_searchScript(document);
|
375
|
+
var _qi = _url.indexOf('?');
|
376
|
+
if (_url && _qi > -1) {
|
377
|
+
var param, params = _url.substr(_qi + 1).split('&');
|
378
|
+
for (var i = 0, p; p = params[i]; i++) {
|
379
|
+
param = p.split('=');
|
380
|
+
if (/^(history|strict)$/.test(param[0])) {
|
381
|
+
_opts[param[0]] = (isNaN(param[1]) ? /^(true|yes)$/i.test(param[1]) : (parseInt(param[1]) != 0));
|
382
|
+
}
|
383
|
+
if (/^tracker$/.test(param[0]))
|
384
|
+
_opts[param[0]] = param[1];
|
385
|
+
}
|
386
|
+
}
|
387
|
+
|
388
|
+
$(_load);
|
389
|
+
|
390
|
+
} else if ((!_supported && _l.href.indexOf('#') != -1) ||
|
391
|
+
(_safari && _version < 418 && _l.href.indexOf('#') != -1 && _l.search != '')){
|
392
|
+
_d.open();
|
393
|
+
_d.write('<html><head><meta http-equiv="refresh" content="0;url=' +
|
394
|
+
_l.href.substr(0, _l.href.indexOf('#')) + '" /></head></html>');
|
395
|
+
_d.close();
|
396
|
+
} else {
|
397
|
+
_track();
|
398
|
+
}
|
399
|
+
|
400
|
+
$.each(('init,change').split(','), function(i, name){
|
401
|
+
_api[name] = function(data, fn){
|
402
|
+
$($.address).bind(name, fn || data, fn && data);
|
403
|
+
return this;
|
404
|
+
};
|
405
|
+
});
|
406
|
+
|
407
|
+
$.each(('baseURL,strict,history,tracker,title,value').split(','), function(i, name){
|
408
|
+
_api[name] = function(value){
|
409
|
+
if (typeof value != 'undefined') {
|
410
|
+
if (_supported)
|
411
|
+
_setters[name](value);
|
412
|
+
return $.address;
|
413
|
+
} else {
|
414
|
+
return _getters[name]();
|
415
|
+
}
|
416
|
+
};
|
417
|
+
});
|
418
|
+
|
419
|
+
$.each(('path,pathNames,queryString,parameter,parameterNames').split(','), function(i, name){
|
420
|
+
_api[name] = function(value){
|
421
|
+
return _getters[name](value);
|
422
|
+
};
|
423
|
+
});
|
424
|
+
|
425
|
+
return _api;
|
426
|
+
|
427
|
+
})();
|
428
|
+
|
429
|
+
$.fn.address = function (fn) {
|
430
|
+
$(this).click(function() {
|
431
|
+
var value = fn ? fn.call(this) :
|
432
|
+
/address:/.test($(this).attr('rel')) ? $(this).attr('rel').split('address:')[1].split(' ')[0] :
|
433
|
+
$(this).attr('href').replace(/^#/, '');
|
434
|
+
$.address.value(value);
|
435
|
+
return false;
|
436
|
+
});
|
437
|
+
};
|
438
|
+
|
439
|
+
}(jQuery));
|