function callAPI(nodeId, url, charset) {
  var scriptNode = document.getElementById(nodeId);
  if (scriptNode) {
    document.getElementsByTagName('head')[0].removeChild(scriptNode);
  }
  var newScript  = document.createElement('script');
  newScript.id   = nodeId;
  newScript.src  = url;
  newScript.type = "text/javascript";
  if (charset) {
    newScript.charset = charset;
  }
  var headNode = document.getElementsByTagName('head')[0];
  headNode.appendChild(newScript);
}

function offSetL(EID) {
  var setParent = document.getElementById(EID);
  var offLeft   = document.getElementById(EID).offsetLeft;

  do {
    setParent = setParent.offsetParent;
    offLeft   = offLeft + setParent.offsetLeft;
  } while(setParent.tagName.toUpperCase() != "BODY" && setParent.tagName.toUpperCase() != "HTML");
  offLeft = offLeft + document.getElementById(EID).offsetWidth - 180;

  return offLeft;
}

function offSetT(EID) {
  var setParent = document.getElementById(EID);
  var offTop   = document.getElementById(EID).offsetTop;

  do {
    setParent = setParent.offsetParent;
    offTop   = offTop + setParent.offsetTop;
  } while(setParent.tagName.toUpperCase() != "BODY" && setParent.tagName.toUpperCase() != "HTML");
  offTop  = offTop + document.getElementById(EID).offsetHeight + 2;

  return offTop;
}

function fukidashi(COUNTRY) {
  var fukidashi = "";
  var linkURL   = "";

  if (COUNTRY == "kaigai") {
    linkURL = "https://aps1.travel.rakuten.co.jp/portal/my/prv_page.first?f_tab=2&f_fav_tab_flg=kaigai";
  } else {
    linkURL = "https://aps1.travel.rakuten.co.jp/portal/my/prv_page.first?f_tab=2";
  }

  fukidashi  = "<div class=\"hotelFavorite\">";
  fukidashi +=   "<p id=\"hotelFavoriteMessage\">";
  fukidashi +=   "お気に入りに追加しました。";
  fukidashi +=   "</p>";
  fukidashi +=   "<a href=\"javascript:onclick=fukidashiClose();\">";
  fukidashi +=   "<img src=\"http://img.travel.rakuten.co.jp/share/favorite/images/favorite_btClose.gif\" alt=\"閉じる\" width=\"12\" height=\"12\" id=\"hotelFavoriteClose\">";
  fukidashi +=   "</a>";
  fukidashi +=   "<p id=\"hotelFavoriteLink\">";
  fukidashi +=     "<img src=\"http://img.travel.rakuten.co.jp/share/favorite/images/favorite_arrow.gif\" alt=\"\" width=\"4\" height=\"7\">";
  fukidashi +=     "<a href=\"" + linkURL + "\" target=\"_blank\">";
  fukidashi +=     "お気に入り一覧へ";
  fukidashi +=     "</a>";
  fukidashi +=   "</p>";
  fukidashi += "</div>";

  return fukidashi;
}

function fukidashiClose(){
  elements = document.getElementsByTagName("embed");
  for (i = 0; i < elements.length; i++) {
    elements[i].style.visibility = "";
  }
  elements = document.getElementsByTagName("object");
  for (i = 0; i < elements.length; i++) {
    elements[i].style.visibility = "";
  }
  document.getElementById("clip_comp").style.visibility = "hidden";
}

function registered(COUNTRY) {
  var registered = "";
  var linkURL    = "";

  if (COUNTRY == "kaigai") {
    linkURL = "https://aps1.travel.rakuten.co.jp/portal/my/prv_page.first?f_tab=2&f_fav_tab_flg=kaigai";
  } else {
    linkURL = "https://aps1.travel.rakuten.co.jp/portal/my/prv_page.first?f_tab=2";
  }

  registered  = "";
  registered += "<a href=\"" + linkURL + "\" target=\"_blank\">お気に入りに追加されています</a>";

  return registered;
}

function registers(EID,MODE,HOTEL,CID,COUNTRY) {
  var registers    = "";
  var clipTarget   = "";
  if (MODE == "PLAN") {
    clipTarget = "宿泊プラン";
  }
  registers  = "";
  if(typeof CID != "undefined" && CID != null && CID != "") {
    registers += "<a href=\"javascript:onClick=favorite('" + EID + "','CLIP','" + MODE + "'," + HOTEL + "," + CID + ",null,'" + COUNTRY + "')\">";
  } else {
    registers += "<a href=\"javascript:onClick=favorite('" + EID + "','CLIP','" + MODE + "'," + HOTEL + ",null,null,'" + COUNTRY + "')\">";
  }
  if (MODE == "HOTEL") {
    registers += clipTarget + "お気に入りに追加";
  } else {
    registers += clipTarget + "をお気に入りに追加";
  }
  registers += "</a>";

  return registers;
}

function login(EID,MODE,HOTEL,CID,CALL) {

  var clipTarget = "";
  var login      = "";

  for(var cnt=5; cnt<=arguments.length; cnt+=1){
    if(typeof arguments[cnt] != "undefined" && arguments[cnt] != null) {
      arguments[cnt] = arguments[cnt];
    } else {
      arguments[cnt] = "";
    }
  }

  if (MODE == "PLAN") {
    clipTarget = "宿泊プラン";
  }

  login  =  "";
  if (CALL == "KEYWORD") {
    login += "<a href=\"https://aps1.travel.rakuten.co.jp/portal/my/fun_favorite.login_kw";
    login += "?f_teikei="         + arguments[5];
    login += "&f_query="          + arguments[6];
    login += "&f_next="           + arguments[7];
    login += "&f_max="            + arguments[8];
    login += "&f_area="           + arguments[9];
    login += "&f_chu="            + arguments[10];
    login += "&f_shou="           + arguments[11];
    login += "&f_category="       + arguments[12];
    login += "&f_sort="           + arguments[13];
    login += "&f_flg="            + arguments[14];
    login += "&f_cd_application=" + arguments[15];
    login += "&f_cd_chain="       + arguments[16];
  } else {
    login += "<a href=\"https://aps1.travel.rakuten.co.jp/portal/my/fun_favorite.login";
  }
  if (CALL == "INFO") {
    login += "?f_teikei="      + arguments[5];
    login += "&send="          + arguments[6];
    login += "&f_tscm_flg="    + arguments[7];
    login += "&f_tel="         + arguments[8];
    login += "&f_nen1="        + arguments[9];
    login += "&f_tuki1="       + arguments[10];
    login += "&f_hi1="         + arguments[11];
    login += "&f_nen2="        + arguments[12];
    login += "&f_tuki2="       + arguments[13];
    login += "&f_hi2="         + arguments[14];
    login += "&f_otona_su="    + arguments[15];
    login += "&f_s1="          + arguments[16];
    login += "&f_s2="          + arguments[17];
    login += "&f_y1="          + arguments[18];
    login += "&f_y2="          + arguments[19];
    login += "&f_y3="          + arguments[20];
    login += "&f_y4="          + arguments[21];
    login += "&f_heya_su="     + arguments[22];
    login += "&f_kin="         + arguments[23];
    login += "&f_kaiin_no="    + arguments[24];
    login += "&f_kaiin_tel="   + arguments[25];
    login += "&f_flg="         + arguments[26];
    login += "&f_p_no="        + arguments[27];
    login += "&f_custom_code=" + arguments[28];
    login += "&f_search_type=" + arguments[29];
    login += "&f_camp_id="     + arguments[30];
  } else if (CALL == "STD") {
    login += "?f_syu="         + arguments[5];
    login += "&f_teikei="      + arguments[6];
    login += "&f_flg="         + arguments[7];
    login += "&f_hizuke="      + arguments[8];
    login += "&f_otona_su="    + arguments[9];
    login += "&f_s1="          + arguments[10];
    login += "&f_s2="          + arguments[11];
    login += "&f_y1="          + arguments[12];
    login += "&f_y2="          + arguments[13];
    login += "&f_y3="          + arguments[14];
    login += "&f_y4="          + arguments[15];
    login += "&f_kin="         + arguments[16];
    login += "&f_heya_su="     + arguments[17];
    login += "&f_kaiin_no="    + arguments[18];
    login += "&f_kaiin_tel="   + arguments[19];
    login += "&f_hak="         + arguments[20];
    login += "&f_tel="         + arguments[21];
    login += "&f_nen1="        + arguments[22];
    login += "&f_tuki1="       + arguments[23];
    login += "&f_hi1="         + arguments[24];
    login += "&f_nen2="        + arguments[25];
    login += "&f_tuki2="       + arguments[26];
    login += "&f_hi2="         + arguments[27];
    login += "&f_target_flg="  + arguments[28];
    login += "&f_tscm_flg="    + arguments[29];
    login += "&f_p_no="        + arguments[30];
    login += "&f_custom_code=" + arguments[31];
    login += "&send="          + arguments[32];
    login += "&f_calendar="    + arguments[33];
  } else if (CALL == "PLAN") {
    login += "?f_camp_id="     + arguments[5];
    login += "&f_syu="         + arguments[6];
    login += "&f_teikei="      + arguments[7];
    login += "&f_flg="         + arguments[8];
    login += "&f_hizuke="      + arguments[9];
    login += "&f_otona_su="    + arguments[10];
    login += "&f_s1="          + arguments[11];
    login += "&f_s2="          + arguments[12];
    login += "&f_y1="          + arguments[13];
    login += "&f_y2="          + arguments[14];
    login += "&f_y3="          + arguments[15];
    login += "&f_y4="          + arguments[16];
    login += "&f_kin="         + arguments[17];
    login += "&f_heya_su="     + arguments[18];
    login += "&f_kaiin_no="    + arguments[19];
    login += "&f_kaiin_tel="   + arguments[20];
    login += "&f_hak="         + arguments[21];
    login += "&f_tel="         + arguments[22];
    login += "&f_nen1="        + arguments[23];
    login += "&f_tuki1="       + arguments[24];
    login += "&f_hi1="         + arguments[25];
    login += "&f_nen2="        + arguments[26];
    login += "&f_tuki2="       + arguments[27];
    login += "&f_hi2="         + arguments[28];
    login += "&f_target_flg="  + arguments[29];
    login += "&f_tscm_flg="    + arguments[30];
    login += "&f_p_no="        + arguments[31];
    login += "&f_custom_code=" + arguments[32];
    login += "&send="          + arguments[33];
    login += "&f_calendar="    + arguments[34];
  } else if (CALL == "GTA") {
    login += "?f_city_code="   + arguments[5];
    login += "&f_item_code="   + arguments[6];
    login += "&f_photo_page="  + arguments[7];
    login += "&f_teikei="      + arguments[8];
    login += "&f_flg="         + arguments[9];
    login += "&f_search_type=" + arguments[10];
  } else if (CALL == "COMPAREDOMESTIC") {
    login += "?f_flg=";
  } else if (CALL == "COMPAREOVERSEAS") {
    login += "?f_flg=";
  } else if (CALL == "MIKI") {
    login += "?f_teikei="    + arguments[5];
    login += "&f_nen1="      + arguments[6];
    login += "&f_tuki1="     + arguments[7];
    login += "&f_hi1="       + arguments[8];
    login += "&f_nen2="      + arguments[9];
    login += "&f_tuki2="     + arguments[10];
    login += "&f_hi2="       + arguments[11];
    login += "&f_otona_su="  + arguments[12];
    login += "&f_s1="        + arguments[13];
    login += "&f_y4="        + arguments[14];
    login += "&f_heya_su="   + arguments[15];
    login += "&f_kin="       + arguments[16];
    login += "&f_kin2="      + arguments[17];
    if (arguments[20] == "hotelCustomPage") {
    	login += "&f_ws_custom_page_seq="  + arguments[18];
    } else if (arguments[20] == "hotelMap") {
    	login += "&mapSelect="   + arguments[19];
    }
    login += "&program_id=" + arguments[20];
  }
  login += "&f_no="           + HOTEL;
  login += "&f_clip_flg="     + EID;
  login += "&f_call_flg="     + CALL;
  if (MODE == "HOTEL") {
    login += "\">" + clipTarget + "お気に入りに追加</a>";
  } else {
    login += "\">" + clipTarget + "をお気に入りに追加</a>";
  }

  return login;
}

function favoriteRes(FRES,EID,MODE,HOTEL,CID,COMM,COUNTRY) {
  if(document.getElementById(EID) == null) {
    return;
  }
  var offLeft;
  var offTop;
  if (FRES.indexOf("CLIP_") != -1) {
    if (FRES.indexOf("SUCCESS") != -1) {
      if (window.location.href.indexOf("https://my.travel.rakuten.co.jp/mybooking/domesticHotel") != -1) {
        document.getElementById(EID).innerHTML = "<a href=\"https://aps1.travel.rakuten.co.jp/portal/my/prv_page.first?f_tab=2\" target=\"_blank\">お気に入りに追加しました</a>";
        return;
      }
      offLeft = offSetL(EID);
      offTop  = offSetT(EID);
      //ブラウザ判別
      if (navigator.appName.indexOf("Microsoft") != -1) {
        //offsetLeft補正
        if (COUNTRY.indexOf("kaigai") != -1) {
          if (document.getElementById(EID).offsetWidth == 0) {
            offLeft += 750;
          }
        }
      }

      elements = document.getElementsByTagName("embed");
      for (i = 0; i < elements.length; i++) {
        elements[i].style.visibility = "hidden";
      }
      elements = document.getElementsByTagName("object");
      for (i = 0; i < elements.length; i++) {
        elements[i].style.visibility = "hidden";
      }
     document.getElementById("clip_comp").style.left       = offLeft + "px";
     document.getElementById("clip_comp").style.top        = offTop + "px";
     document.getElementById("clip_comp").style.visibility = "visible";
     document.getElementById("clip_comp").innerHTML        = fukidashi(COUNTRY);
     document.getElementById(EID).innerHTML = registered(COUNTRY);
    } else if (FRES.indexOf("REGISTERED") != -1) {
      document.getElementById(EID).innerHTML = registered(COUNTRY);
    } else  {
      document.getElementById(EID).innerHTML = "お気に入りの追加に失敗しました";
    }
  } else if (FRES.indexOf("COMM_") != -1) {
    if (FRES.indexOf("SUCCESS") != -1) {
      document.getElementById(EID).innerHTML = COMM;
    } else {
      document.getElementById(EID).innerHTML = "コメントの登録に失敗しました";
    }
  }
}

// 個人ページ お気に入り登録
function favorite(EID,FLG,MODE,HOTEL,CID,COMM,COUNTRY) {
  var paramEID     = "";
  var paramFLG     = "";
  var paramMODE    = "";
  var paramHOTEL   = "";
  var paramCID     = "";
  var paramCOMM    = "";
  var paramCOUNTRY = "";
  var time         = new Date().getTime();
  var sendParam    = "";
  var sendUrl      = "";

  if(typeof EID != "undefined" && EID != null) {
    paramEID = EID;
  } else {
    paramEID = "";
  }
  if(typeof FLG != "undefined" && FLG != null) {
    paramFLG = FLG;
  } else {
    paramFLG = "";
  }
  if(typeof MODE != "undefined" && MODE != null) {
    paramMODE = MODE;
  } else {
    paramMODE = "";
  }
  if(typeof HOTEL != "undefined" && HOTEL != null) {
    paramHOTEL = HOTEL;
  } else {
    paramHOTEL = "";
  }
  if(typeof CID != "undefined" && CID != null) {
    paramCID = CID;
  } else {
    paramCID = "";
  }
  if(typeof COMM != "undefined" && COMM != null) {
    paramCOMM = COMM;
  } else {
    paramCOMM = "";
  }
  if(typeof COUNTRY != "undefined" && COUNTRY != null) {
    paramCOUNTRY = COUNTRY;
  } else {
    paramCOUNTRY = "";
  }

  sendParam = "f_eid=" + encodeURI(paramEID) + "&f_flg=" + encodeURI(paramFLG) + "&f_mode=" + encodeURI(paramMODE) + "&f_hotel_no=" + encodeURI(paramHOTEL) + "&f_cid=" + encodeURI(paramCID) + "&f_comm=" + paramCOMM + "&f_country=" + encodeURI(paramCOUNTRY) + "&time=" + encodeURI(time);

  if (paramFLG == "CLIP") {
    sendURL = "http://travel.rakuten.co.jp/cgi-bin/favorite?" + sendParam;
  } else if (paramFLG == "COMM") {
    sendURL = "https://aps1.travel.rakuten.co.jp/cgi-bin/favorite?" + sendParam;
  }

  callAPI('',sendURL);
}

//clipチェック
function clipChk(EID,MODE,HOTEL,CID,COUNTRY,CALL) {
  getCookie = document.cookie.indexOf("Rz"); 
  if (getCookie != -1){ 
    document.getElementById(EID).innerHTML = registers(EID,MODE,HOTEL,CID,COUNTRY,CALL);
  } else {
    document.getElementById(EID).innerHTML = login(EID,MODE,HOTEL,CID,CALL,arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20],arguments[21],arguments[22],arguments[23],arguments[24],arguments[25],arguments[26],arguments[27],arguments[28],arguments[29],arguments[30],arguments[31],arguments[31],arguments[32],arguments[33],arguments[34],arguments[35]);
  }
}


