var timeout;
var callback=null;

function toArray(arrayLike) {
	var arr = []; 
	for(var i = 0; i < arrayLike.length; i++){ 
		arr.push(arrayLike[i]); 
	} 
	return arr; 
}

function set_callback(func) {
	callback = function() {
		var args = opts.args ? opts.args : [];
		var bind = opts.bind ? opts.bind : this; 
		var fargs = opts.supressArgs === true ? [] : toArray(arguments); 
		func.apply(bind,fargs.concat(args));
	}
}

function status_reset() {
	document.getElementById('status').innerHTML = '';
}

function form_reset() {
		status_reset();
		document.tweetform.reset();
		if(typeof timeout == "number"){
				clearTimeout(timeout);
		}
		timeout = setTimeout("char_left()", 250);
}

function tweet_timer(){
	if(typeof timeout == "number"){
		clearTimeout(timeout);
	}
	timeout = setTimeout("char_left()", 250);
}

function char_left() {
	var chars_left = document.getElementById("chars_left");
	var tweet = document.getElementById("tweet_area");
	tweet_val = tweet.value;
	tweet_val_len = tweet.value.length;
	
	status_reset();
	
	if (tweet_val_len > 123){ // if too long...trim it!
		tweet_val = tweet_val.substring(0, 124);
	}

	if (tweet_val_len == 0){ // if too long...trim it!
		chars_left.innerHTML = "124 Characters Left";
	} 
	else if (tweet_val_len >= 114 && tweet_val_len < 124){
		chars_left_val = (124 - tweet_val_len);
		chars_left.innerHTML = "<span style='color:#ff0000;font-weight:bold'>"+chars_left_val+" Characters Left</span>";
	} 
	else if (tweet_val_len == 124){
		tchar_over_val = 124;
		chars_left.innerHTML = "<span style='color:#ffffff;background-color:#ff0000;font-weight:bold'>&nbsp;"+
			"All Characters Used&nbsp;</span>";
	} 
	else if (tweet_val_len > 124){
		tchar_over_val = (tweet_val_len - 124);
		chars_left.innerHTML = "<span style='color:#ffffff;background-color:#ff0000;font-weight:bold'>&nbsp;"+
			tchar_over_val+" Characters OVER!&nbsp;</span>";
	}
	else {
		chars_left_val = (124 - tweet_val_len);
		chars_left.innerHTML = chars_left_val+" Characters Left";
	}
}

var http_request = false;
function makePOSTRequest(url, parameters) {
	http_request = new XMLHttpRequest();
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} 
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = alertContents_timed;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	document.getElementById('status').innerHTML = '(Talking To Twitter...)';
}

function do_post() {
	var poststr = "tweet=" + encodeURI( document.getElementById("tweet_area").value ) +
		"&twitter_username=" + encodeURI( document.getElementById("twitter_username").value ) +
		"&twitter_password=" + encodeURI( document.getElementById("twitter_password").value );
	//alert(poststr);
	makePOSTRequest('/kftweet/tweetit.php', poststr);
}

function alertContents_timed(){
	timeout = setTimeout("alertContents()", 3000);
}

function alertContents() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			//alert(http_request.responseText);
			result = http_request.responseText;
			if (result == 200) {
				document.getElementById('status').innerHTML = '(Success!)';
				/*
				if (callback != null) {
					setTimeout(callback,2000);
				}
				*/
				// This is a hack. A real callback would be better
				update_remarks();
			} 
			else if (result == 401 || result == 400) {
				document.getElementById('status').innerHTML = '(Check auth)';
				//alert('Authentication failed. Please check your username and password');
			} 
			else {
				document.getElementById('status').innerHTML = '(Something went wrong)';
				alert('There was a problem with the request: '+result);
			}
		}
	}
}
