// Baynote recommendation for www.oecdbookshop.org
// Last updated: Aug 4, 2008
var baynote_relativeGuideLinks = true;
var baynote_appendCidParam = true;
var baynote_linkSubtitles = true;
var baynote_showSeriesTitle = true;

var baynote_currentGuideIdx = -1;
var baynote_currentGuideResource;
var baynote_currentGuideContainerId;
var baynote_currentGuideResultCount = 0;
var baynote_lastGuideResultCount = -1;
var baynote_guideResultLinks = new Array();

function baynote_showGuide (pageType,listSize,languageFilter,subjectFilter) {
	baynote_tag.server = "http://oecd-bookshop.baynote.net";
	baynote_tag.customerId = "oecd";
	baynote_tag.code = "bookshop";
	baynote_tag.type = "guide";
	baynote_tag.noload = bn_getNoloadHtml();
	// process filters
	var attrFilter = "";
	var langFilterParam = baynote_getUrlParam("LANG");
	if (baynote_isNotEmpty(languageFilter)) { attrFilter += "Language:"+languageFilter.toUpperCase(); }
	else if(baynote_isNotEmpty(langFilterParam)) { attrFilter += "Language:"+langFilterParam.toUpperCase();	}
	else { attrFilter += "Language:EN"; }
	if (baynote_isNotEmpty(subjectFilter)) {
		if (typeof(subjectFilter) == "string" && subjectFilter.indexOf("|") > 0) {
			var subjectFilterArray = subjectFilter.split("|");
			var subjectFilters = "";
			for(var i=0; i<subjectFilterArray.length; i++) {
				if (subjectFilters == "") { subjectFilters = "SubjectCode:"+subjectFilterArray[i]; }
				else { subjectFilters += "|SubjectCode:"+subjectFilterArray[i]; }
			}
			if (baynote_isNotEmpty(subjectFilters)) { attrFilter += ","+subjectFilters; }
		} else {
			attrFilter += ",SubjectCode:"+subjectFilter;
		}
	}
	if (baynote_isNotEmpty(attrFilter)) {
		baynote_tag.attrFilter = attrFilter;
	}
	// get updated url
	if (baynote_isNotEmpty(baynote_tag.url)) {
	} else {
		var updatedUrl = baynote_getUpdatedUrl();
		if (baynote_isNotEmpty(updatedUrl)) { baynote_tag.url = updatedUrl; }
	}
	// set guide based on page type
	var guideSuffix = "";
	if ((baynote_isNotEmpty(languageFilter) && languageFilter.toUpperCase() == "FR") || langFilterParam.toUpperCase() == "FR") {
		guideSuffix = "FR";
	}
	if(pageType == "BestSellers") {
		baynote_tag.guide = "BestSellersGuide"+guideSuffix;
		baynote_tag.listSize = 5;
	} else if (pageType == "ProductGuide") {
		baynote_tag.guide = "ProductGuide"+guideSuffix;
		baynote_tag.listSize = 10;
	} else if (pageType == "SubjectBestSellers") {
		baynote_tag.guide = "SubjectBestSellersGuide"+guideSuffix;
		baynote_tag.listSize = 10;
	} else if (pageType == "SubjectGuide") {
		baynote_tag.guide = "SubjectGuide"+guideSuffix;
		baynote_tag.listSize = 10;
	}
	// check guide and list size and show guide
	if (listSize != null && listSize > 0) { baynote_tag.listSize = listSize; }
	if (baynote_isNotEmpty(baynote_tag.guide) && baynote_tag.listSize > 0) {
		baynote_tag.show();
		baynote_waitForGuide();
	} else {
		baynote_tag.noshow();
	}
}
function baynote_waitForGuide() {
	if (baynote_isNotEmpty(bnResourceManager)) {
		baynote_currentGuideIdx++;
		baynote_currentGuideResource = "GLResults" + baynote_currentGuideIdx;
		baynote_currentGuideContainerId = "bn_guidecontainer" + baynote_currentGuideIdx;
		bnResourceManager.waitForResource(baynote_currentGuideResource, "baynote_guideLoaded(\""+baynote_currentGuideContainerId+"\")");
	}
}
function baynote_guideLoaded(bn_guide_id) {
	baynote_updateGuideLinks(bn_guide_id,1);
}
function baynote_updateGuideLinks(bn_guide_id,bn_wait_count) {
	var bn_wait_limit = 10;
	if(bn_wait_count > bn_wait_limit) {
		return;
	} else {
		var guideContainerEle = document.getElementById(bn_guide_id);
		if(guideContainerEle) {
			if(baynote_relativeGuideLinks || baynote_appendCidParam || baynote_linkSubtitles || baynote_showSeriesTitle) {
				baynote_updateGuideLinkElements(guideContainerEle);
			}
		} else if (baynote_isNotEmpty(bn_guide_id) && bn_wait_count > 0) {
			bn_wait_count++;
			setTimeout("baynote_updateGuideLinks(\""+bn_guide_id+"\","+bn_wait_count+")", 200);
		}
	}
}	
function baynote_updateGuideLinkElements(parentEle) {
	var childEleArr = parentEle.getElementsByTagName("*");
	var foundEleArr = [];
	for (var i=0; i<childEleArr.length; i++) {
		if(childEleArr[i].className.match(/^bn_g_result bn_g_result.*/)) {
			foundEleArr.push(childEleArr[i]);
		}
	}
	if (baynote_currentGuideIdx == 1 && baynote_lastGuideResultCount >=0 && baynote_lastGuideResultCount < 10) {
		var baynote_guideContainerEle = document.getElementById("bn_g_container_subjectguide");
		if(baynote_guideContainerEle && baynote_isNotEmpty(baynote_guideContainerEle.style)) { baynote_guideContainerEle.style.display = "block"; }
	}
	baynote_currentGuideResultCount = foundEleArr.length;
	baynote_processArr(foundEleArr);
	if (baynote_currentGuideResultCount < 1 && baynote_isNotEmpty(parentEle.style)) { parentEle.style.display = "none"; }
	baynote_lastGuideResultCount = foundEleArr.length;
}
function baynote_processArr(foundEleArr) {
	for(var i=0; i<foundEleArr.length; i++){
		var currentResultEle = foundEleArr[i];
		var childEleArr = currentResultEle.getElementsByTagName("*");
		var showResult = baynote_processResult(childEleArr);
		if(!showResult && baynote_isNotEmpty(currentResultEle.style)) {
			currentResultEle.style.display = "none";
			baynote_currentGuideResultCount--;
		}
	}
}
//for given result: change relative links,  insert subtitle link, if print not available then change url to pdfId
function baynote_processResult(currResult){
	var showResult = true;
	resultObj = new Object();
	resultObj.isAvailable = true;
	var resultAvailText = "";
	//if need to change url bc of availability, get that info.
	for(var i=0; i<currResult.length; i++){
		if(currResult[i].className == "bn_g_availability"){
			if(currResult[i].innerHTML) {
				resultAvailText = currResult[i].innerHTML;
			}
			if(resultAvailText != "60" && resultAvailText != "100" && resultAvailText != "110") {
				resultObj.isAvailable = false;
			}
		}
		if(currResult[i].className == "bn_g_pdfid"){
			if(currResult[i].innerHTML) {
				resultObj.pdfid = currResult[i].innerHTML;
			}
		}	
		if(currResult[i].className == "bn_g_seriestitle"){
			if(currResult[i].innerHTML) {
				resultObj.seriestitle = currResult[i].innerHTML;
			}
		}	
	}

	for(var i=0; i<currResult.length; i++){
		if(currResult[i].className == "bn_g_result_link"){
			if(baynote_checkGuideResultLink(currResult[i].getAttribute("href"))) {
				showResult = false;
			}
			resultObj.result_link = baynote_relativeLink(currResult[i], resultObj);
			if(baynote_isNotEmpty(currResult[i].getAttribute("title"))) {
				currResult[i].setAttribute("title",""); // remove title attr from link (hover text)
			}
		}
		if (currResult[i].className == "bn_g_result_image_link") {
			baynote_relativeLink(currResult[i], resultObj);
		}
		if (currResult[i].className == "bn_g_result_image") {
			var imgEleArr = currResult[i].getElementsByTagName("img");
			if (imgEleArr.length > 0) {
				for (var i=0; i<imgEleArr.length; i++) {
					var imgEle = imgEleArr[i];
					var imgSrc = imgEle.getAttribute("src");
					if (imgSrc.indexOf("/oecd/images/blank.gif") > 0) {	imgEle.style.border = "none"; }
				}
			}
			baynote_relativeLink(currResult[i], resultObj);
		}
		if(baynote_linkSubtitles && currResult[i].className == "bn_g_subtitle" && baynote_isNotEmpty(resultObj.result_link)){
			currResult[i].setAttribute("href", resultObj.result_link);
		}
		if(baynote_showSeriesTitle && currResult[i].className == "bn_g_result_title" && baynote_isNotEmpty(resultObj.seriestitle)){
			if(currResult[i].innerHTML) {
				currResult[i].innerHTML = "<div class=\"bn_g_seriestitle_top\">"+resultObj.seriestitle+"</div>"+currResult[i].innerHTML;
			}
		}
		// update result links to append cid param
		if(baynote_appendCidParam) {
			var cidParam = baynote_getUrlParam("CID");
			if(baynote_isNotEmpty(cidParam)&& currResult[i].nodeName == "A") {
				baynote_appendUrlParam(currResult[i],"CID",cidParam);
			}
		}
	}
	return showResult;
}
function baynote_relativeLink(linkEle, resultObj) {
	var linkHref = linkEle.getAttribute("href");
	if(baynote_isNotEmpty(linkHref) && linkHref.match(/^http:\/\/[^\/]+\/oecd\//)) {
		linkHref = linkHref.replace(/^http:\/\/[^\/]+\/oecd\//,"/oecd/")
		if(!resultObj.isAvailable){
			if(baynote_isNotEmpty(resultObj.pdfid) && linkHref.match(/^(.*K=)[^&]*(&.*)/))
				linkHref = linkHref.replace(/^(.*K=)[^&]*(&.*)/, "$1"+resultObj.pdfid+"$2");
		}
		linkEle.setAttribute("href",linkHref);
	}
	return linkHref;
}
function baynote_checkGuideResultLink(resultLink) {
	var linkExists = false;
	for (var i=0; i<baynote_guideResultLinks.length; i++) {
		var currentLink = baynote_guideResultLinks[i];
		if (currentLink == resultLink) {
			linkExists = true;
			break;
		}
	}
	if (!linkExists) {
		baynote_guideResultLinks.push(resultLink);
	} else {
	}
	return linkExists;
}
function baynote_appendUrlParam(linkEle,paramName,paramValue) {
	var linkHref = linkEle.getAttribute("href");
	if(baynote_isNotEmpty(linkHref) && linkHref.indexOf("&"+paramName+"=") < 0 && baynote_isNotEmpty(paramName) && baynote_isNotEmpty(paramValue)) {
		linkHref = linkHref+"&"+paramName+"="+paramValue;
		//if(baynote_isNotEmpty(linkEle.getAttribute("href")))
			linkEle.setAttribute("href",linkHref);
	}
}
function baynote_getUrlParam(name) {
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp(regexS,"i");
	var tmpURL = window.location.href;
	var results = regex.exec(tmpURL);
	if(results == null)
		return "";
	else
		return unescape(results[1]);
}
function baynote_isNotEmpty(name) {
	return (typeof(name) != "undefined") && (name != null) && (name != "");
}
function baynote_getUpdatedUrl() {
	var bn_location_href = window.location.href;
	var updated_url = null;
	if (bn_location_href.match(/^http:\/\/[\d\.]+\/oecd\//)) {
		updated_url = bn_location_href.replace(/^http:\/\/[\d\.]+\/oecd\//,"http://www.oecdbookshop.org/oecd/");
	}
	return updated_url;
}
function bn_getNoloadHtml() {
	var noloadHtml = "";
	var bn_locHref = window.location.href;
	if (bn_locHref.match(/^http:\/\/[^\/]+\/oecd\/(index\.asp.*)?$/)) {
	} else {
		noloadHtml += "<h3 style=\"padding-top: 1em; text-align: center; font-weight: bold; font-size: 12px; margin: 0 0 6px 0;\">Titles are also available from</h3>";
		noloadHtml += "<p>";
		noloadHtml += "<a class=\"imprints-link\" href=\"/oecd/imprint_results.asp?SF1=ImprintCode&ST=4&SF2=ProductCategory&ST2=PUB&SF3=VersionCode&ST3=P,C&SF4=AvailabilityCode&ST4=100,60,80&SINCE=900&SORT=sort_date/d&CID=&LANG=en&PGE=devcentre\"><img src=\"images/imprints_DC.gif\" alt=\"OECD Development Centre\">OECD<br/>Development<br/>Centre</a><br>";
		noloadHtml += "<a class=\"imprints-link\" href=\"/oecd/imprint_results.asp?SF1=ImprintCode&ST=3&SF2=ProductCategory&ST2=PUB&SF3=VersionCode&ST3=P,C&SF4=AvailabilityCode&ST4=100,60,80&SINCE=900&SORT=sort_date/d&CID=&LANG=en&PGE=ecmt\"><img src=\"images/imprints_ITF_EN.gif\" alt=\"International Transport Forum\">International<br/>Transport<br/>Forum</a><br>";
		noloadHtml += "<a class=\"imprints-link\" href=\"/oecd/imprint_results.asp?SF1=ImprintCode&ST=2&SF2=ProductCategory&ST2=PUB&SF3=VersionCode&ST3=P,C&SF4=AvailabilityCode&ST4=100,60,80&SINCE=900&SORT=sort_date/d&CID=&LANG=en&PGE=nea\"><img src=\"images/imprints_NEA.gif\" alt=\"Nuclear Energy Agency\">Nuclear<br/>Energy<br/>Agency</a><br>";
		noloadHtml += "<a class=\"imprints-link\" href=\"/oecd/imprint_results.asp?SF1=ImprintCode&ST=1&SF2=ProductCategory&ST2=PUB&SF3=VersionCode&ST3=P,C&SF4=AvailabilityCode&ST4=100,60,80&SINCE=900&SORT=sort_date/d&CID=&LANG=en&PGE=iea\"><img src=\"images/imprints_IEA.gif\" alt=\"International Energy Agency\">International<br/>Energy<br/>Agency</a>";
		noloadHtml += "</p>";
	}
	return noloadHtml;
}