function keyword(){
  this.splitword='{:split:}';
  this.keyword=new Array();
  this.a=new Array();
}
keyword.prototype={
	trim:function(s){
		s=s.replace(/^\s*/ig,"");
    s=s.replace(/\s*$/ig,"");
    return s;
	},
	addLink:function(keyword,aclass,target,href,title){
		this.keyword.push(keyword);
		this.a.push(aclass+this.splitword+target+this.splitword+href+this.splitword+title);
	},
  searchKeyword:function(nodeobj){
  	var node=nodeobj;
  	if(!node) node=document.body;
  	if(node.nodeName=='A'||node.nodeName=='SCRIPT') return;
  	if(node.nodeName=='#text'){
  		if(this.trim(node.data)=='') return;
  		this.dealKeyword(node);
  		return;
  	}
  	var nodes=node.childNodes;
  	if(nodes.length==0||node.nodeName=='#comment') return;
  	for(var i=0;i<nodes.length;i++){
  		this.searchKeyword(nodes[i]);
  	}
  },
  dealKeyword:function(node){
  	var rt=document.createElement('rt');
  	var nodedata=node.data;
  	var indexs=new Array();
  	for(var i=0;i<this.keyword.length;i++){
  	   if(nodedata.indexOf(this.keyword[i])!=-1){
  	   	 nodedata=nodedata.replace(new RegExp(this.dealregex(this.keyword[i]),'ig'),'{keyword['+i+']}');
  	   	 indexs.push(i);
  	   }
  	}
  	if(indexs.length!=0){
  		var arr;
  	  for(var i=0;i<indexs.length;i++){
  	  	arr=this.a[indexs[i]].split(this.splitword);
  	   	nodedata=nodedata.replace(new RegExp('{keyword\\['+indexs[i]+'\\]}','ig'),'<a class="'+arr[0]+'" target="'+arr[1]+'" href="'+arr[2]+'" title="'+arr[3]+'">'+this.keyword[indexs[i]]+'</a>');
  	  }
  	  rt.innerHTML=nodedata;
  	  node.parentNode.replaceChild(rt,node);
    }
  },
  dealregex:function(regex){
  	regex=regex.replace('[','\\[');
  	regex=regex.replace(']','\\]');
  	return regex;
  }
}
