function setCookie(name,value)
{
    var Days = 30; //?? cookie ???????? 30 ??
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

function setCookieByLogin(name,value)
{
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + 24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)) return unescape(arr[2]);
    else return null;
}
function delCookie(name)
{
		
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
var EnBase64Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var DeBase64Chars=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);
function EnBase64(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+=EnBase64Chars.charAt(c1>>2);
                        out+=EnBase64Chars.charAt((c1&0x3)<<4);
                        out+="==";
                        break;
                };
                c2=str.charCodeAt(i++);
                if(i==len)
                {
                        out+=EnBase64Chars.charAt(c1>>2);
                        out+=EnBase64Chars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
                        out+=EnBase64Chars.charAt((c2&0xF)<<2);
                        out+="=";
                        break;
                };
                c3=str.charCodeAt(i++);
                out+=EnBase64Chars.charAt(c1>>2);
                out+=EnBase64Chars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
                out+=EnBase64Chars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6));
                out+=EnBase64Chars.charAt(c3&0x3F);
        }
        return out;
}
function DeBase64(str)
{
        var out,i,len;
        var c1,c2,c3;
        if(str==null || str ==""){
           return "";
        }
        len=str.length;
        i=0;
        out="";
        tmp="";
        while(i<len)
        {
                c1=str.charCodeAt(i++)&0xff;
                if (c1=='=')
                {
                        return out;
                }
                c2=str.charCodeAt(i++)&0xff;
                if (c2=='=')
                {
                        return out;
                }
                c3=str.charCodeAt(i++)&0xff;
                if (c3==61)
                {
                        t1= DeBase64Chars[c1];
                        t2= DeBase64Chars[c2];
                        k1= ((t1&0x3F)<<2)|((t2&0x30)>>4);
                        out+=String.fromCharCode(k1);
                        return out;
                }
                c4=str.charCodeAt(i++)&0xff;
                if (c4==61)
                {
                        t1= DeBase64Chars[c1];
                        t2= DeBase64Chars[c2];
                        t3= DeBase64Chars[c3];
                        k1= ((t1&0x3F)<<2)|((t2&0x30)>>4);
                        k2= ((t2&0x0F)<<4)|((t3&0x3D)>>2);
                        out+=String.fromCharCode(k1,k2);
                        return out;
                }
                t1= DeBase64Chars[c1];
                t2= DeBase64Chars[c2];
                t3= DeBase64Chars[c3];
                t4= DeBase64Chars[c4];
                k1= ((t1&0x3F)<<2)|((t2&0x30)>>4);
                k2= ((t2&0x0F)<<4)|((t3&0x3D)>>2);
                k3= ((t3&0x03)<<6)|(t4&0x3F);
                out+=String.fromCharCode(k1,k2,k3);
        }
        return out;
}
function utf16to8(str)
{
        var out,i,len,c;
        out="";
        len=str.length;
        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 saveAsToCookie(xmlStr){
    if(isServer){
      setDefaultText(true);
      setCookie("userCookiePath",EnBase64(userCookiePath));
    }else{
        setDefaultText(true);
        var xmlDoc = stringToXmlDoc(xmlStr);
        setSaveUserModules(xmlDoc);
        setSaveCss(xmlDoc);
        saveCurrXML = makeXmlToCookieStr(xmlDoc);
        
        userId = DeBase64(getCookie("userId"));
        if(userId=="") userId="guest";
        setCookie("userId",EnBase64(userId));
        setCookie("saveCss",EnBase64(saveCss));
        //alert("public:"+public);
        setCookie("public",EnBase64(public));
        setCookie("saveCurrXML",EnBase64(saveCurrXML));
        setCookie("myTitle",$('myTitle').innerText);
        xmlDoc=null;
    }
};

function getUserCookiePath(){
    userCookiePath = DeBase64(getCookie("userCookiePath"));
    return userCookiePath;
};

function getCookieXML(){
    if(!testCookie){
        alert("客户端禁用Cookie，请查看帮助中心！");
    }
    var userCookieStr = DeBase64(getCookie("saveCurrXML"));
    /*alert("userCookieStr:"+userCookieStr);*/
    var xmlStr = makeCookieStrToXml(userCookieStr);
    var xml = stringToXmlDoc(xmlStr);
    return xml;
}

function testCookie(){
    try{
       setCookie("test","test");
       return true;
    }catch(e){
       return false;
    }
}

function backDefault(){
    if(!testCookie){
        alert("客户端禁用Cookie，请查看帮助中心！");
    }
    if(confirm("您确定要还原到最原始的状态吗？\n并且页面将重新刷新！")){
        delCookie("userId");
        delCookie("userPwd");
        delCookie("saveCss");
        delCookie("public");
        delCookie("saveCurrXML");
        delCookie("userCookiePath");
        if(userId == "guest"){
	        window.location.reload();
	    }else{
	        deleteUserXml();
        }
    }

}

function deleteUserXml(){
	var sUrl = serverRoot + "deleteUserXmlServlet?userid="+userId;
	postAjaxXML(sUrl , "" , reloadDefault);
}

function reloadDefault(ajax){
	if(ajax.readyState==4 && ajax.status==200){
		window.location.reload();
	}
}

function getUserID(){
    var b=getCookie("userId");
	if(b==null||b==''){
		return null;
	}else{
    	var str=DeBase64(b).split(",");
		return str[1];
	}
}

function saveUserInfoToCookie(name,pwd){
    var isMemo = checkLoginStat();
    var userPwd = "";
    var formUserId = "";
    if(isMemo){
        setCookieByLogin("userId",EnBase64(name));
        setCookieByLogin("userPwd",EnBase64(pwd));
        return true;
    }
    return false;
};

function getUserInfo(){
    var usrArr = new Array();
    var tmpUserId = DeBase64(getCookie("userId"));
    var tmpUserPwd = DeBase64(getCookie("userPwd"));
    usrArr[0] = tmpUserId;
    usrArr[1] = tmpUserPwd;
    /*alert("cookieValue:\n\ruserId:"+tmpUserId+"\n\ruserPwd:"+tmpUserPwd);*/
    return usrArr;
};

function delLoginUserInfo(){
   try{
   		delCookie("userId");
       delCookie("userPwd");
   }catch(e){}
   return true;
};

function checkIsLoginIn(){
    var tmpUserArr = new Array();
    tmpUserArr = getUserInfo();
    if(tmpUserArr[1] != null && tmpUserArr[1] !=""){
        /*alert("checkIsLoginIn:"+tmpUserArr[1]);*/
        return true;
    }
    return false;
};
