/**
 **/
(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 sEnvelopeId = '';

    $.ajax({
            type: "POST",
            url: '/_json_/webmail?timestamp=' + Number(new Date()),
            dataType: "json",
						data:null,
            beforeSend: function(){},
						success: function(json){
							if(empty(json)){
								return false;
							}
							$.each(json,function(i,v){
								sEnvelopeId = oEnvelopesIds[i];
								if(Number(v.count)>0){
									startBlinking(sEnvelopeId);
									$('#'+i+'_count').show();
									$('#'+i+'_count').html(v.count);
									oEnvelopes[i].invoke = 0;
									//hack especially made for mr.P - if there is any pending chat conversation, automaticly open overlay list
									if(sOpenAutomaticlyFor.indexOf(i)>0 && sOpened=='' && bOpenedAutomaticly==false){
										bOpenedAutomaticly=true;
										$.envelope.getUnreadedMessages(i);
									}
								}
								else{
									if(Number($('#'+i+'_count').html())>0){
										hideMsgContent(i);
										if(oBlinking[sEnvelopeId]===true){
											stopBlinking(sEnvelopeId);
										}
										$('#'+i+'_count').html('0');
										$('#'+i+'_count').hide();
										$('#'+oEnvelopesIds[i]).removeClass('selected');
									}
								}							
								$('#'+i+'_available').html(v.available);
							});


						},
            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:5,
							mode:sMode
						},
            beforeSend: function(){},
						success: function(json){
						if(empty(json)){
							return false;
						}
						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.available,
											more_link:v.link,
											section_id:v.id
										});

										if(Number(v.count)==0){
											$('#'+sMode+'_count').html('0');
											$('#'+sMode+'_count').hide();
										}

										iSectionId = v.id;
										
										if(!empty(v.data)){
										$.each(v.data,function(ii,msgs){
												if(!empty(msgs.supreme_type)){
													contentTpl = $.template($('#'+msgs.supreme_type+'_tpl').html());
												}
												else{
													contentTpl = $.template($('#'+v.type+'_tpl').html());
												}
												$('#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
												});

												$('#container_content_'+iSectionId+' a.message_link').attr({id:'message_link_'+msgs.id});

												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,iDirId,iMsgType,sCallback){
		$.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 = sType == 'not' ? 'Uzytkownik został zaakceptowany' : 'Zaproszenie zostało zaakceptowane.';
						break;
						case 'decline':
							var msg = sType == 'not' ? 'Użytkownik został odrzucony' : 'Zaproszenie zostało odrzucone.';
						break;
					}
					if(sType=='not'){
						$.envelope.deleteMessage(sMode,iMessageId,sType,iDirId,iMsgType,sCallback);
					}
					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,sCallback){
		$.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){
					bOpenedAutomaticly=false
					if(!empty(sCallback)){
						eval(sCallback);
					}
					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,iDir,iMsgType,sCallback){
					$$.invitationMessageAction(sMode,iMessageId,sType,iDir,iMsgType,sCallback);
				},
				deleteMessage : function(sMode,iMessageId,sType,iDir,iMsgType,sCallback){
					$$.deleteMessage(sMode,iMessageId,sType,iDir,iMsgType,sCallback);
				}
    }
});

})(jQuery);

