var _defaultResultsValue = 10; 	
var _currentPage = 1;	

var cellBeanFuncs = [
    // first cell : type
    function(partnerBean) {
    	var result ="<div style='width: 10px;'>";
    	return result + "</div>"; 
    },
                     
	// second cell: name and description
	function(partnerBean) {
		var result = "<div class='listitem' style=\"width: 600px;\"><h3><a href='url'>partnerName</a></h3>" + 
		
		"<p>" + partnerBean.description + "</p>";
		
		if(partnerBean.products > 0) {
			result += "<a class='button bluebtn' href='productlink'><span>View all products from this partner</span></a></div>";	
		}
		
		result = result.replace(/partnerName/g, partnerBean.name);
		result = result.replace(/url/g, serverURL + "/partners/" + partnerBean.partnerKey);	
		result = result.replace(/productlink/g, serverURL + "/list/products?partnerKey=" + partnerBean.partnerKey);  			  			
		return result + "</div>";
	},
	
	// third cell: partner logo
	function(partnerBean) {   		
	
		var result =  "<div class='listitem'><a href='partnerlink'><img alt='alttext' src='imgsrc' width='100' height='85' style=\"margin: 0px 10px 0px 0px;\"/></a></div>";
		result = result.replace(/alttext/g, partnerBean.name + " Logo");
		result = result.replace(/imgsrc/g, serverURL + partnerBean.logo);
		result = result.replace(/partnerlink/g, serverURL + "/partners/" + partnerBean.partnerKey);
		return result;
	} 		
];
			
jQuery(document).ready( function() {
	
	// initialize table
	populate(_lowerBound, _upperBound, 0, 10);
			
	jQuery("a[@id^=alphaFilter]").each(function(){                    	        		
    	jQuery(this).click(function() {
    		
    		var regex = /^alphaFilter-(.)$/;
    		var letter = regex.exec(jQuery(this).attr("id"))[1];        		
    		
    		// set upper and lower bounds to the actual letter you are filtering by
    		_lowerBound = _upperBound = letter;
    		
    		populate(letter, letter, 0 , 10);
    		return false;
    	});
	}); 	
});

function populate(lower, upper, from , to) {
	
	var bean = {
		lowerBound: lower,
		upperBound: upper,
		to: to,
		from: from        			
	};
		
	DWRPartnerListController.getListContent(bean, { 
    	callback: updateContentHandler,
    	errorHandler:function(message) { 
			printMessage("partnerListContentTableMessage", "There are no partners matching your criteria"); 
			jQuery("#partnerListContentTableMessage").empty();
   		},
    	timeout:20000
    });  		
}

function printMessage(id, message) {
	jQuery("#" + id).empty();
	jQuery("#" + id).append("<div class='listitem'>");
	jQuery("#" + id).append(message);
	jQuery("#" + id).append("</div>");	
}

// populate table content. 
// Note: separates them by level. '0' = Core and '1' = Leadership
function updateContentHandler(pageResult) {	
	
	// remove all rows
	ws.cr.util.removeAllRows("partnerListContentTable");	
	
	// show titles and hide loading message
	jQuery("#partnersTitle").show();
	jQuery("#partnersTitle").show();
	jQuery("#partnerListContentTableMessage").empty();		
	jQuery("#partners").hide();	
	
	if (pageResult.results && pageResult.results.length > 0) {  				
				
		jQuery("#partners").show();
		ws.cr.util.addRows("partnerListContentTable", pageResult.results, cellBeanFuncs, { 		
			rowOptions: function(num, item) {
			
				// leadership
				if(item.level === 0) {									    	
					return "class='listItemLeadership'";
				}
				// core
				else {
					return "class='listItemCore'";
				}			    	
			},		
		  	
			cellOptions: function(num, item) {
		    	if(num === 0) {
		    		// leadership
					if(item.level === 0) {									    	
						return "valign='middle' class='leadership1'";
					}						
		    	}
		    	else if(num === 1){
		    		if(item.level === 0) {									    	
						return "class='leadership2'";
					}
		    	}
		    	return "";			    	
		  	}
		});
							
		genPagination(pageResult.total);						
	}
	else {			
		printMessage("partnerListContentTableMessage", "There are no partners matching your criteria");
	}	
}	

function genPagination(size) {
	
	ws.cr.util.generatePagination("pagination", size, _defaultResultsValue, "#switchpage", _currentPage, 				

		function() {
			
			var id = this.getAttribute('class');
			var regex = /^page_(.*)$/;
			var pageNumber = regex.exec(id)[1];				
			
			_currentPage = pageNumber;				
			
			var fromNum = pageNumber * _defaultResultsValue - _defaultResultsValue;					
			var toNum = pageNumber * _defaultResultsValue;
			
			populate(_lowerBound, _upperBound, fromNum ,toNum);				
			return false;
		}			
	);	
}		