	/* Constructor */
	ContentManager = function(){}
	
	ContentManager.prototype.getElem  = function(id){ return document.getElementById(id); }
	ContentManager.prototype.getValue = function(elemId){ return this.getElem(elemId).innerHTML; }

	
	/* Verify that all passed elemIds are valid elements in Dom. Returns true/false */
	ContentManager.prototype.elemsExist = function(elemIds){
		for (var i=0; i<elemIds.length; i++){
			if (this.getElem(elemIds[i]) == null) {
				// alert("missing data div: " + elemIds[i]);
				return false;
			}
		}
		return true;
	}
	
	
	/* Verify that passed node has child with childId. Returns true/false */
	ContentManager.prototype.hasChildWithId = function(node, childId){
		if (node == null) return false;
		var children = node.childNodes;
		if (children.length > 0){
			for (var i=0; i<children.length; i++){
				if (children[i].nodeType==1 && children[i].id==childId) return true;
			}
		}
		return false;
	}
	
	
	/* Returns child node of elemId with id: childId. ELEMID MUST BE UNIQUE! */
	ContentManager.prototype.getChildNode = function(elemId, childId){
		var childNode;
		var children = this.getElem(elemId).childNodes;
		for (var i=0; i<children.length; i++){
			if (children[i].nodeType==1 && children[i].id==childId) childNode = children[i];
		}
		return childNode;
	}
	
	
	/* Returns child with childId of parentNode.  Note: requires parent NODE, not ID */
	ContentManager.prototype.getChildNodeFromParentNode = function(parentNode, childId){
		var childNode;
		var children = parentNode.childNodes;
		for (var i=0; i<children.length; i++){
			if (children[i].nodeType==1 && children[i].id==childId) childNode = children[i];
		}
		return childNode;
	}
	
	
	/* Loads contents of childId of elemId into targetId */
	ContentManager.prototype.loadChildValue = function(elemId, childId, targetId){
		if (!this.elemsExist([elemId,targetId])) return;
		var childNode = this.getChildNode(elemId, childId);
		if (childNode != null) {
			this.getElem(targetId).innerHTML = childNode.innerHTML;
		}
	}
	
	
	/* Returns contents of subChildId of childId or elemId */
	ContentManager.prototype.getSubChildValue = function(elemId, childId, subChildId){
		var subChildValue = "";
		var subChildren;
		var childNode = this.getChildNode(elemId, childId);
		if (childNode != null){
			subChildren  = childNode.childNodes;
	
			for (var i=0; i<subChildren.length; i++){
				if (subChildren[i].nodeType==1 && subChildren[i].id==subChildId){
					subChildValue = subChildren[i].innerHTML;
				}
			}
		}
		return subChildValue;
	}
	
	
	/* Loads contents of subChildId of childId of elemId */
	ContentManager.prototype.loadSubChildValue = function(elemId, childId, subChildId, targetId){
		if (!this.elemsExist([elemId,targetId])) return;
		this.getElem(targetId).innerHTML = this.getSubChildValue(elemId, childId, subChildId);
	}
	
	
	/* Returns IMG tag for photoType of elemId */	
	ContentManager.prototype.getPhotoHTML = function(elemId, photoType){
		var path      = this.getSubChildValue(elemId, photoType, "path");
		var caption   = this.getSubChildValue(elemId, photoType, "caption");
		var html = "<img src='" + path + "' alt='" + caption + "' border='0'/>";
		return html;
	}
	
	
	/* Loads IMG tag for photoType of elemId into targetId */	
	ContentManager.prototype.loadPhoto = function(elemId, photoType, targetId){
		if (!this.elemsExist([elemId,targetId])) return;
		this.getElem(targetId).innerHTML = this.getPhotoHTML(elemId, photoType);
	}
	

	/* Returns html for non-media link. Note: Accepts Node obj, not Id */
	ContentManager.prototype.getLinkHtmlFromNode = function(node, linkTextChild){ 
		//alert(this.getChildNodeFromParentNode(node, "url").innerHTML);
		if (!this.hasChildWithId(node, "url") || !this.hasChildWithId(node, linkTextChild)) return "";
		var url      = this.getChildNodeFromParentNode(node, "url").innerHTML;
		var linkText = this.getChildNodeFromParentNode(node, linkTextChild).innerHTML;
		var html = "";
		var htmlLink = "";
		/* The line below was added to load the 'headline' if the 'altHeadline' doesn't exist */
		if (linkTextChild == "altHeadline" && linkText == "") linkText = this.getChildNodeFromParentNode(node, "headline").innerHTML;
		if (linkText.indexOf("|") != -1) {
			var multiLinkText = linkText.split("|");
			//multiLinkText[0] = multiLinkText[0].replace("</a>","");
			var htmlMain = "<a onfocus='this.blur()' href='" + url + "'>" + multiLinkText[0] + "</a>";
			var htmlMore = "";
			for (var x=1; x<multiLinkText.length; x++) {
				//if (multiLinkText[x].indexOf("</a>") == -1) multiLinkText[x] = multiLinkText[x] + "</a>";
				htmlMore += " | " + multiLinkText[x];
			}
			htmlLink += htmlMain + htmlMore; 
		}
		else htmlLink = "<a onfocus='this.blur()' href='" + url + "'>" + linkText + "</a>";
		if (node.id.indexOf("N") != -1) html = "&bull;&nbsp; " + htmlLink;
		else html = htmlLink;
		return html;  
	}

	/* Returns html for MEDIA link */
	ContentManager.prototype.getMediaLinkHtml = function(mediaLinkObj, mediaType, linkText, hideIcons){
		var html = "";
		var params = "";
		var type = "";
		
		with (mediaLinkObj){
			switch (mediaType){
				case "video" : type = "v"; break;
				case "audio" : type = "a"; break;
			}

			params = "{w_id:'" + url.w_id + "',w:'" + url.w + "',pid:'" + url.pid + "',fid:'" + url.fid + "',v:'" + url.v + "'}";
	
			if (speed != "56") {
				html += "<a href=\"javascript:void(playMedia2(" + params + "))\">" + linkText + "</a>";
				if (!hideIcons) {
					html += " <img src='/images/icons/" + mediaType + ".gif' alt=''/>";
						if (mediaType != "audio") html +=  " <span>" + speed + "K</span><br/>";
				}
			}
		}
		return html;
	}		
	
	
	/* Load link from elemId into targetId.  Handles media and non-media links. */
	ContentManager.prototype.loadLink = function(elemId, linkTextChild, targetId, hideIcons){
		if (typeof hideIcons == "undefined") hideIcons = false;
		if (!this.elemsExist([elemId,targetId])) return;
		var html = "";
		var linkElem  = this.getElem(elemId);
		var mediaType = this.getChildNodeFromParentNode(linkElem,"media_type").innerHTML;
		
		if (mediaType == "audio" || mediaType == "video"){
			var urlNode = this.getChildNodeFromParentNode(linkElem,"url");
			var urlData = eval(urlNode.innerHTML);
			for (var j=0; j<urlData.urls.length; j++){
				var linkText = this.getChildNodeFromParentNode(linkElem,linkTextChild).innerHTML;
				html += this.getMediaLinkHtml(urlData.urls[j], mediaType, linkText, hideIcons);
			}
		}				
		else html += this.getLinkHtmlFromNode(linkElem,linkTextChild);
		this.getElem(targetId).innerHTML = html;
	}
	
