if(!LBS){var LBS={}}LBS.STATESAVER={};LBS.STATESAVER.State=function(J){var E=LBS.STATESAVER;var C=E.Point.COORDINATE_SYSTEM;var A=E.NamedLocation.TYPE;this.setParam=function(L,N){for(var M in H){if(H[M].name==L){H[M].value=N;return}}H.push({name:L,value:N,type:E.State.PARAM_TYPE.VALUE})};this.getParam=function(L){for(var M in H){if(H[M].name==L){return H[M].value}}return null};this.setArrayParam=function(M,L){for(var N in H){if(H[N].name==M){H[N].value=L;return}}H.push({name:M,value:L,type:E.State.PARAM_TYPE.VALUE_ARRAY})};this.getArrayParam=function(M){var L=null;for(var N in H){if(H[N].name==M){L=H[N].value}}if(L==null){return null}return L};this.setLocation=function(M,L){F.setParam(M,D(L))};this.setLocationArray=function(N,L){var M=[];for(var O=0;O<L.length;O++){M.push(D(L[O]))}F.setArrayParam(N,M)};this.getLocation=function(L){var M=F.getParam(L);if(M===null){return null}return I(M)};this.getLocationArray=function(M){var O=F.getArrayParam(M);if(O==null){return null}var L=[];for(var N in O){L.push(I(O[N]))}return L};this.getUrlHash=function(){var P="";for(var N in H){if(H[N].name!==null&&H[N].value!==null&&H[N].type!==null){P+=encodeURIComponent(H[N].name)+"(";if(H[N].type===E.State.PARAM_TYPE.VALUE){var O=""+H[N].value;O=O.replace(/[\\]/g,"\\\\");O=O.replace(/[(]/g,"\\(");O=O.replace(/[)]/g,"\\)");P+=encodeURIComponent(O)}else{if(H[N].type===E.State.PARAM_TYPE.VALUE_ARRAY){var L=H[N].value;for(var M in L){var O=""+L[M];O=O.replace(/[\\]/g,"\\\\");O=O.replace(/[(]/g,"\\(");O=O.replace(/[)]/g,"\\)");P+="("+encodeURIComponent(O)+")"}}}P+=")"}}return P};var B=function(T){if(T.length<5){return}if(T.charAt(0)=="#"){T=T.substring(1,T.length)}var P="";var U="";for(var O=0;O<T.length;O++){var S=T.charAt(O);if(U=="\\"){P+=S}else{if(S=="("){var L=1;var N="";var Q=false;U=S;O++;while(O<T.length){S=T.charAt(O);if(U=="\\"){N+=S}else{if(S=="("){L++;Q=true;N+=S}else{if(S==")"){L--;if(L==0){if(Q==false){var M=G(N);F.setParam(decodeURIComponent(P),M)}else{var R=K(N);F.setArrayParam(decodeURIComponent(P),R)}break}else{N+=S}}else{N+=S}}}U=S;O++}P=""}else{if(S!="\\"){P+=S}}}U=T.charAt(O)}};var G=function(M){var P="";var O="";for(var L=0;L<M.length;L++){var N=M.charAt(L);if(P=="\\"||N!="\\"){O+=N}P=N}return decodeURIComponent(O)};var K=function(N){var Q="";var P=[];var M="";for(var L=0;L<N.length;L++){var O=N.charAt(L);if(Q=="\\"){M+=O}else{if(O==")"){P.push(G(M));M=""}else{if(O!="("){M+=O}}}Q=O}return P};var D=function(L){if(L instanceof E.Location!=true){return""}var M="";if(L instanceof E.Point==true){if(L.getCoordinateSystem()===C.INTERNAL){M="point"}else{if(L.getCoordinateSystem()===C.KKJ3){M="kkj3"}else{if(L.getCoordinateSystem()===C.WGS84){M="wgs84"}else{return}}}return M+"*"+L.getX()+"*"+L.getY()}else{if(L instanceof E.NamedLocation==true){if(L.getType()===A.POI){M="poi"}else{if(L.getType()===A.ADDRESS){M="address"}else{if(L.getType()===A.STREET){M="street"}else{return}}}return M+"*"+L.getName()}}};var I=function(N){var M=N.split("*");var L=null;switch(M[0]){case"point":if(M.length!=3){return null}return new E.Point(M[1],M[2],C.INTERNAL);case"kkj3":if(M.length!=3){return null}return new E.Point(M[1],M[2],C.KKJ3);case"wgs84":if(M.length!=3){return null}return new E.Point(M[1],M[2],C.WGS84);case"poi":if(M.length!=2){return null}return new E.NamedLocation(M[1],A.POI);case"address":if(M.length!=2){return null}return new E.NamedLocation(M[1],A.ADDRESS);case"street":if(M.length!=2){return null}return new E.NamedLocation(M[1],A.STREET);default:return null}};var H=[];var F=this;if(J){B(J)}};LBS.STATESAVER.State.PARAM_TYPE={VALUE:1,VALUE_ARRAY:2};LBS.STATESAVER.UrlHandler=function(C){var G=LBS.STATESAVER;this.setParam=function(K,L){var J=A.getParam(K);if(J!==L){A.setParam(K,L);E=true}};this.setArrayParam=function(K,J){A.setArrayParam(K,J);E=true};this.getParam=function(J){return A.getParam(J)};this.getArrayParam=function(J){return A.getArrayParam(J)};this.setLocation=function(K,J){A.setLocation(K,J);E=true};this.setLocationArray=function(K,J){A.setLocationArray(K,J);E=true};this.getLocation=function(J){return A.getLocation(J)};this.getLocationArray=function(J){return A.getLocationArray(J)};this.addHashChangeCBF=function(J){F.push(J)};this.getState=function(){I();return new G.State(B)};var I=function(){var K=false;if(window.location.hash!=B){if(window.location.reload){window.location.reload()}else{window.location.href=window.location.href}K=true}if(E){var L=A.getUrlHash();if(L.length<1){L="#"}window.location.hash=L}B=window.location.hash;E=false;if(K){for(var J in F){F[J](H)}}};var H=this;var A=new G.State(window.location.hash);var D=C;var F=[];var B=window.location.hash;var E=false;window.setInterval(I,D)};LBS.STATESAVER.Location=function(){};LBS.STATESAVER.Point=function(A,H,D){var F=LBS.STATESAVER;var G=F.Point.COORDINATE_SYSTEM;F.Location.call();this.getX=function(){return E};this.setX=function(I){if(typeof(I)=="number"){E=I}else{E=parseFloat(I)}};this.getY=function(){return C};this.setY=function(I){if(typeof(I)=="number"){C=I}else{C=parseFloat(I)}};this.getCoordinateSystem=function(){return B};this.setCoordinateSystem=function(I){if(I===G.KKJ3||I===G.WGS84||I===G.INTERNAL){B=I}};var E;var C;var B=G.INTERNAL;this.setX(A);this.setY(H);this.setCoordinateSystem(D)};LBS.STATESAVER.Point.prototype=new LBS.STATESAVER.Location;LBS.STATESAVER.Point.prototype.constructor=LBS.STATESAVER.Point;LBS.STATESAVER.Point.COORDINATE_SYSTEM={INTERNAL:1,KKJ3:2,WGS84:3};LBS.STATESAVER.NamedLocation=function(C,E){var D=LBS.STATESAVER;var F=D.NamedLocation.TYPE;D.Location.call();this.getName=function(){return A};this.setName=function(G){A=G};this.getType=function(){return B};this.setType=function(G){if(G===F.POI||G===F.ADDRESS||G===F.STREET||G===F.UNKNOWN){B=G}};var A=C;var B=F.UNKNOWN;this.setType(E)};LBS.STATESAVER.NamedLocation.prototype=new LBS.STATESAVER.Location;LBS.STATESAVER.NamedLocation.prototype.constructor=LBS.STATESAVER.NamedLocation;LBS.STATESAVER.NamedLocation.TYPE={UNKNOWN:1,POI:2,ADDRESS:3,STREET:4};