String.prototype.trim=function(){
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};
String.prototype.reverse=function(){
	var newStr="";
	for (i=0;i<=this.length;i++){
		newStr = this.charAt(i) + newStr;
	}
	return newStr;
}
String.prototype.replaceAll=function(needle,replacement){
	string=this;
	while(string.indexOf(needle)!=-1){
		string=string.replace(needle," ");
	}
	return string;
}	
String.prototype.toProperCase=function(){
	return this.toLowerCase().replace(/^(.)|\s(.)/g,function($1){return $1.toUpperCase();});
};
document.getElementsByClassName=function(clsName,names){
	if(typeof(clsName)=="string"){
		var retVal=new Array();
		var elements=document.getElementsByTagName("*");
		for(i=0;i<elements.length;i++){
			if(names){
				if(elements[i].className.indexOf(" ")>=0){
					var classes=elements[i].className.split(" ");
					for(var j=0;j<classes.length;j++){
						if(classes[j]==clsName){
							retVal.push(elements[i].id);
						}
					}
				}
				else if(elements[i].className==clsName){
					retVal.push(elements[i].id);
				}
			}
			else{
				if(elements[i].className.indexOf(" ")>=0){
					var classes=elements[i].className.split(" ");
					for(var j= 0;j < classes.length;j++){
						if(classes[j]==clsName){
							retVal.push(elements[i]);
						}
					}
				}
				else if(elements[i].className==clsName){
					retVal.push(elements[i]);
				}	
			}
		}
		return retVal;
	}
	else{
		throw new Error("document.getElementsByClassName() must be passed a string representation of a class name");	
	}
};
document.getElementsByAttribute=function(attribute,names){
	if(typeof(attribute)=="string"){
		var retVal = new Array();
		var elements = document.getElementsByTagName("*");
		for(i = 0;i < elements.length;i++){
			if(names==false){
				if(elements[i].getAttribute(attribute)){
					retVal.push(elements[i].id+":"+elements[i].getAttribute(attribute));
				}
			}
			else{
				if(elements[i].getAttribute(attribute)){
					retVal.push(elements[i].id)
				}
			}
		}
		return retVal;
	}
	else{
		throw new Error("document.getElementsByAttribute() must be passed a string representation of an attribute name");	
	}
};
Array.prototype.inArray = function (value,caseSensitive){
	for (i=0;i<this.length;i++) {
		if(!caseSensitive){
			if(this[i].toLowerCase()==value.toLowerCase()){
				return true;
			}
		}
		else{
			if(this[i]==value){
				return true;
			}
		}
	}
	return false;
};

function enforceNumeric(field,e,next,len,allowed){
	if(next && len){
		tab=true;
	}
	char=e.charCode?e.charCode:e.keyCode;
	if (char!=8&&char!=46){
		if (char<48||char>57){
			if(allowed&&allowed.length>0){
				for(i=0;i<allowed.length;i++){
					if(allowed.inArray(char)){
						if(tab===true){
							autoTab();	
						}
						return true;
					}
					else{
						return false;	
					}
				}
			}
			else{
				return false;	
			}
		}
		else{
			if(tab===true){
				autoTab();	
			}
			return true;
		}
	}
	else if(char==46){
		if(field.value.indexOf(".")==-1){
			if(tab===true){
				autoTab();	
			}
			return true;
		}
		else{
			return false;	
		}
	}
	
	function autoTab(){
		if(field.value.length==(len-1)){
			next.focus();
		}
	}
}

function enforceNumericAT(field,e,allowed){
	char=e.charCode?e.charCode:e.keyCode;
	if (char!=8&&char!=46){
		if (char<48||char>57){
			if(allowed&&allowed.length>0){
				for(i=0;i<allowed.length;i++){
					if(!allowed.inArray(char)){
						field.value=field.value.substring(0,(field.value.length-1));	
					}
				}
			}
			else{
				field.value=field.value.substring(0,(field.value.length-1));	
			}
		}
	}
	else if(char==46){
		if(!field.value.indexOf(".")==-1){
			field.value=field.value.substring(0,(field.value.length-1));	
		}
	}
}

function autoTab(field,len,next){
	if (window.XMLHttpRequest || window.ActiveXObject){
		if(field.value.length==len){
			next.focus();
		}
	}
	else{
		if(field.value.length==len){
			next.focus();
		}
	}
}

function enforceAlphaNumeric(field,e){
	char=e.charCode?e.charCode:e.keyCode;
	if((char>=48&&char<=57)||(char>=65&&char<=90)||(char>=97&&char<=122)){
		return true;
	}
	else{
		return false;	
	}
}

// start: confirm an action with a Javascript confirm box
function doConfirm(msg){
	if(!confirm(msg)){
		return false;
	}
}
// end: confirm an action with a Javascript confirm box