/*INISEAL:[Nj9daJWvnkdRVpWlFeAe01shn2o%3D%0A]*/
var XGridVersion = '1.0.1.17';

function writeXGridObject(divId, strObjID, strWidth, strHeight) {
  if (strObjID==null) strObjID = 'XGridObj';
  if (strWidth==null) strWidth = '750';
  if (strHeight==null) strHeight = '510';
  var XGridDomain = document.domain;

    var ObjTag = '<OBJECT id="'+strObjID+'" name="'+strObjID+'" ';
	ObjTag = ObjTag + 'classid="clsid:3E086D34-0ED5-4A8E-BB6A-C4DF5AC4357B" ';
	//todo codebase °æ·Î ¼³Àú ¹× activex ¼³Ä¡ ¾ÈµÉ ¶§ ÀÌµ¿ ÆäÀÌÁö ¼³Á¤
    ObjTag = ObjTag + 'codebase="/resource/download/HanaXGrid.cab#version='+XGridVersion+'" ';
//	ObjTag = ObjTag + 'codebase=".WCXG.ocx#version='+XGridVersion+'" ';
//	ObjTag = ObjTag + 'onerror="" ';
	ObjTag = ObjTag + 'width='+strWidth+' height='+strHeight+' align=center hspace=0 vspace=0></OBJECT>';
    var targetDiv = document.getElementById(divId);
	targetDiv.innerHTML  = ObjTag;
	//document.write(ObjTag);
}

function installXGridObject() {
  strObjID = 'XGridObj';
  strWidth = '1';
  strHeight = '0';
  var XGridDomain = document.domain;

    var ObjTag = '<OBJECT style="display:none" id="'+strObjID+'" name="'+strObjID+'" ';
	ObjTag = ObjTag + 'classid="clsid:3E086D34-0ED5-4A8E-BB6A-C4DF5AC4357B" ';
	//todo codebase °æ·Î ¼³Àú ¹× activex ¼³Ä¡ ¾ÈµÉ ¶§ ÀÌµ¿ ÆäÀÌÁö ¼³Á¤
    ObjTag = ObjTag + 'codebase="/resource/download/HanaXGrid.cab#version='+XGridVersion+'" ';
//	ObjTag = ObjTag + 'onerror="" ';
	ObjTag = ObjTag + 'width='+strWidth+' height='+strHeight+' align=center hspace=0 vspace=0></OBJECT>';
	if ($('HANA_GRID')) {
		$('HANA_GRID').innerHTML = ObjTag;
	}
	//document.write(ObjTag);
}

function TrimLeft(str)
{
	var i;
	for(i=0;i<str.length;i++)
		if( str.charAt(i) != ' ' ) break;
	return str.substr(i, str.length-i+1);
}

function TrimRight(str)
{
	var i;
	for(i=str.length-1;i>=0;i--)
		if( str.charAt(i) != ' ' )
			break;
	return str.substr(0, i+1);
}

function Trim(str)
{
	str = TrimLeft(str);
	str = TrimRight(str);
	return str;
}

/******************************************************************************
  Purpose :     Ã¼Å©¹Ú½º¿¡ Ã¼Å©µÈ Çà¹øÈ£¸¦ ÇÏ³ª¾¿ Â÷·Ê·Î ºÒ·¯¿Â´Ù.
  Usage :     int getNextSelectedRecord(String FieldName)
  Parameter :     FieldName : Ã¼Å©¹Ú½º ÇÊµå ÀÌ¸§
  Return :     int : Çà¹øÈ£
  Comment :
 *****************************************************************************/
function getNextSelectedRecord(grid, columnname)
{
	//alert('columname : [' + columnname + ']');
	var index = grid.GetItemIndexFromCaption(columnname);
	//alert('index = '+index);
	var ni = grid.GetNextCheckedRecord( index );
	//alert('ni = ' + ni);
	return ni;
}
/******************************************************************************
  Purpose   :   Ã¼Å©¹Ú½º¿¡ Ã¼Å©µÈ RowÀÇ Çà¹øÈ£¸¦ ÇÏ³ª¾¿ Â÷·Ê·Î ºÒ·¯¿Â´Ù.
  Usage     :   int getNextSelectedRow(grid, columnname)
  Parameter :   -. grid : ±×¸®µå°´Ã¼
                -. columnname : Ã¼Å©¹Ú½º ÇÊµå ÀÌ¸§
  Return    :   int : Çà¹øÈ£
  Comment   :
 *****************************************************************************/
function getNextSelectedRow(grid, columnname)
{
	var index = grid.GetItemIndexFromCaption(columnname);
	var ni = grid.GetNextCheckedRow( index );
	return ni;
}

/******************************************************************************
 	Purpose :     Æ¯Á¤ ¼¿ÀÇ ³»¿ëÀ» ºÒ·¯¿Â´Ù.
	Usage :     String getCell(int RowIndex, String FieldName)
	Parameter :	RowIndex : ±×¸®µå¿¡¼­ÀÇ Çà¹øÈ£
	FieldName : ±×¸®µå¿¡¼­ÀÇ ÇÊµå ÀÌ¸§
	Return :     String
	Comment :
 *****************************************************************************/
function getCell(grid, row, columnname)
{
  var uTemp;
	var itemIndex = grid.GetItemIndexFromCaption(columnname);
	if ((itemIndex < 0) || (row < 0)) {
		return '';
	} else {
	  //return grid.GetValue(row, itemIndex);
	  uTemp = grid.GetValue(row, itemIndex);
	  if ( uTemp == null ) return '';
	  else                 return uTemp;
	}
}
function getCellToView(grid, row, columnname)
{
  var uTemp;
	var itemIndex = grid.GetItemIndexFromCaption(columnname);
	if((itemIndex < 0) || (row < 0)) {
		return '';
	} else {
	  uTemp = grid.GetText(row, itemIndex);
	  if ( uTemp == null ) return '';
	  else                 return uTemp;
	  //return rtnValue;
		//return grid.GetValue(row, itemIndex);
	}
}

/******************************************************************************
  Purpose :     ±×¸®µåÀÇ ÀüÃ¼Çà ¼ö¸¦ ºÒ·¯¿Â´Ù.
  Usage :     int getGridRowCount()
  Parameter :
  Return :     int : ÀüÃ¼ Çà ¼ö
  Comment :
 *****************************************************************************/
function getGridRowCount(grid)
{
	return grid.RecordCount;
}

/******************************************************************************
  Purpose :     Ã¼Å©¹Ú½º¿¡ Ã¼Å©µÈ °³¼ö¸¦ ¹ÝÈ¯ÇÑ´Ù.
  Usage :     int getSelectedCount(String FieldName)
  Parameter :     FieldName : Ã¼Å©¹Ú½º ÇÊµå ÀÌ¸§
  Return :     int : Ã¼Å©µÈ °³¼ö
  Comment :
 *****************************************************************************/
function getSelectedCount(grid, columnname)
{
	var index = grid.GetItemIndexFromCaption(columnname);
	var res = grid.GetCheckedRecordCount(index);
	return res;
}

/******************************************************************************
  Purpose :     Æ¯Á¤Çà¿¡ ³ÖÀº ¹è°æ»öÀ» ¿ø·¡»óÅÂ·Î µÇµ¹¸°´Ù.
  Usage :     void setSpecialRowBackColorDefault(int nIndex)
  Parameter :     nIndex : Çà¹øÈ£
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setSpecialRowBackColorDefault(grid, idx)
{
	if(idx >= 1) grid.SetRecordDefaultColor(idx - 1);
}

/******************************************************************************
  Purpose :     ±×¸®µåÀÇ µ¥ÀÌÅÍ¸¦ ¸ðµÎ Áö¿î´Ù.
  Usage :     void setClearGrid()
  Parameter :
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setClearGrid(grid)
{
	grid.Clear();
}

/******************************************************************************
  Purpose :     ±×¸®µåÀÇ Ã¹Çà¿¡ Ç¥½ÃµÉ Sequence No. ¸¦ ÁöÁ¤ÇÑ´Ù.
  Usage :     void setDefaultSeq(seq)
  Parameter :     seq : Ã¹ÇàÀÇ Sequence No.
  Return :     ¾øÀ½
  Comment :     Ã¹¹øÂ° ÇàÀÇ ¹øÈ£¸¸ ÁöÁ¤ÇØÁÖ¸é ¾Æ·¡ÇàµéÀº 1¾¿ ÀÚµ¿ Áõ°¡ÇÑ´Ù.
µ¥ÀÌÅÍ¸¦ insert ÇÏ±âÀü¿¡ ¼¼ÆÃÀ» ÇØÁÖ¾î¾ß ÇÑ´Ù.
 *****************************************************************************/
function setDefaultSeq(grid, start)
{
	grid.DefaultSeq = start;
}

/******************************************************************************
  Purpose :     ÇÑ Çà ÀüÃ¼¸¦ »ðÀÔÇÑ´Ù.
  Usage :     void setInsertRecord(String data)
  Parameter :     data : Å°°ªÀ» Æ÷ÇÔÇÑ ÀüÃ¼ µ¥ÀÌÅÍ, µ¥ÀÌÅÍ°£ ±¸ºÐÀÚ´Â char(1)
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setInsertRecord(grid, recordstring)
{
	//alert(recordstring);
	//setInsertRecord(xgrid, "Ã¹¹øÂ°µÎ¹øÂ°¼¼¹øÂ°³×¹øÂ°´Ù¼¸¹øÂ°¿©¼¸¹øÂ°");
	//"Ã¹¹øÂ°µÎ¹øÂ°¼¼¹øÂ°³×¹øÂ°´Ù¼¸¹øÂ°¿©¼¸¹øÂ°"
	if (recordstring.substring(recordstring.length-1) == "")	{
		recordstring = recordstring.substring(0, recordstring.length-1);
	}
	recordstring = recordstring.split("");
	//recordstring = recordstring.split(char('1'));

	//LimitCountÃ¼Å©
	//if (grid.LimitRecordCount >= 1)
  //	if (grid.LimitRecordCount < grid.RecordCount) {
  //	  alert(grid.LimitRecordCount+'°Ç ÀÌ»óÀÇ µ¥ÀÌÅÍ´Â Ã³¸®ÇÒ ¼ö ¾ø½À´Ï´Ù.');
  //	  return;
  //	}

	var RecordIndex = grid.AppendValues();
	for(var i=0;i < recordstring.length;i++)
	{
		try
		{
			if(grid.GetColumn(i).GetPropTypeName() == 'Check')
			{
				if((Trim(recordstring[i]) == 'Y') || (Trim(recordstring[i]) == 'y'))
				{
					//alert(Trim(recordstring[i])+'\ntrue');
					recordstring[i] = 'true';
				} else {
					//alert(Trim(recordstring[i])+'\nfalse');
					recordstring[i] = 'false';
				}
			}
			grid.SetValue(RecordIndex, i, Trim(recordstring[i]));
		} catch(e) {
		}
	}
	grid.SetPosition();
}

/******************************************************************************
  Purpose :     ÇÑ Çà ÀüÃ¼¸¦ ¼±ÅÃÇà ¾Æ·¡¿¡ »ðÀÔÇÑ´Ù.
  Usage :     void setInsertRecord2(Integer idx, String data)
  Parameter :   idx  : ¼±ÅÃµÈ Çà RecordIndex
                data : Å°°ªÀ» Æ÷ÇÔÇÑ ÀüÃ¼ µ¥ÀÌÅÍ, µ¥ÀÌÅÍ°£ ±¸ºÐÀÚ´Â char(1)
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setInsertRecord2(grid, idx, recordstring)
{
	//alert(recordstring);
	//setInsertRecord(xgrid, "Ã¹¹øÂ°µÎ¹øÂ°¼¼¹øÂ°³×¹øÂ°´Ù¼¸¹øÂ°¿©¼¸¹øÂ°");
	//"Ã¹¹øÂ°µÎ¹øÂ°¼¼¹øÂ°³×¹øÂ°´Ù¼¸¹øÂ°¿©¼¸¹øÂ°"
	if (recordstring.substring(recordstring.length-1) == "")	{
		recordstring = recordstring.substring(0, recordstring.length-1);
	}
	recordstring = recordstring.split("");

	//LimitCountÃ¼Å©
	//if (grid.LimitRecordCount >= 1)
  //	if (grid.LimitRecordCount < grid.RecordCount) {
  //	  alert(grid.LimitRecordCount+'°Ç ÀÌ»óÀÇ µ¥ÀÌÅÍ´Â Ã³¸®ÇÒ ¼ö ¾ø½À´Ï´Ù.');
  //	  return;
  //	}

	grid.insertValues(idx + 1);
	var RecordIndex = idx + 1;

	for(var i=0;i < recordstring.length;i++)
	{
		try
		{
			if(grid.GetColumn(i).GetPropTypeName() == 'Check')
			{
				if((Trim(recordstring[i]) == 'Y') || (Trim(recordstring[i]) == 'y'))
				{
					//alert(Trim(recordstring[i])+'\ntrue');
					recordstring[i] = 'true';
				} else {
					//alert(Trim(recordstring[i])+'\nfalse');
					recordstring[i] = 'false';
				}
			}
			grid.SetValue(RecordIndex, i, Trim(recordstring[i]));
		} catch(e) {
		}
	}
	grid.SetPosition();
}

/******************************************************************************
  Purpose :     Æ¯Á¤Çà¿¡ ¹è°æ»öÀ» ³Ö´Â´Ù.
  Usage :     void setSpecialRowBackColor(String rgb, int nIndex)
  Parameter :	rgb : rgb °ªÀ» ¿¹Á¦¿Í °°ÀÌ ½ºÆ®¸µ ÇüÅÂ·Î ³Ö´Â´Ù.
				nIndex : Çà¹øÈ£
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setSpecialRowBackColor(grid, color, index)
{
	try{
		eval("color = grid.RgbColor(" + color + ");");
		grid.SetRecordColor(index - 1, color);
	}catch(e){

	}
}

/******************************************************************************
  Purpose :     Ã¹¹øÂ° ÇàÀ¸·Î ÀÌµ¿
  Usage :     void setMoveFirstRecord()
  Parameter :
  Return :     ¾øÀ½
  Comment :     ÇÁ·Î±×·¥»ó¿¡¼­ index ¸¦ ÀÌµ¿ÇÒ»Ó °ªÀ» ¹ÝÈ¯ÇÏÁö´Â ¾Ê´Â´Ù.
 *****************************************************************************/
function setMoveFirstRecord(grid)
{
	grid.ResetCheckedRecordIndex();
}

/******************************************************************************
  Purpose		:
  Usage			:     void getSubTotalOneColumnCaption(grid, columnname, caption, halign)
  Parameter	:
  Return		:
  Comment		:
 *****************************************************************************/
function getSubTotalOneColumnCaption(grid, columnname, caption, halign){
	var ColIdx = grid.GetItemIndexFromCaption( columnname );
	if(ColIdx < 0) return;
	var ColObj = grid.GetColumn(ColIdx );
	//alert(ColObj.GetPropTypeName);
	//var PropObj = ColObj.GetProperties();

  //alert(PropObj.GetPropTypeName);
	if(halign  == undefined) {
	  var PropObj = ColObj.GetProperties();
		ColObj.FooterAlignHorz = PropObj.AlignHorz;
	} else {
		ColObj.FooterAlignHorz = halign;
	}

	ColObj.FooterKind = fkCount;
	ColObj.FooterFormat = '"'+caption+'"';
}
/******************************************************************************
  Purpose		:
  Usage			:     void getSubTotalOneColumnKind(grid, columnname, akind, halign)
  Parameter	:
  Return		:
  Comment		:
 *****************************************************************************/
function getSubTotalOneColumnKind(grid, columnname, akind, adisplayformat, halign){
	if(akind == undefined) return;

	var ColIdx = grid.GetItemIndexFromCaption( columnname );
	if(ColIdx < 0) return;
	var ColObj = grid.GetColumn( ColIdx );
	//var PropObj = ColObj.GetProperties();

	if(halign  == undefined) {
	  var PropObj = ColObj.GetProperties();
	  ColObj.FooterAlignHorz = PropObj.AlignHorz;
	} else {
	  ColObj.FooterAlignHorz = halign;
	}

	if(adisplayformat != undefined)	{
	  ColObj.FooterFormat = adisplayformat;
	} else {
		if((ColObj.GetPropTypeName() == 'Currency') && (akind != fkCount)) {
		  var PropObj = ColObj.GetProperties();
			ColObj.FooterFormat = PropObj.DisplayFormat;
		}
	}

	ColObj.FooterKind = akind;
}
/******************************************************************************
  Purpose :     Æ¯Á¤ ÄÃ·³ÀÇ ÇÕ°è¸¦ °è»êÇÕ´Ï´Ù.
  Usage :     void getSubTotalOneColumn(String strItem)
  Parameter :     strItem : ÇÕ°è¸¦ °è»êÇÒ ÇÊµå ÀÌ¸§
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function getSubTotalOneColumn(grid, columnname, columnname2){
	// Æ¯Á¤ ÄÃ·³ÀÇ ÇÕ°è¸¦ ±¸ÇÕ´Ï´Ù.
	var ColIdx = grid.GetItemIndexFromCaption( columnname );
	if(ColIdx < 0) return;
	var ColObj = grid.GetColumn( ColIdx );
	var PropObj = ColObj.GetProperties();

	if( (ColObj.ValueType == 'Currency')
		|| (ColObj.ValueType == 'Float')
		|| (ColObj.ValueType == 'Integer')
		|| (ColObj.ValueType == 'LargeInt')
		|| (ColObj.ValueType == 'Smallint')
		//|| (ColObj.ValueType == 'Variant')
	) {
		ColObj.FooterKind = fkSum;
		if( PropObj != null ){
			ColObj.FooterAlignHorz = PropObj.AlignHorz;
			if( ColObj.GetPropTypeName() == 'Currency' )
				ColObj.FooterFormat = PropObj.DisplayFormat;
		}

		grid.Footer = true;

		if(columnname2 != undefined){
			var ColIdx = grid.GetItemIndexFromCaption( columnname2 );
			//alert( 'ColIdx:' + ColIdx );
			var ColObj = grid.GetColumn( ColIdx );
			//alert( 'ColObj:' + ColObj );
			ColObj.FooterKind = fkCount;
			ColObj.FooterFormat = 'ÇÕ°è';
		}else{
			for(i=0;i<ColIdx;i++){
				ColObj = grid.GetColumn( i );
				if(ColObj.Visible && (ColObj.GetPropTypeName() != 'Check'))
				{
					ColObj.FooterKind = fkCount;
					ColObj.FooterFormat = 'ÇÕ°è';
					var PropObj = ColObj.GetProperties();
					if( PropObj != null ){
						ColObj.FooterAlignHorz = PropObj.AlignHorz;
					}
					break;
				}
			}
		}
	}
}

/******************************************************************************
 *****************************************************************************/
// ¼±ÅÃµÈ Ã¼Å©¹Ú½ºÀÇ Å°°ª °¡Á®¿À±â
function makeHiddenData( frm, grid, columnname )
{
	// ¹Ì½ÉÂ½´Ù
	// varÀ» »ç¿ëÇÏ¿© º¯¼ö¼±¾ðÀ» ÇÏÁö ¾ÊÀ¸¸é Àü¿ªº¯¼ö·Î ÀâÈ÷¹Ç·Î ¹Ýµå½Ã localº¯¼ö¸¦ ¼±¾ðÇÒ¶§´Â varÀ» »ç¿ëÇÒ °Í
	var idx = -1;
	//obj.setMoveFirstRecord();
	grid.ResetCheckedRecordIndex();

	//while((idx = obj.getNextSelectedRecord(field)) > -1) {
	while((idx = getNextSelectedRecord(grid ,field)) > -1) {
		//get2post(frm, obj.getCell(idx,"Å°°ª"));
		get2post(frm, getCell(grid, idx, "Å°°ª"));
	}
}

/******************************************************************************
 *****************************************************************************/
function makeHiddenData1( frm, grid, columnname, columnname2)
{
	// ¹Ì½ÉÂ½´Ù
	// varÀ» »ç¿ëÇÏ¿© º¯¼ö¼±¾ðÀ» ÇÏÁö ¾ÊÀ¸¸é Àü¿ªº¯¼ö·Î ÀâÈ÷¹Ç·Î ¹Ýµå½Ã localº¯¼ö¸¦ ¼±¾ðÇÒ¶§´Â varÀ» »ç¿ëÇÒ °Í
	var idx = -1;

	//obj.setMoveFirstRecord();
	grid.ResetCheckedRecordIndex();

	//while((idx = obj.getNextSelectedRecord(field)) > -1) {
	while((idx = getNextSelectedRecord(grid ,field)) > -1) {
		//get2post(frm, obj.getCell(idx,keyvalue));
		get2post(frm, getCell(grid, idx, keyvalue));
	}
}

/******************************************************************************
 *****************************************************************************/
function makeHiddenData2( frm, grid, columnname)
{
	// ¹Ì½ÉÂ½´Ù
	var idx = -1;
	grid.ResetCheckedRecordIndex();
	//for (idx = -1; idx<=obj.getGridRowCount() ; idx++) {
	for (idx = -1; idx<=grid.RecordCount ; idx++) {
		get2post(frm, getCell(grid, idx, keyvalue));
	}
}

/******************************************************************************
  Purpose :     Ã¼Å©¹Ú½º ÀüÃ¼¸¦ Ã¼Å©µÈ »óÅÂ·Î ¹Ù²Û´Ù.
  Usage :     void setSelectedAll(String FieldName)
  Parameter :     FieldName : Ã¼Å©¹Ú½º ÇÊµå ÀÌ¸§
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setSelectedAll(grid, columnname)
{
	var ColumnObj, PropObj, idx, i;
	if(grid.RecordCount > 0)
	{
		idx = grid.GetItemIndexFromCaption(columnname);
		if( (idx >= 0) && (idx < grid.ColumnCount) )
		{
			ColumnObj = grid.GetColumn( idx );
			if( ColumnObj.GetPropTypeName() == 'Check' )
			{
				grid.BeginUpdate();
				try {
					for(i=0;i<grid.RecordCount;i++)
						grid.SetValue(i, idx, true);
				} finally {
					grid.EndUpdate();
				}
			}
		}
	}
}

/******************************************************************************
  Purpose :     Ã¼Å©¹Ú½º ÀüÃ¼¸¦ Ã¼Å©µÇÁö ¾ÊÀº »óÅÂ·Î ¹Ù²Û´Ù.
  Usage :     void setUnSelectedAll(String FieldName)
  Parameter :     FieldName : ÇÊµå ÀÌ¸§
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setUnSelectedAll(grid, columnname)
{
	var ColumnObj, PropObj, idx, i;
	if(grid.RecordCount > 0)
	{
		idx = grid.GetItemIndexFromCaption(columnname);
		if( (idx >= 0) && (idx < grid.ColumnCount) )
		{
			ColumnObj = grid.GetColumn( idx );
			if( ColumnObj.GetPropTypeName() == 'Check' )
			{
				grid.BeginUpdate();
				try {
					for(i=0;i<grid.RecordCount;i++)
						grid.SetValue(i, idx, false);
				} finally {
					grid.EndUpdate();
				}
			}
		}
	}
}

/******************************************************************************
  Purpose :     Æ¯Á¤ÇàÀ» ±×¸®µåÀÇ Á¦ÀÏ À§ÂÊ¿¡ Ç¥½ÃÇÑ´Ù.
  Usage :     void setShowSelectedRow(int nIndex)
  Parameter :     nIndex : Çà ¹øÈ£
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setShowSelectedRow(grid, index)
{
	grid.SetTopRecordIndex(index - grid.DefaultSeq);
}

/******************************************************************************
  Purpose :     ¾ÖÇÃ¸´È­¸é ÀüÃ¼¸¦ ºñÈ°¼ºÈ­ ½ÃÅ²´Ù.
  Usage :     boolean setLock()
  Parameter :
  Return :     boolean : true
  Comment :     ¸Þ¼Òµå°¡ ½ÇÇàµÈÈÄ true °ªÀ» ¹ÝÈ¯ÇÑ´Ù.
 *****************************************************************************/
function setLock(grid)
{
	grid.GridEnabled = false;
}

/******************************************************************************
  Purpose :     ¾ÖÇÃ¸´È­¸é ÀüÃ¼¸¦ È°¼ºÈ­ ½ÃÅ²´Ù.
  Usage :     boolean setUnLock()
  Parameter :
  Return :     boolean : false
  Comment :     ¸Þ¼Òµå°¡ ½ÇÇàµÈÈÄ false °ªÀ» ¹ÝÈ¯ÇÑ´Ù.
 *****************************************************************************/
function setUnLock(grid)
{
	grid.GridEnabled = true;
}

/******************************************************************************
  Purpose :     ÇÑ Çà ÀüÃ¼¸¦ »èÁ¦ÇÑ´Ù.
  Usage :     void setDeleteRecord(String key)
  Parameter :     key : µÎ¹øÂ° ÄÃ·³¿¡ ¼û°Ü³õÀº Å°°ª
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setDeleteRecord(grid, keyidx)
{
	var index = grid.GetItemIndexFromCaption('Å°°ª');
	if( index >= 0 ) {
		var RecordIndex = grid.SearchRecord(index, keyidx);
		if( RecordIndex >= 0 ) grid.DeleteRecord( RecordIndex );
	}
}

/******************************************************************************
 *****************************************************************************/
function afterInsertData(grid )
{
	//TODO:
}

/******************************************************************************
 *****************************************************************************/
function afterTrans(grid )
{
	//TODO:
}

/******************************************************************************
 *****************************************************************************/
function gotoNextPage(grid )
{
	//TODO:
}

/******************************************************************************
 *****************************************************************************/
function receiveDetailData(grid, frm_value)
{
	//TODO:
}

/******************************************************************************
 *****************************************************************************/
function receiveSettingData(grid, envStr)
{
	//TODO:
}

/******************************************************************************
 *****************************************************************************/
function receiveSumData(grid, frm_value)
{
	//TODO: ?
}

/******************************************************************************
 *****************************************************************************/
function setMsgCode(grid, code)
{
	//TODO: ?
}

/******************************************************************************
 *****************************************************************************/
function setPrintConditionText(grid, subtitle)
{
	/*
		var condition = "<b>[ °Ë»öÁ¶°Ç ]</b>" + ""
			 + "   * ÀÌÃ¼ÀÏÀÚ : " + startDate + " ~ " + endDate + ""
			 + "   * °èÁÂ¹øÈ£ : " + document.frm.acctNo[document.frm.acctNo.selectedIndex].text + ""
			 + "   * °Å·¡±¸ºÐ : " + document.frm.tranType[document.frm.tranType.selectedIndex].text + "";
			//+ " "
			//+ "<b>¼º¸í : " + document.frm.acctNo.value+ ""
			//+ "¾îÀ½ : " + document.frm.tranType.value+ "</b>";
		//grid.GridName =
		//grid.BankName =
		//grid.PrintConditionTime =
	*/
	try {
		subtitle = subtitle.split('');
		subtitle = subtitle.join('\n')
		grid.SearchCondition = subtitle;
	} catch(e) {
	}
}

/******************************************************************************
  Purpose :     ÇÑ Çà ÀüÃ¼¸¦ ¼öÁ¤ÇÑ´Ù.
  Usage :     void setUpdateRecord(String data)
  Parameter :     data : Å°°ªÀ» Æ÷ÇÔÇÑ ÀüÃ¼ µ¥ÀÌÅÍ ÀÌ°í, µ¥ÀÌÅÍ°£ ±¸ºÐÀÚ´Â char(1) ÀÌ´Ù.
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setUpdateRecord(grid, idx, recordstring)
{
	//TODO: ½ºÅ©¸³Æ® ±¸Çö
	if (recordstring.substring(recordstring.length-1) == "")	{
		recordstring = recordstring.substring(0, recordstring.length-1);
	}
	recordstring = recordstring.split("");

	var RecordIndex = idx;
	for(var i=0;i < recordstring.length;i++)
	{
		try {
			if(grid.GetColumn(i).GetPropTypeName() == 'Check')
			{
				if((Trim(recordstring[i]) == 'Y') || (Trim(recordstring[i]) == 'y'))
				{
					//alert(Trim(recordstring[i])+'\ntrue');
					recordstring[i] = 'true';
				} else {
					//alert(Trim(recordstring[i])+'\nfalse');
					recordstring[i] = 'false';
				}
			}
			grid.SetValue(RecordIndex, i, Trim(recordstring[i]));
		} catch(e) {
		}
	}
}

/******************************************************************************
  Purpose :     SearchRecord
  Usage :     void setSearchRecord(String Continue, String Expression)
  Parameter :	Continue : ÀüÃ¼Á¶È¸½Ã´Â "N" °è¼ÓÁ¶È¸½Ã´Â "Y"
				Expression : Á¶È¸ÇÒ Á¶°Ç. ¼­ºí¸´À¸·Î ±×´ë·Î ³Ñ¾î°¨.
  Return :     ¾øÀ½
  Comment :     ¼­ºí¸´À» »ç¿ëÇÑ ³»¿ªÁ¶È¸
 *****************************************************************************/
function setSearchRecord(grid, AContinue, Expression)
{
	//TODO: ±â´É ºÐ¼®¿ä. ±â´É Ãß°¡ÇØ¾ßÇÔ.
}

/******************************************************************************
  Purpose :     ¼±ÅÃµÈ ÇàÀÇ Å°°ªÀ» ºÒ·¯¿Â´Ù.
  Usage :     String getSelectedRecord()
  Parameter :
  Return :     String : Å°°ª
  Comment :     Å°°ªÀº µÎ¹øÂ° ÄÃ·³À¸·Î½á È­¸é¿¡´Â º¸ÀÌÁö ¾ÊÀ¸³ª °ªÀº ÀúÀåµÇ¾îÀÖ´Ù.
 *****************************************************************************/
function getSelectedRecord(grid)
{
	//return grid.FocusedRecordIndex;
	var uTemp;
	if (grid.FocusedRecordIndex < 0) {
	  return "FALSE";
	} else {
	  uTemp = grid.GetValue(grid.FocusedRecordIndex, 0);
	  if (uTemp == null) return '';
	  else               return uTemp;
	}
}

/******************************************************************************
  Purpose   :   ¼±ÅÃµÈ ÇàÀÇ Å°°ªÀ» ºÒ·¯¿Â´Ù.
  Usage     :   String getSelectedRow(grid)
  Parameter :
  Return    :   ¼±ÅÃµÈ ÇàÀÇ ¹øÈ£
  Comment   :
 *****************************************************************************/
function getSelectedRow(grid)
{
	return grid.FocusedRecordIndex;
}

/******************************************************************************
  Purpose :     ¼Ò°è¸¦ °è»êÇØ¼­ º¸¿©ÁØ´Ù.
  Usage :     void getSubTotal(String sItem, String sGroup)
  Parameter :	sItem : ÇÕ°è¸¦ °è»êÇÒ ÄÃ·³. ¿©·¯ÄÃ·³ ÁöÁ¤½Ã ±¸ºÐÀÚ´Â char(1)
				sGroup : ÇÕ°è¸¦ °è»êÇÏ±âÀ§ÇÑ ±âÁØÀÌ µÇ´Â ÄÃ·³. ¿©·¯ÄÃ·³ ÁöÁ¤½Ã ±¸ºÐÀÚ´Â char(1)
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function getSubTotal(grid, sItem, sGroup)
{
	// ¼Ò°è¸¦ °è»êÇÒ ÄÃ·³ ¼³Á¤
	if(sItem.substring(sItem.length-1) == "")
		sItem = sItem.substring(0, sItem.length-1);

	var format;
	sItem = sItem.split("");
	for(var i=0;i < sItem.length;i++) {
		try {
			format = '';
			var ColIdx = grid.GetItemIndexFromCaption( sItem[i] );
			if(ColIdx < 0) continue;
			var ColObj = grid.GetColumn( ColIdx );
			var PropObj = ColObj.GetProperties();
			if( PropObj != null ) {
				ColObj.FooterAlignHorz = PropObj.AlignHorz;
				if( ColObj.GetPropTypeName() == 'Currency' )
				{
					format = PropObj.DisplayFormat;
				}
			}

			if( (ColObj.ValueType == 'Currency')
				|| (ColObj.ValueType == 'Float')
				|| (ColObj.ValueType == 'Integer')
				|| (ColObj.ValueType == 'LargeInt')
				|| (ColObj.ValueType == 'Smallint')
			) {
				grid.SetSubSummary(ColIdx, fkSum, format, true);
			}
		} catch(e) {

		}
	}

	//±×·ì ÁöÁ¤
	if(sGroup.substring(sGroup.length-1) == "")
		sGroup = sGroup.substring(0, sGroup.length-1);

	sGroup = sGroup.split("");
	for(var i=0;i < sGroup.length;i++) {
		var ColIdx = grid.GetItemIndexFromCaption( sGroup[i] );
		if(ColIdx < 0) continue;
		grid.AddGroupItem(ColIdx);
	}
}

/******************************************************************************
  Purpose :     ÆÐ³ÎÀ» ¹Ù²Û´Ù.
  Usage :     void setChangePanel(String PanelName)
  Parameter :	SEARCH ÀÏ °æ¿ì´Â ¸ñ·Ï ÆÐ³Î
				SAVE ÀÏ °æ¿ì´Â ÀúÀå ÆÐ³Î
				PRINT ÀÏ °æ¿ì´Â ÀÎ¼â ÆÐ³Î
  Return :     ¾øÀ½
  Comment :
	document.Main.setChangePanel('PRINT');
	document.Main.setChangePanel('SAVE');
 *****************************************************************************/
 function setChangePanel(grid, strItem)
{
	var nPanel=1;
	if (strItem == "SEARCH") nPanel=1;
	if (strItem == "PRINT") nPanel=2;
	if (strItem == "SAVE") nPanel=3;

	switch(nPanel){
		case 1:
			;
			break;
		case 2:
			grid.ShowPrint();
			break;
		case 3:
			grid.ShowSaveForm();
			break;
	}
}

/******************************************************************************
	// ¾ÖÇÃ¸´ ±×¸®µå¿¡ ¼­¹ö³¯Â¥, ½Ã°£ ¼ÂÆÃ
	var server_mon = Number(datToday.getMonth()+1);
	if (server_mon < 10) server_mon = "0" + server_mon;
	var server_day = Number(datToday.getDate());
	if (server_day < 10) server_day = "0" + server_day;
	var _SERVER_DATE = datToday.getFullYear() + "/" +  server_mon + "/" + server_day + " " + datToday.getHours() + ":" + datToday.getMinutes() + ":" + datToday.getSeconds();
	document.Main.setPrintConditionTime(_SERVER_DATE);
 *****************************************************************************/
function setPrintConditionTime(grid, ServerDate)
{
	grid.PrintConditionTime = ServerDate;
}

/******************************************************************************
  Purpose :     º¸¿©Áø ¼Ò°è¸¦ ¾ø¾Ö°í ¿ø·¡ µ¥ÀÌÅÍ¸¸ º¸¿©ÁØ´Ù.
  Usage :     void setDefaultGrid()
  Parameter :
  Return :     ¾øÀ½
  Comment :
 *****************************************************************************/
function setDefaultGrid(grid)
{
	//TODO: ½ºÅ©¸³Æ® ±¸Çö
}


/******************************************************************************
 *****************************************************************************/
function setDefaultCursor(grid)
{
	//TODO: ±¸ÇöÇØ¾ßÇÔ
}

/******************************************************************************
function setSpecialCellFontColor(grid, color, index, columnname)
 *****************************************************************************/
function setSpecialCellFontColor(grid, color, index, columnname)
{
	if(index <= 0) return;
	var ColumnIndex = grid.GetItemIndexFromCaption( columnname );
	if(ColumnIndex >= 0){
		eval("color = grid.RgbColor(" + color + ");");
		grid.SetCellStyleTextColor(index - 1, ColumnIndex, color);
	}
}

/******************************************************************************
function setSpecialCellFontColorDefault(grid, idx, columnname)
 *****************************************************************************/
function setSpecialCellFontColorDefault(grid, idx, columnname)
{
	if(idx <= 0) return;
	//alert(columnname);
	var ColumnIndex = grid.GetItemIndexFromCaption( columnname );
	//alert(ColumnIndex);
	if(ColumnIndex >= 0){
		if(idx <= grid.RecordCount)
		grid.SetCellStyleTextColorDefault(idx - 1, ColumnIndex);
	}
}

function SetColumnMoving(grid, AColIndex, AMoving){
	if (grid.ColumnCount > AColIndex){
		var Column = grid.GetColumn(AColIndex);
		Column.Moving = AMoving;
	}
}

/******************************************************************************
  Purpose   :   ÇÕ°è Ä®·³ÀÇ ÇÕ°è Á¤º¸¸¦ ¹ÝÈ¯ÇÑ´Ù.
  Usage     :   void getSummeryColumnData(grid, columnname)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
				        -. columnname :ÇÕ°è°¡ Á¸ÀçÇÏ´Â Ä®·³¸í
  Return    :   ÇÕ°èÁ¤º¸
  Comment   :
 *****************************************************************************/
function getSummeryColumnData(grid, columnname)
{
  var rtnValue = '';
  var ColumnIndex = grid.GetItemIndexFromCaption( columnname );
  if (ColumnIndex >= 0)
  {
    var SummeryIndex = grid.GetSummeryIndexFromCaption(columnname);
    if (SummeryIndex >= 0)
      rtnValue = grid.GetSummeryData(ColumnIndex, SummeryIndex);
  }
  return rtnValue;
}

/******************************************************************************
  Purpose   :   columnsÇ×¸ñµéÀÇ È­¸é¿¡ º¸ÀÌ´Â Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Usage     :   void getTotalRowsData(grid, columns, columnGubun, rowsGubun)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
				        -. columns : µ¥ÀÌÅÍ¸¦ °¡Á®¿Ã Ä®·³¸í ¸®½ºÆ®
				        -. columnGubun : Ä®·³°£ ±¸ºÐÀÚ
				        -. rowsGubun : Çà±¸ºÐÀÚ
  Return    :   columnsÇ×¸ñµéÀÇ È­¸é¿¡ º¸ÀÌ´Â Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Comment   :
 *****************************************************************************/
function getTotalRowsData(grid, columns, columnGubun, rowsGubun)
{
  var rtnValue = '';
  var i, j;
  var ColumnIndex = -1;
  var RecordIndex = -1;
  var uTemp;

  if (columns.substring(columns.length-1) == "|")
		columns = columns.substring(0, columns.length-1);
	columns = columns.split("|");

	grid.BeginUpdate();
	try
	{
    for (i=0; i<=grid.RowCount-1; i++)
    {
      RecordIndex = grid.GetRecordFromRow(i);
      for(j=0; j<columns.length; j++)
      {
    		ColumnIndex = grid.GetItemIndexFromCaption( columns[j] );
    		if (ColumnIndex >= 0)
    		{
    		  uTemp = grid.GetValue(RecordIndex, ColumnIndex);
    		  if (uTemp == null) rtnValue = rtnValue + '' + columnGubun;
    		  else               rtnValue = rtnValue + uTemp + columnGubun;
    		}
    	}
    	rtnValue = rtnValue + rowsGubun;
    }
  } finally {
    grid.EndUpdate();
  }
  return rtnValue;
}

/******************************************************************************
  Purpose   :   columnsÇ×¸ñµéÀÇ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Usage     :   void getTotalRecordsData(grid, columns, columnGubun, recordsGubun)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
				        -. columns : µ¥ÀÌÅÍ¸¦ °¡Á®¿Ã Ä®·³¸í ¸®½ºÆ®
				        -. columnGubun : Ä®·³°£ ±¸ºÐÀÚ
				        -. rowsGubun : record±¸ºÐÀÚ
  Return    :   columnsÇ×¸ñµéÀÇ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Comment   :
 *****************************************************************************/
function getTotalRecordsData(grid, columns, columnGubun, recordsGubun)
{
  var rtnValue = '';
  var i, j;
  var ColumnIndex = -1;
  var uTemp;

  if (columns.substring(columns.length-1) == "|")
		columns = columns.substring(0, columns.length-1);
	columns = columns.split("|");

	grid.BeginUpdate();
	try
	{
    for (i=0; i<=grid.RecordCount-1; i++)
    {
      for(j=0; j<columns.length; j++)
      {
    		ColumnIndex = grid.GetItemIndexFromCaption( columns[j] );
    		if (ColumnIndex >= 0)
    		{
    		  uTemp = grid.GetValue(i, ColumnIndex);
    		  if (uTemp == null) rtnValue = rtnValue + '' + columnGubun;
    		  else               rtnValue = rtnValue + uTemp + columnGubun;
    		}
    	}
    	rtnValue = rtnValue + recordsGubun;
    }
  } finally {
    grid.EndUpdate();
  }
  return rtnValue;
}

/******************************************************************************
  Purpose   :   columnsÇ×¸ñµéÀÇ È­¸é¿¡ º¸ÀÌ´Â Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Usage     :   void getSelectedRowsData(grid, baseColumn, columns, columnGubun, rowsGubun)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
                -. baseColumn : ±âÁØÀÌ µÇ´Â CheckColumn¸í
				        -. columns : µ¥ÀÌÅÍ¸¦ °¡Á®¿Ã Ä®·³¸í ¸®½ºÆ®
				        -. columnGubun : Ä®·³°£ ±¸ºÐÀÚ
				        -. rowsGubun : record±¸ºÐÀÚ
  Return    :   columnsÇ×¸ñµéÀÇ È­¸é¿¡ º¸ÀÌ´Â Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Comment   :
 *****************************************************************************/
function getSelectedRowsData(grid, baseColumn, columns, columnGubun, rowsGubun)
{
  var rtnValue = '';
  var i, j;
  var ColumnIndex = -1;
  var idx = -1;
  var RecordIndex = -1;
  var uTemp;

  if (columns.substring(columns.length-1) == "|")	{
		columns = columns.substring(0, columns.length-1);
	}
	columns = columns.split("|");

	grid.BeginUpdate();
	try
	{
    grid.ResetCheckedRowIndex();
    while ( (idx = getNextSelectedRow(grid, baseColumn) ) > -1 )
    {
      RecordIndex = grid.GetRecordFromRow(idx);
      for(j=0; j<columns.length; j++)
      {
    		ColumnIndex = grid.GetItemIndexFromCaption( columns[j] );
    		if (ColumnIndex >= 0)
    		{
    		  uTemp = grid.GetValue(RecordIndex, ColumnIndex);
    		  if ( uTemp == null ) rtnValue = rtnValue + '' + columnGubun;
    		  else                 rtnValue = rtnValue + uTemp + columnGubun;
    		}
    	}
    	rtnValue = rtnValue + rowsGubun;
    }
  } finally {
    grid.EndUpdate();
  }

  return rtnValue;
}

/******************************************************************************
  Purpose   :   columnsÇ×¸ñµéÀÇ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Usage     :   void getSelectedRecordsData(grid, baseColumn, columns, columnGubun, recordsGubun)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
				        -. baseColumn : ±âÁØÀÌ µÇ´Â CheckColumn¸í
				        -. columns : µ¥ÀÌÅÍ¸¦ °¡Á®¿Ã Ä®·³¸í ¸®½ºÆ®
				        -. columnGubun : Ä®·³°£ ±¸ºÐÀÚ
				        -. recordsGubun : record±¸ºÐÀÚ
  Return    :   columnsÇ×¸ñµéÀÇ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
  Comment   :
 *****************************************************************************/
function getSelectedRecordsData(grid, baseColumn, columns, columnGubun, recordsGubun)
{
  var rtnValue = '';
  var i, j;
  var ColumnIndex = -1;
  var idx = -1;
  var uTemp;

  if (columns.substring(columns.length-1) == "|")
		columns = columns.substring(0, columns.length-1);
	columns = columns.split("|");

  grid.BeginUpdate();
  try
  {
    grid.ResetCheckedRecordIndex();
    while ( (idx = getNextSelectedRecord(grid, baseColumn) ) > -1 )
    {
      for(j=0; j<columns.length; j++)
      {
    		ColumnIndex = grid.GetItemIndexFromCaption( columns[j] );
    		if (ColumnIndex >= 0)
    		{
    		  uTemp = grid.GetValue(idx, ColumnIndex);
    		  if ( uTemp == null ) rtnValue = rtnValue + '' + columnGubun;
    		  else                 rtnValue = rtnValue + uTemp + columnGubun;
    		}
    	}
    	rtnValue = rtnValue + recordsGubun;
    }
  } finally {
    grid.EndUpdate();
  }

  return rtnValue;
}

/******************************************************************************
  Purpose   :   ÀüÃ¼ÇàÀ» ³Ñ±æ¶§ ÇÊ¼öÀÔ·Â°ª Ã¼Å©
  Usage     :   void CheckTotalRequiredColumn(grid)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
  Return    :   ÇÊ¼öÀÔ·Â°ªÀ» Ã¼Å©ÇÑ Çà¹øÈ£¿Í ¿­¼ø¹ø¿¡ ´ëÇÑ ¾Ë¸²Ã¢À» ¶ç¿ì°í true/false°ªÀ» ¸®ÅÏÇÕ´Ï´Ù.
  Comment   :
 *****************************************************************************/
function CheckTotalRequiredColumn(grid)
{
  var j;
  var ColumnIndex = -1;
  var idx = -1;
  var rowIdx = 0;
  var ColumnName = '';
  var uTemp;

  grid.BeginUpdate();
  try
  {
    for (i=0; i<=grid.RowCount-1; i++)
    {
      idx = grid.GetRecordFromRow(i);
      for(j=0; j<grid.ColumnCount; j++)
      {
        ColumnName = grid.GetColumn(j).Caption;
    		if (grid.GetRequiredColumnYN(j)==true)
    		{
    		  uTemp = grid.GetValue(idx, j);
      		if ( (uTemp==null) || (uTemp=='') || (uTemp==0) )
      		{
      		  rowIdx = rowIdx+idx + 1;
      		  alert(rowIdx+'Çà '+j+'¿­('+ColumnName+')ÀÇ µ¥ÀÌÅÍ´Â ÇÊ¼ö ÀÔ·Â°ªÀÔ´Ï´Ù.'+'\r\nÈ®ÀÎ ÈÄ ´Ù½Ã Ã³¸®ÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.');
      		  grid.FocusedRecordIndex = idx;
      		  grid.FocusedItemIndex = j;
      		  grid.SetFocus();
      		  return false;
      	  }
      	}
    	}
    }
  } finally {
    grid.EndUpdate();
  }
}

/******************************************************************************
  Purpose   :   ¼±ÅÃµÈ ÇàÀ» ³Ñ±æ¶§ ÇÊ¼öÀÔ·Â°ª Ã¼Å©
  Usage     :   void CheckTotalRequiredColumn(grid)
  Parameter :	  -. grid : ±×¸®µå°´Ã¼
                -. baseColumn : Ã¼Å©¹Ú½º Ä®·³¸í
  Return    :   ÇÊ¼öÀÔ·Â°ªÀ» Ã¼Å©ÇÑ Çà¹øÈ£¿Í ¿­¼ø¹ø¿¡ ´ëÇÑ ¾Ë¸²Ã¢À» ¶ç¿ì°í true/false°ªÀ» ¸®ÅÏÇÕ´Ï´Ù.
  Comment   :
 *****************************************************************************/
function CheckSelectedRequiredColumn(grid, baseColumn)
{
  var j;
  var ColumnIndex = -1;
  var idx = -1;
  var rowIdx = 0;
  var ColumnName = '';
  var uTemp;

  grid.BeginUpdate();
  try
  {
    grid.ResetCheckedRecordIndex();
    while ( (idx = getNextSelectedRecord(grid, baseColumn) ) > -1 )
    {
      RecordIndex = grid.GetRecordFromRow(idx);
      for(j=0; j<grid.ColumnCount; j++)
      {
        ColumnName = grid.GetColumn(j).Caption;
        //alert(ColumnName);
        //alert(grid.GetValue(idx, j));
        //alert(rowIdx+'Çà '+j+'¿­('+ColumnName+')ÀÇ µ¥ÀÌÅÍ´Â ÇÊ¼ö ÀÔ·Â°ªÀÔ´Ï´Ù.'+'\r\nÈ®ÀÎ ÈÄ ´Ù½Ã Ã³¸®ÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.');
        if (grid.GetRequiredColumnYN(j)==true)
        {
          uTemp = grid.GetValue(idx, j);
      		if ( (uTemp==null) || (uTemp=='') || (uTemp==0) )
      		{
      		  rowIdx = rowIdx+idx + 1;
      		  alert(rowIdx+'Çà '+j+'¿­('+ColumnName+')ÀÇ µ¥ÀÌÅÍ´Â ÇÊ¼ö ÀÔ·Â°ªÀÔ´Ï´Ù.'+'\r\nÈ®ÀÎ ÈÄ ´Ù½Ã Ã³¸®ÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.');
      		  grid.FocusedRecordIndex = idx;
      		  grid.FocusedItemIndex = j;
      		  grid.SetFocus();
      		  return false;
      	  }
      	}
    	}
    }
  } finally {
    grid.EndUpdate();
  }
}

/******************************************************************************
  Purpose   : ±×¸®µåÀÇ Æ¯Á¤ CellÀÇ Color¸¦ Á¶°Ç¿¡ µû¶ó ´Ù¸£°Ô Ç¥ÇöÇÑ´Ù.
  Usage     : void setConditionSpecialCellTextColor(grid, color, condition, conditionColumnName, columnname)
  Parameter : grid                : ±×¸®µå°´Ã¼
              color               : º¯°æÇÒ Ä®¶ó°ª(RGB)
              condition           : º¯°æÇÒ Á¶°Ç°ª
              conditionColumnName : º¯°æ´ë»ó Ä®·³¸í
              columnname          : Ä®¶ó°¡ º¯°æµÇ¾î¾ß ÇÏ´Â Ä®·³¸í
  Return    : ¾øÀ½
  Comment   :
******************************************************************************/
function setConditionSpecialCellTextColor(grid, color, condition, conditionColumnName, columnname)
{
  grid.BeginUpdate();
  try
  {
    var ColumnIndex = grid.GetItemIndexFromCaption( columnname );
    var ConditionColumnIndex = grid.GetItemIndexFromCaption(conditionColumnName);

    if (ColumnIndex >= 0)
    {
      eval("color = grid.RgbColor(" + color + ");");
      for (i=0; i<=grid.RecordCount-1; i++)
      {
        var u_value = grid.GetValue(i, ConditionColumnIndex);
        if (condition==u_value)
        {
          grid.SetCellStyleTextColor(i, ColumnIndex, color);
        }
      }
    }
  } finally {
    grid.EndUpdate();
  }
}

/*
1. getCell
2. getGridRowCount
3. getNextSelectedRecord
   getNextSelectedRow
4. getSelectedCount
5. getSelectedRecord
6. getSubTotal
7. getSubTotalOneColumn
8. setChangePanel
9. setClearGrid
10. setDefaultGrid
11. setDefaultSeq
12. setDeleteRecord
13. setInsertRecord
14. setLock
15. setMoveFirstRecord
16. setSearchRecord
17. setSelectedAll
18. setShowSelectedRow
19. setSpecialRowBackColor
20. setSpecialRowBackColorDefault
21. setUnLock
22. setUnSelectedAll
23. setUpdateRecord
*/

