﻿/**
 * index page
 */

var AjaxRequest = Class.create();
AjaxRequest.prototype = {
	initialize : function(){
	},
	sendRequest : function(url,pars,callback){
		this.__initPrototypeAjax(url,pars,callback);
	},
	__initPrototypeAjax : function(url,pars,callback){
		var myAjax = new Ajax.Request(url,
				{
					method : 'get',
					parameters : pars,
					onComplete : this.__callback.bind(this),
					onFailuer : this.__failurecallback.bind(this)
				});
	},
	__callback : function(res){
		var jRet = null;
		if(res){
			var rst = res.responseText;
			try{
				if(rst)
					jRet = rst.evalJSON();
			}catch(e){
				
			}
		}
		this.callback(jRet);
	},
	callback : function(){
		//to do nothing
	},
	__failurecallback : function(){
		this.failurecallback();
	},
	failurecallback : function(){
		//to do nothing
	}
}

/**
 *cookie tools 
 */

var CookieMgr = Class.create();
CookieMgr.prototype = {
	initialize: function() {
		Event.observe(window,'load',function() {
		}.bind(this),false);
	},
	add : function(name,value){
		var value = escape(value);
         var nameString = "WJ_" + name + "=" + value; //给cookie变量增加前缀
         var extime = new Date();            
         extime.setTime (extime.getTime () + 315360000);
         var expiryString = ";expires=" + extime.toGMTString();
         var domainString = "";
         var pathString = ";path=/";    
         var setvalue = nameString + expiryString;
         document.cookie = setvalue;
	},
	get : function(name) {
		var CookieFound = false;
        var start = 0;
       	var end = 0;
        var CookieString = document.cookie;
        
        var i = 0;
        name="WJ_"+name; //增加前缀
        while (i <= CookieString.length){
             start = i ;
             end = start + name.length;
             if (CookieString.substring(start, end) == name)
             {
                 CookieFound = true;
                 break;
             }
             i++;
        }
        if (CookieFound){
        	start = end + 1;
            end = CookieString.indexOf(";",start);
            if (end < start)
            	end = CookieString.length;
            var getvalue = CookieString.substring(start, end);
            return unescape(getvalue);
        }
        return null;
	}
}

var AnswerInfo = Class.create();
AnswerInfo.prototype = {
	initialize : function(){
		this._cansave = true;
		this.qnid = $F($('qnid'));
	},
	saveBtn : function(){
		var ret = this._checkData();
		if(!ret){
			return;
		}
		if(this._cansave){
			this._cansave = false;
		}else{
			alert('您已经提交了答案，请稍候');
			return;
		}
		var pars = this._getParams();
		var url = "/view/saveAnswer/";
		var myAjax = new AjaxRequest();
		myAjax.callback = this._saveCallBack.bind(this);
		myAjax.sendRequest(url,pars);
	},
	cancelBtn : function(){
		ret = confirm("确定要取消？");
		if (ret == true){
			window.close();
		}
	},
	changeVerify : function(){
		pars = "";
		url = "/view/changeverify/";
		var myAjax = new AjaxRequest();
		myAjax.callback = this._changeCallback.bind(this);
		myAjax.sendRequest(url,pars);
	} ,
	_changeCallback : function(ret){
		var oImg = $('verifyImage');
		if(!(oImg == null)){
			oImg.src = "/site_media/codes/"+ ret +".png";
			$('reverifycode').value = "";
		}
	},
	_saveCallBack : function(ret){
		this._cansave = true;
		if(ret == -1){
			alert("投票失败");
			return;
		}else if(ret == -2){
			alert("验证码输入错误");
			this.changeVerify();
			return;	
		}else{
			var multi_answer = $F($('multi_answer'));
			var qnid = $F($('qnid'));
			if (multi_answer == "0"){
				var _cookies = new CookieMgr();
				_cookies.add(("qnid_"+qnid),qnid); 
			}
			window.location.href="/view/viewresult/?qnid="+qnid;
		}
		
	},
	
	_checkData : function(){
		if(!($('reverifycode') == null) && $F($('reverifycode'))==""){
			alert("请输入验证码");
			return false;
		}
		var hasFinished = true;
		var oDiv = $('questiones');
		if(!(oDiv == null)){
			oFieldsets = oDiv.getElementsByTagName('fieldset');
			if(oFieldsets.length != 0){
				for(var i=0;i<oFieldsets.length;i++){
					var oFieldset = oFieldsets[i];
					var values = this._getValue(oFieldset);
					//限选检查
					var q_multicnt = oFieldset.getAttribute('multicount');	
					if(q_multicnt && q_multicnt != '-1'){
						var multiCnt = parseInt(q_multicnt);
						if(values.split(',').length > multiCnt){
							oFieldset.getElementsByTagName('legend')[0].className = "focus";
							alert('只能选择不多于'+ q_multicnt +'个选项，请重新选择');
							return false;
						}else{
							oFieldset.getElementsByTagName('legend')[0].className = "";
						}
					}
					//必答检查
					var q_control = oFieldset.getAttribute('control');
					if(q_control == '1'){
						if(values == ""){
							oFieldset.getElementsByTagName('legend')[0].className = "focus";
							hasFinished = false;
						}else{
							oFieldset.getElementsByTagName('legend')[0].className = "";
						}
					}
				}
			}
		}
		if(hasFinished){
			return true;
		}else{
			alert("问卷尚未完成，请继续回答");
			return false;
		}
		
	},
	_getParams : function(){
		var pars = "";
		pars += "qnid=" + $F($('qnid'));
		pars += "&userid=" + $F($('userid'));
		pars += "&validate=" + $F($('validate'));
		if(!($('reverifycode') == null)){
			pars += "&verifycode=" + $F($('reverifycode'));
		}
		if($('userlink') != null){
			pars += "&userlink=" + $F($('userlink'));
		}
		var oDiv = $('questiones');
		if(!(oDiv == null)){
			oFieldsets = oDiv.getElementsByTagName('fieldset');
			if(oFieldsets.length != 0){
				var len = oFieldsets.length;
				pars += "&counts=" + len;
				var answerlist = "[";
				for(var i=0;i<len;i++){
					var oFieldset = oFieldsets[i];
					var values = this._getValue(oFieldset);
					values = encodeURIComponent(values);
					if(i == 0){
						answerlist += "'"+ values + "'";
					}else{
						answerlist += ",'"+ values + "'";
					}
					
				}
				answerlist += "]";
				pars += "&answerlist=" + answerlist;
			}
		}
		return pars;
	},
	_getValue : function(oFieldset){
		var ret = "";
		var oInputs = oFieldset.getElementsByTagName('input');
		if(oInputs.length != 0){
			var j = 0;
			for(var i=0;i<oInputs.length;i++){
				var oInput = oInputs[i];
				if(oInput.checked == true){
					if(j == 0){
						ret += oInput.value ;
					}else{
						ret += "," + oInput.value ;
					}
					j++;
				}
			}
		}else{
			var oTextarea = oFieldset.getElementsByTagName('textarea');
			if(oTextarea.length != 0){
				ret = oTextarea[0].value;
			}else{
				var oSelect = oFieldset.getElementsByTagName('select');
				if(oSelect.length != 0){
					ret = oSelect[0].value;
				}
			}
		}
		if(ret.length>255) ret = ret.substring(0,255);
		return ret;
	},
	_clearValue : function(oFieldset){
		var oInputs = oFieldset.getElementsByTagName('input');
		if(oInputs.length != 0){
			var j = 0;
			for(var i=0;i<oInputs.length;i++){
				var oInput = oInputs[i];
				if(oInput.checked == true){
					oInput.checked = false;
				}
			}
		}else{
			var oTextarea = oFieldset.getElementsByTagName('textarea');
			if(oTextarea.length != 0){
				oTextarea[0].value = "";
			}else{
				var oSelect = oFieldset.getElementsByTagName('select');
				if(oSelect.length != 0){
					oSelect[0].value = "";
				}
			}
		}
	},
	linkto : function(qids, evt, linktos){
		var evt = window.event || evt;
		var obj = evt.srcElement || evt.target;
		var linktype = obj.getAttribute('linktype');
		var arrQids = new Array();
		arrQids = qids.split(",");
		if(linktype == '2'){
			if(obj && obj.checked == true){
				for(var i=0;i<arrQids.length;i++){
					var qid = arrQids[i];
					if(qid == "") continue;
					$('fieldset_'+qid).style.display="";
					//if it is textarea,focus on it
					var oTextarea = $('tt_'+qid);
					if(oTextarea){oTextarea.focus();}
				}
			}else if(obj && obj.checked == false){
				for (var i = 0; i < arrQids.length; i++) {
					var qid = arrQids[i];
					if(qid == "") continue;
					this._clearValue($('fieldset_' + qid));
					$('fieldset_' + qid).style.display = "none";
				}
			}
		}else{
			if(obj && obj.checked == true){
				for (var i = 0; i < arrQids.length; i++) {
					var qid = arrQids[i];
					if(qid == "") continue;
					//if it is textarea,focus on it
					var oTextarea = $('tt_' + qid);
					if (oTextarea) {
						oTextarea.focus();
					}
				}
			}else if(obj && obj.checked == false){
				for (var i = 0; i < arrQids.length; i++) {
					var qid = arrQids[i];
					if(qid == "") continue;
					this._clearValue($('fieldset_' + qid));
				}
			}
		}
		//
		if(!linktos) return;
		var arrLinktos = linktos.split(",");
		for(var i=0;i<arrLinktos.length;i++){
			if(arrLinktos[i] != ""){
				var qid = arrLinktos[i];
				var beClear = true;
				for(var j=0;j<arrQids.length;j++){
					if(qid == arrQids[j]){
						beClear = false;
						break;
					} 
				}
				if(beClear){
					var oFieldset = $('fieldset_'+qid);
					this._clearValue(oFieldset);
					if(oFieldset.getAttribute('linktype')=='2'){
						oFieldset.style.display="none";
					}
				}
					
			}
		}
		
	},
	rmlinkto : function(qids){
		//先清理已填的数据，再隐藏
		var qidLs = qids.split(',');
		for(var i=0;i<qidLs.length;i++){
			var qid = qidLs[i];
			if(qid == "") continue;
			var oFieldset = $('fieldset_'+qid);
			this._clearValue(oFieldset);
			if(oFieldset.getAttribute('linktype')=='2'){
				oFieldset.style.display="none";
			}
			
		}
	},

	rechecklink : function(optid){
		if(optid=='') return;
		var opt = $('opt_'+optid);
		if(opt){
			if(opt.type == 'checkbox' || opt.type == 'radio') opt.checked=true;
			
		}
	}

}