Ideally you could set a callback function with Offline.check, but I understand it is external, so that won't work.
You can use a timeout to wait for Offline.state to get set, but then you'll need to do any actions involving the variable a asynchronously too:
function checkstats(callBack){  // checkstats() now takes a callback
    Offline.check();  // Start Offline.check() as usual
    setTimeout(function(){  // Set a timeout for 1 second
        if(Offline.state=="up")  // After 1 second, check Offline.state as usual
        {
            callBack(true);  // ...but we call the callback instead of returning
        }
        else
        {
            callBack(false);  // ...but we call the callback instead of returning
        }
    }, 1000);
}
checkstats(function(a){ // This anonymous function is the callback we're using
    // Now you can use "a" normally
});
If you're not sure that Offline.check() will take exactly 1 second, you can use an interval instead of a timeout, and try every second for, say, 5 seconds:
function checkstats(callBack){
    Offline.check();
    var attempt = 0, maxAttempts = 5;
    var checkStatsInterval = setInterval(function(){
        if(++attempt > maxAttempts){
            // Ran out of attempts, just give up
            clearInterval(checkStatsInterval);
            alert('Waited '+maxAttempts+' seconds for Offline data. Giving up!');
            return;
        }
        if(Offline.state){
            clearInterval(checkStatsInterval);
            // It's loaded! Now confidently check Offline.state
            if(Offline.state=="up")
            {
                callBack(true);
            }
            else
            {
                callBack(false);
            }
        }
    }, 1000);
}
checkstats(function(a){
    // Now you can use "a" normally
});