function load(){
	function $(id){return document.getElementById(id)}
	$("source-display-button").onclick=function(){
		$("source-layer").className	=
				$("source-layer").className=="open"	?"close":"open";
	};
	$("source-reflect-button").onclick=function(){

		var check_flags		=	[];
		var close_flags		=	[];
		var parent_flags	=	[];
		var source_length;

		return function(){

			var old_main		=	$("source-main")						;
			var source			=	$("source-value").value					.
									replace(	/\r\n/ig	,	"\n"	)	.
									replace(	/\r/ig		,	"\n"	)	.
									split(		/\n/ig					)	;

			check_flags.length	=	0;
			close_flags.length	=	0;
			parent_flags.length	=	0;

			check_flags.length	=	source.length;
			close_flags.length	=	source.length;
			parent_flags.length	=	source.length;
			source_length		=	source.length;

			var main			=	document.createElement("div")			;
			main.setAttribute("id","source-main");

			for(var i=0;i<source.length;i++){

				var p_flag=false;
				if(source[i].length!=0){
					for(var j=i+1;j<source.length;j++){
						if(source[j].length==0){
							continue;
						}
						p_flag	=	source[i].match(/^ */)[0].length	<
									source[j].match(/^ */)[0].length	;
						break;
					}
				}

				var sign		=	document.createTextNode(i+1)											;
				var text		=	document.createTextNode(StringUtility.Convert.TabToSpace(source[i],2))	;
				var button		=	document.createElement("button")										;
				var lineNumber	=	document.createElement("div")											;
				var inner		=	document.createElement("pre")											;
				var outer		=	document.createElement("div")											;

				if(p_flag){

					button.onclick			=	function(){
						var current_row		=	new Number(i)				;
						var last_row		=	new Number(i)				;
						var open_flag		=	true						;
						return function(){
							for(var i=current_row+1;i<source_length;i++){
									if(false){
									}else if(	source[i].length==0					){
										last_row=i;
										continue;
									}else if(	source[	current_row	].match(/^ */)[0].length	<
												source[	i			].match(/^ */)[0].length	){
										last_row=i;
										continue;
									}else if(	source[	current_row	].match(/^ */)[0].length	>
												source[	i			].match(/^ */)[0].length	){
										break;
									}else{
//										last_row=i;
										break;
									}
							}
							for(var i=current_row+1;i<=last_row;i++){
								if(close_flags[i]){
								}else{
									close_flags[i]=0;
								}
								if(open_flag){
									close_flags[i]++;
								}else{
									close_flags[i]--;
								}
								$("row_number_"+i).style.display=(close_flags[i]>0?"none":"");
							}
							open_flag=!open_flag;
							$("row_number_"+current_row).className="source-outer "+(open_flag?"open":"close");
						}
					}();

					outer.className		=	"source-outer open"		;

				}else{

					outer.className		=	"source-outer hidden"	;
					button.disabled		=	true;

				}

				button					.	appendChild(sign)		;
				inner					.	appendChild(text)		;
				lineNumber				.	appendChild(button)		;
				outer					.	appendChild(lineNumber)	;
				outer					.	appendChild(inner)		;
				main					.	appendChild(outer)		;

				button.className		=	"open-close-button"		;
				lineNumber.className	=	"line-number"			;
				inner.className			=	"source-inner"			;

				button.setAttribute("type","button");
				outer.setAttribute("id","row_number_"+i);
			}
			$("source-display").removeChild(old_main);
			$("source-display").appendChild(main);

		};

	}();
}
window.onload=load;

