/*
  setValue :Cookies.$(name, [value], [expires]); 
  getValue :Cookies.$(name);
  setValue :Cookies.$("name", "panxuepeng", "40m1h1d");
  有效期是40分钟1小时1天，m,h,d的顺序随意，没有次序限制
  setValue :Cookies.$("name", "panxuepeng", "40m1h");
  setValue :Cookies.$("name", "panxuepeng", "1h");
  setValue :Cookies.$("name", "panxuepeng");
  
  getValue :Cookies.$("name"); return string
  getValue :Cookies.$("name1 name2 name3 ……"); return x=Array() x['name1']
  getValue :Cookies.$(); return Array()
  
  getValue :Cookies.clear(); clear all
  getValue :Cookies.clear(name); clear one
  getValue :Cookies.clear("name name2 name3 ……"); clear n
*/
if (typeof window.Cookies == "undefined"){
	var Cookies = {
		//
		_setExpires: function(minutes, hours, days) {
			var date = new Date( );
			if (minutes == null){
				minutes=1;
				hours=0;
				days=0;
			}
			else if (typeof minutes == "number"){
				hours = (hours == null) ?0: parseInt(hours);
				days = (days==null)?0: parseInt(days);
				
				hours =(isNaN(hours))? 0: hours;
				days  =(isNaN(days))? 0: days;		
			}
			else if (typeof minutes == "string") {
				var m = minutes.match(/\d+m/i);
				var h = minutes.match(/\d+h/i);
				var d = minutes.match(/\d+d/i);
				
				minutes=(m==null)? 1: parseInt(m);
				hours  =(h==null)? 0: parseInt(h);
				days   =(d==null)? 0: parseInt(d);
				
			}
			else if (typeof minutes == "object") {
				return minutes;
			}
		
			date.setDate(date.getDate() + days);
			date.setHours(date.getHours() + hours);
			date.setMinutes(date.getMinutes() + minutes);
			return date;
		},
		
		// utility function called by getCookie( )
		_getCookieVal:function(offset) {
			var endstr = document.cookie.indexOf (";", offset);
			if (endstr == -1) {
				endstr = document.cookie.length;
			}
			return unescape(document.cookie.substring(offset, endstr));
		},
		
		// primary function to retrieve cookie by name
		getCookie:function(name) {
			var arg = name + "=";
			var alen = arg.length;
			var clen = document.cookie.length;
			var i = 0;
			while (i < clen) {
				var j = i + alen;
				if (document.cookie.substring(i, j) == arg) {
					return this._getCookieVal(j);
				}
				i = document.cookie.indexOf(" ", i) + 1;
				if (i == 0) break; 
			}
			return "";
		},
		
		getCookies : function(names){
			var _temp, _Cookie;
			if (names == null){
				_temp=false;
			}
			else if (typeof names != "string") {
				return false;
			}
			else if (names.indexOf(" ") == -1) {
				return this.getCookie(names);
			}
			else {
				names = names.replace(/\s{2, 10}/g," ");
				_temp = names.split(" ");
			}
			 _Cookie = new Array();
			 if(document.cookie.indexOf(";")!=-1){
				  var _sp,_name, _value, _coo, _ii=0; 
				  var _item=document.cookie.split("; "); 
				  var _itemlength=_item.length; 
				  
				  for(i=0; i<_itemlength; i++){
					_sp = _item[i].split("=");
					_name=_sp[0];
					_value =_sp[1];
					if (_temp != false){
						for (var j = _ii; j < _temp.length; j++){
							if (_temp[j] == _name){
								_ii = j;
								_coo = new Array();
          						_coo['name']=_name;
								_Cookie[j] = _coo;
								_Cookie[_name] = _value;
							}
						}
					}
					else {
						_coo = new Array();
          				_coo['name']=_name;
						_Cookie[i] = _coo;
						_Cookie[_name]=_value;
					}
				  }
			 } 
			 return _Cookie;  	
		},
		
		// store cookie value with optional details as needed
		setCookie:function(name, value, expires, path, domain, secure) {
			if (typeof expires != "object")
			expires = this._setExpires(expires);
			
			document.cookie = name + "=" + escape (value) +
				((expires) ? "; expires=" + expires : "") +
				((path) ? "; path=" + path : "") +
				((domain) ? "; domain=" + domain : "") +
				((secure) ? "; secure" : "");
		},
		
		$: function (name, value, expires) {
			if (name == null || name.indexOf(" ") != -1){
				return this.getCookies(name);
			}	
			else if (value == null){
				return this.getCookie(name);
			}
			else {
				this.setCookie(name, value, expires);
			}

		},
		
		clear : function(name){
			if (name == null || name == ""){
				var cookies = this.getCookies();
				
				for(i=0; i<cookies.length; i++){
					this.clear(cookies[i]['name']);
				}
			}
			else if (typeof name != "string") {
				
				return ;
			}
			else if (name.indexOf(" ") != -1) {
				name = name.split(" ");
				for (var i=0; i<name.length; i++)
					this.clear(name[i]);
			}			
			else if (this.getCookie(name)) {
				document.cookie = name + "=" +
					"; expires=Thu, 01-Jan-70 00:00:01 GMT";
			}
		},
		
		toString:function(){
			return document.cookie;	
		}
	}
}