function validateDates(start,end) {
     return(validateDatesWithAllowEqual(start,end,false));
}

function validateDatesAllowEqual(start,end) {
     return(validateDatesWithAllowEqual(start,end,true));
}

function validateDatesWithAllowEqual(start,end,allowequal){
		if (start!="" && end !="" ) {
			if (start=="mm/dd/yyyy" && end=="mm/dd/yyyy") {
				return true;
			}
		    var startDate = parseDate(start);
		    var endDate = parseDate(end);
		    if (startDate!=null && endDate!=null) {
				if (Date.parse(startDate) < Date.parse(endDate)) {
					return true;
				} else {
				        if((allowequal) &&  (Date.parse(startDate) == Date.parse(endDate))) {
						return true;
					} else {
						alert("Start date must be earlier than end date.");
						return false;
					}
				}
			} else {
				alert("One of the dates you entered is not valid!");
				return false;
			}
		}
		return true;
}

function clearDate(dateField){
	if (dateField.value=="mm/dd/yyyy") {
		dateField.value="";
		return;
	}
	return;
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function parseDate(ds) {
	var i,r=null,pd=[];
	var gsSplit="/";
	var gbShortYear=false;
	var giDatePos=1;
	var gMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
	var gEnd=[2008,12,31];
	if (!ds) return r;
	if (gsSplit.length>0) {
		pd=ds.split(gsSplit);
	} else {
		var yl=gbShortYear?2:4;
		if (giDatePos==2) { pd[0]=ds.substring(0,yl);pd[1]=ds.substring(yl,yl+2);pd[2]=ds.substring(yl+2,yl+4); }
		else { pd[0]=ds.substring(0,2);pd[1]=ds.substring(2,4);pd[2]=ds.substring(4,4+yl); }
	}
	if (pd.length==3) {
		var m=pd[giDatePos==1?0:1];
		for (i=0; (i<12)&&(gMonths[i].substring(0,3).toLowerCase()!=m.substring(0,3).toLowerCase())&&(i+1!=m); i++);
		if (i<12) {
			var y=parseInt(pd[giDatePos==2?0:2].substring(0,4),10);
			var pf=Math.floor(gEnd[0]/100)*100;
			r=[y<100?y>gEnd[0]%100?pf-100+y:pf+y:y,i+1,parseInt(pd[giDatePos],10)];
		} else return null;
	} else return null;
	var td=new Date(r[0],r[1]-1,r[2]);
	if (isNaN(td)||td.getMonth()!=r[1]-1) return null;
	return td;
}