
reportingService.controller.viewManagers.categorySearchViewManager = new reportingService.controller.AbstractReportViewManager();
reportingService.controller.reportingManager.setViewManagerToReportRegistry(reportingService.controller.viewManagers.categorySearchViewManager);

Object.extend(
	reportingService.controller.viewManagers.categorySearchViewManager, {
		reportName:reportingService.constants.viewTypes.CATEGORY_SEARCH_VIEW,
		
		model:Object.extend(gidLib.clone(reportingService.controller.viewManagers.commonViewManager.model),{
            reportName: reportingService.constants.viewTypes.CATEGORY_SEARCH_VIEW,
            productId: null,
            pageName: null,
            products: null
		}),
		controller:{
            setReportModel:function() {
            	var commonViewManager = reportingService.controller.viewManagers.commonViewManager;
            	var searchAppManager = reportingService.controller.appManagers.searchAppManager;
            	var categorySearchViewManager = reportingService.controller.viewManagers.categorySearchViewManager;
                var model = categorySearchViewManager.model;      
                               
				var evarHierarchy1;      
                var propKeyword;
                var propResult;
                var propDropDown;
                var propPreviousPage;
                var propPreviousURL;
                var propRefinementFilter;
                var propUnRefinement;
                var propFixedRefinement;
                var propRefinementType;
                var propRefinementPath;
                var propRefinementPageType;
                var propFilterPageName;
                var propFilterSearchPageName;
                var searchPageName;
                var sortRefinement;
                
                searchAppManager.setSearchProcessorFilterValues(); // If values in searchAppManager.objFilter, then set them base on values in cookie.
				searchAppManager.setRefinementsFixedOrderCookie(true);
				searchAppManager.setSortByDescCookie(true);
                
				//MiniQ-250 Send search props (if applicable) from all screens because if 1 result, search bypasses search results screen
				if (getQuerystringParam("userSearchText",true) != "" || categorySearchViewManager.reportName == "siteSearch") { //only send on search results page
					//Only send search props on first omniture transmit for a page (unless it's the productLoader)
					if (searchAppManager.objKeyword.strValue == null && categorySearchViewManager.reportName != "productLoader") {
						searchAppManager.setSearchProcessorKeywordValues(); 
						if (searchAppManager.objKeyword.strValue != "") {
							if (objSearch.strAutoCorrectedKeyword) {
								suggestedKeyword = objSearch.strAutoCorrectedKeyword; 
								propKeyword = searchAppManager.objKeyword.strValue + " -> " + suggestedKeyword;
							} else {
								propKeyword = searchAppManager.objKeyword.strValue;			
							}
							if (categorySearchViewManager.reportName != "siteSearch") {
								propResult = 1; //redirect results are always 1
							} else if ((searchAppManager.objKeyword.intNumberOfResults > 0) && (objSearch.strOrigSearchText == searchAppManager.objPersistKeyword.strValue)) {
								propResult = searchAppManager.objKeyword.intNumberOfResults;
							} else {
								propResult = "no results";
							}
							propDropDown = searchAppManager.objKeyword.strDivision;
							propPreviousPage = searchAppManager.objKeyword.strPageName;
							propPreviousURL = searchAppManager.objKeyword.strPath;
						}
					}
				}
				if (objSearch.strSelectedRefinements != "") {
					if (searchAppManager.objFilter.strName != "") {
						propRefinementFilter = searchAppManager.objFilter.strName + ":" + searchAppManager.objFilter.strValue;
						propRefinementType = searchAppManager.objFilter.strName;
						setCookieVar("omniSession","strSearchFilterName","");
						setCookieVar("omniSession","strSearchFilterValue","");
					}
				}
				if (searchAppManager.objFilter.strFilterMode != "") {
					propUnRefinement = searchAppManager.objFilter.strFilterMode;
					setCookieVar("omniSession","strSearchFilterMode","");
				}
				if (objSearch.strSelectedRefinementsFixedOrder != "" && searchAppManager.getRefinementCount() == 1) {
					propFixedRefinement = objSearch.strSelectedRefinementsFixedOrder;
					if (objSearch.strSelectedRefinementsAppliedOrder != "") {
						propRefinementPath = objSearch.strSelectedRefinementsAppliedOrder;
					}
				}			
				if (searchAppManager.objFilter.strRefinementEngagedPage != "") {
					propRefinementPageType = searchAppManager.objFilter.strRefinementEngagedPage;
					setCookieVar("omniSession","strRefinementEngagedPage","");
				}
				/*
				if (objSearch.strSortByDesc && objSearch.strSortByDesc != "" && searchAppManager.getIsSortBySelectedCookie()) {
					propDropDown = objSearch.strSortByDesc;
					setCookieVar("omniSession","strIsSortBySelected","false");
				}
				*/
				if (window['objSearch'] != undefined) {
					if (objSearch.strSelectedRefinementsFixedOrder) {
						if (objSearch.strSelectedRefinementsFixedOrder != "") {
							searchAppManager.setRefinementCount();
						}
					}
				}
				if (objSearch.strSelectedRefinementsFixedOrder != "" && searchAppManager.getRefinementCount() == 1) {
					propFixedRefinement = objSearch.strSelectedRefinementsFixedOrder;
					if (objSearch.strSelectedRefinementsAppliedOrder != "") {
						propRefinementPath = objSearch.strSelectedRefinementsAppliedOrder;
					}
				}
				if (categorySearchViewManager.reportName == "categorySearch" || categorySearchViewManager.reportName == "siteSearch" || categorySearchViewManager.reportName == "product" || categorySearchViewManager.reportName == "quicklook" || categorySearchViewManager.reportName == "outfitLoader" || categorySearchViewManager.reportName == "outfit") {
					if (categorySearchViewManager.model.commonCurrentBusinessId && (categorySearchViewManager.model.commonCurrentBusinessId != "") && (searchAppManager.getCurrentBusinessIdCookie() != categorySearchViewManager.model.commonCurrentBusinessId)) {
						if (searchAppManager.getRefinementsFixedOrderCookie() != "") {
							searchAppManager.setRefinementsFixedOrderCookie(false);
						}
						if (searchAppManager.getSortByDescCookie() != "") {
							searchAppManager.setSortByDescCookie(false);
						}
					}
				}
				if (objSearch.strSortByDesc && objSearch.strSortByDesc != "" && searchAppManager.getIsSortBySelectedCookie()) {
					sortRefinement = objSearch.strSortByDesc;
				}
				model.setReferringStyle("");
				model.viewType = reportingService.constants.viewTypes.CATEGORY_SEARCH_VIEW;
                Object.extend(model, {
                	originalSEvent: s.events,
                	pageName: model.commonCurrentPageName,
                	hierarchy1: model.commonCurrentPageName,
                	keyword: searchAppManager.getSiteSearchActiveKeyword(),
                	//naturalKeyword:null,//model.naturalKeyword; /*Proposed Addition*/
                	events: "search, event10, event11, event12",//Impressions (search), Clicks (search), //Cost (search)
                	searchKeyword: propKeyword,
                	searchResult: propResult,
                	dropDown: propDropDown,  //search drop down
                	previousPage: propPreviousPage,  //previous page name- search
                	previousURL: propPreviousURL,//previous page url- search
                	catDropDown:null, //drop downs , search based categories
                	suggestedKeyword:null, //suggested keyword search
                	refinementFilter:propRefinementFilter,
                	refinementType:propRefinementType,
                	unRefinement:propUnRefinement,
                	fixedRefinement:propFixedRefinement,
                	refinementPath:propRefinementPath,
                	refinementPageType:propRefinementPageType,
                	refinements: searchAppManager.getRefinementsFixedOrderCookie(),
                	sortByRefinement: sortRefinement
               });
            },
			setReportTransmissionVars:function() {
				var model = reportingService.controller.viewManagers.categorySearchViewManager.model;
				//s.pageName = model.pageName;
				//s.hier1 = model.pageName;
                s.eVar2 = model.pageName;
                //s.eVar19 = model.refinements;
                s.eVar20 = ''; 
                //s.eVar37 = model.naturalKeyword; //Proposed
                //s.events = model.events;
                s.events = '';
                s.prop12 = model.refinementFilter;
                s.prop13 = model.refinementType;
                s.prop14 = model.fixedRefinement;
                s.prop15 = model.refinementPageType;
                s.prop16 = model.unRefinement; 
				s.prop17 = model.searchKeyword;
				s.prop18 = model.searchResult;
				s.prop19 = model.dropDown;
				s.prop20 = model.previousPage;
				s.prop21 = model.previousURL;
				s.prop23 = model.refinementPath;
				s.prop29 = model.sortByRefinement;
				s.prop30 = model.suggestedKeyword;

                var viewTypeReportParameter = reportingService.api.setViewTypeReportParameter(model.viewType);
			},
			getReportRequest:function(prod) {
				var reportingManager = reportingService.controller.reportingManager;
				var viewManager = reportingService.controller.viewManagers.categorySearchViewManager;
				viewManager.isWaitComplete = true;
                viewManager.controller.product = prod;
                reportingManager.getReportingRequest(viewManager);
			},
            setCleanUp:function() {
                var model = reportingService.controller.viewManagers.categorySearchViewManager.model;
                s.products = model.originalSProducts;
                //s.pageName = model.originalPageName;
                s.events = model.originalSEvent;
                setCookieVar("omniSession","strIsSortBySelected","false");
                s.prop12 = '';
                s.prop13 = '';
                s.prop14 = '';
                s.prop15 = '';
                s.prop16 = '';
                s.prop17 = '';
                s.prop18 = '';
                s.prop19 = '';
                s.prop20 = '';
                s.prop21 = '';
                s.prop23 = '';
                s.prop29 = ''; 
			}
        }
	}
);
