function know_rights(){return !(!rights)}function has_right(a,b){if(!know_rights()){return false}return has_right_in_set(a,b,rights)}function has_right_in_set(a,b,c){if(!c.rights[a]){return false}if(b){return c.rights[a].member(b)}else{return c.rights[a].size()}}function has_role(b,a){if(!know_rights()){return false}return has_role_in_set(b,a,rights)}function has_role_in_set(c,a,b){if(!b.roles[c]){return false}if(a){return b.roles[c].member(a)}else{return b.roles[c].size()}}function getActor(a){return can_act_as[a]}function all_actors(){var a=Array();$H(can_act_as).each(function(b){a.push(b[0])});return a}function some_actors_match(a){var b=rights;if(a.rights_set){b=a.rights_set}return(matching_actors(a.rules,b).length>0)}function all_actors_match(a){var c=rights;if(a.rights_set){c=a.rights_set}var b=matching_actors(a.rules,c);return(b.length==all_actors().length)}function actor_picker(g,b){var d=rights;if(b.rights_set){d=b.rights_set}var c=matching_actors(b.rules,d);if(c.length==0){g(null);return true}var e=all_actors();if(e.length==1){g(e[0]);return true}var f=actor_set();$$(".actor-picker-form").each(function(h){h.remove()});var a=new Element("form",{className:"actor-picker-form"});a.insert(f);a.insert(new Element("input",{className:"actor-picker-done-btn",type:"image",name:"done",src:"/images/buttons/medium/srt_select.gif"}));Event.observe(a,"submit",function(h){Event.stop(h);actor_selected(g)});pop_over(a);f.select(".actor").each(function(h){actor_deactivate(h)});c.each(function(h){actor_activate($("full-actor-select-"+h.toString()))});if(b.current_actor_id){$("full-actor-select-"+b.current_actor_id.toString()).down("input").checked=true}}function actor_selected(b){pop_over_close();var a=null;$$("#full-actor-set .possible-actor").each(function(c){if(c.checked){a=c.value}});b(a)}function actor_deactivate(a){a.down(".actor-inner").setOpacity(0.2);a.down("input").disabled=true}function actor_activate(a){a.down(".actor-inner").setOpacity(1);a.down("input").disabled=false}function actor_set(){var a=$("full-actor-set");if(a){return a}var a=new Element("div",{id:"full-actor-set"});a.insert(new Element("h4").update("Select Your Identity"));all_actors().each(function(d){var b=getActor(d);var c=new Element("div",{className:"actor",id:"full-actor-select-"+d.toString()});var e=new Element("div",{className:"actor-inner"});c.insert(e);e.insert(new Element("img",{src:b.tiny_thumb}));e.insert(new Element("div",{className:"detail"}).insert(new Element("h4").update(b.name)));e.insert(new Element("input",{className:"possible-actor",type:"radio",name:"actor_id",value:d}));e.insert(new Element("div",{className:"clear"}));Event.observe(e,"click",function(g){var f=e.down("input");if(!f.disabled){f.checked=true}});a.insert(c)});return a}function matching_actors(c,b){if(!c){c={}}var a=all_actors();if(c.right){$w(c.right).each(function(d){a=actor_match(a,d,function(f,e){return has_right_in_set(e,f,b)})})}if(c.role){$w(c.role).each(function(d){a=actor_match(a,d,function(e,f){return has_role_in_set(f,e,b)})})}if(c.actor_type){$w(c.actor_type).each(function(d){a=actor_match(a,d,function(e,f){return getActor(e).actor_type==f})})}return a}function actor_match(a,c,e){var d=Array();var b=false;if(c.charAt(0)=="!"){c=c.replace("!","");b=true}a.each(function(f){if(!b!=!e(f,c)){d.push(f)}});return d};