String.prototype.trim=function(){ 
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
String.prototype.ltrim=function(){
	return this.replace(/^\s*/g,'');
}
String.prototype.rtrim=function(){
	return this.replace(/\s*$/g,'');
}

function isEmpty(s) {				
	var regexpWhitespace = /^\s+$/;
	return  ((s == null) || (s.length == 0) || regexpWhitespace.test(s));
}
function isAlpha(s) {
	var regexpAlphabetic = /^[a-zA-Z\s]+$/; // Add ' and - ?
	return regexpAlphabetic.test(s);
}
function isAlphaNum(s) {
	var validChars = /^[\w\s]+$/;
	return validChars.test(s);
}
function isDate(s) {
	var testDate = new Date(s);
	return !isNaN(testDate);
}
function isEmail(s) {
	var regexpEmail = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
	return regexpEmail.test(s);
}
function isInteger(s) {
	var regexp = /^[+]?\d+$/;
	return regexp.test(s);
}
function isFloat(s) {		
	return !isNaN(parseFloat(s));
}

function radioClass(element,className) {
	var siblings=element.parentNode.childNodes;
	for(var i=0;i<siblings.length;i++){
		var s=siblings[i];
		if(s.nodeType==1){
			YAHOO.util.Dom.removeClass(s,className);
		}
	}
	YAHOO.util.Dom.addClass(element,className);
}

/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/-/g, "\-");
	var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function clearErrorMessages() {
	var results = getElementsByClassName(document,'div','uni-alert-error');
	if(results && results[0]) { 
		results[0].parentNode.removeChild(results[0]);
	}
}

function displayErrorMessage(msgArray,insertBeforeDiv) {
/*<div class="uni-alert-error">
						<p>These errors need to be corrected:</p>
							<ul>
		<li><span class="errorMessage">A shipment date must fall between today and 9 days from now.</span></li>

	</ul>

					</div>*/
	clearErrorMessages();				
	/*var results = getElementsByClassName(document,'div','uni-alert-error');
	if(results && results[0]) { 
		while( results[0].hasChildNodes() ) { 
			results[0].removeChild( results[0].lastChild ); 
		}
		var theNewParagraph = document.createElement('p');
		var theTextOfTheParagraph = document.createTextNode('These errors need to be corrected:');
		theNewParagraph.appendChild(theTextOfTheParagraph);
		results[0].appendChild(theNewParagraph);
		var el = document.createElement("UL");
	
		for(var i=0;i<msgArray.length;i++) {
			var eLI = document.createElement("LI")
			var espan = document.createElement("span");
			espan.className = 'errorMessage';
			var spanMsg = document.createTextNode(msgArray[i]);
			espan.appendChild(spanMsg);
			eLI.appendChild(espan);
			el.appendChild(eLI);
		}
	
		results[0].appendChild(el);
		
	} else {*/
		var theDiv = document.createElement('div');
		theDiv.className ='uni-alert-error';
		var theNewParagraph = document.createElement('p');
		var theTextOfTheParagraph = document.createTextNode('These errors need to be corrected:');
		theNewParagraph.appendChild(theTextOfTheParagraph);
		theDiv.appendChild(theNewParagraph);
		
		var el = document.createElement("UL");
		
		
		
		for(var i=0;i<msgArray.length;i++) {
			var eLI = document.createElement("LI")
			var espan = document.createElement("span");
			espan.className = 'errorMessage';
			var spanMsg = document.createTextNode(msgArray[i]);
			espan.appendChild(spanMsg);
			eLI.appendChild(espan);
			el.appendChild(eLI);
		}
		
		
		theDiv.appendChild(el);
		
		YAHOO.util.Dom.get(insertBeforeDiv).parentNode.insertBefore(theDiv,YAHOO.util.Dom.get(insertBeforeDiv));
	//}
}


function HighlightField(name) {
	//tabView.set('activeIndex', 2); 
	if (isIE() && name.parentNode != null && name.parentNode.className == "outLine") {		
			YAHOO.util.Dom.setStyle(name.parentNode, 'border', 'solid 2px #f00');					
	} else {
		YAHOO.util.Dom.setStyle(name, 'border', 'solid 2px #f00');
	}	
}

function UnHighlightField(name) {
	//tabView.set('activeIndex', 2); 
	if (isIE() && name.parentNode != null && name.parentNode.className == "outLine") {
		YAHOO.util.Dom.setStyle(name.parentNode, 'border', 'solid 1px #BDC8E0');
	} else {
		YAHOO.util.Dom.setStyle(name, 'border', 'solid 1px #BDC8E0');
	}	
}

function UnHighlightDiv(name) {
	YAHOO.util.Dom.setStyle(name, 'border', '');
}


function capitalize(str) {
    return str.charAt(0).toUpperCase() + str.substr(1);
}

//Credit to Brad Harris at
//http://www.selfcontained.us/2008/04/22/format-currency-in-javascript-simplified/
function formatCurrency(num) {
    num = isNaN(num) || num === '' || num === null ? 0.00 : num;
    return parseFloat(num).toFixed(2);
}

// Returns a Date object from a delimited string
// or NULL if unable to parse the string.
function parseDate(dateString, delims, order, max) {
    var resultDate = null;
    var parts = dateString.split(delims);
    for (i = 0; i < parts.length; i++) {
        parts[i] = parseInt(parts[i]);
    }
    if (order == 'ymd') {
        resultDate = new Date(parts[0],parts[1] - 1,parts[2],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    } else if (order == 'ydm') {
        resultDate = new Date(parts[0],parts[2] - 1,parts[1],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    } else if (order == 'mdy') {
        resultDate = new Date(parts[2],parts[0] - 1,parts[1],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    } else if (order == 'myd') {
        resultDate = new Date(parts[1],parts[0] - 1,parts[2],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    } else if (order == 'dmy') {
        resultDate = new Date(parts[2],parts[1] - 1,parts[0],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    } else if (order == 'dym') {
        resultDate = new Date(parts[1],parts[2] - 1,parts[0],(max ? 23 : 0),(max ? 59 : 0),(max ? 59 : 0));
    }
    return resultDate;
}

// Returns a Date object from the value of the given text field
// or NULL in unable to parse the text field value.
function parseDateField(dateId,delims,order,max) {
    var resultDate = null;
    if (!isEmpty(D(dateId))) {
        var pd = parseDate(D(dateId).value,delims,order,max);
        if (pd != null && isDate(pd)) {
            resultDate = new Date(pd);
        }
    }
    return resultDate;
}
