gerd
11/8/2016 - 1:43 PM

overall_efficiency.js

/**
 * This object will handle all the ETGList functionalities
 * 
 * @class lexisnexis.component.ETGList
 */

jQuery.namespace('lexisnexis.component');
lexisnexis.component.OverallEfficiencyGrid = lexisnexis.component.TableColumnDefs
        .extend({
            data : {
            	summaryTableId : '#ln_summary_provider_list',
  		        detailTableId : '#ln_detail_provider_list',
                defaultOrder : [],
                saveId : '#providerlistTable_save',
		        resetId : '#providerlistTable_reset',
                firstTime: true,
                detailTableInitialized: false,
                summaryViewName: "Summary View",
                detailsViewName: "Detail View",
                episodeResponsibleText:"Episode Responsible",
                summaryContainer: "#ln_summary_provider_list_container",
                detailsContainer: "#ln_detail_provider_list_container",
                classhideColumn:'ln-hide-column',
                detailsGridColumnId: '#ln_provider_dtl_grid',
                summaryGridColumnId: '#ln_provider_grid',
                viewByHiddenId: '#ln_provider_viewByValHidden',
                baseUrl: "getOverallefficiencySummary",
                SET_VIEWBY_METHOD : "setReferralPatternsViewBy",
                defaultSortColumn : "Total Variance",
                defaultSecondarySortColumnProvider :"Provider Full Name",
                defaultSecondarySortColumnNetwork :"Network Name",
                defaultSecondarySortColumnPeerGroup :"Peer Group Name",
                defaultSecondarySortColumnSpecialty :"Specialty",                	
                defaultSecondarySortColumnGroup :"Group",                	
                fixedColumnCount:2,
                groupByProviderKey: 'Provider',
                groupByNetworkKey: 'Network',
                groupByPeerGroupKey: 'Peer Group',
                groupBySpecialtyKey: 'Specialty',
                groupByGroupKey: 'Group',
                summaryTableSettings:'',
                detailTableSettings:'',
                manualsort : false,
                previousVal: '',
                providerTotalsTemplateID: '#ln_overallefficiency_summary_table_template',
                networkTotalsTemplateID: '#ln_overallefficiency_network_summary_table_template',
                specialtyTotalsTemplateID : '#ln_overallefficiency_specialty_summary_table_template',
                groupTotalsTemplateID : '#ln_overallefficiency_group_summary_table_template',
                gridSearchID: '#ln_provider_grid_search',
                selectedIDs : [],
                gridAccessCount: 0,
                gridSearchCount: 0,
                defaultTableParams: {
                	"dom": 'R<"top"f>rt<"bottom"ilp><"clear">' ,
                	scrollY: "318px",
                    scrollX: "true",
                    scrollCollapse: true,
                    "bFilter" : false,
                    "bAutoWidth": false,
                    "iTotalRecords" : "dataTableModel.iTotalRecords",
                    "iDisplayLength" : 100,
                    "processing" : false,
                    "serverSide" : true,
                    "bLengthChange" : true,
                    "bResponsive" :false,
                    "ordering" : true, 
                    "paging": true,
                    "pagingType": "simple_numbers",                    
                    "bDeferRender" : true
                },
                delay : (function(){
      			  var timer = 0;
      			  return function(callback, ms){
      				  clearTimeout (timer);
      				  timer = setTimeout(callback, ms);
      			  };
      			})()
            },
            /**
			 * initialize the table and register for functionality
			 * 
			 * @method ready
			 */
            ready : function() {
            	sessionStorage.templateViewFlag='';
                var cs = this;
                $(cs.data.summaryContainer).show();
                $(cs.data.detailsContainer).hide();
                cs.setViewBySelection();
                cs.populateTotalsGrid(cs);
                var columnDefs = cs.getColumnDefinitions(cs.data.groupBy,'OE');
                cs.initializeSummaryTable(columnDefs[0],cs.data.fixedColumnCount);
                cs.registerViewBy();
                cs.registerGroupBy();
                //validateSearch(cs, cs.data.gridSearchID);
                cs.registerSearch();
            	cs.displayHelpPopOver();
            	cs.registerRedirection();
            	cs.registerActionButtonEvents();
            	LN.setUpHelp('#ln_overallEfficiency');
                $(cs.data.saveId).click(function(e) {
                    //cs.saveColumnOrdering();
                });
                cs.toggleLeftNavButtons(cs);
               // $("#ln_provider_grid_search").placeholder(); 
                LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK,cs, cs.registerApplyButtonChange);
                
            },
            
            getSelectedIDs: function() {
            	var cs = this;
            	return cs.data.selectedIDs;
            },
            
          	resetReferralPatternsViewBy : function()
          	{
          		var cs=this;
          	
    	  		var selectedText = "All";
    	  		
    			var jsonString = JSON.stringify({'viewByChoice': selectedText});
    			$.ajax({
    				cache : false,
    				'url' : cs.data.SET_VIEWBY_METHOD,
    				'dataType' : 'json',
    				'method' : 'post',
    				'data' : {"jsonData": jsonString},
    				'success' : function(data, textStatus, jqXHR) {
    					try {
    						//LN.debug("Success on sending viewBy selection");
    					} catch (err) {
    						// growl the error
    						LN.debug("Error in sending viewBy selection: "
    								+ err);
    					}
    				},
    				'beforeSend' : function(xhr) {
    					xhr.setRequestHeader('X-TransactionID', LN
    							.getPage().getTransactionID());
    					cs.data.isInAjaxCall = true;
    				},
    				'complete' : function() {
    				},
    				'error' : function(jqXHR, textStatus, errorThrown) {
    					//LN.debug('Error Called');
    					cs.data.isInAjaxCall = false;
    				}
    			});
    		// End Dynamic update  		
          	},
            
            toggleLeftNavButtons: function(cs) {            	
           		if ( cs.data.providerRole != "PCP" ) {
        			//Call to reset Temporary Filter in Referral Patterns
        			/*cs.resetReferralPatternsViewBy();
        			$("#referralpatterns").prop("disabled", true).removeClass("btn-default").addClass("ln-text-left");
        			$('#RP').addClass('disabled');      
        			$('#RP').attr('id',"ln_referralpatterns_disabled"); */ 
           			$("#referralpatterns").prop("disabled", false).addClass("btn-default");
        			$('#ln_referralpatterns_disabled').attr('id',"RP");
        			$('#RP').removeClass('disabled');
        			$("#measurecompliance").prop("disabled", true).removeClass("btn-default").addClass("ln-text-left");
        			$('#MC').addClass('disabled');
        			$('#MC').attr('id',"ln_measurecompliance_disabled");
        			$("#surgicalintervention").prop("disabled", false).addClass("btn-default");
        			$('#ln_surgicalintervention_disabled').attr('id',"SI");
        			$('#SI').removeClass('disabled');
        		} else {	
        			/*$("#referralpatterns").prop("disabled", false).addClass("btn-default");
        			$('#ln_referralpatterns_disabled').attr('id',"RP");
        			$('#RP').removeClass('disabled'); */ 
        			cs.resetReferralPatternsViewBy();
        			$("#referralpatterns").prop("disabled", true).removeClass("btn-default").addClass("ln-text-left");
        			$('#RP').addClass('disabled');      
        			$('#RP').attr('id',"ln_referralpatterns_disabled");
        			
        			$("#measurecompliance").prop("disabled", false).addClass("btn-default");
        			$('#ln_measurecompliance_disabled').removeClass('disabled');
        			$('#ln_measurecompliance_disabled').attr('id',"MC");
        			$("#surgicalintervention").prop("disabled", true).removeClass("btn-default").addClass("ln-text-left");
        			$('#SI').addClass('disabled');
        			$('#SI').attr('id',"ln_surgicalintervention_disabled");
        		}
           	},
            
            clearGridSearchBox: function(cs){            	
            	var groupByVal = $("#ln_provider_groupby_id").text();
            	cs.data.providerId = '';
            	$(cs.data.gridSearchID).parent().next(".error").remove();
            	switch(groupByVal) {
	      		  case cs.data.groupByProviderKey:
	      			$(cs.data.gridSearchID).val("").attr('placeholder','2 characters minimum');
	      			break;	      		  
	      		  default:
	      			$(cs.data.gridSearchID).val("").attr('placeholder','3 characters minimum');
	      		  	
	      		}
            },
            
            registerApplyButtonChange : function(cs) {
            	$( "input[name*='providerRoleViewBy']" ).each(function() {
            		if ($(this).prop('checked') == true) {
            			cs.data.providerRole = $(this).val();
            			LN.debug('Provider Role 1: ' + cs.data.providerRole);
            		}
            	});
            	cs.populateTotalsGrid(cs);
            	var selectText=$('#ln_overalleffieciency_viewBydesc').html();
            	cs.reloadTableViews(selectText);
            },
            
            setViewBySelection : function() {
            	var cs = this;
            	$( "input[name*='providerRoleViewBy']" ).each(function() {
            		if ($(this).val() == cs.data.providerRole) {
            			$(this).prop('checked',true);
            		} else {
            			$(this).prop('checked',false);
            		}
            	});
            },
            
            displayHelpPopOver:function(){
           	/*	
           		$( "#ln_overallEfficiency" ).on("click",function() {
           			LN.setUpHelp()
           	        var msg = 'Help Text needs to be added..';
           	        var title ="Overall Efficiency Index";
           	        var placement = "left";
           	        contextHelp.popOver("#ln_overallEfficiency",title,msg,placement);
           	    });*/	
           		
           		$( "#ln_efficienyByMPC" ).on("click",function(){
           	        var msg = 'Help Text needs to be added..';
           	        var title ="Efficiency by MPC";
           	        var placement = "left";
           	        contextHelp.popOver("#ln_efficienyByMPC",title,msg,placement);
           	    });
           		
           		$( "#ln_hlpEfficienySpeciality" ).on("click",function() {
           	        var msg = 'Help Text needs to be added..';
           	        var title ="Efficiency by Specialty";
           	        var placement = "left";
           	        contextHelp.popOver("#ln_hlpEfficienySpeciality",title,msg,placement);
           	    });
           		
           		$(document).on("click", "#ln_summarytotalsHelp", function () {
           	        var msg = 'Help Text needs to be added..';
           	        var title = $("#groupbysummarytotalid").text() + ' List Summary (Totals)';
           	        var placement = "left";
           	        contextHelp.popOver("#ln_summarytotalsHelp",title,msg,placement);
           	    });
           		
           		$(document).on("click", "#ln_providerlistOEHelp", function () {
           	        var msg = 'Help Text needs to be added..';
           	        var title ="Provider List";
           	        var placement = "left";
           	        contextHelp.popOver("#ln_providerlistOEHelp",title,msg,placement);
           	    });
           		
           	},
           	
           	addToSelectedList: function(checkbox) {
           		var cs= this;
           		if (cs.data.selectedIDs.length < 250) {
	           		cs.data.selectedIDs.push({
	           			value:$(checkbox).val(),
	           			filter_val:$(checkbox).attr('filter_val'),
	           			specialty_text:$(checkbox).attr('specialty_text')?$(checkbox).attr('specialty_text'):''
	           			});
           		} else {
           			$(checkbox).prop('checked',false);
           			$('#maxAllowedExceededModal').modal('show');
           		}
           		$("#ln_overall_efficiency_wrapper .ln-btnaction").removeClass("disabled").prop("disabled", false);
           	},
           	
           	removeFromSelectedList: function(val) {
           		var cs = this;
           		var i = 0;
           		for (;i<cs.data.selectedIDs.length;i++) {
           			if (cs.data.selectedIDs[i].value == val) {
           				cs.data.selectedIDs.splice(i,1);
           				break;
           			}
           		}
           		if (cs.data.selectedIDs.length <= 0) {
           			$("#ln_overall_efficiency_wrapper .ln-btnaction").addClass("disabled").prop("disabled", true);
           		}
           	},
           	   	
           	setCheckBoxes: function(tableId) {
           		var cs = this;
           		if (cs.data.selectedIDs.length <= 0) {
           			$("#ln_overall_efficiency_wrapper .ln-btnaction").removeClass("disabled").prop("disabled", true);
           			return;
           		}
           		
           		var table = $(tableId).DataTable();
           		table.rows(function(idx,data,node) {
           			var rowNode = $(tableId).find('tbody tr:eq(' + idx +')').get(0);
           			var checkbox = $(rowNode).find('input[type="checkbox"]');
           			var checkboxVal = $(checkbox).val();
           			var i = 0;
           			for (;i<cs.data.selectedIDs.length;i++) {
           				if (cs.data.selectedIDs[i].value == checkboxVal) {
           					$(tableId).find('tbody tr:eq(' + idx +')').find('input[type="checkbox"]').prop('checked',true);
               				$(checkbox).prop('checked',true);
           				}
           			}
           		});
           		// we have selection. enable the Action and Select And Navigate Button
           		$("#ln_overall_efficiency_wrapper .ln-btnaction").removeClass("disabled").prop("disabled", false);
           	},
           	
            populateTotalsGrid: function(cs) {
            	var cs = this;
            	$.ajax({
            		beforeSend: function(){
            			LN.showAjaxIndicator("#ln_overallefficiency_summary_table .table");
            		},
                	url: "getOverallEfficiencyTotals",
                	data: {'dataSetId':$('#ln_topmenu_dataset').attr("datasetkey"),
             		       'selDataSetRangeRiskColumnName':  $('#ln_topmenu_dataset_range_id').attr("riskColumnName"),
             		       'selDataSetRangeBegin':  $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
        				   'selDataSetRangeEnd':  $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
        				   'providerRole':cs.data.providerRole,
        				   'groupBy':cs.data.groupBy
             			},
             		method: 'POST',
                	dataType: 'json',
                	success: function(data) {
                		cs.colorCodeTotalsTable(cs,data);
                		//OverAllEfficency Totals
                		LN.getPage().pushEvent(EVENT_TYPES.OVERALL_EFFICIENCY_TOTALS_SUCCESS,$.extend({}, data));
                		data.totalCost = formatUtil.formatNumber(parseInt(data.totalCost));
                		data.savings = formatUtil.formatNumber(parseInt(data.savings));
                		data.unassignedProviderCount = numeral(data.unassignedProviderCount).format('0,0');
          			    data.providerCount = numeral(data.providerCount).format('0,0');
          			    data.specialtyCount = numeral(data.specialtyCount).format('0,0');
          			    data.memberCount = numeral(data.memberCount).format('0,0');
          			    data.episodeCount = numeral(data.episodeCount).format('0,0');
          			    data.fromScreen= 'OE';
          			    data.exportServiceName="exportExcelData";
          			    data.exportFilePrefix="CE";
                		
                		var template = '';
                		data.title=cs.data.groupBy;
                		switch(cs.data.groupBy) {
                		  case cs.data.groupByProviderKey:
                			  data.groupByKey='PR';
                			  template = $(cs.data.providerTotalsTemplateID).html(); 
                		  break;
                		  case cs.data.groupByPeerGroupKey:
                			  data.groupByKey='PG';
                			  template = $(cs.data.networkTotalsTemplateID).html();
                		  break;
                		  case cs.data.groupByNetworkKey:
                			  data.groupByKey='NW';
                			  template = $(cs.data.networkTotalsTemplateID).html();
                			  break;
                		  case cs.data.groupBySpecialtyKey:
                			  template = $(cs.data.specialtyTotalsTemplateID).html();
                		  break;
                		  case cs.data.groupByGroupKey:
                			  data.groupByKey='GR';
                			  template = $(cs.data.groupTotalsTemplateID).html();
                			  break;
                		  default:
                			  data.groupByKey='PR';
                			  template = $(cs.data.providerTotalsTemplateID).html(); 
                		}
              		    var html = Mustache.to_html(template, data);
              		    $("#ln_overallefficiency_summary_table").html(html); 
              		    
              		  $('#ln_overall_efficiency_totalCost').html(data.totalCost);
              		  $('#ln_overall_efficiency_savings').html(data.savings);
                	},
                	error: function(){      
                		var data={};
                		data.title=cs.data.groupBy;
          			  	var template = $(cs.data.networkTotalsTemplateID).html();
          			  	var html = Mustache.to_html(template, data);
          			  	$("#ln_overallefficiency_summary_table").html(html);
                		$("#ln_overallefficiency_summary_table thead").html('');
                		$("#ln_overallefficiency_summary_table tbody").html('<span style="color:red">Error: Data is currently unavailable.</span>');
                	},
                	complete: function(data){
                		LN.hideAjaxIndicator("#ln_overallefficiency_summary_table .table");
                		//registerDrillDowns();  
                		}
                });
            },
            
            registerSearch:function() {
            	var cs = this;
            	
            	$(cs.data.gridSearchID).on('keyup', function (e) {
            		var isValidSearch=true;
            		if (!isValidateSearch(e,cs.data.gridSearchID, false)) {
            			isValidSearch= false;
            			cs.data.previousVal = $(cs.data.gridSearchID).val();
        			}
            		
            		if($(cs.data.gridSearchID).val().length>1 || $(cs.data.gridSearchID).val().length == 0)	{
        				cs.data.providerId=this.value.toUpperCase();
                 	cs.data.delay(function(){
                 		if(isValidSearch && cs.data.gridSearchCount==0){
                 			if(cs.data.groupBy== cs.data.groupByProviderKey && isValidTextLength(cs,$(cs.data.gridSearchID).val(),2)) {                     		
                         		var currentView=$('#ln_overalleffieciency_viewBydescHidden').val();
                         		cs.data.gridSearchCount++;
                            	if(currentView.indexOf(cs.data.summaryViewName)!=-1){
                            		$(cs.data.summaryTableId).DataTable().ajax.reload( function(data){
                            			cs.noDataCleanup(data.iTotalDisplayRecords);
	                     			});
                        		}
    	                     	else {    	                     		
    	                     		$(cs.data.detailTableId).DataTable().ajax.reload( function(data){
    	                     			cs.noDataCleanup(data.iTotalDisplayRecords);
    	                     		});
    	                     	}
                         	}else if((cs.data.groupBy== cs.data.groupByNetworkKey || cs.data.groupBySpecialtyKey || cs.data.groupByGroupKey || cs.data.groupByPeerGroupKey) && isValidTextLength(cs,$(cs.data.gridSearchID).val(),3)) {
                         		cs.data.gridSearchCount++;
                         		var currentView=$('#ln_overalleffieciency_viewBydescHidden').val();                        	
                            	if(currentView.indexOf(cs.data.summaryViewName)!=-1){
                            		$(cs.data.summaryTableId).DataTable().ajax.reload( function(data){
    	                     			cs.noDataCleanup(data.iTotalDisplayRecords);
    	                     		});
                        		}
    	                     	else {
    	                     		$(cs.data.detailTableId).DataTable().ajax.reload( function(data){
    	                     			cs.noDataCleanup(data.iTotalDisplayRecords);
    	                     		});
    	                     	}
                         	}
                 		}                     	
         			 }, 1000 );
            		 }
                 });
            },
            

            
            populateViewByDesc:function(overalleffieciencyDescArray){
            	var newOveralleffieciencyDescHidden = overalleffieciencyDescArray[0];
            	var newOveralleffieciencyDesc = overalleffieciencyDescArray[0];
            	if(overalleffieciencyDescArray[1]){
            		newOveralleffieciencyDescHidden+='~'+overalleffieciencyDescArray[1];
            		newOveralleffieciencyDesc+=' '+overalleffieciencyDescArray[1];
            	}                	
            	$('#ln_overalleffieciency_viewBydescHidden').val(newOveralleffieciencyDescHidden);
            	$('#ln_overalleffieciency_viewBydesc').text(newOveralleffieciencyDesc);
            },
            
            registerViewBy: function(){
              	var cs = this;
              	var selectText;                
                //View By is changed. re-populate Totals, and grid
                $('.ln-overalleffieciency-viewBy').on('click',function(){
                	var overalleffieciencyDesc=$('#ln_overalleffieciency_viewBydescHidden').val();
                	var overalleffieciencyDescArray=overalleffieciencyDesc.split('~');
                	if(overalleffieciencyDescArray[0]!==$(this).text()){
                		// enable link in left nav           	         	
                		cs.clearGridSearchBox(cs);
                     	var selectedObj=$(this).find('a');                	
                    	overalleffieciencyDescArray[0]=selectedObj.text();
                    	var selVal=selectedObj.attr('data-value');        
                    	$(cs.data.viewByHiddenId).val(selVal);
                    	cs.populateViewByDesc(overalleffieciencyDescArray);
                    	selectText=$('#ln_overalleffieciency_viewBydesc').html();
                    	var hiddenDesc = $('#ln_overalleffieciency_viewBydescHidden').val();
                    	$( "input[name*='providerRoleViewBy']" ).each(function() {
                    		var providerRole = hiddenDesc.split('~')[0];
                    		if ($(this).val() == providerRole) {
                    			$(this).prop('checked',true);
                    		} else {
                    			$(this).prop('checked',false);
                    		}
                    	});                    	
                    	cs.data.providerRole = selectedObj.text();
                    	$("#current_providerrole").val(cs.data.providerRole); 
                    	cs.data.manualsort = false;
                    	/*cs.populateTotalsGrid();
                   	    cs.reloadTableViews(selectText);*/
                    	cs.toggleLeftNavButtons(cs);
                    	LN.getPage().updateProviderCounts(true);
                    	cs.data.selectedIDs = [];
                	}                  	
                });
                
                //Only View is changed. So no need to re-populate totals table.
                $('.ln-overalleffieciency-viewBy-type').on('click',function(){
                	cs.data.gridSearchCount=0;//reset
                	var overalleffieciencyDesc=$('#ln_overalleffieciency_viewBydescHidden').val();
                	var overalleffieciencyDescArray=overalleffieciencyDesc.split('~');
                	var selectedTableView=$(this).find('a').text();
                	if(overalleffieciencyDescArray[1]!==selectedTableView){
                		overalleffieciencyDescArray[1]=selectedTableView;
                		cs.populateViewByDesc(overalleffieciencyDescArray);
                    	selectText=$('#ln_overalleffieciency_viewBydesc').html();
                    	cs.data.providerRole = overalleffieciencyDescArray[0];
                    	LN.debug('Provider Role 3: ' + cs.data.providerRole);
                    	cs.data.manualsort = false;
                      	cs.reloadTableViews(selectText);
                      	cs.data.selectedIDs = [];
                	}
                });
                
                $( "#providerRoleViewBy a" ).click(function(e){
                	e.preventDefault();
                	var overalleffieciencyDesc=$('#ln_overalleffieciency_viewBydescHidden').val();
                	var overalleffieciencyDescArray=overalleffieciencyDesc.split('~');
                	if(overalleffieciencyDescArray[0]!==$(this).attr('data-viewbyitem')){
                		// enable link in left nav           	         	
                		cs.data.providerRole =  $(this).attr("data-viewbyitem");
                		$("#providerRole").val(cs.data.providerRole);
                    	overalleffieciencyDescArray[0] = cs.data.providerRole;
                    	var newOverallEfficiencyViewByHidden = overalleffieciencyDescArray[0]+'~'+overalleffieciencyDescArray[1];
                    	var newOverallEfficiencyViewBy = overalleffieciencyDescArray[0]+' '+overalleffieciencyDescArray[1];
                    	$('#ln_overalleffieciency_viewBydescHidden').val(newOverallEfficiencyViewByHidden);
                    	$('#ln_overalleffieciency_viewBydesc').text(newOverallEfficiencyViewBy);
                		/*cs.populateTotalsGrid();
                   	    cs.reloadTableViews(newOverallEfficiencyViewBy);*/
                    	cs.toggleLeftNavButtons(cs);
                    	$("#current_providerrole").val(cs.data.providerRole);
                    	LN.getPage().updateProviderCounts(true);
        				cs.data.selectedIDs = [];
                	}            		
            	});
                
                $( "#ln_rightNav_viewBy_menu .dropdown-toggle, #ln_overalleffieciency_viewBydesc" ).click(function(e){                	
                	e.preventDefault();
                	var viewByGridHidden=$("#ln_overalleffieciency_viewBydescHidden").val().split('~');
                	_.each($('#providerRoleViewBy a'),function(anchor){
        				if(viewByGridHidden[0] === $(anchor).attr('data-viewbyitem')){
        					$(anchor).addClass('active');
        				}else{
        					$(anchor).removeClass('active');
        				}				
        			});     
                	_.each($('#ln_overalleffieciency_viewBydesc').siblings('ol').find('a'),function(anchor){
        				if(viewByGridHidden[0] === $(anchor).text()){
        					$(anchor).addClass('active');
        				}else{
        					$(anchor).removeClass('active');
        				}				
        			});
                	_.each($('.ln-overalleffieciency-viewBy-type a'),function(anchor){
        				if(viewByGridHidden[1]=== $(anchor).text()){
        					$(anchor).addClass('active');
        				}else{
        					$(anchor).removeClass('active');
        				}				
        			});
            	});                
            },
            
            registerGroupBy: function() {
                var cs = this;
                $("#ln_tableheader_groupby, #providerRoleGroupBy").on("click","li a",function(e) {
                	e.preventDefault();                     
                     if($('#ln_provider_groupby_id').text()!==$(this).text()){
		                 var selectText = $(this).text();
		                 $("#ln_provider_groupby_id").html(selectText);
		                 $("#ln_table_header_label").html(selectText+' List');
		                 $("#groupbysummarytotalid").html(selectText);
		                 cs.clearGridSearchBox(cs);
		                 cs.data.selectedIDs = [];
		                 cs.data.groupBy=selectText;
	                     cs.populateTotalsGrid();
	                     cs.data.manualsort = false;	                     
	                     cs.changeTableView(selectText);
                     }
                });
                
                $("#ln_tableheader_groupby, #providerRoleGroupBy").on("click",function(e) {	               
                    e.preventDefault();
                    _.each($('#providerRoleGroupBy a'),function(anchor){
        				if($("#ln_provider_groupby_id").text() === $(anchor).text()){
        					$(anchor).addClass('active');
        				}else{
        					$(anchor).removeClass('active');
        				}				
        			});                    
                    _.each($('#ln_tableheader_groupby ol a'),function(anchor){
         				if($("#ln_provider_groupby_id").text() === $(anchor).text()){
         					$(anchor).addClass('active'); 
         				}else{
         					$(anchor).removeClass('active');
         				}				
         			});
                });                
             },
             
             registerActionButtonEvents: function() {
            	 $('#maxAllowedExceededModalOK').on('click',function(e){
            		 $('#maxAllowedExceededModal').modal('hide');
            	 });
             },
            
             registerRedirection : function(){
            	var cs = this;
            	
            	$('#ln_clear_grid_selections').on('click',function() {
           		  $("input[type=checkbox]:checked").prop('checked',false);
           		  cs.data.selectedIDs = [];
           		  $("#ln_overall_efficiency_wrapper .ln-btnaction").addClass("disabled").prop("disabled", true);
           	 	});
            	
            	
            	// "Select and Navigate" to redirection
            	$("#OS, #CC, #RP, #SI, #ln_apply_to_current_page").on('click',function() {          		
                    var groupBy = $("#ln_provider_groupby_id").html(); 
                    // Parameters( toPage, fromPage, group by value)
                    cs.navigateTo(this.id, "OE", groupBy);
            	});
            	
            	
            	// disables/enables the "Select and Navigate to" options based on PCP selection.
              	if( $("#providerRole").val() === "PCP" ){
              		$('#RP').addClass('disabled');
              		$('#RP').attr('id',"ln_referralpatterns_disabled");
              		$('#SI').addClass('disabled');
            			$('#SI').attr('id',"ln_surgicalintervention_disabled");
              	}else{
              		$('#RP').removeClass('disabled');
              		$('#ln_referralpatterns_disabled').attr('id',"RP");
            		$('#ln_surgicalintervention_disabled').attr('id',"SI");
            		$('#SI').removeClass('disabled');           	
              	}
            	
            },
            changeTableView : function(selectText) {
            	var cs = this;            	
            	var overalleffieciencyDesc=$('#ln_overalleffieciency_viewBydescHidden').val();
            	var overalleffieciencyDescArray=overalleffieciencyDesc.split('~');    
            	
            	//var defaultViewArray=[overalleffieciencyDescArray[0],cs.data.summaryViewName];
            	// changed per IR#1290
            	var defaultViewArray=[overalleffieciencyDescArray[0],overalleffieciencyDescArray[1]];
            	cs.populateViewByDesc(defaultViewArray);            	            	
            	$.ajax({
                	url: "getTableView?groupBy="+selectText+ "&screenName=OVERALLEFFICIENCY",
             		method: 'GET',
                	success: function(data) {
                	},
                	complete: function(data){
                		$('#ln_groupby_provider_container').html(data.responseText);
                		var viewBy = $('#ln_overalleffieciency_viewBydescHidden').val().split('~')[1];
                		LN.debug('------------->'+viewBy);
                		var isSummaryView=false;
                		if (viewBy.indexOf(cs.data.summaryViewName) != -1) {
                			$('#ln_summary_provider_list_container').removeClass('ln-display-none');
                			$('#ln_detail_provider_list_container').addClass('ln-display-none');
                			isSummaryView=true;
                		} else if (viewBy.indexOf(cs.data.detailsViewName) != -1 ) {
                			$('#ln_summary_provider_list_container').addClass('ln-display-none');
                			$('#ln_detail_provider_list_container').removeClass('ln-display-none');
                			isSummaryView=false;
                		}
                		cs.data.summaryDefaultTablePreferences = $('#summaryDefaultTablePrefs').val();
                		cs.data.detailDefaultTablePreferences = $('#detailDefaultTablePrefs').val();
                		var columnDefs = cs.getColumnDefinitions(cs.data.groupBy,'OE');
            			if(isSummaryView){
            				cs.initializeSummaryTable(columnDefs[0],cs.data.fixedColumnCount);
            			}else{
            				cs.initializeDetailsTable(columnDefs[1],cs.data.fixedColumnCount);
            			}              		
                 	},
                	error :function() {
                		
                	}
                });
            },
            
            reloadTableViews: function(viewName){   
            	var cs = this;       
            	var columnDefs = cs.getColumnDefinitions(cs.data.groupBy,'OE');
	        	if(viewName.indexOf(cs.data.summaryViewName)!=-1){	        		
	        		$(cs.data.summaryContainer).show();
                	$(cs.data.detailsContainer).hide();
                	cs.initializeSummaryTable(columnDefs[0],cs.data.fixedColumnCount);
	        	}else if (viewName.indexOf(cs.data.detailsViewName)!=-1){
	        		$(cs.data.summaryContainer).hide();
	                $(cs.data.detailsContainer).show();		        			
	        		cs.initializeDetailsTable(columnDefs[1],cs.data.fixedColumnCount);	        		
	        	}
            },
            
            setDefaultOrder: function() {
            	var cs=this;
            	var arr = cs.data.defaultTablePreferences.split(",");
            	for(var i=0;i<arr.length;i++) {
            		cs.data.defaultOrder[i]=i;
            	}
            },
                             
            initializeSummaryTable : function(summaryColumnDefs,fixedColumnCount) {
                var cs = this;
                LN.debug(summaryColumnDefs);
                LN.debug("initializeSummaryTable called ");
                var prevColumnNamesArray=cs.getCurrentSummaryColumnNamesArray(cs.data.summaryTableId);                
                var dataTableParam={}; 
                $.extend(dataTableParam,cs.data.defaultTableParams,cs.getSummaryTableParams(cs,prevColumnNamesArray,summaryColumnDefs,fixedColumnCount));                
                $(cs.data.summaryTableId).dataTable().fnDestroy();
	                cs.data.tableSummary = $(cs.data.summaryTableId).dataTable(dataTableParam);                               
	                new $.fn.dataTable.FixedColumns( cs.data.tableSummary,{
	                	leftColumns:fixedColumnCount
	                });
	                
	                /*$(cs.data.summaryTableId).on( 'order.dt',  function () { setTimeout(function(){
	                	//PPM-2301 - moved to Complete callback of ajaxPost method
	                	cs.data.tableSummary.fnAdjustColumnSizing(false);
	           	    },0)  });*/
            },
            
            initializeDetailsTable: function(detailColumnDefs,fixedColumnCount){
            	var cs = this;
            	LN.debug("initializeDetailsTable called ");
            	var prevColumnNamesArray=cs.getCurrentSummaryColumnNamesArray(cs.data.detailTableId);            	
            	var dataTableParam={}; 
                $.extend(dataTableParam,cs.data.defaultTableParams,cs.getDetailsTableParams(cs,prevColumnNamesArray,detailColumnDefs,fixedColumnCount));            	
            	$(cs.data.detailTableId).dataTable().fnDestroy();
            	
	                cs.data.tableDetail = $(cs.data.detailTableId).dataTable(dataTableParam);
	                new $.fn.dataTable.FixedColumns( cs.data.tableDetail,{
	                	leftColumns:fixedColumnCount
	                });
	                
	               /*$(cs.data.detailTableId).on( 'order.dt',  function () { setTimeout(function(){
	            	   //PPM-2301 - moved to Complete callback of ajaxPost method
	                	cs.data.tableDetail.fnAdjustColumnSizing(false);
	           	 	},0) });*/
             
            },
            
            getSummaryTableParams: function(cs,prevColumnNamesArray,summaryColumnDefs,fixedColumnCount){
            	return {                	
                    "colReorder": {
                        "iFixedColumns": fixedColumnCount,
                        "fnReorderCallback": function() {
                        	drillDownFilters.registerDrillDowns();
                        },
                        realtime: true
                    },
                    "ajax" : cs.ajaxPost(cs,cs.data.summaryTableId,'summary',prevColumnNamesArray), 
                    "order" : cs.getSortOrder(cs.data.groupBy,cs.data.summaryDefaultTablePreferences),
                    "columnDefs": summaryColumnDefs,
                    "fnDrawCallback" : function(oSettings) {
                    	//cs.data.summaryTableSettings = oSettings;
                        $('.ln-overallEfficiency-patients').on('click',function(){
                           location.href="patientList";
                        });

                       // This removes the occasional double scroll bar on fixed column on IE browsers (see table.js)
                        cs.removeDblScrollbar();
                        cs.addGotoPageComponentPPM("ln_summary_provider_list","ln_summary_provider_gotobtn","ln_summary_provider_gototxt","ln_summary_provider_gotoerror"); 
                        cs.removeSecondarySortingHeaderColor(oSettings,cs.data.summaryTableId,1);
                        cs.setCheckBoxes(cs.data.summaryTableId);
                        cs.adjustTableBodyHeight(cs.data.summaryTableId);
                    },
                    "fnPreDrawCallback" : function(oSettings) { 
                    	if (oSettings.aaSorting[0] && oSettings.aaSorting[0][0] !== cs.getPreferencesIndex(cs.data.summaryDefaultTablePreferences  ,cs.data.defaultSortColumn) ) {
                    		cs.data.manualsort = true;
                    	}
                    	return true;
                    },
                    "fnInitComplete": function(oSettings, json) {
                    	cs.tableInitComplete();
                    	cs.noDataCleanup(json.iTotalDisplayRecords);
                    }
                };
            },
            
            getDetailsTableParams: function(cs,prevColumnNamesArray,detailColumnDefs,fixedColumnCount){
            	return {                	
                    "colReorder": {
                        "iFixedColumns": fixedColumnCount,
                        "fnReorderCallback": function() {
                        	drillDownFilters.registerDrillDowns();
                        },
                        realtime: true
                    },
                    "ajax" : cs.ajaxPost(cs,cs.data.detailTableId,'detail',prevColumnNamesArray),
                    "order" : cs.getSortOrder(cs.data.groupBy,cs.data.detailDefaultTablePreferences),
                    "columnDefs": detailColumnDefs,
                    "fnPreDrawCallback" : function(oSettings) {
                    	if (oSettings.aaSorting[0] && oSettings.aaSorting[0][0] !== cs.getPreferencesIndex(cs.data.detailDefaultTablePreferences  ,cs.data.defaultSortColumn) ) {
                    		cs.data.manualsort = true;
                    	}
                    	return true;
                    },
                    "fnDrawCallback" : function(oSettings) {
                    	   cs.data.detailTableSettings = oSettings;
                    	   $('.ln-overallEfficiency-patients').on('click',function(){
                    		   location.href="patientList";
                    	   });
                    	   
                    	   // This removes the occasional double scroll bar on fixed column on IE browsers (see table.js)
                           cs.removeDblScrollbar();
                    	   cs.addGotoPageComponentPPM("ln_detail_provider_list","ln_detail_provider_gotobtn","ln_detail_provider_gototxt","ln_detail_provider_gotoerror");
                    	   cs.removeSecondarySortingHeaderColor(oSettings,cs.data.detailTableId,1);
                    	   cs.setCheckBoxes(cs.data.detailTableId);
                    	   cs.adjustTableBodyHeight(cs.data.detailTableId);
                     },
                     "fnInitComplete": function(oSettings, json) {
                    	 cs.tableInitComplete(); 
                    	 cs.noDataCleanup(json.iTotalDisplayRecords);
                     }
                } ;
            },
            
            ajaxPost: function(cs,tableId,currentView,prevColumnNamesArray){

            	cs.data.gridAccessCount++;
            	return {
                    "cache": false,
                    "url" :cs.data.baseUrl,
                    "type" : "POST",
                    "dataType" : "json",
                    "data" : function ( d ) {
                    	var columnNamesArray=cs.getCurrentSummaryColumnNamesArray(tableId);
                        LN.debug("data called");
                        return $.extend( {}, d, {
                        	 "columnNames":columnNamesArray.length>0?columnNamesArray:prevColumnNamesArray,
                             "selDataSet":$('#ln_topmenu_dataset').attr('datasetkey'),
                             'selDataSetRangeBegin':  $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
             				 'selDataSetRangeEnd':  $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
             				 'selSubClientIds' : $('#ln_subClient_id').attr("data-key"),
             				 'selBenchMark' : $('#ln_benchid').attr("data-key"),
             				 'selDataSetRangeRiskColumnName':  $('#ln_topmenu_dataset_range_id').attr("riskColumnName"),
             				 'currentView':currentView,
             				 'searchText':cs.data.providerId,
             				 'providerRole':cs.data.providerRole,
             				 'groupBy':cs.data.groupBy,
             				 'manualsort':cs.data.manualsort
                        } ); },
                    'beforeSend': function(xhr) {
                    	cs.data.prevProviderId = cs.data.providerId;
                    	xhr.setRequestHeader('X-TransactionID', LN.TRANSACTION_ID);
                    	$('.DTFC_LeftHeadWrapper').css('display','none');
                    	$('.DTFC_LeftBodyWrapper').css('display','none');
                    	$(".DTFC_LeftBodyLiner").css('overflow','auto'); /* GHS: this removes the occasional double scroll bar on fixed column */
                    	$('.dataTables_info').hide();
                        cs.handleBeforeAjaxLoad(tableId);
                		// disable action buttons on initial view and pagination
                        $("#ln_overall_efficiency_wrapper .ln-btnaction").addClass("disabled").prop("disabled", true);  
                    },
                    'complete' : function() {
                    	cs.data.gridAccessCount--;
                    	if(cs.data.gridSearchCount>0){
                    	cs.data.gridSearchCount--;
                    	}
                    	if(cs.data.gridAccessCount<=0){
                    		cs.handleAfterAjaxLoad(tableId);
	                        $('.DTFC_LeftHeadWrapper #Select_All').removeClass('sorting_asc');
	                       	$('.DTFC_LeftHeadWrapper').css('display','block');
	                    	$('.DTFC_LeftBodyWrapper').css('display','block'); 

	                    	$('.dataTables_info').show();	
	                    	
	                    	$("input.activeChkBox:checkbox").click(function() {
	                    		if (!this.checked) {
	                    			cs.removeFromSelectedList($(this).val());
	                    		} else {
	                    			cs.addToSelectedList(this);
	                    		}
	                    	});
                    	}
                    	LN.debug('cs.data.prevProviderId--->   '+cs.data.prevProviderId);
                    	LN.debug('cs.data.providerId--->   '+cs.data.providerId);
                    	if(cs.data.gridSearchCount==0 && cs.data.prevProviderId!=cs.data.providerId){
                    		$(cs.data.gridSearchID).trigger('keyup');
                    	}
                    	// PPM-2301
                    	if(cs.data.gridSearchCount > 0){
                    		cs.data.tableSummary.fnAdjustColumnSizing(false);
                    	}
                    	
                    	// This removes the occasional double scroll bar on fixed column on IE browsers (see table.js)
                        cs.removeDblScrollbar();
	
                    },
                    "dataFilter" : function(json,type){
                    	var obj = jQuery.parseJSON(json);
                    	cs.enableExport(obj);
                    	return json;
                    },
                    error:function() {
                    	LN.isAjaxError=true;
                    }
                };
            },
            
            tableInitComplete: function(){
            	setTimeout(function(){
     	    		$('.ln-tableheadertextextended a').on('click',function(e){
     	    			e.preventDefault();
     	    			return false;
     	    		});        	         	    		
            	 },0);
            }
            
        });