
/////////////////////////////////////////////////////////////////
// Set 'autnEnabledLocal = false' to disable suggested links
/////////////////////////////////////////////////////////////////
var autnEnabledLocal = true;
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////


var submitDocRefToAutn = false;

var autnDocRef = null;
var autnDocList = null;
var cookieDocs = null;
var htmlElementId = null;

var linkCount = null;
var altIcon = false;
var media = false;

var updateAutnUrl = "/globals/links/includeSuggestedLinks.jsp";

function addAutnDoc() {
	submitDocRefToAutn = true;
	updateAutn()
}

function addSuggestAutnDoc(elementId) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	updateAutn()
}

function addSuggestAutnDocAltIcon(elementId) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	altIcon = true;
	updateAutn()
}

function addSuggestAutnDocWCount(elementId, count) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	linkCount = count;
	updateAutn()
}

function addSuggestAutnDocAltIconWCount(elementId, count) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	linkCount = count;
	altIcon = true;
	updateAutn()
}

function addSuggestAutnMediaDoc(elementId) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	media = true;
	updateAutn()
}

function addSuggestAutnMediaDocWCount(elementId, count) {
	submitDocRefToAutn = true;
	htmlElementId = elementId;
	media = true;
	linkCount = count;
	updateAutn()
}

function suggestAutnDoc(elementId) {
	htmlElementId = elementId;
	updateAutn()
}

function suggestAutnDocAltIcon(elementId) {
	htmlElementId = elementId;
	altIcon = true;
	updateAutn()
}

function suggestAutnDocWCount(elementId, count) {
	htmlElementId = elementId;
	linkCount = count;
	updateAutn()
}

function suggestAutnDocAltIconWCount(elementId, count) {
	htmlElementId = elementId;
	linkCount = count;
	altIcon = true;
	updateAutn()
}

function suggestAutnMediaDoc(elementId) {
	htmlElementId = elementId;
	media = true;
	updateAutn()
}

function suggestAutnMediaDocWCount(elementId, count) {
	htmlElementId = elementId;
	media = true;
	linkCount = count;
	updateAutn()
}

function updateAutn() {
	if (autnEnabled) {
		getAutnDocList();
		if (submitDocRefToAutn) {
			getAutnDocRef();
			setAutnDocListCookie();
		}
		checkSubmitToAutn();
	}
}

function getAutnDocList() {
	autnDocList = getAutnCookie(autnDocCookieName);
	if (autnDocList != null && autnDocList != "") {
		cookieDocs = autnDocList.split(autnDocCookieSep);
	}
}

function getAutnDocRef() {
	var autnMetaTags = document.getElementsByTagName('META');
	for (var i = 0; i < autnMetaTags.length; i++) {
		if (autnMetaTags[i].getAttribute('NAME') == autnTsSubPath) {
			autnDocRef = autnMetaTags[i].getAttribute('CONTENT');
		}
	}
}

function setAutnDocListCookie() {
	submitDocRefToAutn = false;
	if (autnDocRef != null && autnDocRef != "") {
		if (autnDocList == null || autnDocList == "") {
			setAutnCookie(autnDocCookieName, autnDocRef);
		} else {
			if (autnDocRefIsNew()) {
				if (cookieDocs.length < autnDocMinCount - 1) {
					setAutnCookie(autnDocCookieName, autnDocList
							+ autnDocCookieSep + autnDocRef);
				} else if (!autnEnabledLocal) {
					autnDocList = autnDocList.substring(autnDocList
							.indexOf(autnDocCookieSep) + 1);
					setAutnCookie(autnDocCookieName, autnDocList
							+ autnDocCookieSep + autnDocRef);
				} else {
					submitDocRefToAutn = true;
				}
			}
		}
	}
}

function autnDocRefIsNew() {
	var autnDocRefIsNew = true;
	for ( var i = 0; i < cookieDocs.length; i++) {
		if (cookieDocs[i] == autnDocRef) {
			autnDocRefIsNew = false;
			break;
		}
	}
	return autnDocRefIsNew;
}

function checkSubmitToAutn() {
	if (submitDocRefToAutn
			|| (htmlElementId != null && cookieDocs != null && cookieDocs.length >= autnDocMinCount)) {
		var url = updateAutnUrl
				+ "?"
				+ (submitDocRefToAutn ? "doc=" + autnDocRef
						+ (htmlElementId == null ? "" : "&") : "")
				+ (htmlElementId == null ? "" : "suggest=Y"
						+ (media ? "&mediaType=Y" : "")
						+ (altIcon ? "&altIcon=Y" : "")
						+ (linkCount == null ? "" : "&count=" + linkCount));
		submitAutnAjaxReq(url);
	}
}

function submitAutnAjaxReq(url) {
	if (autnEnabledLocal) {
		var xmlHttp;
		try { // Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
		} catch (e) { // Internet Explorer
			try {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					return false;
				}
			}
		}
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200
					&& xmlHttp.getResponseHeader("oprofHeader") != null
					&& htmlElementId != null) {
				updateAutnHtmlElement(xmlHttp.responseText);
			}
		}
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
	}
}

function updateAutnHtmlElement(text) {
	if (text.replace(/^\s*|\s*$/g, '') != "") {
		document.getElementById(htmlElementId).innerHTML = text;
	}
}

function getAutnCookie(cookieName) {
	var cookieValue = null;
	if (cookieName != null && cookieName != "") {
		var cookieString = "" + document.cookie;
		var index1 = cookieString.indexOf(cookieName);
		if (index1 != -1) {
			var index2 = cookieString.indexOf(';', index1);
			if (index2 == -1) {
				index2 = cookieString.length;
			}
			cookieValue = unescape(cookieString.substring(index1
					+ cookieName.length + 1, index2));
		}
	}
	return cookieValue;
}

function setAutnCookie(name, value) {
	var expire = new Date((new Date()).getTime()
			+ (3600000 * 24 * autnCookieMaxAgeDays));
	document.cookie = name + "=" + value + ";expires=" + expire.toGMTString()
			+ ";path=/;domain=" + autnCookieDomain;
}

