HJ.ResourceSelector = Class.create();

HJ.ResourceSelector.prototype = Object.extend(new Af.HtmlDialog(), {
      
      initialize: function(title, handler, content) {
         this._initializeDialog(title, handler, content);
         this.myResourceDataList = null;          
         this.selectedResourceList = null;       
         this.resourceTable = null;
		 this.singleSelectionMode = false;
		 this.tableNormalBackcolor = "#f6f6f6";
         
      },
      
      setResourceDataList: function(myResource,selectedResource){         
         this.myResourceDataList = myResource;        
         this.selectedResourceList = selectedResource;         
         this.updateView();
         return false;
      },

      updateView: function(){
         if(this.myResourceDataList == null) {
            return;
         }
        
         
         if (this.myResourceDataList != null) {
			 for(idx=0;idx<this.myResourceDataList.length;idx++){
				// find index of mylist Obj in selectedlist.
				var myListIndex = findObjIndex(this.selectedResourceList,this.myResourceDataList[idx]);
				if(myListIndex > -1) {
				   this.myResourceDataList[idx]["isSelected"] = true;
				} else {
				   this.myResourceDataList[idx]["isSelected"] = false;
				}
			 }
			 if(this.resourceTable) {
				this.resourceTable.setDataList(this.myResourceDataList);
			 }
         }
		
		 var rl = this.myResourceDataList;

		 if( this.resourceSelectionDiv != null && rl != null && rl.length > 14){			
			 this.resourceSelectionDiv.style.overflow = "auto";
			 this.resourceSelectionDiv.style.height = "200px";				
		 }	
		 return false;
      },
      
      
      templateLoaded: function() {
         var ec = new Af.ElementCollection(this.element);        

		  this.resourceSelectionDiv = ec.getFirstElementById("resourceSelectionDiv") ;
         
         if (ec.getFirstElementById("resourceTable") != null) {
            var s;
            if ( this.singleSelectionMode) {
               s = "businessName";
            } else {
               s = "isSelected,businessName";
            }
            this.resourceTable = new Af.HtmlTable("resourceTable", s);
			this.resourceTable.listener = this;
			this.resourceTable.normalBackcolor = this.tableNormalBackcolor;
         }
		  
         this.btnDone = ec.getFirstElementById("btnDone");
         this.armedButton = this.btnDone;
         this.btnDone.onclick = this.selectionDone.bind(this);
         this.updateView();
         return false;
      },
      
      selectionDone: function (){
		 if (this.singleSelectionMode)	{	 
			 if (this.myResourceDataList != null) {
				  this.selectedResourceList.length = 0;
				  this.selectedResourceList.push(this.myResourceDataList[this.resourceTable.selectedRowNumber]);			 
			 }
		 } else if (this.myResourceDataList != null) {
             this.selectedResourceList.length = 0;
			 for(idx=0; idx<this.myResourceDataList.length; idx++){
				if(this.myResourceDataList[idx]["isSelected"] == true) {
				   this.selectedResourceList.push(this.myResourceDataList[idx]);
				}
			 }
         }
                  
         if (this.handler != null && this.handler.selectionDoneResource != null) {
            this.handler.selectionDoneResource(this);
         }
         this.hide();         
      	 return false;
      }
      
});



var rSingleSelector = null;

function getResourceSingleSelector(handler) {	
   if (rSingleSelector == null) {
      rSingleSelector = new HJ.ResourceSelector("Select a Resource", handler, null);
      //rSingleSelector.width = "290px";
	  rSingleSelector.singleSelectionMode = true;
   } else {
      rSingleSelector.handler = handler;
   }
   rSingleSelector.showHTMLTemplate(basePageURL + "ResourceSelector.htm", "content", "resourceListBox");
   rSingleSelector.centerDialog(400, 300);
   return rSingleSelector;   
}
