/* version 3  */

var Previewstatus = false;
var Postingstatus = false;

function exoSubmit(f)
{
	if( f == undefined )
	{
		f = $('#comment_form').val();
	}

	if(	$('#status').val() == 'login' )
	{
		exoLogin();
	}
	else if( ( $('#status').val() == 'register' ) )
	{
		if( $('#confirm_password').val()  == '' )
		{
		}
		else
		{
			exoRegister();
		}
	}
	else if( $('#status').val()  == 'comment' )
	{
		PostComment();
	}
	
}

/* ajax.Request */
function exoRequestUpdate(type, url, data) {
 $.ajax({
  type: "POST",
  url: url,
  data: data,
  success: function(callback){
	$('#exo_messages').html(callback);
	
	if(type == 'comment') {
		$('#comment_preview').css("background-color","#f8f8f8");
	}
  }
});

}
function exoLogin() {

	f = $('#comment_form');
	
	//parameters.push( 'do=login' ); 
	
	var username = $('#username').val();
	var password = $('#password').val();
	var remember = $('#remember').val();
	
	var params = { username:username, password:password, remember:remember, action:'login' };
	var req = jQuery.param(params);
	
	exoRequestUpdate( 'exo_messages', '/comment-jidoor.php', req );
}
function exoRegister() {

	f = $('#comment_form');

	var parameters = new Array();
	
	var username = $('#username').val();
	var password = $('#password').val();
	var confirm_password = $('#confirm_password').val();
	var email = $('#email').val();
	
	var params = { username:username, password:password, confirm_password:confirm_password, email:email, action:'register' };
	var req = jQuery.param(params);

	

	//parameters.push( 'do=register' ); 

	exoRequestUpdate( 'exo_messages', '/comment-jidoor.php', req );
}

/* hide / show forms, depending on state */
function showForm(formId) {

	var f = $('#comment_form');
	
	$('#text').val('') 
	
	//f.elements.text.value = '';
	
	if(formId == 'RegisterForm') {
		$('#loginWelcome').hide();
		$('#loginRegisterText').show();
		$('#RegisterForm').show();
		$('#rememberMe').show();
		$('#loginRegisterText').show();
		$('#postComment').hide();
		$('#loginWelcome').hide();
		$('#post_button').val('register');
		$('#status').val("register");
		$('#new_post').hide();
	}
	else {
	var boxes = $( '.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 == 'LogoutForm') {

		var params = { action:'logout' };
		var req = jQuery.param(params);
		
		exoRequestUpdate('', '/comment-jidoor.php', req);
		
		$('#LoginForm').show();
		$('#postComment').hide();
		$('#loginWelcome').show();
		$('#post_button').val('login');
		$('#status').val('login') 
		$('#comment_preview').hide();
		$('#loginstatus').hide();
		$('#login').hide();
		$('#comment_textarea').hide();
	}
	
	if(formId == 'LoginForm') {
		$('#comment_textarea').hide();
		$('#rememberMe').show();
	}
}
function CommentPreview()
{
	if( Postingstatus )
	{
		return;
	}

	try
	{
		var f = $('#comment_form');
		var prev = $('#comment_preview');
		var prev_name = $('#comment_preview_name');
		var prev_body = $('#comment_preview_body');
		$('#comment_preview').show();
		
		if( Previewstatus == false )
		{
			Previewstatus = true;
			prev_name.innerHTML = $('#preview_name').val();
			prev.show();
		}
		$(prev_body).html(CleanComment($('#text').val()));
	}
	catch(e)
	{
		alert(e);
	}
}
function CleanComment(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 = AutoLink(text);

	var pars = text.split(/\r?\n\r?\n/);
	var newtext = '';
	for(i = 0; i < pars.length; i++) {
		pars[i] = $.trim(pars[i]);
		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 = CleanQuotes(newtext);
	return newtext;
}
function CleanQuotes(text)
{
    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 AutoLink(text)
{
	text = ' ' + text;
	text = text.replace(/([^"=])(https?\:\/\/)([^,'"\s\<\>\)\]\!\/]*)((\/)(([^,'"\s\<\>\)\]\!]|[,])*))?/igm, '$1<a rel="nofollow" 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 PostComment( f )
{
	if( f == undefined )
	{
		f = $('#comment_form');
	}

	if( ($('#text').val() != undefined) && ($('#text').val() != '') )
	{
		
		var entry_id = $('#entry_id').val();
		var post_id = $('#post_id').val();
		var text = CleanComment( $('#text').val() );
	
		var params = { entry_id:entry_id, post_id:post_id, text:text,  action:'postcomment' };
		var req = jQuery.param(params);

		exoRequestUpdate( 'comment', '/comment-jidoor.php', req );
	}

}
