var DayPortCategoryViewerObj = new Object();
DayPortCategoryViewerObj.objectArray = new Array();


DayPortCategoryViewerObj.activateButton = function(currentID, categoryDataID)
{
	DayPortCategoryViewerObj.objectArray[currentID].activateButton(categoryDataID);
};

DayPortCategoryViewerObj.MouseOver = function(currentID, cellID, categoryDataID)
{
	DayPortCategoryViewerObj.objectArray[currentID].MouseOver(cellID, categoryDataID);
};

DayPortCategoryViewerObj.MouseOut = function(currentID, cellID, categoryDataID)
{
	DayPortCategoryViewerObj.objectArray[currentID].MouseOut(cellID, categoryDataID);
};

function DayPortCategoryViewer(containerHndl, howManyColumns, defaultImage, callBackFunction)
{
	this.viewerID = Math.round(999999*Math.random());
	
	//set at -1 for activateNextCell() with ++ at beginning of function
	this.index = -1;
	
	DayPortCategoryViewerObj.objectArray[this.viewerID] = this;
	
	this.categoryData = new Array();
	this.howManyColumns = howManyColumns;
	this.containerObject = containerHndl;
	this.defaultImage = defaultImage;
	this.callBackFunction = callBackFunction;
	
	this.cellClass = "";
	
	this.cellStaticClass = "";
	this.cellHoverOverClass = "";
	this.cellActiveClass = "";
	
	this.cellCounter = 0;
	
	this.clipsArray = new Array();	
	//alert(this.categoryData.article);
	
	this.tableId = "TABLE_"+this.viewerID;
	
	/*var oTbl=document.createElement("table");
	this.containerObject.appendChild(oTbl);
	var tblBody = document.createElement("tbody");
	oTbl.appendChild(tblBody);
	
	oTbl.cellpadding = "0";
	oTbl.cellspacing = "0";
	oTbl.width = "100%";
	oTbl.id = this.tableId;
	//oTbl.setAttribute("id",this.tableId);
	
	this.tableArea = oTbl;
	this.tableBodyArea = tblBody;
	
	tblBody = null;
	oTbl = null;*/
	
};

DayPortCategoryViewer.prototype.addItem = function(previewImage,articleName,articleDescription,metaData)
{
	this.categoryData[this.categoryData.length] = {
		previewImage:previewImage,
		name:articleName,
		description:articleDescription,
		metaData:metaData
	};
};

DayPortCategoryViewer.prototype.activateButton = function(categoryDataID)
{
	this.callBackFunction(this.categoryData[categoryDataID]);
	this.index = categoryDataID;
	
	this.setActiveCell(this.categoryData[categoryDataID].cellId);
};

DayPortCategoryViewer.prototype.activateNextCell = function()
{
	this.index++;
	
	if(this.index == this.categoryData.length)
	{
		this.index = 0;
	}
	
	this.activateButton(this.index);
};

DayPortCategoryViewer.prototype.clearContent = function()
{
	
	if(this.createdTable)
	{
			/*var currentTable = document.getElementById(this.tableId);
			//var rows = currentTable.getElementsByTagName("TR");
			//var len = rows.length;
			
			var len = currentTable.rows.length;
			document.getElementById("debugTA").value += "\n len="+len;
			
			for(var x=0;x<len;x++)
			{
				var currentTable = document.getElementById(this.tableId);
				this.purge(currentTable);
				var removed = currentTable.parentNode.removeChild(currentTable);
				removed = null;

			}

			// this.containerObject.removeChild(currentTable);
			currentTable = null;
			
			this.containerObject.innerHTML = "";*/
		
		var currentTable = document.getElementById(this.tableId);
		this.purge(currentTable);
		document.getElementById(this.containerObject).innerHTML = "";
		//var removed = currentTable.parentNode.removeChild(currentTable);
		//removed = null;
	}
	this.createdTable = false;
	this.categoryData.length = 0;
	this.index = -1;
}

DayPortCategoryViewer.prototype.purge = function(d) 
{    
	var a = d.attributes, i, l, n;    
	if (a) 
	{        
		l = a.length;        
		for (i = 0; i < l; i += 1) 
		{            
			n = a[i].name;            
			if (typeof d[n] === 'function') 
			{               
				d[n] = null;            
			}        
		}    
	}    
	a = d.childNodes;
	//document.getElementById("debugTA").value += "\n childNodes="+a;
	if (a) 
	{        
		l = a.length;        
		for (i = 0; i < l; i += 1) 
		{            
			this.purge(d.childNodes[i]);        
		}    
	}
}

DayPortCategoryViewer.prototype.init = function()
{
	//document.getElementById("debugTA").value += "\nDayPortCategoryViewer.prototype.init() called";
	
	var thisTable = this.tableBodyArea;
	/*var activeCells = 0;
	for(var x=0;x<this.categoryData.length;x++)
	{
		var thisCellId = this.viewerID+'_'+ x+'_td';
		this.categoryData[x].cellId = thisCellId;
		//document.getElementById("debugTA").value += "\n thisCellId="+document.getElementById(thisCellId);
		if(document.getElementById(thisCellId) == null)
		{
		
			var  oTR= document.createElement("tr");
			var  oTD= document.createElement("td");
			thisTable.appendChild(oTR);
			oTR.appendChild(oTD);

			oTD.id = thisCellId;
			oTD.className = this.cellStaticClass;
			//oTD.onClick = function(){ DayPortCategoryViewerObj.activateButton(thisObj.viewerID,x); };

			if(this.cellHoverOverClass != "")
			{
				//oTD.onMouseOver = function(){ DayPortCategoryViewerObj.MouseOver(thisObj.viewerID, thisCellId, x); };
				//oTD.onMouseOut = function(){ DayPortCategoryViewerObj.MouseOut(thisObj.viewerID, thisCellId, x); };
			}
			
			this.cellCounter++;
			
		}else{
			
			var oTD = document.getElementById(thisCellId);
		}

		if(this.categoryData[x].previewImage != "")
		{
			var articleImage = this.categoryData[x].previewImage;
		}else{
			var articleImage = this.defaultImage;
		}

		if(articleImage != "")
		{
			oTD.innerHTML = '<img src="'+ articleImage +'" border="0" align="left" />';
		}

		
		
		//oTD.innerHTML += '<table cellpadding="0" cellspacing="0" border="0">';
		//oTD.innerHTML += '<strong>' + unescape(this.categoryData[x].name) + '</strong>';
		//oTD.innerHTML += '<br />';
		//oTD.innerHTML += unescape(this.categoryData[x].description);
		//oTD.innerHTML += '</table>';
		//oTD.innerHTML += '</td></tr>';

		
		//document.getElementById("debugTA").value += "\n oTD.innerHTML="+oTD.innerHTML;

		oTR = null;
		oTD = null;
		
		activeCells = x;

	}
	
	for(var x=activeCells;x<this.cellCounter;x++)
	{
		var thisCellId = this.viewerID+'_'+ x+'_td';
		
		if(document.getElementById(thisCellId) != null)
		{
			var oTD = document.getElementById(thisCellId);
			oTD.innerHTML = "";
		}
		
	}*/
	
	
	var contentText = '<table width="100%" cellpadding="0" cellspacing="0" id="'+this.tableId+'">';
	
	for(var x=0;x<this.categoryData.length;x++)
	{
		var thisCellId = this.viewerID+'_'+ x;
		
		this.categoryData[x].cellId = thisCellId;
		
		contentText += '<tr><td id="'+thisCellId+'" class="'+ this.cellStaticClass +'" ';
		contentText += 'onClick=\'DayPortCategoryViewerObj.activateButton('+this.viewerID+','+x+');\' '
		if(this.cellHoverOverClass != "")
			contentText += 'onMouseOver="DayPortCategoryViewerObj.MouseOver(\''+this.viewerID+'\', \''+thisCellId+'\', \''+x+'\');" onMouseOut="DayPortCategoryViewerObj.MouseOut(\''+this.viewerID+'\', \''+thisCellId+'\', \''+x+'\');"'
			
		contentText += '>';
		

		if(this.categoryData[x].previewImage == "" || this.categoryData[x].previewImage == null || this.categoryData[x].previewImage == "null")
		{
			var articleImage = this.defaultImage;
		}else{
			var articleImage = this.categoryData[x].previewImage; 
		}
		articleImage = unescape(articleImage);
		
		
		if(articleImage != "")
		{
			contentText += '<img src="'+ articleImage +'" border="0" align="left" />';
		}
		
		contentText += '<table cellpadding="0" cellspacing="0">';
		contentText += '<strong>' + unescape(this.categoryData[x].name) + '</strong>';
		////contentText += '<br />';
		////contentText += unescape(this.categoryData[x].description);
		contentText += '</table>';
		contentText += '</td></tr>';
	
	}
	contentText += '</table>';
	
	this.createdTable = true;
	
	document.getElementById(this.containerObject).innerHTML = contentText; 
	//this.tableCell = document.getElementById(this.content);
	


};


DayPortCategoryViewer.prototype.MouseOver = function(activeCellId, categoryDataID)
{
	if(categoryDataID != this.index)
	{
		document.getElementById(activeCellId).className = this.cellHoverOverClass;
	}
}

DayPortCategoryViewer.prototype.MouseOut = function(activeCellId, categoryDataID)
{
	if(categoryDataID != this.index)
	{
		document.getElementById(activeCellId).className = this.cellStaticClass;
	}
}

DayPortCategoryViewer.prototype.resetIndex = function()
{
	this.index = -1;
	for(var y=0;y<this.categoryData.length;y++)
	{
		document.getElementById(this.categoryData[y].cellId).className = this.cellStaticClass;
	}
};


DayPortCategoryViewer.prototype.setActiveCell = function(activeCellId)
{
	//document.getElementById("debugTA").value += "\nsetActiveCell() called.  this.cellActiveClass="+this.cellActiveClass;
	if(this.cellActiveClass != "")
	{
		//document.getElementById("debugTA").value += "\n  activeCellId="+activeCellId;
		
		for(var y=0;y<this.categoryData.length;y++)
		{
			document.getElementById(this.categoryData[y].cellId).className = this.cellStaticClass;
		}

		document.getElementById(activeCellId).className = this.cellActiveClass;
	}
};

DayPortCategoryViewer.prototype.setCellActiveClass = function(cellActive)
{
	this.cellActiveClass = cellActive;
};

DayPortCategoryViewer.prototype.setCellStaticClass = function(cellStaticClass)
{
	this.cellStaticClass = cellStaticClass;
};

DayPortCategoryViewer.prototype.setCellHoverOverClass = function(cellHoverOver)
{
	this.cellHoverOverClass = cellHoverOver;
};