
var jsPackage =
/*Object*/ function (/*String*/ qualifiedPackageName) {
	CLASSES_ROOT = window;
	if (qualifiedPackageName == "") {
		return CLASSES_ROOT;
	}
	var names = qualifiedPackageName.split(".");
	var owner = CLASSES_ROOT;
	for (var i=0; i < names.length; i++) {
		var pName = names[i];
		if (!(pName in owner)) {
			owner[pName] = new Object();
		}
		owner = owner[pName];
	}
	return owner;
};

jsPackage("epoint.ow");

epoint.ow.Utils = {

	replaceString :
		/*String*/ function (/*String*/ text, /*String*/ searchString, /*String*/ replacement) {
		var index = text.indexOf(searchString);
		if (index != -1) {
			text = text.substring(0, index) + replacement + text.substring(index + searchString.length, text.length);
		}
		
		return text;
	},
	
	trimZeros : 
		/*String*/ function (/*String*/ number) {
		number = this.trim(number);
		var leadingZerosNumber = 0;
		var begin = 0;
		if (number.charAt(0) == '-') {
			begin = 1;
		}

		for (i = begin; i < number.length; i++) {
			if (number.charAt(i) == '0') {
				leadingZerosNumber++;
			} else {
				break;
			}
		}

		var trailingZerosNumber = 0;
		if (number.indexOf('.') != -1) {
			for (i = number.length - 1; i >= 0; i--) {
				if (number.charAt(i) == '0') {
					trailingZerosNumber++;
				} else {
					break;
				}
			}
		}
		
		number = number.substring(begin + leadingZerosNumber, number.length);
		number = number.substring(0, number.length - trailingZerosNumber);
		if (begin == 1) {
			number = '-' + number;
		}
		
		return number;
	},
	
	getFieldValue :
	/*String or Array*/ function (form, fieldName) {
		var fieldsCount = 0;
		for (var i = 0; i < form.elements.length; i++) {
			if (form.elements[i].name == fieldName) {
				fieldsCount++;
			}
		}
		
		var check;
		if (fieldsCount > 1) {
			// radio, multicheckbox
			var values = new Array();
			var j = 0;
			var elements = new Array();
			var k = 0;

			for (var i = 0; i < form.elements.length; i++) {
				if (form.elements[i].name == fieldName) {
					elements[j++] = form.elements[i];

					if (form.elements[i].checked) {
						if (form.elements[i].type == 'radio') {
							// radio
							return form.elements[i].value;
						}

						// multicheckbox
						values[k++] = form.elements[i].value;
					}
				}
			}
			
			if ((values.length == 0) && (j > 0) && (elements[0].type == 'radio')) {
				return "";
			}
			
			return values;
		} else {
			var field = form[fieldName];
			
			if (field.type == "checkbox") {
				// checkbox
				return field.checked.toString();
			} else if (field.type == "select-multiple") {
				// multiselect
				var values = new Array();
				var j = 0;
				for (i = 0; i < field.options.length; i++) {
					if (field.options[i].selected) {
						values[j++] = field.options[i].value;
					}
				}
			
				return values;
			} else {
				// standard
				return field.value;
			}
		}
	},
	
	arrayEquals :
	/*boolean*/ function (/*array*/ array1, /*array*/ array2) {
		if (array1.length != array2.length) {
			return false;
		} else {
			for(var i = 0; i < array1.length; i++) {
				if (array1[i] != array2[i]) {
					return false;
				}
			}
		}
		return true;
	},
	
	trim :
	/*String*/ function (/*String*/ str) {
		if (str == null) {
			return null;
		}
		if (str.trim) {
			return str.trim();
		} else {
			//find and remove spaces from left and right hand side of string
			return str.replace(/(^\s*)|(\s*$)/g, "");
		}
	}
};

