/**
 **/

(function($){

var $$;

$$ = $.fn.envelope = function($options) {

    // extend the options
	var $opts = $.extend($$.defaults, $options);

    for (var i in $opts) {
		if (i) { 
			$.envelope[i]  = $opts[i];
		}
	}

};


$$.checkStatus = function(){

		var oEnvelopesIds = {
			msg:'webmail',
			not:'notification',
			cht:'retalk'
		};
		var sEnvelopeId = '';

    $.ajax({
            type: "POST",
            url: '/_json_/webmail?timestamp=' + Number(new Date()),
            dataType: "json",
						data:null,
            beforeSend: function(){},
						success: function(json){
						$.each(json,function(i,v){
								sEnvelopeId = oEnvelopesIds[i];
								if(Number(v)>0){
									startBlinking(sEnvelopeId);
									$('#'+oEnvelopesIds[i]).addClass('selected');
									$('#'+i+'_count').show();
									$('#'+i+'_count').html(v);
									oEnvelopes[i].invoke = 0;
								}
								else{
									if(oBlinking[sEnvelopeId]===true){
										stopBlinking(sEnvelopeId);
									}
									$('#'+i+'_count').hide();
									$('#'+oEnvelopesIds[i]).removeClass('selected');
								}								
							});
						},
            error: function(XMLHttpRequest, textStatus, errorThrown) {}

         });

};

$$.getUnreadedMessages = function(sMode){
	var iSectionId;
	var contentTpl;
    $.ajax({
            type: "POST",
            url: '/_json_/webmail?timestamp=' + Number(new Date()),
            dataType: "json",
						data:{
							action:'get_unreaded',
							limit:3,
							mode:sMode
						},
            beforeSend: function(){},
						success: function(json){
						if(!empty(json.sections)){
							oEnvelopes[sMode].con.html('');
							var containerTpl = $.template($('#msg_container_tpl').html());
								$.each(json.sections,function(i,v){
										oEnvelopes[sMode].con.append(containerTpl,{
											section_name:v.name,
											count:v.count,
											more_link:v.link,
											section_id:v.id
										});
										
										iSectionId = v.id;
										contentTpl = $.template($('#'+v.type+'_tpl').html());
										
										if(!empty(v.data)){
										$.each(v.data,function(ii,msgs){
												$('#container_content_'+iSectionId).append(contentTpl,{
													id:msgs.id,
													thumb_width:msgs.thumb.width,
													thumb_height:msgs.thumb.height,
													thumb_path:msgs.thumb.path,
													link:msgs.link,
													content:msgs.content,
													sender_name:msgs.sender_name
												});
												oMsgData[sMode+msgs.id] = {
													folder:msgs.folder_id,
													type_id:msgs.type_id,
													mode:sMode,
													link : msgs.msg_link,
													direct:msgs.direct
													};
												
												$('#'+v.type+'_content_row_'+msgs.id).css({cursor:'pointer'});
											});
										}
								});
								appendMsgContent(sMode);
							}
							else{
								oEnvelopes[sMode].con.html('');
								oEnvelopes[sMode].con.hide();
							}
						},
            error: function(XMLHttpRequest, textStatus, errorThrown) {}

         });
};

	$$.invitationMessageAction = function(sMode,iMessageId,sType){
		$.ajax({
			
			type: "POST",
			dataType: "json",
			url: '/_json_/user_actions?timestamp=' + Number(new Date()),
			data: {
				'action' 			: sMode+'_invitation_message',
				'object_id'	: iMessageId
			},

			beforeSend: function(){
				 showGlobalLoader();
			},
					
			success: function (json){

				hideGlobalLoader();

				if(json.status==1){
					switch(sMode){
						case 'accept':
							var msg = 'Zaproszenie zostało zaakceptowane.';
						break;
						case 'decline':
							var msg = 'Zaproszenie zostało odrzucone.';
						break;
					}
					oEnvelopes[sType].invoke = 0;
					$.envelope.checkStatus();
					$.envelope.getUnreadedMessages(sType);
				}
				else{
					var msg = 'Operacja nie zakończyła się sukcesem.';			
				}
			}
		});
	}

	$$.deleteMessage = function(sMode,iMessageId,sType,iDirId,iTypeId){
		$.ajax({
			
			type: "POST",
			dataType: "json",
			url: '/_json_/webmail?timestamp=' + Number(new Date()),
			data: {
				'action' 			: 'message_delete',
				'sIds2Action'	: iMessageId,
				'dir'					:	iDirId,
				'type'				:	iTypeId
			},

			beforeSend: function(){
				 showGlobalLoader();
			},
					
			success: function (json){

				hideGlobalLoader();
				if(json.status==1){
					oEnvelopes[sType].invoke = 0;
					$.envelope.checkStatus();
					$.envelope.getUnreadedMessages(sType);
				}
				else{
					var msg = 'Operacja nie zakończyła się sukcesem.';			
				}
			}
		});
	}

/**
 *
 * @name $$.makeExtraParams
 *
 * @desc ustawianie parametrów extra
 *
 *
**/
$$.makeExtraParams = function(){
    var extraParams = {};

    $.each($$.defaults.oExtraParams, function(key, param) {
        extraParams[key] = typeof param == "function" ? param() : param;
    });

    return extraParams;
};



/**
 *
 * @name $$.defaults
 *
 * @desc Domyslne zmienne dla obiektu
 *
 *
**/

$$.defaults = {
    oExtraParams  : {}
};


/**
 *
 * @name jQuery.comments
 *
 * @desc The global galleria object holds four constant variables and four public methods:
 *       $.comments.activate(_src) = displays an image from _src in the galleria container.
  *
**/

$.extend({envelope : {
        checkStatus : function(){
            $$.checkStatus();
				},
        getUnreadedMessages : function(sMode){
            $$.getUnreadedMessages(sMode);
				},
 	      invitationMessageAction : function(sMode,iMessageId,sType){
					$$.invitationMessageAction(sMode,iMessageId,sType);
				},
				deleteMessage : function(sMode,iMessageId,sType,iDir,iMsgType){
					$$.deleteMessage(sMode,iMessageId,sType,iDir,iMsgType);
				}
    }
});

})(jQuery);
