function addtowatchlist(id, watchlist, type, userteam, userid) {

	if (watchlist == "") {

		document.getElementById("added").innerHTML="<img title=\"Invalid watchlist\" src=\"/images/overview/state-0.gif\">";
		return;
	}
		

	document.getElementById("added").innerHTML="<img src=\"/images/overview/ajax-loader.gif\">";

	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else {// code for IE6, IE5
	  	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlhttp.onreadystatechange=function()
	  {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200)
	    {
	    document.getElementById("added").innerHTML=xmlhttp.responseText;
	    }
	  };
	xmlhttp.open("POST","/library/overview/addtowatchlist.php?w="+watchlist+"&i="+id+"&t="+type+"&ut="+userteam+"&u="+userid, true);
	xmlhttp.send();
	
	
}

function removefromwatchlist(id, watchlist, type, userteam, userid) {

	if (watchlist == "") {

		document.getElementById("added").innerHTML="<img title=\"Invalid watchlist\" src=\"/images/overview/state-0.gif\">";
		return;
	}
		

	document.getElementById("added").innerHTML="<img src=\"/images/overview/ajax-loader.gif\">";

	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else {// code for IE6, IE5
	  	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlhttp.onreadystatechange=function()
	  {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200)
	    {
	    document.getElementById("added").innerHTML=xmlhttp.responseText;
	    }
	  };
	xmlhttp.open("POST","/library/overview/removefromwatchlist.php?w="+watchlist+"&i="+id+"&t="+type+"&ut="+userteam+"&u="+userid, true);
	xmlhttp.send();
	
	
}

function showDiv( id ) { 
	document.getElementById(id).style.display = 'block'; 
	document.getElementById(id).focus(); 
	
} 
function hideDiv( id ) { 
	document.getElementById(id).style.display = 'none';
	document.getElementById(id).focus(); 
}

function showBankersDiv() {
	showDiv("bankersDiv");
	hideDiv("assetmanagersDiv");
	hideDiv("supplychainmanagersDiv");
	hideDiv("internationalsDiv");
}

function showAssetManagersDiv() {
	showDiv("assetmanagersDiv");
	hideDiv("bankersDiv");
	hideDiv("supplychainmanagersDiv");
	hideDiv("internationalsDiv");
}

function showSupplyChainManagersDiv() {
	hideDiv("bankersDiv");
	hideDiv("assetmanagersDiv");
	showDiv("supplychainmanagersDiv");
	hideDiv("internationalsDiv");
}

function showInternationalsDiv() {
	hideDiv("bankersDiv");
	hideDiv("assetmanagersDiv");
	hideDiv("supplychainmanagersDiv");
	showDiv("internationalsDiv");
}


//Form checking ---------------------------------------------------------------
function formCheck(inFormId, inErrorField, inErrorMessage) {

	// Get form
	var formObj = document.getElementById(inFormId);

	// Init state
	var emailpattern  = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	var allowSubmit   = true;
	var radioCheckbox = [];

	// Loop over all fields
	for (var i=0; i<formObj.elements.length; i++) {

		// Check if that field is required
		if (formObj.elements[i].getAttribute("required") == 1) {

			// Get label field & possible format
			var labelField = document.getElementById(formObj.elements[i].getAttribute("label"));  
			var format     = formObj.elements[i].getAttribute("format");  

			// Switch by tag type
			switch (formObj.elements[i].tagName) {

			case "select": // Multiple select is not implemented
			case "SELECT":
				var selectedIndex = formObj.elements[i].options.selectedIndex;
				var selectedValue = formObj.elements[i].options[selectedIndex].value;

				if (selectedValue.length > 0) {
					allowSubmit &= true;
					if (labelField) labelField.className = "";
				} else {
					allowSubmit &= false;
					if (labelField) labelField.className = "errormessage";
				}
				break;

			case "input":
			case "INPUT":
				switch (formObj.elements[i].type) {

				case "checkbox":
				case "radio":
					// Create entry for radio / checkbox
					radioCheckbox[formObj.elements[i].name] = (radioCheckbox[formObj.elements[i].name])?(radioCheckbox[formObj.elements[i].name]):(false);

					// If checked, override value with true
					if (formObj.elements[i].checked) {
						radioCheckbox[formObj.elements[i].name] |= true;
					}
					break;

				case "file":
					break;

				case "text":
				case "hidden":
				case "submit":
				default:
					if ((formObj.elements[i].value.length > 0) && ((format=="email")?(emailpattern.test(formObj.elements[i].value)):(true))) {
						allowSubmit &= true;
						if (labelField) labelField.className = "";
					} else {
						allowSubmit &= false;
						if (labelField) labelField.className = "errormessage";
					}
				break;
				}
				break;

			case "textarea":
			case "TEXTAREA":
			default:
				if (formObj.elements[i].value.length > 0) {
					allowSubmit &= true;
					if (labelField) labelField.className = "";
				} else {
					allowSubmit &= false;
					if (labelField) labelField.className = "errormessage";
				}
			break;
			}
		}
	}

	// Post-process radio / checkbox (error hilighting for radios & checkboxes is not implemented)
	for (fieldName in radioCheckbox) {
		allowSubmit &= radioCheckbox[fieldName];
	}

	// Set error message
	if (!allowSubmit) {
		document.getElementById(inErrorField).innerHTML     = inErrorMessage;
		document.getElementById(inErrorField).style.display = "inline";
	} else {
		document.getElementById(inErrorField).innerHTML     = "";
		document.getElementById(inErrorField).style.display = "none";
	}

	// Return result anyway
	return allowSubmit;
}

//Userguide handling ----------------------------------------
function userguide(inUrl) {
	window.open(inUrl, "", "location=0,menubar=0,scrollbars=1,status=0,toolbar=0,width=800,height=540,resizable=1");
}

//Print handling --------------------------------------------
function printVersion() {
	window.open("/print" + location.pathname + location.search, "", "location=0,menubar=0,scrollbars=1,status=0,toolbar=0,width=800,height=600,resizable=1");
}

//Popup -----------------------------------------------------------------------
function popup(inPage, inSubpage, inArgs) {
	window.open("/popup/" + inPage + "/" + inSubpage + "/?" + inArgs, "", "location=0,menubar=0,scrollbars=1,status=0,toolbar=0,width=800,height=600,resizable=1,dependent=1,centerscreen=1");
}

//Image swapping --------------------------------------------
function imageSwap(inObj, toSrc) {
	inObj.src = toSrc;
}


//Navigation handling ---------------------------------------
function navRollOver(inObj) {
	if (inObj.className == "navigationHeader")
		inObj.className = "navigationHeaderOver";
	else
		inObj.className = "navigationItemOver";
}

function navRollOut(inObj) {
	if (inObj.className == "navigationHeaderOver")
		inObj.className = "navigationHeader";
	else
		inObj.className = "navigationItem";
}

function navLink(inUrl) {
	location.href = inUrl;
}


//Tooltips -------------------------------------------------
var tooltip_obj     = null;
var tooltip_content = null;

function tooltip_init(tooltipId, contentId) {
	tooltip_obj     = document.getElementById(tooltipId);
	tooltip_content = document.getElementById(contentId);
}

function tooltip_show(event, message) {

	if (tooltip_obj && message) {
		if (self.event) {
			x  = self.event.clientX;
			y  = self.event.clientY;

			self.event.cancelBubble = true;
		} else {
			x  = event.clientX;
			y  = event.clientY;

			event.stopPropagation();
		}

		tooltip_content.innerHTML = message;
		tooltip_obj.style.display = "block";

		tooltip_obj.style.top =  y - tooltip_content.offsetHeight - 15 + document.body.scrollTop;
		tooltip_obj.style.left = x - 163 + document.body.scrollLeft;

	}
	return false;
}

function tooltip_hide() {
	if (tooltip_obj) {
		tooltip_content.innerHTML = "";
		tooltip_obj.style.top = 0;
		tooltip_obj.style.left = 0;
		tooltip_obj.style.display = "none";
	}
	return false;
}


//Emails --------------------------------------------------
function mailto(inEmail) {
	location.href="mailto:" + reverse(inEmail);
}

function reverse(inText) {
	var outText = "";
	for (var i=inText.length-1; i>=0; i--) {
		outText+= inText.substr(i,1);;
	}
	return outText;
}


//Form checking ------------------------------------------
function checkForm(inForm, inFields, inMessage) {

	var complete = true;
	for (var i=0; i<inFields.length; i++) {
		complete &= (inForm.elements[inFields[i]].value.length > 0);
	}

	if (!complete) {
		document.getElementById("formMessage").innerHTML = inMessage;
		return false;
	} else {
		return true;
	}
}


//Dynamic data loading -----------------------------------
var serverPresent   = location.hostname;
var requestQueue    = [];
var request         = null;
var requestTarget   = 0;
var requestCallback = "";
var requestRunning  = false;
function distributeContent() {
	if (request.readyState == 4) {
		if (request.status == 200 || !serverPresent) {

			// Javascript transfer hack
			if (request.responseText.indexOf("javascript:") === 0) {
				eval(request.responseText.substr(11));
			} else {
				var targetObj = document.getElementById(requestTarget);
				targetObj.innerHTML = request.responseText;
			}

			// Invoke callback
			if (requestCallback) {
				eval(requestCallback);
			}

			// Reset request state
			requestRunning = false;
			loadContent();
		}
	}
}

function loadContent() {

	// Check wheter a request is running
	if (!requestRunning && requestQueue.length) {

		// Lock requesting
		requestRunning = true;

		// Get last queued request
		var thisRequest = requestQueue.shift();
		var inUrl       = thisRequest[1];
		var inTargetId  = thisRequest[0];
		var inCallback  = thisRequest[2];

		// Load last queue
		requestTarget   = inTargetId;
		requestCallback = inCallback;
		if (window.XMLHttpRequest) {
			request = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		request.open("GET", inUrl, true);
		request.onreadystatechange = distributeContent;
		request.send(null);
	}
}

function queueContent(inTargetId, inUrl, inCallback) {
	// Queue the request
	requestQueue.push([inTargetId, inUrl, inCallback]);

	// Load last queue
	loadContent();
}

