var USER = "kikifoofriends";
var VISITORTAG = "kikifoofriend";

var twitter = function() {
	this.__construct = function(manager, name) {
		comments.prototype.__construct.call(this, manager, name);

		// NOTE: This is kinda of a has since asynchronous execution has not been implemented, yet.
		//       By calling getTweets() through a timeout it gets its own thread => We have some
		//       kind of fake async call which work in all browsers except IE.
		var reflection = this;
		setTimeout(function () {reflection.getTweets();}, 0);
		setInterval(function () {reflection.getTweets();}, 30000);
		
		this.SendMsg = new Array();
		this.SendMsg[0] = "<h3>Success</h3><p>Your tweet has been posted.<br />It might take some time until you see it here on this page</p>";
		this.SendMsg[1] = "<h3>Twitter error</h3><p>We're sorry, but Twitter returned an error.<br />You might have entered a wrong password.</p>";
		this.SendMsg[2] = "<h3>No message</h3><p>Please enter a status message before posting a tweet.</p>";
		this.SendMsg[3] = "<h3>Captcha error</h3><p>You've entered the wrong code. Please try again.</p>";
	}
	
	this.getTweets = function() {
		var feed = document.getElementById("twitterUNIQUEfeed");
		if (feed) {
			//alert("execute");
			var textRegex = new RegExp("^(\\w+): (.+) #("+VISITORTAG+"|kikifoo)$");

			var result = new String(this.execute("timeline"));
			var timeline = json_parse(result);
			var result = new String(this.execute("retweets"));
			//alert(result);
			var retweets = json_parse(result);
			var i = 0;
			var j = 0;

			feed.innerHTML = "";
			while ((timeline[i] || retweets[j]) && ((i + j) < 7)) {
				retweetsId = retweets[j] ? parseInt(retweets[j]["id"]) : -1;
				timelineId = parseInt(timeline[i]["id"]);

				if (timelineId > retweetsId) {
					var result = textRegex.exec(timeline[i]["text"]);		
					if (result !== null) {
						feed.innerHTML += "<p><strong>"+result[1]+":</strong> "+result[2]+"</p>"
					}
					else {
						feed.innerHTML += "<p><strong>"+timeline[i]["user"]["name"]+":</strong> "+timeline[i]["text"]+"</p>";
					}
					i++;
				}
				else {
					feed.innerHTML += "<p><strong>"+retweets[j]["retweeted_status"]["user"]["name"]+":</strong> "+retweets[j]["retweeted_status"]["text"]+"</p>";
					j++;
				}
			}

			// NOTE: Since the fake async doesn't work with IE we have to give onload() some
			//       time to finish before we call fixHeight(). Or whatever - IE sucks.
			var reflection = this;
			setTimeout(function(){reflection.Manager.fixHeight();}, 100);
		}
	}
	
	this.sendTweet = function(id) {
		var dialog = document.getElementById(id);
		
		if (dialog.elements["name"].value == "")
			return alert("Please enter your name.");
		if (dialog.elements["text"].value == "")
			return alert("Please enter your email address.");
		if (dialog.elements["SWX_CAPTCHA"].value == "")
			return alert("Please enter the captcha code.");
		if (parseInt(document.getElementById("twitterUNIQUEtweetChars").innerHTML) < 0)
			return alert("Sorry, your Tweet is too long.");
		
		var formName = document.forms[id].elements["name"].value;
		var formPassword = document.forms[id].elements["password"].value;
		var formText = document.forms[id].elements["text"].value;
		var formCaptcha = document.forms[id].elements["SWX_CAPTCHA"].value;
		var formUseAcc = document.forms[id].elements["useacc"].checked;
		
		swx_Dialog.update(id, "<p>Sending in progress...</p>");
		
		if (formUseAcc)
			var result = this.execute("submit", formName, formPassword, formText, formCaptcha);
		else
			var result = this.execute("submit", formName, null, formText, formCaptcha);

		//alert(result);
		
		swx_Dialog.update(id, this.SendMsg[result]+"<p class=\"Footer\"><button type=\"submit\">OK</button></p>", "javascript:swx_Dialog.hide('"+id+"');");
		var reflection = this;
	}
	
	this.togglePass = function() {
		if (document.forms["twitterUNIQUEtweet"].elements["useacc"].checked)
			document.getElementById("twitterUNIQUEtweetPass").style.display = "block";
		else
			document.getElementById("twitterUNIQUEtweetPass").style.display = "none";
		
		this.updateChars();
	}
	
	this.updateChars = function() {
		var chars = 140; // Twitter message length
		if (!document.forms["twitterUNIQUEtweet"].elements["useacc"].checked) {
			chars -= 15; // String(" #kikifoofriend").length;
			chars -= document.forms["twitterUNIQUEtweet"].elements["name"].value.length;
			chars -= 2; // String(": ").length;
		}
		chars -= document.forms["twitterUNIQUEtweet"].elements["text"].value.length;
		
		document.getElementById("twitterUNIQUEtweetChars").innerHTML = chars;
	}
	
	this.SendMsg = undefined;
};
twitter.prototype = new swx_BloxFrontendModule();

