var _partCache=new Hash({});function PartFactory(c,b){var b=("boolean"==typeof b)?b:true;if(b){switch($type(c)){case"string":var a=_partCache.get(c);if(a){return a;}break;case"element":var e=c.getAttribute("sn");if(e){var a=_partCache.get(e);if(a){return a;}}else{throw {message:"element MUST have sn attribute"};}break;default:return false;}}if(c.nodeName=="part"||c.nodeName=="survey"){switch(c.getAttribute("type")){case"survey":var d=PartSurvey;break;case"page":var d=PartPage;break;case"select":var d=PartSelect;break;case"matrix":var d=PartMatrix;break;case"text":var d=PartText;break;case"separator":var d=PartSeparator;break;case"html":var d=PartHtml;break;default:throw {message:"element type attribute is invalid"};}}else{throw {message:"invalid element nodeName"};}var a=new d(c);_partCache.set(a.get("sn"),a);return a;}var PartAbstract=new Class({Implements:[Config,Events],initialize:function(a){if("element"!=$type(a)){throw {message:"invalid element"};}this.xel=a;this.addEvent("set",this._onSet.bindWithEvent(this));this.update();},_onSet:function(){this._config.is_dirty=1;},update:function(){var e=xmlGetAttributes(this.xel,true);var b=["part","options","triggers"];for(var c=0,a=this.xel.childNodes.length;c<a;c++){var d=this.xel.childNodes[c];if(b.contains(d.nodeName)){continue;}e[d.nodeName]=xmlValue(d);}this.set(e);},saveXml:function(){try{var d=this.xel.attributes;for(var g=0,h=d.length;g<h;g++){var b=d[g],l=b.nodeName;this.xel.setAttribute(l,this.get(l));}var c=this.xel.childNodes;for(var g=0,h=c.length;g<h;g++){var a=c[g],l=a.nodeName;if(l=="part"){continue;}var f=this.get(l),k=this.xel.ownerDocument;if(a.firstChild){a.removeChild(a.firstChild);}if(f){a.appendChild(k.createCDATASection(f));}}}catch(j){return false;}return true;},getEl:function(){if(this.el){return this.el;}else{var a=$$('.part[sn="'+this.get("sn")+'"]');if(a.length){this.el=a[0];}else{this.el=this.render();}return this.el;}},getOwnerPage:function(){if("survey"==this.get("type")){return false;}if("page"==this.get("type")){return this;}return PartFactory(this.xel.parentNode);},hasChild:function(){var b=this.get("type");if("page"==b||"survey"==b){var a=xpathSelect(this.xel,"./part");return a&&a.length?true:false;}else{return false;}},isFirst:function(){var a=this.xel.previousSibling;return a&&"part"==a.nodeName?false:true;},isLast:function(){var a=this.xel.nextSibling;return a&&"part"==a.nodeName?false:true;},parentPart:function(){return this.xel.parentNode?PartFactory(this.xel.parentNode):null;},previous:function(){var a=this.xel.previousSibling;return a&&"part"==a.nodeName?PartFactory(a):null;},next:function(){var a=this.xel.nextSibling;return a&&"part"==a.nodeName?PartFactory(a):null;},firstChild:function(){var a=xpathSelect(this.xel,"./part",true);return a?PartFactory(a):null;},lastChild:function(){var a=xpathSelect(this.xel,"./part");if(a&&a.length){var b=a.length-1;return PartFactory(a[b]);}else{return;}},remove:function(){this.fireEvent("remove",this);var a=this.get("sn");_partCache.erase(a);this.getEl().destroy();this.xel.parentNode.removeChild(this.xel);},getIcon:function(){var b=this.get("type");switch(b){case"select":var a=b+"_"+this.get("form_type");break;default:var a=b;break;}return"/images/part/icon/"+a+".gif";},appendPart:function(b){var a=xpathSelect(this.xel,"./part");if(a.length){var c=a[a.length-1].getAttribute("rank").toInt()+1;}else{var c=1;}b.set("rank",c);b.saveXml();this.xel.appendChild(b.xel);},rankChildren:function(){var c=xpathSelect(this.xel,"./part");for(var b=0,a=c.length;b<a;b++){c[b].setAttribute("rank",b+1);PartFactory(c[b]).update();}},getChildren:function(){var d=xpathSelect(this.xel,"./part"),b=[];for(var c=0,a=d.length;c<a;c++){b.push(PartFactory(d[c]));}return b;}});var PartSurvey=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);},_renderTitle:function(){var b=xpathSelect(this.xel,'/survey/part[@type="page"]');var e=this.get("title")?this.get("title").htmlspecialchars():dict.clickEditSurveyTitle;for(var c=0,a=b.length;c<a;c++){var d=PartFactory(b[c]);d.getEl().getElement(".survey-title").innerHTML=e;}},_renderIntro:function(){var b=xpathSelect(this.xel,'/survey/part[@type="page"]'),e=this.get("intro");if(e.isHtml()){e=e.stripScripts();}else{e=e.nl2br();}for(var c=0,a=b.length;c<a;c++){var d=PartFactory(b[c]);d.getEl().getElement(".survey-intro").innerHTML=e;}},render:function(b){var a={title:this._renderTitle,intro:this._renderIntro};this.fireEvent("render",this);if(b&&a[b]){a[b].apply(this);}else{this._renderTitle();this._renderIntro();}}});var PartPage=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);},appendChild:function(a){if("element"==$type(a)){this.getEl().getElement(".content").appendChild(a);}else{this.getEl().getElement(".content").appendChild(a.render());}return a;},_renderTitle:function(){var c=this.get("title")?this.get("title").htmlspecialchars():dict.clickEditPageTitle;if(this.el){var b=this.el.getElement(".page-title");b.innerHTML=c;}else{var b=new Element("h2",{"class":"page-title",html:c});}var a=xpathSelect(this.xel.ownerDocument,'//part[@type="page"]');if(a.length<2){b.setStyle("display","none");}else{b.setStyle("display","");}return b;},_renderIntro:function(){var b=this.get("intro");if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if(this.el){var a=this.el.getElement(".page-intro");a.innerHTML=b;}else{var a=new Element("div",{"class":"page-intro",html:b});}if(b){a.setStyle("display","");}else{a.setStyle("display","none");}return a;},_renderContent:function(){return new Element("ol",{"class":"content"});},render:function(d){var a={title:this._renderTitle,intro:this._renderIntro};this.fireEvent("render",this);if(d&&a[d]){return a[d].apply(this);}else{if(this.el){for(name in a){a[name].apply(this);}}else{var e=this.parentPart();var g=e.get("title")?e.get("title"):dict.clickEditSurveyTitle;var f=new Element("h1",{"class":"survey-title",html:g});var c=new Element("div",{"class":"survey-intro",html:e.get("intro")});var b=new Element("div",{"class":"surveypie part page",sn:this.get("sn")});b.appendChild(f);b.appendChild(c);for(name in a){b.appendChild(a[name].apply(this));}b.appendChild(this._renderContent());this.el=b;}}return this.el;},getTitle:function(){var a="";if(this.get("title").length){a=this.get("title");}else{if(this.get("rank")){a=sprintf(dict.blankPageTitle,this.get("rank"));}}return a;}});var PartSeparator=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);},_renderTitle:function(){var b=this.get("title")?this.get("title").htmlspecialchars():dict.clickEditSeparatorTitle;if(this.el){var a=this.el.getElement(".title");a.innerHTML=b;}else{var a=new Element("h3",{"class":"title",html:b});}return a;},_renderIntro:function(){var b=this.get("intro");if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if(this.el){var a=this.el.getElement(".intro");a.innerHTML=b;}else{var a=new Element("div",{"class":"intro",html:b});}if(b){a.setStyle("display","");}else{a.setStyle("display","none");}return a;},render:function(b){var a={title:this._renderTitle,intro:this._renderIntro};this.fireEvent("render",this);if(b){return a[b].apply(this);}else{if(this.el){for(b in a){a[b].apply(this);}}else{var c=new Element("div",{"class":"separator part",sn:this.get("sn")});for(b in a){c.appendChild(a[b].apply(this));}this.el=c;}}return this.el;}});var PartHtml=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);},render:function(){var b=this.get("code")?this.get("code"):"<h3>"+dict.clickEditHtmlCode+"</h3>";if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if($chk(this.el)){this.el.innerHTML=b;}else{var a=new Element("div",{"class":"part html",sn:this.get("sn"),html:b});this.el=a;}this.fireEvent("render",this);return this.el;}});var PartText=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);},getNotice:function(){var d=[],c=this.get("is_require"),a=this.get("least_input").toInt(),b=this.get("most_input").toInt();if(c){d.push(dict.noticeIsRequire);}if(a){d.push(sprintf(dict.noticeLeastInput,a));}if(b){d.push(sprintf(dict.noticeMostInput,b));}return d;},_renderTitle:function(){var d=this.getNotice();d=d.length?"("+d.join(",&nbsp;")+")":"";var b=this.get("subject")?this.get("subject").htmlspecialchars():dict.clickEditTextSubject;if(this.el){var c=this.el.getElement("h4.title"),a=c.getElements(".subject, .notice");a[0].innerHTML=b;a[1].innerHTML=d;}else{var c=new Element("h4",{"class":"title",html:'<span class="subject">'+b+'</span><span class="notice">'+d+'</span><span class="error"></span>'});}return c;},_renderIntro:function(){var b=this.get("intro");if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if(this.el){var a=this.el.getElement(".intro");a.innerHTML=b;}else{var a=new Element("div",{"class":"intro",html:b});}if(b){a.setStyle("display","");}else{a.setStyle("display","none");}return a;},_renderIllustrate:function(){var a=this.get("illustrate")?'<img src="'+encodeURI(this.get("illustrate"))+'"/>':"";if(this.el){var b=this.el.getElement(".illustrate");b.innerHTML=a;}else{var b=new Element("p",{"class":"illustrate",html:a});}if(a){b.setStyle("display","");}else{b.setStyle("display","none");}return b;},_renderForm:function(){var e=this.get("form_type"),d=this.get("form_height"),b=this.get("form_width"),f=this.get("sn");if("textarea"==e){d=d>0?d:5;b=b>0?b:80;var c=new Element("textarea",{id:f,name:f,cols:b,rows:d});}else{b=b>0?b:30;var c=new Element("input",{type:"text",id:f,name:f,size:b});if(this.get("most_input")>0){c.set("maxlength",this.get("most_input"));}}var a=this.get("default_value");if(a){c.value=a.htmlspecialchars();}if(this.el){c.replaces($(f));}return c;},render:function(b){var a={title:this._renderTitle,intro:this._renderIntro,illustrate:this._renderIllustrate,form:this._renderForm};this.fireEvent("render",this);if(b){return a[b].apply(this);}else{if(this.el){for(b in a){a[b].apply(this);}}else{var c=new Element("li",{"class":"part text",sn:this.get("sn")});for(b in a){c.appendChild(a[b].apply(this));}this.el=c;}}return this.el;},getResponse:function(){return $(this.get("sn")).value.trim();},prepareVerify:function(a){$(this.get("sn")).addEvents({change:this.verify.bind(this),focus:function(b){b.target.select();}});},verify:function(){var b=[];var a=this.getResponse();var c=this.get("is_require","least_input","most_input");if(c.is_require&&!a.length){b.push(dict.errorIsRequire);}if((c.least_input&&a&&a.length<c.least_input)||(c.most_input&&a.length>c.most_input)){b.push(dict.errorInputLength);}if(b.length){this.getEl().getElement(".title .error").innerHTML="["+b.join("&nbsp;")+"]";this.xel.setAttribute("verify",0);}else{this.getEl().getElement(".title .error").innerHTML="";this.xel.setAttribute("verify",1);}return b.length;}});var PartSelect=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);this.updateOptions();},updateOptions:function(){this.options={};var m=xpathSelect(this.xel,'part[@type="option"]');var c=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];var f=m.length;var h=1;this._option_amount=m.length;for(var g=0,k=this._option_amount;g<k;g++){var d=m[g];var b=xmlGetAttributes(m[g],true);for(var e=0,l=d.childNodes.length;e<l;e++){var a=d.childNodes[e];b[a.nodeName]=xmlValue(a);}if(26>=f){b.index=c[g];}else{b.index=h++;}this.options[b.sn]=b;}},getNotice:function(){var d=[],c=this.get("is_require");if(c){d.push(dict.noticeIsRequire);}if("checkbox"==this.get("form_type")){d.push(dict.noticeMutipleChoice);var b=this.get("most_check"),a=this.get("least_check");if(a>0){d.push(sprintf(dict.noticeLeastCheck,a.toInt()));}if(b>0){d.push(sprintf(dict.noticeMostCheck,b.toInt()));}}else{d.push(dict.noticeSingleChoice);}return d;},_renderTitle:function(){var d=this.getNotice();d=d.length?"("+d.join(",&nbsp;")+")":"";var b=this.get("subject")?this.get("subject").htmlspecialchars():dict.clickEditSelectSubject;if(this.el){var c=this.el.getElement("h4.title"),a=c.getElements(".subject, .notice");a[0].innerHTML=b;a[1].innerHTML=d;}else{var c=new Element("h4",{"class":"title",html:'<span class="subject">'+b+'</span><span class="notice">'+d+'</span><span class="error"></span>'});}return c;},_renderIntro:function(){var b=this.get("intro");if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if(this.el){var a=this.el.getElement(".intro");a.innerHTML=b;}else{var a=new Element("div",{"class":"intro",html:b});}if(b){a.setStyle("display","");}else{a.setStyle("display","none");}return a;},_renderIllustrate:function(){var a=this.get("illustrate")?'<img src="'+encodeURI(this.get("illustrate"))+'"/>':"";if(this.el){var b=this.el.getElement(".illustrate");b.innerHTML=a;}else{var b=new Element("p",{"class":"illustrate",html:a});}if(a){b.setStyle("display","");}else{b.setStyle("display","none");}return b;},_renderOptions:function(){var t=this.get("form_type"),o=this.get("sn");var c=new Element("div",{"class":"content"});if("select"==t){var e=['<option value="">'+dict.pleaseSelectOptionLabel+"</option>"];for(var r in this.options){var m=this.options[r].label?this.options[r].label.htmlspecialchars():dict.blankSelectOptionLabel;e.push('<option id="'+r+'" value="'+r+'">'+m+"</opton>");}c.innerHTML='<select name="'+this.get("sn")+'">'+e.join("")+"</select>";}else{var l=[],e=this.options;for(var r in e){var m=e[r];var h='<input type="'+t+'" id="'+m.sn+'" name="'+o+'[]" value="'+m.sn+'" />';if(/^image\/.*$/.test(m.mime)){var g='<img src="'+encodeURI(m.url)+'"/>';if(m.label){g+="<br/>"+m.label.htmlspecialchars();}}else{var g=$chk(m.label)?m.label.htmlspecialchars():dict.blankSelectOptionLabel;}g='<label for="'+m.sn+'">'+m.index+".&nbsp;"+g+"</label>";if("text/plain"==m.mime){l.push(h+g);}else{l.push('<table cellspacing="0" cellpadding="0"><tr><td valign="middle">'+h+'</td><td align="center">'+g+"</td></tr></table>");}}var d=this.get("column_per_row")>0?this.get("column_per_row"):1;d=d<l.length?d:l.length;var f=Math.ceil(l.length/d);var k="",b="even";for(var q=0;q<f;q++){var a=[];for(var p=0;p<d;p++){var s=l.shift();a.push($chk(s)?s:"");}b=b.toggle("odd","even");k+='<tr class="'+b+'"><td>'+a.join("</td><td>")+"</td></tr>";}if(this.get("allow_specify")){var n=(new UUID()).id;var l='<input type="'+t+'" id="'+n+'" name="'+o+'[]" value="specify" /><label for="'+n+'">'+dict.pleaseSpecifyOption+"</label>";l+='<input type="text" name="'+o+'[specify]"/>';b=b.toggle("odd","even");k+='<tr class="'+b+'"><td colspan="'+d+'">'+l+"</td></tr>";}c.innerHTML='<table class="options">'+k+"</table>";}if(this.el){c.replaces(this.el.getElement(".content"));}return c;},render:function(b){var a={title:this._renderTitle,intro:this._renderIntro,illustrate:this._renderIllustrate,options:this._renderOptions};this.fireEvent("render",this);if(b){return a[b].apply(this);}else{if(this.el){for(b in a){a[b].apply(this);}}else{var c=new Element("li",{"class":"part select",sn:this.get("sn")});for(b in a){c.appendChild(a[b].apply(this));}this.el=c;}}return this.el;},getResponse:function(){var g=this.get("form_type");var c=[];if(g=="select"){var b=$(this.get("sn")).value;if(b){c.push(b);}}else{var e=this.getEl().getElements('input[type="radio"], input[type="checkbox"]');for(var d=0,a=e.length;d<a;d++){var f=e[d];if(f.checked){c.push(f.value);if(g=="radio"){break;}}}}return c;},prepareVerify:function(b){var d=this.get("form_type");if("select"==d){$(this.get("sn")).addEvent("change",this.verify.bind(this));}else{var c=$("surveypie");this.getEl().getElements('input[type="radio"], input[type="checkbox"]').addEvent("click",this.verify.bind(this));if(this.get("allow_specify")){var a=$(c[this.get("sn")+"[specify]"]);if(a){a.addEvent("change",this.verify.bind(this));}}}},verify:function(){var b=[];var d=this.get("form_type");var a=this.getResponse();var f=this.get("is_require","least_check","most_check","allow_specify");if(f.is_require&&!a.length){b.push(dict.errorIsRequire);}var c=(f.least_check>=this._option_amount)?this._option_amount:f.least_check;var e=(f.most_check>=this._option_amount)?this._option_amount:f.most_check;if(c>e){c=e;}if(("checkbox"==d&&a.length)&&((c&&a.length<c)||(e&&a.length>e))){b.push(dict.errorCheckAmount);}if(f.allow_specify&&a.contains("specify")){if(!$("surveypie")[this.get("sn")+"[specify]"].value.trim()){b.push(dict.errorRequireSpecify);}}if(b.length){this.getEl().getElement(".title .error").innerHTML="["+b.join("&nbsp;")+"]";this.xel.setAttribute("verify",0);}else{this.getEl().getElement(".title .error").innerHTML="";this.xel.setAttribute("verify",1);}return b.length;}});var PartMatrix=new Class({Extends:PartAbstract,initialize:function(a){this.parent(a);this.updateOptions();},updateOptions:function(){this.options={row:{},col:{}};var l=xpathSelect(this.xel,'part[@type="option"]');var c=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];var h=1;for(var f=0,g=l.length;f<g;f++){var d=l[f],b=xmlGetAttributes(d,true);for(var e=0,k=d.childNodes.length;e<k;e++){var a=d.childNodes[e];b[a.nodeName]=xmlValue(a);}if("col"==b.direction){b.index=c.shift();}else{b.index=h++;}this.options[b.direction][b.sn]=b;}},getNotice:function(){var b=[],a=this.get("is_require");if(a){b.push(dict.noticeIsRequire);}if("checkbox"==this.get("form_type")){b.push(dict.noticeMutipleChoice);}else{b.push(dict.noticeSingleChoice);}return b;},_renderTitle:function(){var d=this.getNotice();d=d.length?"("+d.join(",&nbsp;")+")":"";var b=this.get("subject")?this.get("subject").htmlspecialchars():dict.clickEditMatrixSubject;if(this.el){var c=this.el.getElement(".title"),a=c.getElements(".subject, .notice");a[0].innerHTML=b;a[1].innerHTML=d;}else{var c=new Element("h4",{"class":"title",html:'<span class="subject">'+b+'</span><span class="notice">'+d+'</span><span class="error"></span>'});}return c;},_renderIntro:function(){var b=this.get("intro");if(b.isHtml()){b=b.stripScripts();}else{b=b.nl2br();}if(this.el){var a=this.el.getElement(".intro");a.innerHTML=b;}else{var a=new Element("div",{"class":"intro",html:b});}if(b){a.setStyle("display","");}else{a.setStyle("display","none");}return a;},_renderIllustrate:function(){var a=this.get("illustrate")?'<img src="'+encodeURI(this.get("illustrate"))+'"/>':"";if(this.el){var b=this.el.getElement(".illustrate");b.innerHTML=a;}else{var b=new Element("p",{"class":"illustrate",html:a});}if(a){b.setStyle("display","");}else{b.setStyle("display","none");}return b;},_renderOptions:function(){var p="",g=[""],q=this.options,h=this.get("form_type"),k=this.get("sn");var a=q.row,e=q.col;for(var d in e){var f=e[d];var m=$chk(f.label)?f.label.htmlspecialchars():dict.blankMatrixColOptionLabel;g.push(f.index+".&nbsp;"+m);}p+='<tr align="center"><td class="col-option">'+g.join('</td><td class="col-option">')+"</td></tr>";var o="even",n=this.get("sn");for(var d in a){var i=a[d];var m=$chk(i.label)?i.label.htmlspecialchars():dict.blankMatrixRowOptionLabel;var j=[i.index+".&nbsp;"+m];for(var d in q.col){var b=q.col[d];var l='<input type="'+h+'" id="'+i.sn+"_"+b.sn+'" name="'+n+"["+i.sn+'][]" value="'+b.sn+'"/>';j.push(l);}o=o.toggle("odd","even");p+='<tr class="'+o+'"><td class="row-option">'+j.join('</td><td align="center">')+"</td></tr>";}var c=new Element("div",{"class":"content",html:'<table class="options">'+p+"</table>"});if(this.el){c.replaces(this.el.getElement(".content"));}return c;},render:function(b){var a={title:this._renderTitle,intro:this._renderIntro,illustrate:this._renderIllustrate,options:this._renderOptions};this.fireEvent("render",this);if(b){return a[b].apply(this);}else{if(this.el){for(b in a){a[b].apply(this);}}else{var c=new Element("li",{"class":"part select",sn:this.get("sn")});for(b in a){c.appendChild(a[b].apply(this));}this.el=c;}}return this.el;},getResponse:function(){var a=$("surveypie");var h=this.get("form_type");var d=this.get("sn");var e={};for(var b in this.options.row){var j=this.getEl().getElements('input[name="'+d+"["+b+'][]"]');for(var f=0,g=j.length;f<g;f++){var c=j[f];if(c.checked){if(!e[b]){e[b]=[];}e[b].push(c.value);if(h=="radio"){break;}}}}return new Hash(e);},prepareVerify:function(){this.getEl().getElements("input").addEvent("click",this.verify.bind(this));},verify:function(){var h=[],k={};var j=this.get("form_type");var b=$("surveypie"),a=this.get("sn");for(var c in this.options.row){var l=this.getEl().getElements('input[name="'+a+"["+c+'][]"]');k[c]=[];for(var f=0,g=l.length;f<g;f++){var d=l[f];if(d.checked){k[c].push(d.value);if("radio"==j){break;}}}}if(this.get("is_require")){for(var e in k){if(!k[e].length){h.push(dict.errorIsRequire);break;}}}if(h.length){this.getEl().getElement(".title .error").innerHTML="["+h.join("&nbsp;")+"]";this.xel.setAttribute("verify",0);}else{this.getEl().getElement(".title .error").innerHTML="";this.xel.setAttribute("verify",1);}return h.length;}});function newPart(e,a){var b={page:'<part type="page" rank="9999"><title/><intro/></part>',separator:'<part type="separator" rank="9999"><title/><intro/></part>',html:'<part type="html" rank="9999"><code/></part>',text:'<part type="text" rank="9999" is_require="1" form_type="input" form_width="0" form_height="0" least_input="0" most_input="0" validator=""><subject/><intro/><illustrate/><default_value/></part>',select:'<part type="select" rank="9999" is_require="1" form_type="radio" column_per_row="1" least_check="0" most_check="0" allow_specify="0"><subject/><intro/><illustrate/></part>',matrix:'<part type="matrix" rank="9999" is_require="1" form_type="radio"><subject/><intro/><illustrate/></part>',select_option:'<part type="option" rank="9999" mime="text/plain" value="0"><label/><url/></part>',matrix_option:'<part type="option" rank="9999" direction="" value="0"><label/></part>'};var a=$merge({sn:(new UUID()).id.toLowerCase()},a||{});var f=xmlDocument(b[e]);xmlSetAttributes(f.documentElement,a);if("select"==e){for(var c=0;c<3;c++){var d=f.importNode(newPart("select_option").documentElement,true);f.documentElement.appendChild(d);}}else{if("matrix"==e){for(var c=0;c<3;c++){var d=f.importNode(newPart("matrix_option",{direction:"row"}).documentElement,true);f.documentElement.appendChild(d);}for(var c=0;c<5;c++){var d=f.importNode(newPart("matrix_option",{direction:"col"}).documentElement,true);f.documentElement.appendChild(d);}}}return f;}function resetPartXel(f){var e=f.getAttribute("sn");var b={is_dirty:0,sn:(new UUID()).id.toLowerCase()};if(e){b.copy_from=e;}xmlSetAttributes(f,b);if(f.getAttribute("create_time")){f.removeAttribute("create_time");}if(f.getAttribute("update_time")){f.removeAttribute("update_time");}var d=f.getElementsByTagName("part");for(var c=0,a=d.length;c<a;c++){resetPartXel(d[c]);}return f;}var SurveyHelper=new Class({Implements:Events,initialize:function(a){this.xdoc=xmlDocument(a);this.fxScroll=new Fx.Scroll(window);this.trigger_map={};this.trigger_map.action_part={};this._prepare();},_prepare:function(){var f=xpathSelect(this.xdoc,"//part[@verify]");for(var e=0,a=f.length;e<a;e++){var c=PartFactory(f[e]);c.prepareVerify();}var f=xpathSelect(this.xdoc,"//action_part/../../..");for(var e=0,a=f.length;e<a;e++){try{var c=PartFactory(f[e]);}catch(d){continue;}var b=c.parseTrigger();this._makeTriggerMap(c,b);this._prepareTrigger(c,b);}for(var g in this.trigger_map.action_part){try{var c=PartFactory(g);}catch(d){continue;}c.getEl().setStyle("display","none");}},_makeTriggerMap:function(c,b){var f=this.trigger_map;for(var g in b){var e=b[g];if(!e.part){continue;}for(var d=0,a=e.part.length;d<a;d++){var h=e.part[d];if(!f.action_part[h]){f.action_part[h]=[];}f.action_part[h].push(g);}}},_prepareTrigger:function(b,a){if(b.get("form_type")=="select"){b.getEl().getElement("select").addEvent("change",this._setTrigger.bind(this,a));}else{b.getEl().getElements('input[type="radio"], input[type="checkbox"]').addEvent("click",this._setTrigger.bind(this,a));}},_setTrigger:function(c){var b=[];for(var f in c){var e=c[f];if(!e.part){continue;}for(var d=0,a=e.part.length;d<a;d++){b.push(e.part[d]);}}this._toggleActionPart(b);},_toggleActionPart:function(d){for(var g=0,h=d.length;g<h;g++){try{var b=PartFactory(d[g]);}catch(k){continue;}var n=this.trigger_map.action_part[b.get("sn")];var e=n.filter(function(j){var i=$(j);return i.get("checked")||i.get("selected");});var a=b.getEl();if(e.length){a.setStyle("display","");}else{a.setStyle("display","none");a.getElements('input[type="radio"], input[type="checkbox"]').set("checked",false);a.getElements('input[type="text"]').set("value","");var m=xpathSelect(b.xel,"./triggers/condition/action_part");for(var c=0,l=m.length;c<l;c++){var f=PartFactory(m[c].getAttribute("sn"));f.getEl().setStyle("display","none");}}}},verify:function(){try{var f=xpathSelect(this.xdoc,"//part[@verify=0]");for(var d=0,a=f.length;d<a;d++){var b=PartFactory(f[d]);if(b.getEl().getStyle("display")=="none"){continue;}var e=b.verify();if(e){this.fxScroll.toElement(b.getEl());return false;}}this.fireEvent("verify pass");return true;}catch(c){window.alert("程序错误，无法提交");return false;}}});SurveyHelper.fill=function(r,a){var r=xmlDocument(r);var l=xpathSelect(r,"//part[@is_require]");for(var p=0,q=l.length;p<q;p++){var n=PartFactory(l[p]),f=n.get("type"),k=n.get("sn");if("text"==f){var m=a.hasOwnProperty(k)?a[k]:"";$(k).value=m;}else{if("select"==f){var c=n.get("form_type");var b=a.hasOwnProperty(k)?a[k]:[];if(b&&b.hasOwnProperty("length")){for(var o=0,g=b.length;o<g;o++){var t=b[o];if("select"==c){$(t).selected=true;}else{$(t).checked=true;}}}if(n.get("allow_specify")&&a.hasOwnProperty(k+"_specify")){var h=a[k+"_specify"];if(h){var s=n.getEl();s.getElement('input[type="'+c+'"][value="specify"]').checked=true;s.getElement('input[type="text"]').value=h;}}}else{if("matrix"==f){for(var d in n.options.row){var e=a.hasOwnProperty(d)?a[d]:[];for(var o=0,g=e.length;o<g;o++){$(d+"_"+e[o]).set("checked",true);}}}}}}};var Survey_Creater=new Class({initialize:function(d){this.form=$("survey-info");this.form.setStyle("display","block");this.recommend_tags=("undefined"==typeof d)?[]:d;if(this.recommend_tags.length){$("survey_tags").setStyle("display","");var b=[];for(var c=0,a=this.recommend_tags.length;c<a;c++){b.push('<a href="#">'+this.recommend_tags[c]+"</a>");}$("tag_selector").set("html",b.join("&nbsp;"));$("tag_selector").getElements("a").addEvent("click",this.addTag.bindWithEvent(this));}this.dialog=new Dialog(null,{title:"新建调查表",width:450,height:135});this.dialog.addButton({text:"确定","class":"normal simple"},this.create.bindWithEvent(this));this.dialog.addButton({text:"取消","class":"normal simple"},this.hide.bindWithEvent(this));this.dialog.setContent(this.form);$(this.form.title).addEvent("keydown",this.create.bindWithEvent(this));$(this.form.tags).addEvent("keydown",this.create.bindWithEvent(this));},create:function(c){if("keydown"==c.type){if("enter"!=c.key){return;}else{c.target.blur();}}else{if("click"==c.type){c.target.set("disabled",true);}}var d=this.form.title.value.trim();var a=this.form.tags.value.trim();var b=new Request({url:url("survey","create"),data:{title:encodeURI(d),tags:encodeURI(a)},onSuccess:function(f){var e=JSON.decode(f,true);if(false===e){window.alert("创建调查表失败");}else{if(null===e){window.alert("系统错误，创建调查表可能失败，请刷新当前页面");}else{window.open(url("survey","edit",{sn:e}),"_self");}}}});b.send();},show:function(a){if(a){a.stop();}this.dialog.get("buttons")[0].set("disabled",false);this.dialog.show();this.form.title.value="";this.form.tags.value="";this.form.title.focus();},hide:function(){this.dialog.hide();},addTag:function(c){var a=c.target.get("text");var d=$("survey-info")["tags"];var b=d.value.trim();if(b.length){b=b.split(/\s+/);}else{b=[];}if(!b.contains(a)){b.push(a);d.value=b.join(" ");}}});var TemplateSelector=new Class({Implements:Events,initialize:function(){this._initDialog();this._initEvents();this._selector_inited=false;},_initSelector:function(){var a=new Request({url:"/survey/gettpltag",onSuccess:(function(g){var e=JSON.decode(g,true);var d=this.dialog.getBody().getElement("select");for(var f=0,c=e.length;f<c;f++){var b=e[f];d.options.add(new Option(b,b));}this._selector_inited=true;}).bind(this)});a.send();},_initDialog:function(){this.dialog=new Dialog(null,{title:"模板问题选择",width:640,height:480,autoScroll:false});this.dialog.addButton({text:"确定","class":"normal"},(function(){this.fireEvent("select",this);this.hide();}).bind(this));this.dialog.addButton({text:"关闭","class":"normal"},this.dialog.hide.bind(this.dialog));var b='<div>选择类别：<select><option value="">--请选择--</option></select></div><table id="template-select-panel" cellspacing="0" cellpadding="0"><tr><td valign="top" width="50%"><div style="overflow-x:hidden;overflow-y:auto;" class="tpl-list" id="tpl-list"></div></td><td valign="top" width="50%"><div style="overflow-x:hidden;overflow-y:auto;" class="tpl-list" id="selected-tpl-list"></div></td></tr></table>';this.dialog.setContent(b);var a=$("template-select-panel");a.fitParent();a.getElements(".tpl-list").fitParent();},_initEvents:function(){var a=this.dialog.getBody().getElement("select");a.addEvent("change",this._onChangeTag.bindWithEvent(this));},_onChangeTag:function(c){var a=c.target.value;if(a){var b=new Request({url:"/survey/gettpl",data:{tag:a},onSuccess:this._onLoadTemplate.bind(this),onException:function(){$("tpl-list").set("text","载入失败，请重试");}});$("tpl-list").set("text","Loading ...");b.send();}},_onLoadTemplate:function(b){var a=JSON.decode(b,true);if(a){this.tdoc=xmlDocument(a);this._renderTplList();}},_renderTplList:function(){var a=$("tpl-list");a.empty();var k="";var g=this.tdoc.getElementsByTagName("survey");for(var f=0,c=g.length;f<c;f++){var h=PartFactory(g[f]);k+='<h4 class="toggler">'+h.get("title")+"</h4>";var p=h.xel.getElementsByTagName("part"),o="";for(var e=0,n=p.length;e<n;e++){var d=p[e],l=d.getAttribute("type");if("text"!=l&&"matrix"!=l&&"select"!=l){continue;}var b=PartFactory(d),m=b.getNotice();o+='<table width="100%"><tr title="'+(m.length?m.join(" "):"")+'"><td width="20"><img src="'+b.getIcon()+'"/></td><td>'+b.get("subject")+'</td><td width="50"><button type="button" class="normal" sn="'+b.get("sn")+'">添加</button></td></tr></table>';}k+='<div class="parts">'+o+"</div>";}a.set("html",k);new Accordion(a,"h4.toggler","div.parts",{opacity:false,alwaysHide:true});a.getElements("button").addEvent("click",this._addTemplate.bindWithEvent(this));},_addTemplate:function(a){var c=a.target.get("sn");var b=resetPartXel(this.xdoc.importNode(xpathSelect(this.tdoc,'//part[@sn="'+c+'"]',true),true));this.xdoc.documentElement.appendChild(b);this._renderSelectPart(b);},_renderSelectPart:function(e){var a=PartFactory(e),d=a.getNotice();var b=new Element("div");var c='<table width="100%"><tr title="'+(d.length?d.join(" "):"")+'"><td width="20"><img src="'+a.getIcon()+'"/></td><td>'+a.get("subject")+'</td><td width="50"><button type="button" class="normal" sn="'+a.get("sn")+'">删除</button></td></tr></table>';b.set("html",c);$("selected-tpl-list").appendChild(b);b.getElement("button").addEvent("click",this._removeSelectPart.bindWithEvent(this));},_removeSelectPart:function(b){var a=b.target,d=a.get("sn");var c=xpathSelect(this.xdoc,'//part[@sn="'+d+'"]',true);c.parentNode.removeChild(c);a.getParent("table").destroy();},_resetSelected:function(){this.xdoc=xmlDocument("<parts/>");$("selected-tpl-list").empty();},show:function(){if(!this._selector_inited){this._initSelector();}this._resetSelected();this.dialog.show();},hide:function(){this.dialog.hide();this.fireEvent("cancel",this);}});