var dest, src, ktf ;

function kt1edit( edmode )
{
	ktf = document.ktdat ;
	src = ktf.uChart.value ;
	dest = "" ;

	if ( src.length == 0 )
		return ;

	var lineData = src.replace(/^[\r\n]+|[\r\n]+$/g,'').replace(/[\r\n]+/g,'\n').split('\n'); 

	if ( lineData.length == 0 )
		return ;

	switch( edmode ){
		case "rotate" :
			if ( document.getElementById("rotater").checked )
				rotate_r( lineData ) ;
			else	rotate_l( lineData ) ;
			break ;

		case "reverse" :
			rev() ;
			break ;

		case "flip" :
			if ( document.getElementById("filphoriz").checked )
				flip_h( lineData ) ;
			else	flip_v( lineData ) ;
			break ;
	}

	ktf.uChart.value = dest ;
}		

function rev()
{
	for ( i = 0 ; i < src.length ; i++ ){
		c = src.charAt(i) ;
		if ( c == ktf.mcChar.value )
			dest += ktf.ccChar.value ;
		else{
			if ( c == ktf.ccChar.value )
				dest += ktf.mcChar.value ;
			else	dest += c ;
		}
	}
}

function flip_h( lineData )
{
	lineData.reverse() ;

	for ( i = 0 ; i < lineData.length-1 ; i++ )
		dest += lineData[i]+"\n" ;
	for (  ; i < lineData.length ; i++ )
		dest += lineData[i] ;
}

function flip_v( lineData )
{
	var mx = mxlen( lineData ) ;

	for ( i = 0 ; i < lineData.length ; i++ ){
		for ( j = mx-1 ; j >= 0 ; j-- ){
			if ( lineData[i].length <= j ){
				dest += ktf.mcChar.value ;
				continue ;
			}
			dest += lineData[i].charAt(j)  ;
		}
		if ( i < lineData.length-1 )
			dest += "\n" ;
	}
}

function rotate_r( lineData )
{
	var mx = mxlen( lineData ) ;

	for ( orgx = 0 ; orgx < mx ; orgx++ ){
		for ( i = lineData.length-1 ; i >= 0 ; i-- ){
			if ( lineData[i].length <= orgx ){
				dest += ktf.mcChar.value ;
				continue ;
			}
			dest += lineData[i].charAt(orgx)  ;
		}
		if ( orgx < mx-1 )
			dest += "\n" ;
	}
}

function rotate_l( lineData )
{
	var mx = mxlen( lineData ) ;

	for ( orgx = mx-1 ; orgx >= 0 ; orgx-- ){
		for ( i = 0 ; i < lineData.length ; i++ ){
			if ( lineData[i].length <= orgx ){
				dest += ktf.mcChar.value ;
				continue ;
			}
			dest += lineData[i].charAt(orgx)  ;
		}
		if ( orgx > 0 )
			dest += "\n" ;
	}
}

function mxlen( lineData )
{
	var mx ;

	for ( i = mx = 0 ; i < lineData.length ; i++ ){
		if ( mx < lineData[i].length )
			mx = lineData[i].length ;
	}

	return mx ;
}

function checkclear()
{
	ktf.rowcounter.value = 0 ;
	ktf.colcounter.value = 0 ;
	ktf.msg1.value = ( ktf.langJ.value == "1" )? "入力なし" : "no chart" ;
	ktf.msg2.value = ktf.msg1.value ;
}

function checkchart()
{
	ktf = document.ktdat ;
	src = ktf.uChart.value ;
	dest = "" ;

	if ( src.length == 0 ){
		checkclear() ;
		return ;
	}

	var lineData = src.replace(/^[\r\n]+|[\r\n]+$/g,'').replace(/[\r\n]+/g,'\n').split('\n'); 

	if ( lineData.length == 0 ){
		checkclear() ;
		return ;
	}

	if ( ktf.langJ.value == "1" ){
		ktf.msg1.value = "なし" ;
		ktf.msg2.value = "なし" ;
	}
	else{
		ktf.msg1.value = "none" ;
		ktf.msg2.value = "none" ;
	}
	ktf.rowcounter.value = lineData.length ;

	c = lineData[0].length ;

	for ( i = j = 0 ; i < lineData.length ; i++ ){
		if ( j == 0 && c != lineData[i].length ){
			j = i ;
			break ;
		}
	}

	if ( j != 0 ){
		if ( ktf.langJ.value == "1" )
			ktf.msg1.value = (j+1)+"段目" ;
		else	ktf.msg1.value = "row"+(j+1) ;
	}

	ktf.colcounter.value = c ;

	for ( i = 0, flag = true ; i < lineData.length ; i++ ){

		if ( flag ){
			for ( j = 0 ; j < lineData[i].length ; j++ ){
				c = lineData[i].charAt(j) ;
				if ( c != ktf.mcChar.value && c != ktf.ccChar.value ){
					flag = false ;
					ii = i ;
					jj = j ;
					break ;
				}
			}
		}
		
		dest += lineData[i] ;

		if ( i < lineData.length-1 )
			dest += "\n" ;
	}

	ktf.uChart.value = dest ;

	if ( !flag ){
		if ( ktf.langJ.value == "1" )
			ktf.msg2.value = (ii+1)+"段"+(jj+1)+"目" ;
		else	ktf.msg2.value = "row"+(ii+1)+", st"+(jj+1) ;
	}
}

