
/*CommentSmiley start*/
//用于给评论增加表情功能
function initCommentSmiley(){
    //局部变量用于防止产生过多全局函数
    var obj={
        addSmileyBar:function(bib){
            if(bib.smileyBar)return;
            if(!bib.postCommentBox)return;
			var _bar=$se('dd','smiley','表情：');
			for(var i=1;i<=16;i++){
				var _img=$se('img');
				_img.src='plugins/CommentSmiley/onion/'+i+'.gif';
				_img.style.width='25px';
				_img.style.height='25px';
				_bar.appendChild(_img);
				_img.style.cursor='pointer';
				_img.style.marginRight='2px';
				
				_img.onclick=(function(s){
					return function(){
						var _fb=bib.postCommentBox.main;
						_fb.setValue('content',_fb.getValue('content')+'[s:'+s+']');
					}
				})(i);
			}
			bib.postCommentBox.box.firstChild.insertBefore(_bar,bib.postCommentBox.box.firstChild.lastChild);
			bib.smileyBar=true;
        }
        ,onToggleViewComment:function(topicId,dl){
			var bib=BlogItemBoxes[topicId];
			if(bib.showSmileyHook)return;
			bib.showSmileyHook=true;
			var self=this;
			var obj2={};
			obj2.showSmiley2=function(c){
				if(!c==c.parentNode.firstChild)return;
				self.showSmiley(bib.viewCommentBox);
			}
			X2.Observer.observeAsEvent(obj2,'showSmiley2',bib,'setOpen');
        }
        ,showSmiley:function(b){
            var _html=b.innerHTML;
			_html=_html.replace(/(\[s:(\d+)\])/g,'<img src="plugins/CommentSmiley/onion/$2.gif" alt=""/>');
			b.innerHTML=_html;
        }
        ,onTogglePostCommentBox:function(topicId,dl){
            var bib=BlogItemBoxes[topicId];
            if(bib.smileyBar)return;
			this.addSmileyBar(bib);
        }
    };
    try{
		X2.Observer.observeAsEvent(obj,'onTogglePostCommentBox',window,'togglePostCommentBox');
		X2.Observer.observeAsEvent(obj,'onToggleViewComment',window,'toggleViewComment');
	}catch(e){}
	
	//如果是单篇日志显示，需要对其中的评论进行替换
	if(window._firstTopicIdOfCommentList){
	    var _vcb=$('firstTopicIdOfCommentList'+_firstTopicIdOfCommentList);
	    obj.showSmiley(_vcb);
	    
	}
}

//绑定到初始化过程
X2.Observer.observe(window,'initCommentSmiley',window,'init');
/*CommentSmiley end*/

/*LatestArticles start*/
function PluginConfig_LatestArticles(myPcb){
    myPcb.showTip('正在获取数据，请稍候……');
    var json=new X2.Json('plugins/LatestArticles/ajax.aspx',myPcb.tipBox);
    json.onlogicalsuccess=function(jso){
	    var fb=new FormBox('commonFormBox');
	    fb.insertItem("text","count",{attributes:{maxLength:4,style:'width:40px;'},value:jso.singleInfo,foreLabel:'最新日志显示数量：'});
	    fb.insertItem("button","btnOk",{sameLine:true,className:'button',sameLine:true,value:'确定',tip:'* 只能是数字'});
	    myPcb.body.appendChild(fb.getBox());
	    myPcb.setWidth(420);
    	myPcb.hideTip();
    	
    	
	    fb.items['btnOk'].onclick=function(){
	        var count=fb.getValue('count');
	        if(!/^\d+$/g.test(count) || count==''){
	            myPcb.showTip('参数必须为数字！');
	            return;
	        }
	        myPcb.showTip('正在提交数据，请稍候……','noButton');
	        var json2=new X2.Json('plugins/LatestArticles/ajax.aspx',myPcb.tipBox);
	        json2.onlogicalsuccess=function(jso){
	            myPcb.showTip('参数设置成功！');
    	        
	        }
	        json2.open('setCount',{count:count});
	    }
	}
	json.open('getCount');
}
/*LatestArticles end*/

/*MyLinks start*/
function PluginConfig_MyLinks(myPcb)
{
    var fcb   = new FormBox('MyLinksEditBox');
    var fcb2  = new FormBox('MyLinksListBox');
    fcb.insertItem("hidden","id",{attributes:{style:'display:none'}});
    fcb.insertItem("text","linkName",{attributes:{size:50},foreLabel:'连接名称：'});
    fcb.insertItem("text","linkUrl",{attributes:{size:50},foreLabel:'连接地址：'});
    fcb.insertItem("text","rssUrl",{attributes:{size:50},foreLabel:'RSS地址：'});
    fcb.insertItem("text","faceImg",{attributes:{size:50},foreLabel:'图片地址：'});
    fcb.insertItem("select","skin",{foreLabel:'皮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;肤：',selectArray:['默认,0','粉红,Pink','深蓝,Blue']});
    fcb.insertItem("button","savaLink",{className:'button',value:'提交'});
    fcb.insertItem("button","newLink",{sameLine:true,className:'button',value:'新建'});
    
    Element.hide(fcb.items["newLink"]);
   
    fcb.items["newLink"].onclick = function()
    {
       fcb.items["linkName"].value = "";
       fcb.items["linkUrl"].value  = "";
       fcb.items["rssUrl"].value   = "";
       fcb.items["faceImg"].value  = "";
       fcb.items["id"].value       = "";
       fcb.items["skin"].value     = "0";
       Element.hide(fcb.items["newLink"]);
    }
    
    fcb.items["savaLink"].onclick = function(){
    
       if (fcb.items["linkName"].value == ""||fcb.items["linkUrl"].value == "")
       {
         myPcb.showTip('链接名称和地址不能为空');
         return;
       }
      myPcb.showTip('正在提交数据，请稍候……');
      var myjson = new X2.Json('plugins/MyLinks/ajax.aspx',myPcb.tipBox);
      var link = {
        LinkName : fcb.items["linkName"].value,
        LinkUrl  : fcb.items["linkUrl"].value,
        RssUrl   : fcb.items["rssUrl"].value,
        FaceImg  : fcb.items["faceImg"].value,
        ID       : fcb.items["id"].value,
        Skin     : fcb.items["skin"].value
      }
      
      myjson.onlogicalsuccess = function(jso){
         myPcb.showTip('提交成功。');
         if (fcb.items["id"].value=="")
            fcb2.addSelectValue("linkslist",fcb.items["linkName"].value,jso.singleInfo);
         fcb.items["linkName"].value = "";
         fcb.items["linkUrl"].value = "";
         fcb.items["rssUrl"].value = "";
         fcb.items["faceImg"].value = "";
         fcb.items["skin"].value = "0";
         fcb.items["id"].value = "";
      }
      if (fcb.items["id"].value == "")
         myjson.open("saveLink",link);
      else
         myjson.open("editLink",link);
    }
    myPcb.body.appendChild(fcb.getBox());
    myPcb.setWidth(420);
    var json = new X2.Json('plugins/MyLinks/ajax.aspx',myPcb.tipBox);
    myPcb.showTip('正在获取数据，请稍候……');
    json.onlogicalsuccess = function(jso)
    {
        
        fcb2.insertItem("select","linkslist",{});
        fcb2.insertItem("button","deleteBtn",{sameLine:true,className:'button',value:'删除'});
        
        fcb2.items["linkslist"].onchange = function(){
            if (this.value=="")return;
            fcb.setValue('id',this.value);
            fcb.items["newLink"].style.display = "inline";
			var data = jso.data.detect(function(value){
				if (value.ID == fcb.getValue('id'))return true;
			});
			if (data){
				fcb.setValue('linkName',data.LinkName);
				fcb.setValue('linkUrl',data.LinkUrl);
				fcb.setValue('rssUrl',data.RssUrl);
				fcb.setValue('faceImg',data.FaceImage);
				fcb.setValue('id',data.ID);
				fcb.setValue('skin',data.Skin);
				
			}
        }
        
        fcb2.items["deleteBtn"].onclick = function(){
            var data = jso.data.detect(function(value){
				  if (value.ID == fcb2.getValue('linkslist'))
				  {
				    if(confirm( "确定删除" + "\"" +value.LinkName + "\"？"))
                    {
                      var delJson = new X2.Json('plugins/MyLinks/ajax.aspx',myPcb.tipBox);
                          delJson.onlogicalsuccess = function(jso){
                             myPcb.showTip('删除成功。');
                             fcb2.deleteSelectValue("linkslist",value.ID);
                          }
                          delJson.open("delete",{id:value.ID});
                    }
				    return;
				  }
			    });
        }
        myPcb.body.appendChild(fcb2.getBox());
        fcb2.addSelectValue('linkslist',"链接列表",0);
        jso.data.each(function(link){
          fcb2.addSelectValue('linkslist',link.LinkName,link.ID);
        });
        myPcb.hideTip();
    }
 
    json.open("getlinks");
    
}


var MyLinks = Class.create();

MyLinks.prototype = {
  initialize:function(sender,url,skin,face)
  {
    this.ReaderBox = document.createElement("DIV");
    this.Top       = document.createElement("DIV");
    this.TopLeft   = document.createElement("DIV");
    this.TopRight  = document.createElement("DIV");
    this.Middle    = document.createElement("DIV");
    this.Bottom    = document.createElement("DIV");
    this.FaceImage = $se("IMG");
    this.ReaderBox.className = "ReaderBox";
    this.Middle.className    = "Middle";
    this.Bottom.className    = "Bottom";
    this.Top.className       = "Top";
    this.TopLeft.className   = "TopLeft";
    this.TopRight.className  = "TopRight";
    
    this.FaceImage.src    = face.length>0?face:"plugins/MyLinks/nopic.jpg";
	this.FaceImage.height = "60";
	this.FaceImage.width  = "60"
    
    this.TopLeft.appendChild(this.FaceImage);
    this.Top.appendChild(this.TopLeft);
    this.Top.appendChild(this.TopRight);
    this.ReaderBox.appendChild(this.Top);
    this.ReaderBox.appendChild(this.Middle);
    this.ReaderBox.appendChild(this.Bottom);
    sender.appendChild(this.ReaderBox);
    if (skin!="0")
    {
      Element.addClassName(this.ReaderBox,skin);
      Element.addClassName(this.Top,skin + "Top");
      Element.addClassName(this.Middle,skin + "Middle");
      Element.addClassName(this.Bottom,skin + "Bottom");
    }
    this.visibility = false;
    this.myTimer = false;
    this.LoadData(url);
  },
  Hide : function()
  {
     if(!this.myTimer)
     {
       this.myTimer = setTimeout(this.Hide.bind(this),800);
     }
     else
     {
        clearTimeout(this.myTimer);
        this.myTimer = 0;
        this.ReaderBox.style.display = "none";
        this.visibility = false;
     }
     
  },
  Show : function(sender)
  {
     this.ReaderBox.style.display = "block";
     this.ReaderBox.style.left = Position.cumulativeOffset(sender)[0] + parseInt(sender.offsetWidth) - 20 + "px";
     this.ReaderBox.style.top  = Position.cumulativeOffset(sender)[1] + "px";
     
     var left = Position.cumulativeOffset(this.ReaderBox)[0];
     var top  = Position.cumulativeOffset(this.ReaderBox)[1];
     
     var h = self.innerHeight || Math.min((document.documentElement.offsetHeight||document.body.offsetHeight),(document.body.clientHeight||document.documentElement.clientHeight));
	 h = (h + Math.max(document.documentElement.scrollTop,document.body.scrollTop));		
	 var Bottom = top + parseInt(this.ReaderBox.offsetHeight);
	 if (Bottom>h)
	 {
	    this.ReaderBox.style.top = h - parseInt(this.ReaderBox.offsetHeight) + "px";
	 }
	 this.visibility = true;	       
  },
  LoadData : function(url)
  {
   
     var self = this;
     this.TopRight.innerHTML = "<img src='plugins/MyLinks/loading.gif'>loading..."
     var option={
					parameters:"s="+Math.random()+"&oper=getrss&u="+escape(url),
					method:"get",
					onSuccess:function(transport){
					   var xmlDoc = transport.responseXML;
					   var rss    = Rss.Parser(xmlDoc);
                       var rightInner = "<div>" + rss.RSSTitle + "</div><div><a href='" + rss.Link + "' target='" + rss.Link + "'>" + self.Cutstring(rss.Link,20) + "</a></div><div>" + self.Cutstring(rss.Description,31) + "</div>";
				      
				       self.TopRight.innerHTML = rightInner;
				       
				       if (rss.Item.length>0)
				       {
				         self.Middle.innerHTML = "<div><b>" + rss.Item[0].Title + "</b><br>" + 
				                                 self.Cutstring(rss.Item[0].Description,80)+"</div><div style='float:right'><a href='" + rss.Item[0].Link + "' target='_blank'>查看全文</a></div>"
				       }
				       
				       var list = "<ul>";
				       for (var i=1; i < rss.Item.length; i++)
				       {
				         list += "<li><a href='" + rss.Item[i].Link + "' target='_blank'>" + self.Cutstring(rss.Item[i].Title,15) + "</a></li>";
				       }
				       
				       self.Bottom.innerHTML = list + "</ul>";
					},
					onFailure:function(transport){
					    self.TopRight.innerHTML = "<div>数据加载失败..</div>";
					    self.Middle.innerHTML   = "<div>数据加载失败..</div>";
					    self.Bottom.innerHTML   = "<ul><li>数据加载失败..</li><ul>";
					}
				}
				
	var request=new Ajax.Request("plugins/MyLinks/ajax.aspx",option);
  },
  Cutstring : function(str,end)
  {
     if(str.length > end)
     {
        return str.substring(str,end) + "...";
     }
     else
     {
        return str;
     }
  }
}



var Rss = {
		Parser : function(rss)
		{
		        
				this.xmlDoc      = rss.documentElement;
				this.RSSTitle    = this.GetFirstChildValue("title")
				
				this.Description = this.GetFirstChildValue("description");
				
				this.Link    = this.xmlDoc.getElementsByTagName("link")[0].firstChild.nodeValue;
				var tempItem = this.xmlDoc.getElementsByTagName("item");
				this.Item = new Array();
				for(var i=0;i<tempItem.length;i++)
				{
					var item = {
					   Title:tempItem[i].getElementsByTagName("title")[0].firstChild.nodeValue,
					   Description:tempItem[i].getElementsByTagName("description")[0].firstChild.nodeValue,
					   Link:tempItem[i].getElementsByTagName("link")[0].firstChild.nodeValue
					}   
					this.Item.push(item);
				}
				return this;
		},
		GetFirstChildValue : function(tagName)
		{
		   return this.xmlDoc.getElementsByTagName(tagName)[0].firstChild ? this.xmlDoc.getElementsByTagName(tagName)[0].firstChild.nodeValue: "";
		}
}

var LinkArray   = new Object();
var CurrentLink = null;

function initMyLinks()
{
    Element.cleanWhitespace($('PluginMyLinks'));
	var json = new X2.Json('plugins/MyLinks/ajax.aspx');
	var box = $("PluginMyLinks").childNodes[1];
	
	box.innerHTML = "";
	json.onlogicalsuccess = function(jso){
	    var ul = $se('ul','items');
	    ul.style.margin    = "3px";
	    ul.style.padding   = "0px";
	    ul.style.listStyle = "none";
	    
		jso.data.each(function(value){
			 var item = $se('li','item',"<a href='" + value.LinkUrl +"' target='_blank'>" + value.LinkName +"</a>");
              if(value.Update==1)
              {
                 var newImg = $se("IMG");
                 newImg.src = "plugins/MyLinks/update.gif";
                 item.appendChild(newImg);
              }
              
              item.style.width     = "150px";
              item.style.padding   = "4px";
              item.style.listStyle = "none";
              ul.appendChild(item);
              if ("" == value.RssUrl) return;
              item.onmousemove = function(event){
              
              
                 if(!LinkArray[value.LinkName])
                 {
					
                    LinkArray[value.LinkName] = new MyLinks(this,value.RssUrl,value.Skin,value.FaceImage);
                    LinkArray[value.LinkName].Show(this);
                 }
                 else
                 { 
                     if(!LinkArray[value.LinkName].visibility)
                     {
                       LinkArray[value.LinkName].Show(this);
                     }
                     clearTimeout(LinkArray[value.LinkName].myTimer);
                 }
             }
             
             item.onmouseout = function(event)
             {
                if(LinkArray[value.LinkName])
                  LinkArray[value.LinkName].Hide();
             }
             box.appendChild(ul);
             
		});
	}
	
	json.open("getlinks");
}

X2.Observer.observe(window,'initMyLinks',window,'init');
/*MyLinks end*/

/*X2Vote start*/

//实现参数配置
/*
PluginConfig_PluginName是插件参数配置必须实现的函数，PluginName必须为插件名称
用于提供进行参数配置的界面

*以下是一些接口说明
pcb是参数配置容器，提供一些通用的操作：
pcb.showTip(msg)：显示提示
pcb.hideTip(msg)：隐藏提示框
pcb.show()：显示容器
pcb.hide()：隐藏容器
pcb.setWidth(width)：设置容器宽度
pcb.setHeight(height)：设置容器高度
pcb.setTitle(title)：设置标题
pcb.body：主容器，是一个div标记，用于放置自定义的界面


X2.Json，FormBox，ItemList均为X2Blog的内置Javascript类
更多技术资料请参考X2Blog官方Blog：http://www.x2blog.cn/supNate/


*/
function PluginConfig_X2Vote(pcb){
    pcb.showTip('正在获取数据，请稍候……');
    var json=new X2.Json('plugins/X2Vote/ajax.aspx',pcb.tipBox);
    json.onlogicalsuccess=function(jso){
	    var fb=new FormBox('commonFormBox');
	    fb.insertItem("text","voteTitle",{attributes:{size:40},value:jso.singleInfo,foreLabel:'设置调查标题：'});
	    fb.insertItem("button","btnOk",{sameLine:true,className:'button',sameLine:true,value:'确定'});
	    
	    fb.insertItem("select","sltTitle",{foreLabel:''});
	    fb.insertItem("button","btnDelete",{sameLine:true,className:'button',value:'删除'});
	    fb.insertItem("text","title",{attributes:{maxLength:50,size:50},foreLabel:'选项：'});
	    fb.insertItem("checkbox","type",{attributes:{checked:true},foreLabel:'单选：',tip:'* 选中表示单选，否则表示多选'});
	    fb.insertItem("text","count",{attributes:{maxLength:5,value:0,size:50},foreLabel:'票数：'});
	    fb.insertItem("button","btnNew",{className:'button',value:'添加'});
	    fb.insertItem("button","btnEdit",{sameLine:true,className:'button',value:'修改'});
	    
	    fb.insertItem("","intro1",{className:'intro',tip:'！重要：要禁用调查可在模块设置里，卸载插件将会丢失已有数据！'});
	    fb.insertItem("","intro2",{className:'intro',tip:'！点击<a href="plugins/X2VoteData.xml" target="_blank">这里</a>备份调查数据。'});
	    
	    
	    //初始化下拉框
	    jso.data.each(function(value){
	        fb.addSelectValue('sltTitle',value.title,value.title);
	    });
	    fb.setValue("voteTitle",jso.singleInfo);
	    
	    
	    //当下拉框变化时改变值
	    fb.items['sltTitle'].onchange=function(){
	        fb.setValue('title',this.value);

			var data=jso.data.detect(function(value){
				if(value.title==fb.getValue('title'))return true;
			});
			if(data){
				fb.setValue('count',data.count);
				fb.setValue('type',data.type);
			}

	    }
	    if(fb.items['sltTitle'].options.length>0)fb.items['sltTitle'].options[0].selected=true;
	    
	    pcb.body.appendChild(fb.getBox());
	    pcb.setWidth(420);
    	pcb.hideTip();

	    fb.items['btnOk'].onclick=function(){
	        pcb.showTip('正在提交数据，请稍候……','noButton');
	        var json2=new X2.Json('plugins/X2Vote/ajax.aspx',pcb.tipBox);
	        json2.onlogicalsuccess=function(jso){
	            pcb.showTip('调查标题设置成功！');
	        }
	        json2.open('setTitle',{title:fb.getValue('voteTitle')});
	    }
	    
	    fb.items['btnNew'].onclick=function(){
	        var count=fb.getValue('count');
	        if(!/^\d+$/g.test(count) || count==''){
	            pcb.showTip('票数必须为数字！');
	            return;
	        }
	        if(fb.getValue('title')==''){
	            pcb.showTip('选项不得为空。');
	            return;
	        }
	        pcb.showTip('正在提交数据，请稍候……','noButton');
	        var json2=new X2.Json('plugins/X2Vote/ajax.aspx',pcb.tipBox);
	        json2.onlogicalsuccess=function(jso){
	            pcb.showTip('选项增加成功！');
	            fb.addSelectValue('sltTitle',fb.getValue('title'),fb.getValue('title'));
	            fb.setValue('title','');
	            fb.setValue('count','0');
	        }
	        json2.open('addItem',{title:fb.getValue('title'),count:count,type:fb.getValue('type')});
	    }
	    
	    fb.items['btnEdit'].onclick=function(){
	        var count=fb.getValue('count');
	        if(!/^\d+$/g.test(count) || count==''){
	            pcb.showTip('票数必须为数字！');
	            return;
	        }
	        if(fb.getValue('title')==''){
	            pcb.showTip('选项不得为空。');
	            return;
	        }
	        pcb.showTip('正在提交数据，请稍候……','noButton');
	        var json2=new X2.Json('plugins/X2Vote/ajax.aspx',pcb.tipBox);
	        json2.onlogicalsuccess=function(jso){
	            pcb.showTip('选项修改成功！');
	            with(fb.items['sltTitle'].options[fb.items['sltTitle'].selectedIndex]){
	                value=text=fb.getValue('title');
	            }
	        }
	        json2.open('modifyItem',{oldTitle:fb.getValue('sltTitle'),title:fb.getValue('title'),count:count,type:fb.getValue('type')});
	    }
	    
	    fb.items['btnDelete'].onclick=function(){
	        if(!confirm('确定删除此调查项吗？'))return;
	        pcb.showTip('正在提交数据，请稍候……','noButton');
	        var json2=new X2.Json('plugins/X2Vote/ajax.aspx',pcb.tipBox);
	        json2.onlogicalsuccess=function(jso){
	            pcb.showTip('选项删除成功！');
	            fb.deleteSelectValue('sltTitle',fb.getValue('title'));
	        }
	        json2.open('deleteItem',{title:fb.getValue('sltTitle')});
	    }
	    pcb.hideTip();
	}
	json.open('getItems');
}

//调查显示模块
var PluginX2Vote=Class.create();
PluginX2Vote.prototype={
    initialize:function(){
		Element.cleanWhitespace($('PluginX2Vote'));
        this.box=$('PluginX2Vote').childNodes[1];
        this.items=[];
        var self=this;
        //获取所有的选项
        var json=new X2.Json('plugins/X2Vote/ajax.aspx');
        json.onlogicalsuccess=function(jso){
            self.title=jso.singleInfo;
            self.box.innerHTML='';
            jso.data.each(function(value){
                var item=$se('li','item'
                    ,(value.type==1?'<input type="radio" name="X2VoteOption"/>':'<input type="checkbox"/>')+'<span>'+value.title+'</span>'
                );
                item.count=value.count;
                self.items.push(item);
            });
            self.showItems();
        }
        json.open('getItems');
    }
    ,showItems:function(){
        if(this.tipBox){
            Element.show(this.ul);
            Element.show(this.bar);
            return;
        }
        this.tipBox=new TipBox('',{elementName:'div'});
        $ap(this.box,this.tipBox.box);
        //调查标题
        $bd(this.box,'div','title',this.title);
        //调查项
        this.ul=$se('ul','items');
        var self=this;
        this.items.each(function(li){
            $ap(self.ul,li);
        });
        $ap(this.box,this.ul);
        
        //按钮
        this.bar=$bd(this.box,'div','bar');
        this.btnOk=$sf('button','button','投票');
        this.btnViewResult=$sf('button','button','查看结果');
        $ap(this.bar,this.btnOk);
        $ap(this.bar,this.btnViewResult);
        //提交调查
        this.btnOk.onclick=function(){
            //获取被选中的项
            var items=self.items.inject([],function(memo,item,i){
                if(item.firstChild.checked)memo.push(i);
                return memo;
            });
            if(items.length==0){
                self.showTip('至少选择一个调查项。');
                return;
            }
            
            //如果已经参加过调查
            if(ch.getValue('X2Vote')!=''){
                self.showTip('您已经参与过投票！');
                return;
            }
            //设置cookie标识已经参加过调查
            ch.setValue('X2Vote',1,1);
            
            self.showTip('正在提交数据，请稍候……',true);
            //提交调查
            var json2=new X2.Json('plugins/X2Vote/ajax.aspx',self.tipBox);
            json2.onlogicalsuccess=function(jso){
                //本地增加调查结果
                items.each(function(item){
                    self.items[item].count++;
                });
                self.showTip('提交成功，感谢您的参与！');
                self.reset();
                self.showResult();
                //window.setTimeout(self.showResult.bind(self),300);
            }
            json2.open('vote',{items:items.join(',')});
        }
        //查看调查结果
        this.btnViewResult.onclick=this.showResult.bind(this);

    }
    //重置调查项
    ,reset:function(){
        this.items.each(function(item){item.firstChild.checked=false;});
    }
    ,showResult:function(){
        if(this.resultBox){
            hideResult();
        }
        
        Element.hide(this.ul);
        Element.hide(this.bar);
        
        this.resultBox=$bd(this.box,'div','result');
        this.resultTitle=$bd(this.resultBox,'div','resultTitle','调查结果（共');
        var max=0;
        var sum=this.items.inject(0,function(memo,item){
			if(max<item.count)max=item.count;
            return memo+item.count;
        });
        this.resultTitle.innerHTML+=sum+'票）：';
        
        this.resultUl=$bd(this.resultBox,'ul');
        var self=this;
        this.items.each(function(li){
            var title=li.childNodes[1].innerHTML;
            var count=li.count;
            
            var percent=count==0?'0%':Math.round(10000*count/sum)/100+'%';
			var width=2;
			if(max)width=count/max*(self.resultBox.offsetWidth-100);
			if(width<2)width=2;
			width=Math.round(width);

            var li2=$se('li','','<span>'+title+'</span><br/><img src="plugins/X2Vote/bar.gif" width="'+width+'px"/>'
						+ '<span class="count" >'+percent+' - '+count+'</span>');
            $ap(self.resultUl,li2);
        });
        
        this.resultBar=$bd(this.resultBox,'div','bar');
        this.btnHideResult=$sf('button','button','确定');
        this.btnHideResult.onclick=function(){
            self.hideResult();
            self.showItems();
        }
        $ap(this.resultBar,this.btnHideResult);
        
    }
    ,hideResult:function(){
        Element.remove(this.resultBox);
        this.resultBox=null;
    }
    ,showTip:function(msg,noButton){
        this.tipBox.show(msg,noButton);
    }
    ,hideTip:function(){
        this.tipBox.hide();
    }
    
}
//初始化调查模块
function initX2Vote(){
	//用户需要启用了此模块
	if(!$('PluginX2Vote'))return;
    var x2vote=new PluginX2Vote();
}

//绑定调查到初始化过程
X2.Observer.observe(window,'initX2Vote',window,'init');


/*X2Vote end*/

/*Eyes start*/

		function leeightShowEyes(){
			var _html='\
				<div style="position: relative;" id="m_2">\
					<div style="border-width: 0px; margin: 0px; padding: 0px; overflow: hidden; height: auto;" id="remote_2">\
						<table cellspacing="0" cellpadding="0" border="0" align="center" style="margin-top: 5px;">\
							<tbody>\
									<tr>\
										<td background="plugins/Eyes/eye-r.gif">\
										<div style="width: 100px; height: 100px;"><img width="15" height="15" src="plugins/Eyes/pupil.gif" alt="" style="left: 43px; position: relative; top: 43px;" id="EYES_pupil02" /></div>\
										</td>\
										<td background="plugins/Eyes/eye-y.gif">\
										<div style="width: 100px; height: 100px;"><img width="15" height="15" src="plugins/Eyes/pupil.gif" alt="" style="left: 43px; position: relative; top: 43px;" id="EYES_pupil12" /></div>\
										</td>\
									</tr>\
							</tbody>\
						</table>\
					</div>\
				</div>\
			';
			document.write(_html);
			var EYES2={
				MAX_DIST:37
				,EYE_RADIUS:48
				,PUPIL_RADIUS:7
				,pupils:[],
				init:function(){
					var A=EYES2;
					if(document.addEventListener){
						document.addEventListener("mousemove",A.moveEyes,true);
					}else{
						if(document.attachEvent){
							document.attachEvent("onmousemove",A.moveEyes);
						}
					}
					A.pupils=[document.getElementById("EYES_pupil02"),document.getElementById("EYES_pupil12")];
				}
				,uninit:function(){
					var A=EYES2;
					if(document.addEventListener){
						document.removeEventListener("mousemove",A.moveEyes,true);
					}else{
						if(document.attachEvent){
							document.detachEvent("onmousemove",A.moveEyes);
						}
					}
				}
				,moveEyes:function(J){
					if(!J){J=window.event;}
					var F=EYES2;
					for(var A=0;A<F.pupils.length;A++){
						var C=F.pupils[A];
						var E=F.getPagePos(C.parentNode,true)+F.EYE_RADIUS;
						var I=F.getPagePos(C.parentNode,false)+F.EYE_RADIUS;
						var G=J.clientX+(document.body.scrollLeft||document.documentElement.scrollLeft)-E;
						var B=J.clientY+(document.body.scrollTop ||document.documentElement.scrollTop)-I;
						var H=Math.sqrt(Math.pow(G,2)+Math.pow(B,2));
						if(H>F.MAX_DIST){
							var D=F.MAX_DIST/H;
							G*=D;B*=D;
						}
						C.style.left=parseInt(G+F.EYE_RADIUS-F.PUPIL_RADIUS+1)+"px";
						C.style.top=parseInt(B+F.EYE_RADIUS-F.PUPIL_RADIUS+1)+"px";
					}
				}
				,getPagePos:function(C,B){
					var A=0;
					while(C!=null){
						A+=C["offset"+(B?"Left":"Top")];
						C=C.offsetParent;
					}
					return A;
				}
			};
			EYES2.init();
		}
	
/*Eyes end*/
