Type.registerNamespace('SpottedScript.Controls.MultiBuddyChooser');
SpottedScript.Controls.MultiBuddyChooser.Controller=function(view){this.contextPlaces=[];this.contextMusicTypes=[];this.allPlaces=[];this.allMusicTypes=[];this.$7={};this.view=view;$addHandler(this.view.get_uiAddByMusicAndPlace(),'click',Function.createDelegate(this,this.addByMusicAndPlaceButtonClick));$addHandler(this.view.get_uiAddAllButton(),'click',Function.createDelegate(this,this.addAllButtonClick));$addHandler(this.view.get_uiShowAllTownsAndMusic(),'click',Function.createDelegate(this,this.showAllTownsAndMusicCheckBoxClick));$addHandler(this.view.get_uiShowAddAll(),'click',Function.createDelegate(this,this.$9));$addHandler(this.view.get_uiShowAddBy(),'click',Function.createDelegate(this,this.$A));$addHandler(this.view.get_uiShowBuddyList(),'click',Function.createDelegate(this,this.$3));$addHandler(this.view.get_uiJustBuddiesRadio(),'click',Function.createDelegate(this,this.$0));$addHandler(this.view.get_uiAllMembersRadio(),'click',Function.createDelegate(this,this.$0));this.$B(this.view.get_uiMusicTypes(),this.contextMusicTypes);this.$B(this.view.get_uiPlaces(),this.contextPlaces);this.createUserFromEmailBehaviour=new SpottedScript.Behaviours.CreateUserFromEmail.Controller(this.view.get_uiBuddyMultiSelector().htmlAutoComplete);this.createUsersFromEmailsBehaviour=new SpottedScript.Behaviours.CreateUsersFromEmails.Controller(this.view.get_uiBuddyMultiSelector().htmlAutoComplete);this.$2=this.view.get_uiBuddyMultiSelector().itemRemoved;this.view.get_uiBuddyMultiSelector().itemRemoved=Function.createDelegate(this,this.$1);}
SpottedScript.Controls.MultiBuddyChooser.Controller.$E=function($p0){while($p0.options.length>0){$p0.removeChild($p0.options[$p0.options.length-1]);}}
SpottedScript.Controls.MultiBuddyChooser.Controller.prototype={get_selectedValues:function(){var $0=this.view.get_uiBuddyMultiSelector().getSelections().toArray();var $1=new Array($0.length);for(var $2=0;$2<$0.length;$2++){$1[$2]=($0[$2])[1];}return $1;},view:null,createUserFromEmailBehaviour:null,createUsersFromEmailsBehaviour:null,$0:function($p0){if(this.view.get_uiJustBuddiesRadio().checked){this.view.get_uiBuddyMultiSelector().htmlAutoComplete.setWebMethod('GetBuddies');}else{this.view.get_uiBuddyMultiSelector().htmlAutoComplete.setWebMethod('GetBuddiesThenUsrs');}},$1:function($p0,$p1){var $0=this.$7[$p1];if($0){delete this.$7[$p1];var $1=document.createElement('OPTION');$1.innerHTML=$0;$1.value=$p1;var $2=0;if(!this.view.get_uiBuddyList().childNodes.length){this.view.get_uiBuddyList().appendChild($1);}else{if(this.view.get_uiBuddyList().childNodes.length<150){while(this.view.get_uiBuddyList().childNodes[$2].innerHTML.localeCompare($0)<0&&$2<this.view.get_uiBuddyList().childNodes.length-1){$2++;}}this.view.get_uiBuddyList().insertBefore($1,this.view.get_uiBuddyList().childNodes[$2]);}}if(this.$2){this.$2($p0,$p1);}},$2:null,buddyListLoaded:false,$3:function($p0){if(this.view.get_uiShowBuddyList().checked&&!this.buddyListLoaded){Spotted.WebServices.Controls.MultiBuddyChooser.Service.getBuddiesSelectListHtml(Function.createDelegate(this,this.$4),Function.createDelegate(null,Utils.Trace.webServiceFailure),null,0);this.$6('<OPTION value=\'-1\'>Loading...</OPTION>');}this.view.get_uiBuddyListPanel().style.display=(this.view.get_uiShowBuddyList().checked)?'':'none';},$4:function($p0,$p1,$p2){$clearHandlers(this.view.get_uiBuddyList());this.$6($p0);$addHandler(this.view.get_uiBuddyList(),'click',Function.createDelegate(this,this.$8));$addHandler(this.view.get_uiBuddyList(),'keydown',Function.createDelegate(this,this.$5));this.$7={};this.buddyListLoaded=true;this.view.get_uiBuddyListPanel().style.display='';this.view.get_uiBuddyList().focus();if(this.view.get_uiBuddyList().childNodes.length>0){(this.view.get_uiBuddyList().childNodes[0]).selected=true;}},$5:function($p0){if($p0.keyCode===32||$p0.keyCode===13){this.view.get_uiBuddyList().click();}},$6:function($p0){if(ie){this.view.get_uiBuddyList().innerHTML='';var $0=this.view.get_uiBuddyListPanel().innerHTML;this.view.get_uiBuddyListPanel().innerHTML=$0.substring(0,$0.indexOf('</SELECT>'))+$p0+'</SELECT>';}else{this.view.get_uiBuddyList().innerHTML=$p0;}},$8:function($p0){var $0=this.view.get_uiBuddyList().selectedIndex;if($0>-1){var $1=this.view.get_uiBuddyList().scrollTop;var $2=this.view.get_uiBuddyList().options[$0];this.$7[$2.value]=$2.innerHTML;this.view.get_uiBuddyMultiSelector().addItem($2.innerHTML,$2.value);this.view.get_uiBuddyList().selectedIndex=-1;this.view.get_uiBuddyList().remove($0);this.view.get_uiBuddyList().scrollTop=$1;}if(this.view.get_uiBuddyList().childNodes.length>$0&&$0!==-1){(this.view.get_uiBuddyList().childNodes[$0]).selected=true;}this.view.get_uiBuddyList().focus();},$9:function($p0){this.view.get_uiAddAll().style.display=(this.view.get_uiShowAddAll().checked)?'':'none';},$A:function($p0){this.view.get_uiAddBy().style.display=(this.view.get_uiShowAddBy().checked)?'':'none';},$B:function($p0,$p1){for(var $0=0;$0<$p0.options.length;$0++){$p1[$p1.length]=$p0.options[$0];}},addAllButtonClick:function(ev){this.addByGeneric(ev,true);},addByMusicAndPlaceButtonClick:function(ev){this.addByGeneric(ev,false);},addByGeneric:function(ev,addAll){var $0='All buddies';var $1='';if(!addAll){$0+=(this.view.get_uiPlaces().value==='-1')?'':' who visit '+this.view.get_uiPlaces().options[this.view.get_uiPlaces().selectedIndex].innerHTML;$0+=(this.view.get_uiMusicTypes().value==='1')?'':(((this.view.get_uiPlaces().value==='-1')?' who':' and')+' listen to '+this.view.get_uiMusicTypes().options[this.view.get_uiMusicTypes().selectedIndex].innerHTML.trim());$1='{\'MusicTypeK\' : \''+this.view.get_uiMusicTypes().value+'\',\'PlaceK\' : \''+this.view.get_uiPlaces().value+'\'}';}else{$1='{\'MusicTypeK\' : \'1\',\'PlaceK\' : \'-1\'}';}var $2='expandClicker'+Math.floor(Math.random()*10000000);this.view.get_uiBuddyMultiSelector().addItem($0+' - <a href=\"\" id=\"'+$2+'\" class=\"MultiSelectorExpandButton\" onmouseover=\"stt(\'Expand this to show buddies (might take a while)\');\" onmouseout=\"htm();\">show</a>',$1);$addHandler(document.getElementById($2),'click',Function.createDelegate(this,function($p1_0){
try{htm();}catch(e){};$p1_0.preventDefault();Spotted.WebServices.Controls.MultiBuddyChooser.Service.resolveUsrsFromMultiBuddyChooserValues([$1],Function.createDelegate(this,function($p2_0,$p2_1,$p2_2){
this.view.get_uiBuddyMultiSelector().removeItem(document.getElementById($2).parentNode);var $dict1=$p2_0;for(var $key2 in $dict1){var $2_0={key:$key2,value:$dict1[$key2]};this.view.get_uiBuddyMultiSelector().addItem($2_0.key,$2_0.value);}}),Function.createDelegate(null,Utils.Trace.webServiceFailure),null,30000);}));ev.preventDefault();},$C:function($p0,$p1){for(var $0=0;$0<$p0.length;$0++){var $1=$p0[$0];var $2=document.createElement('OPTION');$2.innerHTML=unescape($1.key).replace('&','&amp;').replace(' ','&nbsp;');$2.value=$1.value;$p1[$p1.length]=$2;}},showAllTownsAndMusicCheckBoxClick:function(ev){if(!this.allPlaces.length){Spotted.WebServices.Controls.MultiBuddyChooser.Service.getPlacesAndMusicTypes(Function.createDelegate(this,function($p1_0,$p1_1,$p1_2){
if(!this.allPlaces.length){this.$C($p1_0.musicTypes,this.allMusicTypes);this.$C($p1_0.places,this.allPlaces);}this.$D(this.view.get_uiMusicTypes(),(this.view.get_uiShowAllTownsAndMusic().checked)?this.allMusicTypes:this.contextMusicTypes);this.$D(this.view.get_uiPlaces(),(this.view.get_uiShowAllTownsAndMusic().checked)?this.allPlaces:this.contextPlaces);}),Function.createDelegate(null,Utils.Trace.webServiceFailure),null,30000);return;}else{this.$D(this.view.get_uiMusicTypes(),(this.view.get_uiShowAllTownsAndMusic().checked)?this.allMusicTypes:this.contextMusicTypes);this.$D(this.view.get_uiPlaces(),(this.view.get_uiShowAllTownsAndMusic().checked)?this.allPlaces:this.contextPlaces);}},$D:function($p0,$p1){SpottedScript.Controls.MultiBuddyChooser.Controller.$E($p0);for(var $0=0;$0<$p1.length;$0++){$p0.appendChild($p1[$0]);}},$F:function(){try{this.view.get_uiBuddyMultiSelector().clear();}catch($0){}}}
SpottedScript.Controls.MultiBuddyChooser.MusicTypeKAndPlaceK=function(){}
SpottedScript.Controls.MultiBuddyChooser.MusicTypeKAndPlaceK.prototype={musicTypeK:0,placeK:0}
SpottedScript.Controls.MultiBuddyChooser.GetMusicTypesAndPlacesResult=function(){}
SpottedScript.Controls.MultiBuddyChooser.GetMusicTypesAndPlacesResult.prototype={places:null,musicTypes:null}
SpottedScript.Controls.MultiBuddyChooser.Pair=function(){}
SpottedScript.Controls.MultiBuddyChooser.Pair.prototype={key:null,value:null}
SpottedScript.Controls.MultiBuddyChooser.View=function(clientId){this.clientId=clientId;}
SpottedScript.Controls.MultiBuddyChooser.View.prototype={clientId:null,get_uiBuddyMultiSelector:function(){return eval(this.clientId+'_uiBuddyMultiSelectorBehaviour');},get_uiJustBuddiesRadio:function(){return document.getElementById(this.clientId+'_uiJustBuddiesRadio');},get_uiAllMembersRadio:function(){return document.getElementById(this.clientId+'_uiAllMembersRadio');},get_uiShowBuddyList:function(){return document.getElementById(this.clientId+'_uiShowBuddyList');},get_uiBuddyListPanel:function(){return document.getElementById(this.clientId+'_uiBuddyListPanel');},get_uiBuddyList:function(){return document.getElementById(this.clientId+'_uiBuddyList');},get_uiShowAddAll:function(){return document.getElementById(this.clientId+'_uiShowAddAll');},get_uiAddAll:function(){return document.getElementById(this.clientId+'_uiAddAll');},get_uiAddAllButton:function(){return document.getElementById(this.clientId+'_uiAddAllButton');},get_uiShowAddBy:function(){return document.getElementById(this.clientId+'_uiShowAddBy');},get_uiAddBy:function(){return document.getElementById(this.clientId+'_uiAddBy');},get_uiPlaces:function(){return document.getElementById(this.clientId+'_uiPlaces');},get_uiMusicTypes:function(){return document.getElementById(this.clientId+'_uiMusicTypes');},get_uiAddByMusicAndPlace:function(){return document.getElementById(this.clientId+'_uiAddByMusicAndPlace');},get_uiShowAllTownsAndMusic:function(){return document.getElementById(this.clientId+'_uiShowAllTownsAndMusic');}}
SpottedScript.Controls.MultiBuddyChooser.Controller.registerClass('SpottedScript.Controls.MultiBuddyChooser.Controller');
SpottedScript.Controls.MultiBuddyChooser.MusicTypeKAndPlaceK.registerClass('SpottedScript.Controls.MultiBuddyChooser.MusicTypeKAndPlaceK');
SpottedScript.Controls.MultiBuddyChooser.GetMusicTypesAndPlacesResult.registerClass('SpottedScript.Controls.MultiBuddyChooser.GetMusicTypesAndPlacesResult');
SpottedScript.Controls.MultiBuddyChooser.Pair.registerClass('SpottedScript.Controls.MultiBuddyChooser.Pair');
SpottedScript.Controls.MultiBuddyChooser.View.registerClass('SpottedScript.Controls.MultiBuddyChooser.View');
