//return a jquery object from a dom element or a dom element's id property
function toJqueryObject(domElementOrId) {
	var type = typeof(domElementOrId);
	var typeString = type.toLowerCase();
	if (typeString == "string") {
		return $("#" + domElementOrId);
	}
	return $(domElementOrId);
}

//在element的class属性中插入class
function insertClass(element, classNameToAdd, index) {
	var elementArr = new Array();
	if (!element.length) {
		elementArr.push(element)
	} else {
		elementArr = element;
	}

	for (var i = 0; i < elementArr.length; i++) {
		var jElement = $(elementArr[i]);
		if (jElement.hasClass(classNameToAdd)) {
			jElement.removeClass(classNameToAdd);
		}
		var classes = null;
		if (jElement.attr("className")) {
			classes = jElement.attr("className").split(/\s+/);
		}
		
		if (index < 0) index = 0;
		if (classes != null && classes.length > 0) {
			if (index == 0) {
				jElement.attr("className", classNameToAdd + " " + jElement.attr("className"));
				continue;
			}
			//在中间插入,如果index==classes.length,则要在倒2处插入，即原最后一个class后移
			if (classes.length > index) {
				var charIndexToInsert = 0; //原class值中要进行插入新class字符串的位置
				for (var j = 0; j < index; j++) {
					charIndexToInsert += classes[j].length;
				}
				var newClassName = jElement.attr("className").substring(0, charIndexToInsert) +
				" " +
				classNameToAdd +
				" " +
				jElement.attr("className").substring(charIndexToInsert, jElement.attr("className").length);
				jElement.attr("className", newClassName);
			//在末尾插入
			}
			else {
				jElement.attr("className", jElement.attr("className") + " " + classNameToAdd);
			}
		//原先没有class，直接赋值
		}
		else {
			jElement.attr("className", classNameToAdd);
		}
	}
}
//在element的最前面插入class
function insertClassAtFirst(element, classNameToAdd) {
	insertClass(element, classNameToAdd, 0);
}
//在element的最后面插入class
function insertClassAtLast(element, classNameToAdd) {
	var jElement = $(element);
	if (jElement.hasClass(classNameToAdd)) {
		jElement.removeClass(classNameToAdd);
	}
	jElement.addClass(classNameToAdd);
}

//create a new dom element with the common parameters
function createDomElement(tagName, id, className, innerHTML) {
	if (!tagName || $.trim(tagName).length == 0) tagName = "div";
	
	var newEle = document.createElement(tagName);
	if (id && $.trim(id).length > 0) newEle.id = id;
	if (className) newEle.className = className;
	if (innerHTML) newEle.innerHTML = innerHTML;
	
	return newEle;
}

//*** create a div element and return it ****
//neighborElement : near which the prompt will be located
//msg : the error message to be shown
//offsetX : the offset X to the neighborElement
//offsetY : the offset Y to the neighborElement
//className : the className to be set as the prompt div's className
function createNeighborPrompt(neighborElement, msg, newDivId, offsetX, offsetY, className) {
	if (!offsetX) offsetX = 0;
	if (!offsetY) offsetY = -20;
	
	var jElement = toJqueryObject(neighborElement);
	var offset = jElement.offset();
	var newDiv = createDomElement("div", newDivId, className, msg);
	newDiv.style.top = offset.top + offsetY + "px";
	newDiv.style.left = offset.left + offsetX + "px";
	
	return newDiv;
}

function htmlEncode(originalString) {
    var result = originalString.replace(/&/g,'&amp').replace(/\"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
    return result;
}