reportingService.controller.viewManagers.categoryViewManager = new reportingService.controller.AbstractReportViewManager();
reportingService.controller.reportingManager.setViewManagerToReportRegistry(reportingService.controller.viewManagers.categoryViewManager);

Object.extend(
	reportingService.controller.viewManagers.categoryViewManager, {
		reportName:reportingService.constants.viewTypes.CATEGORY_VIEW,
		// WHEN RETURN CONTINUE TO EXTEND THIS OBJECT AS AN EXAMPLE.
		isWaitReport : true,
		isWaitComplete : false,
		model: Object.extend(gidLib.clone(reportingService.controller.viewManagers.commonViewManager.model), {
            reportName: reportingService.constants.viewTypes.CATEGORY_VIEW,
            strSizeCategoryNameList:null,
			strHierarchy:null,
			strSizeCategorySelections:null,
			strSizeCategoryNameList:null,
			
			hasFired: false
        }),
		controller:{
            setReportModel:function() {
                var categoryModel = reportingService.controller.viewManagers.categoryViewManager.model;
            	var searchAppManager = reportingService.controller.appManagers.searchAppManager;
            	
            	categoryModel.isSBS = window['objSBS'];
            	categoryModel.isSbsEngaged = window['objSBS'] && window['objSBS'].isFilterEngaged;
            	
                if (window['objSBS'] && window['objSBS'].isFilterEngaged) {
               		var shopBySizeAppManager = reportingService.controller.appManagers.shopBySizeAppManager;
	            	shopBySizeAppManager.setShopBySize();
	                categoryModel.strHierarchy = shopBySizeAppManager.strHierarchy;
	                categoryModel.strSizeCategorySelections = shopBySizeAppManager.strSizeCategorySelections;
	                categoryModel.strSizeCategoryNameList = shopBySizeAppManager.strSizeCategoryNameList;
	                
                }
                else {
                	categoryModel.strHierarchy = categoryModel.strSizeCategorySelections = categoryModel.strSizeCategoryNameList = '';
                }
                
                Object.extend(categoryModel,{
                	keyword: searchAppManager.getSiteSearchActiveKeyword(categoryModel.reportName)
                });
                categoryModel.viewType = reportingService.constants.viewTypes.CATEGORY_VIEW;
            },
			setReportTransmissionVars:function() {
                var categoryModel = reportingService.controller.viewManagers.categoryViewManager.model;
				s.prop2 = categoryModel.strSizeCategoryNameList;
				s.prop3 = categoryModel.strHierarchy;
				s.prop4 = categoryModel.strSizeCategorySelections;
				s.prop5 = categoryModel.strSizeCategoryNameList;
				s.prop17 = categoryModel.keyword;
				s.prop15 = 'category';

				if(categoryModel.isSBS) {
					s.eVar15 = categoryModel.isSbsEngaged ? 'SBS:' + categoryModel.commonCurrentPageName : 'non-SBS and non-FS';
				}
				
				categoryModel.hasFired = true;
                var viewTypeReportParameter = reportingService.api.setViewTypeReportParameter(categoryModel.viewType);
            },
            getReportRequest:function() {
				var reportingManager = reportingService.controller.reportingManager;
				var viewManager = reportingService.controller.viewManagers.categoryViewManager;
				viewManager.isWaitComplete = true;
                reportingManager.getReportingRequest(viewManager);
			},
            setCleanUp:function() {
				// Reset s.pageName back to original.
                var model = reportingService.controller.viewManagers.categoryViewManager.model;
                var searchAppManager = reportingService.controller.appManagers.searchAppManager;
                //s.pageName = model.origPageName;
                s.prop2 = '';
                s.prop3 = '';
                s.prop4 = '';
                s.prop5 = '';
                s.prop17 = '';
                s.eVar15 = '';
                searchAppManager.setSiteSearchActive(false);
                searchAppManager.setSortByDescCookie(false);
                searchAppManager.setRefinementsFixedOrderCookie(false);
			}
        }
	}
);
