var io = require('socket.io-client')('http://xxxxxxxxxxxx.herokuapp.com/');
var exec = require('child_process').exec;
var webdriver = require('selenium-webdriver');
var Notification = require('node-notifier');
var notifier = new Notification();

var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();

driver.get('https://m.facebook.com/messages/read/?tid=id.xxxxxxxxxxxxxxxxx'); // mobile fb loads a lot faster

driver.findElement(webdriver.By.css('[name=email]')).sendKeys('email');
driver.findElement(webdriver.By.css('[name=pass]')).sendKeys('password');
driver.findElement(webdriver.By.css('[name=pass]')).submit();

io.on('connect', function () {
    console.log('yocam: connected to socket.io');
});

// the code inside this is very specific to what i was doing, you don't need it
io.on('yo', function (username) {
    // http://iharder.sourceforge.net/current/macosx/imagesnap/
    exec('imagesnap -w 1', function (err) {
        notifier.notify({
            title: 'YOCAM',
            message: username + ' TOOK YO PICTURE'
        });
        console.log('yocam: ' + username + ' sent a yo');

        if (err) throw err;

        var msg;
        if (username === 'BRUGGIE') {
            msg = 'zach, you\'re using this to take a selfie, stop';
        } else {
            msg = 'hi ' + username + '! ';
        }
        driver.findElement(webdriver.By.css('textarea[name=body]')).sendKeys(msg);
        driver.findElement(webdriver.By.css('[type=file]')).sendKeys(process.cwd() + '/snapshot.jpg');

        // hecka unstable, sometimes it can't find the el and it crashes
        // i run the client with `forever` so it just restarts
        // i could actually catch the exception but nahh
        driver.wait(function () {
            return driver.isElementPresent(webdriver.By.css('.btnC[name=send]:not([disabled])')).then(function (element) {
                driver.findElement(webdriver.By.css('.btnC[name=send]')).click();
            });
        });
    });
});