//测试
function testSelectFriend()
{
	selectFun(function(emails){
		var obj=document.getElementById("friendsemail");
		var val =obj.value;
		if(val!=null&&val!="")
		   obj.value=val+";"+emails;
		else
		   obj.value=emails;   
	});
}

//好友选择
var userId = "";//用户ID
var key="";//用户KEY
var friendselectmv;//选择好友model
var friendsemail; //好友email对象 全局变量 为了后面取选择好友对应的邮箱
var InvalidEmail="";//无效邮件地址
var selectCallBackFun=null;//选择后的回调
function selectFun(selectCallBack)
{
	selectCallBackFun=selectCallBack;
	friendselect();
}
frd={
	init:function(){
		var infoObj = new dpmInfo();
		infoObj.addInfo({
			'zh-cn': {
				"fr0":'未分组好友',
				"fr1":'可选好友',
                "fr2":'添加',
                "fr3":'删除',
                "fr4":'全添加',
				"fr5":'全删除',
				"fr6":'已选好友',
				"fr8":'按住Ctrl键可以多选,shift键可选择范围，双击可以直接添加',
				"fr9":"增加收件者：<font color='red'>(您可以一次输入多个Email，输入多个 Email 请用「英文分号;」隔开)</font>",
				"fr10":'确定',
				"fr11":'取消'
			},
			'en': {
				"fr0":'Ungrouped contacts',
				"fr1":'All your contacts',
                "fr2":'Add',
                "fr3":'Delete',
                "fr4":'Add all',
				"fr5":'Delete all',
				"fr6":'Selected contacts',
				"fr8":"Press\"Ctrl\" to select multiple contacts;press \"shift\"to select an area;double click the contact to add it directly.",
				"fr9":"<font color='red'>Separate multiple e-mail addresses with semi-colons.</font>",
				"fr10":'Send',
				"fr11":'Cancel'
			}
		});	
		return infoObj;
	}
}
frd.obj=frd.init();
//选择好友model
function friendselect()
{
	//得用户
	userId=getCookie("userId");
	key=getCookie("handlerKey");
	if(userId==null||userId=="")
	{
	   //定向登录
	   friendselectLogin("没有用户信息！您是否要重新登录？");
	   return;
	}
	friendsemail=null;
	friendsemail=new Object();
	var available_width=document.body.clientWidth;
	var left=available_width/2-530/2;
	var available_height=document.body.clientHeight;
	var top=available_height/2-510/2;
	if(top<0)top=50;
	if(friendselectmv) {
		friendselectmv.modalShow();
    } else {
        friendselectmv=new modalView();
        var modalHtml = "<div id='fselectcom_bjdiv' style='display:none;'></div>";
        modalHtml += "<div class='modalDialog_contentDiv' style='width:530px;height:410px;' id='fselectcom_poll_body' style='display:none;'>";
        modalHtml += "<table  style='font-size:12px;' align=center>";
        //内容
        modalHtml += "<tr>" +
        		"<td>"+
        		"<table style='font-size:12px;'>"+
        		"<tr><td><select id='fsgroup' name='fsgroup' onchange='changegroup()' style='width:200px;'></select></td></tr>"+
        		"<tr>"+
        		"  <td>"+frd.obj.getInfo("fr1")+"：<br><select id='fsoutgroup' name='fsoutgroup' size='15' style='width:210px;height:200px' multiple ondblclick='moveSelection(true)'></select></td>"+
        		"  <td align='left' width='60'>"+
		        "	<input type='button'  onclick='moveSelection(true)' value='"+frd.obj.getInfo("fr2")+"'/><br/><br/>"+
				"	<input type='button'  onClick='moveSelection(false)' value='"+frd.obj.getInfo("fr3")+"'/><br/><br/>"+
				"	<input type='button'  onclick='moveAll(true)'  value='"+frd.obj.getInfo("fr4")+" '/><br/><br/>"+
				"	<input type='button'  onclick='moveAll(false)' value='"+frd.obj.getInfo("fr5")+"'/><br/>"+
        		"  </td>"+
        		"  <td>"+frd.obj.getInfo("fr6")+"：<br><select id='fsingroup' name='fsingroup' size='15' style='width:210px;height:200px' multiple ondblclick='moveSelection(false)'></select></td>"+
        		"</tr>"+
        		"<tr><td colspan=3><font color='gray'>"+frd.obj.getInfo("fr8")+"</font></td></tr>"+
        		"<tr><td colspan=3>"+frd.obj.getInfo("fr9")+"</td></tr>"+
        		"<tr><td colspan=3><textarea id='fselectadd' style='width:510px;height:50px'></textarea></td></tr>"+
        		"<tr><td colspan=3 align=center><input type='button' id='fselectTo'  value='"+frd.obj.getInfo("fr10")+"' /><input type='button'  id='fselectCancel' value='"+frd.obj.getInfo("fr11")+"'/></td></tr>"+
        		"</table>"+
        		"</td>"+
        		"</tr>";
        modalHtml += "</table></div>";
        document.getElementById("selectfrienddiv").innerHTML = modalHtml;   
        friendselectmv.setCfg(
        	{contentTop: top+"px",
        	 contentLeft: left+"px",
        	 scroll:true,
        	 transparentDivs:document.getElementById("fselectcom_bjdiv"),
        	 contentDivs:document.getElementById("fselectcom_poll_body")
        	}
        );
        document.getElementById("fselectTo").onclick = function() {
        	//推荐好友
        	friendselectTo();
        }
        document.getElementById("fselectCancel").onclick = function() {
            friendselectmv.modalClose();
        }
        friendselectmv.modalShow();
    }
    //添加组名
    fsgetusergroup("fsgroup");	
}
///////////////////////////////////选择组事件//////////////////////////////////////////
function changegroup()
{
	if(userId==null||userId=="")
	  return;
	var group = document.getElementById("fsgroup").value;
	var jsonrpc = new JSONRpcClient("/cc/JSON-RPC");
    var ps = {userId:userId,key:key,group:group,method:"R"};
    var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "FriendHandle"}, "javaClass": "java.util.HashMap"};
	//var typedata=jsonrpc.BH.handle([req])[0];
    jsonrpc.BH.handle(function(responseData, e){
		if(e != null)
		{
			if(e.message=="nouser")
			   friendselectLogin("用户验证失败， 请重新登录！");
			else
			   alert(e.message);
			return;
	}
	else {
		    var typedata=responseData[0];
		    var len =typedata.length;
		    var panelHtml="";
		    var selectobj = document.getElementById("fsoutgroup");
		    selectobj.length=0;//清空选择项
		    for(var i=0;i<len;i++)
		    {
		 	   if(typedata[i]==null||typedata[i].action=="D")
		 			 continue;
		 	   var dataobj=typedata[i].items.map;
		 	   var id=dataobj["id"]==null?null:dataobj["id"];
		 	   var friend=dataobj["friend"]==null?"":dataobj["friend"];
		 	   var email=dataobj["email"]==null?"":dataobj["email"];
		 	   var optiontext=friend+"<"+email+">";
		       friendsemail[id]=email;//添加好友email对象
		       var option= new Option(optiontext,id);
		       selectobj.options.add(option); 
		    }
		}
	}, [req]);
    

}
/////////////////////////////////////移动选择用户事件////////////////////////////////
//args true 添加  false 删除
function moveSelection(args)
{
	var outgroup = document.getElementById("fsoutgroup");
	var ingroup = document.getElementById("fsingroup");
	if(args)//添加
	{
	    for(var i=0;i<outgroup.length;i++){   
	        if(outgroup.options[i].selected){
	        	var val =outgroup.options[i].value;
	        	//判断已选择的有没有
	        	if(!isSelect(val))
	        	{
	        		 var option= new Option(outgroup.options[i].text,val);
	        		 ingroup.options.add(option); 
	        	}
	        }
	    }
	}
	else//删除
	{
	    //倒序删除  
	    for(var i=ingroup.length-1;i>=0;i--)  
	    {  
	        if(ingroup.options[i].selected)  
	            ingroup.remove(i);  
	    }  
	}
}
//判断好友有没有选择过
function isSelect(val)
{
	var isselect =false;
	var ingroup = document.getElementById("fsingroup");
	for(var i=0;i<ingroup.length;i++){   
    	var selectval=ingroup.options[i].value;
    	if(selectval==val)
    	{
    	   isselect=true;
    	   break;
    	}
    }
    return isselect;
}
//全删全加args true 添加  false 删除
function moveAll(args)
{
	var outgroup = document.getElementById("fsoutgroup");
	var ingroup = document.getElementById("fsingroup");
	if(args)//添加
	{
	    for(var i=0;i<outgroup.length;i++){   
        	var val =outgroup.options[i].value;
        	//判断已选择的有没有
        	if(!isSelect(val))
        	{
        		 var option= new Option(outgroup.options[i].text,val);
        		 ingroup.options.add(option); 
        	}
	    }
	}
	else//删除
	{
	    //倒序删除  
	    for(var i=ingroup.length-1;i>=0;i--)  
	    {  
	       ingroup.remove(i);  
	    }  
	}
}
////////////////////////////////////////选择好友动作///////////////////////////////////////
function friendselectTo()
{
	var emails = getEmails();
	if(InvalidEmail!="")
	{
		if(!confirm("检查发现有无效邮箱地址是否要继续？\n无效邮件地址信息："+InvalidEmail))
		  return
	}
	
	if(selectCallBackFun!=null)
	{
		selectCallBackFun(emails);
		friendselectmv.modalClose();
	}
}
//////////////////////////////////辅助功能函数//////////////////////////////////////////
//得到email
function getEmails(){
	var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var email="";
	InvalidEmail="";
	var ingroup = document.getElementById("fsingroup");
    for(var i=0;i<ingroup.length;i++){   
    	var val =ingroup.options[i].value;
    	val=friendsemail[val];
    	if(re.test(val)){
			if(email=="")
			   email=val;
			else
			   email+=";"+val;  
		}else{
			if(InvalidEmail=="")
			   InvalidEmail=val;
			else
			   InvalidEmail+=";"+val; 
		}
    }	
	var selfadd=document.getElementById("fselectadd").value;
    if(selfadd!=null&&selfadd!="")
    {
    	var addemail = selfadd.split(";");
    	for(var i=0;i<addemail.length;i++){
			var val =addemail[i];
			if(re.test(val)){
				if(email=="")
				   email=val;
				else
				   email+=";"+val; 
			}else{
				if(InvalidEmail=="")
				   InvalidEmail=val;
				else
				   InvalidEmail+=";"+val; 
			}
	    }
    }
	return email;
}
//得到用户组 参数为下拉框的ID
function fsgetusergroup(selectid)
{
	if(userId==null||userId=="")
	  return;
	var jsonrpc = new JSONRpcClient("/cc/JSON-RPC");
	var req={"map":{"psMap":{map:{method :"G",hql:"from dao.hb.CeAddressgroup AS A where A.userid='"+userId+"' order by id ",
	"pss" : [["id","grouping"]],
	"cns" : ["dao.hb.CeAddressgroup"]},"javaClass":"java.util.HashMap"}},"javaClass":"java.util.HashMap"};
	typedata=jsonrpc.BH.handle([req])[0];
	//更新页面类别
    var selectobj = document.getElementById(selectid);
    selectobj.length=0;//清空选择项
    var objOption = new Option(frd.obj.getInfo("fr0"),'');
    selectobj.options.add(objOption); 
    var len =typedata.length;
    for(var i=0;i<len;i++)
    {
 	   if(typedata[i]==null||typedata[i].action=="D")
 			 continue;
 		   var dataobj=typedata[i].items.map;
 	   var id=dataobj["id"]==null?null:dataobj["id"];
 	   var grouping=dataobj["grouping"]==null?null:dataobj["grouping"];
       var option= new Option(grouping,id);
       selectobj.options.add(option); 
    }
    //默认进来做一次加载
    changegroup();
}
//定向登录
function friendselectLogin(msg)
{
	if(confirm(msg)){
		//调用登录页面
		showModalLogin(function(){
			//刷新组件
			friendselect();				
		});
	}	
}
