function dashboard(){
		YAHOO.widget.Chart.SWFURL = "lib/yui/build/charts/assets/charts.swf"; 
		YAHOO.namespace("example.container");

		document.getElementById("contentpaneright").innerHTML  = getpane('dashboard');
		DashObj.prototype.handleOnAvailable = function(me) {
   			dashstructures();
		}
 		var obj = new DashObj("tabContainer");
}



function DashObj(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj2(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj3(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj4(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj5(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj6(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}
function DashObj7(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
}



function makechart(chart, data, resultslist, size, thisyr, lastyr){

//ColumnChart DataSource
	var jsonData = new YAHOO.util.DataSource(data);
//	jsonData.connMethodPost = true;
	jsonData.responseType = YAHOO.util.DataSource.TYPE_JSON;
	jsonData.responseSchema = {
				resultsList: resultslist,
				fields: [
					{ key: "month"},
					{ key: "lastyear"}, 
					{ key: "thisyear"} 
				]
	};

//Define the Columns in the Chart
	var seriesDef =
	[
		{ displayName: "Year "+lastyr, yField: "lastyear", style: {image: "lib/yui/assets/tube.png", mode: "no-repeat", color: 0x2e434d, size: 18} },
		{ displayName: "Year "+thisyr, yField: "thisyear", style: {image: "lib/yui/assets/tube.png", mode: "no-repeat", color: 0xc2d81e, size: 18} }
	];

//Define the format for the Y Axis (up/down) for currencyAxis

	YAHOO.example.formatCurrencyAxisLabel = function( value ){
		return YAHOO.util.Number.format( value,{
			prefix: "$",
			thousandsSeparator: ",",
			decimalPlaces: 0
		});
	}

//Define Data Tips when mousing over a column
	YAHOO.example.getDataTipText = function( item, index, series, axisField ){
		var toolTipText = series.displayName + " for " + item.month;
		toolTipText += "\n" + YAHOO.example.formatCurrencyAxisLabel( item[series[axisField]] );
		return toolTipText;
	}

//Not sure what this does
	YAHOO.example.getYAxisDataTipText = function( item, index, series ){
		return YAHOO.example.getDataTipText(item, index, series, "yField");
	}

//Define the Numeric Access (Y axis)
	var currencyAxis = new YAHOO.widget.NumericAxis();
 	currencyAxis.maximum = size;
	//currencyAxis.minimum = 100000;
	currencyAxis.labelFunction = YAHOO.example.formatCurrencyAxisLabel;


//Create the chart
		DashObj2.prototype.handleOnAvailable = function(me) {
   			var mychart = new YAHOO.widget.ColumnChart( chart, jsonData,{
				series: seriesDef,
				xField: "month",
				yAxis: currencyAxis,
				dataTipFunction: YAHOO.example.getYAxisDataTipText
			});
		}
 		var obj2 = new DashObj2("inventory");


}

function failuredash(o){}

function sleep(ms){
		var dt = new Date();
		dt.setTime(dt.getTime() + ms);
		while (new Date().getTime() < dt.getTime());
}




function datadist(o){


	var messages = YAHOO.lang.JSON.parse(o.responseText);
   	makechart("cash", messages,"Cash.Data", messages.Cash.Size, messages.MetaD.ThisYear, messages.MetaD.LastYear);
	makechart("receivables", messages, "Receivables.Data", messages.Receivables.Size, messages.MetaD.ThisYear, messages.MetaD.LastYear);
        makechart("payables", messages, "Payables.Data", messages.Payables.Size, messages.MetaD.ThisYear, messages.MetaD.LastYear);
        makechart("inventory", messages, "Inventory.Data", messages.Inventory.Size, messages.MetaD.ThisYear, messages.MetaD.LastYear);
	makedatatable(messages);
}


		



function makedatatable(messages){

YAHOO.example.dtTipFunction = function( item, index, series ){

        var tamt = YAHOO.util.Number.format( item.count,{prefix: "$",thousandsSeparator: ",",decimalPlaces: 2});
        var tperc = YAHOO.util.Number.format( item.perc,{decimalPlaces: 1});

        var toolTipText = item.response + ": " + tamt + "\n" + tperc + "%";
        return toolTipText;
} 



//Make Panel

	var panel = new YAHOO.widget.Panel("PanelDetalle", {visible:false, draggable:true, close:true, width:'400px' } );   
			panel.setHeader('');   
			panel.setBody('');   
			panel.render(YAHOO.util.Dom.get('bd')); 



//Show Panel


	var show = function (recordId,caption,cell,cash, receivables, payables, inventory,detail) {
			cash = Number(cash);
			receivables = Number(receivables);
			payables = Number(payables);
			inventory= Number(inventory);			

			var total = cash + receivables + payables + inventory;
			baseRecordId = recordId;
			if(caption == "Overdue Payable"){
				panel.setHeader(caption);
				panel.setBody(detail);
				panel.cfg.setProperty("context", [cell, "tl", "bl"]);
				panel.cfg.setProperty("visible", true);
				
			}
			else if(caption == "Overdue Receivable"){
				panel.setHeader(caption);
				panel.setBody(detail);				
				panel.cfg.setProperty("context", [cell, "tl", "bl"]);
				panel.cfg.setProperty("visible", true);
				

			}else{
				panel.setHeader(caption + " Ratios");
				panel.setBody('<div id="piechart"></div>');
				panel.cfg.setProperty("context", [cell, "tl", "bl"]);
				panel.cfg.setProperty("visible", true);
				var cashperc = (cash/total)*100;
				var recperc = (receivables/total)*100;
				var payperc = (payables/total)*100;
				var invperc = (inventory/total)*100;


				var piedata = [{ "response": "Cash", "count": cash, "perc": cashperc }, { "response": "Receivables", "count": receivables, "perc": recperc },{ "response": "Payables", "count": payables, "perc": payperc },{ "response": "Inventory", "count": inventory, "perc": invperc }];
				var pieData = new YAHOO.util.DataSource(piedata);
				pieData.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
				pieData.responseSchema = { fields: [ "response", "count", "perc" ] };


				var mychart = new YAHOO.widget.PieChart( "piechart", pieData,{dataTipFunction: YAHOO.example.dtTipFunction, dataField: "count",categoryField: "response",style:{padding: 20,legend:{display: "right",padding: 10,spacing: 5,font:{family: "Arial",size: 13}}}});



			}
	};

	//Hide Panel
	var hide = function () {
			panel.cfg.setProperty("visible", false);
	};


//DataTable DataSource
	var myColumnDefs = [ 
		{key:"month", label:"Month", field: "month", className: "monthfmt"}, 
		{key:"cash", label:"Cash", formatter:"currency", className: "cashfmt"}, 
		{key:"receivables", label:"Receivables", formatter:"currency", className: "receivablesfmt"}, 
		{key:"payables", label:"Payables", formatter:"currency", className: "payablesfmt"}, 
		{key:"inventory", label:"Inventory", formatter:"currency", className: "inventoryfmt"}  
	]; 

	myDataSource = new YAHOO.util.DataSource(messages);
	myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
	myDataSource.responseSchema = {
	            resultsList: "Datatable.Data",
	            fields: [	{key: "month", width: 137},
				{key: "cash", width: 137},
				{key: "receivables", width: 137},
				{key: "payables", width: 137},
				{key: "inventory", width: 137}
		    ]
	};

//Create Datatable
		DashObj4.prototype.handleOnAvailable = function(me) {
			myDataTable = new YAHOO.widget.DataTable("datatable", myColumnDefs, myDataSource); 


			myDataTable.subscribe('cellClickEvent',function (ev) {
			var target = YAHOO.util.Event.getTarget(ev);
			var record = this.getRecord(target);
			show(record.getData('id'),record.getData('month'),target,record.getData('cash'), record.getData('receivables'), record.getData('payables'), record.getData('inventory'),'');
			});
			}
 		var obj4 = new DashObj4("datatable");	


//Overdue Payables DataSource
	var OPColumnDefs = [ 
		{key:"name", label:"Vendor Name", width: 230, className: "name"}, 
		{key:"overdue", label:"Days Overdue", width: 90, className: "overdue"} 
	]; 

	OPDataSource = new YAHOO.util.DataSource(messages);
	OPDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
	OPDataSource.responseSchema = {
	            resultsList: "OPayables.Data",
	            fields: [	{key: "name"},
				{key: "overdue"},
				{key: "invoicedate"},
				{key: "amount"},
				{key: "ref"},
				{key: "terms"},
				{key: "memo"}				
		    ]
	};

//Overdue Payables Datatable
		DashObj5.prototype.handleOnAvailable = function(me) {
			OPDataTable = new YAHOO.widget.DataTable("OPtable", OPColumnDefs, OPDataSource); 


	OPDataTable.subscribe('cellClickEvent',function (ev) {
		var target = YAHOO.util.Event.getTarget(ev);
		var record = this.getRecord(target);
		var amt = record.getData('amount');
		var famt = YAHOO.util.Number.format( amt,{prefix: "$",thousandsSeparator: ",",decimalPlaces: 2});
		var OPdetail = '<TABLE width=380><TR><TD COLSPAN=2><B>Vendor: </B>' + record.getData('name') + '</TD></TR><TR><TD><B>Invoice Date: </B>' + record.getData('invoicedate') + '</TD><TD><B>Amount: </B>' + famt + '</TD></TR><TR><TD COLSPAN=2><B>Ref #: </B>' + record.getData('ref') + '</TD></TR><TR><TD COLSPAN=2><B>Terms: </B>' + record.getData('terms') + '</TD></TR><TR><TD COLSPAN=2><B>Memo: </B>' + record.getData('memo') + '</TD></TR></TABLE>';
		show(record.getData('id'),"Overdue Payable",target, '', '','','',OPdetail);
	});

		}
 		var obj5 = new DashObj5("OPtable");

//Overdue Receivables DataSource
	var ORColumnDefs = [ 
		{key: "name", label:"Customer Name", width: 230, className: "name"}, 
		{key: "overdue", label:"Days Overdue", width: 90, className: "overdue"}

	]; 

	ORDataSource = new YAHOO.util.DataSource(messages);
	ORDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
	ORDataSource.responseSchema = {
	            resultsList: "OReceivables.Data",
	            fields: [	{key: "name"},
				{key: "overdue"},
				{key: "invoicedate"},
				{key: "amount"},
				{key: "ref"},
				{key: "terms"},
				{key: "memo"}				
		    ]
	};

//Overdue Receivables Datatable
		DashObj6.prototype.handleOnAvailable = function(me) {
			ORDataTable = new YAHOO.widget.DataTable("ORtable", ORColumnDefs, ORDataSource); 


	ORDataTable.subscribe('cellClickEvent',function (ev) {
		var target = YAHOO.util.Event.getTarget(ev);
		var record = this.getRecord(target);
		var bmt = record.getData('amount');
		var fbmt = YAHOO.util.Number.format( bmt,{prefix: "$",thousandsSeparator: ",",decimalPlaces: 2});

		var ORdetail = '<TABLE width=380><TR><TD COLSPAN=2><B>Customer: </B>' + record.getData('name') + '</TD></TR><TR><TD><B>Invoice Date: </B>' + record.getData('invoicedate') + '</TD><TD><B>Balance Due: </B>' + 
fbmt + '</TD></TR><TR><TD COLSPAN=2><B>Invoice #: </B>' + record.getData('ref') + '</TD></TR><TR><TD COLSPAN=2><B>Terms: </B>' + record.getData('terms') + '</TD></TR><TR><TD COLSPAN=2><B>Memo: </B>' + record.getData('memo') + '</TD></TR></TABLE>';
		show(record.getData('id'),"Overdue Receivable",target, '', '','','', ORdetail);

	});
		}
 		var obj6 = new DashObj6("ORtable");

}



function dashstructures(){

	var tabView = new YAHOO.widget.TabView();
	tabView.addTab( new YAHOO.widget.Tab({
			label: 'Cash',
			content: '<span class="chart_title">Cash</span><div class="chart" id="cash"></div>',
			active: true
	}));
	tabView.addTab( new YAHOO.widget.Tab({
			label: 'Receivables',
			content: '<span class="chart_title">Receivables</span><div class="chart" id="receivables"></div>'
	}));
	tabView.addTab( new YAHOO.widget.Tab({
			label: 'Payables',
			content: '<span class="chart_title">Payables</span><div class="chart" id="payables"></div>'
	}));
	tabView.addTab( new YAHOO.widget.Tab({
			label: 'Inventory',
			content: '<span class="chart_title">Inventory</span><div class="chart" id="inventory"></div>'
	}));
	tabView.appendTo('tabContainer');

	getthedata();
}

function getthedata(){
	if(YAHOO.util.Cookie.get("username") == "demo"){
		var sURL = "functions/demodata.php?";
    	}else{
		var sURL = "functions/dashajax.php?";
    	}

	var request = YAHOO.util.Connect.asyncRequest('GET', sURL ,{success:datadist,failure:failuredash});
}



