//截取字符串 包含中文处理
//(串,长度,增加...) 
function subString(str, len, hasDot){
    var newLength = 0;
    var newStr = "";
    var chineseRegex = /[^\x00-\xff]/g;
    var singleChar = "";
    var strLength = str.replace(chineseRegex,"**").length;
    for(var i = 0;i < strLength;i++){
        singleChar = str.charAt(i).toString();
        if(singleChar.match(chineseRegex) != null){
            newLength += 2;
        } else {
            newLength++;
        }
        if(newLength > len){
            break;
        }
        newStr += singleChar;
    }
    
    if(hasDot && strLength > len){
        newStr += "...";
    }
    return newStr;
}

//cookie
var Cookie = {
	escapeEx: function(str){
		return encodeURIComponent(str).replace(/\+/g,"＋");
	},
	
	//读取cookie
	get: function(key){
		var search = key+"=";
		if(document.cookie.length>0){
			var offset = document.cookie.indexOf(search);
			if(offset != -1){
				offset += search.length;
				var end = document.cookie.indexOf(";",offset);
				if(end == -1) end = document.cookie.length;
				return unescape(document.cookie.substring(offset,end));
			}
			return "";
		}
		return "";
	},
	
	//设置cookie, expire以微秒为单位 默认为1年
	set: function(key, value, expire){
		var today = new Date();
		var expires = new Date();
		var expire = expire || 1000*60*60*24*365;
		value = value.toString();
		expires.setTime(today.getTime() + expire);
		document.cookie = key + "=" + this.escapeEx(value) + ";path=/; expires=" + expires.toGMTString();
	},
	
	//置空cookie
	del: function(key){
		this.set(key, '', -1000*60*60*24);
	}
};

Array.prototype.indexOf = function(obj){
	for(i=0;i<this.length;i++){
		if(this[i]===obj){
			return i;
		}
	}
	return -1;
};

//最近浏览页列表
(function(){
	var recent = window.recent = {
		key: '__recent',
		len: 20,
		
		//初始化
		init: function(){
			var url = document.location.href;
			var arr = this.get();
			
			var index = arr.indexOf(url);
			if(index > 0){
				arr.splice(index, 1);
				if(/^http:\/\//i.test(url)){
					arr.unshift(url);
				}
			}else if(index == 0){
				return this;
			}else{
				arr.unshift(url);
			}
			
			//限制长度
			if(arr.length > this.len){
				arr.splice(this.len);
			}
			
			Cookie.set(this.key, arr);
			return this;
		},
		
		//取值
		get: function(){
			arr = Cookie.get(this.key).split(',');
			return arr;
		},
		
		//清空
		empty: function(){
			Cookie.del(this.key);
		},
		
		//输出
		output: function(callback){
			if(!window['__historyfunc']){
				window['__historyfunc'] = callback;
			}
			__historyfunc(this.get());
		}
	}
})();

//run
recent.init().output(function(data){
	var obj = document.getElementById('recent');
	if(!obj) return false;
	for(i in data){
		if(!/^http:\/\//i.test(data[i])) continue;
		var li = document.createElement("li");
		li.innerHTML = '<a href="' + data[i] + '">' + subString(data[i], 38, true) + '</a>';
		obj.appendChild(li);
	}
});
