/*
TODO:

- Every alert is a placeholder.
- Global start_loading() and stop_loading()?

*/

/*****************
 * AJAX Requests *
 *****************/

//TODO: Parameterize the callbacks.

function check_availability(user_info) {
	//TODO: Make this not conflict with the 'invalid' class stuff.
	var request = new Object();
	request['task'] = 'check_availability';
	request['signature'] = transaction_signatures[request['task']];
	request['user_info'] = user_info;
	var postData = 'request=' + request.toJSONString();
	var sUrl = (typeof(url_facade) != 'undefined') ? url_facade : 'public_facade.php';

	var responseSuccess = function(o) {
	var result = eval('('+o.responseText+')');
	if (result['success']) {
		var available = result['output'];
		var class_name = available ? '' : 'unavailable';
		var user_info = o.argument;
		for (var field in user_info) {
			var input = document.getElementById(field);
			if (!input || input.value != user_info[field]) continue;
				document.getElementById(field).className = class_name;
			}
		} else {
			alert(result['output']);
		}
	};

	var responseFailure = function(o) {
		alert(o.statusText);
	};

	var callback = {
		success:responseSuccess,
		failure:responseFailure,
		argument:user_info
	};

	var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}


function reset_password(email) {
	var request = new Object();
	request['task'] = 'create_reset_password';
	request['signature'] = transaction_signatures[request['task']];
	request['email'] = email;
	var postData = 'request=' + request.toJSONString();
	var sUrl = (typeof(url_facade) != 'undefined') ? url_facade : 'public_facade.php';

	var responseSuccess = function(o) {
		document.getElementById('password_reset_pleasewait').style.display="none";
		document.getElementById('password_reset_submit').style.display="";
		var result = eval('('+o.responseText+')');
		if (result['success']) {
			alert('Please check your email for further instructions to reset your password.');
		} else {
			alert(result['output']);
		}
	};

	var responseFailure = function(o) {
		document.getElementById('password_reset_pleasewait').style.display="none";
		document.getElementById('password_reset_submit').style.display="";
		alert(o.statusText);
	};

	var callback = {
		success:responseSuccess,
		failure:responseFailure
	};
	document.getElementById('password_reset_pleasewait').style.display="";
	document.getElementById('password_reset_submit').style.display="none";
	var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}

function request_invite(email, referral_code, first_name, last_name, where_they_heard) {
	var request = new Object();
	request['task'] = 'receive_request_invite_ajax';
	request['signature'] = transaction_signatures[request['task']];
	request['email'] = email;
	request['referral_code']=referral_code;
	request['first_name']=first_name;
	request['last_name']=last_name;
	request['where_they_heard']=where_they_heard;
	var postData = 'request=' + escape(request.toJSONString());
	var sUrl = (typeof(url_facade) != 'undefined') ? url_facade : 'public_facade.php';

	var responseSuccess = function(o) {
		var result = eval('('+o.responseText+')');
		if (result['success']) {
			alert("SUCCESS: "+result['output']);
		} else {
			alert("PROBLEM: "+result['output']);
		}
	};

	var responseFailure = function(o) {
		alert(o.statusText);
	};

	var callback = {
		success:responseSuccess,
		failure:responseFailure
	};

	var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}

function toggle( whichLayer )
{
  var elem, vis;
  if( document.getElementById ) 
    elem = document.getElementById( whichLayer );
  else if( document.all ) 
      elem = document.all[whichLayer];
  else if( document.layers ) 
    elem = document.layers[whichLayer];
if (document.getElementById(whichLayer)) {
  vis = elem.style;
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}
}

function create_account(email, first_name, last_name, password, password_confirmation) {
	var request = new Object();
	request['task'] = 'create_user';
	request['signature'] = transaction_signatures[request['task']];
	request['email'] = email;
	request['first_name']=first_name;
	request['last_name']=last_name;
	request['password']= password;
	request['password_confirmation']= password_confirmation;
	
	var postData = 'request=' + escape(request.toJSONString());
	var sUrl = (typeof(url_facade) != 'undefined') ? url_facade : 'public_facade.php';

	var responseSuccess = function(o) {
		var result = eval('('+o.responseText+')');
		if (result['success']) {
			toggle('viewziLoginDesc'); toggle('loginForm'); toggle('registerForm');
			document.getElementById('loginForm').getElementsByTagName('input')[0].value= email;
			document.getElementById('loginForm').getElementsByTagName('input')[1].value= password;
			document.getElementById('loginForm').getElementsByTagName('form')[0].submit();
			
			//alert("SUCCESS: "+result['output']);
			
		} else {
			alert("PROBLEM: "+result['output']);
		}
	};

	var responseFailure = function(o) {
		alert(o.statusText);
	};

	var callback = {
		success:responseSuccess,
		failure:responseFailure
	};

	var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}

/***********
 * Helpers *
 ***********/

function format_date(value) {
	//Assumes YYYY-MM-DD.
	var formatted_value = value;
	if (value == '0000-00-00 00:00:00') formatted_value = 'never';
	return formatted_value;
}

function unformat_date(value) {
	//Assumes YYYY-MM-DD.
	var unformatted_value = value.toLowerCase();
	if (value == 'never' || value == 'none') unformatted_value = '0000-00-00 00:00:00';
	return unformatted_value;
}
