/**************************************************************************************
* Subject	: commonEnglish.js (/common/js/commonEnglish.js)
* Explain	: Standard Function(js)
* Register	: SunJu, Na
* Date		: 2003.11.13
* Modify	: getSingleDateNumber	 2004-02-17
*				getDoubleDateNumber	 2004-02-17
*				fSetSelected(selectbox multiple) 2004-02-17 
*				fRemoveCRLF			 2004-02-18 
*				fOpenWindow			 2004-03-17 
*				fShowBigGraph		 2004-03-17
*				fCheckByte			 2004-10-01 
**************************************************************************************/
var vLastSelectedTabID = ""; 

function fAutoClick(pScript)
{
	if(event.keyCode == 13) window.execScript(pScript, "javascript");
}



function fCheckDateTerm(pDateFrom, pDateTo)
{

	if((pDateFrom.length == 8) && (pDateTo.length == 8))
	{
		if(parseInt(pDateTo) - parseInt(pDateFrom) >= 0) return true;
	}

	return false;
}


function fGetDateCount(pDateFrom, pDateTo)
{

	if(fCheckDateTerm(pDateFrom, pDateTo) == false) return;

	var vDateFrom = new Date(eval(pDateFrom.substring(0, 4)), eval(pDateFrom.substring(4, 6)) - 1, eval(pDateFrom.substring(6, 8)));
	var vDateTo   = new Date(eval(pDateTo.substring(0, 4)),   eval(pDateTo.substring(4, 6) - 1),   eval(pDateTo.substring(6, 8)));

	var vDateCount = ((vDateTo - vDateFrom) / 86400000) + 1;

	return vDateCount;
}


function fGetEndDate(pStartDate, pDateTerm)
{

	var vStartDate  = new Date(eval(pStartDate.toString(10).substring(0, 4)), eval(pStartDate.toString(10).substring(4, 6)) - 1, eval(pStartDate.toString(10).substring(6, 8)));

	vStartDate.setDate(vStartDate.getDate() + eval(pDateTerm));

	var vTempYear   = vStartDate.getYear();
	vTempYear   = vTempYear.toString(10);

	var vTempMonth  = vStartDate.getMonth()+1;
	vTempMonth  = vTempMonth.toString(10);

	var vTempDate   = vStartDate.getDate();
	vTempDate   = vTempDate.toString(10);

	var vReturnDate = vTempYear + fCompleteMonth(vTempMonth) + fCompleteDay(vTempDate);

	return vReturnDate;
}


function fCompleteDay(pDay)
{
	var vDay;
	vDay = pDay;

	if(fCheckDay(vDay) == false) return "";

	if(vDay.length == 1) vDay = "0" + vDay;

	return vDay;
}


function fCompleteMonth(pMonth)
{
	var vMonth;
	vMonth = pMonth;

	if(fCheckMonth(vMonth) == false) return "";

	if(vMonth.length == 1) vMonth = "0" + vMonth;

	return vMonth;
}



function fSetBeforeWeek(pWeek,pYoIl){

	var date_on = new Date();
	var year = date_on.getYear();
	var month = date_on.getMonth() + 1;
	var day = date_on.getDate();
	
	var vDate = year + fCompleteMonth(month.toString()) + fCompleteDay(day.toString());
	
	var vFirstDate;

	if(pYoIl == "Y"){
		var strYoIl = date_on.getDay();
		vFirstDate = fGetEndDate(fGetEndDate(vDate, parseInt(-strYoIl)), 7*parseInt(pWeek));
	}else {
		vFirstDate = fGetEndDate(vDate, 7*parseInt(pWeek));
	}

	return vFirstDate;
}


function fSetBeforeMonth(pMonth){

	var date_on = new Date();

	date_on.setMonth(date_on.getMonth() + parseInt(pMonth));

	var year = date_on.getYear();
	var month = date_on.getMonth()+1;
	var day = date_on.getDate();

	return year + fCompleteMonth(month.toString()) + fCompleteDay(day.toString());
}


function fSetBeforeMonth_(pYear, pMonth, pDay, pValue){
	var date_on = new Date(pYear, getSingleDateNumber(pMonth) - 1, getSingleDateNumber(pDay));

	date_on.setMonth(date_on.getMonth() + parseInt(pValue));

	var year = date_on.getYear();
	var month = date_on.getMonth()+1;
	var day = date_on.getDate();

	return year + fCompleteMonth(month.toString()) + fCompleteDay(day.toString());
}


function fCheckNumber(pNumber)
{

	if(typeof(pNumber) == "undefined") return false;
	if(pNumber.length == 0) return false;


	var vNumber = pNumber.toString();

	for(var i=0; i<vNumber.length; i++)
	{
		var vTemp = vNumber.substring(i, i+1);
		

		if(isNaN(vTemp)) return false;
		

		if(" " == vTemp) return false;
	}


	return true;
}


function fCheckFloat(pValue)
{

	if(pValue == parseFloat(pValue)) return true;
	else return false;
}


function fCheckInteger(pValue)
{

	if(typeof(pValue) == "undefined") return false;
	if(pValue.length == 0) return false;


	var vValue = pValue.toString();


	if(vValue.substring(0, 1) == "-")
	{
		vValue = vValue.substring(1, vValue.length);
	}


	if(vValue != 0)
	{

		for(var i=0; i<vValue.length; i++)
		{

			if(isNaN(vValue.substring(i, i+1))) return false;
		}
	}


	return true;
}


function fConvertAmountToNumber(pAmount)
{
	return fReplaceWord(pAmount, ",", "");
}


function fConvertSpecialCharacter(pSourceString)
{
	var vTempString = pSourceString;

	vTempString = fReplaceWord(vTempString, "\\", "\\\\");
	vTempString = fReplaceWord(vTempString, "\'", "\\'" );
	vTempString = fReplaceWord(vTempString, '"', '&quot;' );
	vTempString = fReplaceWord(vTempString, "\n", "\\n" );

	return vTempString;
}


function fHaveQuotationChar(str)
{
	for(var intPos=0; intPos < str.length; intPos++)
	{
		var chr = str.charAt(intPos);
		if( chr =="\"" || chr == "'")
			return true;
	}
	return false;
}


function fPlusZeroChar(pSourceString, pNumber)
{
	var vTempString = pSourceString;
	for(var i=1 ; i < parseInt(pNumber) - pSourceString.length;i++)
	{
		vTempString = "0" + vTempString;
	}

	return vTempString;
}



	function fCheckByte(pCtrl, pTitle){
		var intMaxByte = parseInt(pCtrl.MaxBytes);
		var strString = pCtrl.value;
		var currentByte = fGetStringLength(strString);

		if( currentByte > intMaxByte){
			alert( pTitle + "field is limited within " + pCtrl.MaxBytes + " bytes.");
			pCtrl.value = fGetStringToByte(intMaxByte, pCtrl.value);
			return false;
		}else return true;
	}


	function fGetStringLength(pSourceString){
		var intByteCount = 0;
		for(var i=0; i < pSourceString.length; i++)
		{
			var tmpChar = pSourceString.charAt(i);
			if( escape(tmpChar).length > 4)
				intByteCount += 2;
			else if(tmpChar != '\r')
				intByteCount++;
		}
		return(intByteCount);
	}


function fGetStringToByte(pMaxByte, pSourceString)
{
	var intByteCount = 0;
	for(var i=0; i < pSourceString.length; i++)
	{
		var tmpChar = pSourceString.charAt(i);
		if( escape(tmpChar).length > 4)
			intByteCount += 2;
		else if(tmpChar != '\r')
			intByteCount++;

		if(intByteCount > pMaxByte) break;
	}
	return pSourceString.substr(0,i);
}


function fTrim(pTargetString)
{
	var vStartPoint = 0; 
	var vEndPoint   = pTargetString.length; 


	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vStartPoint) == 32) )
	{
		vStartPoint++;
	}


	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vEndPoint-1) == 32) )
	{
		vEndPoint--;
	}

	return ((vStartPoint > 0) || (vEndPoint < pTargetString.length) ) ? pTargetString.substring(vStartPoint, vEndPoint) : pTargetString;

}


function fRemoveCRLF(pTargetString)
{
	var vStartPoint = 0; 
	var vEndPoint   = pTargetString.length; 

	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vStartPoint) == 10 || pTargetString.charCodeAt(vStartPoint) == 13 || pTargetString.charCodeAt(vStartPoint) == 32) )
	{
		vStartPoint++;
	}


	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vEndPoint-1) == 10 || pTargetString.charCodeAt(vEndPoint-1) == 13 || pTargetString.charCodeAt(vEndPoint-1) == 32))
	{
		vEndPoint--;
	}


	return ((vStartPoint > 0) || (vEndPoint < pTargetString.length) ) ? pTargetString.substring(vStartPoint, vEndPoint) : pTargetString;
}



function fReplaceWord(pSourceString, pFindWord, pReplaceWord)
{
	if(pSourceString != ""){

		var vTempArray;


		var vReturnString = "";


		vTempArray = pSourceString.split(pFindWord);


		for(var i=0; i<vTempArray.length-1; i++)
		{

			vReturnString += vTempArray[i] + pReplaceWord;
		}


		vReturnString += vTempArray[vTempArray.length-1];
	}else vReturnString = pSourceString;
	return vReturnString;
}


function fMoveFocus(pTargetElementName)
{

	if(event.keyCode == 9 || event.keyCode == 16) return;


	if((event.type == "keyup" || event.type == "click") && event.srcElement.type == "text" && event.srcElement.value.length != event.srcElement.maxLength) return;


	document.getElementById(pTargetElementName).focus();
}


function fMoveFocusByTab(pTargetElementName, pIndex)
{
	var vIndex = 0;
	var vTempArray;


	if(typeof(pIndex) != "undefined" && pIndex != "") vIndex = eval(pIndex);


	if(event.keyCode == 9)
	{

		window.event.returnValue  = false;
		window.event.cancelBubble = true;


		vTempArray = document.getElementsByName(pTargetElementName);
		if(vTempArray.length > 1) vTempArray[vIndex].focus();
		else vTempArray[0].focus();
	}
}


function fSelectAllCheckBox(pCheckBoxName)
{


	var vCheckBoxArray = document.getElementsByName(pCheckBoxName);

	for(var i=0; i<vCheckBoxArray.length; i++)
	{

		vCheckBoxArray[i].checked = event.srcElement.checked;
	}
}


function fCountCheckedCheckBox(pCheckBoxName)
{

	var vCheckBoxArray = document.getElementsByName(pCheckBoxName);
	var nChk = 0;			


	for(var i=0; i<vCheckBoxArray.length; i++){

		if(vCheckBoxArray[i].checked)  nChk++;
	}

	return nChk;
}


function fSetRadioChecked(pRadioBoxName, pCheckedValue){

	var vRadioBoxArray = document.getElementsByName(pRadioBoxName);

	for(var i=0; i<vRadioBoxArray.length; i++){

		if(vRadioBoxArray[i].value == pCheckedValue) vRadioBoxArray[i].checked = true;
		else vRadioBoxArray[i].checked = false;
	}
}


function fGetRadioChecked(pRadioBoxName){
	var vRtn = "";

	var vRadioBoxArray = document.getElementsByName(pRadioBoxName);

	for(var i=0; i<vRadioBoxArray.length; i++){

		if(vRadioBoxArray[i].checked){
			vRtn = vRadioBoxArray[i].value;break;
		}
	}
	return vRtn
}



function fSetDisable(pCtrl, pBoolean){
	pCtrl.disabled = pBoolean;
}


function fSetDisable_(pCtrl, pBoolean){
	for(var intCtrl=0;intCtrl<pCtrl.length;intCtrl++) pCtrl[intCtrl].disabled = pBoolean;
}


function fSetDisplay(pCtrl, pBoolean)
{
	if(pBoolean) pCtrl.style.display = '';
	else pCtrl.style.display = 'none';
}


function fDisplayDiv(pDivName, pHtml)
{

	document.getElementById(pDivName).innerHTML = pHtml;
}


function fClearDiv(pDivName)
{
	document.getElementById(pDivName).innerHTML = "";
}


function fSelectTab(pDivID)
{

	if(vLastSelectedTabID != "") document.getElementById(vLastSelectedTabID).innerHTML = document.all.tabDiv.innerHTML;


	document.all.tabDiv.innerHTML = document.getElementById(pDivID).innerHTML;


	document.getElementById(pDivID).innerHTML = "";


	vLastSelectedTabID = pDivID;
}


function getSingleDateNumber(strNum)
{
	if (strNum.length == 2 && strNum.charAt(0) == '0') return strNum.charAt(1);

	return strNum;
	
}


function getDoubleDateNumber(strNum)
{
	if (strNum.toString().length == 1) return "0" + strNum.toString();
	return strNum;
	
}


function fSetDay(pYear,pMonth,pDay, pDayCtrl, pDefaultLength){
	var vCurrentDate = new Date(pYear, getSingleDateNumber(pMonth) - 1, getSingleDateNumber(pDay));

	var vCurrentMonthDateCount;

	var vTempMonth = vCurrentDate.getMonth();


	if(vTempMonth == 3 || vTempMonth == 5 || vTempMonth == 8 || vTempMonth == 10)
	{
		vCurrentMonthDateCount = 30;
	}
	else
	{
		if(vTempMonth == 1)
		{

			if (vCurrentDate.getFullYear() % 4 == 0 && (vCurrentDate.getFullYear() % 100 != 0 || vCurrentDate.getFullYear() % 400 == 0))
			{
				vCurrentMonthDateCount = 29;
			}

			else
			{
				vCurrentMonthDateCount = 28;
			}
		}

		else
		{
			vCurrentMonthDateCount = 31;
		}
	}


	pDayCtrl.length = pDefaultLength;
	var vImsiDay = 1; 

	for(var intDay=pDefaultLength;intDay<vCurrentMonthDateCount+pDefaultLength;intDay++){
		pDayCtrl.options[intDay] = new Option(fCompleteDay(vImsiDay.toString()), fCompleteDay(vImsiDay.toString()));
		vImsiDay++;
	}


	if(pDay != "") pDayCtrl.value = getDoubleDateNumber(pDay);
}



function fOpenCalendar(pCtrlYear, pCtrlMonth,pCtrlDay,pDefaultLength)
{
	var arr = null;
	var elementWidth = 24;
	var x = event.screenX - event.offsetX;
	var y = event.screenY - event.offsetY + elementWidth;
	
	sFeatures = "help:no; status:no; scroll:no; font-family:Verdana; font-size:12; dialogWidth:150px; dialogHeight:174px;"
	sFeatures += "dialogLeft:" + x + "px; dialogTop:" + y + ";"
	arr = showModalDialog( "/common/asp/DialogCalendar.htm","", sFeatures );
	if (arr != null) {

		if(arr["intYear"] != null) {
			pCtrlYear.value = arr["intYear"];
		}

		if (arr["intMonth"] != null) {
			pCtrlMonth.value = (arr["intMonth"].toString().length == 1) ? "0" + arr["intMonth"] : arr["intMonth"];
		}
		

		fSetDay(pCtrlYear.value, pCtrlMonth.value,'01', pCtrlDay,pDefaultLength);
		

		if (arr["intDay"] != null) {
			pCtrlDay.value = (arr["intDay"].toString().length == 1) ? "0" + arr["intDay"] : arr["intDay"];
		}
	}
}


function fGetMultiSelected(pCtrl){
	for(var intLoop=0; intLoop < pCtrl.length;intLoop++){
		pCtrl.options[intLoop].selected = true;
	}
	return true;
}


function fCheckEmail (pCtrl)
{
	var strEmail = pCtrl.value;
	if ((fTrim(strEmail) != "") && (strEmail.search(/(^\..*)|(.*\.$)/) != -1 || strEmail.search(/\S+@(\S+)\.(\S+)/) == -1)) {
		alert("Your e-mail account is not available.");
		pCtrl.focus();
		return false;
	}else return true;
}


function fIsAlphabet(str)
{
	if(isNaN(str))
	{
		for(var intLoop = 0; intLoop < str.length; intLoop++) {

			var chr = str.charAt(intLoop).toLowerCase();

			if((chr < '0' || chr > '9') && (chr < 'a' || chr > 'z')&&(chr != '_')) 
				return false;
		}
		return true;
	}
	else
	{
		return false;
	}
}


function fIsFirstCharNumber(str)
{
	return !isNaN(str.charAt(0));
}


function fIsWithEmpty(str)
{
	for(var intLoop=0; intLoop<str.length; intLoop++){
		if( " " == str.charAt(intLoop)) return true;
	}
	return false;
}


function fFormValidation(f, pFocusFlag)
{
	for(var intLoop = 0; intLoop < f.elements.length; intLoop++)
	{

		if(f.elements[intLoop].tagName == "INPUT" || f.elements[intLoop].tagName == "SELECT" || f.elements[intLoop].tagName == "TEXTAREA")
		{
			if("Required" == f.elements[intLoop].getAttribute("Information"))
			{
				if(fTrim(f.elements[intLoop].value) == "")
				{
					alert(f.elements[intLoop].title + " is(are) required.");
					if (pFocusFlag) f.elements[intLoop].focus();
					return false;
				}
			}
		}


		if(f.elements[intLoop].tagName == "INPUT" || f.elements[intLoop].tagName == "TEXTAREA")
		{
			if(null != f.elements[intLoop].getAttribute("MaxBytes"))
			{
				if(!fCheckByte(f.elements[intLoop], f.elements[intLoop].title))
				{
					if (pFocusFlag) f.elements[intLoop].focus();
					return false;
				}
			}
		}
		

		if(f.elements[intLoop].tagName == "INPUT")
		{

			if(f.elements[intLoop].getAttribute("TextFormat") != null && fTrim(f.elements[intLoop].value) != "")
			{
				var TextType = f.elements[intLoop].getAttribute("TextFormat");
				

				if("ONLYNUMBER" == TextType.toUpperCase())
				{
					if(!fCheckNumber(fConvertAmountToNumber(f.elements[intLoop].value))){
						alert(f.elements[intLoop].title + " may consist of 0-9.");
						if (pFocusFlag) f.elements[intLoop].focus();
						return false;
					}
				}


				if("ONLYENGLISH" == TextType.toUpperCase())
				{
					if(!fIsAlphabet(f.elements[intLoop].value)){
						alert(f.elements[intLoop].title + " may consist of a-z.");
						if (pFocusFlag) f.elements[intLoop].focus();
						return false;
					}
				}
				

				if("ONLYALPHABETNUMBER" == TextType.toUpperCase())
				{
					if(!(fIsAlphabet(f.elements[intLoop].value) || fCheckNumber(fConvertAmountToNumber(f.elements[intLoop].value)))){
						alert(f.elements[intLoop].title + " may consist of a-z, 0-9.");
						if (pFocusFlag) f.elements[intLoop].focus();
						return false;
					}
				}


				if("EMAIL" == TextType.toUpperCase())
				{
					if(!fCheckEmail(f.elements[intLoop])) return false;
				}
			}
		}
	}
	return true;
}



function fFormProcess(f)
{
	for(var intLoop = 0; intLoop < f.elements.length; intLoop++)
	{

		if(f.elements[intLoop].tagName == "INPUT" || f.elements[intLoop].tagName == "TEXTAREA")
		{
	
			if(null != f.elements[intLoop].getAttribute("RemoveCRLF"))
			{
				f.elements[intLoop].value = fRemoveCRLF(f.elements[intLoop].value);
			}


			if(null != f.elements[intLoop].getAttribute("RemoveNULL"))
			{
				f.elements[intLoop].value = fTrim(f.elements[intLoop].value);
			}

	
			if(null != f.elements[intLoop].getAttribute("RemoveAmount"))
			{
				if(fTrim(f.elements[intLoop].value) != ""){
					f.elements[intLoop].value = fConvertAmountToNumber(fTrim(f.elements[intLoop].value));
				}
			}
		}
	}
}

function fOpenWindow(pPath, pName, pWidth, pHeight,pState, pScroll, pReSize){
	var features;
	var t = screen.height / 2 - pHeight / 2;
	var l = screen.width  / 2 - pWidth  / 2;
	var option = "toolbar=no,menubar=no,location=no,scrollbars="+pScroll+",status="+pState+",resizable="+pReSize;

	features = "top=" + t + ",left=" + l + ",width=" + pWidth + ",height=" + pHeight + "," + option; 
	
	var remote = window.open(pPath, pName, features);
	if (remote.opener == null){ remote.opener=window;}

	remote.focus();

}


function fSetSelected(pCtl){
	for(var intLoop=0; intLoop < pCtl.length;intLoop++){
		pCtl.options[intLoop].selected = true;
	}
	return true;
}


function fShowBigGraph(pWidth,pHeight,pCtrl)
{
	theURL = pCtrl.src;

	form.hiddenIMGPoPupWidth.value =pWidth;
	form.hiddenIMGPoPupHeight.value =pHeight;
	form.hiddenIMGPoPupUrl.value =theURL;
	fOpenWindow("/common/asp/showGraphWindow.asp", "imgChartPreViewWin", pWidth , pHeight, 'yes','yes','yes' );
}



function getPopCookie(name) { 
	var index = document.cookie.indexOf(name + "=");
	if (index == -1) return null;
	index = document.cookie.indexOf("=", index) + 1;
	var endstr = document.cookie.indexOf(";", index);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(index, endstr));
}


function setPopCookie(sName, sValue) {
	var dT = new Date();

	dT.setDate( dT.getDate() + eval(1));
	document.cookie = sName + "=" + escape(sValue) + "; expires=" + dT.toGMTString();
}

function fReplace(strString, strChar) {
	var strTmp = "";
	for (i = 0; i< strString.length; i++) {
		if (strString.charAt(i) != strChar) {
			strTmp = strTmp + strString.charAt(i);
		}
	}
	return strTmp;
}



function CheckUIElements()
{
	var yMenuFrom, yMenuTo, yButtonFrom, yButtonTo, yOffset, timeoutNextCheck;

	yButtonFrom = parseInt (divMenu.style.top, 10);
	yButtonTo   = document.body.scrollTop + document.body.clientHeight - 530;

	timeoutNextCheck = 100;

	if ( Math.abs (yButtonFrom - (yMenuTo + 100)) < 6 && yButtonTo < yButtonFrom ) {
		setTimeout ("CheckUIElements()", timeoutNextCheck);
		return;
	}

	if ( yButtonFrom != yButtonTo ) {
		yOffset = Math.ceil( Math.abs( yButtonTo - yButtonFrom ) / 10 );
		if ( yButtonTo < yButtonFrom )
			yOffset = -yOffset;
			divMenu.style.top = parseInt (divMenu.style.top, 10) + yOffset;
			timeoutNextCheck = 10;
	}
	if ( yMenuFrom != yMenuTo ) {
		yOffset = Math.ceil( Math.abs( yMenuTo - yMenuFrom ) / 20 );
		if ( yMenuTo < yMenuFrom )
			yOffset = -yOffset;
			divMenu.style.top = parseInt (divMenu.style.top, 10) + yOffset;
			timeoutNextCheck = 10;
	}

	setTimeout ("CheckUIElements()", timeoutNextCheck);
}

function OnLoad()
{
	var y;
	divMenu.style.top = document.body.scrollTop + document.body.clientHeight - 530;
	divMenu.style.visibility = "visible";
	CheckUIElements();
	return true;
}


function fGoReservationPage(pPageStatus, pHtl_cd, pGoPage) {
	if(pPageStatus == "pop"){
	
		if(opener.closed){
			alert("We are very sorry.\n You can not jump to reservation window because there is no parent window. Please, try again.");
			self.close();
		}else{
			opener.window.open(pGoPage+"?hidHtl_cd="+pHtl_cd,'_top');
			self.close();
		}
	}else{
		window.open(pGoPage+"?hidHtl_cd="+pHtl_cd,'_top');
	}
}
