// Parameter : p_strParam
// Value     : various
// Split     : |#| 
function createWaitWindow(p_strParam) {
	var blnParamIsSplit;
	var baseSplit = "|#|";
	var arrParam;
	var strText;
	
	if (p_strParam.indexOf(baseSplit) != -1) {
		arrParam = p_strParam.split(baseSplit);
		blnParamIsSplit = true;
	} else {
		blnParamIsSplit = false;
	}
	
	if (blnParamIsSplit) {
		//to be added later
	} else {
		
		switch (p_strParam) {
			case "0" : 
				strText = "Please wait...";
				break;
			case "1" :
				strText = "Your reservation is in progress. Please wait...";
				break;
		}		
	}
		
	if (strText != "") {
		document.write("<DIV ID='idDivWaitWindow' STYLE='position:absolute;z-index:5;visibility:hidden'>");
		document.write("<BR><BR>");
		document.write("<TABLE CELLSPACING='0' CELLPADDING='0' BORDER='1' ALIGN='CENTER'>");
		document.write("	<TR>");
		document.write("		<TD ALIGN='CENTER' VALIGN='BOTTOM'>");
		document.write("			<TABLE BGCOLOR='#EEEEEE' BORDER='0' CELLPADDING='0' CELLSPACING='0' ID='Table1'>");
		document.write("				<TR>");
		document.write("					<TD>&nbsp;</TD>");
		document.write("				</TR>");
		document.write("				<TR>");
		document.write("					<TD WIDTH='100%' HEIGHT='100%' BGCOLOR='#EEEEEE' ALIGN='CENTER' VALIGN='MIDDLE'>");
		document.write("						<FONT FACE='Arial' SIZE='4' COLOR='blue'>&nbsp;&nbsp;");document.write(strText);document.write("&nbsp;&nbsp;</FONT>");
		document.write("					</TD>");
		document.write("				</TR>");
		document.write("				<TR>");
		document.write("					<TD>&nbsp;</TD>");
		document.write("				</TR>");
		document.write("			</TABLE>");
		document.write("		</TD>");
		document.write("	</TR>");
		document.write("</TABLE>");
		document.write("</DIV>");
	}
}

function openWaitWindow(p_strFunctionName) {
	var strBrowserType = navigator.appName.toUpperCase();
	if (strBrowserType.indexOf('MICROSOFT') != -1 || strBrowserType.indexOf('INTERNET') != -1 || strBrowserType.indexOf('EXPLORER') != -1) {
		var intWindowPosLeftCenter = parseInt(document.body.offsetWidth / 2);
		var intWindowPosTopCenter = parseInt(document.body.offsetHeight / 2);
	} else if (strBrowserType.indexOf('NETSCAPE') != -1) {
		var intWindowPosLeftCenter = parseInt(innerWidth / 2);
		var intWindowPosTopCenter = parseInt(innerHeight / 2);
	} else {
		var intWindowPosLeftCenter = 0;
		var intWindowPosTopCenter = 0;
	};
	
	var strObjectID = "idDivWaitWindow";
	document.getElementById(strObjectID).style.position = "absolute";
	var intObjectWidth = parseInt(document.getElementById(strObjectID).offsetWidth);
	var intObjectHeight = parseInt(document.getElementById(strObjectID).offsetHeight);
	var intObjectPostLeft = intWindowPosLeftCenter - parseInt(intObjectWidth / 2);
	var intObjectPostTop = intWindowPosTopCenter - parseInt(intObjectHeight / 2);
	document.getElementById(strObjectID).style.left = intObjectPostLeft;
	document.getElementById(strObjectID).style.top = intObjectPostTop - 25;
	document.getElementById(strObjectID).style.visibility="visible";
	window.setTimeout(p_strFunctionName,1);
}	

function closeWaitWindow() {
	var strObjectID = "idDivWaitWindow";
	document.getElementById(strObjectID).style.visibility="hidden";
}

// Author : Ferry, 28 Apr 2005
// to avoid submit form when 'enter' is press
if (document.all) {     
	document.onkeydown = function () {    
		var srcObject = window.event.srcElement;	 
		var key_enter= 13; // 13 = Enter
		if (srcObject.type != "textarea" && srcObject.type != "button" && srcObject.type != "submit" && srcObject.type != "reset") {
			if (key_enter==event.keyCode) {
				return false;
			}
		}
	}
}


//---------------------------------- STRING FUNCTION -----------------------------------------
function getTrim(param){
	var value = param
	while (value.substring(0,1) == ' ') {
		value = value.substring(1,value.length);
	}
	while (value.substring(value.length-1,value.length) == ' ') {
		value = value.substring(0,value.length-1);
	}
	return value;
}

//ferry
//special function for **InputNumber**
//Left Trim character
function getTrimChar(varString,StringForTrimed) {
	if (arguments.length < 2) StringForTrimed = " ";
	try {
		for (var i=0; i<=varString.length-1; ++i) {
			if (varString.charAt(i)!=StringForTrimed) {
				return varString.substr(i,i+varString.length)
			};
		};		
	} catch(e) { return "" };
	return ""
};


function getReplace(varString,strRead,strWrite,Sensitivity){
	var v_strReCondition

	if (arguments.length < 4) {
		Sensitivity = 0;
	}
	
	v_strReCondition = "g";
	
	if(Sensitivity == 0)
	{v_strReCondition = v_strReCondition + "i"} 

	var re = new RegExp(strRead,v_strReCondition)
	
	return varString.replace(re,strWrite)
};

//  5/7/56 ->  function untuk "FORMATING A NUMBER AND RESULT IS RETURNED TO STRING VALUE"
// [Decimal = 2] -> NUMBER OF DECIMAL DIGIT
// [CDigit = ","] -> STRING TO SEPARATING FOR EACH nSeparating DIGITS VALUE (= THOUSAND SEPARATOR)
// [CDec = "."] -> STRING TO SEPARATING THE DECIMAL VALUE (= DECIMAL SEPARATOR)
// [nSeparating = 3] -> NUMBER OF DIGIT FOR EACH SEPARATING
// [NegativeSign = 0] = 0 OR "-"  -> NEGATIVE NUMBER IS SIGNED WITH "-" ||
//						1 OR "()" -> NEGATIVE NUMBER IS SIGNED WITH "(...)"
function getFormatNumber(Expression,Decimal,CDigit,CDec,nSeparating,NegativeSign) {
	if (arguments.length < 6) {
		NegativeSign = 0;
		if (arguments.length < 5) {
			nSeparating = 3;
			if (arguments.length < 4) {
				CDec = ".";
				if (arguments.length < 3) {
					CDigit = ",";
					if (arguments.length < 2) Decimal = 2;
				};
			};
		};
	};
	
	var isNegative = false;
	if(Expression < 0)
	{	isNegative = true
		Expression= Math.abs(Expression)
	}
	Expression = getRound(Expression,Decimal)

	var v_arrNumbers = Expression.toString().split(".")
	var v_strMainNumber = v_arrNumbers[0]
	var v_strTemp = ""
	var v_intCounter = 1
	for(var i= v_strMainNumber.length-1; i > -1; i--){
		if(v_intCounter == nSeparating && i > 0){
			v_strTemp = CDigit + v_strMainNumber.charAt(i) + v_strTemp
			v_intCounter = 1
		}else{
			v_strTemp = v_strMainNumber.charAt(i) + v_strTemp
			v_intCounter++
		}
		
	}				
	v_arrNumbers[0] = v_strTemp
	
	v_strResult = v_arrNumbers.join(CDec)

	if (isNegative) {
		if (NegativeSign == 0) v_strResult = "-" + v_strResult;			
		else if (NegativeSign == 1) v_strResult = "(" + v_strResult + ")";
	};
	return v_strResult;
	

};
//--------------------------------------------- ARRAY FUNCTION --------------------------------------------
//  Function untuk "RETURN ARRAY HAD SORTED BY SortType"
// [SortType = 1] = 0 -> SORT BY DESCENDING || 1 -> ASCENDING
	function getArraySort(varArray,SortType) {
		var arrResult = new Array();
		for (var i=0; i<=varArray.length-1;++i)	arrResult[i] = varArray[i];	
		try {
			if (arguments.length < 2) SortType = 1;
			arrResult.sort();
			if (! SortType) arrResult.reverse();
		} catch(e) {};
		return arrResult;
	};	
	

//  Function untuk "RETURN INDEX OF ARRAY WHICH ELEMENT FOR THIS INDEX LIKE strSearch"
//				"RETURN -1 IF NOT FOUND"				
// varArray -> ARRAY VARIABLE
// strSearch -> STRING WHAT WILL BE SEARCHED
// [Start = 0] -> INDEX OF ARRAY WHICH SEARCHING IS STARTED
// [Sensitivity = 0] = 0 -> CASE INSENSITIVE || 1 -> CASE SENSITIVE	
function getArrayIndex(varArray,strSearch,Start,Sensitivity) {
	try {
		if (arguments.length < 4) {
			Sensitivity = 0;
			if (arguments.length < 3) Start = 0;
		};
		for (var i=Start; i<=varArray.length-1;++i) {
			if (Sensitivity) {
				if (varArray[i]==strSearch) return i;
			} else {
				if (varArray[i].toUpperCase()==strSearch.toUpperCase()) return i;
			};
	   	};
	} catch(e) { };
	return -1
};	



//  Function untuk "RETURN TRUE IF Expression IS AN ARRAY / COLLECTIONS OTHERWISE FALSE"
function isArray(Expression) {
	try {
		Expression.join(","); return true
	} catch(e) {};	
	return false
};	


//------------------------------------------ DATE FUNCTION ----------------------------------------------
// Function untuk "GET MONTH NAME"
// Month -> NUMBER (1-12) FOR SPECIFIES MONTH NAME
// [Type = 0] = 0 -> ENGLISH || 1 -> INDONESIAN NAMING TYPE
// [Length = 1] = 0 -> SHORT || 1 -> LONG MONTH NAME 

function getMonthName(Month,Type,Length) {
	
	if (arguments.length < 3) {
		Length = 1;	
		if (arguments.length < 2) Type = 0;
	};
	
	if (Type==0) 
		var arrMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
	else if(Type==1)
		var arrMonth = new Array("Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember")
		
	if (Month <= 12 && Month >= 1) {
		if (Length == 0) return arrMonth[Month-1].substring(0,3)
		else if (Length == 1) return arrMonth[Month-1];
	} else return 0
}	
	
	
// Function untuk "GET WEEKDAY NAME"
// Day -> NUMBER (0-6) FOR SPECIFIES WEEKDAY NAME WITH FIRST DAY IS SUNDAY
// [Type = 0] = 0 -> ENGLISH || 1 -> INDONESIAN NAMING TYPE
// [Length = 1] = 0 -> SHORT || 1 -> LONG DAY NAME 
function getWeekDayName(Day,Type,Length) {
	if (arguments.length < 3) {
		Length = 1;	
		if (arguments.length < 2) Type = 0;
	};
	if (Type==1) 
		var arrDay = new Array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu")
	else if(Type==0)
		var arrDay = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
	if (Day <= 6 && Day >= 0) {
		if (Length == 0) return arrDay[Day].substring(0,3);
		else if (Length == 1) return arrDay[Day]; 
	} else return 0
};
	
	


// Function untuk "RETURN TRUE IF Expression CAN BE EVALUATED A DATE VALUE OTHERWISE FALSE"
// [Format = 0] = 0 -> DATE FORMAT IS "MM/DD/YYYY" || 1 -> "DD/MM/YYYY"
function isDate(Expression,Format) {
	if(window.navigator.userAgent.indexOf("Safari")==-1)
	{
		var dtValue = new Date(Expression);
		if (isNaN(dtValue)) return false;
		if (dtValue.toString() == Expression.toString()) return true;	
	}
	if (arguments.length < 2) Format = 0;
	
	try
	{
		var arrDate = Expression.toString().split("/");
		var testDate
		var day
		var month
		var year

		if(Format == 0){
			testDate = new Date(arrDate[2],arrDate[0]-1,arrDate[1])				
			day = arrDate[1]
			month = arrDate[0]
			year = arrDate[2]
		}else{
			testDate = new Date(arrDate[2],arrDate[1]-1,arrDate[0])					
			day = arrDate[0]
			month = arrDate[1]
			year = arrDate[2]
		}	
		
		if (testDate.getDate() == parseFloat(day) && (testDate.getMonth()+1) == parseFloat(month) && testDate.getFullYear() == parseFloat(year)) return true
		else return false
	}
	catch(e)
	{
		return false;
	}
};

//function untuk "RETURN TRUE IF Expression CAN BE EVALUATED A TIME VALUE OTHERWISE FALSE"
function isTime(Expression) {
	var arrTimer = Expression.toString().split(":");
	if (arrTimer.length == 3) {
		if (parseFloat(arrTimer[0]) >= 0 && parseFloat(arrTimer[0]) <= 23 &&
			parseFloat(arrTimer[1]) >= 0 && parseFloat(arrTimer[1]) <= 59 &&
			parseFloat(arrTimer[2]) >= 0 && parseFloat(arrTimer[2]) <= 59)	
			 return true
	};
	return false
};


// Category		: DATE/TIME MANIPULATION FUNCTIONS
// Function		: untuk mendapatkan tanggal sesuai dgn format yg diinginkan	(Eka : Feb 19 2004)
// p_dtValue	: Nilai Tanggal
// p_strFormat	: Format output yang diinginkan
//				  Macam-macam format : 
//					[D$/DD] = tanggal, [M$/MM/MMM/MMMM] = bulan, 
//					[YY/YYYY] = tahun, [W$/WW/WWW/WWWW] = hari, 
//					[H$/HH] = jam, [N$/NN] = menit, [S$/SS] = detik.
// 				  Contoh format : 
//					DD/MM/YYYY = 09/01/2004  
//					www,mmm-dd-yyyy = Fri,Jan-09-2004
//					WWWW, D$ MMMM YY, H$:NN:SS = Friday, 9 January 04, 8:30:05


function getFormatDateTime(p_dtValue,p_strFormat)
{
	var v_strDisplay
	var v_strResult

	if (arguments.length < 2) {
		p_strFormat = "MMM-DD-YYYY"
	};
	
	if (isDate(p_dtValue) &&  (p_dtValue.toString().length > 0))
	{	p_dtValue = new Date(p_dtValue)
		v_strDisplay = p_strFormat
		v_strDisplay.toUpperCase();
		v_strDisplay = getReplace(v_strDisplay, "DD", p_dtValue.getDate() < 10 ? "0" + p_dtValue.getDate().toString() : p_dtValue.getDate().toString())
		v_strDisplay = getReplace(v_strDisplay, "D$", p_dtValue.getDate())				
		v_strDisplay = getReplace(v_strDisplay, "MMMM", getMonthName(p_dtValue.getMonth()+1,0,1))
		v_strDisplay = getReplace(v_strDisplay, "MMM", getMonthName(p_dtValue.getMonth()+1,0,0))
		v_strDisplay = getReplace(v_strDisplay, "MM",  p_dtValue.getMonth() + 1 < 10 ? "0" + p_dtValue.getMonth()+ 1 : p_dtValue.getMonth() + 1)
		v_strDisplay = getReplace(v_strDisplay, "M$", p_dtValue.getMonth() + 1)				
		v_strDisplay = getReplace(v_strDisplay, "YYYY", p_dtValue.getFullYear())
		v_strDisplay = getReplace(v_strDisplay, "YYY", p_dtValue.getFullYear().toString().substr(2,2))
		
		v_strDisplay = getReplace(v_strDisplay, "YY", p_dtValue.getFullYear().toString().substr(2,2))
		v_strDisplay = getReplace(v_strDisplay, "Y$", p_dtValue.getFullYear().toString().substr(2,2))
		v_strDisplay = getReplace(v_strDisplay, "WWWW", getWeekDayName(p_dtValue.getDay(),0,1))
		v_strDisplay = getReplace(v_strDisplay, "WWW", getWeekDayName(p_dtValue.getDay(),0,0))
		v_strDisplay = getReplace(v_strDisplay, "WW", "0" + p_dtValue.getDay().toString())
		v_strDisplay = getReplace(v_strDisplay, "W$", p_dtValue.getDay())				
			
		v_strDisplay = getReplace(v_strDisplay, "HH", p_dtValue.getHours() < 10 ? "0" + p_dtValue.getHours().toString() : p_dtValue.getHours())
		v_strDisplay = getReplace(v_strDisplay, "H$", p_dtValue.getHours())
		v_strDisplay = getReplace(v_strDisplay, "NN", p_dtValue.getMinutes() < 10 ? "0" + p_dtValue.getMinutes().toString() : p_dtValue.getMinutes())
		v_strDisplay = getReplace(v_strDisplay, "N$", p_dtValue.getMinutes())				
		v_strDisplay = getReplace(v_strDisplay, "SS", p_dtValue.getSeconds() < 10 ? "0" + p_dtValue.getSeconds().toString() : p_dtValue.getSeconds())
		v_strDisplay = getReplace(v_strDisplay, "S$", p_dtValue.getSeconds() )				

		v_strResult = v_strDisplay
	}
	else
	{
		v_strResult = p_dtValue
	}
			
	return v_strResult
}

//--------------------------------------- VALIDATION FUNCTION ----------------------------------------------

//  Function untuk "RETURN TRUE IF Expression IS A VALID EMAIL ADDRESS OTHERWISE FALSE"
function isEmail(who) {
	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,6}$/i;
	return(email.test(getTrim(who)));
}


//	Category		:	INFORMATION FUNCTIONS
//	Function		:	Cek apakah browser yg dipakai adalah Microsoft Internet Explorer.
//	Return			:	Boolean [true => IE / false => not]
//	By			:	RODY LIAW <liaw@wongfaye.com> (30 April 2004)

function isMicrosoftIEBrowser() {
	if (navigator.appName.toUpperCase().indexOf("MICROSOFT") != 0 || 
	   	(navigator.appName.toUpperCase().indexOf("INTERNET") != 0 && 
		 navigator.appName.toUpperCase().indexOf("INTERNET") != 0)
		 ) 
	{				
		return true;
	} else {
		return false;
	};
};

function checkTextAreaLength(p_objValue,p_intMaxLength){
	if (p_objValue.value.length > p_intMaxLength) {
		p_objValue.value = p_objValue.value.substring(0, p_intMaxLength);
	}
}


// Function : untuk cek apakah semua karakter dalam text termasuk ASCII code
// Parameter: text -> string
// Return	: boolean (true = Semua karakter ASCII ; false = Ada karakter Non ASCII (Unicode))
// By		: Liaw (January 31, 2005)

function isValidAsciiText(text) {

	//var re = /[^a-zA-Z_0-9`~!@#$%\^&\*\(\)_\-\+=\|\\\[\{\]\};:'",<\.>/\?]/;
	var re = /[^\x00-\xFF]/;
	var result;
		
	if (re.test(text)) { 
		result = false;
	} else { 
		result = true;
	};

	return result;
};


// Function : untuk cek apakah semua karakter dalam setiap input element dari form termasuk ASCII code
// Parameter: FormName -> object form HTML
// Return	: boolean (true = Semua karakter dalam setiap input element form (text, password, textarea) adalah ASCII ; 
//			   false = Ada karakter dalam salah satu input element form (text, password, textarea) yg Non ASCII (Unicode))
// By		: Liaw (January 31, 2005)

function isValidAsciiTextByForm(FormName) {
	var objForm = FormName;
	var Expression;
	var msgNonValid = "Not Valid Input";
				
	for (var intLoop=0; intLoop < objForm.elements.length; ++intLoop) {		
		Expression = (objForm.elements[intLoop].type.toLowerCase() == "text") || 
					(objForm.elements[intLoop].type.toLowerCase() == "password") ||
					(objForm.elements[intLoop].type.toLowerCase() == "textarea");
					
		if (Expression) {
			if (! isValidAsciiText(objForm.elements[intLoop].value)) {
				alert(msgNonValid);
				objForm.elements[intLoop].focus();
				
				return false;
			};			
		};
	};		
		
	return true;
};


// Function 	: ambil index dari radio button yg dipilih
// Parameter	: buttongroup = object dari radio button
// Return	: integer (index dari radio, jika tdk ada yg dipilih return -1)
// By		: Eka (June 1, 04)

function getSelectedIndexRadio(buttonGroup) 
{
	if (buttonGroup[0]) 
	{	for (var i=0; i<buttonGroup.length; i++) 
		{
			if (buttonGroup[i].checked) 
			{	return i
			}
		}
	} 
	else 
	{
		if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
	}
	return -1;
} 



//---------------------------------------- MISC FUNCTION ----------------------------------------------

function ReplaceSelection(objSelected, strReplace) {
	var objRange = document.selection.createRange();
	var strSelected = objRange.text;
	if (objRange.parentElement() == objSelected) {	
		objRange.text = strReplace;
		objRange.moveStart('character', 0);
		objRange.select();
	};	
};


function getURLEncode(strURL, isURLUnicode) {	
	if (arguments.length < 2) {
		isURLUnicode = true;
	};	

	var arrURLDecode = new Array("%", "&", "\\?", "#", "=");
	var arrURLEncode = new Array("%25", "%26", "%3F", "%23", "%3D");	
	var strResult = strURL;	
	
	for (var intLoop = 0; intLoop < arrURLDecode.length; ++intLoop) {
		strResult = getReplace(strResult, arrURLDecode[intLoop], arrURLEncode[intLoop]);
	};
	
	if (!isURLUnicode) {
		strResult = getReplace(strResult, "+", "%2B");
	};
	
	return strResult;
};


function getRound(Expression,Decimal) {
	if (arguments.length < 2) Decimal = 2;
	try {	
		if (Decimal > 0) {
			var v_intNumber = Math.pow(10,Decimal)
			strResult = Math.round(Expression * v_intNumber) / v_intNumber;		
			return strResult;
		} else { return Math.round(Expression)};	
	} catch(e) { };
	return ""	
};


function InputNumber(TextObject, isDecimalIncluded, isNegativeAllowed, strToEvent) {
	if (arguments.length < 4) {
		strToEvent = "onkeydown";
		if (arguments.length < 3) {
			isNegativeAllowed = true;
			if (arguments.length < 2) {
				isDecimalIncluded = true;
			};
		};
	};	


	if (strToEvent.toLowerCase() == "onpropertychange" || strToEvent.toLowerCase() == "onblur") {
		if (isNaN(TextObject.value) || (!isDecimalIncluded && TextObject.value.indexOf(".") != -1)
			|| (!isNegativeAllowed && parseFloat(eval(TextObject.value))  < 0 )) {

			TextObject.value = "";
		};
	};
	
	if (TextObject.readOnly == true) return;

	if (strToEvent.toLowerCase() != "onkeydown") return;
	
	var Value = TextObject.value;
	var strClipboardText = window.clipboardData.getData("Text");
	var strTemp;

	if (strToEvent.toLowerCase() == "onpaste") {
		if (isNaN(strClipboardText) || (!isDecimalIncluded && strClipboardText.indexOf(".") != -1)
			|| (!isNegativeAllowed && parseFloat(eval(strClipboardText)) < 0 )) {
		
			window.event.returnValue = false;
		};
	};

	if ((window.event.keyCode >= 48 && window.event.keyCode <= 57) || 
		(window.event.keyCode >= 96 && window.event.keyCode <= 105) ||
		(((window.event.keyCode == 110 || window.event.keyCode == 190) && isDecimalIncluded) && Value.indexOf(".") == -1) || 
		(((window.event.keyCode == 109 || window.event.keyCode == 189) && isNegativeAllowed) && Value.indexOf("-") >= -1) || 
		((window.event.keyCode == 107) && Value.indexOf("-") != -1)) { 


		if (window.event.altKey) {
			window.event.returnValue = false;
			window.event.keyCode = null;
			return;
		};

		if (window.event.keyCode == 107) {
			TextObject.value = getReplace(TextObject.value,"-","");
		} else if (window.event.keyCode == 110 || window.event.keyCode == 190) {
			Value = ReplaceSelection(TextObject, ".");
		} else if (window.event.keyCode == 109 || window.event.keyCode == 189) {
			if (Value.indexOf("-") == -1) {
				TextObject.value = "-" + TextObject.value;
			} else {
				TextObject.value = getReplace(TextObject.value,"-","");
			};
		} else if (window.event.keyCode >= 96 && window.event.keyCode <= 105) {
			Value = ReplaceSelection(TextObject, String.fromCharCode(window.event.keyCode-48));
		} else {
			Value = ReplaceSelection(TextObject, String.fromCharCode(window.event.keyCode));
		};
		window.event.returnValue = false;
		window.event.keyCode = null;
	} else if (window.event.keyCode >= 65 || window.event.keyCode == 32) {
		if (! window.event.ctrlKey) {
			window.event.returnValue = false;
			window.event.keyCode = null;
			return;
		};
	} else {

	};

	//if (window.event.keyCode != 46 && window.event.keyCode != 8) { 
	if (window.event.keyCode != 46 && window.event.keyCode != 8 && window.event.keyCode != 37 && window.event.keyCode != 39) { 
		if (TextObject.value.substr(0,1) == ".") TextObject.value = "0." + TextObject.value.substring(1, 1+TextObject.value.length);
		if (TextObject.value.substr(0,2) == "-.") TextObject.value = "-0." + TextObject.value.substring(2, 2+TextObject.value.length);
		if (TextObject.value.indexOf("-") !=-1 && TextObject.value.substr(0,1) != "-") {
			TextObject.value = "-" + getReplace(TextObject.value,"-","");				
		};

		strTemp = (getReplace(TextObject.value,"-","") + ".").split(".")[0];
		
		if ((strTemp.indexOf("0")!= -1 && TextObject.value.indexOf(".")==-1) ||
			(strTemp.length > 1 && strTemp.indexOf("0")!=-1 && TextObject.value.indexOf(".")!=-1)) {
			
			if (TextObject.value.indexOf(".") != -1) {
				if (TextObject.value.indexOf("-") != -1) {
					TextObject.value = ((getTrimChar(TextObject.value,"0")=="") ? "-0" : "-") + getTrimChar(getReplace(TextObject.value,"-",""),"0");
				} else {					
					TextObject.value = ((getTrimChar(strTemp,"0")=="") ? "0" : "") + getTrimChar(TextObject.value,"0");
				};
			} else {				
				if (TextObject.value.indexOf("-") != -1) {
					TextObject.value = "-" + getTrimChar(getReplace(TextObject.value,"-",""),"0");
				} else {
					TextObject.value = ((getTrimChar(TextObject.value,"0")=="") ? "0" : "") + getTrimChar(TextObject.value,"0");
				};			
			};			
		};
	};
};

function doHTMLEncode(p_strString) {
	return p_strString.replace(/&/g, '&amp').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

function escapeWithCondition(p_strString) {
	var v_arrString
    var v_tmpString 
    var v_intTemp 
    var v_arrTemp
    var v_strTemp
    var i 

    if (getTrim(p_strString) != "") {
        //<br>
        v_tmpString = getReplace(p_strString, "<br>", "==@==br==0==")
        v_tmpString = getReplace(v_tmpString, "<BR>", "==@==br==0==")

        //<b></b>
        v_tmpString = getReplace(v_tmpString, "<b>", "==@==b==0==")
        v_tmpString = getReplace(v_tmpString, "<B>", "==@==b==0==")
        v_tmpString = getReplace(v_tmpString, "</b>", "==@==/b==0==")
        v_tmpString = getReplace(v_tmpString, "</B>", "==@==/b==0==")

        //<i></i>
        v_tmpString = getReplace(v_tmpString, "<i>", "==@==i==0==")
        v_tmpString = getReplace(v_tmpString, "<I>", "==@==i==0==")
        v_tmpString = getReplace(v_tmpString, "</i>", "==@==/i==0==")
        v_tmpString = getReplace(v_tmpString, "</I>", "==@==/i==0==")

        //<u></u>
        v_tmpString = getReplace(v_tmpString, "<u>", "==@==u==0==")
        v_tmpString = getReplace(v_tmpString, "<U>", "==@==u==0==")
        v_tmpString = getReplace(v_tmpString, "</u>", "==@==/u==0==")
        v_tmpString = getReplace(v_tmpString, "</U>", "==@==/u==0==")


		//<p></p>
        v_arrTemp = v_tmpString.split("<p ")
        if (typeof(v_arrTemp[1]) != "undefined") {
			v_intTemp = v_arrTemp[1].indexOf(">")
			if( v_intTemp > 0 ) {
				v_arrTemp[1] = getReplace(v_arrTemp[1].substr(0, parseInt(v_intTemp)), "\"", "'") + "==0==" + v_arrTemp[1].substr(parseInt(v_intTemp) + 1, v_arrTemp[1].length - parseInt(v_intTemp))
			}
		    v_tmpString = v_arrTemp.join("==@==p ")
            v_tmpString = getReplace(v_tmpString, "</p>", "==@==/p==0==")
        }

        //<P></P>
        v_arrTemp = v_tmpString.split("<P ")
        if (typeof(v_arrTemp[1]) != "undefined") {
			v_intTemp = v_arrTemp[1].indexOf(">")
            if( v_intTemp > 0 ) {           
				v_arrTemp[1] = getReplace(v_arrTemp[1].substr(0, parseInt(v_intTemp)), "\"", "'") + "==0==" + v_arrTemp[1].substr(parseInt(v_intTemp) + 1, v_arrTemp[1].length - parseInt(v_intTemp))
            }            
            v_tmpString = v_arrTemp.join("==@==P ")
            v_tmpString = getReplace(v_tmpString, "</P>", "==@==/P==0==")
        }

        //<font></font>
        v_arrTemp = v_tmpString.split("<font ")
        if (typeof(v_arrTemp[1]) != "undefined") {
            v_intTemp = v_arrTemp[1].indexOf(">")
            if( v_intTemp >= 0 ) {
				v_arrTemp[1] = getReplace(v_arrTemp[1].substr(0, parseInt(v_intTemp)), "\"", "'") + "==0==" + v_arrTemp[1].substr(parseInt(v_intTemp) + 1, v_arrTemp[1].length - parseInt(v_intTemp))
			}
            v_tmpString = v_arrTemp.join("==@==font ")
            v_tmpString = getReplace(v_tmpString, "</font>", "==@==/font==0==")
        }


        //<FONT></FONT>
        v_arrTemp = v_tmpString.split("<FONT ")
        if (typeof(v_arrTemp[1]) != "undefined") {
            v_intTemp = v_arrTemp[1].indexOf(">")
            if( v_intTemp > 0 ) {
                v_arrTemp[1] = getReplace(v_arrTemp[1].substr(0, parseInt(v_intTemp)), "\"", "'") + "==0==" + v_arrTemp[1].substr(parseInt(v_intTemp) + 1, v_arrTemp[1].length - parseInt(v_intTemp))
            }
            v_tmpString = v_arrTemp.join("==@==FONT ")
            v_tmpString = getReplace(v_tmpString, "</FONT>", "==@==/FONT==0==")
        }

        v_tmpString = doHTMLEncode(v_tmpString)
        v_tmpString = getReplace(v_tmpString, "==@==", "<")
        v_tmpString = getReplace(v_tmpString, "==0==", ">")
        return v_tmpString
    } else {
        return doHTMLEncode(p_strString)
    }
}

