/**
 * 
 * @author Jarod
 * this class goes with mootools 1.2
 *
 */
var ArticlePoll = new Class({
	container:null,
	pollId:null,
	hasVoted:false,
	voteBtn:null,
	viewBtn:null,
	contentArea:null,
	selectedOptionId:null,
	rtn:null,
	canVote:false,
	pollTitle:null,
	pollTotal:null,
	cState:null,
	justVoted:false,
	voteColors:["#e73b47","#11a6fb","#6ece18","#ffa838","#b350f8","#04b00c","#7062fa","#ffa838","#b350f8","#04b00c","#e73b47","#11a6fb"],
	initialize:function(containerId){
		this.container=$(containerId);
		this.pollId=this.container.getAttribute("pollid");
		this.hasVoted=eval(this.container.getAttribute("hasvoted"));
		this.viewBtn=this.container.getElement(".viewBtn");
		this.voteBtn=this.container.getElement(".voteBtn");
		this.contentArea=this.container.getElement(".content-area");
		this.viewBtn.onclick=this.loadOutcomeBoard.bind(this);
		this.voteBtn.onclick=this.doVote.bind(this);
		this.constructPoll();
		this.pollTitle=this.container.getElement(".poll_title");
		this.pollTotal=this.container.getElement(".poll_total");
	},
	
	doVote:function(optid){
		if(this.cState==0){
			var requestURL ="/EmbededPollVote.tr?groupId="+groupId+"&pollId="+this.pollId;
			var c=this.contentArea;
			var obj=this;
			var chknum=0;
			if(obj.rtn.mchoice){
				requestURL+="&mchoice=1";
				chkboxs=this.contentArea.getElements("input");
				
				$each(chkboxs, function(item, index){
					if(item.checked){
						requestURL+="&optionIds="+item.value;
						chknum++;
					}
				});
				
			}else{
				requestURL+="&mchoice=0&optionId="+this.selectedOptionId;
			}
			if(obj.rtn.mchoice){
				if(chknum==0){
					alert("请选择选项!");
					return false;
				}
			}else{
				chkboxs=this.contentArea.getElements("input");
				
				$each(chkboxs, function(item, index){
					if(item.checked){
						chknum++;
					}
				});
				if(chknum==0){
					alert("请选择选项!");
					return false;
				}
			}
			var ajax = new Request({url:requestURL, method:"post",onSuccess:function () {
				var obj2={};
				obj2.rtn=JSON.decode(this.response.text);
				obj.justVoted=true;
				//alert(this.response.text);
				if(obj2.rtn.code==100){
					obj.constructPoll();
				}else if(obj2.rtn.code==210){
					alert("您已经投过票!");
				}else if(obj2.rtn.code==220){
					alert("您投票过于频繁!");
				}else if(obj2.rtn.code==310){
					alert("投票还没开始!");
				}else if(obj2.rtn.code==320){
					alert("投票已经结束!");
				}
			}});
			ajax.send();
		}else{
			this.loadVotingBoard();
		}
	},
	
	loadPollData:function(){
		var requestURL ="/EmbededPollLoad.tr?groupId="+groupId+"&pollId="+this.pollId;
		var obj=this;
		var ajax = new Request({url:requestURL, method:"post",onSuccess:function() {
			obj.rtn = JSON.decode(this.response.text);
		}});
		ajax.send();
	},
	
	loadOutcomeBoard:function(){
		if(this.rtn.code==100){
			this.contentArea.innerHTML="";
			var msgSpan=new Element("span",{"styles":{"color":"#339933","display":"block","margin-left":"150px"}});
			var msg="";
			if(this.rtn.mchoice){
				msg+="此投票为多选,最多可以选择"+this.rtn.mchoiceNum+"个选项";
			}else{
				msg+="此投票为单选";
			}
			if(this.rtn.revote){
				msg+=",每隔"+this.rtn.revotePeriod+"个小时可以再投!";
			}
			
			msgSpan.innerHTML=msg;
			msgSpan.inject(this.contentArea);
			
			if(this.rtn.type==0){
				var msgSpan2=new Element("span",{"styles":{"color":"#AA9933","display":"block","margin-left":"150px"}});
				msgSpan2.innerHTML="这个投票是从其它帮抓过来的,您不能再投票!";
				msgSpan2.inject(this.contentArea);
			}else if(!this.rtn.canVote){
				var msgSpan2=new Element("span",{"styles":{"color":"#AA9933","display":"block","margin-left":"150px"}});
				msgSpan2.innerHTML=this.rtn.msg;
				msgSpan2.inject(this.contentArea);
				if(this.rtn.voteStatus!=2){
					switch(this.rtn.userStatus){
						case 0:
							this.voteBtn.onclick=callLoginDialog;
							break;
						case 1:
							this.voteBtn.onclick=prommptJoinGroup;
							break;
						case 2:
							
							break;
						default:;
					}
				}
			}
			
			var table=new Element("table",{"styles":{"width":"100%"}});
			var tbody=new Element("tbody");
			tbody.inject(table);
			var voteTotal=0;
			$each(this.rtn.options, function(item, index){
				if(item!=null){
					voteTotal+=parseInt(item.voteNum);
				}
			});
			var obj=this;
			$each(this.rtn.options, function(item, index){
				if(item!=null){
					var tr=new Element("tr");
					var td1=new Element("td",{"styles":{"width":"35%","text-align":"right"}});
					var optionName=new Element("span",{"styles":{"color":"#000"}});
					optionName.innerHTML=item.optionName;
					optionName.inject(td1);
					
					var td2=new Element("td",{"styles":{"width":"45%"}});
					var div=new Element("div",{"styles":{"width":"100%","background-color":"#EEEEEE","height":"10px"}});
					//"border":"1px solid #aaa",
					div.inject(td2);
					
					var td3=new Element("td",{"styles":{"width":"20%"}});
					var vote=new Element("span",{"styles":{"color":"#000"}});
					var pcnt=0;
					if(voteTotal>0){
						pcnt=(parseFloat(item.voteNum)/parseFloat(voteTotal)*100).toFixed(2);
					}
					var inDiv=new Element("div",{"styles":{"width":pcnt.toFixed(0)+"%","height":"100%","background-color":obj.voteColors[index%10]}});						
					inDiv.inject(div);
					
					vote.innerHTML=pcnt+"%&nbsp;(<span style='color:#EB6A40;'>"+item.voteNum+"</span>票)";
					vote.inject(td3);
					td1.inject(tr);
					td2.inject(tr);
					td3.inject(tr);
					tr.inject(tbody);
				}
			});
			table.inject(this.contentArea);
			this.pollTotal.innerHTML=this.rtn.voterNum;
			if(this.rtn.voteTime){
				this.pollTitle.innerHTML="结果&nbsp;("+this.rtn.startTime+"~"+this.rtn.endTime+")";
			}else{
				this.pollTitle.innerHTML="结果";
			}
			this.viewBtn.style.display="none";
			this.cState=1;
		}else{
			alert("sorry");
		}
	},
	
	loadVotingBoard:function(){
		if(this.rtn.code==100){
			this.contentArea.innerHTML="";
			var msgSpan=new Element("span",{"styles":{"color":"#339933","display":"block","margin-left":"150px"}});
			var msg="";
			if(this.rtn.mchoice){
				msg+="此投票为多选,最多可以选择"+this.rtn.mchoiceNum+"个选项";
			}else{
				msg+="此投票为单选";
			}
			if(this.rtn.revote){
				msg+=",每隔"+this.rtn.revotePeriod+"个小时可以再投!";
			}
			
			msgSpan.innerHTML=msg;
			msgSpan.inject(this.contentArea);
			
			
			if(this.rtn.type==0){
				var msgSpan2=new Element("span",{"styles":{"color":"#AA9933","display":"block","margin-left":"150px"}});
				msgSpan2.innerHTML="这个投票是从其它帮抓过来的,您不能再投票!";
				msgSpan2.inject(this.contentArea);
			}else if(!this.rtn.canVote){
				var msgSpan2=new Element("span",{"styles":{"color":"#AA9933","display":"block","margin-left":"150px"}});
				msgSpan2.innerHTML=this.rtn.msg;
				msgSpan2.inject(this.contentArea);
				if(this.rtn.voteStatus!=2){
					switch(this.rtn.userStatus){
						case 0:
							this.voteBtn.onclick=callLoginDialog;
							break;
						case 1:
							this.voteBtn.onclick=prommptJoinGroup;
							break;
						case 2:
						
						break;
						default:;
					}
				}
			}
			
			
			var table=new Element("table",{"styles":{"width":"80%"}});
			var tbody=new Element("tbody");
			tbody.inject(table);
			var obj=this;
			var voteTotal=0;
			$each(this.rtn.options, function(item, index){
				if(item!=null){
					voteTotal+=parseInt(item.voteNum);
				}
			});
			$each(this.rtn.options, function(item, index){
				if(item!=null){
					var tr=new Element("tr");
					var td1=new Element("td",{"styles":{"width":"10%"}});
					if(obj.rtn.mchoice){
						var chkbox=null;
						chkbox=new Element("input",{"type":"checkbox","name":"optid","value":item.id});
						chkbox.inject(td1);
						chkbox.onclick=obj.checkChoiceNum.bind(obj);
					}else{
						var radio=null;
						radio=new Element("input",{"type":"radio","name":"optid","value":item.id});
						radio.inject(td1);
						radio.onclick=function(){
							//obj.doVote(radio.value);
							obj.selectedOptionId=radio.value;
						};
					}
					
					var td2=new Element("td",{"styles":{"width":"90%"}});
					var span=new Element("span",{"styles":{"color":"#000"}});
					span.innerHTML=item.optionName;
					span.inject(td2);
					td1.inject(tr);
					td2.inject(tr);
					tr.inject(tbody);
				}
			});
			table.inject($(this.contentArea));
			this.pollTotal.innerHTML=this.rtn.voterNum;
			if(this.rtn.voteTime){
				this.pollTitle.innerHTML="投票&nbsp;("+this.rtn.startTime+"~"+this.rtn.endTime+")";
			}else{
				this.pollTitle.innerHTML="投票";
			}
			this.viewBtn.style.display="";
			this.cState=0;
		}else{
			alert("sorry");
		}
	},
	
	checkChoiceNum:function(){
		var opts=this.contentArea.getElements("input");
		var cnum=0;
		$each(opts, function(item, index){
			if(item.name=="optid" && item.checked){
				cnum++;
			}
		});
		if(cnum>this.rtn.mchoiceNum){
			alert("本投票最多只能选"+this.rtn.mchoiceNum+"个选项");
			$each(opts, function(item, index){
			item.checked=false;
			});
		}
	},
	
	constructPoll:function(){
		var requestURL ="/EmbededPollLoad.tr?groupId="+groupId+"&pollId="+this.pollId;
		var obj=this;
		
		var ajax = new Request({url:requestURL, method:"post",onSuccess:function() {
			obj.rtn=JSON.decode(this.response.text);
			//alert(this.response.text);
			//obj.canVote=obj.rtn.canVote;
			/*
			if(obj.rtn.hasVoted){
				obj.loadOutcomeBoard();
				obj.voteBtn.setStyle("display","none");
				obj.viewBtn.setStyle("display","none");
			}else{*/
			if(obj.rtn.type==0){
				obj.voteBtn.setStyle("display","none");
				obj.viewBtn.setStyle("display","none");
				obj.loadOutcomeBoard();
			}else{
				if(obj.justVoted){
					obj.loadOutcomeBoard();
					obj.viewBtn.setStyle("display","none");
					obj.justVoted=false;
				}else{
					switch(parseInt(obj.rtn.voteStatus)){
						case 0:
							obj.loadVotingBoard();
							obj.voteBtn.setStyle("display","");
							obj.viewBtn.setStyle("display","");
							
							break;
						case 1:
							obj.loadVotingBoard();
							obj.voteBtn.setStyle("display","");
							obj.viewBtn.setStyle("display","");
							
							break;
						case 2:
							obj.loadOutcomeBoard();
							obj.voteBtn.setStyle("display","none");
							obj.viewBtn.setStyle("display","none");
							
							break;
						default:alert(obj.rtn.voteStatus);
					}
				}
				/*
				if(!obj.rtn.canVote){
					obj.loadOutcomeBoard();
					obj.voteBtn.setStyle("display","none");
					obj.viewBtn.setStyle("display","none");
					//this.voteBtn.onclick=this.doVote.bind(this);
					//var emsg=obj.rtn.msg;
					//obj.voteBtn.onclick=function(){alert(emsg)};
					//obj.loadVotingBoard();
				}else{
					if(obj.justVoted){
						obj.loadOutcomeBoard();
						obj.viewBtn.setStyle("display","none");
						obj.justVoted=false;
					}else{
						obj.loadVotingBoard();
						obj.viewBtn.setStyle("display","");
					}
					//
				}
				*/
			}
			//}
			if(adjustContainer && document.body.scrollHeight){
				adjustContainer();
			}
		}});
		ajax.send();
	}
	
});

window.addEvent("domready",function(){
	var containers=$$(".article-poll");
	var ap=new Array();
	$each(containers, function(item,index){
		ap[index]=new ArticlePoll(item);
	});
});

Number.prototype.toFixed=function(len){
	if(isNaN(len)||len==null) {
		len=0;
	}else{
		if(len<0){
			len=0;
		}
	}
	return Math.round(this*Math.pow(10,len))/Math.pow(10,len);
}

function callLoginDialog(){
	window.top.loginDialog.create('本帮成员才能使用。<br>您还没登录，请先登录一下。');
}

function prommptJoinGroup(){
	if(window.confirm("只有本帮成员可以投票，您是否要加入本帮?")){
		document.location="http://www.oobang.com/joinGroup.tr?groupId="+groupId;
	}
}

