function handle_sort (sort_field, sort_dir, override)
{
    if (sort_field != "")
    {
        document.getElementById("sort_field").value = sort_field;
        
        if (sort_field != document.getElementById("sort_field").value)
        {
        	sort_dir = "";
        }
        
        switch (document.getElementById("sort_dir").value)
        {
            case "ASC":
                document.getElementById("sort_dir").value = "DESC";
                break;
            case "DESC":
                document.getElementById("sort_dir").value = "ASC";
                break;
            default:
                document.getElementById("sort_dir").value = sort_dir;
                break;
        }
        
        if (override == 1)
        {
        	document.getElementById("sort_dir").value = sort_dir;
        }
    }
    
    document.getElementById("f_filter").submit();
    return true;
}

function set_select_box (obj, sessionValue)
{
    if (sessionValue == "")
    {
        obj.options[0].selected = true;
    }
    else
    {
        for (var i = 0; i < obj.length; i++)
        {
            if (obj[i].value == sessionValue)
            {
                obj.selectedIndex = i;
            }
        }
    }
}

function set_multi_select_box (obj, sessionValue)
{
	if (sessionValue == "")
	{
		for (var i = 0; i < obj.length; i++)
		{
			obj[i].selected = true;
		}
	}
	else
	{
		for (var i = 0; i < obj.length; i++)
		{
		    if (obj[i].value == sessionValue)
		    {
		    	obj[i].selected = true;
		    }
		}
	}
}

function isValidDate(inObj)
{
	var dateStr = inObj.value;

    if (dateStr.length == 0)
    {
        return false;
    }

	// first check for any delimiter
    var datePat1 = /\D/;
    var matchArray = dateStr.match(datePat1); 

    if (matchArray)
    {        
        // found a delimiter, now try to parse
        var datePat = /^(\d{1,2})([-/ ])(\d{1,2})\2(\d{2,4})$/;
        matchArray = dateStr.match(datePat); 

        if (matchArray == null)
        {
            alert("Invalid date.  Please re-enter.");
            inObj.select();
            return false;
        }
        else
        {
            month = matchArray[1]; // parse date into variables
            day = matchArray[3];
            year = matchArray[4];
            var ckyear = year.length;

            if (ckyear != 4)
            {
                  alert("Invalid date.  Please re-enter.");
                  inObj.select();
                  return false;
            }
        }
    }
    else
    {
        var len = dateStr.length;
        //no delimiter, must be mmddyyyy
        month = dateStr.substr(0,2);
        day = dateStr.substr(2,2);
        year = dateStr.substr(4,len);
        var ckyear = year.length;

        if (ckyear != 4)
        {
            alert("Invalid date.  Please re-enter.");
            inObj.select();
            return false;
        }
    }

    // START EDIT CHECK
    if (month < 1 || month > 12)	// check month range
    { 
        alert("Invalid Month in date.  Please re-enter.");
        inObj.select();
        return false;
    }

    if (day < 1 || day > 31)
    {
        alert("Invalid day in date.  Please re-enter.");
        inObj.select();
        return false;
    }

    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
    {
        alert("Invalid day in date.  Please re-enter.");
        inObj.select();
        return false;
    }

    if (month == 2)		// check for february 29th
    { 
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

        if (day > 29 || (day == 29 && !isleap))
        {
            alert("Invalid day in date.  Please re-enter.");
            inObj.select();
            return false;
        }
    }

    inObj.value = month + "/" + day + "/" + year;
    return true;
}
