function formatCurrency2(amount) {
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '$';
	if(i < 0) { minus = '-$'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}


function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}
// 

function DataGrid()
{
	this.name="datagrid";
	this._dataProvider=[];
	this._columns=[];
}

DataGrid.prototype.setDataProvider=function(dp)
{
	this._dataProvider=dp;
	
	if (this._columns.length==0)
	{
		this.createColumns(dp[0]);
	}
}

DataGrid.prototype.toString=function()
{
	var result='<table id="' + this.name + '" width="100%">';

	var row=false;
	
	result+=this.getHeadings();
	
	for (var i in this._dataProvider)
	{
		if (this._dataProvider[i]!=null)
		{
			result+= this.getRow(this._dataProvider[i],row,i);
			row=!row;
		}
	}
	
	result+="</table>";
	
	return result;
}

DataGrid.prototype.getColumnByName=function(name)
{
	for (var i in this._columns)
	{
		if (this._columns[i].name==name)
		{
			return this._columns[i];
		}
	}

}

DataGrid.prototype.createColumns=function(item)
{
	for (var i in item)
	{
		//alert(i + "> created that sombitch");
		this._columns[i]=new DataGridColumn(this);
		this._columns[i].name=i;
		this._columns[i].dataGrid=this;
	}
	
 
}

DataGrid.prototype.getHeadings=function()
{
	result="<tr>";
	for (var i in this._columns)
	{
		if (this._columns[i].visible==true)
		{
			result+="<th align='left'>";
			result+= this._columns[i].name;
			result+="</th>";
		}
	}
 
	result+="</tr>";
	
	return result;
}

DataGrid.prototype.getRow=function(item,row,index)
{
var result= (row) ? '<tr class="DataGridRow0"' : '<tr class="DataGridRow1"';
result+= ' id="' + this.name + '_row_' + index + '">';
	
var value;
 
	for (var i in this._columns)
	{
		if (this._columns[i].visible==true)
		{
			result+='<td id="' + this.name + "_cell_" + index + "_" + i + '">';
			value=this._columns[i].onDataBind(item,i,index);
			result+= (value==undefined) ? "" : value;
			result+="</td>";
		}
	}

	result+="</tr>";
	return result;
}

/* data grid column class */
function DataGridColumn()
{
	this.name= (arguments[0] == undefined) ? "" : arguments[0];
	this.dataGrid= (arguments[1] == undefined) ? null : arguments[1];
	this.visible=true;
	
}

DataGridColumn.prototype.onDataBind=function(item,index)
{
	return item[index];
}

/** some list box stuff **/
 function DisplayColumn(name,displayName)
  {
	this.name=name;
	this.displayName=displayName;
	this.dataGrid = null;
  }
  
  function ListBox(id)
  {
	this._listBox = document.getElementById(id);
	
 
	
	if (arguments[1]!=null)
	{
		this.onItemDataBind=arguments[1];
	}
	else
	{
		this.onItemDataBind=function(item)
		{
			return new Option(item["name"],item["value"])
		}
	}
  }
  
 // ListBox.prototype.
  ListBox.prototype.selectedDown=function()
  {
    for ( var i=0;i<this._listBox.options.length;i++)
	{
		if (this._listBox.options[i].selected)
		{
			if (i+1<this._listBox.options.length) 
				this.swap(i,i+1);			
				
			return;
		}
	}
  }
  
  ListBox.prototype.selectedUp=function()
  {
    for ( var i=0;i<this._listBox.options.length;i++)
	{
		if (this._listBox.options[i].selected)
		{
			//alert(this._listBox.options[i].text);

			if (i-1>=0) 
				this.swap(i,i-1);
		   
		   return;
		}
	}
  }
  
  ListBox.prototype.setSelected=function(value)
  {
	    for ( var i=0;i<this._listBox.options.length;i++)
	{
		if (this._listBox.options[i].value==value)
		{
			this._listBox.options[i].selected=true;
		}
	}
  }
   ListBox.prototype.swap=function(index1,index2)
   {
	 var item1= new Option(this._listBox.options[index1].text,this._listBox.options[index1].value);
	 var item2=new Option(this._listBox.options[index2].text,this._listBox.options[index2].value);
	 
	 //this._listBox.options[index1]=null;
	 //this._listBox.options[index2]=null

	 this._listBox.options[index1]=item2;
	 this._listBox.options[index2]=item1;

	 
   }
  

  
  ListBox.prototype.addItem=function(item)
  { 
 	this._listBox.options[this._listBox.options.length]=item;
  }
  
  ListBox.prototype.removeItem=function(index)
  {
	var i=this._listBox.options[index];

	this._listBox.remove(index);//=null;
	return i;
  }
  
  ListBox.prototype.insertAt=function(index,item)
  {
	if(this._listBox.options[index]!=null)
	{
		for (var i=this._listBox.options.length;i>index;i++)
		{
			this._listBox.options[i]=this._listBox.options[i-1];
		}
		this._listBox.options[index]=item;
	}
  }
  
  
  ListBox.prototype.clear=function()
  {
	while ( this._listBox.options.length>0)
	{
		this._listBox.remove(this._listBox.options.length - 1);
		//this._listBox.options[i]=null;
	}
  }
  
  ListBox.prototype.dataProvider=function(dp)
  {    
	this._dataProvider=dp;
	this.clear();
	
	var index=0;
	var test;
	for (var i in dp)
	{
	  test +=i + "\n";
	  if (dp[i]!=null && this.onItemDataBind!=null)
	  {
		this._listBox[index]=this.onItemDataBind(dp[i]);
		index++;
	  }
	}
	 
  }
