var HAS_BAD_RAND = Ti.Platform.osname.match(/iphone/);
var win = Ti.UI.createWindow({ backgroundColor: '#ffffff' });
var fortunes = [
    'Something Profound',
    'Something Mysterious',
    'Widely Applicable',
    'Happy Mobile Hacking'
];

var closed_cookie, opened_cookie, opened_cookie_image, paper, new_cookie_button;

// main
createElements();
assignBehaviors();
arrangeElements();
win.open();

function createElements()
{
    closed_cookie = Ti.UI.createImageView({
        url: 'closed_cookie.jpg',
        width: 'auto',
        height: 'auto'
    });

    opened_cookie = Ti.UI.createView({
        width: 300,
        height: 234,
        visible: false
    });

    opened_cookie_image = Ti.UI.createImageView({
        url: 'opened_cookie.jpg',
        width: 'auto',
        height: 'auto'
    });

    paper = Ti.UI.createLabel({
        color: '#000000',
        font: {fontSize: 12, fontFamily: 'Courier'},
        width: 150,
        height: 'auto',
        top: 80,
        left: 55,
        textAlign: 'left'
    });
    
    new_cookie_button = Ti.UI.createButton({
        title: 'New Fortune Cookie',
        width: 200,
        height: 50,
        bottom: 25,
        visible: false
    });
}

function assignBehaviors()
{
    closed_cookie.addEventListener('click', openCookie);
    new_cookie_button.addEventListener('click', newCookie);
    Ti.Gesture.addEventListener('shake', toggleCookie);
}

function toggleCookie( ev )
{
    opened_cookie.visible ? newCookie() : openCookie();
}

function newCookie( ev )
{
    opened_cookie.hide();
    new_cookie_button.hide();
    closed_cookie.show();
}

function openCookie( ev )
{
    closed_cookie.hide();
    paper.text = getFortune();
    opened_cookie.show();
    new_cookie_button.show();
}

function getFortune()
{
    var rand = random( 0, fortunes.length - 1 );

    return fortunes[ rand ];
}

function random( min, max )
{
    min = min || 0;
    max = max || 1;
    if (HAS_BAD_RAND){ max += 1; }

    var secs = (new Date()).getTime();
    var rand = min + Math.round( Math.random( secs ) * (max - min) );

    return HAS_BAD_RAND ? ( secs % max ) : rand;
}

function arrangeElements()
{
    opened_cookie.add( opened_cookie_image );
    opened_cookie.add( paper );

    win.add( closed_cookie );
    win.add( opened_cookie );
    win.add( new_cookie_button );
}