//globals
var server_hostname = document.domain + (document.location.port != null ? ":" + document.location.port : "");
var statusTimer;
// var classNameHolder;

Array.prototype.inArray = function (value)
{
    var i;
    for (i=0; i < this.length; i++) {
        if (this[i] === value) {
            return true;
        }
    }
    return false;
};

// function row_onclick(id)
// {
// 	checkbox = document.getElementById(id).getElementsByTagName("input")[0];
// 	if(checkbox)
// 	{
// 		checkbox.checked = !checkbox.checked;
// 		document.getElementById(id).className='bluebg';
// 	}
// 	else
// 	{
// 		document.getElementById(id).className = '';
// 	}
// }
// 
// function row_onmouseout(id)
// {
// 	checkbox = document.getElementById(id).getElementsByTagName("input")[0];
// 	if(checkbox)
// 	{
// 		if(!checkbox.checked)
// 		{
// 			document.getElementById(id).className = '';
// 		}	
// 	}
// 	else
// 	{
// 		document.getElementById(id).className = '';
// 	}
// }

// function storeClassName(className) {
// 	classNameHolder = className;
// }

// function getClassName() {
// 	return classNameHolder;
// }

// function setPreference(name,value)
// {
// 	var parameters = 'name=' + name + '&value=' + value;
// 	do_action('setPreference',parameters);
// }

// function vote(type,ids,direction)
// {
// 	var parameters = 't=' + type + '&' + direction + '&' + ids;
// 	do_action('vote',parameters);
// }
//------------------------------------------------------------------------------------------[http]---------->
function do_action(action,parameters)
{
	//set_status('Sending...');
	
	// if(typeof parameters != 'string')
	// {
	// 	parameters = Form.serialize(parameters);
	// }

	parameters = parameters + "&action=" + action;
	
	var url = "http://" + server_hostname + "/controller";
	
	new Ajax.Request(url, {
	  method: 'post',
	  parameters: parameters,
	  onSuccess: function(transport) {
			action_response_handler(action,transport.responseText);
	  }
	});
}

function action_response_handler(action,responseText)
{	
	// alert(responseText);
	response = responseText.evalJSON();
	
	if(response['eval']) eval(response['eval']);
	
	if(response['changes'])
	{
		for(target in response['changes'])
		{
			id = target.split('.')[0];
			property = target.substring(target.indexOf('.')+1)
			if($(id)) {
				eval("document.getElementById(id)." + property +  " = response['changes'][target];")
			}
		}
	}
	
	set_status('done',true);
	
	return true;
	
	if(response['code'] == '085')
	{
		t = response['t'];
		id = response['id'];
		votes = response['votes'];
		
		if(t == 'w') var type = 'wad';
		if(t == 'u') var type = 'url';
		if(t == 'c') var type = 'comment';
		
		$(type + '-' + id + '-votes').innerHTML = votes;
	}
	else if(action == 'register')
	{
		if(response['code'] == '400')
		{
			show_registration_errors(response['errors']);
			$('request_exception_indicator').className = 'redtext';
			$('request_success_indicator').className = 'bluetext';
			$('request_response_msg').className = 'redtext';
			$('request_response_msg').innerHTML = 'Registration failed, please fix any mistakes and try again.';
			return false;
		}
		else
		{
			show_registration_errors('');
			$('request_exception_indicator').className = 'bluetext';
			$('request_success_indicator').className = 'greentext';
			$('request_response_msg').className = 'greentext';
			$('request_response_msg').innerHTML = response['message'];
		}
	}
	else if(response['code'] == '200')
	{
		$('request_exception_indicator').className = 'bluetext';
		$('request_success_indicator').className = 'greentext';
		$('request_response_msg').className = 'greentext';
		$('request_response_msg').innerHTML = response['message'];
	}
	else if(response['code'] == '400')
	{
		$('request_exception_indicator').className = 'redtext';
		$('request_success_indicator').className = 'bluetext';
		$('request_response_msg').className = 'redtext';
		$('request_response_msg').innerHTML = response['message'];
	}
	else if(responseText.length == 0)
	{
		$('request_exception_indicator').className = 'redtext';
		$('request_success_indicator').className = 'bluetext';
		$('request_response_msg').className = 'redtext';
		$('request_response_msg').innerHTML = 'Linkwad Service is Temporarily Unavailable\n\nPlease visit linkwad.com/errors/503 for details.';
	}
	else if(response['code'] == '401')
	{
		$('request_exception_indicator').className = 'redtext';
		$('request_success_indicator').className = 'bluetext';
		$('request_response_msg').className = 'redtext';
		$('request_response_msg').innerHTML = 'Linkwad could not authenticate you.\n\nPlease check your username and password.';
	}
	else
	{
		alert(response['message']);
	}
	
	set_status('done',true);
}

//------------------------------------------------------------------------------------------[status updaters]---------->

function set_status(text,clear)
{
	$('statustext').innerHTML = text;
	clearTimeout(statusTimer);
	
	if(clear)
	{
		statusTimer = setTimeout("clear_status()",2000);
	}
}

function clear_status()
{
	$('statustext').innerHTML = null;
}

//------------------------------------------------------------------------------------------[response actions]---------->

// function show_registration_errors(data)
// {
// 	var errors = data.split(' ');
// 	
// 	if(!errors.inArray('username')) {
// 		$("username_status").className = 'greentext';
// 		$("username_status").innerHTML = "<strong>&radic;</strong>";
// 	}
// 	else {
// 		$("username_status").className = 'redtext';
// 		$("username_status").innerHTML = "<strong>&Oslash;</strong> 4-15 characters, a-z 0-9 only";
// 	}
// 
// 	if(errors.inArray('exists')) {
// 		$("username_status").className = 'redtext';
// 		$("username_status").innerHTML = "<strong>&Oslash;</strong> taken, please choose another";
// 	}
// 
// 	if(!errors.inArray('password')) {
// 		$("password_status").className = 'greentext';
// 		$("password_status").innerHTML = "<strong>&radic;</strong>"
// 	}
// 	else {
// 		$("password_status").className = 'redtext';
// 		$("password_status").innerHTML = "<strong>&Oslash;</strong> 6-20 characters";
// 	}
// 
// 	if(!errors.inArray('confirmation')) {
// 		$("passwordcheck_status").className = 'greentext';
// 		$("passwordcheck_status").innerHTML = "<strong>&radic;</strong></div>";
// 	}
// 	else {
// 		$("passwordcheck_status").className = 'redtext';
// 		$("passwordcheck_status").innerHTML = "<strong>&Oslash;</strong> must match a valid password";
// 	}
// 
// 	if(!errors.inArray('email')) {
// 		$("email_status").className = 'greentext';
// 		$("email_status").innerHTML = "<strong>&radic;</strong>";
// 	}
// 	else {
// 		$("email_status").className = 'redtext';
// 		$("email_status").innerHTML = "<strong>&Oslash;</strong> invalid email address";
// 	}
// 	
// 	if(errors.inArray('email_exists')) {
// 		$("email_status").className = 'redtext';
// 		$("email_status").innerHTML = "<strong>&Oslash;</strong> this address has already been registered";
// 	}
// 	
// 	if(!errors.inArray('captcha')) {
// 		$("captcha_status").innerHTML = "<div class='greentext'><strong>&radic;</strong></div>";
// 	}
// 	else {
// 		$("captcha_status").className = 'redtext';
// 		$("captcha_status").innerHTML = "<strong>&Oslash;</strong> security code is incorrect";
// 	}
// }

// function select_numbers() {
// 	if(document.location.href.match(lw_path + '/wads')) {
// 		var path = document.location.href.split(lw_path + '/wads');
// 		var numbers = path[1].substring(12);
// 		if(numbers.length < 1) return false;
// 		var numarr = numbers.split(":");
// 		for(var i = 0; i < numarr.length; i++)
// 		{
// 			document.getElementById('checkbox' + numarr[i]).checked = true;
// 			document.getElementById('row' + numarr[i]).bgColor='#d5e0e5';
// 		}
// 	}
// }

