annotate gis_gui/lib/jquery.history.js @ 222:b636b0417aab

implement Google Search
author fknauft
date Fri, 01 Apr 2011 10:53:06 +0200
parents 7f008e782563
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
1 /**
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
2 * jQuery history event v0.1
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
3 * Copyright (c) 2008 Tom Rodenberg <tarodenberg gmail com>
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
4 * Licensed under the GPL (http://www.gnu.org/licenses/gpl.html) license.
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
5 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
6 (function($) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
7 var currentHash, previousNav, timer, hashTrim = /^.*#/;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
8
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
9 var msie = {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
10 iframe: null,
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
11 getDoc: function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
12 return msie.iframe.contentWindow.document;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
13 },
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
14 getHash: function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
15 return msie.getDoc().location.hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
16 },
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
17 setHash: function(hash) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
18 var d = msie.getDoc();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
19 d.open();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
20 d.close();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
21 d.location.hash = hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
22 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
23 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
24
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
25 var historycheck = function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
26 var hash = msie.iframe ? msie.getHash() : location.hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
27 if (hash != currentHash) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
28 currentHash = hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
29 if (msie.iframe) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
30 location.hash = currentHash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
31 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
32 var current = $.history.getCurrent();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
33 $.event.trigger('history', [current, previousNav]);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
34 previousNav = current;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
35 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
36 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
37
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
38 $.history = {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
39 add: function(hash) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
40 hash = '#' + hash.replace(hashTrim, '');
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
41 if (currentHash != hash) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
42 var previous = $.history.getCurrent();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
43 location.hash = currentHash = hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
44 if (msie.iframe) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
45 msie.setHash(currentHash);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
46 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
47 $.event.trigger('historyadd', [$.history.getCurrent(), previous]);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
48 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
49 if (!timer) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
50 timer = setInterval(historycheck, 100);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
51 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
52 },
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
53 getCurrent: function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
54 return currentHash.replace(hashTrim, '');
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
55 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
56 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
57
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
58 $.fn.history = function(fn) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
59 $(this).bind('history', fn);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
60 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
61
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
62 $.fn.historyadd = function(fn) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
63 $(this).bind('historyadd', fn);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
64 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
65
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
66 $(function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
67 currentHash = location.hash;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
68 if ($.browser.msie) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
69 msie.iframe = $('<iframe style="display:none" src="javascript:false;"></iframe>').prependTo('body')[0];
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
70 msie.setHash(currentHash);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
71 currentHash = msie.getHash();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
72 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
73 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
74 })(jQuery);