
(function($){
	
	$.fn.textMagic = function()
	{
		this.each
		(
			function ()
			{
				var width  = $(this).width();
				var height = $(this).height();
				
				//2011-08-22 matuuchi IEでテキストが改行できないのを調整↓
				if(!jQuery.browser.msie){
					var text   = $(this).text();
				}else{
					var text   = $(this).html();
				}
				text = text.split("<br>").join("\n");
				text = text.split("<br />").join("\n");
				text = text.split("<BR>").join("\n");
				text = text.split("<BR />").join("\n");
				
				//spot 2011-08-22 matuuchi IEでテキストが改行できないのを調整↑

				var str_height = parseInt($(this).css("line-height").replace("px", ""));
				
				var max_col = (height / str_height);
				
				if((max_col - Math.floor(max_col)) >= 0.8)
				{
					max_col = Math.ceil(max_col);
				} else {
					max_col = Math.floor(max_col);
				}
				
				var disp_chr = "";
				
				var str_width = 0;
				
				var col_cnt = 0;
				var id_name = "";
				
				text = text.replace(/^\s+|\s+$/g, "");
				text = text.replace(/\r\n/g, "\n");
				
				for(var i = 0; i < text.length; i++)
				{
					txt = text.charAt(i);
					
					if(txt != "\n")
					{
						id_name = "magic_" + i;
						$span   = $('<span id="' + id_name + '" />');
						
						$span.text(txt);
						
						$(this).append($span);
						
						str_width += parseInt($(this).find("#" + id_name).width());
						
						if(width <= str_width)
						{
							str_width = 0;
							col_cnt++;
						} else {
							
							id_name2 = "magic_" + i + 1;
							$span2  = $('<span id="' + id_name2 + '" />');
							
							ii = i + 1;
							
							$span2.text(text.charAt(ii));
							
							$(this).append($span2);
							
							str_width2 = str_width + parseInt($(this).find("#" + id_name2).width());
							
							if(width < str_width2)
							{
								str_width = 0;
								col_cnt++;
							}
							
							$span2.remove();
						}
					} else {
						
						str_width = 0;
						col_cnt++;
						
						disp_chr += "<div class='nottag'><span>&nbsp;</span></div>";
						
						continue;
					}
					
					if(max_col <= col_cnt)
					{
						disp_chr += "…";
						break;
					}
					
					disp_chr += txt;
					
					$span.remove();
				}
				
				$(this).html(disp_chr);
			}
		);
		
		return this;
	};
	
})(jQuery);


