/* ============================== */
/* === JQuery Shoutbox 0.1				*/
/* ============================== */

/* ============================== */
/* ============================== */

var create_form = function($container) {
	$container.append('<textarea id="' + $container.attr('id') + '_text" name="' + $container.attr('id') + '[text]" rows="2" cols="10">Сообщение:</textarea>');
	$container.append('<input id="' + $container.attr('id') + '_user" name="' + $container.attr('id') + '[user]" type="text" value="Твой ник:" />');
	$container.append('<a href="#" title="" id="' + $container.attr('id') + '_btn">отправить</a>');
	$container.append('<div style="clear:both;"></div>');
}

jQuery.fn.create_shoutbox = function($options) {
	if (this.length != 1) return false;
	this.empty();

	var $messages = {
		'info_empty'		: 'Сообщений пока нет.',
		'info_ctrl'			: 'Время деньги! Используй CTRL + Enter вместо мыши.',
		'error_ajax'		: 'При выполнении запроса произошла ошибка, если это уже не первый раз - пожалуйста сообщите администратору.',
		'error_empty_text'  : 'Пожалуйста введите текст.',
		'error_empty_user'  : 'Пожалуйста укажите никнейм.'
	};

	var $settings = {
		id				: 'shoutbox',

		max_messages	: 10,
		update_period	: 15,
		last_update		: 0,

		loader			: null,
		loader_act	    : 'active',

		msgbox			: null,

		use_hotkey		: false,
		show_hotkey_msg	: true
	};

  if($options) {
    jQuery.extend($settings, $options);
  };

  if (this.attr('id')) {
  	jQuery.extend($settings, {id:this.attr('id')});
  }
  else {
  	this.attr('id', $settings.id);
  }

	create_form(this);

	if (!$settings.msgbox) {
		this.append('<div id="' + $settings.container + '_msg"></div>');
		$settings.msgbox = jQuery('#' + $settings.container + '_msg');
		if ($settings.msgbox.length == 1) {
			$settings.msgbox = $settings.msgbox.get(0);
		}
		else {
			$settings.msgbox = null;
		}
	}

	if (!$settings.loader) {
		this.append('<div id="' + $settings.container + '_ldr"></div>');
		$settings.loader = jQuery('#' + $settings.container + '_ldr');
		if ($settings.loader.length == 1) {
			$settings.loader = $settings.loader.get(0);
		}
		else {
			$settings.loader = null;
		}
	}

	jQuery($settings.msgbox).hide();
	jQuery($settings.loader).hide();

	//toggle_inputs('#' + this.attr('id') + '_text, #' + this.attr('id') + '_user');

	jQuery('#' + this.attr('id') + '_text, #' + this.attr('id') + '_user').each(function() {
		//jQuery(this).toggleVal();

		jQuery(this).focus(function() {
									jQuery(this).addClass('highlight').css('border-color', '#F28B21').css('background-color', '#fbf2e7').css('color', '#000000');
								})
								.blur(function() {
									jQuery(this).removeClass('highlight').css('border-color', '#D6D4C9').css('background-color', '#f8f7ec').css('color', '#636363');
								});

		if ($settings.use_hotkey) {/*
			jQuery.hotkeys.add('Ctrl+return', {target:this}, function() {
				alert('');
			});*/
		}

	});



	$('#' + this.attr('id') + '_btn').click(function(event){
		event.preventDefault();
	});

	return this;
};

/*
var $chat_max_messages = 10;
var $chat_update_period = 15;
var $chat_last_update = 0;

var $chat_url = 'http://dev.mc-bear.info/chat/';

var $chat_update_timeout = window.setInterval('chat_get_messages({time:$chat_last_update})', $chat_update_period * 1000);
*/
	/*
var chat_init = function() {
	$options = {};
	$.ajaxSetup({dataType:'json', error:chat_ajax_error, success:chat_ajax_success});

	$('#new_msg_btn').click(function(event){
		event.preventDefault();
		if (chat_post_message()) {
			$('#minichat .chat .error').html($gui_messages.info_ctrl);
			$('#minichat .chat .error').show();
		}
	});

	chat_get_messages({limit:$chat_max_messages});
};
	*/

/*
var chat_ajax_error = function($event, $request, $settings) {
	//alert($request);
	$('#minichat .chat .error').html($gui_messages.ajax_error);
	$('#minichat .chat .error').show();
 	return false;
};
var chat_ajax_success = function($response, $status) {
	//alert($response);
	if (!$response || $response == 'undefined') return false;
	$chat_last_update = (new Date()).getTime() / 1000;
	if ($response.length < 1 && $('#minichat ol li').length < 1) {
		$('#minichat .chat .error').html($gui_messages.info_empty);
		$('#minichat .chat .error').show();
		return true;
	}
	//for ($key in $response) {}
	if ($response[0] == 'error') {
		$('#minichat .chat .error').html($response[1]);
		$('#minichat .chat .error').show();
	 	return false;
	}
	chat_show_messages($response);
	return true;
};

var chat_show_messages = function($messages) {
	for (var $i = $messages.length - 1; $i >= 0; $i--) {
		if ($('#minichat ol li').length >= $chat_max_messages) {
			$('#minichat ol li:last').remove();
		}
		chat_show_message($messages[$i]);
	}
	return true;
};
var chat_show_message = function($message) {
	var $html = '';
	$html += '<li>';
	$html += '<span class="date">' + $message.chat_date + '</span>';
	$html += '<span class="user">' + $message.chat_user + '</span>';
	$html += '<span class="text">' + $message.chat_text + '</span>';
	$html += '</li>';
	$('#minichat ol').prepend($html);
};

var chat_get_messages = function($params) {
	var r = $.post($chat_url + 'read/', $params);
	$('#minichat .chat .error').hide();
};

var chat_post_message = function() {
	if ($('#new_msg_text, #new_msg_login').length < 2) return false;
	if ($('#new_msg_text').val() == '' || $('#new_msg_text').val() == $('#new_msg_text').get(0).defaultValue) {
		$('#minichat .chat .error').html($gui_messages.error_empty_text);
		$('#minichat .chat .error').show();
		$('#new_msg_text').focus();
		return false;
	}
	if ($('#new_msg_login').val() == '' || $('#new_msg_login').val() == $('#new_msg_login').get(0).defaultValue) {
		$('#minichat .chat .error').html($gui_messages.error_empty_user);
		$('#minichat .chat .error').show();
		$('#new_msg_login').focus();
		return false;
	}

	/* BEGIN: отправляем сообщение на севрер */
/*	var r = $.post($chat_url + 'post/', {chat_user:$('#new_msg_login').val(), chat_text:$('#new_msg_text').val(), time:$chat_last_update});
	/* END: отправляем сообщение на севрер */
/*	$('#new_msg_text').val('');
	$('#new_msg_text').focus();
	return true;
};
/* ============================== */
/* ============================== */
