//*****************************************************************************
// Description : iFrame의 높이 자동으로 조절 
// Parameter: 없음 
// Return: 없음 
// Usage: 
//*****************************************************************************
function resize_iframe(name)
{	
	var oBody = document.body;
    var oFrame = parent.document.getElementById(name);
    var min_height = 500;
    var i_height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight);

    if(i_height < min_height)
	{
		i_height = min_height;
	}

    oFrame.setAttribute("height", i_height);
	
	//parent.scrollTo(document.body.scrollWidth, document.body.scrollHeight);
}

//*****************************************************************************
// Description : 입력받은 문자열에서 숫자만 리턴 
// Parameter: 해석할 문자열 
// Return: 추출된  숫자 
// Usage: parseIntEx('숫자가 포함된 문자열');
//*****************************************************************************
function parseIntEx(str) {
	var vResult = "";
	var vTempStr = "";
	
	for(var i = 0; i < str.length; i++) {
		vTempStr = str.substr(i, 1);
		if(vTempStr.charCodeAt(0) > 47 && vTempStr.charCodeAt(0) < 58) {
			vResult += vTempStr;
		}
	}
	
	return vResult;
}

//*****************************************************************************
// Description : Report Window 를 호출 함 
// Parameter:  fileName (파일명-확장자제외)
// Return:  
// Usage: CallReportWindow("PartNoPDF", "aaa=test1&bbb=test2")
//*****************************************************************************
function CallReportWindow(fileName, parameters){
	window.open("/report?reportFileName=" + fileName + "&" + parameters, "reportView", "");	
}


//*****************************************************************************
// Description : 타이틀 클릭시 정렬 관련 정보 셋팅 
// Parameter:  sortMode:정렬값객체명, sortType:정렬타입객체명, mode:정렬값
// Return:  
// Usage: CommonSetSortInfo("sortMode", "sortType", "date")
//*****************************************************************************
function CommonSetSortInfo(sortMode, sortType, mode){
	var objSortMode = document.getElementById(sortMode);
	var objSortType = document.getElementById(sortType);
	
	if(objSortMode.value != mode){
		objSortMode.value = mode;
		objSortType.value = "DESC";
	}else{
		if(objSortType.value == "DESC"){
			objSortType.value = "ASC";
		}else {
			objSortType.value = "DESC";
		}
	}
}

//*****************************************************************************
// Description : Content Type 을 확인 함
// Parameter: strExt(확장자), strType(config.properties 에 정의된 확장자 문자열 '/' 으로 구분)
// Return:  true / false
// Usage: 
//*****************************************************************************
function CommonContentTypeChk(strExt, strType){
	
	var arrType = strType.split("/");
	
	for(iLoop=0; iLoop<arrType.length; iLoop++){
		if(strExt == arrType[iLoop]){
			return true;
		}	
	}
	return false;
}

//*****************************************************************************
// Description : 해당 문자열의 특정 값을 다른값으로 대치할 수 있다. (char) 
// Parameter: replaceAll(바꿀문자, 바뀔문자)
// Return:  
// Usage: string.replaceAll("a","b")
//*****************************************************************************
String.prototype.replaceAll = function (strChar, strChange)
{
	var strTmp = "";
	for(i=0; i< this.length; i++){
		if(this.charAt(i) != strChar){
			strTmp = strTmp + this.charAt(i);
		}else{
			strTmp = strTmp + strChange;
		}
	}
	return strTmp;
}

//*****************************************************************************
// Description : 해당 문자열의 특정 값을 다른값으로 대치할 수 있다. (String) 
// Parameter: replaceAll(바꿀문자, 바뀔문자)
// Return:  
// Usage: string.replaceAllString("aaaa","bbbb")
//*****************************************************************************
String.prototype.replaceAllString = function(strString, strChange)
{
  var strTmp = "";

  if (this.trim() != "" && strString != strChange){
    strTmp = this.trim();
    while (strTmp.indexOf(strString) > -1){
      strTmp = strTmp.replace(strString, strChange);
    }
  }

  return strTmp;
}

//*****************************************************************************
// Description : 공백을 Trim 
// Parameter: 
// Return:  
// Usage: string.replaceAllString("aaaa","bbbb")
//*****************************************************************************
String.prototype.trim = function() 
{
    return this.replace(/^\s*|\s*$/g, "");
}

//*****************************************************************************
// Description : string pad
// Parameter: 문자열 str, 전체 문자열 길이 size, padding 할 문자 pad, 오른쪽 or 왼쪽 side
// Return: 
// Usage: 없음 
//*****************************************************************************
String.prototype.stringPad = function(size, pad, side) {
  var PAD_LEFT  = 0;
  var PAD_RIGHT = 1;
  var PAD_BOTH  = 2;

  var append = "", size = (size - this.length);
  var pad = ( (pad != null) ? pad : " " );

  if( (typeof size != "number") || ((typeof pad != "string") || (pad == "")) ) {
    return this;
  }

  if( side == PAD_BOTH ) {
    var str = this.stringPad( (Math.floor(size / 2) + this.length), pad, PAD_LEFT );
    return str.stringPad( (Math.ceil(size / 2) + this.length), pad, PAD_RIGHT );
  }

  while( (size -= pad.length) > 0 ) {
    append += pad;
  }
  append += pad.substr(0, (size + pad.length));

  return ( (side == PAD_LEFT) ? append.concat(this) : str.concat(append) );
}


//*****************************************************************************
// Description : Select Box 선택한 값 추출
// Parameter: combo box 객체, 값 혹은 텍스트
// Return: 선택된 값이나 텍스트
// Usage: 
//*****************************************************************************
function comboSelectedValue(comboObj, valueOrText) {
  var retVal = "";
  if (valueOrText == "VALUE") {
    retVal = comboObj.options[comboObj.selectedIndex].value;
  } else {
    if (valueOrText == "TEXT") {
      retVal = comboObj.options[comboObj.selectedIndex].text;
    }
  }
  return retVal;
}



//*****************************************************************************
// Description : 날짜 비교를 위해서  8자리 숫자 문자열로 변환
// Parameter: 날짜 문자열 dateStr(ex. 2007-4-1) 
// Return: 날짜 문자열 -> 20070401
// Usage: 
//*****************************************************************************
function dateToIntFormat(dateStr) {
	var dateStrArr = dateStr.split("-");
	
	var rsDateStr = "";
	
	for(i = 0; i < dateStrArr.length; i++) {
		rsDateStr += dateStrArr[i].stringPad(2, "0", 0);
	}
	
	return rsDateStr;
}


//*****************************************************************************
// Description : end date가 start date 보다 이전 날짜인지 검사
// Parameter: 시작일 start date, 종료일 end date
// Return: true 또는 false
// Usage: 
//*****************************************************************************
function validDatePeriod(startDate, endDate) {
	var startDateStr = dateToIntFormat(startDate);
	var endDateStr = dateToIntFormat(endDate);
	
	var startDateInt = parseInt(startDateStr);
	var endDateInt = parseInt(endDateStr);
	
	if(endDateInt < startDateInt) {
		return false;
	}
	
	return true;
}

//*****************************************************************************
// Description : select 객체에 option 추가
// Parameter: 
// Return: 
// Usage: 
//*****************************************************************************
function CommonAddOption(objSelect, strValue, strText){

	var newOption = document.createElement("OPTION");
	newOption.value = strValue;
	newOption.text  = strText;
		
	if (navigator.appName == "Microsoft Internet Explorer") {
		objSelect.add(newOption);
	} else {
		objSelect.appendChild(newOption);
	}
} 

//*****************************************************************************
// Description : MyWorkArea 로 이동 
// Parameter: 
// Return: 
// Usage: 
//*****************************************************************************
function CommonMyWorkAreaMove(item_mode){
	document.location = '/iw-sec/semi/myworkarea/myWorkAreaMain.do?item_mode='+item_mode;
} 

//*****************************************************************************
// Description : MyWorkArea 로 이동 
// Parameter: 
// Return: 
// Usage: 
//*****************************************************************************
function CommonMyWorkAreaMoveParent(item_mode){
	parent.document.location = '/iw-sec/semi/myworkarea/myWorkAreaMain.do?item_mode='+item_mode;
}

//*****************************************************************************
// Description : Select Box Value Move
// Parameter: 
// Return: 
// Usage: 
//*****************************************************************************
function SelectBox_Move(list, index, to) {
	var total = list.options.length-1;
	var vTempOptionItem;
	var vTempOptionValue;
	
	if (index == -1) {
		return false;	
	}
	
	if (to == +1 && index == total) {
		return false;
	} 
	
	if (to == -1 && index == 0) {
		return false;	
	}
	
	var items = new Array;
	var values = new Array;
	
	for (i = total; i >= 0; i--) {
		items[i] = list.options[i].text;
		values[i] = list.options[i].value;
	}
	
	// 기존 항목 모두 제거 
	list.length = 0;

	// 옮겨갈 위치의 데이터를 임시 저장 
	vTempOptionItem = items[index + to];
	vTempOptionValue = values[index + to];

	// 옮겨갈 위치에 옮길 데이터 저장 
	items[index + to] = items[index];
	values[index + to] = values[index];
	// 임시저장된 데이터를 옮겨간 위치에 저장 
	items[index] = vTempOptionItem;
	values[index] = vTempOptionValue;
	
	for(var xFI = 0; xFI < items.length; xFI++) {
		try {
			list.add(new Option(items[xFI], values[xFI]), null);
		} catch (e) {
			list.add(new Option(items[xFI], values[xFI]));
		}
	}
	
	list.selectedIndex = index + to;
} 
