var TriggerManager=new Class({initialize:function(a){this.xdoc=a;this._init();$("add_trigger").addEvent("click",this._addTrigger.bind(this));},_init:function(){this._initConditionPartSelector();this._initTriggerPanel();},_initConditionPartSelector:function(){var s=xpathSelect(this.xdoc,"//triggers/.."),a=[];for(var k=0,m=s.length;k<m;k++){var e=s[k];a.push(e.getAttribute("sn"));}var f=$("condition_part_selector");f.empty();var d=xpathSelect(this.xdoc,'/survey/part[@type="page"]');for(var k=0,m=d.length;k<m;k++){var n=PartFactory(d[k]);var r=new Element("optgroup",{label:n.getTitle()});f.appendChild(r);var h=xpathSelect(n.xel,'./part[@type="select"]');for(var g=0,q=h.length;g<q;g++){var c=PartFactory(h[g]),b=c.get("sn");var p=c.get("subject")?c.get("subject"):dict.blankSelectSubject;var o={value:b,text:p};if(a.contains(b)){o["class"]="triggered";}var l=new Element("option",o);r.appendChild(l);}}},_initTriggerPanel:function(){var d=xpathSelect(this.xdoc,"//triggers/..");for(var c=0,a=d.length;c<a;c++){var b=PartFactory(d[c]);this._appendTriggerPanel(new TriggerPanel(b));this._addPartEvents(b);}},_addPartEvents:function(a){a.addEvent("set",this._onPartUpdate.bind(this));a.addEvent("remove",this._removeTrigger.bind(this));a.addEvent("remove trigger",this._removeTrigger.bind(this));a.addEvent("remove condition",this._removeCondition.bind(this));a.addEvent("update option",a.triggerPanel.render.bind(a.triggerPanel));},_onPartUpdate:function(a,b){if(a.get("type")=="select"&&b.contains("subject")){a.triggerPanel.render();}},_addTrigger:function(){var a=$("condition_part_selector"),c=a.value;if(!c){return false;}var b=PartFactory(c);if(!xpathSelect(b.xel,"./triggers",true)){b.addTrigger();this._appendTriggerPanel(new TriggerPanel(b));this._addPartEvents(b);this._initConditionPartSelector();}if(b.triggerPanel){b.triggerPanel.focus();}return true;},_removeTrigger:function(b){b.triggerPanel.remove();var a=b.xel.parentNode.getAttribute("sn");var c=$("trigger_list").getElement('.trigger_panel[sn="'+a+'"]');this._initConditionPartSelector();if(c&&!c.getElement("ul.triggers li")){c.dispose();}},_removeCondition:function(a){a.triggerPanel.render();},_touchPageContainer:function(c){if(typeof c=="string"){c=PartFactory(c);}var d="trigger_page_"+c.get("sn"),a=$(d);if(!a){var b="<fieldset><legend>"+c.getTitle()+'</legend><ul class="triggers"></ul></fieldset>';var a=new Element("div",{id:d,html:b,"class":"trigger_panel",sn:c.get("sn")});$("trigger_list").appendChild(a);}return a;},_appendTriggerPanel:function(a){var b=PartFactory(a.part.xel.parentNode);var c=this._touchPageContainer(b);c.getElement("ul.triggers").appendChild(a.el);}});var TriggerPanel=new Class({initialize:function(a){var b=a.get("subject")?a.get("subject"):dict.blankSelectSubject;var c='<div class="part_trigger"><h3 style="display:inline;">'+b+'</h3><a href="#" class="remove_trigger">删除逻辑</a><div class="options"></div></div>';var d="part_trigger_panel_"+a.get("sn");this.el=new Element("li",{html:c,id:d,sn:a.get("sn")});a.triggerPanel=this;this.part=a;this.el.getElement(".remove_trigger").addEvent("click",this.part.removeTrigger.bind(this.part));a.addEvent("update condition",this.render.bind(this));this.render();},render:function(){var l=this.part.options;var a="";var d=this.part.parseTrigger();var f="even";for(var c in l){f=(f=="even")?"odd":"even";a+='<tr class="'+f+'">';var g=l[c],e=d[c],k=[];if(e){var b='<a href="#" sn="'+c+'">修改关联</a>';}else{var b='<a href="#" sn="'+c+'">添加关联</a>';}a+='<td class="control">'+b+"</td>";var i=g.label?g.label:dict.blankSelectOptionLabel;i=g.index+".&nbsp;"+i;a+='<td class="label">'+i+"</td>";if(e&&e.part){var b="继续回答（"+e.part.length+"）道题";}else{if(e&&e.page){if(e.page=="finish"){var b="结束调查表";}else{var j=PartFactory(e.page);var b="跳转到 "+j.getTitle();}}else{var b="&nbsp;";}}a+='<td class="cond_intro">'+b+"</td></tr>";}a="<table>"+a+"</table>";this.el.getElement("div.options").set("html",a);this.el.getElements("div.options a").addEvent("click",this.loadConditionDialog.bindWithEvent(this));var h=this.part.get("subject")?this.part.get("subject"):dict.blankSelectSubject;this.el.getElement("h3").set("text",h);},remove:function(){this.el.dispose();},loadConditionDialog:function(a){conditionDialog.show(this.part,a.target.get("sn"));},focus:function(){if(this.el){(new Fx.Scroll($("trigger_list"))).toElement(this.el);}}});var ConditionDialog=new Class({_init:function(){this.dialog=new Dialog(null,{width:640,height:480,autoScroll:true});this.dialog.setTitle("逻辑关联");this.dialog.setContent($("condition_panel").setStyle("display",""));this.dialog.addButton("保存",this._save.bind(this));this.dialog.addButton({id:"remove_condition",html:"删除"},this._remove.bind(this));this.dialog.addButton("关闭",this.dialog.hide.bind(this.dialog));},_render:function(){var m=this.part.options[this.condition_option];var g=this.part.parseTrigger(),j=g[this.condition_option];if(!j){var j={};}if(!j.part){j.part=[];}if(!j.page){j.page=null;}var f=false;var n=this.part.get("subject")?this.part.get("subject"):dict.blankSelectSubject;var b=$("condition_panel");b.getElement(".subject").set("text",n);var o=m.label?m.label:dict.blankSelectOptionLabel;o=m.index+".&nbsp;"+o;b.getElement(".notice").set("html",'请勾选，选择<span class="option_label">'+o+"</span>后继续回答的问题或页面");var h=this._getActionParts();var k=[];for(var e in h){var d="action_part_"+e;var p='checked = "'+(j.part.contains(e)?"checked":"")+'"';if(j.part.contains(e)){var c='<li><input type="checkbox" name="action_parts" value="'+e+'" id="'+d+'" checked="checked"/><label for="'+d+'">继续回答 <span class="action_target">'+h[e]+"</span></label></li>";f=true;}else{var c='<li><input type="checkbox" name="action_parts" value="'+e+'" id="'+d+'"/><label for="'+d+'">继续回答 <span class="action_target">'+h[e]+"</span></label></li>";}k.push(c);}var a=this._getActionPages();var i=[];for(var e in a){var d="action_page_"+e;var p='checked = "'+((a==j.page)?"checked":"")+'"';if(e==j.page){var c='<li><input type="radio" name="action_pages" value="'+e+'" id="'+d+'" checked="checked"/><label for="'+d+'">跳转到<span class="action_target">'+a[e]+"</span></label></li>";f=true;}else{var c='<li><input type="radio" name="action_pages" value="'+e+'" id="'+d+'"/><label for="'+d+'">跳转到<span class="action_target">'+a[e]+"</span></label></li>";}i.push(c);}var l="";if(k.length){l+='<ul class="action_parts">'+k.join("")+"</ul>";}if(i.length){l+='<ul class="action_pages">'+i.join("")+"</ul>";}$("action_list").set("html",l);$("action_list").getElements(".action_parts input").addEvent("click",function(){$("action_list").getElements(".action_pages input").set("checked",false);});$("action_list").getElements(".action_pages input").addEvent("click",function(){$("action_list").getElements(".action_parts input").set("checked",false);});$("remove_condition").setStyle("display",(f?"":"none"));},_getActionParts:function(){var e=xpathSelect(this.part.xel,'following-sibling::part[@type="text" or @type="select" or @type="matrix"]');var f={};for(var d=0,a=e.length;d<a;d++){var b=PartFactory(e[d]);var c=b.get("subject");if(!c){switch(b.get("type")){case"text":c=dict.blankSingleTextSubject;break;case"select":c=dict.blankSelectSubject;break;case"matrix":c=dict.blankMatrixSubject;break;default:break;}}f[b.get("sn")]=c;}return f;},_getActionPages:function(){var d=xpathSelect(this.part.xel.parentNode,'following-sibling::part[@type="page"]');var b={};for(var c=1,a=d.length;c<a;c++){var e=PartFactory(d[c]);b[e.get("sn")]=e.getTitle();}if(d.length>0){b.finish="调查结束页面，结束调查";}return b;},_save:function(){var d=$("condition_panel");var f=d.getElements(".action_parts input"),c=[];for(var e=0,b=f.length;e<b;e++){var g=f[e];if(g.get("checked")){c.push(g.get("value"));}}if(c.length){this.part.addPartAction(this.condition_option,c);}var f=d.getElements(".action_pages input"),a=null;for(var e=0,b=f.length;e<b;e++){var g=f[e];if(g.get("checked")){a=g.get("value");break;}}if(a){this.part.addPageAction(this.condition_option,a);}this.hide();},_remove:function(a){if(typeof a=="undefined"){a=false;}if(!a){if(window.confirm("是否确定要删除这条逻辑？")){this._remove(true);}else{return false;}}this.part.removeCondition(this.condition_option);this.hide();return true;},show:function(a,b){if(!this.dialog){this._init();}this.part=a;this.condition_option=b;this._render();this.dialog.show();},hide:function(){this.dialog.hide();}});var conditionDialog=new ConditionDialog();PartSelect.implement({addTrigger:function(){var a=this.xel.ownerDocument;this.trigger_xel=a.createElement("triggers");this.xel.appendChild(this.trigger_xel);this.fireEvent("add trigger",this);},removeTrigger:function(){var c=this.xel.getElementsByTagName("triggers");for(var b=0,a=c.length;b<a;b++){this.xel.removeChild(c[b]);}delete this.trigger_xel;this.fireEvent("remove trigger",this);},removeCondition:function(a){var b=xpathSelect(this.xel,'./triggers/condition[@option="'+a+'"]',true);if(!b){return false;}b.parentNode.removeChild(b);this.fireEvent("remove condition",this);return true;},_touchConditionXel:function(b,c){if(!this.trigger_xel){this.addTrigger();}if(typeof c=="undefined"){c=false;}var d=xpathSelect(this.xel,'./triggers/condition[@option="'+b+'"]',true);if(!d){var a=this.xel.ownerDocument;var d=a.createElement("condition");this.trigger_xel.appendChild(d);xmlSetAttributes(d,{option:b});}else{if(c){while(d.firstChild){d.removeChild(d.firstChild);}}}return d;},addPartAction:function(f,c){var j=this._touchConditionXel(f,true);j.setAttribute("method","show");var g=j.ownerDocument;for(var e=0,h=c.length;e<h;e++){var a=c[e];var b=g.createElement("action_part");j.appendChild(b);b.setAttribute("sn",a);var d=PartFactory(a);d.addEvent("remove",(function(){var n=xpathSelect(this.xel.ownerDocument,'//triggers/condition/*[@sn="'+this.get("sn")+'"]');for(var m=0,l=n.length;m<l;m++){var k=n[m];var o=xpathSelect(k,'ancestor::part[@type="select"]',true);k.parentNode.removeChild(k);PartFactory(o).fireEvent("update condition");}}).bind(d));}this.fireEvent("update condition");},addPageAction:function(d,c){var e=this._touchConditionXel(d,true);if(c=="finish"){e.setAttribute("method","finish");}else{e.setAttribute("method","goto");var b=e.ownerDocument;var f=b.createElement("action_page");e.appendChild(f);f.setAttribute("sn",c);var a=PartFactory(c);a.addEvent("remove",(function(){var k=xpathSelect(this.xel.ownerDocument,'//triggers/condition/*[@sn="'+this.get("sn")+'"]');for(var j=0,h=k.length;j<h;j++){var g=k[j];var l=xpathSelect(g,'ancestor::part[@type="select"]',true);g.parentNode.removeChild(g);PartFactory(l).fireEvent("update condition");}}).bind(a));}this.fireEvent("update condition");},parseTrigger:function(){if(!this.trigger_xel){var l=xpathSelect(this.xel,"./triggers",true);if(!l){return{};}this.trigger_xel=l;}var b={};var h=xpathSelect(this.xel,"./triggers/condition");for(var f=0,k=h.length;f<k;f++){var c=h[f];var g=c.getAttribute("option"),d={};if(c.getAttribute("method")=="finish"){d.page="finish";b[g]=d;continue;}for(var e=0,m=c.childNodes.length;e<m;e++){var a=c.childNodes[e];if(a.nodeName=="action_part"){if(!d.part){d.part=[];}d.part.push(a.getAttribute("sn"));}else{if(a.nodeName=="action_page"){d.page=a.getAttribute("sn");}}}b[g]=d;}return b;},verifyTrigger:function(){this.updateOptions();}});