hash = new hashManager(); function hashManager() { this.tmphash = ''; this.handleHistory = hashManager_handleHistory; this.startEdit = hashManager_startEdit; this.stopEdit = hashManager_stopEdit; this.getHashData = hashManager_getHashData; this.setHashData = hashManager_setHashData; this.setHashDataNode = hashManager_setHashDataNode; this.getHash = hashManager_getHash; this.curhash = this.getHash(); window.setInterval("hash.handleHistory()", 100); } function hashManager_handleHistory() { if (this.getHash() != this.curhash ) { this.curhash = this.getHash(); jaf_rehash(); } } function hashManager_getHash() { return window.location.hash.substr(1); } function hashManager_startEdit() { this.tmphash = this.getHash(); } function hashManager_stopEdit() { if (this.tmphash != this.getHash()) { this.curhash = this.tmphash; window.location.hash = this.tmphash; } this.tmphash = ""; } function hashManager_getHashData( id ) { var values = this.getHash().split('&'); for (var i = 0; i < values.length; i++) { var split = values[i].split('='); if (split[0] == id) { return split[1]; } } return ''; } function hashManager_setHashData( id , value ) { var newhash = ""; var hashnames = new Array(); var hashvalues = new Array(); var values = this.tmphash.split('&'); for (var valuecnt = 0; valuecnt < values.length; valuecnt++) { var split = values[valuecnt].split('='); if (split[0] != "") { hashnames.push(split[0]); hashvalues.push(split[1]); } } var match = 0; for (var valuecnt = 0; valuecnt < hashnames.length; valuecnt++) { if (hashnames[valuecnt] == id) { hashvalues[valuecnt] = value; var match = 1; } } if (match == 0) { hashnames.push(id); hashvalues.push(value); } for (var hashcnt = 0; hashcnt < hashnames.length; hashcnt++) { var newhash = newhash + hashnames[hashcnt] + "=" + hashvalues[hashcnt] + "&"; } this.tmphash = newhash; } function hashManager_setHashDataNode( HashNode ) { var newhash = ""; var hashnames = new Array(); var hashvalues = new Array(); var values = this.tmphash.split('&'); for (var valuecnt = 0; valuecnt < values.length; valuecnt++) { var split = values[valuecnt].split('='); if (split[0] != "") { hashnames.push(split[0]); hashvalues.push(split[1]); } } for (var hashcnt = 0; hashcnt < HashNode.getElementsByTagName('value').length; hashcnt++) { var match = 0; var hashname = HashNode.getElementsByTagName('value')[hashcnt].attributes[0].nodeValue; if (HashNode.getElementsByTagName('value')[hashcnt].childNodes.length > 0) { var hashvalue = HashNode.getElementsByTagName('value')[hashcnt].childNodes[0].nodeValue; } else { var hashvalue = ""; } for (var valuecnt = 0; valuecnt < hashnames.length; valuecnt++) { if (hashnames[valuecnt] == hashname) { hashvalues[valuecnt] = hashvalue; var match = 1; } } if (match == 0) { hashnames.push(hashname); hashvalues.push(hashvalue); } } for (var hashcnt = 0; hashcnt < hashnames.length; hashcnt++) { if (hashvalues[hashcnt] != '') { newhash = newhash + hashnames[hashcnt] + "=" + hashvalues[hashcnt] + "&"; } } this.tmphash = newhash; }