// version 2.0.6

var ganjaPostingstatus = false;
var ganjaPreviewstatus = false;

var ganjaNewUser = false;

function ganjaUberSubmit( f )
{
	if( f == undefined )
	{
		f = $('ganja_uberform');
	}

	if(	f.elements.status.value == 'login' )
	{
		ganjaLogin( f );
	}
	else if( f.elements.status.value == 'register' )
	{
		ganjaRegistration( f )
	}
	else if( f.elements.status.value == 'comment' )
	{
		ganjaPostComment( f );
	}

}

/* REGISTRATION */
function ganjaRegistration( f )
{
	var parameters = new Array();

	parameters.push( 'op=register' );
	parameters.push( 'IS_NEW=1' );
	parameters.push( Form.Element.serialize( f.elements.code ) );
	f.elements.name.value = f.elements.username.value;
	parameters.push( Form.Element.serialize( f.elements.name ) );
	f.elements.new_password.value = f.elements.password.value;
	parameters.push( Form.Element.serialize( f.elements.new_password ) );
	parameters.push( Form.Element.serialize( f.elements.confirm_password ) );
	parameters.push( Form.Element.serialize( f.elements.email ) );
	parameters = parameters.join( '&' );

	ganjaHideMessage();
	ganjaShowMessage( 'message', 'Registering new user...', 'registerMessage' );
	ganjaAjaxUpdater( 'ganja_response', '/index.php', parameters );
}

function ganjaRegistrationSuccess( msg )
{
	var f = $('ganja_uberform');

	ganjaShowMessage( 'message', '<strong>Registration Successful.</strong>', 'registerMessage' );

	ganjaNewUser = true;

	tmp_username = f.elements.name.value;
	tmp_password = f.elements.new_password.value;

	f.elements.username.value = tmp_username;
	f.elements.password.value = tmp_password;
	f.elements.status.value = 'login';

	ganjaLogin( f );
}

function ganjaRegistrationFailure( msg )
{
	ganjaShowMessage( 'failure', msg, 'registerMessage' );
}

/* SET PROFILE */
function ganjaSetProfile()
{
	var parameters = new Array();
	f = $('ganja_profileform');

	// check for new password right here
	if ( f.elements.new_password.value != '' )
	{
		if ( f.elements.password.value == '' )
		{
			ganjaShowMessage( 'failure', '<strong>Password check failed!</strong> Please tell your current password.', 'profileEditorMessage' );
			f.elements.password.focus();
			return false;
		}
		if ( f.elements.new_password.value != f.elements.confirm_password.value )
		{
			ganjaShowMessage( 'failure', '<strong>Password confirmation failed!</strong> Please try again.', 'profileEditorMessage' );
			f.elements.new_password.focus();
			return false;
		}
	}

	parameters.push( Form.Element.serialize( f.elements.op ) );
	parameters.push( Form.Element.serialize( f.elements.username ) );
	parameters.push( Form.Element.serialize( f.elements.id ) );
	parameters.push( Form.Element.serialize( f.elements.password ) );
	parameters.push( Form.Element.serialize( f.elements.new_password ) );
	parameters.push( Form.Element.serialize( f.elements.confirm_password ) );
	if( f.elements.displayName ) parameters.push( Form.Element.serialize( f.elements.displayName ) );
	if( f.elements.email ) parameters.push( Form.Element.serialize( f.elements.email ) );
	if( f.elements.url ) parameters.push( Form.Element.serialize( f.elements.url ) );
	parameters = parameters.join( '&' );

	ganjaHideMessage();
	ganjaShowMessage( 'message', 'Setting Profile...', 'profileEditorMessage');
	ganjaAjaxUpdater( 'ganja_response', '/index.php', parameters );
}

function ganjaSetProfileSuccess( msg, hideId )
{
	ganjaShowMessage( 'message', msg, 'profileEditorMessage' );
	if( hideId ) $(hideId).style.display = 'none';
}

function ganjaSetProfileFailure( msg )
{
	ganjaShowMessage( 'failure', msg, 'profileEditorMessage' );
}

/* LOGIN */
function ganjaLogin( f, callback, indicator ) {
	if( f == undefined)	{
		f = $('ganja_uberform');
		var fieldPassed = false;
	} else {
		var fieldPassed = true;
		f = $(f);
	}
	if ( f.elements.username.value == '' || f.elements.password.value == '' )
	{
		ganjaLoginMessage( 'error', '<strong>Login failed.</strong> Check your username and password and resubmit.' );
		return false;
	}
	
	var parameters = new Array();
	var options = {};

	parameters.push( 'op=login' );
	parameters.push( Form.Element.serialize( f.elements.username ) );
	parameters.push( Form.Element.serialize( f.elements.password ) );
	if ( callback != undefined ) parameters.push( 'callback=ganja_' + callback + '_LoginSuccess');
	if ( f.elements.remember.checked || ( f.elements.remember.value == 1 ) ) parameters.push( 'remember=on' );
	parameters = parameters.join( '&' );

	ganjaHideMessage();

	if(indicator != undefined) {
		options['indicator'] = indicator;
	}	else {
		var bts = document.getElementsByClassName('login_bttn');
		bts.each(function(el){el.value = 'logging in...';});
		if( !fieldPassed ) {
			ganjaLoginMessage( 'message', 'Logging in...');
		}
	}

	ganjaAjaxUpdater( 'ganja_response', '/index.php', parameters, options );
}

function ganjaToggleIndicator(indicator, showhide)
{
	if($(indicator) != undefined)
	{
		switch(showhide)
		{
			case 'show':
				$(indicator).show();
			break;

			case 'hide':
				$(indicator).hide();
			break;

			case '':
				if($(indicator).style.display == 'none')
				{
					ganjaToggleIndicator(indicator, 'show');
				}
				else
				{
					ganjaToggleIndicator(indicator, 'hide');
				}
			break;
		}
	}
}

function ganjaToggleInlineIndicator( indicator, showhide )
{
	if($(indicator) != undefined)
	{
		switch(showhide)
		{
			case 'show':
				$(indicator).addClassName('loading');
			break;

			case 'hide':
				$(indicator).removeClassName('loading');
			break;

			case '':
				if($(indicator).hasClassName('loading') )
				{
					ganjaToggleInlineIndicator(indicator, 'show');
				}
				else
				{
					ganjaToggleInlineIndicator(indicator, 'hide');
				}
			break;
		}
	}
}

function ganjaLoginSuccess( displayName )
{
	var f = $('ganja_uberform');

	try
	{
		var t = f.elements;
	}
	catch( e )
	{
	}

	if(displayName != undefined)
	{
		f.elements.preview_name.value = displayName;
	}

	var bts = document.getElementsByClassName('login_bttn');
	bts.each(function(el){el.value = 'logged in';});
	ganjaLoginMessage( 'success', 'Logged in.' );

	f.elements.status.value = 'comment';

	$('post_button').value = 'submit comment';
	$('comment_textarea').style.display = 'inline';
	if( typeof onLiveblogSite == 'undefined' || onLiveblogSite == false )
	{
		$('comment_preview_name').innerHTML = $('preview_name').value;
		$('profile_logout').style.display = 'inline';
		$('edit_profile').style.display = 'inline';
	} else {
		$('comment_register').style.display = 'none';
	}
	ganjaShowForm();
	ganjaHideMessage();

	if( ( f.elements.text != undefined ) && ( f.elements.text.value != '' ) )
	{
		ganjaPostComment( f );
	}
	showTopNavbar({'activity': false, 'inpage_bookmarklet': false});
}

function ganja_topnavbar_LoginSuccess( displayName )
{
	var bts = document.getElementsByClassName('login_bttn');
	bts.each(function(el){el.value = 'logged in';});
	ganjaLoginMessage( 'success', 'Logged in.' );
	document.location.reload()
}

function ganja_bookmarklet_LoginSuccess( displayName )
{
	ganjaShowMessage( 'success', 'Logged in.', 'topnavbarMessage' );
	var lN = document.getElementsByClassName('needsLogin');
	if( lN )
	{
		for( i = 0; i < lN.length; i++ )
		{
			lN[i].disabled = '';
		}
	}
	$('bookmarkletLogin').style.display='none';
	window.location = window.location;
}

function ganjaLoginFailure( msg, userexists, redirect )
{
	var f = $('ganja_uberform');
	ganjaLoginMessage( 'failure', msg );
	if(f != undefined)
	{
		if(userexists != 1)
		{
			//ganjaShowForm('RegisterForm');
		}
		f.elements.confirm_password.focus();
	}
	var bts = document.getElementsByClassName('login_bttn');
	bts.each(function(el){el.value = 'login';});
}

/* LOGOUT */
function ganjaLogout( f, callback )
{
 	ganjaHideMessage();
	params = 'op=ajax_logout';
	if(callback != undefined)
	{
		params = params + '&callback=' + callback;
	}
	var logout = document.getElementsByClassName('logout_button');
	if(logout.length) {
		for(var i=0; i < logout.length; i++) {
			logout[i].innerHTML = 'logging out...';
		}
	} else {
		var bts = document.getElementsByClassName('login_bttn');
		bts.each(function(el){el.value = 'logging out...';});
		ganjaLoginMessage( 'message', 'Logging out...' );
	}
	ganjaAjaxUpdater( 'ganja_response', '/index.php', params );

	return false;
}

function ganja_topnavbar_LogoutSuccess()
{
	var logout = document.getElementsByClassName('logout_button');
	if(logout.length) {
		for(var i=0; i < logout.length; i++) {
			logout[i].innerHTML = 'logged out';
		}
	} else {
		var bts = document.getElementsByClassName('login_bttn');
		bts.each(function(el){el.value = 'logged out';});
		ganjaLoginMessage( 'success', 'Logged out.' );
	}	
	document.location.reload();
}

function ganjaLogoutSuccess( msg )
{
	var f = $('ganja_uberform');
	var prev = $('comment_preview');
	var prev_name = $('comment_preview_name');
	var prev_body = $('comment_preview_body');

	f.elements.status.value = 'login';

	ganjaShowForm('LoginForm');
	$('profile_logout').style.display = 'none';
	$('post_button').value = ' login ';

	f.elements.username.value = '';
	f.elements.password.value = '';
	f.elements.remember.checked = false;
	f.elements.preview_name.value = '';
	f.elements.text.value = '';

	prev.style.display = 'none';
	prev_name.innerHTML = '';
	prev_body.innerHTML = '';

	ganjaPreviewstatus = false;
	var logout = document.getElementsByClassName('logout_button');
	if(logout.length) {
		for(var i=0; i < logout.length; i++) {
			logout[i].innerHTML = 'logged out';
		}
		window.setTimeout(function(){
		for(var i=0; i < logout.length; i++) {
			logout[i].innerHTML = 'logout';
		}}, 1500);
	} else {
		var bts = document.getElementsByClassName('login_bttn');
		bts.each(function(el){el.value = 'logged out';});
		window.setTimeout(function(){
			bts.each(function(el){el.value = 'logout';});
		}, 1500);
	}
	
	ganjaLoginMessage( 'success', 'Logged out.' );

	$('profile_logout').style.display = 'none';
	$('edit_profile').style.display = 'none';
	showTopNavbar({'activity': false, 'inpage_bookmarklet': false});
}

function ganjaPostComment( f )
{
	if( f == undefined )
	{
		f = $('ganja_uberform');
	}

	if( (f.elements.text != undefined) && (f.elements.text.value != '') )
	{
		ganjaHideMessage();
		ganjaShowMessage( 'message', 'Sending comment...', 'commentformMessage', true);

		var parameters = new Array();

		parameters.push( 'op=postcomment' );
		parameters.push( Form.Element.serialize( f.elements.entry_id ) );
		parameters.push( Form.Element.serialize( f.elements.parentType ) );
		parameters.push( Form.Element.serialize( f.elements.comment_image ) );
		if( f.elements.siteTag )
		{
			parameters.push( Form.Element.serialize( f.elements.siteTag ) );
		}

		var tmp = f.elements.text.value;
		var tmp_cleaned = ganjaCommentPreview();

		f.elements.text.value = tmp_cleaned;
		parameters.push( Form.Element.serialize( f.elements.text ) );
		f.elements.text.value = tmp;

		parameters = parameters.join( '&' );

		ganjaAjaxUpdater( 'ganja_response', '/index.php', parameters );
	}

}

function ganjaPostUserComment( f )
{
	if( f == undefined )
	{
		f = $('ganja_usercommentform');
	}

	if( (f.elements.text != undefined) && (f.elements.text.value != '') )
	{
		ganjaHideMessage();
		ganjaShowMessage( 'message', 'Sending comment...', 'commentformMessage', true);

		var parameters = new Array();

		parameters.push( 'op=postcomment' );
		
		parameters.push( Form.Element.serialize( f.elements.parentType ) );
		if( f.elements.entry_id )
		{
			parameters.push( Form.Element.serialize( f.elements.entry_id ) );
		}

		var tmp = f.elements.text.value;
		var tmp_cleaned = ganjaCommentPreview(tmp);
		f.elements.text.value = tmp_cleaned;
		
		parameters.push( Form.Element.serialize( f.elements.text ) );
		f.elements.text.value = tmp;

		parameters = parameters.join( '&' );
		var r = new Ajax.Request('/index.php', {
			method: 'POST',
			parameters : parameters,
			onSuccess: function(resp) {
				// reload page
				location.href = location.href;
			}
		}
		);
	}

}

function ganjaPostCommenterpost()
{
	var f = $('commenterpagePost');
	
	if( (f.elements.entry != undefined) && (f.elements.entry.value != '') )
	{
		ganjaHideMessage();
		ganjaShowMessage( 'message', 'Sending post...');

		var tmp = f.elements.entry.value;
		var tmp_cleaned = ganjaPostPreview();
		f.elements.entry.value = ganjaCleanPost(tmp_cleaned);
		
		var parameters = Form.serialize(f); // parameters.join( '&' );
		f.elements.entry.value = tmp;
		
		var r = new Ajax.Request('/index.php', {
			method: 'POST',
			parameters : parameters,
			onSuccess: function(resp) {
				// reload page
				location.href = location.href;
			}
		}
		);
	}
}

function ganjaCommentSuccess( msg, id_field )
{
	var f = $('ganja_uberform');
	var parameters = new Array();
	var prev = $('comment_preview');
	var prev_name = $('comment_preview_name');
	var prev_body = $('comment_preview_body');

	if(id_field == 'postId')
	{
		parameters.push( 'op=comments' );
	}
	else if(id_field == 'imageId')
	{
		parameters.push( 'op=imagecomments' );
	}
	parameters.push( id_field + '=' + f.elements.entry_id.value );
	parameters.push( 'cpage=-1' );

	parameters = parameters.join( '&' );

	ganjaAjaxUpdater( 'CommentListWrapper', '/index.php', parameters );
	ganjaPreviewstatus = false;
	f.elements.text.value = '';

	prev.style.display = 'none';
	prev_name.innerHTML = '';
	prev_body.innerHTML = '';

	ganjaHideMessage();

	if(ganjaNewUser == true)
	{
		ganjaShowMessage( 'message', '<strong>Your comment has been received.</strong> It won\'t show up on the site until we approve it.', 'commentformMessage' );
	} else {
		ganjaShowMessage( 'message', '<strong>Your comment has been received.</strong>  It\'ll be posted to the site momentarily.', 'commentformMessage' );
	}

	if( $('commentFAQ') != null )
	{
		if( typeof onLiveblogSite == 'undefined' || onLiveblogSite == false ) $('commentFAQ').style.display = 'block';
	}
	if( typeof onLiveblogSite != 'undefined' && onLiveblogSite == true )
	{
		updateLiveblog('comments');
	}
}

function ganjaTagCommentSuccess( msg, id_field )
{
	var f = $('ganja_uberform');
	var parameters = new Array();
	var prev = $('comment_preview');
	var prev_name = $('comment_preview_name');
	var prev_body = $('comment_preview_body');

	ganjaPreviewstatus = false;
	f.elements.text.value = '';

	prev.style.display = 'none';
	prev_name.innerHTML = '';
	prev_body.innerHTML = '';

	ganjaHideMessage();

	if(ganjaNewUser == true)
	{
		ganjaShowMessage( 'message', '<strong>Your comment has been received.</strong> It won\'t show up on the site until we approve it.', 'commentformMessage' );
	} else {
		ganjaShowMessage( 'message', '<strong>Your comment has been received.</strong>  It\'ll be posted to the site momentarily.', 'commentformMessage' );
	}

	$('commentFAQ').style.display = 'block';

	setTimeout( 'location.href=location.href;', 2000 );

}

function ganjaCommentFailure( msg )
{
	ganjaShowMessage( 'failure', msg, 'commentformMessage' );
}

function ganjaRand( n )
{
	return Math.floor(Math.random() * n ) + 1;
}

var messageTargetTimeouts = new Array();

function ganjaLoginMessage( type, msg )
{
	ganjaShowMessage( type, msg, 'topnavbarMessage' );
	$('topnavbarHelp').style.display = 'none';
	if ( $('loginatcommentMessage') )
	{
		ganjaShowMessage( type, msg, 'loginatcommentMessage' );
	}
}

function ganjaShowMessage( type, msg, msgdivid, stable )
{
	if(msgdivid != undefined)
	{
		try
		{
			var m = $(msgdivid);
			m.innerHTML = msg;
			if(messageTargetTimeouts[msgdivid] > 0)
			{
				clearTimeout(messageTargetTimeouts[msgdivid]);
			}
			if (stable != true)
			{
				messageTargetTimeouts[msgdivid] = setTimeout( function(id){ $(id).innerHTML = ''; messageTargetTimeouts[id] = undefined; if($('topnavbarHelp')) {$('topnavbarHelp').style.display = 'block';} }, 5000, msgdivid );
			}
		}
		catch( e )
		{
		}
	}
	else
	{
		var ganja_messages = $('ganja_messages');
		var msgdivid = 'ganja_message_' + ganjaRand(1000);

		try
		{
			var m = document.createElement('div');
			m.setAttribute("id", msgdivid );

			var excl = document.createElement('div');
			excl.setAttribute("class", "exclamation" );
			excl.setAttribute("className", "exclamation" );
			excl.innerHTML = "";
			m.appendChild(excl);

			m.innerHTML+= msg;

			if( type == 'failure' || type =='error')
			{
				m.setAttribute("class", "ganjaMessage error");
				m.setAttribute("className", "ganjaMessage error");
			}
			else if( type == 'success' )
			{
				m.setAttribute("class", "ganjaMessage success");
				m.setAttribute("className", "ganjaMessage success");
			}
			else if( type == 'message' )
			{
				m.setAttribute("class", "ganjaMessage info");
				m.setAttribute("className", "ganjaMessage info");
			}
			else
			{
				m.setAttribute("class", "ganjaMessage");
				m.setAttribute("className", "ganjaMessage");
			}

			// get number of current ganja messages
			var hT = document.getElementsByClassName('ganjaMessage').length;
			// set a top position of the new message based on the number of current messages
			m.style.top = 30 + (hT * 58) +'px';
			if ( document.selection )
			{
				// IE position fix
				m.style.position = 'absolute';
			}

			document.body.appendChild(m);
			// timeout message after 5 sec
			setTimeout( 'ganjaHideMessage(\'' + msgdivid + '\')', 5000 );

		}
		catch( e )
		{
		}
	}
	return false;
}

function ganjaHideMessage( id )
{
	var message = document.getElementById(id);

	try
	{
		if( message )
		{
			message.style.display = 'none';
			// remove element from  dom
			document.body.removeChild(message);
		}
	}
	catch( e )
	{
	}
}

function ganjaShowProgress( step, msg )
{
}

function ganjaShowForm( formId )
{
		var f = $('ganja_uberform');

		if(formId == 'RegisterForm')
		{
			$('LoginForm').style.display = 'block';
			$('RegisterForm').style.display = 'block';
			$('loginDisclaimer').style.display = 'block';
			$('loginGeneric').style.display = 'none';
			$('loginWelcome').style.display  = 'block';
			$('comment_textarea').style.display = 'block';
			//$('forgot_pass').style.display = 'none';
		}
		else
		{
			var boxes = document.getElementsByClassName( 'switchable' );

			for( var i = 0; i < boxes.length; i++ )
			{
				if( boxes[i].id == formId )
				{
					boxes[i].style.display = 'block';
				}
				else
				{
					boxes[i].style.display = 'none';
				}
			}
		}

		if( formId == 'LoginForm')
		{
			if( typeof onLiveblogSite == 'undefined' || onLiveblogSite == false )
			{
				$('loginGeneric').style.display = 'inline';
				$('loginWelcome').style.display = 'none';
				$('loginDisclaimer').style.display = 'none';
				$('rememberMe').style.display = 'block';
			}
			$('comment_textarea').style.display = 'none';
			f.elements.text.value = '';
			f.elements.status.value = 'login';
			//$('post_button').value = 'login';
		}
		else if( formId == 'RegisterForm' )
		{
			$('loginDisclaimer').style.display = 'block';
			$('loginWelcome').style.display = 'inline';
			$('loginGeneric').style.display = 'none';
			$('rememberMe').style.display = 'block';
			$('post_button').value = 'submit';
			f.elements.status.value = 'register';
		}
		else
		{
			if( typeof onLiveblogSite == 'undefined' || onLiveblogSite == false )
			{
				$('loginDisclaimer').style.display = 'none';
				$('loginWelcome').style.display = 'none';
				$('rememberMe').style.display = 'none';
			}
			$('comment_textarea').style.display = 'inline';
			//$('forgot_pass').style.display = 'none';
			f.elements.status.value = 'comment';
			//$('post_button').value = 'submit comment';
		}

		//setTimeout( 'ganjaHideMessage()', 2000 );
}

function ganjaAjaxUpdater( resultdiv, url, params, options )
{
	if((options != undefined) && (options['indicator'] != undefined))
	{
		ganjaToggleIndicator(options['indicator'],'show');
		var ind = options['indicator'];
		options['onComplete'] = function(){
			ganjaToggleIndicator(ind,'hide');
		};
		options['indicator'] = undefined;
	}

	if((options != undefined) && (options['inline_indicator'] != undefined))
	{
		ganjaToggleInlineIndicator( options['inline_indicator'], 'show' );
		var ind = options['inline_indicator'];
		options['onComplete'] = function(){
			ganjaToggleInlineIndicator( ind, 'hide' );
		};
		options['inline_indicator'] = undefined;
	}

	var opts = {
		method: 'post',
		parameters: params,
		evalScripts: true,
		asynchronous: true};

	if(options != undefined)
	{
		for(var key in options)
		{
			opts[key] = options[key];
		}
	}

	var req = new Ajax.Updater( resultdiv, url, opts);
}

function ganjaCleanComment(text)
{
	text = text.replace(/<a.*javascript:.*?>/ig, '');
	text = text.replace(/<a.*class=.*?>/ig, '');
	text = text.replace(/<a.*style=.*?>/ig, '');
	text = text.replace(/<a.*on\w+=.*?>/ig, '');
	text = text.replace(/<i.*class=.*?>/ig, '');
	text = text.replace(/<i.*style=.*?>/ig, '');
	text = text.replace(/<i.*on\w+=.*?>/ig, '');
	text = text.replace(/<b.*class=.*?>/ig, '');
	text = text.replace(/<b.*style=.*?>/ig, '');
	text = text.replace(/<b.*on\w+=.*?>/ig, '');
	text = text.replace(/<img.*?>/g, '');
	text = text.replace(/<(?!a.*?|\/a|b|\/b|i|\/i).*?>/ig, '');

	text = ganjaAutoLink(text);

	var pars = text.split(/\r?\n\r?\n/);
	var newtext = '';
	for(i = 0; i < pars.length; i++) {
		pars[i] = pars[i].strip();
		pars[i] = pars[i].replace(/\r?\n/g, '<br />\n');
		if(pars[i].length > 0) newtext += '<p>' + pars[i] + '</p>' + (i+1 < pars.length ? '\n' : '');
	}	
	newtext = ganjaCleanQuotes(newtext);
	return newtext;
}

function ganjaCleanPost(text)
{
	text = text.replace(/<a.*javascript:.*?>/ig, '');
	text = text.replace(/<a.*class=.*?>/ig, '');
	text = text.replace(/<a.*style=.*?>/ig, '');
	text = text.replace(/<a.*on\w+=.*?>/ig, '');
	text = text.replace(/<i.*class=.*?>/ig, '');
	text = text.replace(/<i.*style=.*?>/ig, '');
	text = text.replace(/<i.*on\w+=.*?>/ig, '');
	text = text.replace(/<b.*class=.*?>/ig, '');
	text = text.replace(/<b.*style=.*?>/ig, '');
	text = text.replace(/<b.*on\w+=.*?>/ig, '');
	//text = text.replace(/<img.*?>/g, '');
	text = text.replace(/<(?!a.*?|\/a|b|\/b|i|\/i).*?>/ig, '');

	text = ganjaAutoLink(text);

	var pars = text.split(/\r?\n\r?\n/);
	var newtext = '';
	for(i = 0; i < pars.length; i++) {
		pars[i] = pars[i].strip();
		pars[i] = pars[i].replace(/\r?\n/g, '<br />\n');
		if(pars[i].length > 0) newtext += '<p>' + pars[i] + '</p>' + (i+1 < pars.length ? '\n' : '');
	}	
	newtext = ganjaCleanQuotes(newtext);
	return newtext;
}

function ganjaAutoLink(text)
{
	text = ' ' + text;
	text = text.replace(/([^"=])(https?\:\/\/)([^,'"\s\<\>\)\]\!\/]*)((\/)([^,'"\s\<\>\)\]\!]*))?/igm, '$1<a href="$2$3$4">[$3]</a>');
	text = text.substring(1,text.length);
	var re = new RegExp(/href.+>(.*?)<\/a>/g);
	var amatches = re.exec(text);
	if(amatches) {
		for(i = 1; i < amatches.length; i+=2) {
			var href = amatches[i];
			if(href.length > 60) {
				var nhref = href.substr(0, 59);
				var index = text.indexOf(href);
				var stext = text.substr(0, index);
				var etext = text.substr(index + href.length, text.length);
				text = stext + nhref + "...</a>" + etext;
			}
		}
	}
	return text;
}

function ganjaCleanQuotes(text)
{
    // clean smart chars and such...
    // 8216, 8217, 8220, 8221, 8212, 8211
    var chars = text.split("");
    var newtext = '';
    for(i = 0; i < chars.length; i++) {
        var chr = chars[i].charCodeAt(0);
        switch( chr ) {
            case 8216: newtext += "'"; break;
            case 8217: newtext += "'"; break;
            case 8220: newtext += '"'; break;
            case 8221: newtext += '"'; break;
            case 8211: newtext += "-"; break;
            case 8212: newtext += "-"; break;
            default: newtext += chars[i];
        }
    }
    return newtext;
}

function ganjaCommentPreview(content)
{
	var retval = '';

	if( ganjaPostingstatus )
	{
		return;
	}

	try
	{
		if(content == undefined){
			var f = $('ganja_uberform');
			content = f.elements.text.value;
		}
		var prev = $('comment_preview');
		// var prev_name = $('comment_preview_name');
		var prev_body = $('comment_preview_body');

		if( ganjaPreviewstatus == false )
		{
			ganjaPreviewstatus = true;
			// prev_name.innerHTML = f.elements.preview_name.value
			prev.style.display = 'block';
		}
		prev_body.innerHTML = ganjaCleanComment(content);
		retval = prev_body.innerHTML;
	
		if( content.length == 0 )
		{
			prev.style.display = 'none';
			ganjaPreviewstatus = false;
		}		
	}
	catch(e)
	{
		alert(e);
	}
	return retval;
}

function ganjaPostPreview()
{
	var retval = '';
	
	try
	{
		var f = $('commenterpagePost');
		var prev = $('post_preview');
		var prev_name = $('post_preview_name');
		var prev_body = $('post_preview_body');
		
		if( f.elements.entry.value.length == 0 || ganjaPreviewstatus == false)
		{
			ganjaPreviewstatus = true;
			prev.style.display = 'none';
		}
		else
		{
			prev_body.innerHTML = f.elements.entry.value;
			prev_body.innerHTML = ganjaCleanPost(prev_body.innerHTML);
			prev.style.display = 'block';
		}
		
		retval = prev_body.innerHTML;
	}
	catch(e)
	{
		alert(e);
	}
	return retval;
}


function ganjaEditProfile()
{
	var f = $('ganja_uberform');

	ganjaShowForm('LoginForm');


	$('post_button').value = 'login';
	f.elements.status.value = 'profile';

}

/* this function sets the comments state - see #1150 */
function ganjaSetCommentState( commentid, postid, status, userid )
{
        var parameters = new Array();
        parameters.push( 'op=changecommentstatus' );
        parameters.push( 'id='+ commentid );
        parameters.push( 'entry_id='+ postid );
        parameters.push( 'publishStatus='+ status );
        parameters.push( 'user_id='+ userid );
        parameters = parameters.join( '&' );

        var req = new Ajax.Updater( 'scripter', '/index.php', {
                        method: 'post',
                        parameters: parameters,
                        evalScripts: false,
                        asynchronous: true,
                        onComplete: function() {
                                if( status == 'PUBLISHED' )
                                {
                                        document.getElementById('demoteComment'+commentid).style.display = 'none';
                                        document.getElementById('promoteComment'+commentid).style.display = 'block';
                                }
                                else if( status == 'FRONTPAGE' )
                                {
                                        document.getElementById('demoteComment'+commentid).style.display = 'block';
                                        document.getElementById('promoteComment'+commentid).style.display = 'none';
                                }
                        }
                }
        );
        // return false;
}

function ganjaReplyByName( commentId, name, isTinyMce )
{
    var inReplyFor = '@<a href="#'+ commentId +'">'+ name +'</a>: ';

	if( isTinyMce == true )
	{
		var content = tinyMCE.activeEditor.getContent().replace(/\+/g, '&#43;');
		tinyMCE.activeEditor.setContent( content + ' ' + inReplyFor, {format : 'raw'});
	}
	else
	{
    	$( 'text' ).value = $( 'text' ).value + inReplyFor;
    	$( 'text' ).focus();
	}

    return false;
}

function replyToCommenter( commentId )
{
	if( $('usercommentForm'+ commentId) )
	{
		$('usercommentForm'+ commentId).submit()
	}
}

function flagComment( cId, url )
{
	if( confirm( "Are you sure you wish to flag this comment?" ) )
	{
		var params = new Array();
		params.push( 'op=flag_comment' );
		params.push( 'url=' + url );
		params = params.join( '&' );

		ganjaAjaxUpdater( cId, '/index.php', params );	
	}
	return false;
}

function setCommentText()
{
	var content = tinyMCE.activeEditor.getContent().replace(/\+/g, '&#43;');
	content = ganjaCommentPreview(content);
	$('text').value = content;
	return false;
}

/* comment image upload functions */
function startCommentImageUploadCallback()
{
	$('commentImagePreview').innerHTML = 'Processing...';
	return true;
}

function completeCommentImageUploadCallback( response )
{
	resp = eval('(' + response + ')' );
	if( resp.error == null )
	{
		$('commentImagePreview').innerHTML = '<img src="./grid/images/comment/'+ resp.resultUrl +'" height="150" />';
		$('comment_image').value = resp.resultUrl;
		$('commentImagePreviewError').innerHTML = '';
		$('commentImagePreviewError').style.display = 'none';
	}
	else
	{
		var msg = '';
		switch( resp.error )
		{
			case 400:
			case 401:
				msg = 'Error while uploading image, please try again later';
				break;
			case 500:
				msg = 'Error while resizing image';
				break;
		}
		$('commentImagePreviewError').style.display = 'inline';
		$('commentImagePreviewError').innerHTML = msg;
	}
}

function showImagePreview()
{
	$('commentBoxWrapper').style.width = (parseInt( $('commentBoxWrapper').offsetWidth ) + 300) + 'px';
	$('imgbttn').style.display = 'none';
	$('imagePreviewBox').style.display = 'inline';
	return false;
}