var CookieUtils = {
	ExpireUtils:function(){
		this.KEY_COOKIE_VALUE = "KEY_COOKIE_VALUE";
		this.KEY_EXPIRE_DATE = "KEY_EXPIRE_DATE";
		this.KEY_SUFFIX = null;
		this.timeout = 60000 ;//24*60*60*1000
		this.limitCount = 1;
		this.doActionBeforeExpire=function(){};
		this.checkExpire=function(){
			if (!this.KEY_SUFFIX) {
				alert("ERROR: CookieUtils.ExpireUtils.KEY_SUFFIX not set!");
				return false;
			}else if(!/\$/ig.test(this.KEY_COOKIE_VALUE)){
				this.KEY_COOKIE_VALUE += "$"+this.KEY_SUFFIX;
				this.KEY_EXPIRE_DATE += "$"+this.KEY_SUFFIX;
			}
			var cv = CookieUtils.getCookie(this.KEY_COOKIE_VALUE);
			var ct = CookieUtils.getCookie(this.KEY_EXPIRE_DATE);
			var expireDate = new Date();
			if(cv == ""){
				cv = this.limitCount;
				expireDate.setTime(expireDate.getTime()+this.timeout);
				CookieUtils.setCookie(this.KEY_EXPIRE_DATE,expireDate.getTime(),expireDate);
			}else{
				expireDate.setTime(ct);
			}
			if (cv > 0){
				cv--
				this.doActionBeforeExpire();
				CookieUtils.setCookie(this.KEY_COOKIE_VALUE,cv,expireDate);
				return false;
			}
			return true;
		};
	},
	setCookie:function(name,value,expiry,domain,path){ 
		var nameString = name + "=" + value;
		if (expiry && !expiry.toGMTString){//not date type
			try{
				expiry = parseInt(expiry);
			}catch(e){//not a number,no expire specified
				expiry = null;
			}
			if (expiry && typeof expiry == 'number'){//convert number to date
				var date = new Date();
				date.setTime(date.getTime()+expiry);
				expiry = date;
			}	
		}
		var expiryString = expiry ? (" ;expires = "+ expiry.toGMTString()) : ""; 
		var pathString = path ? "; path="+path:""
		var domainString = domain ? "; domain="+domain:""
		document.cookie = nameString + expiryString + pathString + domainString; 
	},
	getCookie:function(name) { 
		var str = document.cookie; 
		var p = new RegExp(name+'=([^;]+)(?=;|$)');
		if (p.test(str)) return unescape(RegExp.$1);
		return ""; 
	}
}
