//当window加载时，实例化一个internalMail对象
var internalMail = null;
Event.observe(window,'load',function(){
	internalMail = new InternalMail();
});

/**
 * InternalMail类的定义
 */
var InternalMail = Class.create();
InternalMail.prototype = {
	//初始化方法
	initialize : function(){
		this.maxPage = 1;
		this.nowPage = 1;
		this.setMaxPageAndNowPage();
	},
	//收件箱
	inbox : function(skip,limit){
		
		skip = !skip ? 0 : skip;
		limit = !limit ? 4 : limit;
		
		var url = constants.url() + "/message/receiveMessageBox.action";
		var params = "skip=" + skip + "&limit=" + limit;
		this.internalMailAsynRequest(url,params);
		this.setMaxPageAndNowPage();
        this.initializePaginate(this.maxPage,this.nowPage,"inbox");
        this.updateNotify();
        $("internalMailCount").update($F("unreadCount"));
	},
	//发件箱
	outbox : function(skip,limit){
		
		skip = !skip ? 0 : skip;
		limit = !limit ? 4 : limit;
		
		var url = constants.url() + "/message/sentMessageBox.action";
		var params = "skip=" + skip + "&limit=" + limit;
		this.internalMailAsynRequest(url,params);
		
		this.setMaxPageAndNowPage();
		this.initializePaginate(this.maxPage,this.nowPage,"outbox");
	},
	//清除消息
	clear : function(flag){
		if(flag != 0 && flag != 1){
			flag = 1;
		}
		
		var url = constants.url() + "/message/clearMessage.action";
		var params = "flag=" + flag;
		this.internalMailAsynRequest(url,params);
		
		if(flag == 1){
			this.inbox(0,4);
		}else{
			this.outbox(0,4);
		}
	},
	//删除消息
	drop : function(messageIds,flag){
		flag = (flag == undefined) ? 0 : flag;
		var url = constants.url() + "/message/dropMessage.action";
		var params = "flag=" + flag + "&messageIds=" + messageIds;
		this.internalMailAsynRequest(url,params);
		if(flag == 1){
			this.inbox(0,4);
		}else{
			this.outbox(0,4);
		}
	},
	//阅读消息
	read : function(messageId,flag){
		flag = (flag == undefined) ? 1 : flag;
		var url = constants.url() + "/message/readMessage.action";
		var params = "messageId=" + messageId;
		this.internalMailAsynRequest(url,params);
        //this.updateNotify();
		if(flag == 0){
			$("messageReplyButton").hide();
		}
	},
	//更新屏幕右上角的小提示
	updateNotify : function(){
	    if($F("unreadCount")=="0"||$F("unreadCount")==0||$F("unreadCount")==''){
	        $("msgtip_id") ? $("msgtip_id").hide() : "";
	        $("msgtip_count") ? $("msgtip_count").hide() : "";
	    }else{
	        if($("msgtip_id")){
	        	$("msgtip_id").show();
	        	$("msgtip_id").alt="你有"+$F("unreadCount")+"条信息";
	        } 
	        
	        if($("msgtip_count")){
	        	$("msgtip_count").show();
	        	$("msgtip_count").innerText=$F("unreadCount");
	        }
	           
	    }
	},
	//回复或者写消息
	reply : function(restore,flag,messageError,message){
		flag = (flag == undefined) ? 0 : flag;
		messageError = !messageError ? undefined : messageError;
		restore = !restore ? '' : restore;
		
		var url = constants.url() + "/message/writeMessage.action";
		var params = "restore=" + restore + "&flag=" + flag;
		if(!!messageError){
		 	params += "&messageError=" + messageError;
		}
		this.internalMailAsynRequest(url,params);
		
		$("people").value = "";
		if(!!messageError){
			$("people").value = message.receiverName;
			$("userError").innerHTML = "用户名" + messageError + "不存在";
			$("subject").value = message.subject;
			$("content").innerHTML = message.content;
		}else{
			$("people").value = restore;
		}
	},
	//预览
	preview : function(){
		var previewObj = $("preview");
		var str = $("content").value;
		$("prevSubject").innerHTML = $("subject").value;
		str = str.replace(/\n/g,"<br/>");
		$("prevContent").innerHTML = str;
		previewObj.style["display"] = "block";
		
		return false;  
	},
	
  //发送
	sentMessage : function (containerId){
		
	    var peopleObj = $("people");
	    var subjectObj = $("subject");
	    var contentObj = $("content");
	    
	    if(peopleObj.value==""){
	    	$("userError").innerHTML="请选择你的好友";
	    	return false;
	    }else{
	    	$("userError").innerHTML="";
	    }
	    if(subjectObj.value==""){
	    	$("subjectError").innerHTML="标题不能为空";
	    	return false;
	    }else{
	    	$("subjectError").innerHTML="";	
	    }
	    if(contentObj.value==""){
	    	$("contentError").innerHTML="内容不能为空";
	    	return false;
	    }else{
	    $("contentError").innerHTML="";
	    }
	    
	    var params = $("writeForm").serialize();
	    var url = constants.url() + "/message/sentMessage.action";
	    $("userError").innerHTML = "";
	    
	       var callback = function(request){
	    	
	       if(request.responseText.indexOf("[")>0)
	       {
	       	 $(containerId).update(request.responseText);
	       }
	       
	    	var json = request.responseText.evalJSON();	
	     	if(json.status == "receive"){
	    		this.inbox(0,4);
	    	}else if(json.status == "rewrite"){
	    		this.reply(json.message.receiverName,json.flag,json.messageError,json.message);
	    	}else if(json.status == "sent"){
	    		this.outbox(0,4);
	    	} 
	    	 
	    }
	    
	    //$("containerId").update("loading...");
	     gCommonAsynRequest(url,'',params,callback.bindAsEventListener(this));
	   // gCommonAsynRequest(url,"personalTab",params,callback.bindAsEventListener(this),false);
	},
	//显示好友
	showFriend : function(imgId){
		var friendObj = $("mg_friend");
		var parentLay = friendObj.parentNode;
		parentLay.style["position"] = "relative";
		var photoObj= $(imgId);
		        
		if(photoObj.src == constants.url() + "/v3_view/apps/message/image/zn07.gif"){
	        photoObj.src = constants.url() + "/v3_view/apps/message/image/zn08.gif";
	        friendObj.style["display"] = "block";
		}else{
	        photoObj.src = constants.url() + "/v3_view/apps/message/image/zn07.gif";
	        friendObj.style["display"] = "none";
		}
		return false;
	},
	//选择朋友
	choiceFriend : function(){
		var peopleObj = $("people");  
		var friendObj = $("mg_friend");    
		var photoObj = $("photo");
		var names = [];
		
		

		var folderItems = $A(document.getElementsByName("folderItem"));
		for(var i = 0 ; i < folderItems.length ; i++){
			if($(folderItems[i]).checked){
				names.push($F(folderItems[i]));
			}  
		}
		peopleObj.value = names.uniq().without("").join(",");
		friendObj.style["display"] = "none";
		photoObj.src = constants.url() + "/v3_view/apps/message/image/zn07.gif";
		return false;
	},
	//选中所有的朋友
	choiceAllFriend : function(){
		var folderItems = $A(document.getElementsByName("folderItem"));
		var choice = false;
		
		for(var i = 0 ; i < folderItems.length ; i++){
			if(!$(folderItems[i]).checked){
				choice = true;
			}
		}
		
		if(choice){
			for(var i = 0 ; i < folderItems.length ; i++){
				$(folderItems[i]).checked = true; 
			}
		}else{
			for(var i = 0 ; i < folderItems.length ; i++){
				$(folderItems[i]).checked = false; 
			}
		}
	},
	//设置当前页和总页数
	setMaxPageAndNowPage : function(){
		if(!!$("maxPage")){
			this.maxPage = $F("maxPage");
			this.maxPage = (this.maxPage == 0 ? 1 : this.maxPage);
		}
		if(!!$("nowPage")){
			this.nowPage = $F("nowPage");
			this.nowPage = (this.nowPage == 0 ? 1 : this.nowPage);
		}
	},
	//异步请求
	internalMailAsynRequest : function(url,params){
		gCommonAsynRequest(url,"personalTab",params,false,false);
	},
	//初始化分页操作
	initializePaginate : function(totalPage,currentPage,callback){
		var internalMailPaginate = new VoxPaginate(totalPage,currentPage,4, [this]);
		var pageChangeCallback = function(totalPageCount, currentPageNumber, attachArray){
			var skip = (currentPageNumber - 1 ) * 4;
			skip = parseInt(skip < 0 ? 0 : skip);
			attachArray[0][callback](skip,4);
		};
		
		internalMailPaginate.addPageChangeCallback(pageChangeCallback);
	}
}

function confirmAgree(requestUserId,titleId,acceptable){
	var url = constants.url() + "/user/confirmAddFriend.action";
	var params = {titleId : titleId,acceptable : acceptable,requestUserId:requestUserId};
	// 在自己的发件箱里面是不允许点击的！所以当currentUserId != requestUserId时，说明在自己的
	// 发件箱里面。
	if(currentUserId != requestUserId){
		new Ajax.Request(url,{
			parameters : params,
			asynchronous: true,
			onComplete : function(response){
				var text = response.responseText;
				if(text == "agree"){
					alert("你同意了对方的好友申请，你可以删除此站内消息了.");
					getRightMyFriend();
					getRightFans();
				}else if(text == "noagree"){
					alert("您拒绝了！");
				}else if(text == "error"){
				
				}else if(text == "login"){
					top.location.href = constants.url() + "/user/_login.action";
				}
			}
		});
		return false;
	}
	
}
