function notBlank(field) {
    //returns true if field isnt blank
    var result = !(field.value == null || field.value == "");
    if (!result) field.focus();
    
    return result;
    
}

function passwordMatch(field1, field2) {
    //returns true if field1 value matches field2 value    
    var result = (field1.value == field2.value);
    if (!result) field2.focus();
    
    return result;
}

function startPreceedsEnd(field1, field2) {
    //returns true if field2 date is greater than field1 date
    var date1 = phpStrDateToJsDate(field1.value);
    var date2 = phpStrDateToJsDate(field2.value);
    
    var result = (date2 > date1);
    if (!result) field1.focus();
    
    return result;
}

function dateDiffMax(field1, field2, days) {
    //returns true if param days is greater than or equal to the difference in days between field1 and field2
    var date1 = phpStrDateToJsDate(field1.value);
    var date2 = phpStrDateToJsDate(field2.value);
    var diff = new Date();
    diff.setTime(Math.abs(date2.getTime() - date1.getTime()));
    
    var diffDays = Math.floor(diff.getTime() / (1000 * 60 * 60 * 24));
    var result = days >= diffDays;
    if (!result) field2.focus();
    
    return result;
}

function dateInFuture(field1, daysAhead) {
    //returns true if field1 is at least param daysAhead in the future
    var date1 = phpStrDateToJsDate(field1.value);
    
    var fiveDaysAhead = new Date();
    fiveDaysAhead.setDate(fiveDaysAhead.getDate() + daysAhead);
    
    var result = (date1 >= fiveDaysAhead);
    if (!result) field1.focus();
    
    return result;
}

function phpStrDateToJsDate(value) {
    //expects a date dd-mm-yyyy (php friendly) and returns a js date mm-dd-yyyy
    var ret = new Date();
    var splitDate = value.split('-');

    //minus 1 from the month because js handles months zero based.. sigh
    ret.setFullYear(splitDate[2], splitDate[1]-1, splitDate[0])

    return ret;
}