jQuery.fn.contentBox = function(options) {
	
	var defaults = {
		bToggle: false,
		cbTitleID: "cbTitle",
		cbTitleSize: "medium",
		cbContentID: "cbContent",
		cbButtonBarID: "cbButtons",
		cbWidth: "960px",
		titleFontSize: "14px",
		titleFontColor: "#ffffff",
		titleTextAlign: "center",
		contentBorderCSS: "2px solid #A81E42",
		contentTextAlign: "center",
		contentBGColor: "#ffffff",
		contentSize: "",
		buttonBarBGColor: "#ffffff",
		breakColor: "#A81E42",
		nLength: 250000000,
		sToggleCallback: "",
		sMoreText: "&nbsp; + show more",
		sLessText: "&nbsp; - show less",
		sEllipsisText: "..."
	};
	var options = jQuery.extend(defaults, options);
	
	var backgroundImageSize = "20";
	if (options.cbTitleSize == "small") {
		backgroundImageSize = "15";
		options.titleFontSize = "12px";
	} else if (options.cbTitleSize == "large") {
		backgroundImageSize = "30";
		options.titleFontSize = "18px";
	}
	
	var sharedCssObj = {
		"width": options.cbWidth,
		"border": options.contentBorderCSS
	};
	var titleCssObj = {
		"background-image": "url('../images/title_bg_"+backgroundImageSize+".gif')",
		"background-repeat": "repeat-x",
		"text-align": options.titleTextAlign,
		"font-size": options.titleFontSize,
		"font-weight": "bold",
		"color": options.titleFontColor,
		"padding-bottom": "2px"
	};
	var contentCssObj = {
		"background-color": options.contentBGColor,
		"padding": "4px 2px",
		"text-align": options.contentTextAlign,
		"font-size": options.contentSize
	};
	var buttonBarCssObj = {
		"background-color": options.buttonBarBGColor,
		"border-top": options.contentBorderCSS,
		"padding-top": "4px",
		"padding-bottom": "4px",
		"text-align": "center"
	};
	var breakCssObj = {
		"border-top": "2px solid "+options.breakColor,
		"margin-top": "0px",
		"padding-top": "0px"
	};
	
  	return this.each(function(){
   		var objContentBox = jQuery(this);
   		var nTitleCount = 0;
   		var nContentCount = 0;
   		var nContentLength = 0;
   		var nButtonBarCount = 0;
   		objContentBox.css(sharedCssObj);
   		
   		jQuery('.'+options.cbTitleID, objContentBox).each(function(){
	   		jQuery(this).css(titleCssObj);
	   		nTitleCount++;
   		});
   		
   		jQuery('.'+options.cbContentID, objContentBox).each(function(){
	   		jQuery(this).css(contentCssObj);
	   		nContentLength += jQuery(this).length;
	   		nContentCount++;
   		});
   		
   		jQuery('.'+options.cbButtonBarID, objContentBox).each(function(){
	   		jQuery(this).css(buttonBarCssObj);
	   		nButtonBarCount++;
   		});
   	
		jQuery('.cbBreak', objContentBox).each(function(){
			jQuery(this).css(breakCssObj);
		});
		

		if (nContentCount == 1) {
			
		   	var contentRows = jQuery('.'+options.cbContentID, objContentBox).children();
   			var nNumberHidden = contentRows.length - options.nLength;
   			
   			if (nNumberHidden > 0) {
	   			contentRows.slice(options.nLength).hide();
	   			
   				var control = "<span class='more'>" +options.sMoreText+ "<\/span>";
   				objContentBox.append(control);
   			
   				var itemControl = $('.more', objContentBox);
   				itemControl.css({"text-decoration":"underline", "color":"gray", "cursor":"pointer"});
   				
   				itemControl.click(function() {
	   				var objToggleLink = $(this);
        		
	   				if (objToggleLink.hasClass('more')) {
				   		objToggleLink.removeClass('more');
				   		objToggleLink.addClass('less');
				   		objToggleLink.html(options.sLessText);
	   				} else {
				   		objToggleLink.removeClass('less');
				   		objToggleLink.addClass('more');
				   		objToggleLink.html(options.sMoreText);
	   				}
					
	   				if ((options.sToggleCallback||"") != "") {
				   		contentRows.slice(options.nLength).slideToggle("fast", eval(options.sToggleCallback));
			   		} else {
				   		contentRows.slice(options.nLength).slideToggle("fast");
			   		}
   				});
			}
		}
		
		if ((nTitleCount > 1) || (nContentCount > 1) || (nButtonBarCount > 1) ) {
			options.bToggle = false;
		}
		if (options.bToggle) {
			jQuery('.'+options.cbTitleID, objContentBox).click(function() {
				jQuery('.'+options.cbContentID, objContentBox).slideToggle("normal");
				jQuery('.'+options.cbButtonBarID, objContentBox).slideToggle("fast");
			});	
		} 	
  	});
};


