// Ergonet : historyAndFavorites.js
/*
	products
	articles
	discussions
	people
	media
	
Art -> Prod
Act -> Page
Shows -> Disc
TrainConsul -> People
Production ->Media
	
*/
var isLoggedInForFavorites=getCookie(sessionCookieName);

// Prefs and Settings

var historyStoreName="historyDivContent";//"visitHistory";
var favoritesStoreName="favoritesDivContent";//"favorites";
var manageFavoritesHeading="<h1>Manage Favorites</h1>";
var HistoryAriaFilePath='';
var HistoryType='';
var HistoryParams='';

var ergoVisitHistory=new Array();
/*
var ergoArtHistory=new Array();
var ergoActHistory=new Array();
var ergoDiscHistory=new Array();
var ergoTrainConsulHistory=new Array();
var ergoProductionHistory=new Array();
*/
var ergoProdHistory=new Array();
var ergoPageHistory=new Array();
var ergoDiscHistory=new Array();
var ergoPeopleHistory=new Array();
var ergoMediaHistory=new Array();

var ergoFavorites=new Array();
/*
var ergoArtFavorites=new Array();
var ergoActFavorites=new Array();
var ergoShowsFavorites=new Array();
var ergoTrainConsulFavorites=new Array();
var ergoProductionFavorites=new Array();
*/
var ergoProdFavorites=new Array();
var ergoPageFavorites=new Array();
var ergoDiscFavorites=new Array();
var ergoPeopleFavorites=new Array();
var ergoMediaFavorites=new Array();

var ergoProdTableauParam="";
var ergoPageTableauParam="";
var ergoDiscTableauParam="";
var ergoPeopleTableauParam="";
var ergoMediaTableauParam="";

var currentHistoryBlock='';
var currentFavoritesBlock='';
var hHeadArray = new Array(5);

var historyAndFavoritesShowing=true;

// start positions are:20, 42, 64, 86, 108
for (var i=0; i<5; i++) { hHeadArray[i]=new Array(); }
hHeadArray[0][0]='hHeadProd';
hHeadArray[0][1]=0; // position open
hHeadArray[0][2]=0; // move to and start position
hHeadArray[0][3]=false; // Products is not open right now
hHeadArray[0][4]=0; // position when at the bottom - never is!

hHeadArray[1][0]='hHeadPage';
hHeadArray[1][1]=22; // position open
hHeadArray[1][2]=22; // move to and start position
hHeadArray[1][3]=false; // 
hHeadArray[1][4]=310; // position when at the bottom - i.e. when casting is open

hHeadArray[2][0]='hHeadDisc';
hHeadArray[2][1]=44; // position open
hHeadArray[2][2]=44; // move to and start position
hHeadArray[2][3]=false; // Show is not open right now
hHeadArray[2][4]=332; // position when at the bottom

hHeadArray[3][0]='hHeadPeople';
hHeadArray[3][1]=66; // position open
hHeadArray[3][2]=66; // move to and start position
hHeadArray[3][3]=false; 
hHeadArray[3][4]=354; // position when at the bottom

hHeadArray[4][0]='hHeadMedia';
hHeadArray[4][1]=88; // position open
hHeadArray[4][2]=88; // move to - always the bottom
hHeadArray[4][3]=false; 
hHeadArray[4][4]=376; // position when at the bottom

var fHeadArray = new Array(5);
for (var i=0; i<5; i++) { fHeadArray[i]=new Array(); }
fHeadArray[0][0]='fHeadProd';
fHeadArray[0][1]=0; // position open
fHeadArray[0][2]=0; // move to
fHeadArray[0][3]=false; // Products is not open right now
fHeadArray[0][4]=0; // position when at the bottom - never is!

fHeadArray[1][0]='fHeadPage';
fHeadArray[1][1]=22; // position open
fHeadArray[1][2]=22; // move to
fHeadArray[1][3]=true; // Docs is open
fHeadArray[1][4]=310; // position when at the bottom - i.e. when casting is open

fHeadArray[2][0]='fHeadDisc';
fHeadArray[2][1]=44; // position open
fHeadArray[2][2]=44; // move to
fHeadArray[2][3]=false; // Show is not open right now
fHeadArray[2][4]=332; // position when at the bottom

fHeadArray[3][0]='fHeadPeople';
fHeadArray[3][1]=66; // position open
fHeadArray[3][2]=66; // move to
fHeadArray[3][3]=false; 
fHeadArray[3][4]=354; // position when at the bottom

fHeadArray[4][0]='fHeadMedia';
fHeadArray[4][1]=88; // position open
fHeadArray[4][2]=88; // move to - always the bottom
fHeadArray[4][3]=false; 
fHeadArray[4][4]=376; // position when at the bottom

var fhAnimateHeadingsFrameDuration=30; // milliseconds
var fhAnimateHeadingsStyle="divide"; // linear or divide

var hHeadAnimationFrames=20;
var hHeadAnimationCurrentFrame=0;
var hHeadTimeoutId=null;
var fHeadAnimationFrames=20;
var fHeadAnimationCurrentFrame=0;
var fHeadTimeoutId=null;
// currentHistoryBlock = hHeadProd, hHeadPage, hHeadShow, hHeadPeople, hHeadMedia
var historyBlockArray = new Array("hHeadProd", "hHeadPage", "hHeadDisc", "hHeadPeople", "hHeadMedia");
var favoritesBlockArray = new Array("fHeadProd", "fHeadPage", "fHeadDisc", "fHeadPeople", "fHeadMedia");
var historyRowsContainers=new Array("prodHistory","pageHistory","discHistory","peopleHistory","mediaHistory");
var favoritesRowsContainers=new Array("prodFavorites","pageFavorites","discFavorites","peopleFavorites","mediaFavorites");

var favoritesIsOpen=false;
var holdFavoritesOpen=false;
var favoriteSelectorString='';
var manageFavoritesMode=false;
var manageFavoritesMenu="";
var expFavsTimeout='';
var expandFavoritesFrames=30;
var expandFavoritesCurrentFrame=0;
var hideOverflowDivIdArray=new Array("tableau","listContent","searchResults","content01");
var heading01Content='';
var currentFavoritesSetId=0;
var currentFavName='';
var currentFavDescription='';
function backHistory() {
	ergoVisitHistory.shift();
	getData(ariaFilePath,type,params)
	var string = "#"+ergoVisitHistory[0][2]+","+ergoVisitHistory[0][3]+","+ergoVisitHistory[0][4];
	document.location=string;
	getData(ergoVisitHistory[0][2],ergoVisitHistory[0][3],ergoVisitHistory[0][4]);
}
function swapVisibilityOfHistoryAndFavorites(mode) {
	
	var favoritesStoreObject=document.getElementById(favoritesStoreName);
	if (favoritesStoreObject != null) {
		if (mode=='h') {
			if (!holdFavoritesOpen || manageFavoritesMode) {
				manageFavoritesMode=false;
				favoritesIsOpen=false;
				minimiseFavorites(); 
				favoritesStoreObject.style.visibility="hidden";
				favoritesStoreObject.innerHTML='';
				favoritesStoreObject.style.left="220px"; // 825px (width 120px)
				favoritesStoreObject.style.width="220px";
				historyAndFavoritesShowing=false;
				setContentWidth('full');
			}
			manageFavoritesTableau();
			
		} else {
			favoritesIsOpen=true;
			favoritesStoreObject.style.visibility="visible";
			favoritesStoreObject.innerHTML=initFavoritesDisplay();
			expressFavorites();
			setFavoritesBlockVisibility();
			favoritesStoreObject.style.left="0px"; // 825px (width 120px)
			historyAndFavoritesShowing=true;
			setContentWidth('narrow');
			
		}
	}
	var historyStoreObject=document.getElementById(historyStoreName);
	if (historyStoreObject != null) {
		setOpenCloseFavoritesLinks(mode);
		if (mode=='f') {
			historyStoreObject.style.visibility="hidden";
			historyStoreObject.style.left="220px";
			historyStoreObject.innerHTML='';
		} else {
			historyStoreObject.style.visibility="visible";
			historyStoreObject.style.left="0px";
			historyStoreObject.innerHTML=initHistoryDisplay();
			expressHistory();
			setHistoryBlockVisibility();
		}
	}
//	heading01Content='';
	
}

function openFavoritesAndManage() {
	if (!favoritesIsOpen) {
		swapVisibilityOfHistoryAndFavorites('f');
		manageFavoritesMode=true; 
		manageFavorites();
	} else {
		swapVisibilityOfHistoryAndFavorites('h');
		manageFavoritesMode=false; 
	}
}
/*
function manageFavoritesTableau() {
	// A function to control the change of display of the favorites tableau that extends on function swapVisibilityOfHistoryAndFavorites(mode) {..}
	if (manageFavoritesMode) {
		// always called from a request to hide the favorites
		manageFavoritesMode=false;
		hideOverflowOfDivsBehindTheFavoritesTableau(false);
		hideFavoritesTableau();
	}
//	var heading=document.getElementById('head01');
//	if (heading != null && heading01Content && heading01Content!=manageFavoritesHeading) {
//		heading.innerHTML=heading01Content;
//	}
//	heading01Content='';
//	if (heading.innerHTML==manageFavoritesHeading) {
//		heading.innerHTML='';
//	}
}
*/
function setContentWidth(width) {
	// if we need to change page object sizes - we don't
}
function recordHistory(label,pageType) {
	HistoryType=pageType;
//	swapVisibilityOfHistoryAndFavorites('h');
	var historyStoreObject=document.getElementById(historyStoreName);
	var historyString="";
	var newhistoryString="";
		//alert("currentHistoryBlock: "+currentHistoryBlock);
	
	if (historyStoreObject != null) {
		
		if (!currentHistoryBlock) {
			historyString+=initHistoryDisplay();
			historyStoreObject.innerHTML=historyString;
		}
		
		
		// create history
		var pageNumber='';
		if (HistoryParams) {
			var hpa = HistoryParams.split('&');
			for (var i=0; i<hpa.length; i++) {
				var row=hpa[i].split('=');
				if (row[0]=='pageNum') {
					pageNumber=row[1];
					if (label.length>10) {
						label += "<br/> (page "+pageNumber+")";
					} else {
						label += " (page "+pageNumber+")";
					}
				}
			}
		}
		newhistoryString = "<a href=\"javascript:getData(\'"+HistoryAriaFilePath+"\',\'"+HistoryType+"\',\'"+HistoryParams+"'\)\">"+label+"</a>";
		var convertedHistoryType = HistoryType;
//		if (convertedHistoryType=='people' || convertedHistoryType=='media') {
//			convertedHistoryType='prod';
//		}
//		if (convertedHistoryType=='disc') {
//			convertedHistoryType='page';
//		}
//		newhistoryString = "<a href=\"#"+HistoryAriaFilePath+","+convertedHistoryType+","+HistoryParams+"\">"+label+"</a>";
		var row = new Array()
		var path = HistoryAriaFilePath+","+HistoryType;//+","+HistoryParams;
		//if (HistoryParams) {path += '?'+HistoryParams; }
		
		row[0]=path; // for comparison - is it already listed?
		row[1]=newhistoryString; // the link in all it's glory
		row[2]=HistoryAriaFilePath;
		row[3]=HistoryType;
		row[4]=HistoryParams;
		row[5]=label;
		// record history
		
		if (HistoryAriaFilePath=="products/index.php") { ergoProdTableauParam=HistoryParams;}
		if (HistoryAriaFilePath=="index.php") { ergoPageTableauParam=HistoryParams;}
		if (HistoryAriaFilePath=="forum/index.php") { ergoDiscTableauParam=HistoryParams;}
		if (HistoryAriaFilePath=="people/index.php") { ergoPeopleTableauParam=HistoryParams;}
		if (HistoryAriaFilePath=="media/index.php") { ergoMediaTableauParam=HistoryParams;}
		
//		General History
			for(var i=0; i<ergoVisitHistory.length; i++) {
				if (ergoVisitHistory[i][0]==path) {
					ergoVisitHistory.splice(i,1);
				}
			}
			ergoVisitHistory.unshift(row);
			
// Specific History
		if (HistoryType=='prod') {
			for(var i=0; i<ergoProdHistory.length; i++) {
				if (ergoProdHistory[i][0]==path) {
					ergoProdHistory.splice(i,1);
				}
			}
			fhHeadSlide('historyDivContent','hHeadProd');
			ergoProdHistory.unshift(row);
		}
		if (HistoryType=='page') {
			for(var i=0; i<ergoPageHistory.length; i++) {
				if (ergoPageHistory[i][0]==path) {
					ergoPageHistory.splice(i,1);
				}
			}
			fhHeadSlide('historyDivContent','hHeadPage');
			ergoPageHistory.unshift(row);
		}
		if (HistoryType=='disc') {
			for(var i=0; i<ergoDiscHistory.length; i++) {
				if (ergoDiscHistory[i][0]==path) {
					ergoDiscHistory.splice(i,1);
				}
			}
			fhHeadSlide('historyDivContent','hHeadDisc');
			ergoDiscHistory.unshift(row);
		}
		if (HistoryType=='people') {
			for(var i=0; i<ergoPeopleHistory.length; i++) {
				if (ergoPeopleHistory[i][0]==path) {
					ergoPeopleHistory.splice(i,1);
				}
			}
			fhHeadSlide('historyDivContent','hHeadPeople');
			ergoPeopleHistory.unshift(row);
		}
		if (HistoryType=='media') {
			for(var i=0; i<ergoMediaHistory.length; i++) {
				if (ergoMediaHistory[i][0]==path) {
					ergoMediaHistory.splice(i,1);
				}
			}
			fhHeadSlide('historyDivContent','hHeadMedia');
			ergoMediaHistory.unshift(row);
		}
		
		expressHistory();
	}
}
function expressHistory() {
	if (ergoProdHistory.length>0) {
		var obj=document.getElementById('prodHistory');
		if (obj!=null) {
			var j=0;
			var str='';
			for(var i=0; i<ergoProdHistory.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getHistoryRow(j,ergoProdHistory[i]);
			}
			obj.innerHTML=str;
		}
	}

	if (ergoPageHistory.length>0) {
		var obj=document.getElementById('pageHistory');
		if (obj!=null) {
			var j=0;
			var str='';
			for(var i=0; i<ergoPageHistory.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getHistoryRow(j,ergoPageHistory[i]);
			}
			obj.innerHTML=str;
		}
	}

	if (ergoDiscHistory.length>0) {
		var obj=document.getElementById('discHistory');
		if (obj!=null) {
			var j=0;
			var str='';
			for(var i=0; i<ergoDiscHistory.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getHistoryRow(j,ergoDiscHistory[i]);
			}
			obj.innerHTML=str;
		}
	}
	
	if (ergoPeopleHistory.length>0) {
		var obj=document.getElementById('peopleHistory');
		if (obj!=null) {
			var j=0;
			var str='';
			for(var i=0; i<ergoPeopleHistory.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getHistoryRow(j,ergoPeopleHistory[i]);
			}
			obj.innerHTML=str;
		}
	}
	
	if (ergoMediaHistory.length>0) {
		var obj=document.getElementById('mediaHistory');
		if (obj!=null) {
			var j=0;
			var str='';
			for(var i=0; i<ergoMediaHistory.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getHistoryRow(j,ergoMediaHistory[i]);
			}
			obj.innerHTML=str;
		}
	}
	fhHeadSlide('historyDivContent','');
}

function setHistoryBlockVisibility() {
	for (var i=0; i<historyRowsContainers.length; i++) {
		var obj = document.getElementById(historyRowsContainers[i]);
		if (obj != null) {
			if (currentHistoryBlock != historyBlockArray[i]) {
				obj.style.visibility="hidden";
				obj.style.overflow="hidden";
			} else {
				obj.style.visibility="visible";
				obj.style.overflow="auto";
			}					
		}
	}
}

function setFavoritesBlockVisibility() {
	for (var i=0; i<favoritesRowsContainers.length; i++) {
		var obj = document.getElementById(favoritesRowsContainers[i]);
		if (obj != null) {
			if (currentFavoritesBlock != favoritesBlockArray[i]) {
				obj.style.visibility="hidden";
				obj.style.overflow="hidden";
			} else {
				obj.style.visibility="visible";
				obj.style.overflow="auto";
			}					
		}
	}
}
//"Items","Pages and Articles","Discussions","People","Video and Audio"
function initHistoryDisplay() {
	historyString='';
	historyString+="<div class='historyVisitHeading'>History</div><div class='hInnerBorder'>";
	fhGetPositions('historyDivContent','');
	// 20, 42, 64, 86, 108 use hHeadArray[0][2]
	historyString+="<div class=\"hHead\" id=\"hHeadProd\" style=\"top:"+hHeadArray[0][2]+"px\">"+
	"<div class=\"hHeadLink\" onmousedown=\"fhHeadSlide(\'"+historyStoreName+"\',\'hHeadProd\')\"></div>"+
	"<a href=\"#products/index.php,page,"+ergoProdTableauParam+"\">Items</a>"+
	"<div class=\"historyRows\" id=\"prodHistory\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";	
	historyString+="<div class=\"hHead\" id=\"hHeadPage\" style=\"top:"+hHeadArray[1][2]+"px\">" +
	"<div class=\"hHeadLink\" onmousedown=\"fhHeadSlide(\'"+historyStoreName+"\',\'hHeadPage\')\"></div>"+
	"<a href=\"#index.php,page,"+ergoPageTableauParam+"\">Pages and Articles</a>"+
	"<div class=\"historyRows\" id=\"pageHistory\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";	
	historyString+="<div class=\"hHead\" id=\"hHeadDisc\" style=\"top:"+hHeadArray[2][2]+"px\">" +
	"<div class=\"hHeadLink\" onmousedown=\"fhHeadSlide(\'"+historyStoreName+"\',\'hHeadDisc\')\"></div>"+
	"<a href=\"#forum/index.php,page,"+ergoDiscTableauParam+"\">Discussions</a>"+
	"<div class=\"historyRows\" id=\"discHistory\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";
	historyString+="<div class=\"hHead\" id=\"hHeadPeople\" style=\"top:"+hHeadArray[3][2]+"px\">" +
	"<div class=\"hHeadLink\" onmousedown=\"fhHeadSlide(\'"+historyStoreName+"\',\'hHeadPeople\')\"></div>"+
	"<a href=\"#people/index.php,page,"+ergoPeopleTableauParam+"\">People</a>"+
	"<div class=\"historyRows\" id=\"peopleHistory\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";
	historyString+="<div class=\"hHead\" id=\"hHeadMedia\" style=\"top:"+hHeadArray[4][2]+"px\">" +
	"<div class=\"hHeadLink\" onmousedown=\"fhHeadSlide(\'"+historyStoreName+"\',\'hHeadMedia\')\"></div>"+
	"<a href=\"#media/index.php,page,"+ergoMediaTableauParam+"\">Video and Audio</a>"+
	"<div class=\"historyRows\" id=\"mediaHistory\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";
	if (favoritesIsOpen) {
		historyString+="</div><div id=\"openCloseFavoritesLinks\">"+
		"<a href=\"javascript: holdFavoritesOpen=false; swapVisibilityOfHistoryAndFavorites('f');\">Close Favorites</a></div>";
	} else {
		historyString+="</div><div id=\"openCloseFavoritesLinks\">"+
		"<a href=\"javascript: holdFavoritesOpen=true; swapVisibilityOfHistoryAndFavorites('f');\">Open Favorites</a></div>";
	}
	return historyString;
}
function setOpenCloseFavoritesLinks(arg) {
	var obj = document.getElementById('openCloseFavoritesLinks');
	if (obj != null) {
		if (arg=='f') {
			obj.innerHTML="<a href=\"javascript:holdFavoritesOpen=false; swapVisibilityOfHistoryAndFavorites('h');\">Close Favorites</a>";
		} else {
			obj.innerHTML="<a href=\"javascript:holdFavoritesOpen=true; swapVisibilityOfHistoryAndFavorites('f')\">Open Favorites</a>";
		}
	}
}

function fhHeadSlide(column,whatWasClicked) {
	fhGetPositions(column,whatWasClicked);
	switch(column) {
		case "historyDivContent": 
			hAnimateHeadings();
		break;
		case "favoritesDivContent": 
			fAnimateHeadings();
		break;
	}
}
function fhGetPositions(column,whatWasClicked) {
	switch(column) {
		case "historyDivContent": 
			if (whatWasClicked) {
				currentHistoryBlock=whatWasClicked; 
			}
			setHistoryBlockVisibility();
			var useIndex=1;
			for (var i=0; i<hHeadArray.length; i++) {
				hHeadArray[i][3]=false;
				hHeadArray[i][2]=hHeadArray[i][useIndex];
				if (hHeadArray[i][0]==currentHistoryBlock) {
					hHeadArray[i][3]=true;
					useIndex=4;
				}
			}
		break;
		case "favoritesDivContent": 
			if (whatWasClicked) {
				currentFavoritesBlock=whatWasClicked; 
			}
			setFavoritesBlockVisibility();
			var useIndex=1;
			for (var i=0; i<fHeadArray.length; i++) {
				fHeadArray[i][3]=false;
				fHeadArray[i][2]=fHeadArray[i][useIndex];
				if (fHeadArray[i][0]==currentFavoritesBlock) {
					fHeadArray[i][3]=true;
					useIndex=4;
				}
			}
		break;
	}
}

function hAnimateHeadings() {
	// this function animates the headings commissioned by fhHeadSlide
	if (hHeadAnimationCurrentFrame < hHeadAnimationFrames) {
		hHeadTimeoutId=window.setTimeout('hAnimateHeadings()',fhAnimateHeadingsFrameDuration);
		for (var i=0; i<hHeadArray.length; i++) {
			var obj=document.getElementById(hHeadArray[i][0]);
			if (obj != null) {
				var currentPos=obj.style.top;
				var currentY = parseInt(currentPos); // position of the heading when clicked
				var travel = Math.floor(hHeadArray[i][2]-currentY); // total distance that will be travelled
				switch (fhAnimateHeadingsStyle) {
					case "linear":
						var step = Math.floor(travel / (hHeadAnimationFrames-(hHeadAnimationCurrentFrame))); // how far to travel in this step
					break;
					case "divide":
						var step = travel / 2;
					break;
				}
	/*			if (hHeadArray[i][0]=='hHeadShow') {
					trace("id: "+hHeadArray[i][0]+" currentY: "+currentY+" travel: "+travel+" step: "+step+" move: "+(currentY+step));
				} 				*/
				obj.style.top= (currentY+step) + 'px';
			}
		}
		hHeadAnimationCurrentFrame++;
	} else {
		clearTimeout(hHeadTimeoutId);
		hHeadAnimationCurrentFrame=0;
	}
}

function fAnimateHeadings() {
	// this function animates the headings commissioned by fhHeadSlide
	if (fHeadAnimationCurrentFrame < fHeadAnimationFrames) {
		fHeadTimeoutId=window.setTimeout('fAnimateHeadings()',fhAnimateHeadingsFrameDuration);
		for (var i=0; i<fHeadArray.length; i++) {
			var obj=document.getElementById(fHeadArray[i][0]);
			if (obj != null) {
				var currentPos=obj.style.top;
				var currentY = parseInt(currentPos); // position of the heading when clicked
				var travel = Math.floor(fHeadArray[i][2]-currentY); // total distance that will be travelled
				switch (fhAnimateHeadingsStyle) {
					case "linear":
						var step = Math.floor(travel / (fHeadAnimationFrames-(fHeadAnimationCurrentFrame))); // how far to travel in this step
					break;
					case "divide":
						var step = travel / 2;
					break;
				}
	/*		if (fHeadArray[i][0]=='fHeadPage') {
					trace("id: "+fHeadArray[i][0]+" currentY: "+currentY+" travel: "+travel+" step: "+step+" move: "+(currentY+step));
				} 				*/
				obj.style.top= (currentY+step) + 'px';
			}
		}
		fHeadAnimationCurrentFrame++;
	} else {
		clearTimeout(fHeadTimeoutId);
		fHeadAnimationCurrentFrame=0;
	}
}
function getYposFromId() {
	// return the Y position of the element who's id was passed,
}

function getHistoryRow(j,row) {
	/*
		row[0]=path; // for comparison - is it already listed?
		row[1]=newhistoryString; // the link in all it's glory
		row[2]=HistoryAriaFilePath;
		row[3]=HistoryType;
		row[4]=HistoryParams;
		row[5]=label;
		*/
	var openPageLink = "<a href=\"#"+row[0]+"\" style=\"width:180px;\">"+row[5]+"</a>";
	var jsSafeLabel = row[5].replace(/'/g,"\\'");
	var args = row[0]+"\',\'\',\'\',\'"+row[3]+"\',\'\',\'"+jsSafeLabel; //row[5];
	var addToFavoritesLink = "<div style=\"width:14px;height:18px;top:2px;position:absolute;right:10px;\">"+
	"<a href=\"javascript:addToFavorites(\'"+args+"\')\" title=\"Add "+row[5]+" to favorites\" style=\"width:14px;\">"+
	"<img src=\"/lib/graphics/favoritesAdd.gif\" /></a></div>";
	output="<div class='hRow"+j+"'>"+openPageLink+addToFavoritesLink+"</div>";
	return output;
}

function getFavoritesRow(j,row) {
	var openPageLink = "<div style=\"width:180px;\"><a href=\"#"+row[0]+"\" style=\"width:180px;\">"+row[5]+"</a>";
	var jsSafeLabel = '';
	if (row[5]) { jsSafeLabel = row[5].replace(/'/g,"\\'"); }
	var args = row[0]+"\',\'\',\'\',\'"+row[3]+"\',\'\',\'"+jsSafeLabel;
	var deleteFavoritesLink = "<div style=\"width:14px;height:18px;top:2px;position:absolute;right:10px;\">"+
	"<a href=\"javascript:removeFavorites(\'"+args+"\')\" title=\"Remove "+row[5]+" from favorites\" style=\"width:14px;\">"+
	"<img src=\"/lib/graphics/favoritesRemove.gif\" /></a></div>";
	output="<div class='fRow"+j+"'>"+openPageLink+deleteFavoritesLink+"</div></div>";
	return output;
}
//  addToFavorites('events/index.php','','','prod','','The page title','')
function addToFavorites() {
	// Transfer an item from the History to the Favorites
	var row=addToFavorites.arguments;
	if (!manageFavoritesMode) {
		swapVisibilityOfHistoryAndFavorites('f');
	}
	/*
		row[0]=path; // for comparison - same as history array
		row[1]=top; // position of tableau at last drag stop
		row[2]=left; // position of tableau at last drag stop
		row[3]=HistoryType; // same as history array
		row[4]=divId; // The id of the tableau div
		row[5]=label; // same as history array
		row[6]=image; // tableau image - thumbnail
		7 .. Description
		8 .. Skills
		9 .. brocure sent ??
		etc etc..
	*/
	favoritesString='';
	var favoritesStoreObject=document.getElementById(favoritesStoreName);
	if (favoritesStoreObject != null) {
		if (!currentFavoritesBlock) {
			favoritesString+=initFavoritesDisplay();
			favoritesStoreObject.innerHTML=favoritesString;
		}
		if (row[3]=='prod') {
		//	alert('Product');
			for(var i=0; i<ergoProdFavorites.length; i++) {
				if (ergoProdFavorites[i][0]==row[0]) {
					ergoProdFavorites.splice(i,1);
				}
			}
			fhHeadSlide(favoritesStoreName,'fHeadProd');
			ergoProdFavorites.unshift(row);
		}
		if (row[3]=='page') {
			for(var i=0; i<ergoPageFavorites.length; i++) {
				if (ergoPageFavorites[i][0]==row[0]) {
					ergoPageFavorites.splice(i,1);
				}
			}
			fhHeadSlide(favoritesStoreName,'fHeadPage');
			ergoPageFavorites.unshift(row);
		}
		
		if (row[3]=='disc') {
			for(var i=0; i<ergoDiscFavorites.length; i++) {
				if (ergoDiscFavorites[i][0]==row[0]) {
					ergoDiscFavorites.splice(i,1);
				}
			}
			fhHeadSlide(favoritesStoreName,'fHeadDisc');
			ergoDiscFavorites.unshift(row);
		}
		
		if (row[3]=='people') {
			for(var i=0; i<ergoPeopleFavorites.length; i++) {
				if (ergoPeopleFavorites[i][0]==row[0]) {
					ergoPeopleFavorites.splice(i,1);
				}
			}
			fhHeadSlide(favoritesStoreName,'fHeadPeople');
			ergoPeopleFavorites.unshift(row);
		}
		
		if (row[3]=='media') {
			for(var i=0; i<ergoMediaFavorites.length; i++) {
				if (ergoMediaFavorites[i][0]==row[0]) {
					ergoMediaFavorites.splice(i,1);
				}
			}
			fhHeadSlide(favoritesStoreName,'fHeadMedia');
			ergoMediaFavorites.unshift(row);
		}
		
		expressFavorites();
		
		var obj=document.getElementById('addToFavoritesLink');
		if (obj != null) {
			obj.innerHTML = "Added";
		}
		if (manageFavoritesMode) {
			createFavoritesTableau();
		}
	} // end if favorites object != null
}
function expressFavorites() {
	// express
	var obj=document.getElementById('prodFavorites');			
	if (obj!=null) {
		if (ergoProdFavorites.length>0) {
			var j=0;
			var str='';
			for(var i=0; i<ergoProdFavorites.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getFavoritesRow(j,ergoProdFavorites[i]);
			}
			obj.innerHTML=str;
		} else {
			obj.innerHTML='';
		}
	}

	var obj=document.getElementById('pageFavorites');
	if (obj!=null) {	
		if (ergoPageFavorites.length>0) {
			var j=0;
			var str='';
			for(var i=0; i<ergoPageFavorites.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getFavoritesRow(j,ergoPageFavorites[i]);
			}
			obj.innerHTML=str;
		} else {
			obj.innerHTML='';
		}
	}
	
	var obj=document.getElementById('discFavorites');
	if (obj!=null) {
		if (ergoDiscFavorites.length>0) {
			var j=0;
			var str='';
			for(var i=0; i<ergoDiscFavorites.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getFavoritesRow(j,ergoDiscFavorites[i]);
			}
			obj.innerHTML=str;
		} else {
			obj.innerHTML='';
		}
	}

	var obj=document.getElementById('peopleFavorites');
	if (obj!=null) {	
		if (ergoPeopleFavorites.length>0) {
			var j=0;
			var str='';
			for(var i=0; i<ergoPeopleFavorites.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getFavoritesRow(j,ergoPeopleFavorites[i]);
			}
			obj.innerHTML=str;
		} else {
			obj.innerHTML='';
		}
	}
	
	var obj=document.getElementById('mediaFavorites');
	if (obj!=null) {
		if (ergoMediaFavorites.length>0) {
			var j=0;
			var str='';
			for(var i=0; i<ergoMediaFavorites.length; i++) {
				if (j>0) { j--; } else { j++; }
				str+=getFavoritesRow(j,ergoMediaFavorites[i]);
			}
			obj.innerHTML=str;
		} else {
			obj.innerHTML='';
		}
	}
	fhHeadSlide(favoritesStoreName,'');
}

function removeFavorites() {
	var row=removeFavorites.arguments;
	if (row[3]=='prod') {
		for(var i=0; i<ergoProdFavorites.length; i++) {
			if (ergoProdFavorites[i][0]==row[0]) {
				ergoProdFavorites.splice(i,1);
			}
		}
	}
	if (row[3]=='page') {
		for(var i=0; i<ergoPageFavorites.length; i++) {
			if (ergoPageFavorites[i][0]==row[0]) {
				ergoPageFavorites.splice(i,1);
			}
		}
	}
	if (row[3]=='disc') {
		for(var i=0; i<ergoDiscFavorites.length; i++) {
			if (ergoDiscFavorites[i][0]==row[0]) {
				ergoDiscFavorites.splice(i,1);
			}
		}
	}
	if (row[3]=='people') {
		for(var i=0; i<ergoPeopleFavorites.length; i++) {
			if (ergoPeopleFavorites[i][0]==row[0]) {
				ergoPeopleFavorites.splice(i,1);
			}
		}
	}
	if (row[3]=='media') {
		for(var i=0; i<ergoMediaFavorites.length; i++) {
			if (ergoMediaFavorites[i][0]==row[0]) {
				ergoMediaFavorites.splice(i,1);
			}
		}
	}

	if (manageFavoritesMode) {
		expressFavorites();
		createFavoritesTableau();
	} else {
		swapVisibilityOfHistoryAndFavorites('f');
	}
}
//"Items","Pages and Articles","Discussions","People","Video and Audio"
function initFavoritesDisplay() {
	favoritesString='';
	favoritesString+="<div id='favHeading'>Favourites</div><div class='fInnerBorder'>";
	fhGetPositions(favoritesStoreName,'');
	// 20, 42, 64, 86, 108 use fHeadArray[0][2]
	favoritesString+="<div class='fHead' id='fHeadProd' style='top:"+fHeadArray[0][2]+"px'>"+
	"<div class=\"fHeadLink\" onmousedown=\"fhHeadSlide(\'"+favoritesStoreName+"\',\'fHeadProd\')\"></div>"+
	"Items<div class=\"favoritesRows\" id=\"prodFavorites\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";	
	favoritesString+="<div class=\"fHead\" id='fHeadPage' style='top:"+fHeadArray[1][2]+"px'>" +
	"<div class=\"fHeadLink\" onmousedown=\"fhHeadSlide(\'"+favoritesStoreName+"\',\'fHeadPage\')\"></div>"+
	"Pages and Articles<div class=\"favoritesRows\" id=\"pageFavorites\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";	
	favoritesString+="<div class=\"fHead\" id='fHeadDisc' style='top:"+fHeadArray[2][2]+"px'>" +
	"<div class=\"fHeadLink\" onmousedown=\"fhHeadSlide(\'"+favoritesStoreName+"\',\'fHeadDisc\')\"></div>"+
	"Discussions<div class=\"favoritesRows\" id=\"discFavorites\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";
	favoritesString+="<div class=\"fHead\" id='fHeadPeople' style='top:"+fHeadArray[3][2]+"px'>" +
	"<div class=\"fHeadLink\" onmousedown=\"fhHeadSlide(\'"+favoritesStoreName+"\',\'fHeadPeople\')\"></div>"+
	"People<div class=\"favoritesRows\" id=\"peopleFavorites\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";
	favoritesString+="<div class=\"fHead\" id='fHeadMedia' style='top:"+fHeadArray[4][2]+"px'>" +
	"<div class=\"fHeadLink\" onmousedown=\"fhHeadSlide(\'"+favoritesStoreName+"\',\'fHeadMedia\')\"></div>"+
	"Video and Audio<div class=\"favoritesRows\" id=\"mediaFavorites\" style=\"visibility:hidden; overflow:hidden\"></div>"+
	"</div>";	
	if (favoriteSelectorString) {
		favoritesString+="</div><div id=\"slideFavoritesLinks\">"+favoriteSelectorString+" <a href=\"javascript:manageFavoritesMode=true; manageFavorites()\">Manage Favorites</a></div>";
	}	else {
		favoritesString+="</div><div id=\"slideFavoritesLinks\"><a href=\"javascript:manageFavoritesMode=true; manageFavorites()\">Manage Favorites</a></div>";
		//favoritesString+="</div><div id=\"slideFavoritesLinks\"></div>";
	}
	return favoritesString;
}
function setFavoritesMenu() {
	manageFavoritesMenu="";
	if (!isLoggedInForFavorites) {
		manageFavoritesMenu="<li><a href=\"javascript:displayRegistration()\" id=\"registerLink\">Register</a></li>"+
		"<li><a href=\"javascript:displayLogin('')\" id=\"loginLink\">Log In</a></li>";
	} else {
		// get the favorites select combo (in the favorites footer actually)
		var params="&func=getFavoritesSelector&t="+isLoggedInForFavorites;
		//alert(params);
		postFavoritesData(params);
	}
	manageFavoritesMenu+="<a href=\"javascript:saveFavorites()\" title=\"Save Favorites\">Save</a>"+
"<li><a href=\"javascript:collapseFavorites();\">Close Favorites Manager</a></li>";	
//	manageFavoritesMenu+="<a href=\"javascript:saveFavorites()\" title=\"Save Favorites\">Save</a>"+
//"<li><a href=\"javascript:setHoldFavoritesOpen(false);clearAwayRegistrationAndLogin();collapseFavorites();\">Close Favorites Manager</a></li>";	
}
function setHoldFavoritesOpen(bool) {
	holdFavoritesOpen=bool;
}
function resetFavoritesMenu() {
	setFavoritesMenu();
	var obj=document.getElementById('registerLink');
	var obj1=document.getElementById('loginLink');
	if (obj!=null && obj1 !=null) {
	obj.innerHTML='';
	obj1.innerHTML='';
	}
}

function manageFavorites() {
	var params="&func=getFavoritesSelector&t="+isLoggedInForFavorites;
	postFavoritesData(params);
	setFavoritesMenu();
	hideOverflowOfDivsBehindTheFavoritesTableau(true);
	expandFavorites();
	createFavoritesTableau();
}
function collapseFavorites() {
	
	clearAwayRegistrationAndLogin(); 
	minimiseFavorites(); 
	holdFavoritesOpen=false; 
	swapVisibilityOfHistoryAndFavorites('h');
	
	if (expandFavoritesCurrentFrame<expandFavoritesFrames) {
		expFavsTimeout=window.setTimeout('collapseFavorites()',fhAnimateHeadingsFrameDuration);
		var fWidthStart=120;
		var fLeftStart=825;
		var fWidthTarget=100;
		var fLeftTarget=0;
		var fObj = document.getElementById(favoritesStoreName);
		
		if (fObj) {
			var fWidth=parseInt(fObj.style.width);
			var fLeft=parseInt(fObj.style.left);
			var travelWidth=fWidthTarget-fWidth;
			var travelLeft=fLeft-fLeftTarget;
			var fStepWidth=travelWidth/2;
			var fStepLeft=travelLeft/2;
			fObj.style.width=(fWidth-fStepWidth)+'px';
			fObj.style.left=(fLeft+fStepLeft)+'px';
			var fObjAppWin = document.getElementById("favoritesDiv");
			if (fObjAppWin !=null) {
				if ((fWidth-fStepWidth)>1) {
					fObjAppWin.style.width=(fWidth-fStepWidth)+'px';
				}
				fObjAppWin.style.left=(fLeft+fStepLeft)+'px';
			}
		} // end if fObj
		expandFavoritesCurrentFrame++;
	} else {
		clearTimeout(expFavsTimeout);
		expandFavoritesCurrentFrame=0;
//		var obj = document.getElementById('favHeading');
//		if (obj != null) {
//			var headingString="<ul><li><a href=\"javascript:maximiseFavorites()\">Maximise Favorites Manager</a></li>"+
//			manageFavoritesMenu+"</ul>";
//			obj.innerHTML=headingString;
//		}
	var obj = document.getElementById('favHeading');
		if (obj != null) {
			var headingString="<ul>"+manageFavoritesMenu+"</ul>";
			obj.innerHTML=headingString;
		}
	}
}
function expandFavorites() {
	if (expandFavoritesCurrentFrame<expandFavoritesFrames) {
		expFavsTimeout=window.setTimeout('expandFavorites()',fhAnimateHeadingsFrameDuration);
		var fWidthStart=120;
		var fLeftStart=825;
		var fWidthTarget=945;
		var fLeftTarget=0;
		var fObj = document.getElementById(favoritesStoreName);
		
		if (fObj) {
			var fWidth=parseInt(fObj.style.width);
			var fLeft=parseInt(fObj.style.left);
			var travelWidth=fWidthTarget-fWidth;
			var travelLeft=fLeft-fLeftTarget;
			var fStepWidth=travelWidth/2;
			var fStepLeft=travelLeft/2;
			fObj.style.width=(fWidth+fStepWidth)+'px';
			fObj.style.left=(fLeft-fStepLeft)+'px';
			var fObjAppWin = document.getElementById("favoritesDiv");
			if (fObjAppWin !=null) {
				fObjAppWin.style.width=(fWidth+fStepWidth)+'px';
				fObjAppWin.style.left=(fLeft-fStepLeft)+'px';
			}
		} // end if fObj
		expandFavoritesCurrentFrame++;
	} else {
		clearTimeout(expFavsTimeout);
		expandFavoritesCurrentFrame=0;
//		var obj = document.getElementById('favHeading');
//		if (obj != null) {
//			var headingString="<ul><li><a href=\"javascript:maximiseFavorites()\">Maximise Favorites Manager</a></li>"+
//			manageFavoritesMenu+"</ul>";
//			obj.innerHTML=headingString;
//		}
	var obj = document.getElementById('favHeading');
		if (obj != null) {
			var headingString="<ul>"+manageFavoritesMenu+"</ul>";
			obj.innerHTML=headingString;
		}
	}
}

function maximiseFavorites() {
	/*
	var obj=document.getElementById(favoritesStoreName);
	if (obj != null) {
		obj.style.top="0px";
		obj.style.height="571px";
	}
	var obj = document.getElementById('favTableau');
	if (obj != null) {
		obj.style.height="533px";
	}
	var obj = document.getElementById('favHeading');
	if (obj != null) {
		var headingString="<ul><li><a href=\"javascript:minimiseFavorites()\">Minimise Favorites Manager</a></li>"+
		manageFavoritesMenu+"</ul>";
		obj.innerHTML=headingString;
	}
	*/
}
function minimiseFavorites() {
	/*
	var obj=document.getElementById(favoritesStoreName);
	if (obj != null) {
		obj.style.top="135px";
		obj.style.height="436px";
	}
	var obj = document.getElementById('favTableau');
	if (obj != null) {
		obj.style.height="398px";
	}
	var obj = document.getElementById('favHeading');
	if (obj != null) {
		var headingString="<ul><li><a href=\"javascript:maximiseFavorites()\">Maximise Favorites Manager</a></li>"+
		manageFavoritesMenu+"</ul>";
		obj.innerHTML=headingString;
	}
	*/
}

function hideOverflowOfDivsBehindTheFavoritesTableau(mode) {
	for (var i=0; i<hideOverflowDivIdArray.length; i++) {
		var id=hideOverflowDivIdArray[i];
		var obj=document.getElementById(id);
		if (obj!=null) {
			if (mode) {
				obj.style.overflow='hidden';
			} else {
				obj.style.overflow='auto';
			}
		}
	}
}
/*function dragDiv(obj,e) {
	
	switch(e) {
		case "start":
			animatePageActive=true;
			currentDragDiv=obj;
			dragDivStartPositionX = parseInt(currentDragDiv.style.left);
			dragDivStartPositionY = parseInt(currentDragDiv.style.top);		
			offsetX = tempX-dragDivStartPositionX;
			offsetY = tempY-dragDivStartPositionY;
		break;
		case "stop":
			animatePageActive=false;
			currentDragDiv=obj;
		break;
	}
	
}*/
function createFavoritesTableau() {
	var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
	var titles=new Array("Items","Pages and Articles","Discussions","People","Video and Audio");
	var obj=document.getElementById('favTableau');
	var tableauExists=false;
	if (obj!=null) {
		tableauExists=true;
	}
	var os='';
	if (!tableauExists) {
		os="<div id=\"favTableau\" style=\"position:absolute; left:220px;top:18px;width:682px;height:398px; visibility:visible; overflow:auto;\" >"; // output string
	}
	var xhrFavTabDivString='';
	var startX=0;
	var currentX=startX;
	var currentY=0;
	var incX=142;
	var incY=140;
	var maxCols=4;
	var colCounter=0;
	var requestCounter=0;
	for (var i=0; i<work.length; i++) {
		var n=work[i].length;
		var rows="";
		if (n>0) {
			for (var j=0; j<n; j++) {
				
				var info = '';//"0: "+work[i][j][0]+"<br>1: "+work[i][j][1]+"<br>2: "+work[i][j][2]+
				//"<br>3: "+work[i][j][3]+"<br>4: "+work[i][j][4]+"<br>5: "+work[i][j][5];
				
				var bgiStyle='';
				if (work[i][j][6]) {
					bgiStyle=" style='background-image:url("+work[i][j][6]+")' ";
				} else {
					xhrFavTabDivString += "&ftd"+requestCounter+"="+work[i][j][0]+"&fti"+requestCounter+"="+i+","+j;
					requestCounter++;
				}
				
				var applyY=currentY;
				var applyX=currentX;
				if (work[i][j][1]) {
					applyY=work[i][j][1];
				}
				if (work[i][j][2]) {
					applyX=work[i][j][2];
				}
				
				// the tableau Div
				var rowstr="<div class=\"favTabDiv\" id=\"favTabDiv"+i+j+"\" style='top:"+applyY+"px; left:"+applyX+"px;' "+
				"onMouseDown=\"dragDiv(this,'start')\" onMouseUp=\"dragDiv(this,'stop'); favTabRecPos(this);\" "+
				">"+work[i][j][5]+"<hr>"+
				"<div>"+info+"</div><div class=\"favTabDivImg\" id=\"favTabDivImg"+j+"\"><img src=\""+escape(work[i][j][6])+"\" alt=\"\" /></div></div>";
				//"<div>"+info+"</div><div class=\"favTabDivImg\" id=\"favTabDivImg"+j+"\""+bgiStyle+"></div></div>";
		//		alert(rowstr);
				rows += rowstr;
				//work[i][j][1]=applyY;
				//work[i][j][2]=applyX;
				work[i][j][4]=String("favTabDiv"+i+j); // refreshed each time the tableau is drawn
				
				// the tableau background listing
				rows+=work[i][j][5]; // label
				

				if (colCounter<maxCols) {
					currentX += incX;
					colCounter++;
				} else {
					colCounter=0;
					currentX=startX;
					currentY += incY;
				}

			}
			if (rows!="") {
				os+="<fieldset><legend>"+titles[i]+"</legend>"+rows+"</fieldset>";
			}
		}
	}
	
	if (!tableauExists) {
		os += "</div>";
	}
	
	if (!tableauExists) {
		var favDiv=document.getElementById(favoritesStoreName);
		if (favDiv != null) {
			favDiv.innerHTML+=os;
		}
	} else {
		var favTableauDiv=document.getElementById('favTableau');
		if (favTableauDiv != null) {
			favTableauDiv.innerHTML=os;
		}
	}
//	var heading=document.getElementById('head01');
//	if (heading != null && heading01Content=='') {
//		heading01Content=heading.innerHTML;
//		heading.innerHTML=manageFavoritesHeading;
//	}
	if (xhrFavTabDivString) {
		xhrFavTabDivString += "&func=getTableau&iTotal="+requestCounter;
		//alert(xhrFavTabDivString);
		postFavoritesData(xhrFavTabDivString);
	}
}
function postFavoritesData(params) {
	div = 'evaluate'; // the response will be evaluated
	 loading('1','Loading');
	xmlhttp = false;
	createXMLHttpObject();
	xmlhttp.open("POST",favoritesPath,true);
	xmlhttp.onreadystatechange = setAnyInnerHtml;
	xmlhttp.initialise;
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	xmlhttp.send(params);
}
function setFavDiv(a,b,c,d) {
	// a = work[i], b = work[i][j], c = work[i][j][k], d= the value
	var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
	work[a][b][c]=d;
	//alert('a: '+a+', b: '+b+', c: '+c+', img: '+d);
}
function setFavWorkArray() {
	var args = setFavWorkArray.arguments;
	var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
	var a=args[0];
	var b=args[1];
	switch(a) {
		case 0: ergoProdFavorites[b]=new Array(7); break;
		case 1: ergoPageFavorites[b]=new Array(7); break;
		case 2: ergoDiscFavorites[b]=new Array(7); break;
		case 3: ergoPeopleFavorites[b]=new Array(7); break;
		case 4: ergoMediaFavorites[b]=new Array(7); break;
	}
	work[a][b][0]=args[2];
	work[a][b][1]=args[3];
	work[a][b][2]=args[4];
	work[a][b][3]=args[5];
	work[a][b][4]=args[6];
	work[a][b][5]=args[7];
	work[a][b][6]=args[8];
	//...
}
function favTabRecPos(obj) {
	if (obj !=null) {
		var topPx=obj.style.top;
		var leftPx=obj.style.left;
		var objId=String(obj.id);
		var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
		for (var i=0; i<work.length; i++) {
			var n=work[i].length;
			var rows="";
			if (n>0) {
				for (var j=0; j<n; j++) {
					if (work[i][j][4]==objId) {
						work[i][j][1]=parseInt(topPx);
						work[i][j][2]=parseInt(leftPx);
						break;
					}
				}
			}
		}
	}
}
function hideFavoritesTableau() {
	var obj = document.getElementById('favTableau');
	if (obj != null) {
		obj.visibility='hidden';
		obj.overflow='hidden';
		obj.width='1px';
	}
}
function displayLogin(em) {
	var regDiv=document.getElementById('registrationAndLogin');
	if (regDiv != null) {
		var str="<form name=\"login\" method=\"post\" action=\"\" onSubmit=\"loginSubmit(); return false;\">"+
"<h3>Site Log In</h3>"+
"<p><label for=\"em\">E Mail: </label><input name=\"em\" type=\"text\" id=\"em\" title=\"Your E Mail\" value=\""+em+"\"></p>"+
"<p><label for=\"psw\">Password: </label><input name=\"psw\" type=\"password\" id=\"psw\" title=\"Your Password\"></p>"+
"<p><input type=\"submit\" name=\"submit\" value=\"Log In\" /></p>"+
"</form><div id=\"registrationAndLoginReport\">No Login? Click <a href=\"javascript:displayRegistration()\" id=\"registerLink\">here to register</a>.</div>"+
"<p><a href=\"javascript:clearAwayRegistrationAndLogin()\">Close</a></p>";
		regDiv.innerHTML=str;
		regDiv.style.left="300px";
		regDiv.style.top="154px";
		regDiv.style.width="350px";
		regDiv.style.height="200px";
	}
}

function displayRegistration() {
	var regDiv=document.getElementById('registrationAndLogin');
	if (regDiv != null) {
		var str="<form name=\"registration\" method=\"post\" action=\"\" onSubmit=\"registrationSubmit(); return false;\">"+
"<h3>Favorites Registration</h3>"+
"<p><textarea id=\"tc\" style=\"width:400px; height:100px;\">"+
"Site Registration Terms and Conditions\n"+
"--------------------------------------------------\n"+
"Favorites will be saved on the Ergonet Server\n"+
"Favorites will be used by Ergonet for market research purposes\n"+
"Please see the Company Privacy Policy.\n"+
"</textarea></p>"+
"<p><label for=\"acceptTC\">I Accept the Terms and Conditions</label>"+
"<input type=\"checkbox\" name=\"acceptTC\" id=\"acceptTC\" value=\"1\" /></p>"+
"<p><label for=\"name\">Name: </label><input name=\"name\" type=\"text\" id=\"name\" title=\"Your Name\"></p>"+
"<p><label for=\"em\">E Mail: </label><input name=\"em\" type=\"text\" id=\"em\" title=\"Your E Mail\"></p>"+
"<p><input type=\"submit\" name=\"submit\" value=\"Register\"/></p>"+
"</form><div id=\"registrationAndLoginReport\"></div>"+
"<p><a href=\"javascript:clearAwayRegistrationAndLogin()\">Close</a></p>";
		regDiv.innerHTML=str;
		regDiv.style.left="220px";
		regDiv.style.top="154px";
		regDiv.style.width="500px";
		regDiv.style.height="350px";
		//left:200px; top:135px; width:500px; height:300px;
	}
}

function loginSubmit() {
	var proceed=false;
	var emVal='';
	var passVal='';
	var emObj=document.getElementById('em');
	if (emObj != null) {
		if (emObj.value != '') {
			proceed=true;
			emVal=emObj.value;
		} else {
			proceed=false;
			alert("Please enter your email address.");
			emObj.focus();
		}
	}
	var passObj=document.getElementById('psw');
	if (passObj != null && proceed) {
		if (passObj.value != '') {
			proceed=true;
			passVal=passObj.value;
		} else {
			proceed=false;
			alert("Please enter your password.");
			passObj.focus();
		}
	}
	if (proceed) {
		var regStr="&func=login&p="+passVal+"&e="+emVal;
		postFavoritesData(regStr);
		var regDiv=document.getElementById('registrationAndLogin');
		if (regDiv != null) {
			regDiv.innerHTML="<div id=\"registrationAndLoginReport\"><p style=\"text-align:center\">Processing: "+emVal+" please wait..</p></div>";
		}
	}
	return false;
}

function clearAwayRegistrationAndLogin() {
	var regDiv=document.getElementById('registrationAndLogin');
	if (regDiv != null) {
		regDiv.innerHTML='';
		regDiv.style.left="0px";
		regDiv.style.top="0px";
		regDiv.style.width="0px";
		regDiv.style.height="0px";
	}
}

function registrationSubmit() {
	var proceed=false;
	var nameVal='';
	var emVal='';
	var acceptTcObj=document.getElementById('acceptTC');
	if (acceptTcObj != null) {
		if (acceptTcObj.checked==true) {
			proceed=true;
		} else {
			proceed=false;
			alert("Please accept the terms & conditions in order to proceed.");
		}
	}
	var nameObj=document.getElementById('name');
	if (nameObj != null && proceed) {
		if (nameObj.value != '') {
			proceed=true;
			nameVal=nameObj.value;
		} else {
			proceed=false;
			alert("Please enter your name.");
			nameObj.focus();
		}
	}
	var emObj=document.getElementById('em');
	if (emObj != null && proceed) {
		if (emObj.value != '') {
			proceed=true;
			emVal=emObj.value;
		} else {
			proceed=false;
			alert("Please enter your email address.");
			emObj.focus();
		}
	}
	if (proceed) {
		var regStr="&func=register&n="+nameVal+"&e="+emVal;
		postFavoritesData(regStr);
		var regDiv=document.getElementById('registrationAndLogin');
		if (regDiv != null) {
			regDiv.innerHTML="<div id=\"registrationAndLoginReport\"><p style=\"text-align:center\">Processing: "+emVal+" please wait..</p></div>";
		}
	}
	return false;
}

function setLoginReport(str) {
	var regDiv=document.getElementById('registrationAndLoginReport');
	if (regDiv != null) {
		if (str) {
			regDiv.innerHTML="<p>"+str+"</p>";
		} else {
			reDiv.innerHTML="<p>Login Error!</p>";
		}
	} else {
		if (str) {
			alert(str);
		} else {
			alert("Login Error!");
		}
	}
}

function saveFavorites() {
	if (isLoggedInForFavorites) {
		
		/*
		
		Save Operaton needs to offer the facility to name and describe the favorites group
		If the favorites is a new group the name must be filled out..
		
		So y'click save and the name and description entry boxes open with a second save button ??
		we populate the same div as the login div 
		
		This function needs to be split so that the save buton calls for login check and display favorites name and desc
		Then when the form is submitted actually do the data save- including the name and desc.
		
		*/
		
		var regDiv=document.getElementById('registrationAndLogin');
		if (regDiv != null) {
			var str="<form name=\"saveFav\" method=\"post\" action=\"\" onSubmit=\"saveFavoritesSendData(); return false;\">"+
"<div style=\"width:100%;text-align:right;\">"+
"<p><label for=\"name\">Name: </label>"+
"<input type=\"text\" name=\"name\" id=\"name\" style=\"width:370px;\" title=\"Favorites Name\" value=\""+currentFavName+"\"></p>"+
"<p><label for=\"desc\">Description: </label>"+
"<textarea name=\"desc\" type=\"text\" id=\"desc\" style=\"width:370px;height:42px;\" title=\"Description of Favorites Group\">"+
currentFavDescription+"</textarea></p>"+
"<p><input type=\"submit\" name=\"submit\" value=\"Save Favorites\"  style=\"position:absolute;right:20px;\" /></p>"+
"</div></form><div id=\"registrationAndLoginReport\"></div>"+
"<p><a href=\"javascript:clearAwayRegistrationAndLogin()\">Cancel</a></p>";
		
		regDiv.innerHTML=str;
		regDiv.style.left="220px";
		regDiv.style.top="154px";
		regDiv.style.width="500px";
		regDiv.style.height="200px";
		}
		
	} else {
		displayLogin('');
	}
}
function saveFavoritesSendData() {
	var favNameObj=document.getElementById('name');
	var favDescObj=document.getElementById('desc');
	if (favNameObj!=null) {
		currentFavName=favNameObj.value;
	}
	if (favDescObj != null) {
		currentFavDescription=favDescObj.value;
	}
	// prepare a post string that describes the favorites various. then send to server.
	var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
	var requestCounter=0;
	var xhrFavTabDivString='';
	var xhrReportAlert='';
	var str=''
	for (var i=0; i<work.length; i++) {
		var n=work[i].length;
		var rows="";
		if (n>0) {
			for (var j=0; j<n; j++) {
				str = "&ftd"+requestCounter+"="+work[i][j][0]+"&fti"+requestCounter+"="+i+","+j+
				"&y"+requestCounter+"="+work[i][j][1]+"&x"+requestCounter+"="+work[i][j][2];
				xhrFavTabDivString += str;
				xhrReportAlert += str+"\n";
				requestCounter++;
			}
		}
	}
	xhrFavTabDivString += "&func=saveFavorites&iTotal="+requestCounter+"&favid="+currentFavoritesSetId+"&t="+isLoggedInForFavorites;
	xhrFavTabDivString += "&name="+currentFavName;
	xhrFavTabDivString += "&description="+currentFavDescription;

	postFavoritesData(xhrFavTabDivString);	
}
function setFavoriteSelector(string) {
	favoriteSelectorString=string;
	var obj =document.getElementById('slideFavoritesLinks');
	if (obj != null) {
		obj.innerHTML=string;
	}
}
function favSelect(selectorObject) {
	if (selectorObject.value) {
		var params="&func=getFavorites&favid="+selectorObject.value;
		currentFavoritesSetId=selectorObject.value;
		postFavoritesData(params);
	}
}
function clearOutFavorites() {
	var work=new Array(ergoProdFavorites,ergoPageFavorites,ergoDiscFavorites,ergoPeopleFavorites,ergoMediaFavorites);
	for (var i=0; i<work.length; i++) {
		var n=work[i].length;
		var rows="";
		if (n>0) {
			for (var j=0; j<n; j++) {
				work[i].pop();
			}
		}
	}
}








