if (typeof ReutersFactbox == "undefined") {
	var ReutersFactbox = {};
}

ReutersFactbox.Index = 0;

ReutersFactbox.drawFactbox = function(sFactboxFile) {
	document.write('<link href="/resources/css/rcom-factbox.css" rel="stylesheet" />');
	if (typeof RTR_Carousels == "undefined") {
		document.write('<link href="/resources/css/rcom-carousels.css" rel="stylesheet" />');
	}
	document.write('<div id="RTR_Factbox"></div>');
	document.write('<scr' + 'ipt language="javascript" src="http://static.reuters.com/resources/media/global/assets/factbox/' + sFactboxFile + '"></scr' +'ipt>');
}

ReutersFactbox.loadFactbox = function() {
	var sHTML = '';
	sHTML += '<div class="module factbox">';
	sHTML += '<div id="factboxControls" class="carouselControls"><div id="factbox_L" class="hidden"><img id="factbox_LI" src="/resources/images/btn_interactiveL.gif" border="0" alt="" /></div><div id="factbox_R" class="hidden"><img id="factbox_RI" src="/resources/images/btn_interactiveR.gif" border="0" alt="" /></div></div>';
	sHTML += '<div class="moduleHeaderInline"><h3>' + oInfoObject.name + ' <span id="factboxStatus" class="timestamp">(' + (ReutersFactbox.Index + 1) + "/" + oInfoObject.bindings.length + ')</span></h3></div><div class="moduleBody">';
	if (oInfoObject.bindings.length > 0) {
		oFact = oInfoObject.bindings[ReutersFactbox.Index];
		sHTML += '<div class="linebreak"></div>';
		sHTML += '<div id="factContent" class="fact" style="height: ' + oInfoObject.height + 'px">';
		sHTML += ReutersFactbox.makeInlinePhoto(oFact.photo, oFact.caption, oFact.url1);
		sHTML += ReutersFactbox.makeFeatureHeadline(oFact.headline, oFact.url1);
		sHTML += ReutersFactbox.makeBlurb(oFact.blurb, oFact.url1, oFact.url2);
		sHTML += ReutersFactbox.makeHeadline(oFact.link1text, oFact.link1url);
		sHTML += ReutersFactbox.makeHeadline(oFact.link2text, oFact.link2url);
		sHTML += '</div>';
	}
	sHTML += '</div>';
	document.getElementById("RTR_Factbox").innerHTML = sHTML;	
	ReutersFactbox.initializeFactbox();
}

ReutersFactbox.initializeFactbox = function() {
	document.getElementById("factbox_LI").onclick = ReutersFactbox.reverseFactbox;
	document.getElementById("factbox_RI").onclick = ReutersFactbox.advanceFactbox;
	document.getElementById("factbox_L").className = "buttonActive";
	document.getElementById("factbox_R").className = "buttonActive";
	if (ReutersFactbox.Index == 0) {
		document.getElementById("factbox_L").className = "buttonInactive";
	}
	if (ReutersFactbox.Index == (oInfoObject.bindings.length - 1)) {
		document.getElementById("factbox_R").className = "buttonInactive";
	}
}

ReutersFactbox.redrawFactbox = function() {
	var oFact = oInfoObject.bindings[ReutersFactbox.Index];
	var sHTML = '';
	sHTML += ReutersFactbox.makeInlinePhoto(oFact.photo, oFact.caption, oFact.url1);
	sHTML += ReutersFactbox.makeFeatureHeadline(oFact.headline, oFact.url1);
	sHTML += ReutersFactbox.makeBlurb(oFact.blurb, oFact.url1, oFact.url2);
	sHTML += ReutersFactbox.makeHeadline(oFact.link1text, oFact.link1url);
	sHTML += ReutersFactbox.makeHeadline(oFact.link2text, oFact.link2url);
	document.getElementById("factContent").innerHTML = sHTML;
	document.getElementById("factbox_L").className = "buttonActive";
	document.getElementById("factbox_R").className = "buttonActive";
	document.getElementById("factboxStatus").innerHTML = '(' + (ReutersFactbox.Index + 1) +"/" + oInfoObject.bindings.length +')';
}

ReutersFactbox.reverseFactbox = function() {
	if (ReutersFactbox.Index > 0) {
		ReutersFactbox.Index--;
		ReutersFactbox.redrawFactbox();
	}
	if (ReutersFactbox.Index == 0) {
		document.getElementById("factbox_L").className = "buttonInactive";
	}
}

ReutersFactbox.advanceFactbox = function() {
	if (ReutersFactbox.Index < (oInfoObject.bindings.length - 1)) {
		ReutersFactbox.Index++;
		ReutersFactbox.redrawFactbox();
	}
	if (ReutersFactbox.Index == (oInfoObject.bindings.length - 1)) {
		document.getElementById("factbox_R").className = "buttonInactive";
	}
}



ReutersFactbox.aLinkTypes = [];

if (strLocalization == "JP") {
	ReutersFactbox.aLinkTypes.push({ "trigger": "slideshow", "inlineLink": "スライドショー", "target": "/news/pictures", "storyType": "スライドショー", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "videoId", "inlineLink": "ビデオ", "target": "/news/video", "storyType": "ビデオ", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "blogs.jp.reuters.com", "inlineLink": "ブログ", "target": "", "storyType": "ブログ", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "factbox", "inlineLink": "情報ＢＯＸ", "target": "", "storyType": "情報ＢＯＸ", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "special.reuters.co.jp", "inlineLink": "特集ページ", "target": "/news/globalcoverage/specials", "storyType": "", "isMedia": "No" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/news/globalcoverage", "inlineLink": "特集ページ", "target": "/news/globalcoverage/specials", "storyType": "", "isMedia": "No" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/article", "inlineLink": "記事の全文", "target": "", "storyType": "", "isMedia": "No" });
} else if (strLocalization == "CN") {
	ReutersFactbox.aLinkTypes.push({ "trigger": "slideshow", "inlineLink": "幻灯片", "target": "/news/pictures", "storyType": "幻灯片", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "videoId", "inlineLink": "视频", "target": "/news/video", "storyType": "视频", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "blogs.cn.reuters.com", "inlineLink": "博客", "target": "", "storyType": "博客", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "factbox", "inlineLink": "背景资料", "target": "", "storyType": "背景资料", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/news/globalcoverage", "inlineLink": "专题报道", "target": "/news/globalcoverage/specials", "storyType": "", "isMedia": "No" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/article", "inlineLink": "全文", "target": "", "storyType": "", "isMedia": "No" });
} else {
	ReutersFactbox.aLinkTypes.push({ "trigger": "slideshow", "inlineLink": "Slideshow", "target": "/news/pictures", "storyType": "Slideshow", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "videoId", "inlineLink": "Video", "target": "/news/video", "storyType": "Video", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "blogs.reuters.com", "inlineLink": "Blog", "target": "", "storyType": "Blog", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "factbox", "inlineLink": "Factbox", "target": "", "storyType": "Factbox", "isMedia": "Yes" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/news/globalcoverage", "inlineLink": "Full&nbsp;Coverage", "target": "/news/globalcoverage/specials", "storyType": "Special", "isMedia": "No" });
	ReutersFactbox.aLinkTypes.push({ "trigger": "/article", "inlineLink": "Full&nbsp;Article", "target": "", "storyType": "", "isMedia": "No" });
}

/*************/
/* Headlines */
/*************/

ReutersFactbox.makeFeatureHeadline = function(sText, sUrl) {
	var sResult = '';
	if (sText != '') {
		sResult = sText;
		if (sUrl != '') {
			sResult = '<a href="' + sUrl + '">' + sResult + '</a>';
		}
		sResult = '<h5>' + sResult + '</h5>';
	}
	return sResult;
}

ReutersFactbox.makeHeadline = function(sText, sUrl) {
	var sResult = '';
	if (sText != '') {
		sResult = sText;
		if (sUrl != '') {
			sResult = '<a href="' + sUrl + '">' + sResult + '</a>';
		}
		sResult = ReutersFactbox.makeStoryType(sUrl) + sResult;
		sResult = '<div class="headlineMed">' + sResult + '</div>';
	}
	return sResult;
}


/**********/
/* Photos */
/**********/

ReutersFactbox.makePhoto = function(sPhoto, sSize) {
	if ((sPhoto != '') && (sSize != '')) {
		switch(sSize) {
			case "small":
				sSize = 98;
				break;
			case "other":
				sSize = 150;
				break;
			case "w192":
				sSize = 192;
				break;
			case "preview":
				sSize = 350;
				break;
			case "full":
				sSize = 450;
				break;
			default:
				if (isNaN(parseInt(sSize))) {
					sSize = 100;
				} else {
					sSize = parseInt(sSize);
				}
				break;
		}
		if (sPhoto.contains("reuters.com/resources/r/")) {
			return sPhoto.replaceQuery("w", sSize);
		} else {
			return sPhoto;
		}
	}
	return '';
}

ReutersFactbox.makeInlinePhoto = function(sPhoto, sCaption, sUrl) {
	var sResult = '';
	if (sPhoto != '') {
		sResult = '<img src="' + ReutersFactbox.makePhoto(sPhoto, 'w192') + '" border="0" alt="' + sCaption + '" />';
		if (sUrl != '') {
			sResult = '<a href="' + sUrl + '">' + sResult + '</a>';
		}
		sResult = '<div class="inlineThumbnail">' + sResult + '</div>';
	}
	return sResult;
}

/********/
/* Text */
/********/

ReutersFactbox.makeBlurb = function(sBlurb, sUrl1, sUrl2) {
	var sResult = '';
	if (sBlurb != '') {
		sResult = sBlurb;
		if (sUrl1 != '') {
			sResult += '&nbsp; <span class="inlineLinks">' + ReutersFactbox.makeInlineLink(sUrl1);
			if (sUrl2 != '') {
				sResult += '&nbsp;|&nbsp;' + ReutersFactbox.makeInlineLink(sUrl2);
			}
			sResult += '</span>';
		}
		sResult = '<p>' + sResult + '</p>';
	}
	return sResult;
}

ReutersFactbox.makeInlineLink = function(sUrl) {
	if (sUrl != '') {
		for (h=0; h<ReutersFactbox.aLinkTypes.length; h++) {
			if (sUrl.contains(ReutersFactbox.aLinkTypes[h].trigger)) {
				return '<a href="' + sUrl + '">' + ReutersFactbox.aLinkTypes[h].inlineLink + '</a>';
			}
		}
	}
	return '';
}

ReutersFactbox.makeStoryType = function(sUrl) {
	if (sUrl != '') {
		for (h=0; h<ReutersFactbox.aLinkTypes.length; h++) {
			if ((sUrl.contains(ReutersFactbox.aLinkTypes[h].trigger)) && (ReutersFactbox.aLinkTypes[h].storyType != '')) {
				sTarget = ReutersFactbox.aLinkTypes[h].target;
				if (sTarget == '') {
					sTarget = sUrl;
				}
				if (ReutersFactbox.aLinkTypes[h].isMedia == 'Yes') {
					sClass = "mediatype";
				} else {
					sClass = "storytype";
				}
				return '<span class="' + sClass + '"><a href="' + sTarget + '">' + ReutersFactbox.aLinkTypes[h].storyType + ':</a></span> ';
			}
		}
	}
	return '';
}

/***********/
/* Strings */
/***********/

String.prototype.contains = function(sValue) {
	if (encodeURIComponent(this).search(encodeURIComponent(sValue)) != -1) {
		return true;
	} else {
		return false;
	}
}

String.prototype.startsWith = function(sValue) {
	if (this.search(sValue) == 0) {
		return true;
	} else {
		return false;
	}
}

String.prototype.replaceFromTo = function(sFrom, sTo) {
	var sTemp = this;
	var re = new RegExp(sFrom, "gi");
	sTemp = sTemp.replace(re, sTo);
	return sTemp;
}

String.prototype.replaceQuery = function(sName, sValue) {
	if (this.contains("?")) {
		if (this.contains(sName + "=")) {
			sUrl = this.split("?")[0] + "?";
			aValues = this.split("?")[1].split("&");
			for (h=0; h<aValues.length; h++) {
				if (aValues[h].split("=")[0] == sName) {
					sUrl += sName + "=" + sValue;
				} else {
					sUrl += aValues[h];
				}
				if (h < (aValues.length - 1)) {
					sUrl += "&";
				}
			}
			return sUrl;
		} else {
			return this + "&" + sName + "=" + sValue;
		}
	} else {
		return this + "?" + sName + "=" + sValue;
	}
	return '';
}

String.prototype.escaped = function() {
	var sTemp = this;
	sTemp = sTemp.replace(">", "&gt;", "g");
	sTemp = sTemp.replace("<", "&lt;", "g");
	return sTemp;
}

String.prototype.safe = function() {
	var sTemp = this;
	sTemp = sTemp.replace(/"/gi, "&quot;", "g");
	sTemp = sTemp.replace(/\n/gi, "<br />", "g");
	return sTemp;
}

String.prototype.stripped = function() {
	var sTemp = this;
	var re = /<.*?>/gi;
	sTemp = sTemp.replace(re, '');
	return sTemp;
}

String.prototype.trim = function() {
	if (this != '') {
		var m=0;
		var sClean = this;
		while ((this.substring((this.length -m -1), this.length -m) == ' ') || (this.substring((this.length -m -1), this.length -m) == '\n')) {
			m++;
		}	
		if (m > 0) { 
			sClean = this.substring(0,this.length -m);
		}    
		var m = 0;
		while ((sClean.substring(m, m + 1) == ' ') || (sClean.substring(m, m + 1) == '\n')) {
			m++;
		}	
		if (m > 0) { 
			sClean = sClean.substring(m,this.length);
		}
		sClean = sClean.stripHTML();
		return sClean;    
	} else {
		return '';
	}
}
