﻿//**************************************************
//   History Functions
//**************************************************
var recent_max=30;
var favorite_max=30;
function Load_History(type){
	var tmpArr=[];
	var list;
	if(type=="F"){
 		list=getCookie("HistoryF").split("$");
	}else{
		list=getCookie("HistoryR").split("$");
	}
	list.pop();
	var gtitle,gurl,gdate;
	for(var i=0;i<list.length;i++){
		gtitle=String(list[i]).split("{#}")[0];
		gurl=String(list[i]).split("{#}")[1];
		gdate=String(list[i]).split("{#}")[2];
	    tmpArr.push([gtitle,gurl,gdate]);	
	}
	switch(getCookie("sortType")){
	  case "TIME":
		tmpArr.sort(function (x,y){ return y[2]-x[2];});
	  break;
	  case "AZ":
	    tmpArr.sort(function(x, y){  return x[0].localeCompare(y[0]);});
	  break;	
	}
	return tmpArr;
}

/***********************************
*
*  here to add one history record
*
************************************/
function AddSingleItem(type,title,url) {
	var cookieStr,checkStr,curStr,list,oldStr;
	var dt=new Date();
	curStr=title+"{#}"+url+"{#}"+dt.getTime()+"$";
	switch(type){
	  case "R":
	  case "HistoryR":
	     cookieStr=getCookie("HistoryR");
		 list=cookieStr.split("$");
		 list.pop();
		 checkStr=CheckItemIn(type,title,url);
		 if(checkStr==""){
			 //不在列表中
			 //alert("不在列表"); 
			if(list.length<recent_max){
				cookieStr=cookieStr+curStr;
			}else{
				oldStr=getOldestItem("R");
				cookieStr=cookieStr.replace(oldStr,curStr);
			}
			cookieStr=removeOverItem(cookieStr);
		 }else{
			// alert("在列表");
			if(list.length<=recent_max){
				cookieStr=cookieStr.replace(checkStr,curStr);
			}else{
				oldStr=getOldestItem("R");
 				cookieStr=cookieStr.replace(oldStr,curStr);
			}
			cookieStr=removeOverItem(cookieStr);
 		  }
		  setCookie("HistoryR",cookieStr,365);
		 break;
	  case "F":
	  case "HistoryF":
	       cookieStr=getCookie("HistoryF");
		   list=cookieStr.split("$");
		   list.pop();
		   if(list.length<favorite_max){
			      cookieStr=cookieStr+curStr;
		   }else{
				 alert("Max favorites reached!\n Delete older favorites to add new ones!");
		   }
		   setCookie("HistoryF",cookieStr,365);
		   return;
	       if(CheckItemInFav(title,url)==null){
				list=cookieStr.split("$");
				list.pop();
				if(list.length<favorite_max){
				   cookieStr=cookieStr+curStr;
				   //cookieStr=removeOverItem(cookieStr);
				   setCookie("HistoryF",cookieStr,365);
 				}else{
				   alert("Max favorites reached!\n Delete older favorites to add new ones!");
				   return;
				   //cookieStr=cookieStr.replace(getOldestItem("F"),"");
				   //cookieStr=cookieStr+curStr;
				}
		   }
		    setCookie("HistoryF",cookieStr,365);
 	  break;	
	}
}

function removeOverItem(cookieStr){
	type=getCookie("curTab");
	var list=cookieStr.split("$");
	list.pop();
	var i,gtitle,gurl,gdate,popnum,cookieStr,tmpStr;
	var	tmpArr=[];
	for (i in list){
		gtitle=String(list[i]).split("{#}")[0];
		gurl=String(list[i]).split("{#}")[1];
		gdate=String(list[i]).split("{#}")[2];
	    tmpArr.push([gtitle,gurl,gdate]);	
	}
	tmpArr.sort(function (x,y){ return y[2]-x[2];});
	switch(type){
		case "R":
			if(tmpArr.length>recent_max){
				popnum=tmpArr.length-recent_max;
				for(i=recent_max;i<tmpArr.length;i++){
					tmpStr=tmpArr[i][0]+"{#}"+tmpArr[i][1]+"{#}"+tmpArr[i][2]+"$";
					cookieStr=cookieStr.replace(tmpStr,"");
				}
			   //alert(cookieStr);
			}
			break;
		case "F":
			if(tmpArr.length>favorite_max){
				popnum=tmpArr.length-favorite_max;
				for(i=favorite_max;i<tmpArr.length;i++){
					tmpStr=tmpArr[i][0]+"{#}"+tmpArr[i][1]+"{#}"+tmpArr[i][2]+"$";
					cookieStr=cookieStr.replace(tmpStr,"");
				}
			   //alert(cookieStr);
			}
			break;
	 }
	return cookieStr;;
 }
function CheckItemInFav(title,url){
	var list,i,gtitle,gurl,gtime;
	var checkStr=null;
	list=getCookie("HistoryF").split("$");
	list.pop();
	for( i in list){
	  	gtitle=list[i].split("{#}")[0];
	  	gurl=list[i].split("{#}")[1];
	  	gtime=list[i].split("{#}")[2];
		if(gtitle==title && gurl==url){
		   checkStr=list[i];
		   break; 
		}
	}
	if(checkStr==null){
			list=getCookie("HistoryF1").split("$");
			list.pop();
			for( i in list){
				gtitle=list[i].split("{#}")[0];
				gurl=list[i].split("{#}")[1];
				gtime=list[i].split("{#}")[2];
				if(gtitle==title && gurl==url){
				   checkStr=list[i];
				   break; 
		         }
			}
	}
	return checkStr;
}


/* fetch oldest list str */
function getOldestItem(type){
	var tmpArr=[];
 	var list=getCookie("History"+type).split("$");
	list.pop();
	var i,gtitle,gurl,gdate,popnum,cookieStr,tmpStr;
	for (i in list){
		gtitle=String(list[i]).split("{#}")[0];
		gurl=String(list[i]).split("{#}")[1];
		gdate=String(list[i]).split("{#}")[2];
	    tmpArr.push([gtitle,gurl,gdate]);	
	}
	tmpArr.sort(function (x,y){ return y[2]-x[2];});
	var oldItem=tmpArr[tmpArr.length-1];
	//alert(oldItem);
    return oldItem[0]+"{#}"+ oldItem[1]+"{#}"+ oldItem[2]+"$";	
}


function CheckItemIn(type,title,url){
	//var dt=new Date();
	//newStr=title+"{#}"+url+"{#}"+dt.getTime()+"$";
	var list,i,gtitle,gurl,gtime;
	var finalResult="";
    switch(type){
	    case "R":
		    list=getCookie("HistoryR").split("$");
			list.pop();
			for(i in list){
			    gtitle=String(list[i]).split("{#}")[0];
				gurl=String(list[i]).split("{#}")[1];
				gtime=String(list[i]).split("{#}")[2]
				if(gtitle==title && gurl==url){
				  finalResult=title+"{#}"+url+"{#}"+gtime+"$";
				  break;	
				}
			 }

		break;
		case "F":
		   finalResult=null;
		   list=getCookie("HistoryF").split("$");
		   list.pop();
		   for(i in list){
 			    gtitle=String(list[i]).split("{#}")[0];
				gurl=String(list[i]).split("{#}")[1];
				gtime=String(list[i]).split("{#}")[2]
				if(gtitle==title && gurl==url){
				  finalResult=[1,title+"{#}"+url+"{#}"+gtime+"$"];
				  break;	
				}
		  }
		  if(!finalResult){
		   list=getCookie("HistoryF1").split("$");
		   list.pop();
		   for(i in list){
 			    gtitle=String(list[i]).split("{#}")[0];
				gurl=String(list[i]).split("{#}")[1];
				gtime=String(list[i]).split("{#}")[2]
				if(gtitle==title && gurl==url){
				  finalResult=[2,title+"{#}"+url+"{#}"+gtime+"$"];
				  break;	
				}
		  	}
		  }
		break;	
	}
	return finalResult;
	
}
function RemoveSingleItem(tabType,_id) {
	var list,i,gtitle,gurl,gtime,str2del;
	var cookieStr="";
	if (tabType=="R") {
		list=getCookie("HistoryR").split("$");
		cookieStr=getCookie("HistoryR");
	} else {
		list=getCookie("HistoryF").split("$");
		cookieStr=getCookie("HistoryF");
	}
	list.pop();
	//进行排序

	var tmpArr=[];
	for (i in list) {
		gtitle=String(list[i]).split("{#}")[0];
		gurl=String(list[i]).split("{#}")[1];
		gtime=String(list[i]).split("{#}")[2];
		tmpArr.push(list[i]);
		if (i==_id) {
			str2del=gtitle+"{#}"+gurl+"{#}"+gtime+"$";
			cookieStr=String(cookieStr).replace(str2del,"");
			break;
		}
	}
	switch (getCookie("sortType")) {
		case "TIME" :
			tmpArr.sort(function (x,y){ return y[2]-x[2];});
			break;
		case "AZ" :
			tmpArr.sort(function(x, y){  return x[0].localeCompare(y[0]);});
			break;
	}
	for (i in tmpArr) {
		gtitle=String(tmpArr[i]).split("{#}")[0];
		gurl=String(tmpArr[i]).split("{#}")[1];
		gtime=String(tmpArr[i]).split("{#}")[2];
		if (i==_id) {
			str2del=gtitle+"{#}"+gurl+"{#}"+gtime+"$";
			cookieStr=String(cookieStr).replace(str2del,"");
			break;
		}
	}
	if (tabType=="R") {
		setCookie("HistoryR",cookieStr,365);
	} else {
		setCookie("HistoryF",cookieStr,365);
	}
}

function RemoveSingleItemByTitle(tabType,_title,_url) {
	var list,i,gtitle,gurl,gtime,str2del,cookieStr;
	cookieStr=getCookie("History"+tabType);
	list=cookieStr.split("$");
	list.pop();
	for (i in list) {
		gtitle=String(list[i]).split("{#}")[0];
		gurl=String(list[i]).split("{#}")[1];
		gtime=String(list[i]).split("{#}")[2];
		if (gtitle==_title && gurl==_url) {
			str2del=gtitle+"{#}"+gurl+"{#}"+gtime+"$";
			cookieStr=String(cookieStr).replace(str2del,"");
			break;
		}
	}
	setCookie("History"+tabType,cookieStr,365);
}

//**************************************************
//    COOKIE Base Functions
//**************************************************
//read cookie
function getCookie(c_name) {
 	if (document.cookie.length>0) {
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1) {
			c_start=c_start + c_name.length+1 ;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) {
				c_end=document.cookie.length;
			}
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
//write cookie
function setCookie(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()+";path=/;");
}
//delete cookie
function DeleteCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    document.cookie = name + "=; expires=" + exp.toGMTString();
}

function CheckIsIn(type){
	var gtitle=document.title;
	var gurl=document.location.href;

	var type=type=="F"? "HistoryF": "HistoryR";
	var list=getCookie(type).split("$");
	//alert(type+"="+list);
	var gtitle,gurl,gdate;
	for(var i=0;i<list.length;i++){
		stitle=String(list[i]).split("{#}")[0];
		surl=String(list[i]).split("{#}")[1];
		sdate=String(list[i]).split("{#}")[2];
	    if(stitle==gtitle && surl==gurl){
		   return true;   
	   }	
	}
	return false;
}

