/**
  * カスタム文字を有効・無効にする
  * @param input radio 「生成するリンクの形式」ラジオボタン
  */
function enableCustom(radio) {
  if(radio.value=='custom')
    document.forms[0].customUrl.disabled = false;
  else
    document.forms[0].customUrl.disabled = true;
}
/**
  * メールアドレスを有効・無効にする
  * @param input radio 「リンククリック時」ラジオボタン
  */
function enableMail(radio) {
  if(radio.value=='yes')
    document.forms[0].emailAddr.disabled = false;
  else
    document.forms[0].emailAddr.disabled = true;
}

/**
  * カスタム文字に表示されるURLを調整
  * @param input url リンクを生成したいURL
  */
function rewriteCustom(url) {
  var url_arr;
  if(url_arr = url.value.match(/^(http:\/\/|https:\/\/)(www.|)([^\/]+)(.*)$/)) {
    var domain_name = url_arr[3];
    var rest_str = url_arr[4].replace(/^\/+/, '');
    var slash_after_domain = '/';
    if(rest_str=='')
      slash_after_domain = '';
    document.getElementById('domain_name').innerHTML =
                                          domain_name + slash_after_domain;
    document.forms[0].customUrl.value = rest_str;
  }
  else {
    document.getElementById('domain_name').innerHTML = 'domain_name/';
    document.forms[0].customUrl.value = '';
  }
}

/**
  * URLの有無を確認してSubmit
  */
function checkAndSubmit() {
  
  var url = document.forms[0].url;
  if(url.value=='') {
    //URLエラー処理
    urlError('URLは必ず入力してください。');
    return false;
  }
  if(!url.value.match(/^https?:\/\//)) {
    //URLエラー処理
    urlError('URLはhttp、もしくはhttpsから正しく入力してください。');
    return false;
  }
  //何をもって正しいURLかは定義が難しいところではあるが・・・
  if(!url.value.match(/^https?:\/\/(www\.)?(?!www).{3,}\..{2,}.*/)) {
    //URLエラー処理
    urlError('URLの内容に問題があります。');
    return false;
  }
  
  //メールアドレスチェック
  if(document.forms[0].emailOnClicked[1].checked) {
    
    var emailAddr = document.forms[0].emailAddr;
    
    if(emailAddr.value=='') {
      //メールアドレスエラー処理
      optionInputError(emailAddr, '「メールでお知らせ」の場合はメールアドレスを必ず入力してください。');
      return false;
    }
    //何をもって正しいメールアドレスかの定義も同じく難しいところではあるが・・・
    if(!emailAddr.value.match(/^.+@.{3,}\..{2,}$/)) {
      //メールアドレスエラー処理
      optionInputError(emailAddr, 'メールアドレスの書式に問題があります。');
      return false;
    }
  }
  
  //サブミット
  submit();
  
  /**
    * URLエラー処理
    */
  function urlError(ErrMsg) {
    alert(ErrMsg);
    accentInput(url);
  }
  
  /**
    * オプションテキストエラー処理
    */
  function optionInputError(input, ErrMsg) {
    alert(ErrMsg);
    accentInput(input);
    if(document.forms[0].option_status.value=='closed')
      openOrCloseOption();
  }
  
  /**
    * サブミット
    */
  function submit() {
    document.forms[0].submitBtn.disabled = true;
    document.forms[0].submitBtn2.disabled = true;
    document.forms[0].submit();
  }
}

/**
  * エラー時、入力項目にアクセントをつける
  * @param input input 入力項目
  */
function accentInput(input) {
  input.style.borderStyle = 'solid';
  input.style.borderWidth = '3px';
  input.style.borderColor = '#E00';
  input.style.backgroundColor = '#EDD';
}

/**
  * 入力項目を通常に戻す
  * @param input input 入力項目
  */
function initializeInput(input) {
  input.style.borderStyle = '';
  input.style.borderWidth = '';
  input.style.borderColor = '';
  input.style.backgroundColor = '';
}

/**
  * オプションを表示、もしくは非表示にします
  */
function openOrCloseOption() {
  var option_status = document.forms[0].option_status.value;
  var option_status_new;
  if(option_status=='closed') {
    Effect.BlindDown('option');
    option_status_new='opened';
  }
  else {
    Effect.BlindUp('option');
    option_status_new='closed';
  }
  
  document.forms[0].option_status.value = option_status_new;
}