ug.PeoplePicker=function(A){Ext.apply(this,A,{title:"Choose People"});
this.resetSelections(this.sources);
ug.PeoplePicker.superclass.constructor.call(this,A)
};
ug.peoplePickerUtil={typeConfig:function(A,C){var B;
if(A&&A==="link"){B={tag:"a",html:C,href:"#"}
}else{B={tag:"input",type:"button",value:C}
}return B
}};
Ext.extend(ug.PeoplePicker,Ext.BoxComponent,{resetSelections:function(A){if(!A){this.sources=[];
this.sources.push(new ug.PeoplePickerSource({name:"Everyone in the directory",rpc:"User.findUsers",params:{sort:"familyName,givenName,middleName",queryField:"familyName,givenName,middleName",count:true,images:true},dataField:"users",countField:"totalCount",filterParam:"query",paged:true}))
}else{this.sources=A
}picker=this;
this.storage=new ug.SparseSelectionStorage({picker:picker,source:this.sources[0],sources:this.sources});
this.selectionModel=new ug.CheckboxSelectionModel();
this.cellRenderer=new ug.PeopleCheckboxRenderer({storage:this.storage});
this.browser=new ug.PeopleBrowser({panelClass:ug.VirtualPickerPanel,renderer:this.cellRenderer,storage:this.storage,sm:this.selectionModel,filtered:this.filtered,loadOnRender:true,height:320,initialFilterText:"Search people..."})
},autoEl:{tag:"input",type:"button",},cls:"cp_button cp_peoplePickerLauncher",onOkay:function(){},onRender:function(){this.constructor.superclass.onRender.apply(this,arguments);
this.el.on({click:{fn:function(B,A){this.showPickerPopup(A)
},scope:this,stopEvent:true}});
this.updateLabel(0)
},updateLabel:function(A){if(this.el){var B=this.buttonLabel||this.autoEl.value;
this.el.set({value:B+((A>0)?" ("+A+")":"")})
}},getSelection:function(){return this.selectionModel.storage?this.selectionModel.storage.getSelection():null
},filtered:true,xPos:null,yPos:null,pickerConfirmButtonText:"OK",getSelectionIds:function(){var A=[];
Ext.each(this.getSelection(),function(B){A.push(B.id)
});
return A
},showPickerPopup:function(H){var A;
var D=this;
var C=function(){ug.popdown();
this.updateLabel(this.storage.getSelectCount());
if(D.onOkay){D.onOkay()
}},K=function(L){A=new Ext.Container({renderTo:"pickPeople",layout:"fit"});
L.el.child(".cp_dialog_okay").on("click",C.createDelegate(this),ug);
A.add(this.browser);
A.doLayout()
},I=function(){};
var G=Ext.fly(H).getRegion(),F=Ext.getBody().dom.scrollWidth,B=Math.min(800,F-64),J=Math.min(F-B-32,G.right),E=Math.round((G.top+G.bottom)/2);
ug.popup({anchor:"e",x:D.xPos||J,y:D.yPos||E,html:'<h1 class="title">'+this.title+'</h1><div class="cp_peoplePicker" id="pickPeople" style="width: '+B+'px; height: 320px"></div><div id="loginForm-dialogButtons" role="presentation" class="cp_popup_buttons"><input type="button" class="cp_button cp_primaryButton cp_dialog_okay" value="'+this.pickerConfirmButtonText+'" /></div>',onpopup:K.createDelegate(this),ondestroy:I.createDelegate(this)})
}});
ug.CheckboxSelectionModel=Ext.extend(ug.SelectionModel,{onSelect:function(A,D){var B=[],C=[];
if((D.type!="focus")&&(D.type!="drag")&&(A>=0)){if(!this.storage.isSelected(A)){this.storage.setSelected(A,true);
B.push(A)
}else{this.storage.setSelected(A,false);
C.push(A)
}}this.fireEvent("selectionchange",C,B);
this.fireEvent("selectionchanged")
}});
ug.SparseSelectionStorage=function(A){ug.SparseSelectionStorage.superclass.constructor.call(this,A);
this.selections={};
this.selectionCount=0
};
Ext.extend(ug.SparseSelectionStorage,ug.SparseStorage,{getSelectCount:function(){return this.selectionCount
},setSelected:function(B,C){var A=this.getDatum(B);
if(C&&!this.selections[A.id]){this.selections[A.id]=A;
this.selectionCount++
}if(!C){delete this.selections[A.id];
this.selectionCount--
}ug.SparseSelectionStorage.superclass.setSelected.call(this,B,C)
},getSelection:function(){var A=[];
Ext.iterate(this.selections,function(C,B){A.push(B)
});
return A
},isDatumSelected:function(A){return Ext.isDefined(this.selections[A])
},setData:function(C,F){var G=F.length;
var B=this.getInterval(C,C+G);
var E=[];
for(var D=0;
D<G;
++D){var A=F[D];
B.setDatum(C+D,A);
if(this.selections[A.id]){E.push(C+D)
}}this.fireRegionEvent("change",C,G);
this.picker.browser.virtualPanel.onSelectionChange([],E)
},switchSource:function(A){var B=this;
if(this.sources[A]){this.reset();
Ext.each(this.sources,function(D,C){if(A==C){D.storage=B;
B.source=D;
D.setFilter(B.picker.browser.filterField.getValue())
}else{D.storage=null
}});
this.picker.browser.virtualPanel.preload()
}this.source=this.sources[A]
}});
ug.PeoplePickerSource=Ext.extend(ug.RpcDataSource,{});
ug.PeopleCheckboxRenderer=Ext.extend(ug.CellRenderer,{height:80,width:112,render:function(B,A){var F=ug.flyChild(A,".inner");
F.addClass("miniProfile");
var C=B.image?B.image+"!48":ug.staticUrl+"/images/userThumbnail.png";
var E=this.storage.isDatumSelected(B.id);
var D='<input type="checkbox" id="checkbox-'+B.id+'" '+(E?'checked="true" ':"")+'/><img class="miniProfileImage cp_roundedThumbnail" src="'+C+'" /><br /><span class="miniProfileName">'+Ext.util.Format.htmlEncode(B.name)+"</span>";
F.update(D)
}});
ug.PeopleBrowser=Ext.extend(ug.MillerColumn,{initComponent:function(){ug.MillerColumn.superclass.initComponent.apply(this,arguments);
this.topBar=new Ext.Panel({region:"north",layout:"hbox",border:false,height:30});
if(this.filtered){this.filterField=new ug.FilterField({initialText:this.initialFilterText||"Search within column...",flex:1});
this.topBar.add(this.filterField);
this.resetFilter({hidden:this.filterHidden,disabled:this.filterDisabled})
}if(this.storage&&this.storage.sources&&this.storage.sources.length>1){var B=[];
Ext.each(this.storage.sources,function(D,C){B.push({name:D.name,index:C})
});
this.sourceSelector=new ug.SourceSelector({options:B});
this.sourceSelector.on({change:{fn:function(D,C){this.storage.switchSource(C)
},scope:this,stopEvent:true}});
this.topBar.add(this.sourceSelector)
}if(this.topBar.items){this.add(this.topBar)
}var A=this.panelClass||ug.VirtualPanel;
this.virtualPanel=new A({storage:this.storage,sm:this.sm,renderer:this.renderer,loadOnRender:this.loadOnRender,region:"center"});
this.add(this.virtualPanel)
}});
ug.SourceSelector=function(A){ug.SourceSelector.superclass.constructor.call(this,A);
this.addEvents("change")
};
Ext.extend(ug.SourceSelector,Ext.BoxComponent,{autoEl:{tag:"select",style:"margin-left: -2px"},onRender:function(){this.constructor.superclass.onRender.apply(this,arguments);
var A=function(C){var B=Ext.DomHelper.append(this.el,{tag:"option",value:C.index,html:C.name})
};
Ext.each(this.options,A.createDelegate(this));
this.el.on({change:{fn:function(C,B){this.fireEvent("change",C,ug.getValue(this.el))
},scope:this,stopEvent:true}})
}});

