/*********************************************************************
*                                                                    *
*                            ÀÚ¹Ù ½ºÅ©¸³Æ®                           *
*                                                                    *
*                                                                    *
*********************************************************************/

// Àü¿ª º¯¼ö
var MenuCode  = new Array();
var MenuHref  = new Array();
var gMenuCode = new Array();
var gMenuHref = new Array();
var ArrowIndex= new Array();
var cntMenu   = 0;
var cntGMenu  = 0;
var maxArrowIndex = 0;
var curArrowIndex = 0;
var autoFocus = 0;
var userShellFile = "";
var objRefresh;
var autoRefresh;

// ----------------
//  ÄíÅ° °ü·Ã ÇÔ¼ö
// ----------------
function SetCookie(sName, sValue)
{
  //document.cookie = sName+'='+escape(sValue)+'; domain='+self.location.host;
  document.cookie = sName+'='+escape(sValue);
}

function GetCookie(sName)
{
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0])
      return unescape(aCrumb[1]);
  };
  return null;
}

// --------------
//  ÀÚµ¿ Refresh
// --------------
function toggle_auto_refresh() {
    if( autoRefresh == 1 ) {
        var expires = new Date();

        autoRefresh = 0;
        message( "Auto Refresh OFF" );
        // ÄíÅ° ±â·Ï Áö¿ì±â
        document.cookie = "auto_refresh=;expires="+ expires.toGMTString();
        // ¸®ÇÁ·¹½Ã off
        window.clearInterval( objRefresh );
    } else {
        autoRefresh = 1;
        message( "Auto Refresh ON - 10 sec" );
        // ÄíÅ° ±â·Ï ³²±â±â
        document.cookie = "auto_refresh=auto_refresh";
        // ¸®ÇÁ·¹½Ã on
        objRefresh = window.setInterval( "auto_refresh()", 10000 );
    }
}

function set_refresh() {
    autoRefresh = 1;
    message( "Auto Refresh ON - 10 sec" );
    // ÄíÅ° ±â·Ï ³²±â±â
    document.cookie = "auto_refresh=auto_refresh";
    // ¸®ÇÁ·¹½Ã on
    objRefresh = window.setInterval( "auto_refresh()", 10000 );
}

function auto_refresh() {
    location.reload();
}

// ---------------------------------------------------------
//  ÀÚµ¿ Æ÷Ä¿½º
//  - ¸¶¿ì½º Å¬¸¯ ÀÌº¥Æ®½Ã °­Á¦·Î CMDINPUT À¸·Î Æ÷Ä¿½º ÀÌµ¿
// ---------------------------------------------------------
function auto_focus()
{
	cmdobj = document.getElementById( "CMDINPUT" );
	if( cmdobj && autoFocus )
		cmdobj.focus();
}

// --------------------
//  ÀÚµ¿ Æ÷Ä¿½º on/off
// --------------------
function toggle_auto_focus()
{
	autoFocus = ! autoFocus;
	auto_focus();
	if( ! autoFocus )
		message( "µå·¡±× °¡´É" );
	else
		message( "µå·¡±× ºÒ°¡´É" );
}

// ---------------
//  ÀÚµ¿ »õ·Î°íÄ§
// ---------------
function aotu_refresh()
{
}

// -----------------------
//  ¸Þ´º Ãß°¡ 
//  - GO ¸í·É¾î ¾øÀÌ ½ÇÇà
// -----------------------
function menu_add( code, href )
{
	MenuCode[cntMenu] = code;
	MenuHref[cntMenu] = href;
	++cntMenu;
}

// -------------------------
//  Ä¿¼­Å° Á¦¾î ¸Þ´º Ãß°¡
//  - UP/DOWN Å°·Î ¸Þ´º¼±ÅÃ
// -------------------------
function arrow_add( code, index )
{
	ArrowIndex[index] = code;
	if( index > maxArrowIndex )
		maxArrowIndex = index;
}

function get_prev_arrow()
{
	var oldcur = curArrowIndex;
	var cur = curArrowIndex;
	
	while(1) {
		cur--;
		if( cur < 0 )
			cur = maxArrowIndex;
		if( cur == oldcur )
			return false;
		
		if( ArrowIndex[cur] ) {
			curArrowIndex = cur;
			return ArrowIndex[cur];
		}
	}
	
	return false;
}

function get_next_arrow()
{
	var oldcur = curArrowIndex;
	var cur = curArrowIndex+1;
	
	while(1) {
		if( ArrowIndex[cur] ) {
			curArrowIndex = cur;
			return ArrowIndex[cur];
		}

		cur++;
		if( cur > maxArrowIndex )
			cur = 0;
		if( cur == oldcur )
			return false;
	}
	
	return false;
}

// ----------------------------------
//  Ãß°¡ÀûÀÎ ¸í·É¾î Ã³¸®±â ÁÖ¼Ò ¼³Á¤
// ----------------------------------
function set_userShellFile( file )
{
	userShellFile = file;
}

// --------------------------
//  ¸Þ´º Ãß°¡
//  - GO¸¦ ¾Õ¿¡ ºÙ¿©¼­ ½ÇÇà
// --------------------------
function go_add( code, href )
{
	gMenuCode[cntGMenu] = code;
	gMenuHref[cntGMenu] = href;
	++cntGMenu;
}


// -----------------------
//  ¸Þ½ÃÁö ¹Ú½º ³»¿ë ¼³Á¤    
// -----------------------
function message( str )
{
	var msgobj = document.getElementById( "MSGBOX" );

	if( ! msgobj )
		return false;
		
	if( str == "UNKNOWN" )
		str = "¾Ë ¼ö ¾ø´Â ¸í·É¾îÀÔ´Ï´Ù.";
		
	msgobj.innerHTML = "&nbsp;"+str;
}

function page_move( url )
{
	message( "ÆäÀÌÁö¸¦ ÀÌµ¿ÁßÀÔ´Ï´Ù." );

	document.location.href = url;
	return true;
}

// --------------------------------------------------
//  ¸í·ÉÃ¢ ÀÔ·Â¾øÀÌ ¹Ù·Î ½ÇÇà
//  cmd_check(str)·Î ¹Ù·Î »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ³ª, 
//  cmd_check(str)ÀÇ ¸®ÅÏ°ªÀ¸·Î ÀÎÇØ ÆäÀÌÁö°¡ ¹Ù²î´Â 
//  Çö»óÀ» ¹æÁöÇÏ±â À§ÇØ run_command()¸¦ »ç¿ëÇÑ´Ù.
// --------------------------------------------------
function run_command( str )
{
	cmd_check( str );
}

// --------------------------------
//  ¸í·ÉÃ¢¿¡¼­ ÀÔ·ÂÇÑ ¸í·É¾î °Ë»ç
//  1. ¸Þ´º°Ë»ç
//  2. GO ¸Þ´º°Ë»ç
//  3. »ç¿ëÀÚ ¸í·É Ã³¸®±â °Ë»ç
//  4. Ãß°¡ÀûÀÎ ¸í·ÉÃ³¸® ÆÄÀÏ °Ë»ç
// --------------------------------
function cmd_check( str )
{
	var cmdobj   = document.getElementById( "CMDINPUT" );
	var debugobj = document.getElementById( "DEBUG" );
	var string;
	var argv = "&plusargv=";

	if( str ) {
		string = "" +str;
		string = string.toLowerCase();
	} else {
		string = cmdobj.value.toLowerCase();

		if( ! cmdobj ) {
			message( "¸í·É ÀÔ·Â¹Ú½º¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù." );
			return false;
		}
	}

	strarray = string.split(" ");

	// »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î Ã³¸®±â( ¿ì¼± ¼øÀ§ 1 )
	if( user_shell( strarray.length, strarray ) )
		return true;
	
	// GO ¸Þ´º °Ë»ç( ¿ì¼± ¼øÀ§ 2 )
	if( strarray[0] == "go" && strarray.length > 1 ) {
		for( i=0; i<cntGMenu; i++ ) {
			if( strarray[1] == gMenuCode[i].toLowerCase() ) {
				if( strarray.length > 2 ) {
					// go menu 3 °°Àº Çü½ÄÀÇ ¿©·¯´Ü°è °ÅÃÄ°¡±â Ã³¸®
					for( j=2; j<strarray.length; j++ ) {
						argv += strarray[j] + " ";
					}
				
					if( gMenuHref[i].indexOf("?") == -1 ) {
						argv = "?" + argv;
					}
					
					page_move( gMenuHref[i] +  argv );
				} else {
					page_move( gMenuHref[i] );
				}
				return true;
			}
		}
	} else {
		// ¸Þ´º °Ë»ç( ¿ì¼± ¼øÀ§ 3 )
		for( i=0; i<cntMenu; i++ ) {
			if( strarray[0] == MenuCode[i].toLowerCase() && strarray[0] != "go" ) {
				// menu 3 °°Àº Çü½ÄÀÇ ¿©·¯´Ü°è °ÅÃÄ°¡±â Ã³¸®
				if( strarray.length > 1 ) {
					for( j=1; j<strarray.length; j++ ) {
						argv += strarray[j] + " ";
					}
				
					if( MenuHref[i].indexOf("?") == -1 ) {
						argv = "?" + argv;
					}
					page_move( MenuHref[i] + argv );
				} else {
					page_move( MenuHref[i] );
				}
				return true;
			}
		}
	}


	// »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î Ã³¸®±â( ¿ì¼± ¼øÀ§ 4 )
	if( user_shell_foot( strarray.length, strarray ) )
		return true;

	
	// Ãß°¡ÀûÀÎ ¸í·É Ã³¸®ÆÄÀÏ °Ë»ç( ¿ì¼± ¼øÀ§ 5 )
	if( userShellFile != "" ) {
		if( debugobj ) {
			debugobj.src = userShellFile + "?CMD=" + string;
		} else
			message( "Ãß°¡ÀûÀÎ ¸í·É Ã³¸®¸¦ ÇÒ ¼ö ¾ø½À´Ï´Ù." );
	} else {
		message( "UNKNOWN" );
	}

}

// -------------------------------
//  Ãß°¡ÀûÀÎ ¸í·É¾î ºÐ¼®ºÎºÐÀ» 
//  »ç¿ëÀÚ°¡ µû·Î Ãß°¡ÇÒ ¼ö ÀÖ´Ù.
//  - ÇÔ¼ö¸¦ ¿À¹ö¶óÀÌµùÇØ¼­ »ç¿ë
//  - ¸®ÅÏ°ªÀÌ false ÀÏ °æ¿ì
//    Àß¸øµÈ ¸í·É¾î ¿À·ù Ç¥½Ã
// -------------------------------
function user_shell( argc, argv )
{
	// NULL 
	//  - USE Overridding !!!
	return false;
}

// ¿ì¼±¼øÀ§°¡ ³·À½
function user_shell_foot( argc, argv )
{
	return false;
}

// ----------------------------------
//  ¸í·É¾î ÀÔ·Â Ã³¸® 
//  - ¿£ÅÍÅ° ÀÔ·Â½Ã cmd_check() È£Ãâ
// ----------------------------------
function cmd_keydown( e )
{
	var keyCode;
	var cmdobj;
	
	if( e.keyCode )
		keyCode = e.keyCode;
	else if( e.charCode )
		keyCode = e.charCode;
	else 
		keyCode = e.which;

	// Up Arrow
	if( keyCode == 38 ) {
		tt = get_prev_arrow();
		if( tt ) {
			cmdobj = document.getElementById( "CMDINPUT" );
			cmdobj.value = tt;
		}
	}

	// Down Arrow
	if( keyCode == 40 ) {
		tt = get_next_arrow();
		if( tt ) {
			cmdobj = document.getElementById( "CMDINPUT" );
			cmdobj.value = tt;
		}
	}
	
	if( keyCode == 13 ) {
		message("");

		cmd_check();
	
		// ÀÔ·ÂÇÑ ¸í·É¾î Áö¿ì±â
		cmdobj = document.getElementById( "CMDINPUT" );
		if( cmdobj ) {
			cmdobj.value = "";
		}
	}
	
	return true;
}

