/**
*
*  Copyright 2007 Hexun.com Inc. All rights reserved.
*  和讯公司
*  @author chenzhaohui@staff.hexun.com
*  date: 2008-06-05
**/
var Emote=Class.create();
Emote.prototype={
	initialize:function (options){
		this.setOptions(options);
		this.build();
		this.initElements();
		this.initEvents();
		this.active();
		
	},setOptions:function (options){
		this.options=Object.extend({
			parent:document.body,matrix:{
				"20":[22,3],"42":[12,2]
			},output:'ubb',callback:Prototype.emptyFunction,active:'base'
		},options||{
			
		});
		this.options.parent=$(this.options.parent);
		
	},build:function (){
		var data=Emote.Data;
		var arr=[];
		arr.push('<div class="emotionBox">');
//		var tabK;
//		for(tabK in data){
//			var tab=data[tabK];
//			if(typeof(tab)!="object"||!tab.ubb)continue;<div style="clear:both;height:0px;"></div>
//			var img=Emote._getImg(tab.ubb,tabK);
//			arr.push('<span data_key="'+tabK+'"><img align="absmiddle" src="'+img.url+'" alt="'+tab.alt+'" width="20" height="20" />&nbsp;'+tab.title+'</span>');
//			
//		}
		arr.push('<div class="basicEm"><div class="emotionBody clearfix"></div><div class="emotionNav"></div></div></div>');
		this.options.parent.innerHTML=arr.join('');
		
	},initElements:function (){
		//this.tabCtr=$(this.options.parent.firstChild.firstChild);
		var tmpEl=$(this.options.parent.firstChild.firstChild);
		this.bodyCtr=$(tmpEl.firstChild);
		this.pageCtr=$(tmpEl.lastChild);
		
	},initEvents:function (){
		//Event.observe(this.tabCtr,'mouseup',this.onTabCtr.bindAsEventListener(this));
		Event.observe(this.bodyCtr,'mouseup',this.onBodyCtr.bindAsEventListener(this));
		Event.observe(this.pageCtr,'mouseup',this.onPageCtr.bindAsEventListener(this));
		
	},onTabCtr:function (e){
		var el=Event.element(e);
		if(el==this.tabCtr)return false;
		do{
			if(el.parentNode&&el.parentNode==this.tabCtr)break;
			
		}while(el=el.parentNode)
		if(!el.className||el.className!="active"){
			this.options.active=el.getAttribute('data_key');
			this.bodyCtr.innerHTML='加载中';
			this.pageCtr.innerHTML='';
			this.active();
			
		}
		Event.stop(e);
		return false;
		
	},onBodyCtr:function (e){
		var el=Event.element(e);
		if(el==this.bodyCtr)return false;
		do{
			if(el.parentNode&&el.parentNode==this.bodyCtr)break;
			
		}while(el=el.parentNode)
		var ubb=el.getAttribute("data_ubb");
		if(ubb){
		    var ubbs= Emote.Data["base"].data;
		    for(var i=0;i<ubbs.length;i++)
		    {
		        if(ubbs[i][0] == ubb)
		        {
		            var more='';
			        if(this.options.output=='url'){
				        var obj=Emote._getImg(ubbs[i]);
				        ubb=obj.url;
				        more=obj.title;
        				
			        }else {
				        if(path!="base")ubb="{"+path+'}'+ubb;
				        ubb='['+ubb+']';
        				
			        }
			        this.options.callback(ubb,"");
			        break;
		        }
		    }
		}
		Event.stop(e);
		return false;
		
	},onPageCtr:function (e){
		var el=Event.element(e);
		if(el==this.pageCtr)return false;
		do{
			if(el.parentNode&&el.parentNode==this.pageCtr)break;
			
		}while(el=el.parentNode)
		var page=el.getAttribute("data_page");
		if(page){
			this.page(parseInt(page));
			
		}
		Event.stop(e);
		return false;
		
	},active:function (){
//		var childs=this.tabCtr.childNodes;
//		for(var i=0;i<childs.length;i++){
//			if(childs[i].getAttribute('data_key')==this.options.active){
//				childs[i].className='active';
//				
//			}else {
//				childs[i].className='';
//				
//			}
//		}
		this.page();
		
	},page:function (index){
		if(typeof(index)!='number')index=1;
		var active=this.options.active,emoteObj=Emote.Data[active],ubbs=emoteObj.data;
		var matrix=this.options.matrix[emoteObj.size],cols=matrix[0],rows=matrix[1],size=cols*rows,start=(index-1)*size,count=ubbs.length,end=Math.min(count,index*size),pageCount=Math.ceil(count/size);
		var arr=[];
		for(var i=start;i<end;i++){
			//if(i!=0&&i%cols==0)arr.push('<div style="clear:both;"></div>');
			var imgObj=Emote._getImg(ubbs[i]);
			arr.push('<a href="javascript:void(0);" data_ubb="'+ubbs[i][0].replace('"','\\"')+'"><img src="'+imgObj.url+'" alt="'+imgObj.title+'" title="'+imgObj.title+'" border="0"/></a>');
			
		}
		this.bodyCtr.innerHTML=arr.join('');
		arr=[];
		if(pageCount>1){
			arr.push(index+'/'+pageCount+'&nbsp;&nbsp;&nbsp;&nbsp;');
			if(index>1){
				arr.push('<a href="javascript:void(0);" data_page="'+(index-1)+'">');
				
			}
			arr.push('上一页');
			if(index>1){
				arr.push('</a>');
				
			}
			arr.push('&nbsp;&nbsp;&nbsp;&nbsp;');
			if(index<pageCount){
				arr.push('<a href="javascript:void(0);" data_page="'+(index+1)+'">');
				
			}
			arr.push('下一页');
			if(index<pageCount){
				arr.push('</a>');
				
			}
		}
		this.pageCtr.innerHTML=arr.join('');
		
	}
}
Emote.Config={
	imgPath:'http://comment.blog.hexun.com/img/emotions/'
}
Emote.Data={
	base:{
		title:'默认',ubb:':)',alt:'默认表情',size:'20',type:1,data:[["01","微笑 [:-)]"],["02","大笑 [:-D]"],["03","眨眼 [;-)]"],["04","装酷 [8-)]"],["05","独眼龙 [(6)]"],["06","害羞 [:-$]"],["07","生气 [8o|]"],["08","发呆 [:-(]"],["09","发怒 [:-@]"],["10","惊讶 [:-|]"],["11","猫猫 [(&amp;)]"],["12","白眼 [&amp;-|]"],["13","不说 [:-#]"],["14","眼馋 [$-)]"],["15","吐舌头 [:-P]"],["16","猫咪 [(@)]"],["17","大哭 [:'(]"],["18","低头 [|-)]"],["19","困了 [:-Z]"],["20","困惑 [:-S]"],["21","悲伤 [*-(]"],["22","狂吐 [:-%]"],["23","伤心 [^-)]"],["24","汗 [:-*]"],["25","花 [(R)]"],["26","花 [(W)]"],["27","太阳 [(%)]"],["28","月亮 [(S)]"],["29","星星 [(*)]"],["30","邮件 [(M)]"],["31","足球 [(so)]"],["32","亮亮 [(I)]"],["33","咖啡 [(F)]"],["34","心 [(L)]"],["35","心 [(U)]"],["36","便便 [(=)]"],["37","电视 [(#)]"],["38","时间 [(O)]"],["39","酒 [(D)]"],["40","电话 [(T)]"]]
	}
}
Emote.Ubbs={
	"[Q]":["q","灾区同胞祈福"],"#_#":["flatter","谄媚"],"8*)":["titter","偷笑"],":D":["spit","大笑"],":-)":["shame","害羞"],":P":["naughty","调皮"],"B_)":["complacent","得意"],"B_I":["cool","耍酷"],"^_*":["lash","讽刺"],":$":["complaint","委屈"],":|":["gloomy","郁闷"],":(":["sorry","难过"],":.(":["weep","流泪"],":_(":["cry","大哭"],"):(":["detonate","发火"],":V":["curse","咒骂"],"*_*":["muzzy","发呆"],":^":["misunderstand","不懂"],":?":["haze","疑惑"],":!":["surprise","吃惊"],"=:|":["perspire","流汗"],":%":["embarrassed","尴尬"],":O":["fright","惊恐"],":X":["stopper","闭嘴"],"|-)":["yawn","犯困"],":Z":["sleep","睡觉"],":9":["greedy","馋"],":T":["puke","吐"],":-*":["whisper","耳语"],"*_/":["pirate","海盗"],":#|":["bandage","重伤"],":69":["hug","拥抱"],"//shuang":["comfortably","爽"],"//qiang":["strong","强"],"//ku":["cool2","酷"],"//zan":["good","赞"],"//heart":["heart","红心"],"//break":["hearted","心碎"],"//F":["blow","花开"],"//W":["fade","花谢"],"//mail":["mail","邮件"],"//strong":["fine","手势-棒"],"//weak":["bad","手势-逊"],"//share":["share","握手"],"//phone":["phone","电话"],"//mobile":["mobile","手机"],"//kiss":["lip","嘴唇"],"//V":["victory","V"],"//sun":["sun","太阳"],"//moon":["moon","月亮"],"//star":["star","星星"],"(!)":["bulb","灯泡"],"//TV":["tv","电视"],"//clock":["clock","闹钟"],"//gift":["gift","礼物"],"//cash":["cash","现金"],"//coffee":["coffee","咖啡"],"//rice":["dining","饭"],"//watermelon":["watermelon","西瓜"],"//tomato":["tomato","番茄"],"//pill":["pill","药丸"],"//pig":["pig","猪头"],"//football":["football","足球"],"//shit":["shit","便便"],"snt":["snot","鼻涕"],"elv":["elvis","猫王"],"nob":["nostbleed","鼻血"],"lny":["loney","坏笑"],"rdf":["redflag","红旗"],"ctm":["contemn","蔑视"],"plg":["plunger","搋子"],"ft":["faint","晕"],"epd":["explode","爆炸"],"drk":["drink","饮料"],"brs":["brushing","刷牙"],"bra":["bra","胸罩"],"spk":["speaker","喇叭"],"xms":["xmas","圣诞"],"bsk":["basketball","篮球"],"flw":["floweret","小花"],"ber":["beer","啤酒"],"cak":["cake","蛋糕"],"chr":["cheer","加油"],"oly":["olympic","奥运"],"tor":["torch","火炬"],"up":["up","顶"]
}
Emote.getImg=function (ubb){
	if(!ubb||ubb.length<3||ubb.charAt(0)!='['||ubb.charAt(ubb.length-1)!=']')return null;
	var start=1,end=ubb.length-1,path='base';
	if(ubb.charAt(1)=='{'){
		var index=ubb.indexOf('}',1);
		if(index<3)return null;
		start=index+1;
		path=ubb.substring(2,index);
		
	}
	ubb=ubb.substring(start,end);
	return this._getImg(ubb,path);
	
}
Emote.getUbb=function (url){
	if(url.indexOf(this.Config.imgPath)!=0)return null;
	var start=this.Config.imgPath.length;
	var end=url.indexOf('/',start);
	if(end<0)return null;
	var path=url.substring(start,end);
	start=end+1,end=url.indexOf('.',start);
	if(end<0)return null;
	var ubb=url.substring(start,end);
	if(path!='base'){
		ubb='{'+path+'}'+ubb;
		
	}
	return '['+ubb+']';
	
}
Emote._getImg=function (ubb){
	return {
		url:this.Config.imgPath+ubb[0]+'.gif',title:ubb[1]
	}
}
Emote.init=function (options){
	return new Emote(options);
	
}