var current_nid = -1;

function backToNetworkPage( nid ){
   redirect(PEOPLE_P+'network/info.php?network_id='+nid);
}

function checkNetworkForm(){
   if ($('captcha_text') && $F('captcha_text').replace(/[^0-9]/g, '').length != 4) {
      resetCaptcha(); return false;
   }
   return true;
}

function resetCaptcha(not_error) {
   $('captcha_img').src = PUSH_P+'comment/captcha.php?r='+Math.random();
   $('captcha_text').value = '';
   $('captcha_text').focus();
   if (not_error) return;
   Element.show('captcha_msg');
}

function getNetworkForm(){

   var auth =
      Form.getInputs('network_form','radio','input_auth_type').find(function(radio) { return radio.checked; }).value;

   var args = 'op='+$F('input_act')
            + '&network_name='+encodeURIComponent($F('input_name'))
            + '&network_type='+$F('input_type')
            + '&network_subtype='+$F('input_subtype')
            + '&auth_type='+ auth
            + '&auth_domain='+ encodeURIComponent($F('input_auth_domain'));

   if ($('captcha_text')) args += '&user_code='+encodeURIComponent($F('captcha_text').replace(/[^0-9]/g, ''));
   if ($('input_network_id')) args += '&network_id='+$F('input_network_id');
   return args;
}

function submitNetwork(){
   if( !checkNetworkForm() ) return false;
   showLoading(true);
   
   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: getNetworkForm(),
      onSuccess: function(t) {
         hideLoading();
         rsobj = ej(t.responseText);
         if (rsobj.res == 'error' && rsobj.type == 'error_captcha') {
            resetCaptcha();
         }else if( rsobj.res == 'ok' ){
            backToNetworkPage( rsobj.network_id );
         }
      }
   });
}
// error handle function
function reportError( type ){
   if( type == 'not_login' ){
      showAlertBox('請重新登入');
   }else if( type == 'network_not_exist' ){
      showAlertBox('此網絡不存在');
   }else if( type == 'network_overflow' ){
      showAlertBox('您目前加入此類型社群網路的數量已超過，請參考有關社群網路的說明。');
   }else if( type == 'invalid_network_auth_type' ){
      showAlertBox('錯誤的網絡認證方式');
   }else if( type == 'member_not_exist' ){
      showAlertBox('找不到與您相關的成員資訊');
   }else if( type == 'not_member' ){
      showAlertBox('您不是此網絡的成員');
   }else if( type == 'already_member' ){
      showAlertBox('您已經是此網絡的成員');
   }else if( type == 'invalid_membership_type' ){
      showAlertBox('錯誤的成員類型');
   }else if( type == 'invalid_email' ){
      showAlertBox('您輸入的Email不符合本網絡的認證Email格式');
   }else{
      showAlertBox('未知的系統錯誤');
   }
}

// generic callback fucntion: check error and return to network page
function networkCallBack( t ){
   hideLoading();
   rsobj = ej(t.responseText);
   if (rsobj.res == 'error') {
      reportError( rsobj.type );
   }else{
      backToNetworkPage( rsobj.network_id );
   }
}


// join network
function joinNetwork( nid ){
   if(!checkLoginAndReturn("javascript:joinNetwork("+nid+");"))
      return;
   showLoading(true);
   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: 'op=freeJoin&network_id='+nid,
      onSuccess: networkCallBack
   });
}

// make primary network
function makePrimary( nid ){
   if(!checkLoginAndReturn("javascript:makePrimary("+nid+");"))
      return;
   showLoading(true);
   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: 'op=makePrimary&network_id='+nid,
      onSuccess: function(t) {
         hideLoading();
         rsobj = ej(t.responseText);
         if (rsobj.res == 'error') {
            reportError( rsobj.type );
         }else{
            location.reload();
         }
      }
   });
}

// email auth 
function emailJoinNetwork( nid ){
   if(!checkLoginAndReturn("javascript:emailJoinNetwork("+nid+");"))
      return;

   current_nid = nid;
   getEmailJoinBox( false );
   funpDlg.show('emailJoinBox');
}

function doEmailJoin( isResend ){
   var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
   if( $F('input_auth_email') == '' || !$('input_auth_email').value.match(filter)){
      $('auth_mail_msg').innerHTML = '請輸入正確的電子郵件信箱';
      Element.show('auth_mail_msg');
      return false;
   }

   showLoading(true);

   nid = current_nid;
   current_nid = -1;
   args = 'network_id='+nid+'&email='+encodeURIComponent($F('input_auth_email'));
   if( isResend )
      args += '&op=resendAuthEmail';
   else
      args += '&op=emailJoin';


   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: args,
      onSuccess: function(t) {
         hideLoading();
         rsobj = ej(t.responseText);
         if (rsobj.res == 'error') {
            funpDlg.close();
            reportError( rsobj.type );
         }else{
            funpDlg.close();
            showAlertBox('請至E-mail信箱收取認證信，完成加入手續。');
            backToNetworkPage( rsobj.network_id );
         }
      }
   });
}

function getEmailJoinBox( isResend ){
   pd = $('emailJoinBox');
   if(pd) return pd;
   
   var msg = '';

   if( isResend ){
     msg += staticDesc('以下是您曾輸入的認證信箱，您可以修改信箱或是直接重新寄送認證信。。')
          + staticField('E-mail','<input type="text" id="input_auth_email" name="input_auth_email" value="'
          + $F('current_auth_email')+'">');
   }else{
     msg += staticDesc('您即將申請加入這個網絡，請輸入由此網絡所核發的E-mail作為認證。')
          + staticField('E-mail','<input type="text" id="input_auth_email" name="input_auth_email">');
   }
   msg +=   staticDesc('<span id="auth_mail_msg" class="errorMsg" style="display:none"></span>');

   btns = 
   '<input type="button" class="positive" id="trs_submitBtn" value="確認" onclick="doEmailJoin('+isResend+')"> '+
   '<input type="button" class="negtive" id="trs_cancelBtn" onclick="funpDlg.close()" value="取消">';

   str = getDialogBox('emailJoinBox', 0, msg, btns);
   new Insertion.Bottom(document.body, str);

   return $('emailJoinBox');
}

// resend auth email
function resendAuthEmail( nid ){
   if(!checkLoginAndReturn("javascript:resendAuthEmail("+nid+");"))
      return;

   current_nid = nid;
   getEmailJoinBox( true );
   funpDlg.show('emailJoinBox');
}

// leave network
function leaveNetwork( nid ){
   if(!checkLoginAndReturn("javascript:leaveNetwork("+nid+");"))
      return;
   new Dialog()
      .setTitle('離開社群網路')
      .setBody('您確定要離開這個社群網路嗎？若這是您的主要社群網路，請記得重新設定。')
      .setButtons(Dialog.OK_AND_CANCEL)
      .setHandler('doLeaveNetwork('+nid+')')
      .setModal(true)
      .show();
}
function doLeaveNetwork( nid ){
   showLoading(true);
   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: 'op=leave&network_id='+nid,
      onSuccess: networkCallBack
   });
}


function updateEmailAuth( op, nid, token ){
   if(!checkLoginAndReturn("javascript:updateEmailAuth('"+op+"',"+nid+",'"+token+"');"))
      return;

   if( op == 'cancelEmailAuth' )
      funpDlg.close();

   showLoading(true);
   new Ajax.Request(PEOPLE_P+'network/network.ajax.php', {
      postBody: 'op='+op+'&network_id='+nid+'&token='+token,
      onSuccess: networkCallBack
   });
}

function confirmEmailAuth( nid, token ){
   updateEmailAuth( 'confirmEmailAuth', nid, token );
}
function cancelEmailAuth( nid ){
   if(!checkLoginAndReturn("javascript:cancelEmailAuth("+nid+");"))
      return;
   getConfirmBox('您確定要取消加入這個網絡嗎？' ,10,"updateEmailAuth('cancelEmailAuth',"+nid+",'')");
   funpDlg.show('confirmBox');
}

