/**
 * Alexei <alexei (at] kinecto [dot) ro>
 */

Cufon.replace('h1, .l .block:not(.block-bg):not(.block-gg) .head .title, .r .block .head .title', {fontFamily: 'Raspoutine Medium', hover: true});
Cufon.replace('.album-style-1 .title', {fontFamily: 'pee pants script', hover: true});
Cufon.replace('.album-style-2 .title', {fontFamily: 'Fh_Allisa', hover: true});
Cufon.replace('.album-style-3 .title', {fontFamily: 'Chalkboard', hover: true});

Cufon.replace('#pregnancy-calendar-nav .title, #pregnancy-calendar-nav .week-no, .quiz-vlm', {fontFamily: 'VAG Rounded Std', hover: true});

if ($.blockUI) {
	$(document)
		.ajaxStart(function() {
			$.blockUI({
				message: App.blockUI_default_message,
				css: App.blockUI_default_style
			});
		})
		.ajaxStop(function() {
			$.unblockUI();
		});
}

function resize_background() {
	$('.bb').height(Math.max($(document).height(), $('#d').height()));
}

$(window).load(function() {
	resize_background();
	$(window).resize(function() {
		resize_background();
	});
});

$(function() {
	/**
	 * we don't really need jNice
	 */
	$('form:not(.dont-style)').each(function() {
		$(this).addClass('styled').find('input[type="text"], input[type="password"], input[type="submit"], textarea, select').each(function() {
			$(this).wrap('<span class="o"><span class="i"></span></span>');
		});
	});

	/**
	* Invite friend
	*/
   (function() {
		var $form_wrapper = $('#form-invite'),
			$form = $form_wrapper.find('form'),
			$form_messages = $form_wrapper.find('.messages'),
			response = '', $message = null;

		$form.submit(function() {
			$.post(
				$form.attr('action'), $form.serialize(),
				function(server_response, status) {
					response = JSON.parse(server_response);
					$message = $('<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>');
					$form_messages.html($message);
					if (response.status == 0) {
						$form.fadeOut();
						$message.oneTime('3s', 'hide', function() { $(this).fadeOut(); });
						$form.oneTime('3s', 'show', function() {
							var $this = $(this);
							$this.find('input[name="email"]').val('');
							$this.fadeIn();
						});
					}
				},
				'text'
			);

			return false;
		});
	})();


	/**
	 * Poll
	 */
	(function() {
		var $form_wrapper = $('#form-poll');
		if ($form_wrapper) {
			var $form = $form_wrapper.find('form'),
				$form_messages = $form_wrapper.find('.messages');

			$form.submit(function() {
				$.post(
					$form.attr('action'), $form.serialize(),
					function(server_response, status) {
						var response = JSON.parse(server_response);
						$form_messages.html(
							'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
						);
						if (response.status == 0) {
							$form.fadeOut();
						}
					},
					'text'
				);

				return false;
			});
		}
	})();

	App.handle_youtube();
});

var App = {
	blockUI_default_message: 'Se incarca...',
	blockUI_default_style: {
		padding: '15px', fontSize: '18px', color: '#fff', backgroundColor: '#000', border: 'none', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', 'border-radius': '10px', opacity: .5
	},

	/**
	 * new stuff
	 */
	blockUIMessageFmt: '<span style="font-weight: bold; font-size: 20px; line-height: 24px; color: #fff;">%s</span>',
	blockUIStyle: {
		iPhoto: {
			css: {border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', 'border-radius': '10px', opacity: .5, color: '#fff'},
			overlay: {cursor: 'wait'}
		}
	},
	blockUI: function(message, options) {
		$.blockUI($.extend({message: sprintf(App.blockUIMessageFmt, message)}, options || {}, App.blockUIStyle.iPhoto));
	},
	unblockUI: function() {
		$.unblockUI();
	},

	redirect: function(path) {
		window.location.replace(base_url + path);
	},

	form_dropdown: function(name, list, selected) {
		var o = [], k;
		o.push('<select name="'+ name +'">');
		for (k in list) {
			if (list.hasOwnProperty(k)) {
				if (k == selected) {
					o.push('<option value="'+ k +'" selected="selected">'+ list[k] +'</option>');
				}
				else {
					o.push('<option value="'+ k +'">'+ list[k] +'</option>');
				}
			}
		}
		o.push('</select>');
		return o.join('');
	},

	/**
	 * http://blog.shkedy.com/2007/01/createing-guids-with-client-side.html
	 * @xxx 10.03.29 alexei
	 * - hope this works
	 */
	guid: function() {
		var result, i, j;
		result = '';
		for (j = 0; j < 32; j++) {
			if (j == 8 || j == 12 || j == 16 || j == 20) {
				result = result + '-';
			}
			i = Math.floor(Math.random() * 16).toString(16).toUpperCase();
			result = result + i;
		}

		return result;
	},

	/**
	 * http://phpjs.org/functions/nl2br:480
	 */
	nl2br: function($str) {
		return ($str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1<br />$2');
	},

	/**
	 * http://phpjs.org/functions/dirname:388
	 */
	dirname: function(path) {
		return path.replace(/\\/g,'/').replace(/\/[^\/]*\/?$/, '');
	},

	/**
	 * http://phpjs.org/functions/range:499
	 */
	range: function(low, high, step) {
		var matrix = [],
			inival, endval, plus,
			walker = step || 1,
			chars  = false;

		if (!isNaN(low) && !isNaN(high)) {
			inival = low;
			endval = high;
		}
		else if (isNaN(low) && isNaN(high)) {
			chars = true;
			inival = low.charCodeAt(0);
			endval = high.charCodeAt(0);
		}
		else {
			inival = (isNaN(low) ? 0 : low);
			endval = (isNaN(high) ? 0 : high);
		}

		plus = ((inival > endval) ? false : true);
		if ( plus ) {
			while (inival <= endval) {
				matrix.push(((chars ) ? String.fromCharCode(inival) : inival));
				inival += walker;
			}
		} else {
			while (inival >= endval) {
				matrix.push(((chars) ? String.fromCharCode(inival) : inival));
				inival -= walker;
			}
		}

		return matrix;
	},

	/**
	 * http://phpjs.org/functions/array_combine:307
	 */
	array_combine: function(keys, values) {
		var new_array = {}, keycount = keys && keys.length, i = 0;

		// input sanitation
		if (typeof keys !== 'object' || typeof values !== 'object' || // Only accept arrays or array-like objects
			typeof keycount !== 'number' || typeof values.length !== 'number' ||
			!keycount){ // Require arrays to have a count
			return false;
		}

		// number of elements does not match
		if (keycount != values.length){
			return false;
		}

		for ( i=0; i < keycount; i++ ){
			new_array[keys[i]] = values[i];
		}

		return new_array;
	},

	friendly_datetime: function(datetime) {
		var timestamp = (typeof datetime == 'string' ? Date.parse(datetime) : (datetime * 1000)),
			date = new Date(timestamp),
			now = new Date(),
			today_morning = (new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0)).getTime();
			today_midnight = (new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59)).getTime(),
			hours = date.getHours(),
			minutes = date.getMinutes();
		hours = hours < 10 ? '0'+ hours : hours;
		minutes = minutes < 10 ? '0'+ minutes : minutes;
		if (timestamp > today_morning && timestamp < today_midnight) { // today
			return hours +':'+ minutes;
		}
		else {
			return date.getDate() +' '+ date.getMonth() +' '+ date.getFullYear() +' '+ hours +':'+ minutes;
		}
	},

	/**
	 * YouTube
	 */
	handle_youtube: function($e) {
		var $links = $e ? $e.find('a.link-youtube') : $('#wall a.link-youtube');
		$links.each(function() {
			var video_id = $(this).attr('data-video-id'),
				video_player_id = 'youtube-video-'+ App.guid();
			$(this).after('<div id="'+ video_player_id +'"></div>');
			var $video_player = $('#'+ video_player_id);
			$video_player.hide().html('<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/'+ (video_id) +'&fs=1&autoplay=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+ (video_id) +'&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>');
			$(this).toggle(
				function() { $video_player.show(); return false; },
				function() { $video_player.hide(); return false; }
			);
		});
	},

	/**
	 * @xxx 10.03.29 alexei
	 * - do we actually use this?
	 */
	render_avatar: function(avatar, w, h, s) {
		var width = w || 'auto',
			height = h || 'auto',
			scaling = s || 'scale_crop',
			avatar_path = avatar.path;
		if (width != 'auto' || height != 'auto') {
			avatar_path = App.dirname(avatar.path) +'/cache/scale_crop/'+ width +'x'+ height +'/'+ avatar.name;
		}

		var o = [
			'<span class="avatar avatar-'+ width +'x'+ height +'">',
				'<img src="'+ (base_url + avatar_path) +'" alt="" />',
				'<span class="shade"></span>',
			'</span>'
		];

		return o.join('');
	},

	smooth_scroll_to: function(target, duration, easing) {
		duration = duration || 1000;
		easing = easing || 'swing';
		$('html:not(:animated), body:not(:animated)').animate({ scrollTop: $(target).offset().top}, duration, easing, function() {});
	}
};

(function() {
	var range_day = App.range(1, 31),
		range_month = App.range(1, 12),
		current_year = (new Date).getFullYear(),
		range_year = App.range(current_year - 6, current_year + 1),
		month_list = [
			'Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie',
			'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'
		];
	App.date_options = {
		day: App.array_combine(range_day, range_day),
		month: App.array_combine(range_month, month_list),
		year: App.array_combine(range_year, range_year, current_year - 1)
	};
})();

var User = {
	register: function() {
		var $form_container = $('#form-user-register'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('.messages');

		$form.submit(function() {
			$.post(
				$form.attr('action'), $form.serialize(),
				function(server_response, status) {
					var response = JSON.parse(server_response);

					if (response.status == 0) {
						App.redirect('register/complete');
						/*
						$form.fadeOut(function() {
							$('.bb').height('auto');
							resize_background();
						});
						*/
					}
					else {
						$form_messages.html(
							'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
						);
						App.smooth_scroll_to($form_container, 500);
					}
				},
				'text'
			);

			return false;
		});

		// upload user avatar
		var $button_upload_avatar = $('#button-upload-user-avatar'),
			$avatar_placeholder = $('#'+ $button_upload_avatar.attr('data-target')),
			$id_avatar = $('input[name="id_avatar"]', $form),
			avatar = {},
			avatar_path = '';
		if ($id_avatar.val() == 0) {
			new AjaxUpload(
				$button_upload_avatar,
				{
					action: $button_upload_avatar.attr('data-action'),
					name: $button_upload_avatar.attr('data-name'),
					onSubmit: function() {
						this.disable();
						$button_upload_avatar.find('.label').hide();
						$.blockUI({
							message: App.blockUI_default_message,
							css: App.blockUI_default_style
						});
					},
					onComplete: function(file, server_response) {
						$.unblockUI();
						var response = JSON.parse(server_response);
						if (response.status == 0) {
							this.disable();
							$button_upload_avatar.find('.label').hide();

							avatar = response.message;
							// set user avatar
							$id_avatar.val(avatar.id);
							// load image
							avatar_path = App.dirname(avatar.path) +'/cache/scale_crop/85x85/'+ avatar.name;
							$avatar_placeholder.attr('src', base_url + avatar_path);
						}
						else {
							this.enable();
							$button_upload_avatar.find('.label').show();

							$form_messages.html('<div class="state-error">'+ response.message +'</div>');
						}
					}
				}
			);
		}
		/**
		 * Add one child by default
		 */
		$('#link-child-add').click(function() {
			User.children_add();
			return false;
		});

		var $sunt_mamica = $form.find('input[name="sunt_mamica"]');
		if ($sunt_mamica.is(':checked')) {
			$('#user-children').hide();
		}
		else {
			$('#user-children').show();
			User.children_add();
		}
		$sunt_mamica.change(function() {
			if ($(this).is(':checked')) {
				$('#user-children').hide();
			}
			else {
				$('#user-children').show();
				//User.children_add();
			}
		});
	},

	children_count: 0,
	children_add: function() {
		var $form_container = $('#form-user-register'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('.messages');

		User.children_count++;
		var local_id = App.guid(),
			child_html =
				'<div class="user-child" id="user-child-'+ (local_id) +'" data-local-id="'+ (local_id) +'">\
					<div class="ac">\
						<div class="user-form-date">\
							<div class="ac item text">\
								<label for="children['+ (local_id) +'][prenume]">Prenume <span class="field-required">*</span></label>\
								<span class="field"><span class="o"><span class="i"><input type="text" name="children['+ (local_id) +'][prenume]" /></span></span></span>\
							</div>\
							<div class="ac group-select">\
								<label>Data nasterii <span class="field-required">*</span></label>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (local_id) +'][data_nasterii][day]', App.date_options.day) +'</span></span></span></span>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (local_id) +'][data_nasterii][month]', App.date_options.month) +'</span></span></span></span>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (local_id) +'][data_nasterii][year]', App.date_options.year, ((new Date).getFullYear() - 1)) +'</span></span></span></span>\
							</div>\
							<div class="ac group-radio">\
								<label>Sex <span class="field-required">*</span></label>\
								<span class="item radio"><span class="field"><input type="radio" name="children['+ (local_id) +'][sex]" value="1" checked="checked" /> Baiat</span></span>\
								<span class="item radio"><span class="field"><input type="radio" name="children['+ (local_id) +'][sex]" value="2" /> Fata</span></span>\
							</div>\
							<input type="hidden" name="children['+ (local_id) +'][id_avatar]" value="0" id="id-avatar-child-'+ (local_id) +'" />\
						</div>\
						<div class="user-form-avatar">\
							<div class="item file">\
								<label>Imagine profil <span class="field-required">*</span></label>\
								<span id="button-upload-user-child-avatar-'+ (local_id) +'"\
									 data-name="user-avatar"\
									 data-action="'+ (base_url) +'register/upload-user-child-avatar"\
									 data-target="user-child-avatar-placeholder-'+ (local_id) +'"\
									 class="link-button-upload"\
								>\
									<span class="avatar avatar-85x85">\
										<img src="'+ (base_url) +'theme/ui/blank.gif" alt="" id="user-child-avatar-placeholder-'+ (local_id) +'" />\
										<span class="shade"></span>\
									</span>\
									<span class="label">Incarca imagine</span>\
								</span>\
							</div>\
						</div>\
					</div>\
				</div>';
		$('#user-children-list').append(child_html);

		// upload user child avatar
		var $button_upload_avatar = $('#button-upload-user-child-avatar-'+ local_id),
			$avatar_placeholder = $('#'+ $button_upload_avatar.attr('data-target')),
			$id_avatar = $('#id-avatar-child-'+ local_id);
		if ($id_avatar.val() == 0) {
			new AjaxUpload(
				$button_upload_avatar,
				{
					action: $button_upload_avatar.attr('data-action'),
					name: $button_upload_avatar.attr('data-name'),
					onSubmit: function() {
						this.disable();
						$button_upload_avatar.find('.label').hide();
						$.blockUI({
							message: App.blockUI_default_message,
							css: App.blockUI_default_style
						});
					},
					onComplete: function(file, server_response) {
						$.unblockUI();
						var response = JSON.parse(server_response);
						if (response.status == 0) {
							this.disable();
							$button_upload_avatar.find('.label').hide();

							var avatar = response.message;
							// set user avatar
							$id_avatar.val(avatar.id);
							// load image
							var avatar_path = App.dirname(avatar.path) +'/cache/scale_crop/85x85/'+ avatar.name;
							$avatar_placeholder.attr('src', base_url + avatar_path);
						}
						else {
							this.enable();
							$button_upload_avatar.find('.label').show();

							$form_messages.html('<div class="state-error">'+ response.message +'</div>');
						}
					}
				}
			);
		}
	},

	edit: function(child_list) {
		var $form_container = $('#form-user-edit'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('.messages');

		$form.submit(function() {
			$.post(
				$form.attr('action'), $form.serialize(),
				function(server_response, status) {
					var response = JSON.parse(server_response);
					$form_messages.html(
						'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
					);
					/*if (response.status == 0) {
						$form.fadeOut();
					}*/
					App.smooth_scroll_to($form_container, 500);
				},
				'text'
			);

			return false;
		});

		var $button_upload_avatar = $('#button-upload-user-avatar'),
			$avatar_placeholder = $('#'+ $button_upload_avatar.attr('data-target')),
			$id_avatar = $('input[name="id_avatar"]', $form),
			avatar = {},
			avatar_path = '';

		//if ($id_avatar.val() == 0) {
			new AjaxUpload(
				$button_upload_avatar,
				{
					action: $button_upload_avatar.attr('data-action'),
					name: $button_upload_avatar.attr('data-name'),
					onSubmit: function() {
						this.disable();
						$button_upload_avatar.find('.label').hide();
						$.blockUI({
							message: App.blockUI_default_message,
							css: App.blockUI_default_style
						});
					},
					onComplete: function(file, server_response) {
						$.unblockUI();
						var response = JSON.parse(server_response);
						if (response.status == 0) {
							this.disable();
							$button_upload_avatar.find('.label').hide();

							avatar = response.message;
							// set user avatar
							$id_avatar.val(avatar.id);
							// load image
							avatar_path = App.dirname(avatar.path) +'/cache/scale_crop/85x85/'+ avatar.name;
							$avatar_placeholder.attr('src', base_url + avatar_path);
						}
						else {
							this.enable();
							$button_upload_avatar.find('.label').show();

							$form_messages.html('<div class="state-error">'+ response.message +'</div>');
						}
					}
				}
			);
		//}

		child_list = child_list || [];
		for (var i in child_list) {
			User.children_set(child_list[i]);
		}

		/**
		 * Add one child by default
		 */
		$('#link-child-add').click(function() {
			User.children_add();
			return false;
		});

		var $sunt_mamica = $form.find('input[name="sunt_mamica"]');
		if ($sunt_mamica.is(':checked')) {
			$('#user-children').hide();
		}
		else {
			$('#user-children').show();
			if (!child_list.length) {
				User.children_add();
			}
		}
		$sunt_mamica.change(function() {
			if ($(this).is(':checked')) {
				$('#user-children').hide();
			}
			else {
				$('#user-children').show();
				//User.children_add();
			}
		});
	},

	children_set: function(child) {
		var $form_container = $('#form-user-edit'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('.messages');

		User.children_count++;
		var avatar_path = App.dirname(child.avatar.path) +'/cache/scale_crop/85x85/'+ child.avatar.name;
		var local_id = App.guid(), //child.id,
			child_html =
				'<div class="user-child" id="user-child-'+ (local_id) +'" data-local-id="'+ (local_id) +'">\
					<div class="ac">\
						<div class="user-form-date">\
							<div class="ac item text">\
								<label for="children['+ (child.id) +'][prenume]">Prenume <span class="field-required">*</span></label>\
								<span class="field"><span class="o"><span class="i"><input type="text" name="children['+ (child.id) +'][prenume]" value="'+ child.prenume +'" /></span></span></span>\
							</div>\
							<div class="ac group-select">\
								<label>Data nasterii <span class="field-required">*</span></label>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (child.id) +'][data_nasterii][day]', App.date_options.day, child.birthday.day) +'</span></span></span></span>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (child.id) +'][data_nasterii][month]', App.date_options.month, child.birthday.month) +'</span></span></span></span>\
								<span class="item select"><span class="field"><span class="o"><span class="i">'+ App.form_dropdown('children['+ (child.id) +'][data_nasterii][year]', App.date_options.year, child.birthday.year) +'</span></span></span></span>\
							</div>\
							<div class="ac group-radio">\
								<label>Sex <span class="field-required">*</span></label>\
								<span class="item radio"><span class="field"><input type="radio" name="children['+ (child.id) +'][sex]" value="1" '+ (child.sex == 1 ? 'checked="checked"' : '') +' /> Baiat</span></span>\
								<span class="item radio"><span class="field"><input type="radio" name="children['+ (child.id) +'][sex]" value="2" '+ (child.sex == 2 ? 'checked="checked"' : '') +' /> Fata</span></span>\
							</div>\
							<input type="hidden" name="children['+ (child.id) +'][id_avatar]" value="'+ (child.avatar.id) +'" id="id-avatar-child-'+ (local_id) +'" />\
						</div>\
						<div class="user-form-avatar">\
							<div class="item file">\
								<label>Imagine profil <span class="field-required">*</span></label>\
								<span id="button-upload-user-child-avatar-'+ (local_id) +'"\
									 data-name="user-avatar"\
									 data-action="'+ (base_url) +'user/edit/upload-user-child-avatar"\
									 data-target="user-child-avatar-placeholder-'+ (local_id) +'"\
									 class="link-button-upload"\
								>\
									<span class="avatar avatar-85x85">\
										<img src="'+ (base_url + avatar_path) +'" alt="" id="user-child-avatar-placeholder-'+ (local_id) +'" />\
										<span class="shade"></span>\
									</span>\
									<span class="label">Incarca imagine</span>\
								</span>\
							</div>\
						</div>\
					</div>\
				</div>';
		$('#user-children-list').append(child_html);

		// upload user child avatar
		var $button_upload_avatar = $('#button-upload-user-child-avatar-'+ local_id),
			$avatar_placeholder = $('#'+ $button_upload_avatar.attr('data-target')),
			$id_avatar = $('#id-avatar-child-'+ local_id);
		//if ($id_avatar.val() == 0) {
			new AjaxUpload(
				$button_upload_avatar,
				{
					action: $button_upload_avatar.attr('data-action'),
					name: $button_upload_avatar.attr('data-name'),
					onSubmit: function() {
						this.disable();
						$button_upload_avatar.find('.label').hide();
						$.blockUI({
							message: App.blockUI_default_message,
							css: App.blockUI_default_style
						});
					},
					onComplete: function(file, server_response) {
						$.unblockUI();
						var response = JSON.parse(server_response);
						if (response.status == 0) {
							this.disable();
							$button_upload_avatar.find('.label').hide();

							var avatar = response.message;
							// set user avatar
							$id_avatar.val(avatar.id);
							// load image
							var avatar_path = App.dirname(avatar.path) +'/cache/scale_crop/85x85/'+ avatar.name;
							$avatar_placeholder.attr('src', base_url + avatar_path);
						}
						else {
							this.enable();
							$button_upload_avatar.find('.label').show();

							$form_messages.html('<div class="state-error">'+ response.message +'</div>');
						}
					}
				}
			);
		//}
	}
};

var StatusMessage = {
	init: function() {
		var $form_container = $('#form-user-wall-status-add'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('> .messages'),
			$field_message = $form.find('textarea[name="message"]'),
			initial_height = $field_message.height(),
			$wall = $('#wall'),
			message_html = [],
			$message,
			post = {};

		$field_message.elastic();

		$form.submit(function() {
			$.post(
				$form.attr('action'), $form.serialize(),
				function(server_response, status) {
					var response = JSON.parse(server_response);

					if (response.status > 0) {
						$form_messages.html(
							'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
						);
					}
					else { //if (response.status == 0) {
						$form_messages.html('');
						$field_message.val('').css('height', initial_height);

						post = response.message;
						message_html = [
							'<div class="entry entry-'+ (post.type) +'" id="entry-'+ (post.id) +'" style="display: none;">',
								'<div class="entry-meta"><span class="entry-author">'+ (post.user.prenume) +'</span> &ndash; <span class="entry-date">'+ (App.friendly_datetime(post.create_date)) +'</span></div>',
								'<div class="entry-content">'+ (post.message) +'</div>',
							'</div>'
						];
						$message = $(StatusMessage.status_template(post)); //message_html.join(''));
						$wall.prepend($message);
						$message.fadeIn('slow');
						WallPostComment.init($('#entry-'+ (post.id)));
						App.handle_youtube($('#entry-'+ (post.id)));
					}
				},
				'text'
			);

			return false;
		});
	},

	status_template: function(post) {
		var o = [
			'<div class="entry entry-'+ post.type +'" id="entry-'+ post.id +'" data-entry-id="'+ post.id +'">',
				'<span class="entry-author"><a href="'+ base_url +'user/'+ post.user.id +'">'+ post.user.prenume +'</a></span> are ca status <span class="entry-content">'+ post.message +'</span>',
				'<div class="entry-meta">',
					'<span class="entry-date">'+ App.friendly_datetime(post.create_date) +'</span> | <a href="'+ base_url +'status/'+ post.id +'/comment/new" class="link-comment-new">comenteaza &#9654;</a> | <a href="'+ base_url +'status/'+ post.id +'/delete" class="link-comment-delete">sterge &#9654;</a>',
				'</div>',

				'<div class="comments" id="comments-entry-'+ post.id +'">',
					'<div class="comments-list" id="comments-list-'+ post.id +'"></div>',

					'<div class="form form-post-comment" id="form-post-comment-entry-'+ post.id +'">',
						'<div class="messages"></div>',
						'<form action="'+ base_url +'status/'+ post.id +'/comment/post/async" class="styled">',
							'<div class="item textarea">',
								'<span class="field">',
									'<span class="o"><span class="i">',
										'<textarea name="message" rows="1" cols="60" class="elastic"></textarea>',
									'</span></span>',
								'</span>',
							'</div>',
							'<div class="item button">',
								'<span class="field">',
									'<span class="o"><span class="i">',
										'<input type="submit" name="op" value="Trimite" />',
									'</span></span>',
								'</span>',
							'</div>',
						'</form>',
					'</div>',
				'</div>',
			'</div>'
		];
		return o.join('');
	}
};

var WallPostComment = {
	init: function(element) {
		var $wall = $('#wall'),
			$form_container = $('#form-user-wall-status-add'),
			$form = $form_container.find('form'),
			$form_messages = $form_container.find('> .messages');

		$wall.find('textarea.elastic').elastic();

		var elements = element || $wall.find('.entry-status');
		elements.each(function() {
			var $this = $(this),
				$link_comment_new = $this.find('a.link-comment-new'),
				$link_comment_load = $this.find('a.link-comment-load'),
				$form_post_comment_wrapper = $('#form-post-comment-entry-'+ $this.attr('data-entry-id')),
				$form_post_comment = $form_post_comment_wrapper.find('form'),
				$form_post_comment_messages = $form_post_comment_wrapper.find('> .messages'),
				$comments_list = $('#comments-list-'+ $this.attr('data-entry-id')),
				comment = {},
				message_html = [];

			$form_post_comment_wrapper.hide();

			$link_comment_new.click(function() {
				$form_post_comment_wrapper.show();
				App.smooth_scroll_to($form_post_comment_wrapper, 500);
				return false;
			});

			$link_comment_load.one('click', function() {
				var $this = $(this);
				$.get(
					$this.attr('href'),
					function(server_response, status)  {
						var response = JSON.parse(server_response);

						if (response.status > 0) {
							$form_messages.html(
								'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
							);
						}
						else {
							$this.hide();
							var comment_list = response.message;
							message_html = [];
							for (var i = 0, comment_count = comment_list.length; i < comment_count; i++) {
								message_html.push(WallPostComment.comment_template(comment_list[i]));
							}
							$comments_list.html(message_html.join(''));
						}
					},
					'text'
				);

				return false;
			});

			$form_post_comment.submit(function() {
				$.post(
					$form_post_comment.attr('action'), $form_post_comment.serialize(),
					function(server_response, status) {
						var response = JSON.parse(server_response);

						if (response.status > 0) {
							$form_post_comment_messages.html(
								'<div class="'+ (response.status == 0 ? 'state-highlight' : 'state-error') +'">'+ response.message +'</div>'
							);
						}
						else { //if (response.status == 0) {
							$form_post_comment_messages.html('');
							$form_post_comment.find('textarea').val('').css('height', '36px');

							comment = response.message;
							$comments_list.append(WallPostComment.comment_template(comment));
						}
					},
					'text'
				);
				return false;
			});
		});
	},

	comment_template: function(comment) {
		var o = [
			'<div class="comment" id="comment-'+ comment.id +'">',
				'<div class="bkt"><div class="bkb">',
					'<span class="comment-author"><a href="'+ (base_url) +'user/'+ comment.user.id +'">'+ comment.user.prenume +' '+ comment.user.nume +'</a></span>: <span class="comment-message">'+ comment.message +'</span>',
					'<div class="comment-meta">',
						'<span class="comment-date">'+ App.friendly_datetime(comment.create_date) +'</span>',
					'</div>',
				'</div></div>',
			'</div>'
		];
		return o.join('');
	}
};

