(function($){  
	$.fn.hightlightRow = function(options) {  
		
		var defaults = {  
			highlightColor: "#f5f1bf",
			highlightColorClick: "#d2ebff",
			enableClick: true
		};  
		var options = $.extend(defaults, options); 
		
		var allElements = $(this);
		
		return this.each(function() {
			highlightElement = $(this);
			var defaultBgColor = $(highlightElement).css("background-color"); // taken from CSS
			
			// HOVER event
			$(highlightElement).hover(
				function() {
					var currentBgColor = $(this).css("background-color");
					var currentBgColorHEX = String(convertRGB(currentBgColor));
					
					if (currentBgColorHEX!=options.highlightColorClick) {
						$(this).css({"background-color":options.highlightColor});
					}
				},
				function() {
					var currentBgColor = $(this).css("background-color");
					var currentBgColorHEX = String(convertRGB(currentBgColor));
					
					var defaultBgColorHEX = String(convertRGB(defaultBgColor));
					
					if (currentBgColorHEX==options.highlightColor) {
						$(this).css({"background-color":defaultBgColorHEX});
					}
				}
			);
			
			// CLICK event
			if (options.enableClick==true) {
				$(highlightElement).click(
					function() {
						
						if ( $("input:radio", this).length>0 ) {
							
							resetAllElements(defaultBgColor);
							
							//$($(this).parent().find(String(highlightElement))).css({"background-color":defaultBgColor});
							$($(this).parent().find(":radio")).attr("checked", "");
							
							$(this).css({"background-color":options.highlightColorClick});
							$(":radio", this).attr("checked", "checked");
							
							var grandTotal = $(".grand-total", this).text();
							$("#grand-total strong").text(grandTotal);
							
						} // end IF (there is a radio input)
						else {
						
							var currentBgColor = $(this).css("background-color");
							var currentBgColorHEX = String(convertRGB(currentBgColor));
							
							if (currentBgColorHEX==options.highlightColorClick) {
								// return to unclicked
								$(this).css({"background-color":options.highlightColor});
								$(":checkbox", this).attr("checked", "");
							} else {
								// set clicked
								$(this).css({"background-color":options.highlightColorClick});
								$(":checkbox", this).attr("checked", "checked");
								
							}
						} // end ELSE (no radio input)
					}
				);
			} // end IF (click enabled)
			
		});
		
		
		function resetAllElements(defaultBgColor) {
			
			$.each(allElements, function(){
				$(this).css({"background-color":defaultBgColor});
			});
		}
		
		
		// converts a string "rgb(0, 70, 255)" to "0070ff"
		function convertRGB(inputColor) {
			//var rgbString = "rgb(0, 70, 255)"; // get this in whatever way.
			
			var parts = inputColor.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
			// parts now should be ["rgb(0, 70, 255", "0", "70", "255"]
			
			if (parts==null) {
				return "transparent";
			}
			
			delete (parts[0]);
			for (var i = 1; i <= 3; ++i) {
			    parts[i] = parseInt(parts[i]).toString(16);
			    if (parts[i].length == 1) parts[i] = '0' + parts[i];
			}
			var hexString = parts.join(''); // "0070ff"
			
			return "#"+hexString;
		}
		
	};  
})(jQuery);  
