dojo.debug("File table.js loaded");
dojo.require("dojo.widget.EnhancedFilteringTable");
dojo.require("dojo.widget.Tooltip");

// necessary code to intialise
dojo.addOnLoad(initialise);



function getPropertyNameByIndex(obj, index)
{
	var i = 0;
	for (prop in obj) 
	{
	    if (i == index)
	    {
	    	return prop
	    }
	    i++;
	    
	}
	return null;
}

function initialise()
{
	dojo.debug("Entering initialise()");
	
	tableObj = dojo.widget.byId("productsTable");
	
	// add a link to first column
	for(var i=0; i < jsonTable.length; i++)
	{
		var row = jsonTable[i];
		var labelIndex = getPropertyNameByIndex(row, 1);
		var idRow = row.Id.substring(3);
		var url = urlPrefixForView + idRow;
		jsonTable[i][labelIndex] = "<a href='javascript:openPopup(\""+url+"\", 800, 600)' >"+ row[labelIndex] +"</a>";
	}
	
	// add data to table
	if (jsonTable != null)
	{
		tableObj.store.setData(jsonTable);
	}
	
	// add tool tips
	for(var i=0; i < jsonTableToolTips.length; i++)
	{
		var tip = jsonTableToolTips[i];
		var node = dojo.widget.createWidget("Tooltip", { caption: tip.ToolTip, connectId: tip.Id });
		document.body.appendChild(node.domNode);
	}	
	
	// add tool tip for sort button
	var buttons = document.getElementsByName('sort_button');
	for(var i = 0; i<buttons.length; i++)
	{
		var tData = { caption: buttons[i].getAttribute('tooltip'), connectId: buttons[i].id };
		var t = dojo.widget.createWidget("Tooltip", tData);
		document.body.appendChild(t.domNode);	
	}
	
	
	dojo.debug("Exiting initialise()");
}

// sorts strings
function sortStringInsensitive(a, b)
{
	// switch to lower case
	a = trimLinks(a.toLowerCase());
	b = trimLinks(b.toLowerCase());
	var ret = 0;
	if (a > b) 
	{
		ret = 1;
	}
	if (a < b) 
	{
		ret = -1;
	}
	return ret;
}

/**
 * Remove any tag <a> from the text before sorting
 */
function trimLinks(text)
{
	var ATagReg = new RegExp("<[aA] [^>]*>", "g");
	var endATagReg = new RegExp("</[aA]>", "g");

	text = text.replace(ATagReg, "");
	text = text.replace(endATagReg, "");

	return text;
}

// sorts lists
function sortList(a, b)
{
	ret = 0;
	if ( a.order > b.order )
	{
		ret = 1;
	}
	else if ( a.order < b.order )
	{
		ret = -1;
	}
	return ret;
}

// sorts lists
function sortFloat(a, b)
{
	var pattern = new RegExp("([0-9]+[.,]?[0-9]*)");
	
	var resultA = pattern.exec(a);
	var resultB = pattern.exec(b);
	
	var valueA = -9999;
	var valueB = -9999;
	
	if (resultA.length > 1)
	{
		valueA = parseFloat(resultA[1]);
	}
	if (resultB.length > 1)
	{
		valueB = parseFloat(resultB[1]);
	}
	
	ret = 0;
	if ( valueA > valueB )
	{
		ret = 1;
	}
	else if ( valueA < valueB )
	{
		ret = -1;
	}
	return ret;
}

// function to perform introspection
function introspec(obj)
{
	property_list = "";
	property_list2 = "";
	for (prop in obj) 
	{
	    property_list += prop + "=" + obj[prop] + "<br>";
	    property_list2 += prop + "=" + obj[prop] + "\n"; 
	}
	dojo.debug(property_list);
	alert(property_list2);
}

// open a popup window
function openPopup(url)
{
	var w = window.open(url, "Catalog", "width=800, height=600, scrollbars=yes");
	w.focus();
}


function hideSortPopup(evt, id)
{
	if (!dojo.html.overElement(id, evt))
	{
		// close popup
		var elem = document.getElementById(id);
		elem.style.display = 'none';	
	} 
}

function displaySortPopup(targetId)
{
	var target = document.getElementById(targetId);
	target.style.display = 'block';
}

