﻿function utf16to8(str){var out="",i,len=str.length,c;
for(i=0;i<len;i++){c=str.charCodeAt(i);
if((c>=0x0001) && (c<=0x007F)){
out+=str.charAt(i);
}else if(c>0x07FF){
out+=String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out+=String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out+=String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}else{
out+=String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out+=String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}}
return out;}
function utf8to16(str){var out="",i=0,len=str.length,c,char2,char3;
while(i<len){
c=str.charCodeAt(i++);
switch(c >> 4)
{
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
// 0xxxxxxx
out+=str.charAt(i-1);
break;
case 12: case 13:
// 110x xxxx 10xx xxxx
char2=str.charCodeAt(i++);
out+=String.fromCharCode(((c & 0x1F)<<6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2=str.charCodeAt(i++);
char3=str.charCodeAt(i++);
out+=String.fromCharCode(((c & 0x0F)<<12) |
((char2 & 0x3F)<<6) |
((char3 & 0x3F)<<0));
break;
}}
return out;}
var base64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars=new Array(
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,
52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,
-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
//客户端Base64编码
function base64encode(str){
var out,i,len;
var c1,c2,c3;
len=str.length;
i=0;
out="";
while(i<len){
c1=str.charCodeAt(i++) & 0xff;
if(i==len)
{
out+=base64EncodeChars.charAt(c1 >> 2);
out+=base64EncodeChars.charAt((c1 & 0x3)<<4);
out+="==";
break;}
c2=str.charCodeAt(i++);
if(i==len)
{
out+=base64EncodeChars.charAt(c1 >> 2);
out+=base64EncodeChars.charAt(((c1 & 0x3)<<4) | ((c2 & 0xF0) >> 4));
out+=base64EncodeChars.charAt((c2 & 0xF)<<2);
out+="=";
break;}
c3=str.charCodeAt(i++);
out+=base64EncodeChars.charAt(c1 >> 2);
out+=base64EncodeChars.charAt(((c1 & 0x3)<<4) | ((c2 & 0xF0) >> 4));
out+=base64EncodeChars.charAt(((c2 & 0xF)<<2) | ((c3 & 0xC0) >>6));
out+=base64EncodeChars.charAt(c3 & 0x3F);}
return out;}
//客户端Base64解码
function base64decode(str){
var c1,c2,c3,c4;
var i,len,out;
len=str.length;
i=0;
out="";
while(i<len){
/* c1 */
do{
c1=base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i<len && c1==-1);
if(c1==-1)
break;
/* c2 */
do{
c2=base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i<len && c2==-1);
if(c2==-1)
break;
out+=String.fromCharCode((c1<<2) | ((c2 & 0x30) >> 4));
/* c3 */
do{
c3=str.charCodeAt(i++) & 0xff;
if(c3==61)
return out;
c3=base64DecodeChars[c3];
} while(i<len && c3==-1);
if(c3==-1)
break;
out+=String.fromCharCode(((c2 & 0XF)<<4) | ((c3 & 0x3C) >> 2));
/* c4 */
do{
c4=str.charCodeAt(i++) & 0xff;
if(c4==61)
return out;
c4=base64DecodeChars[c4];
} while(i<len && c4==-1);
if(c4==-1)
break;
out+=String.fromCharCode(((c3 & 0x03)<<6) | c4);}
return out;}
(function(){var c=document.cookie;
if(user==null && c!=null && c.length>0)
{var u=".USER";var i=c.indexOf(u);if(i<0)return;
i+=u.length;
var e=c.indexOf(";",i);if(e<0)e=c.length;
c=utf8to16(base64decode(c.substr(i,e-i)));
var x=false;
if(window.ActiveXObject)
{var progIDs=["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument","Microsoft.XmlDom"];
for(var i=0;i<progIDs.length;i++){try{var xml=new ActiveXObject(progIDs[i]);xml.async=false;xml.loadXML(c);x=xml;if(x.documentElement){x=x.documentElement};break}catch(ex){}}}
else{try{var xml=new DOMParser();x=xml.parseFromString(c,"text/xml");}catch(ex){}}}
if(!x)return;
var t=621355968000000000,r=x.selectSingleNode("/userinfos");
if(!r)return;
var ns=r.selectNodes("add"),k;user={};
for(i=0;i<ns.length;i++){e=ns[i];k=e.getAttribute("key");v=(e.text)?(e.text):(e.textContent);
if(k=="UPDATE" || k.indexOf("TIME")>=0){v=new Date((v-t)/10000)}user[k]=v}currentPosition=GetSavedPosition();})();