He.Bootstrap('He.Framework.Feedback');

He.Framework.Feedback.DrawerContent = '';
He.Framework.Feedback.TitleDrawer = false;

He.Framework.Feedback.Type = {};

var HE_FRAMEWORK_FEEDBACK_NOTICE  = 0;
var HE_FRAMEWORK_FEEDBACK_SUCCESS = 1;
var HE_FRAMEWORK_FEEDBACK_WARNING = 10;
var HE_FRAMEWORK_FEEDBACK_ERROR   = 100;

He.Framework.Feedback.Type[HE_FRAMEWORK_FEEDBACK_NOTICE]  = '';
He.Framework.Feedback.Type[HE_FRAMEWORK_FEEDBACK_SUCCESS] = 'success';
He.Framework.Feedback.Type[HE_FRAMEWORK_FEEDBACK_WARNING] = 'warning';
He.Framework.Feedback.Type[HE_FRAMEWORK_FEEDBACK_ERROR]   = 'error';

He.Framework.Feedback.Type['HE_FRAMEWORK_FEEDBACK_NOTICE']  = HE_FRAMEWORK_FEEDBACK_NOTICE;
He.Framework.Feedback.Type['HE_FRAMEWORK_FEEDBACK_SUCCESS'] = HE_FRAMEWORK_FEEDBACK_SUCCESS;
He.Framework.Feedback.Type['HE_FRAMEWORK_FEEDBACK_WARNING'] = HE_FRAMEWORK_FEEDBACK_WARNING;
He.Framework.Feedback.Type['HE_FRAMEWORK_FEEDBACK_ERROR']   = HE_FRAMEWORK_FEEDBACK_ERROR;

He.Framework.Feedback.RawAppend = function(type,msg,title)
{
	if(!He.IsString(type))
	{
	}

	if(title!='' && He.Framework.Feedback.TitleDrawer==false)
	{
		He.Framework.Feedback.DrawerContent += '<h5>'+title+'</h5>';
		He.Framework.Feedback.TitleDrawer = true;
	}
	He.Framework.Feedback.DrawerContent += "<p class=\"" + He.Framework.Feedback.Type[type] + "\">" + msg + '</p>';
};

He.Framework.Feedback.Append = function(type,msg,title)
{
	He.Framework.Feedback.RawAppend(type,_T(msg),_T(title));
};

He.Framework.Feedback.RawBulk = function()
{
	var bulk = arguments;
	for(var i = 0; i < bulk.length; ++i)
	{
		var feed = bulk[i];
		He.Framework.Feedback.RawAppend(feed.type,feed.msg,feed.title);
	}
	He.Framework.Feedback.Show();
};

He.Framework.Feedback.Bulk = function()
{
	var bulk = arguments;
	for(var i = 0; i < bulk.length; ++i)
	{
		var feed = bulk[i];
		He.Framework.Feedback.Append(feed.type,feed.msg,feed.title);
	}
	He.Framework.Feedback.Show();
};

He.Framework.Feedback.RawMessage = function(type,msg,title)
{
	He.Framework.Feedback.RawAppend(type,msg,title);
	He.Framework.Feedback.Show();
};

He.Framework.Feedback.Message = function(type,msg,title)
{
	He.Framework.Feedback.Append(type,msg,title);
	He.Framework.Feedback.Show();
};

He.Framework.Feedback.Notice = function(msg,title)
{
	He.Framework.Feedback.Message(HE_FRAMEWORK_FEEDBACK_NOTICE,msg,title);
};

He.Framework.Feedback.Success = function(msg,title)
{
	He.Framework.Feedback.Message(HE_FRAMEWORK_FEEDBACK_SUCCESS,msg,title);
};

He.Framework.Feedback.Warning = function(msg,title)
{
	He.Framework.Feedback.Message(HE_FRAMEWORK_FEEDBACK_WARNING,msg,title);
};

He.Framework.Feedback.Error = function(msg,title)
{
	He.Framework.Feedback.Message(HE_FRAMEWORK_FEEDBACK_ERROR,msg,title);
};

He.Framework.Feedback.KeyWatch = function(_evt)
{
	if(_evt.keyCode == Event.KEY_RETURN/* || _evt.keyCode == Event.KEY_ESC*/)
	{
		He.Framework.Feedback.Hide();
		document.stopObserving('keypress',He.Framework.Feedback.KeyWatch);
	}
};

He.Framework.Feedback.Hide = function()
{
	He.Framework.Drawer.Hide();
	document.stopObserving('keypress',He.Framework.Feedback.KeyWatch);
};

He.Framework.Feedback.Show = function()
{
	He.Framework.Feedback.DrawerContent += '<a onclick="He.Framework.Feedback.Hide()" class="button" href="javascript:void(0)"><span>close</span></a>';
	He.Framework.Drawer.Show(He.Framework.Feedback.DrawerContent);
	He.Framework.Feedback.DrawerContent = '';

	document.observe('keypress',He.Framework.Feedback.KeyWatch);
};

