var elements_box={selected:false,selection:{target:false,startRectangle:{top:0,left:0,width:0,height:0},startPoint:{top:0,left:0,abs:{top:0,left:0}},resized:false,moved:false,changed:false,edited:false,limit:{top:0,left:0,right:0,bottom:0}},initialize:function(_1,_2,_3,_4){
_1=io.getBox(_1);
if(_1){
_1.io={initialized:false,access:0,link:"",frame:{theme:"default",handler:false,state:{moved:false,resized:false},data:{},limits:{min:{top:0,left:0,height:5,width:5},max:{top:io.site.clientWidth-5,left:io.site.clientHeight-5,height:io.site.clientHeight,width:io.site.clientWidth}},events:{touchstart:[],touchmove:[],touchend:[],touchcancel:[],gesturestart:[],gesturechange:[],gestureend:[],keyup:[]}},type:{name:"box",handler:false,state:{edited:false,editor:false},data:{},events:{touchstart:[],touchmove:[],touchend:[],touchcancel:[],gesturestart:[],gesturechange:[],gestureend:[],keyup:[]}},events:{touchstart:[],touchmove:[],touchend:[],touchcancel:[],gesturestart:[],gesturechange:[],gestureend:[],keyup:[]},contents:io.getContents(_1),parent:io.getBox(_1.parentNode),children:dojo.query(">.box",io.getContents(_1))};
_1.io.type.name=io.getType(_1.io.contents);
dojo.forEach(io.types,function(_5,i){
if(_5.name==_1.io.type.name){
_1.io.type.handler=_5.handler;
}
});
if(_3){
console.warn("io.box.initialize() access level "+_3+" on "+_1.id);
_1.io.access=_3;
}
if(_4){
_1.io.link=_4;
}
io.frame.initialize(_1,_2);
if(_1.io.contents){
"login_button_inactive";
if((_1.io.type.name=="containers_site")||(_1.io.type.name=="containers_page")){
io.type.initialize(_1,_2);
}else{
if(_1.io.contents!=undefined){
var _6=io.getId(_1.io.contents);
if(_6){
io.request("get",_1,_1.io.type.name,{recordid:_6},io.type.receive);
}else{
alert("Box content has no id: "+_1.id);
}
}else{
alert("Box "+_1.id+" has no contents!");
}
}
}else{
console.warn("io.box.initialize() "+_1.id+" ("+_1.io.type.name+") has no content");
}
_1.io.events.touchstart.push(dojo.connect(_1,io.eventTypes.down,null,io.box.touchStart));
return true;
}else{
console.warn("Unable find box to initialize");
}
return false;
},disconnect:function(_7){
_7=io.getBox(_7);
if(_7&&_7.io&&_7.io.initialized){
while(_7.io.events.touchstart.length>0){
dojo.disconnect(_7.io.events.touchstart.pop());
}
while(_7.io.events.touchmove.length>0){
dojo.disconnect(_7.io.events.touchmove.pop());
}
while(_7.io.events.touchend.length>0){
dojo.disconnect(_7.io.events.touchend.pop());
}
io.frame.disconnect(_7);
io.type.disconnect(_7);
}
return true;
},touchStart:function(_8){
_8=io.fixEvent(_8);
if(dojo.byId("loginpanel").io.state=="active"){
io.deactivateLogin();
}
if(!io.box.selected||(io.box.selected!=_8.io.box)){
if((io.mode=="edit")&&((_8.io.box.io.access>=2)||(_8.io.box.io.parent.io.access>=4))){
io.box.select(_8.io.box,_8.io.position);
if(_8.io.box.io.type.name!="containers_site"){
if((io.box.selected.io.access>=4)||(io.page.io.access>=4)){
if((io.box.selected.io.type.name=="images_image")&&(io.box.selected.io.type.data.frameaction==0)){
console.warn("Image frame is locked - refusing to move it");
}else{
_8.io.box.io.events.touchmove.push(dojo.connect(io.site,io.eventTypes.move,null,io.box.touchMove));
}
}
if(io.box.selected.io.access>1){
_8.io.box.io.events.touchend.push(dojo.connect(io.site,io.eventTypes.up,null,io.box.touchEnd));
}
}else{
}
}else{
console.warn("Only (pre)view access to "+_8.io.box.id);
if(io.box.selected){
if(_8.io.box.id!=io.box.selected.id){
io.box.unselect();
}
}
if(_8.io.box.io.link!=""){
window.location.href=_8.io.box.io.link;
return false;
}
}
}else{
}
return false;
},touchMove:function(_9){
var _a=io.fixEvent(_9);
if(io.box.selected){
var _b=io.box.selected;
if(!_b.io.type.state.editor){
if(io.platform=="mobile"){
if((io.box.selected.io.type.name=="containers_page")||(io.box.selected.io.type.name=="containers_site")){
_9.preventDefault();
}
}
io.frame.move(_9);
}
}
return false;
},touchEnd:function(_c){
fixedEvent=io.fixEvent(_c);
if(io.box.selected){
var _d=io.box.selected;
while(_d.io.events.touchmove.length>0){
dojo.disconnect(_d.io.events.touchmove.pop());
}
while(_d.io.events.touchend.length>0){
dojo.disconnect(_d.io.events.touchend.pop());
}
dojo.removeClass(_d,"moving");
if(io.box.selected.io.access>1){
if(!_d.io.type.state.editor){
if(_d.io.frame.state.moved){
io.box.unselect();
}else{
if(_d.io.type.name!="containers_page"){
if(!(_d.io.frame.data.locking&4)){
io.box.edit(_d);
}else{
alert("The content of this object is locked!");
}
}else{
}
}
}
}
}else{
}
return true;
},update:function(_e){
_e=io.getBox(_e);
io.request("render",_e,_e.io.type.name,{recordid:_e.io.type.data.recordid},io.box.receive);
},edit:function(_f){
var _10=io.getContents(_f);
if(_10){
io.type.edit(_f);
}
},save:function(box){
box=io.getBox(box);
if(box){
if(box.io.frame.state.resized||box.io.frame.state.moved){
io.frame.save(box);
}
if(box.io.type.state.editor||box.io.type.state.edited){
io.type.save(box);
}
}
},copy:function(box){
box=io.getBox(box);
io.request("copy",box,box.io.type.name,{recordid:box.io.frame.data.recordid,parentid:box.io.frame.data.parentid},io.box.receive);
},create:function(_11,_12){
if(_12){
if(_12.frame){
if(io.box.selected&&(io.box.selected.io.type.name=="containers_frame")){
_12.frame.parentid=io.box.selected.io.frame.data.recordid;
}else{
if(_12.frame.parentid==undefined){
_12.frame.parentid=io.page.io.frame.data.recordid;
}
}
if(!_12.frame.top||!_12.frame.left){
if(!io.box.selected||(io.box.selected==io.page)||(io.box.selected==io.site)||(io.box.selected.io.frame.data.typeid==23)){
_12.frame.top=0;
_12.frame.left=0;
}else{
var _13=io.box.selected;
selectedRight=_13.io.frame.data.left+_13.io.frame.data.width;
if(io.page.io.frame.data.width>(selectedRight+200)){
_12.frame.top=_13.io.frame.data.top;
_12.frame.left=selectedRight;
}else{
_12.frame.top=_13.io.frame.data.top+_13.io.frame.data.height;
_12.frame.left=_13.io.frame.data.left;
}
}
}
if(!_12.frame.height||!_12.frame.width){
_12.frame.height=200;
_12.frame.width=200;
}
console.warn("Requesting new "+_11);
io.request("create",io.page,_11,_12,io.box.receive);
}else{
console.warn("Frame data for new "+_11+" missing");
}
}else{
console.error("Data for new object is missing!");
}
},remove:function(box){
box=io.getBox(box);
if(box){
io.request("delete",box,box.io.type.name,box.io.type.data,io.box.receive);
}
},receive:function(_14){
var res=dojo.fromJson(_14);
var box=dojo.byId("box_"+res.objectid);
if(box){
if(res.request.command=="get"){
io.box.disconnect(box);
io.box.initialize(box,res.data,res.access,res.link);
return true;
}else{
if(res.request.command=="link"){
io.type.save(box);
return true;
}
}
}else{
if(res.request.command=="get"){
if(res.status.startsWith("404")){
io.request("render",io.site,"containers_site",{siteid:20000,parentid:0},io.box.receive);
}
return true;
}
}
if(res.request.command=="create"){
if(res.data!=false){
var _15=io.page.io.frame.data.recordid;
if(res.request.data.parentid){
_15=res.request.data.parentid;
}else{
if(res.request.data.frame&&res.request.data.frame.parentid){
_15=res.request.data.frame.parentid;
}
}
io.request("render",io.site,res.request.objecttype,{recordid:res.objectid,objectid:res.objectid,parentid:_15},io.box.receive);
}else{
console.warn("io.box.receive() create request failed");
}
}else{
if(res.request.command=="render"){
if(res.objecttype=="containers_site"){
io.box.disconnect(io.site);
io.site.innerHTML="";
dojo.place(res.data,io.site,"replace");
io.site=dojo.byId("box_"+res.request.data.recordid);
dojo.addClass(io.site,"new");
io.page=false;
io.request("get",io.site,"box_frame",{recordid:io.getId(io.site)},io.box.receive);
}else{
if(res.objecttype=="containers_page"){
io.box.disconnect(io.page);
dojo.place(res.data,io.page,"replace");
if(dojo.isString(res.request.data.recordid)){
io.page=dojo.byId("box_"+res.request.data.recordid);
}else{
io.page=dojo.query(">.containers_page",io.site.io.contents)[0];
}
dojo.addClass(io.page,"new");
io.request("get",io.page,"box_frame",{recordid:io.getId(io.page)},io.box.receive);
}else{
if(res.request.data.parentid){
var _16=dojo.byId("box_"+res.request.data.parentid).io.contents;
}else{
var _16=io.page.io.contents;
}
dojo.place(res.data,_16,"last");
box=dojo.byId("box_"+res.request.data.recordid);
if(box){
dojo.addClass(box,"new");
io.request("get",box,"box",{recordid:res.request.data.recordid},io.box.receive);
}else{
console.warn("io.box.receive() new rendered object disappeared!");
}
}
}
}else{
if(res.request.command=="delete"){
if(res.data==false){
alert("You can not delete this "+res.request.objecttype+" for the following reason:\n\n"+res.status);
}else{
var box=dojo.byId("box_"+res.request.objectid);
if(box){
dojo.addClass(box,"deleted");
io.fadeOut(box,function(_17){
if(io.box.selected==_17){
io.box.unselect();
}
io.box.disconnect(_17);
if(_17.io.type.name=="containers_site"){
io.request("render",io.site,"containers_site",{recordid:100},io.box.receive);
}else{
if(_17.io.type.name=="containers_page"){
io.request("render",io.site,"containers_page",{recordid:"first",parentid:io.site.io.type.data.recordid},io.box.receive);
}else{
_17.parentNode.removeChild(_17);
}
}
});
}else{
}
}
}else{
if(res.request.command=="copy"){
if(res.data!=false){
io.request("render",io.page,res.request.objecttype,{recordid:res.objectid,parentid:res.request.data.parentid},io.box.receive);
}else{
console.warn("io.box.reveice() create request failed: "+res.status);
}
}else{
console.warn("io.box.receive() unknown command response received!");
}
}
}
}
return false;
},select:function(_18,_19){
if(!_18){
return false;
}
var box=io.getBox(_18);
if(io.box.selected){
if(box!=io.box.selected){
io.box.unselect(true);
}
}
if(io.controls.selected==dojo.byId("control_manage_access")){
io.controls.unselect();
}
if(!_19){
abs=io.getAbsPos(box);
var _19={rel:{top:box.io.frame.data.top+(box.io.frame.data.height/2),left:box.io.frame.data.left+(box.io.frame.data.width/2)},abs:{top:abs.top+(box.io.frame.data.height/2),left:abs.left+(box.io.frame.data.width/2)}};
}
io.box.selected=box;
io.box.selection={target:_18,startRect:{top:box.io.frame.data.top,left:box.io.frame.data.left,width:box.io.frame.data.width,height:box.io.frame.data.height},eventPos:_19,resized:false,moved:false,changed:false,edited:false,limit:box.io.frame.limits};
dojo.addClass(box,"selected");
io.controls.update();
return io.box.selected;
},unselect:function(_1a){
if(io.box.selected){
var box=io.box.selected;
dojo.animateProperty({rate:20,duration:500,node:dojo.byId("controls_options"),properties:{top:0}}).play();
dojo.removeClass(box,"selected");
if(!dojo.hasClass(box,"deleted")){
io.box.save(box);
}
}
io.box.selected=false;
io.box.selection=false;
if(!_1a){
io.controls.update();
}
},info:{dialog:{height:100,width:100,contents:""},load:function(){
io.box.info.dialog={height:250,width:400,contents:""};
ioType=io.box.selected.io.type.name;
if(io.controls.selected&&(io.controls.selected.id.contains("containers_site")||io.controls.selected.id.contains("containers_page"))){
var _1b={recordid:"new"};
}else{
var _1b={recordid:io.box.selected.io.frame.data.recordid};
}
io.request("getinfo",io.box.selected,ioType,_1b,io.dialog.receive);
},save:function(){
console.warn("Updating box info");
var _1c=dojo.byId("info_frame_recordid").value;
var _1d=dojo.byId("info_frame_typeid").value;
var _1e=dojo.byId("info_frame_typename").value;
if(_1c=="new"){
var _1f=io.page.io.frame.data.recordid;
var _20=200;
var _21=200;
if(_1e=="containers_site"){
_1f=0;
}else{
if(_1e=="containers_page"){
_1f=io.site.io.frame.data.recordid;
}
}
var _22={recordid:"new",parentid:_1f,typeid:_1d,top:dojo.byId("info_frame_top").value,topunit:dojo.byId("info_frame_topunit").value,left:dojo.byId("info_frame_left").value,leftunit:dojo.byId("info_frame_leftunit").value,height:dojo.byId("info_frame_height").value,heightunit:dojo.byId("info_frame_heightunit").value,width:dojo.byId("info_frame_width").value,widthunit:dojo.byId("info_frame_widthunit").value,title:dojo.byId("info_frame_title").value,description:dojo.byId("info_frame_description").value,url:dojo.byId("info_frame_url").value};
io.box.unselect();
io.request("create",io.site,_1e,_22,io.box.receive);
io.controls.unselect();
}else{
box=dojo.byId("box_"+_1c);
if(box){
box.io.frame.data.title=dojo.byId("info_frame_title").value;
box.io.frame.data.description=dojo.byId("info_frame_description").value;
box.io.frame.data.url=dojo.byId("info_frame_url").value;
box.io.frame.data.top=dojo.byId("info_frame_top").value;
box.io.frame.data.topunit=dojo.byId("info_frame_topunit").value;
box.io.frame.data.left=dojo.byId("info_frame_left").value;
box.io.frame.data.leftunit=dojo.byId("info_frame_leftunit").value;
box.io.frame.data.width=dojo.byId("info_frame_width").value;
box.io.frame.data.widthunit=dojo.byId("info_frame_widthunit").value;
box.io.frame.data.height=dojo.byId("info_frame_height").value;
box.io.frame.data.heightunit=dojo.byId("info_frame_heightunit").value;
io.frame.save(box);
}else{
console.warn("Unable to update frame info for box "+_1c);
}
}
},cancel:function(){
io.controls.unselect();
}},backgroundColor:{dialog:{height:100,width:100,header:"",contents:"",value:""},load:function(){
io.box.backgroundColor.dialog={height:200,width:400,header:"Edit background color",contents:"colorPicker",value:io.box.selected.io.frame.data._background};
var _23={recordid:io.box.selected.io.frame.data.recordid,parentid:io.box.selected.io.frame.data.parentid};
},save:function(){
console.warn("Updating background color");
var cp=dojo.byId("colorPicker");
if(cp){
var _24=dojo.byId("transparency");
if(_24.checked){
io.box.selected.io.frame.data._background="transparent";
}else{
io.box.selected.io.frame.data._background=cp.value;
}
io.box.selected.style.backgroundColor=io.box.selected.io.frame.data._background;
io.frame.save(io.box.selected);
}else{
console.warn("Color not saved: colorPicker not found");
}
},cancel:function(){
}},borderColor:{dialog:{height:100,width:100,header:"",contents:"",value:""},load:function(){
io.box.borderColor.dialog={height:200,width:400,header:"Edit border color",contents:"colorPicker",value:io.box.selected.io.frame.data._borderColor};
var _25={recordid:io.box.selected.io.frame.data.recordid,parentid:io.box.selected.io.frame.data.parentid};
},save:function(){
console.warn("Updating border color");
var cp=dojo.byId("colorPicker");
if(cp){
var _26=dojo.byId("transparency");
if(_26.checked){
io.box.selected.io.frame.data._borderColor="transparent";
}else{
io.box.selected.io.frame.data._borderColor=cp.value;
}
io.box.selected.style.borderColor=io.box.selected.io.frame.data._borderColor;
io.frame.save(io.box.selected);
}else{
console.warn("Color not saved: colorPicker not found");
}
},cancel:function(){
}},link:{dialog:{height:200,width:400,header:"Create a link",contents:"<p>Please enter a url for the link, or select a destination page from the list below.</p>"+"<input type='text' id='linkDestination' value='' style='width: 100%;'>"},load:function(){
if(io.box.selected){
var _27={recordid:io.box.selected.io.frame.data.recordid};
var _28={recordid:"new",parentid:io.site.io.type.data.recordid};
io.request("getlink",io.box.selected,io.box.selected.io.type.name,_27,io.dialog.receive);
io.request("getlist",io.page,"containers_page",_28,io.controls.receiveOptions);
}
},select:function(_29){
fixedEvent=io.fixEvent(_29);
var _2a=fixedEvent.io.target;
while(!dojo.hasClass(_2a,"control")){
_2a=_2a.parentNode;
}
var url=dojo.byId("page_url_"+io.getId(_2a));
var _2b=dojo.byId("link_destination");
_2b.value=url.value;
},save:function(){
console.warn("Creating or updating link");
ioType=io.getType(io.controls.selected).substr(8);
var _2c="";
if(linkInput=dojo.byId("link_destination")){
var _2d={recordid:dojo.byId("link_recordid").value,destination:linkInput.value,boxid:io.box.selected.io.frame.data.recordid};
io.request("link",io.box.selected,io.box.selected.io.type.name,_2d,io.box.receive);
}
io.controls.unselect();
},cancel:function(){
io.controls.unselect();
}},access:{dialog:{height:200,width:400},load:function(){
},select:function(_2e){
fixedEvent=io.fixEvent(_2e);
var _2f=fixedEvent.io.target;
while(!dojo.hasClass(_2f,"control")){
_2f=_2f.parentNode;
}
var _30=io.getId(_2f);
var _31=fixedEvent.io.target;
while(!dojo.hasClass(_31,"selector")&&!dojo.hasClass(_31,"control")){
_31=_31.parentNode;
}
if(dojo.hasClass(_31,"selector")){
var mod=1;
if(dojo.hasClass(_31,"on")){
dojo.removeClass(_31,"on");
dojo.addClass(_31,"off");
mod=-1;
}else{
dojo.removeClass(_31,"off");
dojo.addClass(_31,"on");
}
if(dojo.hasClass(_31,"view")){
mod=mod*1;
}else{
if(dojo.hasClass(_31,"edit")){
mod=mod*2;
}else{
if(dojo.hasClass(_31,"manage")){
mod=mod*4;
}
}
}
accessData={recordid:io.box.selected.io.frame.data.recordid,modifier:mod,userid:_30,groupid:0};
io.request("setaccess",io.box.selected,io.box.selected.io.type.name,accessData,function(){
var _32={recordid:"all",siteid:io.site.io.type.data.recordid,objectid:io.box.selected.io.frame.data.recordid};
io.request("getlist",io.page,"users_user",_32,io.controls.receiveOptions);
});
}else{
if(!io.dialog.handler){
io.dialog.open(io.box.access);
}
var _33={recordid:_30,boxid:io.box.selected.io.frame.data.recordid};
io.request("getinfo",io.box.selected,"users_user",_33,io.dialog.receive);
}
},save:function(){
console.warn("Updating user info");
var _34=dojo.byId("user_recordid").value;
var _35=io.site.io.frame.data.recordid;
if(_34=="new"){
var _36={recordid:"new",boxid:_35,title:dojo.byId("user_title").value,firstname:dojo.byId("user_firstname").value,lastname:dojo.byId("user_lastname").value,about:dojo.byId("user_about").value,email:dojo.byId("user_email").value};
var _37=false;
var _38=dojo.byId("user_password1");
if(_38){
var _39=_38.value;
var _3a=dojo.byId("user_password2").value;
if((_39==_3a)&&(_39!="**********")){
_36.password=_39;
}else{
_37=true;
}
}
if(_37){
alert("The password was not set. Edit the user to set a password.");
}
io.request("create",io.site,"users_user",_36,io.receive);
}else{
var _36={recordid:_34,boxid:_35,title:dojo.byId("user_title").value,firstname:dojo.byId("user_firstname").value,lastname:dojo.byId("user_lastname").value,about:dojo.byId("user_about").value,email:dojo.byId("user_email").value};
var _37=false;
var _38=dojo.byId("user_password1");
if(_38){
var _39=_38.value;
var _3a=dojo.byId("user_password2").value;
if((_39==_3a)&&(_39!="**********")){
_36.password=_39;
}else{
if(_39!=_3a){
alert("The passwords did not match. No changes were made to the user.");
_37=true;
}
}
}
if(!_37){
io.request("save",io.site,"users_user",_36,io.receive);
}
}
io.controls.unselect();
},cancel:function(){
io.controls.unselect();
}}};
io.box=elements_box;


