var rakutenTr_affiliate = {
rakutenTrUrlBase : "http://travel.rakuten.co.jp/",
rakutenTrPreMob  : "http://web.travel.rakuten.co.jp/portal/my/m_afy_pre.main",
hotelInfoUrlBase : "http://travel.rakuten.co.jp/HOTEL/## HOTEL_NO ##/## HOTEL_NO ##.html?cid=tr_af_1630",
hotelInfoUrlMob  : "http://travel.rakuten.co.jp/h/## HOTEL_NO ##",
hotelLinkUrlMob  : "http://m.travel.rakuten.co.jp/portal/i/m_afy.ra?uid=NULLGWDOCOMO&nurl=travel.rakuten.co.jp/h/## HOTEL_NO ##",
hotelImgUrlBase  : "http://img.travel.rakuten.co.jp/image/imgr_100?no=## HOTEL_NO ##",
hotelImgUrlMob   : "http://img.travel.rakuten.co.jp/image/imgaf?no=## HOTEL_NO ##",
hotelReviewMob   : "http://web.travel.rakuten.co.jp/portal/my/m_afy_pre.main?f_no=## HOTEL_NO ##",
affiliateCgiUrl  : "https://partner.afl.rakuten.co.jp/af/a_link.cgi",
affiliateBanner  : "http://img.travel.rakuten.co.jp/share/themes/affiliate/images/btn_affili_hdr.gif",
exampleUrl       : "/share/themes/affiliate/affiliate_dscrptn.html?TB_iframe=true&height=460&width=720&light_overflow=true",
cdCCC            : "愛",
scriptFunc       : {func : function(){},param : new Array()},
setScript        : function(func, param) {
this.scriptFunc.func = func;
this.scriptFunc.param = param;
},
execScript       : function() {
if (this.scriptFunc.func && this.scriptFunc.param) {
this.scriptFunc.func.apply(this, this.scriptFunc.param);
}
},
putItemAnchor : function(hotelNo, hotelName, putObjId){
var affiliateObj = new RTAffiliateLine();
affiliateObj.standByText();
affiliateObj.standByThickbox();
affiliateObj.putAnchor( putObjId
, function(){
rakutenTr_affiliate.setScript(rakutenTr_affiliate.createItemLink,new Array(hotelNo, hotelName));
return false;
});
},
putTextLinkAnchor : function(linkUrl, putObjId) {
linkUrl = String(linkUrl);
var targetUrl = new Array(linkUrl);
targetUrl.push(linkUrl.indexOf("?") > 0 ? "&" : "?");
targetUrl.push("cid=tr_af_1631");
var affiliateObj = new RTAffiliateLine();
affiliateObj.standByBanner();
affiliateObj.putAnchor( putObjId
, function() {
rakutenTr_affiliate.createTextLink(targetUrl.join(""));
return false;
});
},
createItemLink : function(hotelNo, hotelName){
if (!hotelNo) return;
var hotelInfoUrl = rakutenTr_affiliate.hotelInfoUrlBase.replace(/## HOTEL_NO ##/g, hotelNo);
var hotelImgUrl = rakutenTr_affiliate.hotelImgUrlBase.replace(/## HOTEL_NO ##/g, hotelNo);
var myForm = new AffiliateForm();
myForm.setHidden("cmd", "item");
myForm.setHidden("me_id", "2100001");
myForm.setHidden("me_url", hotelInfoUrl);
myForm.setHidden("me_img_src", hotelImgUrl);
myForm.setHidden("goods_name", hotelName);
myForm.setHidden("CCC", rakutenTr_affiliate.cdCCC);
myForm.setHidden("item_id", hotelNo);
myForm.setHidden("mgoods_name", String(hotelName).toHankakuCase());
myForm.setHidden("mitem_flg", "1");
myForm.setHidden("mitem_url", rakutenTr_affiliate.hotelInfoUrlMob.replace(/## HOTEL_NO ##/g, hotelNo));
myForm.setHidden("mlink_url", rakutenTr_affiliate.hotelLinkUrlMob.replace(/## HOTEL_NO ##/g, hotelNo));
myForm.setHidden("mitem_img", rakutenTr_affiliate.hotelImgUrlMob.replace(/## HOTEL_NO ##/g, hotelNo));
myForm.setHidden("mgpreview_url", rakutenTr_affiliate.hotelReviewMob.replace(/## HOTEL_NO ##/g, hotelNo));
myForm.setHidden("mshop_url", rakutenTr_affiliate.rakutenTrUrlBase);
myForm.setHidden("mspreview_url", rakutenTr_affiliate.rakutenTrPreMob);
myForm.submit();
},
createTextLink : function(targetUrl){
if (!targetUrl) return;
var myForm = new AffiliateForm();
myForm.setHidden("cmd", "link");
myForm.setHidden("url", targetUrl);
myForm.setHidden("CCC", rakutenTr_affiliate.cdCCC);
myForm.submit();
},
setThickbox      : function() {
var anchor = this;
var t = anchor.title || anchor.name || null;
var a = anchor.href || anchor.alt;
var g = anchor.rel || false;
tb_show(t,a,g);
return false;
},
addEventListener : function(target, type, func) {
if ( target.addEventListener ) {
target.addEventListener(type, func, true);
} else if (target.attachEvent) {
target.attachEvent("on" + type, func);
} else {
target.onclick = func;
}
}
}
var RTAffiliateLine = function() {
this.anchor   = document.createElement("a");
this.anchor.setAttribute("href","javascript:void(0)");
this.textNodeStr = "ブログ等で紹介する";
}
RTAffiliateLine.prototype.standByThickbox = function () {
this.anchor.setAttribute("className","thickbox");
this.anchor.setAttribute("class","thickbox");
this.anchor.setAttribute("href",rakutenTr_affiliate.exampleUrl);
this.anchor.onclick = rakutenTr_affiliate.setThickbox;
}
RTAffiliateLine.prototype.standByBanner = function () {
var imgTag = document.createElement("img");
imgTag.src = rakutenTr_affiliate.affiliateBanner;
this.anchor.appendChild(imgTag);
}
RTAffiliateLine.prototype.standByText = function () {
this.anchor.appendChild(document.createTextNode(this.textNodeStr));
}
RTAffiliateLine.prototype.putAnchor = function (putObjId, func) {
var putObj = document.getElementById(putObjId);
putObj.appendChild(this.anchor);
var putObjAnc = putObj.firstChild;
rakutenTr_affiliate.addEventListener(putObjAnc, "click", func);
}
var AffiliateForm = function() {
var affiliateForm = document.createElement('form');
affiliateForm.action = rakutenTr_affiliate.affiliateCgiUrl;
affiliateForm.method = "post";
affiliateForm.id = "affiLink";
this.form = affiliateForm;
}
AffiliateForm.prototype.setHidden = function(tagName, tagValue) {
var inputHidden   = document.createElement('input');
inputHidden.setAttribute("type", "hidden");
inputHidden.setAttribute("name", tagName);
inputHidden.setAttribute("value", tagValue);
this.form.appendChild(inputHidden);
}
AffiliateForm.prototype.submit = function() {
var target = document.getElementById(this.form.id);
if (target) {
target.parentNode.removeChild(target);
}
document.body.appendChild(this.form);
document.getElementById("affiLink").submit();
}
String.prototype.toHankakuCase = function()
{
var i, f, c, m, a = [];
m =
{
0x30A1:0xFF67, 0x30A3:0xFF68, 0x30A5:0xFF69, 0x30A7:0xFF6A, 0x30A9:0xFF6B,
0x30FC:0xFF70, 0x30A2:0xFF71, 0x30A4:0xFF72, 0x30A6:0xFF73, 0x30A8:0xFF74,
0x30AA:0xFF75, 0x30AB:0xFF76, 0x30AD:0xFF77, 0x30AF:0xFF78, 0x30B1:0xFF79,
0x30B3:0xFF7A, 0x30B5:0xFF7B, 0x30B7:0xFF7C, 0x30B9:0xFF7D, 0x30BB:0xFF7E,
0x30BD:0xFF7F, 0x30BF:0xFF80, 0x30C1:0xFF81, 0x30C4:0xFF82, 0x30C6:0xFF83,
0x30C8:0xFF84, 0x30CA:0xFF85, 0x30CB:0xFF86, 0x30CC:0xFF87, 0x30CD:0xFF88,
0x30CE:0xFF89, 0x30CF:0xFF8A, 0x30D2:0xFF8B, 0x30D5:0xFF8C, 0x30D8:0xFF8D,
0x30DB:0xFF8E, 0x30DE:0xFF8F, 0x30DF:0xFF90, 0x30E0:0xFF91, 0x30E1:0xFF92,
0x30E2:0xFF93, 0x30E4:0xFF94, 0x30E6:0xFF95, 0x30E8:0xFF95, 0x30E9:0xFF97,
0x30EA:0xFF98, 0x30EB:0xFF99, 0x30EC:0xFF9A, 0x30ED:0xFF9B, 0x30EF:0xFF9C,
0x30F2:0xFF66, 0x30F3:0xFF9D, 0x3000:0x0030
};
for(i=0,f=this.length;i<f;i++)
{
c = this.charCodeAt(i);
switch(true)
{
case (c in m):
a.push(m[c]);
break;
case (0xFF21 <= c && c <= 0xFF5E):
a.push(c - 0xFEE0);
break;
case (0x30AB <= c && c <= 0x30C9):
a.push(m[c-1], 0xFF9E);
break;
case (0x30CF <= c && c <= 0x30DD):
a.push(m[c-c%3], [0xFF9E,0xFF9F][c%3-1]);
break;
default:
a.push(c);
break;
};
};
return String.fromCharCode.apply(null, a);
}
