var autoUpdate = 1
var posting = 0
var jsondata
var user = cookieGet('user')

function charCounter(field, counter, max) {
        field = $(field);
        counter = $(counter);

        if (field.value.length > max) {
            field.value = field.value.substring(0, max);
        } else {
            counter.innerHTML = max - field.value.length;
        }
    }

    function cookieExists() {
        var cookie = Cookie.read('tbit')
        
        if (cookie == null) {
            return false
        }
        
        return true
    }
    
    function updateLogin() {
        $('login').innerHTML = ''
        
        if (cookieExists() != false) {
            var div = new Element('div')
            div.appendText('Signed in as ')
            var span = new Element('span')
            span.setStyle('font-weight', 'bold')
            span.appendText(cookieGet('user'))
            div.appendChild(span)
            div.appendText(' ')
            var a = new Element('a', {'href': 'javascript:void(null)'})
            a.appendText('change')
            a.addEvent('click', function() {
                deleteCookie()
                updateLogin()
                $('queue').setStyle('display', 'none')
            })
            div.appendChild(a)
            
            $('login').appendChild(div)
        } else {
            var table = new Element('table', {'border': 0, 'cellpadding': 0, 'cellspacing': 0})
            var tr = new Element('tr')
            var td = new Element('td')
            td.appendText('Twitter Username')
            tr.appendChild(td)
            td = new Element('td', {'width': 30})
            tr.appendChild(td)
            td = new Element('td')
            td.appendText('Twitter Password')
            tr.appendChild(td)
            table.appendChild(tr)
            tr = new Element('tr')
            td = new Element('td')
            var input = new Element('input', {'type': 'text', 'name': 'user', 'id':'user'})
            td.appendChild(input)
            tr.appendChild(td)
            td = new Element('td')
            tr.appendChild(td)
            td = new Element('td')
            var input = new Element('input', {'type': 'password', 'name': 'password', 'id':'password'})
            input.addEvent('keydown', function(event) {
                if (event.code == 13) {
                    signIn()
                }
            });
            td.appendChild(input)
            tr.appendChild(td)
            td = new Element('td')
            button = new Element('button', {'class': 'button'})
            button.appendText('Sign In');
            button.setStyle('margin-left', '8px')
            button.addEvent('click', function() {
                signIn()
            })
            td.appendChild(button)
            tr.appendChild(td)
            table.appendChild(tr)
            
            $('login').appendChild(table)
        }
    }
   
    function cookieGet(key, idx) {
        if (idx == undefined) {
            idx = 0
        }
                
        users = JSON.decode(Cookie.read('tbit'))
        if (users) {
            userObj = users[idx]
            return userObj[key]
        }
    }
    
    function deleteCookie() {
        Cookie.dispose("tbit");
    }
        
    function charCounter(field, counter, max) {
        field = $(field);
        counter = $(counter);

        if (field.value.length > max) { 
            field.value = field.value.substring(0, max);
        } else {
            counter.innerHTML = max - field.value.length;
        }
    }

    function queueCancel(qid) {
        var jsonRequest = new Request.JSON({url: "json/queue_cancel.php", onComplete: function(data) {
            updateStatus()
        }}).get({'q': qid});
    }

    function togglePostingMsg() {
        if ($('postingMsg').getStyle('display') == 'none') {
            $('postingMsg').setStyle('display', 'block')
            $('status').disabled = true
        } else {
            setTimeout("$('postingMsg').setStyle('display', 'none')", 1500)  
            setTimeout("$('status').disabled = false", 1500)
        }
    }

    function queuePost(user, password, status) { 
        if (posting == 0) {
            posting = 1
            togglePostingMsg()
        } else {
            return
        }

        var jsonRequest = new Request.JSON({url: "json/queue_post.php", onComplete: function(data) {
            posting = 0
            togglePostingMsg()
            autoRefresh = 1
            autoUpdateStatus()
            $('status').value = ''
            charCounter("status", "counter", 140)
        }}).get({'u': user, 'p': password, 's': status});
    }

    function autoUpdateStatus() {
        if (autoRefresh) {
            updateStatus()
        } else {
            setTimeout('updateStatus()', 50000)
            return
        }

        setTimeout('autoUpdateStatus()', 10000)
    }
    
    function save() {
        if ($('status').value == '') {
            return
        }
        
        var users = new Array();
        var userObj = new Object()
        var user = null
        var password = null

        if (cookieExists() == false) {
            user = $('user').value
            password = $('password').value
            
            if (user == '' || password == '') {
                return false
            }    
            
            userObj['service'] = 'twitter'
            userObj['user'] = user
            userObj['password'] = password
            users[0] = userObj
            Cookie.write('tbit', JSON.encode(users), {duration: 365})
        } else {
            user = cookieGet('user')
            password = cookieGet('password')
        }
        
        updateLogin()

        queuePost(user, password, $('status').value)
    } 
    
    function signIn() {
        user = $('user').value
        password = $('password').value
        
        if (user == '' || password == '') {
            return false
        }    
        
        var userObj = new Object()
        var users = new Array();
        userObj['service'] = 'twitter'
        userObj['user'] = user
        userObj['password'] = password
        users[0] = userObj
        Cookie.write('tbit', JSON.encode(users), {duration: 365})
        
        updateLogin()
        updateStatus()
    }

    function setStatus(status) {
        $('status').value = status 
        $('status').focus()
        charCounter("status", "counter", 140)
    }
   
    function updateStatus() {
        if (cookieExists() == false) {
            return
        }
        
        var user = cookieGet('user')
        var password = cookieGet('password')
        
        var jsonRequest = new Request.JSON({url: "json/user_status_summize_dev.php", onComplete: function(data) {
            jsondata = data
            $('queue').innerHTML = ''
            $('queue').setStyle('display', 'block')
            
            var queued = (data.NEW ? data.NEW : []);
            var completed = (data.COMPLETED ? data.COMPLETED : []);
            var canceled = (data.CANCELED ? data.CANCELED : []);
            var addRefresh = 0
                        
            if (queued.length > 0) {
                addRefresh = 1
                var table = new Element('table', {'border': 0, 'cellpadding': 0,'cellspacing': 0, 'width': '100%'})
                var tr = new Element('tr')
                var td = new Element('td', {'valign': 'middle', 'colspan':'2'})
                var div = new Element('div', {'id': 'queued'})
                div.appendText('Enqueued')
                td.appendChild(div)
                tr.appendChild(td)
                td = new Element('td', {'valign': 'middle', 'align': 'right'})
                var a = new Element('a', {'href': 'javascript:void(null)'})
                a.appendText('Refresh')
                a.addEvent('click', function() {
                    updateStatus() 
                })
                td.appendChild(a)
                tr.appendChild(td)
                table.appendChild(tr)
                
                $('queue').appendChild(table)
                
                for (var i = 0; i < queued.length; i++) {
                    var queuedItem = queued[i]
                    var tr = new Element('tr')
                    var td = new Element('td', {'valign': 'top', 'class': 'postCol', 'width': 52})
                    var icon = new Element('img', {'src': 'images/profile_transparent.png'})
                    icon.setStyle('padding-right', '8px')
                    icon.setStyle('border', '1px dotted #ececec')
                    icon.setStyle('float', 'left')
                    td.appendChild(icon)
                    tr.appendChild(td)
                    td = new Element('td', {'valign': 'top', 'class': 'postCol'})
                    var div = new Element('div')
                    var a = new Element('a', {'href': 'http://twitter.com/'+escape(queuedItem['author']), 'target': '_new'})
                    a.appendText(queuedItem['author'])
                    div.appendChild(a)
                    div.appendText(': ')
                    div.innerHTML = div.innerHTML + queuedItem['title']

                    var ageDiv = new Element('div')
                    ageDiv.appendText('about '+queuedItem['age'])

                    if (queuedItem['author'] != null && queuedItem['author'] != user) {
                        ageDiv.innerHTML = ageDiv.innerHTML + '  &middot; '
                        a = new Element('a', {'href': 'javascript:void(null)', 'onclick': 'setStatus("@'+queuedItem['author']+' ")'})
                        a.appendText('Reply')
                        ageDiv.appendChild(a)
                    } else if (queuedItem['author'] == user) {
                        ageDiv.innerHTML = ageDiv.innerHTML + '  &middot; '
                        var a = new Element('a', {'href': 'javascript:void(null)'})
                        a.addEvent('click', function() {
                            queueCancel(this)
                        }.bind(queuedItem['queue_id']))
                        a.appendText('Cancel')
                        ageDiv.appendChild(a)
                    }

                    div.appendChild(ageDiv)
                    td.appendChild(div)
                    tr.appendChild(td)
                    table.appendChild(tr)
                }
                
                $('queue').appendChild(new Element('br'))
            } else {
                autoRefresh = 0 
            }
            
            //if (completed.length > 0) {
            if (true) {
                var div = new Element('div', {'id': 'posted'})

                if (addRefresh == 0) {
                    var table = new Element('table', {'border': 0, 'cellpadding': 0,'cellspacing': 0, 'width': '100%'})
                    var tr = new Element('tr')
                    var td = new Element('td', {'valign': 'middle'})
                    div.appendText('History')
                    var span = new Element('span')
                    span.appendText(' Most Recent 15 (')
                    span.setStyle('font-weight', 'normal')
                    a = new Element('a', {'href':'http://summize.com/search?q=from%3A'+escape(user)+'+OR+to%3A'+escape(user), 'target':'_new'})
                    a.appendText('All')
                    span.appendChild(a)
                    span.appendText(')')
                    div.appendChild(span)
                    td.appendChild(div)
                    tr.appendChild(td)
                    td = new Element('td', {'valign': 'middle', 'align': 'right'})
                    var a = new Element('a', {'href': 'javascript:void(null)'})
                    a.appendText('Refresh')
                    a.addEvent('click', function() {
                        updateStatus() 
                    })
                    td.appendChild(a)
                    tr.appendChild(td)
                    table.appendChild(tr)
                    
                    $('queue').appendChild(table)
                } else {
                    div.appendText('History')
                    var span = new Element('span')
                    span.appendText(' Most Recent 15 (')
                    span.setStyle('font-weight', 'normal')
                    a = new Element('a', {'href':'http://summize.com/search?q=from%3A'+escape(user)+'+OR+to%3A'+escape(user), 'target':'_new'})
                    a.appendText('All')
                    span.appendChild(a)
                    span.appendText(')')
                    div.appendChild(span)

                    $('queue').appendChild(div)
                }

                var table = new Element('table', {'border': 0, 'cellpadding': 0, 'cellspacing': 0, 'width': '100%'})

                for (var i = 0; i < completed.length; i++) {
                    var completedItem = completed[i]

                    var tr = new Element('tr')
                    var td = new Element('td', {'valign': 'top', 'class': 'postCol', 'width': 52})
                    var icon = new Element('img', {'src': completedItem['iconUrl']})
                    icon.setStyle('padding-right', '8px')
                    icon.setStyle('float', 'left')
                    td.appendChild(icon)
                    tr.appendChild(td)
                    td = new Element('td', {'valign': 'top', 'class': 'postCol'})
                    var div = new Element('div')
                    var a = new Element('a', {'href': 'http://twitter.com/'+escape(completedItem['author']), 'target': '_new'})
                    a.appendText(completedItem['author'])
                    div.appendChild(a)
                    div.appendText(': ')
                    div.innerHTML = div.innerHTML + completedItem['title']
                    var ageDiv = new Element('div')
                    ageDiv.appendText('about '+completedItem['age'])

                    if (completedItem['author'] != null && completedItem['author'] != user) {
                        ageDiv.innerHTML = ageDiv.innerHTML + '  &middot; '
                        a = new Element('a', {'href': 'javascript:void(null)', 'onclick': 'setStatus("@'+completedItem['author']+' ")'})
                        a.appendText('Reply')
                        ageDiv.appendChild(a)
                    }

                    ageDiv.innerHTML = ageDiv.innerHTML + '  &middot; '
                    a = new Element('a', {'href': completedItem['publishedUrl'], 'target': '_new'})
                    a.appendText('View Tweet')
                    ageDiv.appendChild(a)
                    div.appendChild(ageDiv)
                    td.appendChild(div)
                    tr.appendChild(td)
                    table.appendChild(tr)
                }

                $('queue').appendChild(table)
            }

            if (canceled.length > 0) {
                var table = new Element('table', {'border': 0, 'cellpadding': 0,'cellspacing': 0, 'width': '100%'})
                var tr = new Element('tr')
                var td = new Element('td', {'valign': 'middle'})
                var div = new Element('div', {'id': 'queued'})
                div.appendText('Canceled')
                div.setStyle('padding-top', '14px');
                td.appendChild(div)
                tr.appendChild(td)
                td = new Element('td', {'valign': 'middle', 'align': 'right'})
                tr.appendChild(td)
                table.appendChild(tr)

                $('queue').appendChild(table)

                for (var i = 0; i < canceled.length; i++) {
                    var queuedItem = canceled[i]
                    var tr = new Element('tr')
                    var td = new Element('td', {'valign': 'top', 'class': 'postCol', 'width': 52})
                    var icon = new Element('img', {'src': 'images/profile_transparent.png'})
                    icon.setStyle('padding-right', '8px')
                    icon.setStyle('border', '1px dotted #ececec')
                    icon.setStyle('float', 'left')
                    td.appendChild(icon)
                    tr.appendChild(td)
                    td = new Element('td', {'valign': 'top', 'class': 'postCol'})
                    var div = new Element('div')
                    var a = new Element('a', {'href': 'http://twitter.com/'+escape(queuedItem['author']), 'target': '_new'})
                    a.appendText(queuedItem['author'])
                    div.appendChild(a)
                    div.appendText(': ')
                    div.innerHTML = div.innerHTML + queuedItem['title']
                    var errDiv = new Element('div')
                    switch (queuedItem['errorCode']) {
                        case '401':
                            errStr = "authorzation failure";
                            break;
                        default:
                            errStr = "timeout";
                    }
                    errDiv.appendText("canceled: because of "+errStr)
                    div.appendChild(errDiv)

                    var ageDiv = new Element('div')
                    ageDiv.appendText('about '+queuedItem['age'])

                    if (queuedItem['author'] != null && queuedItem['author'] != user) {
                        ageDiv.innerHTML = ageDiv.innerHTML + '  &middot; '
                        a = new Element('a', {'href': 'javascript:void(null)', 'onclick': 'setStatus("@'+queuedItem['author']+' ")'})
                        a.appendText('Reply')
                        ageDiv.appendChild(a)
                    }

                    div.appendChild(ageDiv)
                    td.appendChild(div)
                    tr.appendChild(td)
                    table.appendChild(tr)
                }

                $('queue').appendChild(new Element('br'))
            }

            var summize = new Element('div')
            summize.setStyle('float', 'right')
            summize.setStyle('padding-top', '7px')
            summize.setStyle('padding-bottom', '4px')
            var a = new Element('a', {'href': 'http://summize.com/', 'target': '_new'})
            var img = new Element('img', {'src': 'http://summize.com/images/powered-by-summize-sig.gif?1210694337', 'border':0})
            a.appendChild(img)
            summize.appendChild(a)
            $('queue').appendChild(summize)
            $('queue').appendChild(new Element('br'))
        }}).get({'u': user, 'p': password});
        
        
    }
    
    function appendUrl(url) {
        if (url == "") {
            return
        }
        
        var jsonRequest = new Request.JSON({url: "json/bitly2.php", onComplete: function(data) {
            if ($('status').value.length == 0) {
                $('status').value = $('status').value + data.url
            } else {
                $('status').value = $('status').value + ' ' + data.url
            }
            
            charCounter("status", "counter", 140)
            $('link').value = ''
            toggleLinkTray()
        }}).get({'u': url});
    }

    function appendUrl2(url) {
        if (url == "") {
            return
        }

        var jsonRequest = new Request.JSON({url: "json/bitly2.php", onComplete: function(data) {
            if ($('status').value.length == 0) {
                $('status').value = $('status').value + data.url
            } else {
                $('status').value = $('status').value + ' ' + data.url
            }

            charCounter("status", "counter", 140)
        }}).get({'u': url});
    }


function toggleLinkTray() {
    if (linkTrayOpen == 0) {
        linkTrayOpen = 1
        $('addLink').setStyle('display', 'none')
        $('addLinkForm').setStyle('display', 'block')
    } else {
        linkTrayOpen = 0
        $('addLink').setStyle('display', 'block')
        $('addLinkForm').setStyle('display', 'none')
    }
}

