var personDivs = new Array();
var checkInterval;
var waitingInterval;
var buttonPushed;

var setup;


Array.prototype.inArray = function (tweet) {
    // Returns true if the passed value is found in the
    // array.  Returns false if it is not.
    var i;
    for (i = 0; i < this .length; i++) {
        // Matches identical (===), not just similar (==).
        var screenName = tweet.user.screen_name;
        
        if (this [i].id == screenName) {
            return this [i];
        }
    }
    return false;
};


function Setup() {
    this.mainUser;
    this.mainPass;
    this.myUser;
    this.myPass;
}


function init() {
    setup = new Setup();
    
    // checkInterval = setInterval("doCheck()", 2 * 60 * 1000);
}

function setupUser(user2setup) {

    switch (user2setup) {
    
        case 'my':
            setup.myUser = document.getElementById('setupMyUser').value;
            setup.myPass = document.getElementById('setupMyPass').value;
        
        break;
        
        case 'main':
            setup.mainUser = document.getElementById('setupMainUser').value;
            setup.mainPass = document.getElementById('setupMainPass').value;        
        
        break;
    
    
    }


}

function Submission(action, user, pass, status) {
    this .action = action;
    this .user = user;
    this .pass = pass;
    this .status = status;
    this .url = "tweetTest.php";
    
    
    this .toPostStr = function () {
        var postStr = "";
        postStr += "action=" + encodeURIComponent(this .action);
        postStr += "&user=" + encodeURIComponent(this .user);
        postStr += "&pass=" + encodeURIComponent(this .pass);
        if (this .status) {
            postStr += "&status=" + encodeURIComponent(this .status);
        }
        return postStr;
    };
}

function eraseTweetDivs() {
    //alert('hi');
    var divs2clear = personDivs;
    
    for (var i = 0; i < divs2clear.length; i++) {
        div2clear = divs2clear[i];
        while (div2clear.getElementsByTagName('div') .length != 0) {
            var divs = div2clear.getElementsByTagName('div');
            for (var div = 0; div < divs.length; div++) {
                divs[div].parentNode.removeChild(divs[div]);
            }
        }
        
    }
}



function erasePersonDivs() {
    
    for (var i = 0; i < personDivs.length; i++) {
        personDivs[i].parentNode.removeChild(personDivs[i]);
    }
    
}

function eraseMyTweets() {
    var myTweetsDiv = document.getElementById('myTweets');
    while (myTweetsDiv.childNodes.length !=0) {
           myTweetsDiv.removeChild(myTweetsDiv.firstChild);
    
    }

}

function drawPersonDivs() {
    var groupTweets = document.getElementById('groupTweets');
    for (var i = 0; i < personDivs.length; i++) {
        groupTweets.appendChild(personDivs[i]);
        
    }
    
    
}


function writeData(tweetsArray) {
    
    erasePersonDivs();
    personDivs = new Array();
    
    for (var i = 0; i < tweetsArray.length; i++) {
        
        if (tweetsArray[i].text.match("@"+setup.mainUser) ) {
            tweetsArray[i].text = tweetsArray[i].text.replace("@"+setup.mainUser, "");
            if ( ! personDivs.inArray(tweetsArray[i])) {
                var personDiv = document.createElement('div');
                personDiv.setAttribute('class', 'personDiv');
                personDiv.id = tweetsArray[i].user.screen_name;
                newP = document.createElement('p');
                newP.setAttribute('class', 'name');
                newImg = document.createElement('img');
                newImg.setAttribute('src', tweetsArray[i].user.profile_image_url);
                newImg.setAttribute('align', 'top');
                var nameP = document.createElement('p');
                nameP.setAttribute('style', 'float:right; width: 65px;');
                nameP.innerHTML = tweetsArray[i].user.name;
                newP.appendChild(nameP);
                newP.appendChild(newImg);
                personDiv.appendChild(newP);
                var tweetsContainer = document.createElement('div');
                tweetsContainer.setAttribute('class', 'tweetsContainer');
                personDivs[personDivs.length] = personDiv;
            } else {
                var personDiv = personDivs.inArray(tweetsArray[i]);
                var tweetsContainer = personDiv.getElementsByTagName('div') [0];
            }
            
        var newDiv = tweet2Div(tweetsArray[i]);

        tweetsContainer.appendChild(newDiv);
        personDiv.appendChild(tweetsContainer);
    }
  }
    drawPersonDivs();
}

function writeMyTweetsData(tweetsArray) {
    eraseMyTweets();
    
    var myTweetsDiv = document.getElementById('myTweets');
    
    for (var i=0; i < tweetsArray.length; i++) {
        var tweetDiv = document.createElement('div');
        tweetDiv.setAttribute('class', 'tweetDiv');
        newDiv = tweet2Div(tweetsArray[i]);
        newDiv.setAttribute('style', 'float:right; width: 65%;');
        tweetDiv.appendChild(newDiv);
        var newP = document.createElement('p');
        var idDiv = document.createElement('div');
        newP.setAttribute('class', 'name');
        newP.innerHTML = tweetsArray[i].user.name;
        idDiv.appendChild(newP);
        var newImg = document.createElement('img');
        newImg.setAttribute('src', tweetsArray[i].user.profile_image_url);

        idDiv.appendChild(newImg);
        var newScreenNameP = document.createElement('p');
        newScreenNameP.innerHTML = tweetsArray[i].user.screen_name;
        idDiv.appendChild(newScreenNameP);
        tweetDiv.appendChild(idDiv);
        myTweetsDiv.appendChild(tweetDiv);
    
    }



}

function tweet2Div(tweetObj) {
    var newDiv = document.createElement('div');
    var statusP = document.createElement('p');
    statusP.setAttribute('class', 'status');
    statusP.innerHTML = tweetObj.text;
    newDiv.appendChild(statusP);
    newDiv.appendChild(document.createElement('hr'));
    return newDiv;
}




function doCheck() {
    var newSub = new Submission('collectMainTweets', 'patrickgmj', 'imHome');
    sendData(newSub);
    
}

function sendSub(event, action, user, pass, status) {
    
    switch (action) {
        case 'sendTweet' :
        tinyMCE.triggerSave(false, true);
        var status = document.getElementById('newTweet-TA') .value;
        status = status.slice(0, 140);
        var newSub = new Submission(action, user, pass, status);
        
        break;
        
        default :
        var newSub = new Submission(action, user, pass);
        break;
        
    }
    event.target.className = "btUpdating";
    event.target.innerHTML = "Updating...";
    buttonPushed = event.target;
    //alert(status);
    sendData(newSub);
}