var toll = toll || {};
// Generate search results as html box
// Embedded javascript approach: external .ejs file ('searchresult.ejs') used as template.
// 	code in between <% %> runs javascript code, code in between <%= %> prints out result of expression.
//  Uses ejs_0.0_alpha/ejs.js library as template engine
(function(){
	
	var _rootElement;
	
	var  TEMPLATE_URL = '/js/search/view/searchresult.ejs';
	
	var _communityPageBaseUrl='/homesearch/servlet/HomeSearch?app=community_description&comm_num=';
	var _requestCommunityInfoBaseUrl='/homesearch/servlet/HomeSearch?app=community_request&comm_num=';
	var _communityMapDirectionsBaseUrl='/homesearch/servlet/HomeSearch?app=community_directions&comm_num=';
	var _tollBaseUrl='http://www.tollbrothers.com/';
	var _qdhBaseUrl='http://www.quickdeliveryhomes.com/qdh_searchresults_template.shtml?com_no=';
	
	//Make sure Model is loaded proir to this class
	var _comMap=toll.Model.getCommunityTOMap();
	var _paramMap=toll.Model.getSearchParamMap();
	// Data structure for EJS objects (search result boxes html) - allows us to reuse them when sorting.
	var _params={};
	
	var _getViewTO=function(com, params){
		viewTO={
			// Additional view data
			communityLink:_communityPageBaseUrl+com[_comMap.communityNumber],
			requestInformationLink:_requestCommunityInfoBaseUrl+com[_comMap.communityNumber],
			imageLink:_tollBaseUrl+com[_comMap.image],
			mapDirectionsLink:_communityMapDirectionsBaseUrl+com[_comMap.communityNumber],
			qdhLink:_qdhBaseUrl+com[_comMap.communityNumber],
			// Existing community data
			communityNumber: com[_comMap.communityNumber],  // 8927
			communityName:com[_comMap.communityName], // "Bushkill Manor by Toll Brothers"
			county:com[_comMap.county], // "Northampton"
			state:com[_comMap.state], // "PA"
			city:com[_comMap.city],  // "Nazareth"
			email:com[_comMap.email],  // "bushkillmanor@tollbrothersinc.com"
			latitude:com[_comMap.latitude],   // 40.75555
			longitude:com[_comMap.longitude],   // -75.29583
			qdhTotal:com[_comMap.qdhTotal],  // 0
			sqft:com[_comMap.sqft],  // 3953	
			distance:com[_comMap.distance],  // -1.0
			comm_type:com[_comMap.comm_type],  /*[]*/
			home_type:com[_comMap.home_type],  /*[]*/
			image:com[_comMap.image],  // "/communities/8927/images/hampton_georgian_ban_sm.jpg"
			master_comm_id:com[_comMap.master_comm_id],  // 111	
			price:com[_comMap.price],  // 549975
			priceRange:com[_comMap.priceRange],  // "Mid- $500,000s"
			//Search Param data
			paramZip:params[_paramMap.zip]
		}
		return viewTO;
	}
	
	
	toll.SearchResultsView={
		init:function(el/*dom element*/){
			_rootElement=el;
		},
		
		sort:function(sortByFieldName/*String*/, ascending){
			
			var ord = ascending ? "asc" : "desc";
			/*
					"name"
					"county"
					"avg_sqft"  
					"home_type"  
					"price" 
			*/
			
			if(sortByFieldName == "name"){
				$("div#searchResults>div").tsort(".community",{order:ord});
			}else if(sortByFieldName == "county"){
				$("div#searchResults>div").tsort(".county",{order:ord});
			}else if(sortByFieldName == "avg_sqft"){
				$("div#searchResults>div").tsort(".avg_sqft",{order:ord});
			}else if(sortByFieldName == "home_type"){
				$("div#searchResults>div").tsort(".home_type",{order:ord});
			}else if(sortByFieldName == "price"){
				$("div#searchResults>div").tsort(".price",{order:ord});
			}else if(sortByFieldName == "city"){
				$("div#searchResults>div").tsort(".city",{order:ord});
			}
	
		},

		draw:function(communities/*toll.Model.getCommunityTOMap*/, params){
			_rootElement.innerHTML="";
			// Embedded javascript file used as template.
			var  htmlText='', viewTO={}, domNode;
			var newcommunities=new Array();
			for(var i=0; i<communities.length; i++){
				var com = communities[i];
				
				viewTO=_getViewTO(com, params);
				
				htmlText = new EJS({url: TEMPLATE_URL}).render(viewTO);
				
				domNode=document.createElement('div');
				domNode.innerHTML = htmlText;
				
				_rootElement.appendChild(domNode);
				
			}
		}
	}
})();
	
	
	
	
