function trim(str)
{
	if(str.replace(/\s+/i, "") == "")
	{
		return "";
	}
	else
	{
		var re = /^(\s*)([\W\w]*)(\b\s*$)/;
		if(re.test(str))
		{
			return str.replace(re, '$2');
		}
		else
		{
			return str;
		}
	}
}
function validateEmail(email)
{
	return trim(email).match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
}
//RegionMap Swapper Function
function showRegion(x)
{
	switch(x)
	{
		case 0:
			document.images["rgMap"].src= "images/RegionAllMap.gif";
			break;
		case 1:
			document.images["rgMap"].src= "images/RegionMetroMap.gif";
			break;
		case 2:
			document.images["rgMap"].src= "images/RegionCoastMap.gif";
			break;
		case 3:
			document.images["rgMap"].src= "images/RegionHistoricMap.gif";
			break;
		case 4:
			document.images["rgMap"].src= "images/RegionMtnMap.gif";
			break;
		case 5:
			document.images["rgMap"].src= "images/RegionRiversMap.gif";
			break;
		default :
			document.images["rgMap"].src= "images/RegionEmptyMap.gif";
			
	}
}
//SubCategory Functions
function showSubCategoryMenu()
{
	if(document.getElementById("SelectedCategoryMarker") != null && document.getElementById("SubCategoryBox") != null)
	{
		var position = getElementPosition("SelectedCategoryMarker");
		var trailerHeight = getObjectHeight("CategoryTrailerBox");
		shiftTo("CategoryTrailerBox", 166, (position.top - trailerHeight - 10));
		shiftTo("SubCategoryBox", 166, position.top);
		show("SubCategoryBox");
	}
}
//Date Picker Functions
//Adapted from an example by Danny Goodman
var selectedDateElement = null;
var selectedDateTarget = null;
function getFirstDay(theYear, theMonth){
    var firstDate = new Date(theYear,theMonth,1);
    return firstDate.getDay();
}
function getMonthLen(theYear, theMonth) {
    var nextMonth = new Date(theYear, theMonth + 1, 1);
    nextMonth.setHours(nextMonth.getHours() - 3);
    return nextMonth.getDate();
}
function getElementPosition(elemID) {
	var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}
function showCalendar(evt, targetElem) {
	evt = (evt) ? evt : event;
    if (evt) {
    	if (document.getElementById("calendar").style.visibility != "visible") {
    	    var elem = (evt.target) ? evt.target : evt.srcElement;
    	    selectedDateElement = elem;
    	    selectedDateTarget = targetElem;
    	    var position = getElementPosition(elem.id);
    	    var d = new Date(Date.parse(elem.value));
    	    var elemHeight = getObjectHeight(elem);
    	    var calHeight = getObjectHeight(document.getElementById("calendar"));
    	    var newTop = position.top; // - (calHeight - elemHeight);
    	    setCurrMonth(d);
    	    setCurrYear(d);
    	    populateTable(document.dateChooser, d);
            shiftTo("calendar", position.left + elem.offsetWidth, newTop);
            show("calendar");
        } else {
            hide("calendar");
        }
    }
}
function populateTable(form, today) {
    // pick up date form choices
    var theMonth = form.chooseMonth.selectedIndex;
    var theYear = parseInt(form.chooseYear.options[form.chooseYear.selectedIndex].text);
    // initialize date-dependent variables
    var firstDay = getFirstDay(theYear, theMonth);
    var howMany = getMonthLen(theYear, theMonth);
    if(today == null || today == undefined)
    {
		today = new Date();
	}
    
    // fill in month/year in table header
    document.getElementById("tableHeader").innerHTML = 
        form.chooseMonth.options[theMonth].text + " " + theYear;
    
    // initialize vars for table creation
    var dayCounter = 1;
    var TBody = document.getElementById("tableBody");
    // clear any existing rows
    while (TBody.rows.length > 0) {
        TBody.deleteRow(0);
    }
    var newR, newC, dateNum;
    var done=false;
    while (!done) {
        // create new row at end
        newR = TBody.insertRow(TBody.rows.length);
        if (newR) {
            for (var i = 0; i < 7; i++) {
                // create new cell at end of row
                newC = newR.insertCell(newR.cells.length);
                if (TBody.rows.length == 1 && i < firstDay) {
                    // empty boxes before first day
                    newC.innerHTML = "&nbsp;";
                    continue;
                }
                if (dayCounter == howMany) {
                    // no more rows after this one
                    done = true;
                }
                // plug in link/date (or empty for boxes after last day)
                if (dayCounter <= howMany) {
                    if (today.getFullYear() == theYear &&
                        today.getMonth() == form.chooseMonth.selectedIndex &&
                        today.getDate() == dayCounter) {
                        newC.id = "today";
                    }
                    newC.innerHTML = "<a href='#'onclick='chooseDate(" +
                        dayCounter + "," + theMonth + "," + theYear + 
                        "); return false;'>" + dayCounter + "</a>";
                     dayCounter++;
               } else {
                    newC.innerHTML = "&nbsp;";
                }
            }
        } else {
            done = true;
        }
    }
}
function fillYears() {
    var today = new Date();
    var thisYear = (today.getFullYear() - 2);
    var yearChooser = document.dateChooser.chooseYear;
    for (i = thisYear; i < thisYear + 7; i++) {
        yearChooser.options[yearChooser.options.length] = new Option(i, i);
    }
    setCurrMonth(today);
}
function setCurrMonth(today) {
    document.dateChooser.chooseMonth.selectedIndex = today.getMonth();
}
function setCurrYear(today) {
	var years = document.dateChooser.chooseYear.options;
	var theYear = today.getFullYear();
	for(var i = 0; i < years.length; ++i)
	{
		if(years[i].value == theYear)
		{
			document.dateChooser.chooseYear.selectedIndex = i;
			return;
		}
	}
}
function chooseDate(date, month, year) {
    selectedDateElement.value = (month + 1) + "/" + date + "/" + year;
    selectedDateTarget.value = (month + 1) + "/" + date + "/" + year;
    selectedDateElement = null;
    selectedDateTarget = null;
    hide("calendar");
}

var FocusField = null;

function BodyLoadFocus()
{
	if (FocusField != null)
	{
		document.getElementById(FocusField).focus();
	}
}
