/*
 * Thread Feed Javascript
 * theed.js
 * Author: Cody Mays
 * $Id: theed.js 78 2006-07-27 05:31:35Z cmays $
 * The stuff we use...
 */

/* Attach init events */
//Event.observe(window, 'load', init, false);

/* Cookie Functions */
function SetCookie(name, value, days)
{
	if(days)
	{
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
	{
		var expires = "";	
	}
	
	document.cookie = name+"="+value+expires+"; path=/";
}

function ReadCookie(name)
{
	var needle = name + "=";
	var cookieArray = document.cookie.split(';');
	
	for(var i = 0; i < cookieArray.length; i++)
	{
		var pair = cookieArray[i];
		
		while(pair.charAt(0) == ' ')
		{
			pair = pair.substring(1, pair.length);
		}
		
		if(pair.indexOf(needle) == 0)
		{
			return pair.substring(needle.length, pair.length);
		}
	}
	return null;
}

function ResetCookie(name)
{
	/* FIXME: AJAX php cookie deletion from server */
	SetCookie(name,"",-1);
}

/* Profile stuff */
function MakeEditable(el)
{
	Event.observe(el, 'click', function(){DoEdit($(el));$(el+'_editarea').select();}, false);
	Event.observe(el, 'mouseover', function(){ Element.addClassName(el,'editable') } , false);
	Event.observe(el, 'mouseout', function(){ Element.removeClassName(el,'editable') }, false);
}

function DoEdit(el)
{
	var form = '';
	/* Hide the original object */
	Element.hide(el);
	var data = el.id.split('_');
	
	/* What is this form being used for? */
	if(data[0] == 'profileabout')
	{
		form += '<form method="post" action="">';
		form += '	<textarea name="textarea" id="'+el.id+'_editarea" cols="50" rows="5" style="width:100%">'+_GLOBAL['description']+'</textarea><br />'; 
		form += '	<input type="button" class="edit_button" value="' + _LANG['save'] + '" id="'+el.id+'_save" /> ' + _LANG['or'] + ' ';
		form += '	<input type="button" class="edit_button" value="' + _LANG['cancel'] + '" id="'+el.id+'_cancel" />';
		form += '</form>';
		
		new Insertion.After(el,'<div id="edit_'+el.id+'">'+form+'</div>');
	}	
	
	/* Observe the events on the buttons */
	Event.observe(el.id+'_save','click',function(){ SaveEdit(el); }, false);
	Event.observe(el.id+'_cancel','click',function() { Restore(el); },false);
}

function SaveSuccess(request,el)
{
	if(request.getResponseHeader('X-quickedit-empty') == 'true')
	{
		var obj = el.id.split('_');
		if(obj[0] == 'profileabout')
		{
			el.innerHTML = _LANG['empty_edit']+' '+_LANG['about_field'];
		}
	}
	else
	{
		el.innerHTML = request.responseText;
	}
}

function SaveFailure(request,el)
{
	el.innerHTML = _LANG['quickedit_failed'];
}

function SaveEdit(el)
{
	var obj = el.id.split('_');
	
	/* Escape the data entered */
	var value = $F(el.id+'_editarea');
	_GLOBAL['description'] = value;
	//value = escape(value);
	var params = 'value='+escape(value)+'&id='+el.id;
	
	/* Give the user a status indicator along with some text saying what's happening */
	el.innerHTML = '<img src="'+_GLOBAL['image_root']+'/loading_gray.gif" alt="" /> '+_LANG['saving'];
	Restore(el);
	
	/* Success and failure functions */
	var succ = function(request) { SaveSuccess(request,el); };
	var fail = function(request) { SaveFailure(request,el); };
	
	/* Get'r Done! */
	var request = new Ajax.Request('/quickedit/submit', { asynchronous:true, method:'post', postBody:params, onSuccess:succ, onFailure:fail});
}

function Restore(el)
{
	Element.remove('edit_'+el.id);
	Element.show(el);
}

function SwapToProcessing(pid, text)
{
	var message;
	
	/* Make sure we have a message to put in the progress bar thing */
	if(text == "")
	{
		message = _LANG['saving'];
	}
	else
	{
		message = text;
	}
	
	Element.hide(pid.id);
	//Element.show(\'processing\');
	new Insertion.After(pid.id,'<div id="processing"><img src="/images/loading_gray.gif" alt="loading" /> '+message+'</div>');
}
