/* XhtmlAjax
Version 4.0 Copyright 1994-2007 NuView Systems, Inc.
$Id: XhtmlAjax.js,v 1.46 2007/05/14 12:17:36 randy Exp $
*/
/**
 * String Object
 */
	/**
	 * endsWith method added to String object
	 */
	String.prototype.endsWith = function(prm_sVal) {
		return NuStr.endsWith(this, prm_sVal);
	}
	/**
	 * equals method added to String object
	 */
	String.prototype.equals = function(prm_sVal) {
		return (this == prm_sVal);
	}
	/**
	 * equalsIgnoreCase method added to String object
	 */
	String.prototype.equalsIgnoreCase = function(prm_sVal) {
		return (this.toLowerCase() == prm_sVal.toLowerCase());
	}
	/**
	 * startsWith method added to String object
	 */
	String.prototype.startsWith = function(prm_sVal) {
		return NuStr.startsWith(this, prm_sVal);
	}
	/**
	 * trim method added to String object
	 */
	String.prototype.trim = function() {
		return NuStr.trim(this);
	}
/**
 * StringBuffer Object
 */
function StringBuffer() {
	this._aBuffer = [];
	/**
	 * append
	 */
	this.append = function(prm_sVal) {
		this._aBuffer.push(prm_sVal);
	}
	/**
	 * clear
	 */
	this.clear = function() {
		this._aBuffer = [];
	}
	/**
	 * getLength
	 */
	this.getLength = function() {
		this.toString();
		if (this._aBuffer[0]) {
			return this._aBuffer[0].length;
		} else {
			return 0;
		}
	}
	/**
	 * setLength
	 */
	this.setLength = function(prm_iLen) {
		this.toString();
		if (this._aBuffer[0].length > prm_iLen) {
			this._aBuffer[0] = this._aBuffer[0].substring(0, prm_iLen);
		}
	}
	/**
	 * substring
	 */
	this.substring = function(prm_iStartPos, prm_iLen) {
		if (prm_iLen) {
			return this.toString().substring(prm_iStartPos, prm_iLen);
		} else {
			return this.toString().substring(prm_iStartPos);
		}
	}
	/**
	 * toString
	 */
	this.toString = function(prm_sDelim) {
		var v_aTemp;
		if (this._aBuffer.length > 1) {
			v_aTemp = [];
			v_aTemp[0] = this._aBuffer.join(prm_sDelim || "");
			this._aBuffer = v_aTemp;
			return this._aBuffer[0];
		} else if (this._aBuffer[0]) {
			return this._aBuffer[0];
		} else {
			return "";
		}
	}
}
/**
 * NuAjax
 */
function NuAjax() {
	this._isDebug;
	this._iStatus;
	this._iTimeoutSeconds;
	this._ajax;
	this._funcCallback;
	this._funcTimeout;
	this._objDebug;
	this._timerTimeout;
	/**
	 * getDebug
	 */
	this.getDebug = function() {
		return this._objDebug;
	}
	/**
	 * getDebugText
	 */
	this.getDebugText = function() {
		return NuHash.toStr(this._objDebug);
	}
	/**
	 * getResultText
	 */
	this.getResultText = function() {
		if (!this._ajax) {
			return null;
		} else if (this._iStatus != 1) {
			return null;
		} else {
			return this._ajax.responseText;
		}
	}
	/**
	 * getResultXml
	 */
	this.getResultXml = function() {
		var v_responseText;
		if (!this._ajax) {
			return null;
		} else if (this._iStatus != 1) {
			return null;
		} else if (window.ActiveXObject) {
			v_responseText = this._ajax.responseText;
			this._ajax.responseXML.loadXML(v_responseText);
			return this._ajax.responseXML;
		} else {
			return this._ajax.responseXML;
		}
	}
	/**
	 * initialize
	 */
	this.initialize = function() {
		var e;
		this._iStatus = 0;
		this._iTimeoutSeconds = 5;
		if (window.XMLHttpRequest) {
			this._ajax = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			try {
				this._ajax = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					this._ajax = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
				}
			}
		}
	}
	/**
	 * openRequest
	 */
	this.openRequest = function(prm_sUrl, prm_objUrlParams, prm_objFormParams) {
		var v_isAsync;
		var v_sFormParams;
		var v_sPostMode;
		var v_sProp;
		var v_sUrl;
		var v_sUrlParams;
		if (this._ajax) {
			v_sUrl = prm_sUrl;
			v_sUrlParams = "";
			if (prm_objUrlParams) {
				for (v_sProp in prm_objUrlParams) {
					if (v_sUrlParams.length > 0) {
						v_sUrlParams += "&";
					}
					v_sUrlParams += v_sProp + "=" + NuStr.toUri(prm_objUrlParams[v_sProp]);
				}
				v_sUrl += "?" + v_sUrlParams;
			}
			v_sFormParams = "";
			if (prm_objFormParams) {
				for (v_sProp in prm_objFormParams) {
					if (v_sFormParams.length > 0) {
						v_sFormParams += "&";
					}
					v_sFormParams += v_sProp + "=" + NuStr.toUri(prm_objFormParams[v_sProp]);
				}
				v_sPostMode = "post";
			} else {
				v_sPostMode = "get";
			}
			if (this._funcCallback) {
				v_isAsync = true;
			} else {
				v_isAsync = false;
			}
			this._iStatus = 1;
			this._ajax.open(v_sPostMode, v_sUrl, v_isAsync);
			if (v_isAsync) {
				this._timerTimeout = setTimeout(this._handleTimeout, prm_iTimeoutSeconds);
				this._ajax.onreadystatechange = this._handleCallback;
			}
			if ((v_sPostMode == "post") && (prm_objFormParams)) {
				this._ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				this._ajax.send(v_sFormParams);
			} else {
				this._ajax.setRequestHeader("Content-Type", "text/xml");
				this._ajax.send(null);
			}
			if (this._isDebug) {
				this.setDebugInfo("mode", v_sPostMode);
				this.setDebugInfo("url", NuHash.toStr(prm_objUrlParams));
				this.setDebugInfo("form", NuHash.toStr(prm_objFormParams));
			}
			if (v_isAsync) {
				this._handleCallback();
			} else if (this._isDebug) {
				this.setDebugInfo("result", this.getResultText());
			}
		}
	}
	/**
	 * setCallbackFunction
	 */
	this.setCallbackFunction = function(prm_funcCallback) {
		this._funcCallback = prm_funcCallback;
	}
	/**
	 * setDebug
	 */
	this.setDebug = function(prm_isDebug) {
		this._isDebug = prm_isDebug;
	}
	/**
	 * setDebugInfo
	 */
	this.setDebugInfo = function(prm_sCode, prm_sValue) {
		if (this._isDebug) {
			if (!this._objDebug) {
				this._objDebug = {};
			}
			this._objDebug[prm_sCode] = prm_sValue;
		}
	}
	/**
	 * setTimeout
	 */
	this.setTimeout = function(prm_iTimeoutSeconds) {
		this._iTimeoutSeconds = prm_iTimeoutSeconds;
	}
	/**
	 * setTimeoutFunction
	 */
	this.setTimeoutFunction = function(prm_funcTimeout) {
		this._funcTimeout = prm_funcTimeout;
	}
	//
	// private functions
	//
	/**
	 * _handleCallback
	 */
	this._handleCallback = function() {
		clearTimeout(this._timerTimeout);
		if (this._ajax.status != 200) {
			this._iStatus = -1;
		} else if (this._ajax.readyState != 4) {
			this._iStatus = -1;
		} else {
			this._iStatus = 1;
		}
	}
	/**
	 * _handleTimeout
	 */
	this._handleTimeout = function() {
		this._ajax.abort();
		this._iStatus = -1;
		if (this._funcCallback) {
			eval(this._funcCallback);
		} else {
			alert("Ajax Timeout Exceeded");
		}
	}
	this.initialize();
}
//
// NuAjax end
//
/**
 * NuArray Object
 */
function NuArray() {}
	//
	// static items
	//
	/**
	 * append
	 */
	NuArray.append = function(prm_aMaster, prm_aData) {
		var v_i;
		var v_iCnt;
		if (prm_aMaster && prm_aData) {
			v_iCnt = prm_aData.length;
			for (v_i = 0; v_i < v_iCnt; v_i++) {
				prm_aMaster.push(prm_aData[v_i]);
			}
		}
	}
	/**
	 * debug
	 */
	NuArray.debug = function(prm_aMaster, prm_sbBuffer) {
		var v_Return;
		var v_i;
		var v_objVal;
		if (prm_sbBuffer) {
			v_Return = prm_sbBuffer;
		} else {
			v_Return = new StringBuffer();
		}
		v_forEach = new NuForEach(prm_aMaster);
		v_Return.append("[");
		while (v_forEach.next()) {
			v_i = v_forEach.getIndex();
			if (v_i > 0) {
				v_Return.append(",");
			}
			v_objVal = prm_aMaster[v_i];
			v_Return.append("\n  " + v_objVal);
		}
		v_Return.append("\n]");
		return v_Return;
	}
	/**
	 * remove
	 */
	NuArray.remove = function(prm_aMaster, prm_iColNum) {
		var v_Return;
		v_Return = prm_aMaster[prm_iColNum];
		prm_aMaster.splice(prm_iColNum, 1);
		return v_Return;
	}
	/**
	 * toStr
	 */
	NuArray.toStr = function(prm_object) {
		return NuXmlJson.toStr(prm_object);
	}
//
// NuArray end
//
/**
 * NuDate Object
 */
function NuDate() {}
	//
	// static items
	//
	NuDate.c_IPART_UNKNOWN = 0;
	NuDate.c_IPART_YEAR = 1;
	NuDate.c_IPART_MONTH = 2;
	NuDate.c_IPART_DAY = 3;
	NuDate.c_IPART_HOUR = 4;
	NuDate.c_IPART_MIN = 5;
	NuDate.c_IPART_SEC = 6;
	NuDate.c_IPART_MILLI = 7;
	NuDate.c_IPART_WEEK = 8;
	NuDate.c_IPART_FIRSTDAYOFMONTH = 9;
	NuDate.c_IPART_DAYSINMONTH = 10;
	NuDate.c_IPART_DAYOFWEEK = 11;
	NuDate.c_ITYPE_TIMEONLY = 9;
	NuDate.c_ITYPE_DATEONLY = 11;
	NuDate.c_ITYPE_DATETIME = 17;
	NuDate.c_IPIVOTYR = 30;
	/**
	 * add
	 */
	NuDate.add = function(prm_dt, prm_iAmt, prm_sPart) {
		var v_Return = "";
		var v_isDate = false;
		var v_isDone = false;
		var v_isFail = false;
		var v_isTime = false;
		var v_iDay;
		var v_iDayTest = 0;
		var v_iHour;
		var v_iMilli;
		var v_iMin;
		var v_iMonth;
		var v_iSec;
		var v_iYear;
		var v_sListParts = "";
		var v_sPart = "";
		var v_dt = "";
		v_sListParts = "ymdhnslw";
		if (prm_sPart == "") {
			v_isFail = true;
		} else if (NuStr.isInt(prm_sPart)) {
			v_sPart = v_sListParts.substring(prm_sPart - 1, prm_sPart);
		} else if (v_sListParts.indexOf(prm_sPart) < 0) {
			v_isFail = true;
		} else {
			v_sPart = prm_sPart;
		}
		if (v_isFail) {
		} else if (prm_iAmt == 0) {
		} else {
			v_iYear = NuDate.getPart(prm_dt, NuDate.c_IPART_YEAR);
			v_iMonth = NuDate.getPart(prm_dt, NuDate.c_IPART_MONTH);
			v_iDay = NuDate.getPart(prm_dt, NuDate.c_IPART_DAY);
			v_iHour = NuDate.getPart(prm_dt, NuDate.c_IPART_HOUR);
			v_iMin = NuDate.getPart(prm_dt, NuDate.c_IPART_MIN);
			v_iSec = NuDate.getPart(prm_dt, NuDate.c_IPART_SEC);
			v_iMilli = NuDate.getPart(prm_dt, NuDate.c_IPART_MILLI);
			if (v_iYear >= 0) {
				v_isDate = true;
			}
			if (v_iHour >= 0) {
				v_isTime = true;
			}
			if (v_sPart == "y") {
				if (!v_isDate) {
					v_isFail = true;
				} else {
					v_iYear += prm_iAmt;
				}
			} else if (v_sPart == "m") {
				if (!v_isDate) {
					v_isFail = true;
				} else {
					v_iMonth += prm_iAmt;
				}
			} else if (v_sPart == "w") {
				if (!v_isDate) {
					v_isFail = true;
				} else {
					v_iDay += prm_iAmt * 7;
				}
			} else if (v_sPart == "h") {
				if (!v_isTime) {
					v_isFail = true;
				} else {
					v_iHour += prm_iAmt;
				}
			} else if (v_sPart == "n") {
				if (!v_isTime) {
					v_isFail = true;
				} else {
					v_iMin += prm_iAmt;
				}
			} else if (v_sPart == "s") {
				if (!v_isTime) {
					v_isFail = true;
				} else {
					v_iSec += prm_iAmt;
				}
			} else {
				if (!v_isDate) {
					v_isFail = true;
				} else {
					v_iDay += prm_iAmt;
				}
			}
		}
		if (v_isFail) {
		} else if (prm_iAmt == 0) {
		} else {
			if (v_isTime) {
				if ((v_iSec < 0) || (v_iSec >= 60)) {
					v_iMin += NuStr.toInt(v_iSec / 60);
					v_iSec = v_iSec % 60;
					if (v_iSec < 0) {
						v_iSec += 60;
						v_iMin -= 1;
					}
				}
				if ((v_iMin < 0) || (v_iMin >= 60)) {
					v_iHour += NuStr.toInt(v_iMin / 60);
					v_iMin = v_iMin % 60;
					if (v_iMin < 0) {
						v_iMin += 60;
						v_iHour -= 1;
					}
				}
				if ((v_iHour < 0) || (v_iHour >= 24)) {
					v_iDay += NuStr.toInt(v_iHour / 24);
					v_iHour = v_iHour % 24;
					if (v_iHour < 0) {
						v_iHour += 24;
						v_iDay -= 1;
					}
				}
			}
			if (v_isDate) {
				v_isDone = false;
				while (!v_isDone) {
					if (v_iMonth < 1) {
						v_iMonth += 12;
						v_iYear -= 1;
					} else if (v_iMonth > 12) {
						v_iMonth -= 12;
						v_iYear += 1;
					} else if (v_iDay < 1) {
						v_iMonth -= 1;
						if (v_iMonth < 1) {
							v_iMonth += 12;
							v_iYear -= 1;
						}
						v_dt = NuDate.fromParts(v_iYear, v_iMonth, 1, 0, 0, 0, 0, false);
						v_iDay += NuDate.getPart(v_dt, NuDate.c_IPART_DAYSINMONTH);
					} else {
						v_dt = NuDate.fromParts(v_iYear, v_iMonth, 1, 0, 0, 0, 0, false);
						v_iDayTest = NuDate.getPart(v_dt, NuDate.c_IPART_DAYSINMONTH);
						if (v_iDay > v_iDayTest) {
							v_iDay -= v_iDayTest;
							v_iMonth += 1;
						} else {
							v_isDone = true;
						}
					}
				}
			}
		}
		if (v_isFail) {
			v_Return = "dt!";
		} else if (prm_iAmt == 0) {
			v_Return = prm_dt;
		} else {
			v_Return = NuDate.fromParts(v_iYear, v_iMonth, v_iDay, v_iHour, v_iMin, v_iSec, v_iMilli, false);
		}
		return v_Return;
	}
	/**
	 * combineDateAndTime
	 */
	NuDate.combineDateAndTime = function(prm_dtDate, prm_dtTime) {
		var v_Return;
		var v_dtDate;
		var v_dtTime;
		if (prm_dtDate) {
			v_dtDate = "" + prm_dtDate;
		} else {
			v_dtDate = NuDate.now();
		}
		if (prm_dtTime) {
			v_dtTime = "" + prm_dtTime;
		} else {
			v_dtTime = NuDate.now();
		}
		v_Return = "dt!";
		if (!v_dtDate.startsWith("dt!")) {
		} else if (!v_dtTime.startsWith("dt!")) {
		} else {
			v_dtDate = NuDate.getPartByType(v_dtDate, NuDate.c_ITYPE_DATEONLY);
			v_dtTime = NuDate.getPartByType(v_dtTime, NuDate.c_ITYPE_TIMEONLY);
			v_Return = v_dtDate + v_dtTime.substring(3);
		}
		return v_Return;
	}
	/**
	 * difference
	 */
	NuDate.difference = function(prm_dt1, prm_dt2, prm_sPart) {
		var v_Return;
		var v_date1;
		var v_date2;
		var v_sListParts;
		v_sListParts = "ymdhnslw";
		if (v_sListParts.indexOf(prm_sPart) < 0) {
			v_Return = NuNum.c_NNOTANUMBER;
		} else {
			v_date1 = NuDate.getNativeDateTime(prm_dt1);
			v_date2 = NuDate.getNativeDateTime(prm_dt2);
			v_Return = v_date1.getTime() - v_date2.getTime();
			if (prm_sPart != "l") {
				v_Return = NuNum.toInt(v_Return / 1000);
				if (prm_sPart != "s") {
					v_Return = NuNum.toInt(v_Return / 60);
					if (prm_sPart != "n") {
						v_Return = NuNum.toInt(v_Return / 60);
						if (prm_sPart != "h") {
							v_Return = NuNum.toInt(v_Return / 24);
							switch (prm_sPart) {
							case "w":
								v_Return = NuNum.toInt(v_Return / 7);
								break;
							case "m":
								v_Return = NuNum.toInt(v_Return / 30);
								break;
							case "y":
								v_Return = NuNum.toInt(v_Return / 365.25);
								break;
							}
						}
					}
				}
			}
		}
		return v_Return;
	}
	/**
	 * fromParts
	 */
	NuDate.fromParts = function(prm_iYear, prm_iMonth, prm_iDay, prm_iHour, prm_iMin, prm_iSec, prm_iMilli, prm_isPm) {
		var v_Return;
		var v_isFail;
		var v_iHour;
		var v_iYear;
		v_Return = "dt!";
		v_iHour = prm_iHour;
		v_iYear = prm_iYear;
		v_isFail = false;
		if (v_iYear == -1) {
		} else if (v_iYear > 10000) {
			v_isFail = true;
		} else if (v_iYear < NuDate.c_IPIVOTYR) {
			v_iYear += 2000;
		} else if (v_iYear < 100) {
			v_iYear += 1900;
		} else if (v_iYear < 1000) {
			v_iYear += 1900;
		}
		if (!v_isFail) {
			if (v_iYear >= 0) {
				v_Return += v_iYear;
				if (prm_iMonth < 10) {
					v_Return += "0";
				}
				v_Return += prm_iMonth;
				if (prm_iDay < 10) {
					v_Return += "0";
				}
				v_Return += prm_iDay;
			}
			if (v_iHour >= 0) {
				if (v_iHour > 12) {
				} else if (prm_isPm) {
					v_iHour += 12;
				}
				if (v_iHour < 10) {
					v_Return += "0";
				}
				v_Return += v_iHour;
				if (prm_iMin < 10) {
					v_Return += "0";
				}
				v_Return += prm_iMin;
				if (prm_iSec < 10) {
					v_Return += "0";
				}
				v_Return += prm_iSec;
			}
		}
		return v_Return;
	}
	/**
	 * getDate
	 */
	NuDate.getDate = function(prm_dt) {
		var v_dt;
		if (prm_dt) {
			v_dt = prm_dt;
		} else {
			v_dt = NuDate.now();
		}
		return NuDate.getPartByType(v_dt, NuDate.c_ITYPE_DATEONLY);
	}
	/**
	 * getNativeDateTime
	 */
	NuDate.getNativeDateTime = function(prm_dtDateTime) {
		var v_iDay;
		var v_iHour;
		var v_iMilli;
		var v_iMin;
		var v_iMonth;
		var v_iSec;
		var v_iYear;
		var v_dtDate;
		if (!prm_dtDateTime) {
			return new Date();
		} else {
			v_dtDate = "" + prm_dtDateTime;
			if (!v_dtDate.startsWith("dt!")) {
				return new Date();
			} else {
				switch (v_dtDate.length) {
				case NuDate.c_ITYPE_DATEONLY:
					v_iYear = NuDate.getPart(v_dtDate, NuDate.c_IPART_YEAR);
					v_iMonth = NuDate.getPart(v_dtDate, NuDate.c_IPART_MONTH);
					v_iDay = NuDate.getPart(v_dtDate, NuDate.c_IPART_DAY);
					return new Date(v_iYear, v_iMonth - 1, v_iDay);
					break;
				case NuDate.c_ITYPE_DATETIME:
					v_iYear = NuDate.getPart(v_dtDate, NuDate.c_IPART_YEAR);
					v_iMonth = NuDate.getPart(v_dtDate, NuDate.c_IPART_MONTH);
					v_iDay = NuDate.getPart(v_dtDate, NuDate.c_IPART_DAY);
					v_iHour = NuDate.getPart(v_dtDate, NuDate.c_IPART_HOUR);
					v_iMin = NuDate.getPart(v_dtDate, NuDate.c_IPART_MIN);
					v_iSec = NuDate.getPart(v_dtDate, NuDate.c_IPART_SEC);
					return new Date(v_iYear, v_iMonth - 1, v_iDay, v_iHour, v_iMin, v_iSec);
					break;
				case NuDate.c_ITYPE_TIMEONLY:
					v_iHour = NuDate.getPart(v_dtDate, NuDate.c_IPART_HOUR);
					v_iMin = NuDate.getPart(v_dtDate, NuDate.c_IPART_MIN);
					v_iSec = NuDate.getPart(v_dtDate, NuDate.c_IPART_SEC);
					return new Date(0, 0, 0, v_iHour, v_iMin, v_iSec);
					break;
				}
			}
		}
	}
	/**
	 * getPart
	 */
	NuDate.getPart = function(prm_dt, prm_iPart) {
		var v_Return;
		var v_iLen;
		var v_calendar;
		v_Return = -1;
		v_iLen = prm_dt.length;
		switch (prm_iPart) {
		case NuDate.c_IPART_YEAR:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATEONLY:
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(3, 7));
				break;
			}
			break;
		case NuDate.c_IPART_MONTH:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATEONLY:
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(7, 9));
				break;
			}
			break;
		case NuDate.c_IPART_DAY:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATEONLY:
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(9, 11));
				break;
			}
			break;
		case NuDate.c_IPART_HOUR:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(11, 13));
				break;
			case NuDate.c_ITYPE_TIMEONLY:
				v_Return = NuStr.toInt(prm_dt.substring(3, 5));
				break;
			}
			break;
		case NuDate.c_IPART_MIN:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(13, 15));
				break;
			case NuDate.c_ITYPE_TIMEONLY:
				v_Return = NuStr.toInt(prm_dt.substring(5, 7));
				break;
			}
			break;
		case NuDate.c_IPART_SEC:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATETIME:
				v_Return = NuStr.toInt(prm_dt.substring(15, 17));
				break;
			case NuDate.c_ITYPE_TIMEONLY:
				v_Return = NuStr.toInt(prm_dt.substring(7, 9));
				break;
			}
			break;
		case NuDate.c_IPART_FIRSTDAYOFMONTH:
			v_calendar = new Date(NuDate.getPart(prm_dt, NuDate.c_IPART_YEAR), NuDate.getPart(prm_dt, NuDate.c_IPART_MONTH) - 1, 1);
			v_Return = v_calendar.getDay() + 1;
			break;
		case NuDate.c_IPART_DAYSINMONTH:
			switch (v_iLen) {
			case NuDate.c_ITYPE_DATEONLY:
			case NuDate.c_ITYPE_DATETIME:
				switch (NuDate.getPart(prm_dt, NuDate.c_IPART_MONTH)) {
				case 2:
					if (NuDate.isLeapYear(NuDate.getPart(prm_dt, NuDate.c_IPART_YEAR))) {
						v_Return = 29;
					} else {
						v_Return = 28;
					}
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					v_Return = 30;
					break;
				default:
					v_Return = 31;
					break;
				}
				break;
			}
			break;
		case NuDate.c_IPART_DAYOFWEEK:
			v_calendar = new Date(NuDate.getPart(prm_dt, NuDate.c_IPART_YEAR), NuDate.getPart(prm_dt, NuDate.c_IPART_MONTH) - 1, NuDate.getPart(prm_dt, NuDate.c_IPART_DAY));
			v_Return = v_calendar.getDay() + 1;
			break;
		}
		return v_Return;
	}
	/**
	 * getPartByType
	 */
	NuDate.getPartByType = function(prm_dt, prm_iType) {
		var v_Return = "";
		if (prm_dt.length == prm_iType) {
			v_Return = prm_dt;
		} else {
			switch (prm_iType) {
			case NuDate.c_ITYPE_DATETIME:
				v_Return = prm_dt;
				break;
			case NuDate.c_ITYPE_DATEONLY:
				switch (prm_dt.length) {
				case NuDate.c_ITYPE_DATETIME:
					v_Return = prm_dt.substring(0, NuDate.c_ITYPE_DATEONLY);
					break;
				}
				break;
			case NuDate.c_ITYPE_TIMEONLY:
				switch (prm_dt.length) {
				case NuDate.c_ITYPE_DATETIME:
					v_Return = "dt!" + prm_dt.substring(NuDate.c_ITYPE_DATEONLY);
					break;
				}
				break;
			}
		}
		return v_Return;
	}
	/**
	 * getTime
	 */
	NuDate.getTime = function(prm_dt) {
		var v_dt;
		if (prm_dt) {
			v_dt = prm_dt;
		} else {
			v_dt = NuDate.now();
		}
		return NuDate.getPartByType(v_dt, NuDate.c_ITYPE_TIMEONLY);
	}
	/**
	 * isLeapYear
	 */
	NuDate.isLeapYear = function(prm_iYear) {
		if (prm_iYear % 4 != 0) {
			return false;
		} else if (prm_iYear % 400 == 0) {
			return true;
		} else if (prm_iYear % 100 == 0) {
			return false;
		} else {
			return true;
		}
	}
	/**
	 * now
	 */
	NuDate.now = function() {
		var v_cal;
		v_cal = new Date();
		return NuDate.fromParts(v_cal.getFullYear(), v_cal.getMonth() + 1, v_cal.getDate(), v_cal.getHours(), v_cal.getMinutes(), v_cal.getSeconds(), 0, false);
	}
	/**
	 * setPart
	 */
	NuDate.setPart = function(prm_dt, prm_iPart, prm_iVal) {
		var v_iDay;
		var v_iHour;
		var v_iMilli;
		var v_iMin;
		var v_iMonth;
		var v_iSec;
		var v_iYear;
		v_iYear = NuDate.getPart(prm_dt, NuDate.c_IPART_YEAR);
		v_iMonth = NuDate.getPart(prm_dt, NuDate.c_IPART_MONTH);
		v_iDay = NuDate.getPart(prm_dt, NuDate.c_IPART_DAY);
		v_iHour = NuDate.getPart(prm_dt, NuDate.c_IPART_HOUR);
		v_iMin = NuDate.getPart(prm_dt, NuDate.c_IPART_MIN);
		v_iSec = NuDate.getPart(prm_dt, NuDate.c_IPART_SEC);
		v_iMilli = 0;
		switch (prm_iPart) {
		case NuDate.c_IPART_YEAR:
			v_iYear = prm_iVal;
			break;
		case NuDate.c_IPART_MONTH:
			v_iMonth = prm_iVal;
			break;
		case NuDate.c_IPART_DAY:
			v_iDay = prm_iVal;
			break;
		case NuDate.c_IPART_HOUR:
			v_iHour = prm_iVal;
			break;
		case NuDate.c_IPART_MIN:
			v_iMin = prm_iVal;
			break;
		case NuDate.c_IPART_SEC:
			v_iSec = prm_iVal;
			break;
		case NuDate.c_IPART_MILLI:
			v_iMilli = prm_iVal;
			break;
		default:
			break;
		}
		return NuDate.fromParts(v_iYear, v_iMonth, v_iDay, v_iHour, v_iMin, v_iSec, v_iMilli, false);
	}
	/**
	 * toStr
	 */
	NuDate.toStr = function(prm_dt, prm_sFmt) {
		var v_Return;
		var v_iHour;
		var v_iLen;
		var v_iPos;
		var v_sDay;
		var v_sHour;
		var v_sMin;
		var v_sMonth;
		var v_sSec;
		var v_sYear;
		v_iLen = prm_dt.length;
		if (v_iLen <= 0) {
		} else if (v_iLen == 3) {
		} else {
			switch (v_iLen) {
			case 9:
				v_sYear = "";
				v_sMonth = "";
				v_sDay = "";
				v_sHour = prm_dt.substring(3, 5);
				v_sMin = prm_dt.substring(5, 7);
				v_sSec = prm_dt.substring(7, 9);
				break;
			case 11:
				v_sYear = prm_dt.substring(3, 7);
				v_sMonth = prm_dt.substring(7, 9);
				v_sDay = prm_dt.substring(9, 11);
				v_sHour = "";
				v_sMin = "";
				v_sSec = "";
				break;
			case 17:
				v_sYear = prm_dt.substring(3, 7);
				v_sMonth = prm_dt.substring(7, 9);
				v_sDay = prm_dt.substring(9, 11);
				if (prm_dt.substring(11) == "000000") {
					v_sHour = "";
					v_sMin = "";
					v_sSec = "";
				} else {
					v_sHour = prm_dt.substring(11, 13);
					v_sMin = prm_dt.substring(13, 15);
					v_sSec = prm_dt.substring(15, 17);
				}
				break;
			default:
				v_sYear = "";
				v_sMonth = "";
				v_sDay = "";
				v_sHour = "";
				v_sMin = "";
				v_sSec = "";
				break;
			}
			if ((!prm_sFmt) || (prm_sFmt == "")) {
				v_Return = NuView.User.FormatDate;
			} else if (prm_sFmt == "SQL") {
				v_Return = "mm/dd/yyyy hh:nn:ss am";
			} else {
				v_Return = prm_sFmt;
			}
			v_iPos = v_Return.indexOf(" ");
			if (v_sHour.length == 0) {
				if (v_iPos < 0) {
				} else {
					v_Return = v_Return.substring(0, v_iPos);
				}
			} else if (v_sYear.length == 0) {
				if (v_iPos < 0) {
					v_Return = "hh:nn:ss am";
				} else if (v_iPos >= (v_Return.length - 3)) {
				} else {
					v_Return = v_Return.substring(v_iPos + 1);
				}
			}
			if (v_sYear.length != 0) {
				v_Return = NuStr.replace(v_Return, "yyyy", v_sYear);
				if (v_Return.indexOf("yy") >= 0) {
					v_Return = NuStr.replace(v_Return, "yy", v_sYear.substring(2));
				}
				v_Return = NuStr.replace(v_Return, "mm", v_sMonth);
				v_Return = NuStr.replace(v_Return, "dd", v_sDay);
			}
			if (v_sHour.length != 0) {
				v_iHour = NuStr.toInt(v_sHour);
				v_Return = NuStr.replace(v_Return, "nn", v_sMin);
				v_Return = NuStr.replace(v_Return, "ss", v_sSec);
				if (v_iHour < 12) {
				} else if (v_Return.indexOf("am") >= 0) {
					v_Return = NuStr.replace(v_Return, "am", "pm");
					if (v_iHour > 12) {
						v_iHour -= 12;
					}
				} else if (v_Return.indexOf("a") >= 0) {
					v_Return = NuStr.replace(v_Return, "a", "p");
					if (v_iHour > 12) {
						v_iHour -= 12;
					}
				}
				if (v_iHour == 0) {
					v_iHour = 12;
				}
				v_Return = NuStr.replace(v_Return, "hh", "" + v_iHour);
			}
		}
		return v_Return;
	}
/**
 * NuElement
 */
function NuElement() {}
	//
	// static items
	//
	/**
	 * addElement
	 */
	NuElement.addElement = function(prm_element, prm_parent) {
		if (prm_parent) {
			prm_parent.appendChild(prm_element);
		}
	}
	/**
	 * create
	 */
	NuElement.create = function(prm_sTag, prm_parent) {
		var v_Return;
		v_Return = document.createElement(prm_sTag);
		if (prm_parent) {
			NuElement.addElement(v_Return, prm_parent);
		}
		return v_Return;
	}
	/**
	 * createAttribute
	 */
	NuElement.createAttribute = function(prm_sAttribute, prm_sValue, prm_parent) {
		var v_Return;
		v_Return = document.createAttribute(prm_sAttribute);
		if (prm_sValue) {
			v_Return.nodeValue = prm_sValue;
		}
		if (prm_parent) {
			prm_parent.setAttributeNode(v_Return);
		}
		return v_Return;
	}
	/**
	 * createNodeByJSON
	 */
	NuElement.createNodeByJSON = function(prm_elemParent, prm_json) {
		var v_sTag;
		var v_elemNode;
		if (prm_elemParent) {
			v_sTag = prm_json["tag"];
			if (!v_sTag) {
				v_sTag = "div";
			}
			v_elemNode = NuElement.create(v_sTag, prm_elemParent);
			NuElement.setAttributesByJSON(v_elemNode, prm_json);
		}
	}
	/**
	 * getAttribute
	 */
	NuElement.getAttribute = function(prm_element, prm_sAttribute) {
		var v_Return;
		if (!prm_element) {
			v_Return = null;
		} else if (prm_sAttribute == "class" && NuView.User.Browser == "IE") {
			// IE 6 limitation
			v_Return = prm_element.getAttribute("className");
		} else {
			v_Return = prm_element.getAttribute(prm_sAttribute);
		}
		return v_Return;
	}
	/**
	 * getAttributeById
	 */
	NuElement.getAttributeById = function(prm_sId, prm_sAttribute) {
		return NuElement.getAttribute(NuElement.getById(prm_sId), prm_sAttribute);
	}
	/**
	 * getAttributeList
	 */
	NuElement.getAttributeList = function(prm_element) {
		if (prm_element) {
			return prm_element.attributes;
		} else {
			return null;
		}
	}
	/**
	 * getAttributeValueById
	 */
	NuElement.getAttributeValueById = function(prm_sId, prm_sAttribute) {
		var v_Return;
		v_Return = NuElement.getAttribute(NuElement.getById(prm_sId), prm_sAttribute);
		if (!v_Return) {
			v_Return = "";
		}
		return v_Return;
	}
	/**
	 * getById
	 */
	NuElement.getById = function(prm_sId) {
		var v_Return;
		v_Return = document.getElementById(prm_sId);
		if (v_Return) {
		} else if (!document.forms[0]) {
		} else {
			v_Return = document.forms[0].elements[prm_sId];
		}
		return v_Return;
	}
	/**
	 * getByXpath
	 */
	NuElement.getByXpath = function(prm_element, prm_sXpath) {
		var v_Return;
		var v_sTag;
		var v_aXpath;
		var v_foreachNode;
		var v_foreachTag;
		var v_element;
		var v_elementlist;
		if (prm_sXpath) {
			v_Return = [prm_element];
			v_aXpath = prm_sXpath.split("/");
			v_foreachNode = new NuForEach();
			v_foreachTag = new NuForEach(v_aXpath);
			while (v_foreachTag.next()) {
				v_sTag = v_foreachTag.get();
				v_foreachNode.setList(v_Return);
				v_Return = [];
				while (v_foreachNode.next()) {
					v_element = v_foreachNode.get();
					if (v_element) {
						v_elementlist = v_element.getElementsByTagName(v_sTag);
						if (v_elementlist) {
							NuArray.append(v_Return, v_elementlist);
						} else {
							v_foreachNode.cancel();
							v_foreachTag.cancel();
						}
					}
				}
			}
		}
		return v_Return;
	}
	/**
	 * getContent
	 */
	NuElement.getContent = function(prm_element) {
		var v_i;
		var v_iCnt;
		var v_sbDsp;
		var v_nodelist;
		if (!prm_element) {
			return "";
		} else {
			v_sbDsp = new StringBuffer();
			v_nodelist = prm_element.childNodes;
			if (v_nodelist) {
				v_iCnt = v_nodelist.length;
				for (v_i = 0; v_i < v_iCnt; v_i++) {
					NuElement.toStr(v_nodelist.item(v_i), v_sbDsp);
				}
			}
			return v_sbDsp.toString();
		}
	}
	/**
	 * getContentByXpath
	 */
	NuElement.getContentByXpath = function(prm_element, prm_sXpath) {
		var v_aRowList;
		v_aRowList = NuElement.getByXpath(prm_element, prm_sXpath);
		if (v_aRowList.length == 0) {
			return "";
		} else {
			return NuElement.getContent(v_aRowList[0]);
		}
	}
	/**
	 * getHeight
	 */
	NuElement.getHeight = function(prm_element) {
		return prm_element.offsetHeight;
	}
	/**
	 * getHtmlById
	 */
	NuElement.getHtmlById = function(prm_sId) {
		var v_objNode;
		v_objNode = NuElement.getById(prm_sId);
		if (v_objNode) {
			return v_objNode.innerHTML;
		} else {
			return null;
		}
	}
	/**
	 * getLeft
	 */
	NuElement.getLeft = function(prm_element) {
		var v_Return;
		var v_element;
		v_Return = 0;
		v_element = prm_element;
		while (v_element.offsetParent) {
			v_Return += v_element.offsetLeft;
			v_element = v_element.offsetParent;
		}
		return v_Return;
	}
	/**
	 * getName
	 */
	NuElement.getName = function(prm_element) {
		var v_Return;
		v_Return = NuElement.getAttribute(prm_element, "id");
		if (!v_Return) {
			v_Return = NuElement.getAttribute(prm_element, "name");
		}
		return v_Return;
	}
	/**
	 * getStyle
	 */
	NuElement.getStyle = function(prm_element, prm_sStyle) {
		if (prm_element) {
			return prm_element.style[prm_sStyle];
		} else {
			return null;
		}
	}
	/**
	 * getTag
	 */
	NuElement.getTag = function(prm_element) {
		if (prm_element) {
			return prm_element.nodeName.toLowerCase();
		} else {
			return null;
		}
	}
	/**
	 * getTop
	 */
	NuElement.getTop = function(prm_element) {
		var v_Return;
		var v_element;
		v_Return = 0;
		v_element = prm_element;
		while (v_element.offsetParent) {
			v_Return += v_element.offsetTop;
			v_element = v_element.offsetParent;
		}
		return v_Return;
	}
	/**
	 * getValueById
	 */
	NuElement.getValueById = function(prm_sId) {
		var v_Return;
		var v_objNode;
		v_Return = null;
		v_objNode = NuElement.getById(prm_sId);
		if (!v_objNode) {
		} else if (!v_objNode.type) {
		} else if (v_objNode.type == "checkbox") {
			if (v_objNode.checked) {
				v_Return = "Yes";
			} else {
				v_Return = "No";
			}
		} else if ((v_objNode.type == "select-one") || ((v_objNode.type == "select-multiple"))) {
			v_Return = v_objNode.options[v_objNode.selectedIndex].value;
		} else if (v_objNode.type) {
			v_Return = v_objNode.value;
		} else {
			v_Return = v_objNode.innerHTML;
		}
		return v_Return;
	}
	/**
	 * getWidth
	 */
	NuElement.getWidth = function(prm_element) {
		return prm_element.offsetWidth;
	}
	/**
	 *makeEditableById
	 *@prm_sId: Id fo the target control
	 *v_Return: (true/false) whether the transformation was successful or not
	 */
	NuElement.makeEditableById = function(prm_sId) {
		var v_Return = false;
		var v_iI = 0;
		var v_iTgtLen;
		var v_oBckCtl;
		var v_oNewDisp;
		var v_oNewNode;
		var v_oOldNode;
		var v_oOrigCtl;
		var v_oRootNode;
		var v_elemOrig = [];
		try {
		v_oNewNode = NuElement.getById(prm_sId);
		if (v_oNewNode && v_oNewNode.parentNode && prm_sId && prm_sId.match(/[A-Z]_[A-Z0-9]+_[A-Z0-9]+_[0-9]+/i)) {
			v_sVal = NuElement.getValueById(prm_sId);
			v_oRootNode = v_oNewNode.parentNode;
			v_oNewDisp = NuElement.getById('F_' + prm_sId.substring(2));
			v_oBckCtl = NuElement.getById('F_SysBck' + v_iI + prm_sId.substring(2));
			while (v_oBckCtl && v_oBckCtl.getAttribute && !(v_oBckCtl.getAttribute("isbackup") || v_oBckCtl.getAttribute("isbackup") == "") && v_iI < 10) {
				v_iI++;
				v_oBckCtl = NuElement.getById('F_SysBck' + v_iI + prm_sId.substring(2));
			}
			v_oBckOrigCtl = NuElement.getById('N_SysBck' + v_iI + prm_sId.substring(2));
			v_Return = v_oBckCtl?true:false;
			if (v_oRootNode && v_oBckCtl && v_oBckOrigCtl && v_Return) {
				NuElement.setAttribute(v_oBckOrigCtl,"id",prm_sId);
				NuElement.setAttribute(v_oBckOrigCtl,"name",prm_sId);
				//v_oBckOrigCtl.id = prm_sId;
				//v_oBckOrigCtl.name = prm_sId;
				while (v_oBckCtl.hasChildNodes()) {
					v_elemOrig[v_elemOrig.length] = v_oBckCtl.removeChild(v_oBckCtl.firstChild);
				}
				v_iTgtLen = v_elemOrig.length;
				while (v_oRootNode.hasChildNodes()) {
					v_oRootNode.removeChild(v_oRootNode.firstChild);
				}
				for (v_iI = 0; v_iI < v_iTgtLen; v_iI++) {
					v_oRootNode.appendChild(v_elemOrig[v_iI]);
				}
				NuElement.setValueById(prm_sId, v_sVal);
			} else {
				v_Return = false;
			}
		}
		} catch (v_objErr) {
			msgUnknown("makeEditableById", prm_sId, v_objErr);
		}
		return v_Return;
	}
	/**
	 *makeReadOnlyById
	 *This will convert the control to the read only mode
	 *@prm_sId: Id fo the target control
	 *@v_Return: (true/false) whether the transformation was successful or not
	 */
	NuElement.makeReadOnlyById = function(prm_sId) {
		var v_Return = false;
		var v_iI = 0;
		var v_sNutype;
		var v_sRODisp;
		var v_sVal;
		var v_sValDisp;
		var v_oNewDisp;
		var v_oOldNode;
		var v_oOrigCtl;
		var v_oRODisp;
		var v_oRootNode;
		var v_elemBckCtl;
		var v_elemNewNode;
		try {
			v_oOldNode = NuElement.getById(prm_sId);
			if (prm_sId && prm_sId.match(/[A-Z]_[A-Z0-9]+_[A-Z0-9]+_[0-9]+/i) && v_oOldNode) {
				v_sNutype = NuElement.getAttributeById(prm_sId, "nutype");
				v_oRootNode = v_oOldNode.parentNode;
				v_sVal = NuElement.getValueById(prm_sId);
				v_sValDisp = v_sVal;
				v_sRODisp = 'F_' + prm_sId.substring(2);
				v_oRODisp = NuElement.getById(v_sRODisp);
				if (v_oRODisp && NuElement.getAttribute(v_oRODisp, "class") && NuElement.getAttribute(v_oRODisp, "class").toLowerCase() == "ctlreadonly") {
				} else {
					switch (v_oOldNode.type) {
					case "select-one":
					case "select-multiple":
						if (v_oOldNode.selectedIndex < 0) {
						} else {
							v_sValDisp = v_oOldNode.options[v_oOldNode.selectedIndex].text + "";
						}
					}
					v_elemBckCtl = NuElement.getById('F_SysBck' + v_iI + prm_sId.substring(2));
					while (v_elemBckCtl && v_elemBckCtl.getAttribute && !(v_elemBckCtl.getAttribute("isbackup") || v_elemBckCtl.getAttribute("isbackup") == "")) {
						v_iI++;
						v_elemBckCtl = NuElement.getById('F_SysBck' + v_iI + prm_sId.substring(2));
					}
					if (v_elemBckCtl) {
					//backup control already present and v_elemBckCtl pointing to that therefore overwrite it.
					} else {
						//no previous version of the backup control present create new
						v_elemBckCtl = NuElement.create("span");
						NuElement.setAttribute(v_elemBckCtl,"id", "F_SysBck" + v_iI + prm_sId.substring(2));
						NuElement.setAttribute(v_elemBckCtl,"class", "visibleNo");
						NuElement.setAttribute(v_elemBckCtl,"isbackup","yes");
					}
					//Empty the backup element if present
					while (v_elemBckCtl.hasChildNodes()) {
						v_elemBckCtl.removeChild(v_elemBckCtl.firstChild);
					}
					//Changing the Orignal Control Id and Name to the N_SysBck
					NuElement.setAttribute(v_oOldNode,"name", "N_SysBck" + v_iI + prm_sId.substring(2));
					NuElement.setAttribute(v_oOldNode,"id", "N_SysBck" + v_iI + prm_sId.substring(2));
					//Empty the Root Node and then add the readonly control and the backup node set containing the actual elements
					while (v_oRootNode.hasChildNodes()) {
						NuElement.addElement(v_oRootNode.removeChild(v_oRootNode.firstChild), v_elemBckCtl);
					}
					//Creating the Backup Nodes
					if (NuView.User.Browser == "IE") {
						v_elemNewNode = NuElement.create('<input name="' + prm_sId + '" />'); // Due to the IE limitation of not able to set the name attribute for a element created using createElement function
					} else {
						v_elemNewNode = NuElement.create("input");
						NuElement.setAttribute(v_elemNewNode,"name", prm_sId);
					}
					NuElement.setAttribute(v_elemNewNode,"type", "hidden");
					NuElement.setAttribute(v_elemNewNode,"value", v_sVal);
					NuElement.setAttribute(v_elemNewNode,"nutype", v_sNutype);
					v_oNewDisp = NuElement.create("span");
					NuElement.setAttribute(v_oNewDisp,"id", v_sRODisp);
					NuElement.setAttribute(v_oNewDisp,"class", "ctlReadOnly");
					NuElement.addElement(document.createTextNode(v_sValDisp), v_oNewDisp);
					// Adding the Readonly control and the backup nodes
					NuElement.addElement(v_oNewDisp, v_oRootNode);
					NuElement.addElement(v_elemNewNode, v_oRootNode);
					NuElement.addElement(v_elemBckCtl, v_oRootNode);
					v_Return = true; 
				}
			}
		} catch (v_objErr) {
			msgUnknown("makeReadOnlyById", prm_sId, v_objErr);
		}
		return v_Return;
	}
	/**
	 * removeElement
	 */
	NuElement.removeElement = function(prm_element) {
		var v_objParent;
		v_objParent = prm_element.parentNode;
		if (v_objParent) {
			v_objParent.removeChild(prm_element);
		}
	}
	/**
	 * setAttribute
	 */
	NuElement.setAttribute = function(prm_element, prm_sAttribute, prm_sValue) {
		if (!prm_element) {
		} else if (prm_sAttribute == "class") {
			// IE 6 limitation
			prm_element.className = prm_sValue;
		} else {
			prm_element.setAttribute(prm_sAttribute, prm_sValue);
		}
	}
	/**
	 * setAttributeById
	 */
	NuElement.setAttributeById = function(prm_sId, prm_sAttribute, prm_sValue) {
		NuElement.setAttribute(NuElement.getById(prm_sId), prm_sAttribute, prm_sValue);
	}
	/**
	 * setAttributesByJSON
	 */
	NuElement.setAttributesByJSON = function(prm_element, prm_json) {
		var v_i;
		var v_iCnt;
		var v_sAttribute;
		var v_sValue;
		var v_aNodeList;
		if (!prm_element) {
		} else if (!prm_json) {
		} else {
			for (v_sAttribute in prm_json) {
				switch (v_sAttribute) {
				case "tag":
					break;
				case "childNodes":
					v_aNodeList = prm_json[v_sAttribute];
					v_iCnt = v_aNodeList.length;
					for (v_i = 0; v_i < v_iCnt; v_i++) {
						NuElement.createNodeByJSON(prm_element, v_aNodeList[v_i]);
					}
					break;
				case "content":
					prm_element.nodeValue = v_sValue;
					break;
				default:
					v_sValue = prm_json[v_sAttribute];
					prm_element.setAttribute(v_sAttribute, v_sValue);
					break;
				}
			}
		}
	}
	/**
	 * setContent
	 */
	NuElement.setContent = function(prm_element, prm_sValue) {
		prm_element.innerHTML = prm_sValue;
	}
	/**
	 * setHtml
	 */
	NuElement.setHtml = function(prm_node, prm_objHtml) {
		var v_sVal;
		if (prm_node) {
			if (!prm_objHtml) {
				v_sVal = "";
			} else if (prm_objHtml instanceof String) {
				v_sVal = prm_objHtml;
			} else if (prm_objHtml instanceof StringBuffer) {
				v_sVal = prm_objHtml.toString();
			} else {
				v_sVal = prm_objHtml.toString();
			}
			if ((v_sVal.length == 0) && (prm_node.innerHTML.length == 0)) {
			} else {
				prm_node.innerHTML = v_sVal;
			}
		}
	}
	/**
	 * setHtmlById
	 */
	NuElement.setHtmlById = function(prm_sId, prm_objHtml) {
		var v_objNode;
		v_objNode = NuElement.getById(prm_sId);
		if (v_objNode) {
			NuElement.setHtml(v_objNode, prm_objHtml);
		}
	}
	/**
	 * setStyle
	 */
	NuElement.setStyle = function(prm_element, prm_sStyle, prm_sValue) {
		if (prm_element) {
			prm_element.style[prm_sStyle] = prm_sValue;
		}
	}
	/**
	 * setValueById
	 */
	NuElement.setValueById = function(prm_sId, prm_sValue) {
		var v_Return;
		var v_isChanged;
		var v_i;
		var v_iCnt;
		var v_objNode;
		v_Return = false;
		v_objNode = NuElement.getById(prm_sId);
		if (!v_objNode) {
		} else if (!v_objNode.type) {
		} else if ((v_objNode.type == "text") || (v_objNode.type == "hidden") || (v_objNode.type == "textarea") || (v_objNode.type == "password")) {
			if (v_objNode.value != prm_sValue) {
				v_objNode.value = prm_sValue;
				v_Return = true;
			}
		} else if (v_objNode.type == "checkbox") {
			if (prm_sValue == "Yes") {
				v_objNode.checked = true;
			} else {
				v_objNode.checked = false;
			}
		} else if ((v_objNode.type == "select-one") || ((v_objNode.type == "select-multiple"))) {
			v_iCnt = v_objNode.options.length;
			for (v_i = 0; v_i < v_iCnt; v_i++) {
				if (v_objNode.options[v_i].value != prm_sValue) {
				} else if (v_objNode.selectedIndex != v_i) {
					v_objNode.selectedIndex = v_i;
					v_Return = true;
				}
			}
		}
	}
	/**
	 * toStr
	 */
	NuElement.toStr = function(prm_element, prm_sbDsp) {
		var v_i;
		var v_iCnt;
		var v_sNodeName;
		var v_sbDsp;
		var v_child;
		var v_nodelist;
		if (prm_sbDsp) {
			v_sbDsp = prm_sbDsp;
		} else {
			v_sbDsp = new StringBuffer();
		}
		v_sNodeName = prm_element.nodeName;
		switch (v_sNodeName) {
		case "#document":
			v_nodelist = prm_element.childNodes;
			if (v_nodelist) {
				v_iCnt = v_nodelist.length;
				for (v_i = 0; v_i < v_iCnt; v_i++) {
					NuElement.toStr(v_nodelist.item(v_i), v_sbDsp);
				}
			}
			break;
		case "#text":
			v_sbDsp.append(prm_element.nodeValue);
			break;
		case "#cdata-section":
			v_sbDsp.append('\n<![CDATA[\n');
			v_sbDsp.append(prm_element.nodeValue);
			v_sbDsp.append(']]>');
			break;
		case "#comment":
			v_sbDsp.append('\n<!--\n');
			v_sbDsp.append(prm_element.nodeValue);
			v_sbDsp.append('-->');
			break;
		default:
			v_sbDsp.append('\n<');
			v_sbDsp.append(prm_element.nodeName);
			v_nodelist = prm_element.attributes;
			if (v_nodelist) {
				v_iCnt = v_nodelist.length;
				for (v_i = 0; v_i < v_iCnt; v_i++) {
					v_child = v_nodelist.item(v_i);
					v_sbDsp.append(' ');
					v_sbDsp.append(v_child.nodeName);
					v_sbDsp.append('="');
					v_sbDsp.append(v_child.nodeValue);
					v_sbDsp.append('"');
				}
			}
			v_sbDsp.append('>');
			v_nodelist = prm_element.childNodes;
			if (v_nodelist) {
				v_iCnt = v_nodelist.length;
				for (v_i = 0; v_i < v_iCnt; v_i++) {
					NuElement.toStr(v_nodelist.item(v_i), v_sbDsp);
				}
			}
			v_sbDsp.append('</');
			v_sbDsp.append(prm_element.nodeName);
			v_sbDsp.append('>');
			break;
		}
		return v_sbDsp.toString();
	}
//
// end of NuElement
//
/**
 * NuEvent
 */
function NuEvent(prm_event) {
	/**
	 * finalize
	 */
	this.finalize = function() {
		this.shutdown();
	}
	/**
	 * shutdown
	 */
	this.shutdown = function() {
		for (v_sProp in this) {
			delete this[v_sProp];
		}
	}
	/**
	 * cancel
	 */
	this.cancel = function() {
		v_event = this[NuEvent.c_SPARAM_NATIVEEVENT];
		if (v_event) {
			delete this[NuEvent.c_SPARAM_NATIVEEVENT];
			NuEvent.cancel(v_event);
		}
	}
	/**
	 * initialize
	 */
	this.initialize = function(prm_event) {
		var v_iPos;
		var v_sId;
		var v_sPart;
		var v_ctl;
		var v_event;
		var v_parent;
		var v_target;
		v_event = prm_event || window.event;
		if (v_event) {
			this[NuEvent.c_SPARAM_NATIVEEVENT] = v_event;
			if (v_event.srcElement) {
				v_target = v_event.srcElement;
			} else if (v_event.target) {
				v_target = v_event.target;
			}
			this[NuEvent.c_SPARAM_TARGETNODE] = v_target;
			this[NuEvent.c_SPARAM_PARENTNODE] = v_target.parentNode;
			v_sId = NuElement.getAttribute(v_target, "id");
			if (!v_sId) {
				v_sId = NuElement.getAttribute(v_target, "name");
			}
			if (!v_sId) {
				v_sId = NuElement.getAttribute(v_target.parentNode, "id");
			}
			if (!v_sId) {
				v_sId = NuElement.getAttribute(v_target.parentNode, "name");
			}
			if (v_sId) {
				v_iPos = v_sId.indexOf("-");
				if (v_iPos > 0) {
					v_sPart = v_sId.substring(v_iPos + 1);
					v_sId = v_sId.substring(0, v_iPos);
					this[NuEvent.c_SPARAM_CONTROLPART] = v_sPart;
				}
				this[NuEvent.c_SPARAM_TARGETNAME] = v_sId;
				v_ctl = NuView.Document.Controls.get(v_sId);
				if (v_ctl) {
					this[NuEvent.c_SPARAM_CONTROL] = v_ctl;
				}
			}
		}
	}
	// initialize
	this.initialize(prm_event);
}
	//
	// static items
	//
	/**
	 * cancel
	 */
	NuEvent.cancel = function(prm_event) {
		var v_event;
		v_event = prm_event || window.event;
		if (!v_event) {
		} else if (v_event.stopPropagation) {
			v_event.stopPropagation();
		} else if (v_event.cancelBubble) {
			v_event.cancelBubble = true;
		}
	}
	/**
	 * getNodeTarget
	 */
	NuEvent.getNodeTarget = function(prm_event) {
		var v_event;
		v_event = prm_event || window.event;
		if (!v_event) {
			return null;
		} else if (v_event.srcElement) {
			return v_event.srcElement;
		} else if (v_event.target) {
			return v_event.target;
		} else {
			return null;
		}
	}
	// Events
	NuEvent.c_SEVENT_AFTERLOAD = "afterload";
	NuEvent.c_SEVENT_ONCHANGE = "onchange";
	NuEvent.c_SEVENT_ONCLICK = "onclick";
	NuEvent.c_SEVENT_ONLOAD = "onload";
	NuEvent.c_SEVENT_ONMOUSEOVER = "onmouseover";
	NuEvent.c_SEVENT_ONMOUSEOUT = "onmouseout";
	NuEvent.c_SEVENT_ADD = "add";
	NuEvent.c_SEVENT_DELETE = "delete";
	NuEvent.c_SEVENT_NAVIGATE = "navigate";
	NuEvent.c_SEVENT_SAVE = "save";
	NuEvent.c_SEVENT_SUBMIT = "submit";
	NuEvent.c_SEVENT_UNDO = "undo";
	// Parameters
	NuEvent.c_SPARAM_CONTROL = "control";
	NuEvent.c_SPARAM_CONTROLPART = "controlpart";
	NuEvent.c_SPARAM_NATIVEEVENT = "nativeevent";
	NuEvent.c_SPARAM_PARENTNODE = "parentnode";
	NuEvent.c_SPARAM_TARGETNAME = "targetname";
	NuEvent.c_SPARAM_TARGETNODE = "targetnode";
/**
 * NuFile
 */
function NuFile() {}
	//
	// static items
	//
	/**
	 * getPath
	 */
	NuFile.getPath = function(prm_sPathType, prm_sVal) {
		var v_Return = "";
		if (prm_sPathType == "Image") {
			v_Return = NuView.User.getPathImages();
		} else if (prm_sPathType == "Style") {
			v_Return = NuView.User.getPathStyles();
		}
		if (prm_sVal == "") {
		} else if (v_Return == "") {
			v_Return = prm_sVal;
		} else {
			v_Return += "/" + prm_sVal;
		}
		return v_Return;
	}
/**
 * NuForEach
 */
function NuForEach(prm_object) {
	this._i;
	this._iCnt;
	this._object;
	/**
	 * cancel
	 */
	this.cancel = function() {
		this.initialize(null);
	}
	/**
	 * get
	 */
	this.get = function() {
		if (this._object) {
			return this._object[this._i];
		} else {
			return null;
		}
	}
	/**
	 * getCount
	 */
	this.getCount = function() {
		return this._iCnt;
	}
	/**
	 * getIndex
	 */
	this.getIndex = function() {
		return this._i;
	}
	/**
	 * initialize
	 */
	this.initialize = function(prm_object) {
		this._i = -1;
		if (!prm_object) {
			this._object = null;
		} else if (typeof prm_object == "string") {
			this._object = [prm_object];
		} else if (prm_object.length) {
			// Note: length check must come before childNodes because of IE form[0].elements handling
			this._object = prm_object;
		} else if (prm_object.childNodes) {
			this._object = prm_object.childNodes;
		} else {
			this._object = [prm_object];
		}
		this.reset();
	}
	/**
	 * next
	 */
	this.next = function() {
		this._i++;
		if (this._i < this._iCnt) {
			return true;
		} else {
			return false;
		}
	}
	/**
	 * reset
	 */
	this.reset = function() {
		this._i = -1;
		if (!this._object) {
			this._iCnt = 0;
		} else {
			this._iCnt = this._object.length;
		}
	}
	/**
	 * setList
	 */
	this.setList = function(prm_object) {
		this.initialize(prm_object);
	}
	this.initialize(prm_object);
	/**
	 * toString
	 */
	this.toString = function() {
		return "" + this._object;
	}
}
/**
 * NuHash
 */
function NuHash() {}
	//
	// static items
	//
	/**
	 * getNameList
	 */
	NuHash.getNameList = function(prm_object) {
		var v_sProp;
		var v_sbDsp;
		v_sbDsp = new StringBuffer();
		for (v_sProp in prm_object) {
			v_sbDsp.append(v_sProp + '\n');
		}
		return v_sbDsp.toString();
	}
	/**
	 * remove
	 */
	NuHash.remove = function(prm_object, prm_sKey) {
		delete prm_object[prm_sKey];
	}
	/**
	 * set
	 */
	NuHash.set = function(prm_object, prm_sKey, prm_objValue) {
		prm_object[prm_sKey] = prm_objValue;
	}
	/**
	 * toStr
	 */
	NuHash.toStr = function(prm_object) {
		var v_sProp;
		var v_sbDsp;
		v_sbDsp = new StringBuffer();
		for (v_sProp in prm_object) {
			v_sbDsp.append(v_sProp + '=' + prm_object[v_sProp] + '\n');
		}
		return v_sbDsp.toString();
	}
	/**
	 * toXml
	 */
	NuHash.toXml = function(prm_object, prm_sbDisplay) {
		var v_sProp;
		var v_sbDsp;
		v_sbDsp = prm_sbDisplay || new StringBuffer();
		for (v_sProp in prm_object) {
			v_sbDsp.append('<' + v_sProp + '>' + prm_object[v_sProp] + '</' + v_sProp + '>');
		}
		if (prm_sbDisplay) {
			return null;
		} else {
			return v_sbDsp.toString();
		}
	}
/**
 * NuMny
 */
function NuMny() {}
	//
	// static items
	//
	/**
	 * toNum
	 */
	NuMny.toNum = function(prm_mnyVal) {
		var v_sVal;
		v_sVal = String(prm_mnyVal);
		if (NuStr.startsWith(v_sVal, "mny!")) {
			v_sVal = v_sVal.substring(4);
		}
		return NuStr.toNum(v_sVal);
	}
	/**
	 * toStr
	 */
	NuMny.toStr = function(prm_mnyVal, prm_sFmt) {
		var v_Return;
		var v_bIncrement;
		var v_i;
		var v_iIntPart;
		var v_iLen;
		var v_iPos;
		var v_cChar;
		var v_sAfterDecimal;
		var v_sBeforeDecimal;
		var v_sAfterFormat;
		var v_sBeforeFormat;
		var v_sVal;
		v_Return = "";
		v_sVal = String(prm_mnyVal);
		if (NuStr.startsWith(v_sVal, "mny!")) {
			v_sVal = v_sVal.substring(4);
		}
		v_iIntPart = NuStr.toInt(v_sVal);
		v_sBeforeDecimal = "" + v_iIntPart;
		v_sAfterDecimal = NuNum.toStr(NuStr.toNum(v_sVal) - v_iIntPart).substring(2);
		v_sBeforeFormat = "";
		v_sAfterFormat = "";
		if ((!prm_sFmt) || (prm_sFmt.length == 0)) {
			if (NuView.User.FormatMoney == "") {
				v_sAfterFormat = "0000";
				v_sBeforeFormat = "1,000,000";
			} else {
				v_iPos = NuView.User.FormatMoney.lastIndexOf(".");
				if (v_iPos < 0) {
					v_sAfterFormat = "";
					v_sBeforeFormat = NuView.User.FormatMoney;
				} else {
					v_sBeforeFormat = NuView.User.FormatMoney.substring(0, v_iPos);
					v_sAfterFormat = NuView.User.FormatMoney.substring(v_iPos + 1);
				}
			}
		} else {
			v_iPos = prm_sFmt.lastIndexOf(".");
			if (v_iPos < 0) {
				v_sAfterFormat = "";
				v_sBeforeFormat = prm_sFmt;
			} else {
				v_sBeforeFormat = prm_sFmt.substring(0, v_iPos);
				v_sAfterFormat = prm_sFmt.substring(v_iPos + 1);
			}
		}
		v_iLen = v_sAfterFormat.length;
		if (v_iLen != 0) {
			v_iPos = 0;
			v_bIncrement = false;
			if (v_iLen < v_sAfterDecimal.length) {
				v_cChar = v_sAfterDecimal.charAt(v_iLen);
				if (v_cChar >= '5') {
					v_bIncrement = true;
				}
			}
			for (v_i = 1; v_i <= v_iLen; v_i++) {
				v_cChar = v_sAfterFormat.charAt(v_i - 1);
				if ((v_cChar >= '0') && (v_cChar <= '9')) {
					v_iPos += 1;
					if (v_iPos <= v_sAfterDecimal.length) {
						v_Return += v_sAfterDecimal.charAt(v_iPos - 1);
					} else {
						v_Return += '0';
					}
				} else {
					v_Return += v_cChar;
				}
			}
			if (v_bIncrement) {
				v_sVal = "";
				v_iLen = v_Return.length;
				for (v_i = 1; v_i <= v_iLen; v_i++) {
					v_iTemp = NuStr.toInt(v_Return.charAt(v_iLen - v_i) + "");
					if (v_bIncrement) {
						v_iTemp += 1;
					}
					if (v_iTemp > 9) {
						v_bIncrement = true;
						v_sVal = "0" + v_sVal;
					} else {
						v_sVal = v_iTemp + v_sVal;
						v_bIncrement = false;
					}
				}
				v_Return = v_sVal;
			}
			v_Return = '.' + v_Return;
		}
		v_iLen = v_sBeforeFormat.length;
		if (v_iLen != 0) {
			if (v_bIncrement) {
				v_sBeforeDecimal = (NuStr.toInt(v_sBeforeDecimal) + 1) + "";
			}
			v_iPos = 0;
			for (v_i = 1; v_i <= v_iLen; v_i++) {
				v_cChar = v_sBeforeFormat.charAt(v_iLen - v_i);
				if ((v_cChar >= '0') && (v_cChar <= '9')) {
					v_iPos += 1;
					if (v_iPos <= v_sBeforeDecimal.length) {
						v_Return = v_sBeforeDecimal.charAt(v_sBeforeDecimal.length - v_iPos) + v_Return;
					}
				} else {
					switch (v_cChar) {
					case ',':
					case '.':
					case '/':
					case ':':
						if (v_iPos < v_sBeforeDecimal.length) {
							v_Return = v_cChar + v_Return;
						}
						break;
					default:
						v_Return = v_cChar + v_Return;
						break;
					}
				}
			}
		}
		return v_Return;
	}
/**
 * NuNum
 */
function NuNum() {
}
	NuNum.c_NNOTANUMBER = -999999999;
	//
	// static items
	//
	/**
	 * round
	 */
	NuNum.round = function(prm_nVal, prm_sDir, prm_nRndAmt) {
		var v_iWork;
		var v_nWork;
		var v_nRndInv;
		v_nRndInv = 1 / prm_nRndAmt;
		v_nWork = prm_nVal * v_nRndInv;
		v_iWork = NuStr.toInt(v_nWork);
		if (v_iWork == v_nWork) {
			return prm_nVal;
		} else if (prm_sDir == "Up") {
			return (v_iWork * v_nRndInv) + prm_nRndAmt;
		} else if (prm_sDir == "Down") {
			return v_iWork / v_nRndInv;
		} else {
			return NuStr.toInt(v_nWork + .5) / v_nRndInv;
		}
	}
	/**
	 * toInt
	 */
	NuNum.toInt = function(prm_nVal) {
		return Math.floor(prm_nVal);
	}
	/**
	 * toStr
	 */
	NuNum.toStr = function(prm_nVal) {
		return "" + NuNum.round(NuStr.toNum(prm_nVal), "Nearest", .0001);
	}
/**
 * NuObject
 */
function NuObject() {
}
	//
	// static items
	//
	NuObject.getType = function(prm_object) {
		if (!prm_object) {
			return "Null";
		} else if (prm_object.charAt) {
			return "String";
		} else if (prm_object.nodeName) {
			return "Element";
		} else if (prm_object.length) {
			return "Array";
		} else if (prm_object.getType) {
			return prm_object.getType();
		} else {
			return "Hash";
		}
	}
/**
 * NuSecurity
 */
function NuSecurity() {
	this._isAddAllowed = true;
	this._isChangeAllowed = true;
	this._isDeleteAllowed = true;
	/**
	 * isAddAllowed
	 */
	this.isAddAllowed = function() {
		return this._isAddAllowed;
	}
	/**
	 * isChangeAllowed
	 */
	this.isChangeAllowed = function() {
		return this._isChangeAllowed;
	}
	/**
	 * isDeleteAllowed
	 */
	this.isDeleteAllowed = function() {
		return this._isDeleteAllowed;
	}
	/**
	 * setAddAllowed
	 */
	this.setAddAllowed = function(prm_sAllowed) {
		this._isAddAllowed = NuStr.toYesNo(prm_sAllowed);
	}
	/**
	 * setChangeAllowed
	 */
	this.setChangeAllowed = function(prm_sAllowed) {
		this._isChangeAllowed = NuStr.toYesNo(prm_sAllowed);
	}
	/**
	 * setDeleteAllowed
	 */
	this.setDeleteAllowed = function(prm_sAllowed) {
		this._isDeleteAllowed = NuStr.toYesNo(prm_sAllowed);
	}
}
/**
 * NuStr
 */
function NuStr() {}
	//
	// static items
	//
	/**
	 * count
	 */
	NuStr.count = function(prm_sSrc, prm_sData) {
		var v_Return;
		var v_iStartPos;
		var v_iLen;
		v_Return = 0;
		v_iLen = prm_sData.length;
		if (v_iLen > 0) {
			v_iStartPos = 0;
			while (v_iStartPos >= 0) {
				v_iStartPos = prm_sSrc.indexOf(prm_sData, v_iStartPos);
				if (v_iStartPos >= 0) {
					v_iStartPos += v_iLen;
					v_Return += 1;
				}
			}
		}
		return v_Return;
	}
	/**
	 * endsWith
	 */
	NuStr.endsWith = function(prm_sStr, prm_sVal) {
		if (prm_sStr.length < prm_sVal.length) {
			return false;
		} else if (prm_sStr.substring(prm_sStr.length - prm_sVal.length,prm_sStr.length) == prm_sVal) {
			return true;
		}
	}
	/**
	 * isDate
	 */
	NuStr.isDate = function(prm_sVal, prm_sFormat) {
		var v_sVal;
		if (prm_sVal.length == 0) {
			return true;
		} else {
			v_sVal = NuStr.toDate(prm_sVal, prm_sFormat);
			if (v_sVal.equals("dt!")) {
				return false;
			} else {
				return true;
			}
		}
	}
	/**
	 * isInt
	 */
	NuStr.isInt = function(prm_sVal) {
		if (NuStr.toInt(prm_sVal) == prm_sVal) {
			return true;
		} else {
			return false;
		}
	}
	/**
	 * isMny
	 */
	NuStr.isMny = function(prm_sVal) {
		var v_Return = false;
		var v_sVal;
		v_sVal = String(prm_sVal);
		if (v_sVal.length == 0) {
			v_Return = true;
		} else {
			v_sVal = NuStr.toMny(v_sVal);
			if (v_sVal == "mny!") {
				v_Return = false;
			} else {
				v_Return = true;
			}
		}
		return v_Return;
	}
	/**
	 * isNum
	 */
	NuStr.isNum = function(prm_sVal) {
		var v_Return = false;
		var v_iItr;
		var v_iCnt;
		var v_cChar;
		var v_sVal;
		var v_sb;
		var v_nTest;
		try {
			v_sVal = "" + prm_sVal;
			if (v_sVal.equals("mny!")) {
				v_sVal = "0";
			} else if (v_sVal.startsWith("mny!")) {
				v_sVal = v_sVal.substring(4);
			} else if (v_sVal.startsWith("$")) {
				v_sVal = v_sVal.substring(1);
			}
			if (v_sVal.length == 0) {
				v_Return = true;
			} else {
				v_sb = new StringBuffer();
				v_iCnt = v_sVal.length;
				v_Return = true;
				for (v_iItr = 0; v_iItr < v_iCnt; v_iItr++) {
					v_cChar = v_sVal.charAt(v_iItr);
					switch (v_cChar) {
					case '0':
					case '1':
					case '2':
					case '3':
					case '4':
					case '5':
					case '6':
					case '7':
					case '8':
					case '9':
					case '+':
					case '-':
					case '.':
					case ',':
						v_sb.append(v_cChar);
						break;
					default:
						v_Return = false;
						break;
					}
                }
				if (!v_Return) {
				} else if (v_sb.getLength() == 0) {
                	v_Return = false;
                } else {
                	v_nTest = parseFloat(v_sb.toString());
                	v_Return = true;
                }
		    }
		} catch (e) {
			v_Return = false;
		}
		return v_Return;
	}
	/**
	 * left
	 */
	NuStr.left = function(prm_sData, prm_iLen) {
		if (prm_iLen <= 0) {
			return "";
		} else if (prm_sData.length <= prm_iLen) {
			return prm_sData;
		} else {
			return prm_sData.substring(0, prm_iLen);
		}
	}
	/**
	 * locate
	 */
	NuStr.locate = function(prm_sVal, prm_arrVals) {
		var v_Return;
		v_Return = 0;
		if (!prm_sVal) {
		} else if (!prm_arrVals) {
		} else if (prm_arrVals instanceof Array) {
			v_i = 0;
			v_iCnt = prm_arrVals.length;
			while (v_i < v_iCnt) {
				if (prm_sVal == prm_arrVals[v_i]) {
					v_Return = v_i + 1;
					v_i = v_iCnt;
				}
				v_i++;
			}
		} else if (prm_sVal == prm_arrVals) {
			v_Return = 1;
		}
		return v_Return;
	}
	/**
	 * mid
	 */
	NuStr.mid = function(prm_sSrc, prm_iStart, prm_iLen) {
		var v_iLen;
		if (prm_iStart < 1) {
			return "";
		} else if (prm_iLen < 0) {
			return prm_sSrc.substring(prm_iStart - 1);
		} else {
			v_iLen = prm_sSrc.length;
			if (v_iLen < prm_iStart) {
				return "";
			} else if (v_iLen < (prm_iStart + prm_iLen - 1)) {
				return prm_sSrc.substring(prm_iStart - 1);
			} else {
				return prm_sSrc.substring(prm_iStart - 1, prm_iStart + prm_iLen - 1);
			}
		}
	}
	/**
	 * read
	 */
	NuStr.read = function(prm_sSrc, prm_iPos, prm_sDelim) {
		var v_Return;
		var v_isFlag;
		var v_i;
		var v_iMark;
		var v_iPos;
		var v_iTotDelm;
		var v_sDelim;
		var v_sSrc;
		v_Return = "";
		v_sDelim = prm_sDelim;
		if (!v_sDelim || (v_sDelim == "")) {
			v_sDelim = "\r\n";
		}
		v_isFlag = true;
		v_sSrc = prm_sSrc;
		v_iPos = prm_iPos;
		if (!v_sSrc) {
		} else if (v_sSrc.length != 0) {
			v_sSrc += v_sDelim;
			if (v_iPos == 0) {
				v_Return = v_sSrc;
			} else {
				v_iTotDelm = NuStr.count(v_sSrc, v_sDelim);
				if (v_iPos < 0) {
					v_iPos = -1 * v_iPos;
				}
				if (v_iPos <= v_iTotDelm) {
					v_i = 1;
					if (v_iPos < 0) {
						v_iPos += 1 + NuStr.count(v_sSrc, v_sDelim);
						if (v_iPos < 1) {
							v_isFlag = false;
						}
					}
					if (v_isFlag) {
						v_iMark = v_sSrc.indexOf(v_sDelim);
						while (v_iMark != -1) {
							if (v_iPos == v_i) {
								v_Return = v_sSrc.substring(0, v_iMark);
								v_iMark = -1;
							} else {
								v_i += 1;
								v_sSrc = v_sSrc.substring(v_iMark + v_sDelim.length);
								v_iMark = v_sSrc.indexOf(v_sDelim);
							}
						}
					}
				}
			}
		}
		return v_Return;
	}
	/**
	 * repeat
	 */
	NuStr.repeat = function(prm_sSrc, prm_iNum) {
		var v_Return;
		var v_i;
		v_Return = "";
		for (v_i = 1; v_i <= prm_iNum; v_i++) {
			v_Return += prm_sSrc;
		}
		return v_Return;
	}
	/**
	 * replace
	 */
	NuStr.replace = function(prm_sSrc, prm_sDataIn, prm_sDataOut) {
		var v_Return;
		var v_reg;
		var v_sDataIn;
		v_sDataIn = prm_sDataIn.replace(/([\\\^\.\$\|\(\)\[\]\*\+\?\{\}])/g, "\\$1");
		v_reg = new RegExp(v_sDataIn, "gi");
		v_Return = prm_sSrc.replace(v_reg, prm_sDataOut);
		return v_Return;
	}
	/**
	 * replaceRegEx
	 */
	NuStr.replaceRegEx = function(prm_sSrc, prm_sDataIn, prm_sDataOut, prm_sMods) {
		var v_Return;
		var v_sMods;
		var v_reg;
		if (prm_sMods) {
			v_sMods = prm_sMods;
		} else {
			v_sMods = "gim";
		}
		v_reg = new RegExp(prm_sDataIn, v_sMods);
		v_Return = prm_sSrc.replace(v_reg, prm_sDataOut);
		return v_Return;
	}
	/**
	 * right
	 */
	NuStr.right = function(prm_sSrc, prm_iLen) {
		return prm_sSrc.substring(prm_sSrc.length - prm_iLen);
	}
	/**
	 * startsWith
	 */
	NuStr.startsWith = function(prm_sStr, prm_sVal) {
		if (prm_sStr.length < prm_sVal.length) {
			return false;
		} else if (prm_sStr.substring(0, prm_sVal.length) == prm_sVal) {
			return true;
		} else if (prm_sStr.substring(0, prm_sVal.length).toLowerCase() == prm_sVal.toLowerCase()) {
			return true;
		}
	}
	/**
	 * toArray
	 */
	NuStr.toArray = function(prm_sSrc, prm_sDelim) {
		return prm_sSrc.split(prm_sDelim);
	}
	/**
	 * toDate
	 */
	NuStr.toDate = function(prm_sDt, prm_sFmt) {
		var v_Return;
		var v_isDelimited;
		var v_isFail;
		var v_i;
		var v_j;
		var v_iCnt;
		var v_iDateType;
		var v_iDay = 0;
		var v_iHour;
		var v_iMin = 0;
		var v_iMonth = 0;
		var v_iPos = 0;
		var v_iSec = 0;
		var v_iYear;
		var v_sAmPm = "";
		var v_sDt = "";
		var v_sDtPart = "";
		var v_sDtTmp = "";
		var v_sFmt;
		var v_sFmtPart = "";
		var v_sListParts = "";
		var v_sSysFmt = "";
		var v_sUsrDt = "";
		var v_sUsrFmt = "";
		var v_lst;
		var v_lstFmt;
		var v_oSysFmtArr = null;
		var v_oUsrDtArr = null;
		var v_oUsrFmtArr = null;
		v_Return = "";
		v_iYear = -1;
		v_iHour = -1;
		v_sListParts = "ymwdhnsl";
		if (prm_sDt == "") {
			v_Return = "dt!";
		} else if (NuStr.startsWith(prm_sDt, "t") || NuStr.startsWith(prm_sDt, "T")) {
			if (prm_sDt.length == 1) {
				v_Return = NuDate.now();
			} else {
				switch (prm_sDt.charAt(1)) {
				case "+":
				case "-":
					if (v_sListParts.indexOf(NuStr.right(prm_sDt, 1)) < 0) {
						v_Return = NuDate.add(NuDate.now(), NuStr.toInt(prm_sDt.substring(1)), "d");
					} else {
						v_Return = NuDate.add(NuDate.now(), NuStr.toInt(prm_sDt.substring(1, prm_sDt.length - 1)), prm_sDt.substring(prm_sDt.length - 1));
					}
					break;
				default:
					v_Return = "dt!";
					break;
				}
			}
		} else if (NuStr.startsWith(prm_sDt, "dt!")) {
			v_Return = prm_sDt;
		} else {
			v_Return += "dt!";
			if (prm_sFmt == "Sql") {
				v_Return += prm_sDt.substring(0, 4);
				v_Return += prm_sDt.substring(5, 7);
				v_Return += prm_sDt.substring(8, 10);
				v_Return += prm_sDt.substring(11, 13);
				v_Return += prm_sDt.substring(14, 16);
				v_Return += prm_sDt.substring(17, 19);
			} else {
				v_isFail = false;
				v_sDt = prm_sDt;
				if ((!prm_sFmt) || (prm_sFmt == "")) {
					v_sFmt = NuView.User.FormatDate;
				} else {
					v_sFmt = prm_sFmt;
				}
				if (v_sDt.indexOf("/") != 4) {
				} else if (v_sFmt.indexOf(" ") < 0) {
					v_sFmt = "yyyy/mm/dd";
				} else {
					v_sFmt = "yyyy/mm/dd hh:nn:ss";
				}
				v_iPos = v_sFmt.indexOf(" ");
				if ((v_iPos < 0) || (v_iPos >= (v_sFmt.length - 3))) {
					v_iDateType = NuDate.c_ITYPE_TIMEONLY;
				} else if ((v_sDt.indexOf(" ") >= 0) && (v_sDt.indexOf(" ") <= 2)) {
					v_iDateType = NuDate.c_ITYPE_TIMEONLY;
					v_sFmt = v_sFmt.substring(v_iPos + 1);
				} else if ((v_sDt.indexOf(" ") >= 0) && (v_sDt.indexOf(" ") < (v_sDt.length - 3))) {
					v_iDateType = NuDate.c_ITYPE_DATETIME;
				} else if (v_sDt.indexOf(":") >= 0) {
					v_iDateType = NuDate.c_ITYPE_TIMEONLY;
					v_sFmt = v_sFmt.substring(v_iPos + 1);
				} else {
					v_iDateType = NuDate.c_ITYPE_DATEONLY;
					v_sFmt = v_sFmt.substring(0, v_iPos);
				}
				v_sFmt = NuStr.replace(v_sFmt, ":", "/");
				v_sFmt = NuStr.replace(v_sFmt, "-", "/");
				v_sFmt = NuStr.replace(v_sFmt, " ", "/");
				v_sDt = NuStr.replace(v_sDt, ":", "/");
				v_sDt = NuStr.replace(v_sDt, "-", "/");
				v_sDt = NuStr.replace(v_sDt, " ", "/");
				v_sDt = NuStr.replace(v_sDt, ".", "/");
				v_isDelimited = false;
				if ((v_iDateType == NuDate.c_ITYPE_TIMEONLY) || (v_sDt.indexOf("/") >= 0)) {
					v_isDelimited = true;
					if (v_iDateType == NuDate.c_ITYPE_DATEONLY) {
					} else if (NuStr.count(v_sDt, "/") < NuStr.count(v_sFmt, "/")) {
						v_lstFmt = new NuLst();
						v_lstFmt.setList(v_sFmt, v_lstFmt.getTypeByName("DELIMITED"), "/");
						v_lst = new NuLst();
						v_lst.setDelim("/");
						v_lst.setList(v_sDt, v_lst.getTypeByName("DELIMITED"), "/");
						if (v_sDt.endsWith("/am") || v_sDt.endsWith("/pm") || v_sDt.endsWith("/a") || v_sDt.endsWith("/p")) {
							v_sAmPm = v_lst.delByNum(v_lst.getCount());
						} else {
							v_sAmPm = "";
						}
						v_i = v_lst.getCount() + 1;
						v_iCnt = v_lstFmt.getCount();
						for (v_i = v_lst.getCount() + 1; v_i <= v_iCnt; v_i++) {
							v_sFmtPart = v_lstFmt.getByNum(v_i);
							if (v_sFmtPart.startsWith("a") || v_sFmtPart.startsWith("p")) {
								if (v_sAmPm == "") {
									v_lst.append(v_sFmtPart);
								} else {
									v_lst.append(v_sAmPm);
								}
							} else {
								v_lst.append("00");
							}
						}
						v_sDt = v_lst.getList();
					}
					v_sSysFmt = NuView.User.FormatDate;
					v_sUsrFmt = v_sFmt;
					v_sUsrDt = v_sDt;
					v_oSysFmtArr = v_sSysFmt.split(/[^A-Z]/gi);
					v_oUsrFmtArr = v_sUsrFmt.split(/[^A-Z]/gi);
					v_oUsrDtArr = v_sUsrDt.split(/[^AMP0-9]/gi);
					v_sDtTmp = "";
					if (v_oUsrDtArr.length == v_oUsrFmtArr.length) {
					} else if (v_oUsrDtArr.length == v_oSysFmtArr.length){
						for (v_i = 0; v_i < v_oSysFmtArr.length; v_i++) {
							for (v_j = 0; v_j < v_oUsrFmtArr.length; v_j++) {
								if (v_oSysFmtArr[v_i] == v_oUsrFmtArr[v_j]) {
									v_sDtTmp += ((v_sDtTmp == ""? "":"/") + v_oUsrDtArr[v_i]);
								}
							}
						}
						v_sDt = v_sDtTmp;
					}
				}
				while (v_sFmt != "") {
					v_iPos = v_sFmt.indexOf("/");
					if (v_iPos < 0) {
						v_sFmtPart = v_sFmt;
						v_sFmt = "";
					} else {
						v_sFmtPart = v_sFmt.substring(0, v_iPos);
						v_sFmt = v_sFmt.substring(v_iPos + 1);
					}
					if (v_isDelimited) {
						v_iPos = v_sDt.indexOf("/");
						if (v_iPos < 0) {
							v_sDtPart = v_sDt;
							v_sDt = "";
							if (v_sDtPart.startsWith("a") || v_sDtPart.startsWith("p")) {
								if (v_sFmt != "") {
									v_iPos = v_sFmt.lastIndexOf("/");
									v_sFmtPart = v_sFmt.substring(v_iPos + 1);
									v_sFmt = "";
								}
							}
						} else {
							v_sDtPart = v_sDt.substring(0, v_iPos);
							v_sDt = v_sDt.substring(v_iPos + 1);
						}
					} else if (v_sFmt == "") {
						v_sDtPart = v_sDt;
						v_sDt = "";
					} else if (v_sFmtPart == "yyyy") {
						v_sDtPart = NuStr.left(v_sDt, 4);
						v_sDt = NuStr.mid(v_sDt, 5, -1);
					} else {
						v_sDtPart = NuStr.left(v_sDt, 2);
						v_sDt = NuStr.mid(v_sDt, 3, -1);
					}
					if ((v_sFmtPart == "am") || (v_sFmtPart == "ap") || (v_sFmtPart == "a")) {
						if (NuStr.isNum(v_sDtPart)) {
							v_sDtPart = v_sDt;
							v_sDt = "";
						}
						v_sAmPm = v_sDtPart.toLowerCase();
						if (v_sAmPm == "am") {
						} else if (v_sAmPm == "pm") {
						} else if (v_sAmPm == "a") {
							v_sAmPm = "am";
						} else if (v_sAmPm == "p") {
							v_sAmPm = "pm";
						} else {
							v_isFail = true;
						}
					} else if (v_sDtPart == "") {
						if (v_sFmtPart == "yyyy") {
							v_iYear = NuStr.toInt(NuDate.now().substring(3, 7));
						}
					} else if (NuStr.isNum(v_sDtPart)) {
						switch (v_sFmtPart) {
						case "yyyy":
							v_iYear = NuStr.toInt(v_sDtPart);
							if (v_iYear > 1000) {
							} else if (v_iYear > 100) {
								v_iYear += 2000;
							} else if (v_iYear > c_IPIVOTYR) {
								v_iYear += 1900;
							} else {
								v_iYear += 2000;
							}
							if (v_iYear >= 2200) {
								v_isFail = true;
							}
							break;
						case "mm":
							v_iMonth = NuStr.toInt(v_sDtPart);
							if (v_iMonth < 1) {
								v_isFail = true;
							} else if (v_iMonth > 12) {
								v_isFail = true;
							}
							break;
						case "dd":
							v_iDay = NuStr.toInt(v_sDtPart);
							if (v_iDay < 1) {
								v_isFail = true;
							}
							break;
						case "hh":
							v_iHour = NuStr.toInt(v_sDtPart);
							if (v_iHour < 0) {
								v_isFail = true;
							} else if (v_iHour > 24) {
								v_isFail = true;
							}
							break;
						case "nn":
							v_iMin = NuStr.toInt(v_sDtPart);
							if (v_iMin < 0) {
								v_isFail = true;
							} else if (v_iMin > 60) {
								v_isFail = true;
							}
							break;
						case "ss":
							v_iSec = NuStr.toInt(v_sDtPart);
							if (v_iSec < 0) {
								v_isFail = true;
							} else if (v_iSec > 60) {
								v_isFail = true;
							}
							break;
						}
					} else {
						switch (v_sDtPart.toLowerCase()) {
						case "am":
							v_sAmPm = "am";
							v_sFmt = "";
							break;
						case "pm":
							v_sAmPm = "pm";
							v_sFmt = "";
							break;
						case "a":
							v_sAmPm = "am";
							v_sFmt = "";
							break;
						case "p":
							v_sAmPm = "pm";
							v_sFmt = "";
							break;
						default:
							v_isFail = true;
							break;
						}
					}
				}
				if ((v_iHour > 12) && (!v_sAmPm == "")) {
					v_isFail = true;
				}
				switch (v_iMonth) {
				case 2:
					if (v_iDay > 29) {
						v_isFail = true;
					} else if (v_iDay < 29) {
					} else if (!NuDate.isLeapYear(v_iYear)) {
						v_isFail = true;
					}
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					if (v_iDay > 30) {
						v_isFail = true;
					}
					break;
				default:
					if (v_iDay > 31) {
						v_isFail = true;
					}
					break;
				}
				if (!v_isFail) {
					if (v_iYear > 0) {
						v_Return += "" + v_iYear;
						if (v_iMonth == 0) {
							v_iMonth = 1;
						}
						if (v_iMonth < 10) {
							v_Return += "0";
						}
						v_Return += "" + v_iMonth;
						if (v_iDay == 0) {
							v_iDay = 1;
						}
						if (v_iDay < 10) {
							v_Return += "0";
						}
						v_Return += "" + v_iDay;
					}
					if (v_iHour >= 0) {
						if (v_iHour == 12) {
							if (v_sAmPm == "") {
								v_iHour = 0;
							} else if (v_sAmPm.substring(0, 1) == "a") {
								v_iHour = 0;
							}
						} else if (v_sAmPm == "") {
						} else if (v_sAmPm.substring(0, 1) == "p") {
							v_iHour += 12;
						}
						if (v_iHour < 10) {
							v_Return += "0";
						}
						v_Return += v_iHour;
						if (v_iMin < 10) {
							v_Return += "0";
						}
						v_Return += v_iMin;
						if (v_iSec < 10) {
							v_Return += "0";
						}
						v_Return += v_iSec;
					}
				}
			}
		}
		switch (v_Return) {
		case "dt!18000101":
		case "dt!19000101":
		case "dt!18000101000000":
		case "dt!19000101000000":
			v_Return = "dt!";
			break;
		}
		return v_Return;
	}
	/**
	 * toDisplay
	 */
	NuStr.toDisplay = function(prm_sVal) {
		var v_Return;
		if (!prm_sVal) {
			return prm_sVal;
		} else if (NuStr.startsWith(prm_sVal, "dt!")) {
			return NuDate.toStr(prm_sVal);
		} else if (NuStr.startsWith(prm_sVal, "mny!")) {
			return NuMny.toStr(prm_sVal);
		} else {
			return prm_sVal;
		}
	}
	/**
	 * toInt
	 */
	NuStr.toInt = function(prm_sVal) {
		var v_Return;
		var v_sVal;
		v_Return = 0;
		v_sVal = String(prm_sVal);
		switch (v_sVal) {
		case "":
			break;
		case "Yes":
			v_Return = 1;
			break;
		case "No":
			break;
		default:
			v_Return = parseFloat(v_sVal);
			if (isFinite(v_Return)) {
				v_Return = parseInt(v_Return);
				if (!isFinite(v_Return)) {
					v_Return = 0;
				}
			}
			break;
		}
		return v_Return;
	}
	/**
	 * toMny
	 */
	NuStr.toMny = function(prm_sVal) {
		var v_Return;
		var v_i;
		var v_iCnt;
		var v_cChar;
		var v_sVal;
		v_Return = "mny!";
		v_sVal = String(prm_sVal);
		v_iCnt = v_sVal.length;
		for (v_i = 1; v_i <= v_iCnt; v_i++) {
			v_cChar = v_sVal.charAt(v_i - 1);
			if ((v_cChar >= '0') && (v_cChar <= '9')) {
				v_Return += v_cChar;
			} else if (v_cChar == '.') {
				if ((v_i - 1) == v_sVal.lastIndexOf(".")) {
					v_Return += v_cChar;
				}
			}
		}
		return v_Return;
	}
	/**
	 * toNum
	 */
	NuStr.toNum = function(prm_sVal) {
		var v_Return;
		var v_sVal;
		v_Return = 0;
		v_sVal = String(prm_sVal);
		switch (v_sVal) {
		case "":
			break;
		case "Yes":
			v_Return = 1;
			break;
		case "No":
			break;
		default:
			v_Return = parseFloat(v_sVal);
			if (!isFinite(v_Return)) {
				v_Return = 0;
			}
			break;
		}
		return v_Return;
	}
	/**
	 * toType
	 */
	NuStr.toType = function(prm_sVal, prm_sType) {
		var v_Return;
		v_Return = prm_sVal;
		switch (prm_sType) {
		case "Date":
		case "DateTime":
		case "Time":
			if (!NuStr.startsWith(prm_sVal, "dt!")) {
				v_Return = NuStr.toDate(prm_sVal);
			}
			break;
		case "Money":
		case "Number":
			v_Return = NuStr.toNum(prm_sVal);
			break;
		}
		return v_Return;
	}
	/**
	 * toUri
	 */
	NuStr.toUri = function(prm_sVal) {
		// Note: escape misses single (%27) and double (%22) quotes, the plus sign (%2B) and slash (%2F)
		return escape(prm_sVal).replace(/\+/g, "%2B").replace(/\"/g, "%22").replace(/\'/g, "%27").replace(/\//g, "%2F");
	}
	/**
	 * toXml
	 */
	NuStr.toXml = function(prm_sVal, prm_isAttribute) {
		var v_Return;
		v_Return = prm_sVal;
		if (v_Return.indexOf("&") >= 0) {
			v_Return = NuStr.replace(v_Return, "&", "&amp;");
		}
		if (v_Return.indexOf("<") >= 0) {
			v_Return = NuStr.replace(v_Return, "<", "&lt;");
		}
		if (v_Return.indexOf(">") >= 0) {
			v_Return = NuStr.replace(v_Return, ">", "&gt;");
		}
		if (v_Return.indexOf('"') >= 0) {
			v_Return = NuStr.replace(v_Return, '"', '&quot;');
		}
		if (v_Return.indexOf("\t") >= 0) {
			v_Return = NuStr.replace(v_Return, "\t", "  ");
		}
		if (prm_isAttribute) {
			if (v_Return.indexOf("\n") >= 0) {
				v_Return = NuStr.replace(v_Return, "\n", "&#10;");
			}
		}
		return v_Return;
	}
	/**
	 * toYesNo
	 */
	NuStr.toYesNo = function(prm_sVal) {
		if (prm_sVal == null) {
			return false;
		} else if (prm_sVal == true) {
			return true;
		} else if (prm_sVal == 1) {
			return true;
		} else if (prm_sVal == "Yes") {
			return true;
		}
	}
	/**
	 * trim
	 */
	NuStr.trim = function(prm_sVal) {
		var v_Return;
		v_Return = prm_sVal.replace(/^(\s+)/, "");
		v_Return = v_Return.replace(/(\s+)$/, "");
		return v_Return;
	}
/**
 * NuStyle Object
 */
function NuStyle() {
	//global variables
	this._objSheet;

	this.loadSheet = function(prm_sTitle) {
		var v_ii;
		var v_iCnt;
		var v_objSheets;
		/**
		 * Specifically initialized as Null, in case the loadSheet() method fails, the old Style Sheet should be unloaded.
		 * Else the user will keep on working with the previous style sheet.
		 */
		this._objSheet = null; 
		v_objSheets = document.styleSheets;
		v_iCnt = v_objSheets.length;
		for (v_ii = 0; v_ii < v_iCnt && this._objSheet == null; v_ii++) {
			if (v_objSheets[v_ii].title == prm_sTitle) {
				this._objSheet = v_objSheets[v_ii];
				break;
			}
		}
		if (!this._objSheet) {
			return false;
		}
	}

	this.getClassStyle = function(prm_sClass, prm_sStyle) {
		var v_Return;
		var v_iJ;
		var v_objRules = null;
		if (this._objSheet) {
			if (this._objSheet.rules) {
				v_objRules = this._objSheet.rules;
			} else {
				v_objRules = this._objSheet.cssRules;
			}
			v_Return = "Not Defined";
			for (v_iJ = 0; v_iJ < v_objRules.length ; v_iJ++) {
				if (v_objRules[v_iJ].selectorText && v_objRules[v_iJ].selectorText.toLowerCase() == prm_sClass.toLowerCase()) { /** Added check for Presence of the Property*/
					v_sStyle = v_objRules[v_iJ].style[prm_sStyle];
					v_Return = v_sStyle;
				}
			}
		} else {
			v_Return = "CSS file not found";
		}
		return v_Return;
	}

	this.setClassStyle = function(prm_sClass, prm_sStyle, prm_sVal) {
		var v_bChg;
		var v_iI;
		var v_iLen;
		var v_objRules;
		if (this._objSheet) {
			if (this._objSheet.rules) {
				v_objRules = this._objSheet.rules;
			} else {
				v_objRules = this._objSheet.cssRules;
			}
			v_iLen = v_objRules.length;
			v_bChg = false;
			for (v_iI = 0; v_iI < v_iLen; v_iI++) {
				if (v_objRules[v_iI].selectorText && v_objRules[v_iI].selectorText.toLowerCase() == prm_sClass.toLowerCase()) { /** Added check for Presence of the Property*/
					v_objRules[v_iI].style[prm_sStyle] = prm_sVal;
					v_bChg = true;
				}
			}
			if (v_bChg) {
			} else if (this._objSheet.insertRule) {
				this._objSheet.insertRule(prm_sClass + "{" + prm_sStyle + ":" + prm_sVal + ";}", 0) ;
			} else {
				this._objSheet.addRule(prm_sClass, prm_sStyle + ":" + prm_sVal + ";");
			}
		}
	}
}
	//
	// static items
	//
	NuStyle.strClass = function(prm_sCtl) {
		var v_sCtl;
		v_sCtl = prm_sCtl;
		v_sCtl = "Nu" + v_sCtl;
		v_sCtl = NuStr.replace(v_sCtl, ' ', 'S');
		v_sCtl = NuStr.replace(v_sCtl, '$', 'D');
		v_sCtl = NuStr.replace(v_sCtl, '%', 'P');
		return v_sCtl;
	}
/**
 * NuUri
 */
function NuUri() {}
	//
	// static items
	//
	/**
	 * getPage
	 */
	NuUri.getPage = function(prm_uri) {
		var v_Return;
		var v_aUri;
		v_Return = "" + prm_uri;
		v_aUri = v_Return.split("/");
		v_Return = v_aUri[v_aUri.length - 1];
		if (v_Return.indexOf("?") > 0) {
			v_aUri = v_Return.split("?");
			v_Return = v_aUri[0];
		}
		if (v_Return.indexOf("#") > 0) {
			v_aUri = v_Return.split("#");
			v_Return = v_aUri[0];
		}
		return v_Return;
	}
/**
 * NuXmlJson
 */
function NuXmlJson() {}
	//
	// static items
	//
	/**
	 * Basically It caters the need of Json and XML nodes.
	 * [VALID_INPUT] : prm_object:Object of type HTML/XML.JSON node. prm_child: Object of the same type as that of parent object.
	 * [VALID_OUTPUT] : Object of same type as that of prm_object.
	 */
	NuXmlJson.addChild = function (prm_object, prm_child) {
		var v_Return = null;
		if (prm_object) {
			if (prm_object.appendChild) {
				v_Return = prm_object.appendChild(prm_child);
			} else if (prm_object.addChild) {
				v_Return = prm_object.addChild(prm_child);
			}
			v_Return = prm_object;
		}
		return v_Return;
	}
	/**
	 * xmlOrJson
	 * [VALID_INPUT] : prm_object : XML/JSON object
	 * [VALID_OUTPUT] : String type.
	 */
	NuXmlJson.xmlOrJson = function (prm_object) {
		if (prm_object.appendChild) {
			return "NuXml";
		} else {
			return "Json";
		}
		return prm_object;
	}
	/**
	 * copy:
	 * NuXmlJson.copy funtion is a static function, for evaluating and returning the input data back to the caller point.
	 * [VALID_INPUT] : Object of type JSON/XML
	 * [VALID_OUTPUT] : [Object]. Note: In case the sizeof(prm_object) is not null, the sizeof(v_Return) should never be null.
	 */
	NuXmlJson.copy = function (prm_object) {
		var v_Return = null;
		if (prm_object) {
			switch (NuObject.getType(prm_object)) {
			case "Array":
			case "Hash":
				try {
					v_Return = eval('(' + prm_object.toJSONString() + ')');
				} catch (e) {
				}
				break;
			case "Element":
				break;
			default:
				/*Todo: Error Handling code could be added here*/
				break;
			}
		}
		return v_Return;
	}
	/**
	 * getAttribute
	 */
	NuXmlJson.getAttribute = function(prm_object, prm_sAttribute) {
		if (!prm_object) {
			return null;
		} else if (prm_object.attributes || prm_object.getAttribute) { /*IE/Mozilla Compatibility*/
			return prm_object.getAttribute(prm_sAttribute);
		} else {
			return prm_object[prm_sAttribute];
		}
	}
	/**
	 * getChild
	 */
	NuXmlJson.getChild = function(prm_object, prm_iChild) {
		var v_aChildren;
		if (!prm_object) {
			return null;
		} else if (prm_object.childNodes) {
			return prm_object.childNodes[prm_iChild];
		} else if (prm_object["nodes"]) {
			v_aChildren = prm_object["nodes"];
			return v_aChildren[prm_iChild];
		} else {
			return prm_object[prm_iChild];
		}
	}
	/**
	 * getCount
	 */
	NuXmlJson.getCount = function(prm_object) {
		var v_aChildren;
		if (!prm_object) {
			return 0;
		} else if (prm_object.childNodes) {
			return prm_object.childNodes.length;
		} else if (prm_object["nodes"]) {
			v_aChildren = prm_object["nodes"];
			if (v_aChildren.length) {
				return v_aChildren.length;
			} else {
				return 0;
			}
		} else if (prm_object.length) {
			return prm_object.length;
		} else {
			return 0;
		}
	}
	/**
	 * getTag
	 */
	NuXmlJson.getTag = function(prm_object) {
		if (!prm_object) {
			return null;
		} else if (prm_object.nodeName) {
			return prm_object.nodeName;
		} else {
			return prm_object["tag"];
		}
	}
	/**
	 * run
	 */
	NuXmlJson.run = function() {
		var v_oEscChar = {
			'\b': '\\b',
			'\t': '\\t',
			'\n': '\\n',
			'\f': '\\f',
			'\r': '\\r',
			'"' : '\\"',
			'\\': '\\\\'
		};
		var v_oWrap = {};
		v_oWrap.array = function (prm_object) {
			var v_bFlag;
			var v_iI;
			var v_iObjItm;
			var v_iObjLen = prm_object.length;
			var v_oArr = ['['];
			var v_Typ;
			for (v_iI = 0; v_iI < v_iObjLen; v_iI += 1) {
				v_iObjItm = prm_object[v_iI];
				v_Typ = v_oWrap[typeof v_iObjItm];
				if (v_Typ) {
					v_iObjItm = v_Typ(v_iObjItm);
					if (typeof v_iObjItm == 'string') {
						if (v_bFlag) {
							v_oArr[v_oArr.length] = ',';
						}
						v_oArr[v_oArr.length] = v_iObjItm;
						v_bFlag = true;
					}
				}
			}
			v_oArr[v_oArr.length] = ']';
			return v_oArr.join('');
		}
		v_oWrap['boolean'] = function (prm_object) {
			return String(prm_object);
		}
		v_oWrap['function'] = function(prm_object){
			return prm_object;
		}
		v_oWrap['null'] = function (prm_object) {
			return "null";
		}
		v_oWrap.number = function (prm_object) {
			return isFinite(prm_object) ? String(prm_object) : 'null';
		}
		v_oWrap.object = function (prm_object) {
			var v_oArr = ['{'];
			var v_bFlag;
			var v_Typ;
			var v_iI;
			var v_iObjItm;
			if (prm_object) {
				if (prm_object instanceof Array) {
					return v_oWrap.array(prm_object);
				}
				for (v_iI in prm_object) {
					v_iObjItm = prm_object[v_iI];
					v_Typ = v_oWrap[typeof v_iObjItm];
					if (v_Typ) {
						v_iObjItm = v_Typ(v_iObjItm);
						if (typeof v_iObjItm == 'string') {
							if (v_bFlag) {
								v_oArr[v_oArr.length] = ',';
							}
							v_oArr.push(v_oWrap.string(v_iI), ':', v_iObjItm);
							v_bFlag = true;
						} else if (typeof v_iObjItm == 'function') {
							if (v_oWrap.string(v_iI) != "\"toJSONString\""){
								if (v_bFlag) {
									v_oArr[v_oArr.length] = ',';
								}
								v_oArr.push(v_oWrap.string(v_iI), ':', v_iObjItm);
								v_bFlag = true;
							}
						}
					}
				}
				v_oArr[v_oArr.length] = '}';
				return v_oArr.join('');
			}
			return 'null';
		}
		v_oWrap.string = function (prm_object) {
			var v_cChr;
			if (/["\\\x00-\x1f]/.test(prm_object)) {
				prm_object = prm_object.replace(/([\x00-\x1f\\"])/g, function(v_oArr, v_bFlag) {
					var v_cChr = v_oEscChar[v_bFlag];
					if (v_cChr) {
						return v_cChr;
					}
					v_cChr = v_bFlag.charCodeAt();
					return '\\u00' + Math.floor(v_cChr / 16).toString(16) + (v_cChr % 16).toString(16);
				});
			}
			return '"' + prm_object + '"';
		}
		Object.prototype.toJSONString = function () {
			return v_oWrap.object(this);
		}
		Array.prototype.toJSONString = function () {
			return v_oWrap.array(this);
		}
	}

	/**
	 * toStr
	 */
	NuXmlJson.toStr = function(prm_object) {
		switch (NuObject.getType(prm_object)) {
		case "Element":
		case "Array":
		case "Hash":
			return prm_object.toJSONString();
		default:
			return "";
		}
	}
	/**
	 * NuXmlJson.XmlProp - Added for IE Compatibility
	 */
	NuXmlJson.XmlProp = {
		c_SPROP_NODENAME:"nodeName",
		c_SPROP_CHILDNODES:"childNodes",
		c_SPROP_NODEVALUE:"nodeValue",
		c_SPROP_NODETYPE:"nodeType",
		c_SPROP_PARENTNODE:"parentNode",
		c_SPROP_FIRSTCHILD:"firstChild",
		c_SPROP_LASTCHILD:"lastChild",
		c_SPROP_PREVIOUSSIBLING:"previousSibling",
		c_SPROP_NEXTSIBLING:"nextSibling",
		c_SPROP_ATTRIBUTES:"attributes",
		c_SPROP_OWNERDOCUMENT:"ownerDocument",
		c_SPROP_HASCHILDNODES:"hasChildNodes",
		c_SPROP_NORMALIZE:"normalize",
		c_SPROP_ISSUPPORTED:"isSupported",
		c_SPROP_NAMESPACEURI:"namespaceURI",
		c_SPROP_PREFIX:"prefix",
		c_SPROP_LOCALNAME:"localName",
		c_SPROP_HASATTRIBUTES:"hasAttributes",
		c_SPROP_TAGNAME:"tagName",
		c_SPROP_GETATTRIBUTENS:"getAttributeNS",
		c_SPROP_SETATTRIBUTENS:"setAttributeNS",
		c_SPROP_REMOVEATTRIBUTENS:"removeAttributeNS",
		c_SPROP_GETATTRIBUTENODENS:"getAttributeNodeNS",
		c_SPROP_SETATTRIBUTENODENS:"setAttributeNodeNS",
		c_SPROP_GETELEMENTSBYTAGNAMENS:"getElementsByTagNameNS",
		c_SPROP_HASATTRIBUTE:"hasAttribute",
		c_SPROP_HASATTRIBUTENS:"hasAttributeNS",
		c_SPROP_ELEMENT_NODE:"ELEMENT_NODE",
		c_SPROP_ATTRIBUTE_NODE:"ATTRIBUTE_NODE",
		c_SPROP_TEXT_NODE:"TEXT_NODE",
		c_SPROP_CDATA_SECTION_NODE:"CDATA_SECTION_NODE",
		c_SPROP_ENTITY_REFERENCE_NODE:"ENTITY_REFERENCE_NODE",
		c_SPROP_ENTITY_NODE:"ENTITY_NODE",
		c_SPROP_PROCESSING_INSTRUCTION_NODE:"PROCESSING_INSTRUCTION_NODE",
		c_SPROP_COMMENT_NODE:"COMMENT_NODE",
		c_SPROP_DOCUMENT_NODE:"DOCUMENT_NODE",
		c_SPROP_DOCUMENT_TYPE_NODE:"DOCUMENT_TYPE_NODE",
		c_SPROP_DOCUMENT_FRAGMENT_NODE:"DOCUMENT_FRAGMENT_NODE",
		c_SPROP_NOTATION_NODE:"NOTATION_NODE",
		c_SPROP_REMOVEEVENTLISTENER:"removeEventListener",
		c_SPROP_DISPATCHEVENT:"dispatchEvent",
		c_SPROP_BASEURI:"baseURI",
		c_SPROP_COMPAREDOCUMENTPOSITION:"compareDocumentPosition",
		c_SPROP_TEXTCONTENT:"textContent",
		c_SPROP_ISSAMENODE:"isSameNode",
		c_SPROP_LOOKUPPREFIX:"lookupPrefix",
		c_SPROP_ISDEFAULTNAMESPACE:"isDefaultNamespace",
		c_SPROP_LOOKUPNAMESPACEURI:"lookupNamespaceURI",
		c_SPROP_ISEQUALNODE:"isEqualNode",
		c_SPROP_GETFEATURE:"getFeature",
		c_SPROP_SETUSERDATA:"setUserData",
		c_SPROP_GETUSERDATA:"getUserData"
	};
/**
 * NuYesNo
 */
function NuYesNo() {}
	//
	// static items
	//
	/**
	 * toStr
	 */
	NuYesNo.toStr = function(prm_isValue) {
		if (prm_isValue) {
			return "Yes";
		} else {
			return "No";
		}
	}

