/* $Id: FSTradeFunctions.js,v 1.28 2008/02/06 13:22:08 dima Exp $ */

var BID;

var _months = new Array(12);
_months[0] = "January";
_months[1] = "February";
_months[2] = "March";
_months[3] = "April";
_months[4] = "May";
_months[5] = "June";
_months[6] = "July";
_months[7] = "August";
_months[8] = "September";
_months[9] = "October";
_months[10] = "November";
_months[11] = "December";

FSDateFormatter = function (elCell, oRecord, oColumn, oData) {
	var d = oData.split('.')[0].split(' ')[0];
	d = d.split('-');
	d = new Date(_months[d[1]-1] + ' ' + d[0] + ', ' + d[2] );
	elCell.innerHTML =  _months[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
}

FSCountFormatter = function (elCell, oRecord, oColumn, oData) {
	var i = parseInt(oData) | 0;
	elCell.innerHTML = i;
}

FSPriceFormatter = function (elCell, oRecord, oColumn, oData) {
	if (oData) 
		elCell.innerHTML = '&pound;' + parseFloat(oData).toFixed(2);
	else 
		elCell.innerHTML = '';
	YAHOO.util.Dom.addClass(elCell, 'aright');
}

FSFLCodeFormatter = function (elCell, oRecord, oColumn, oData) {
	elCell.innerHTML = '<a href="/prod/' + oData + '/">' + oData + '</a>';
}

FSFLEditFormatter = function (elCell, oRecord, oColumn, oData) {
	elCell.innerHTML = '<a href="javascript: displayFavouritesListItems('+oRecord.bid+')">' + oData + '</a>';
}

FSDelFormatter = function (elCell, oRecord, oColumn, oData) {
	if ( oRecord.bid) 
	elCell.innerHTML = '<img src="/images/final/delete.png" width="81" height="20" border="0" alt="Delete" class="link"/>';
}

FSViewFormatter = function (elCell, oRecord, oColumn, oData) {
	if ( oRecord.bid) 
	elCell.innerHTML = '<a href="javascript: displayFavouritesListItems('+oRecord.bid+')"><img src="/images/final/view.png" width="81" height="20" border="0" alt="View" /></a>';
}

FSAmendFormatter = function (elCell, oRecord, oColumn, oData) {
	if ( oRecord.bid) 
	elCell.innerHTML = '<img src="/images/final/rename.png" width="81" height="20" border="0" alt="Amend Title" class="link" />';
	YAHOO.util.Dom.addClass(elCell, 'link');
}

FSPercentFormatter = function (elCell, oRecord, oColumn, oData) {
	if (oData == '' || isNaN(oData)) 
		elCell.innerHTML = '';
	else
		elCell.innerHTML = parseFloat(oData).toFixed(2) + '%';
	YAHOO.util.Dom.addClass(elCell, 'aright');
}

FSQtyFormatter = function (elCell, oRecord, oColumn, oData) {
	if (oRecord.bid > 0 ) {
		elCell.innerHTML = 
		'<table class="qtybox"><tbody><tr><td class="qtytd" style="padding: 0px; width: 25px; height: 22px;" rowspan="2"><div class="qtydiv">' + 
		'<input type="text" class="qty" id="fvqty_bpid' + oRecord.bpid + '" name="bpid' + oRecord.bpid + '" value="' + oData + 
		'" onclick="this.focus()" onBlur="updateFavQty(this)" onKeyDown="processEnter(arguments[0])"/></div></td>' +
	  '<td class="m11" style="padding: 0px; width: 15px; height: 11px;"><a onmouseup="stop_counter(' + "'bpid" + oRecord.bpid + "','fv'" + 
	  ')" onmousedown="update_counter(' + "'bpid" + oRecord.bpid + "', 1, 'fv'" + 
	  ')" href="javascript: // +"><img width="15" height="11" border="0" src="/images/qty-up.png" alt=""/></a></td></tr>' +
	  '<tr><td class="m11" style="padding: 0px; width: 15px; height: 11px;"><a onmouseup="stop_counter(' + 
	  "'bpid" + oRecord.bpid + "','fv'" + ')"' + 
	  'onmousedown="update_counter(' + "'bpid" + oRecord.bpid + "', -1, 'fv'" + 
	  ')" href="javascript: // -"><img width="15" height="11" border="0" src="/images/qty-down.png" alt=""/></a></td></tr></tbody></table>';
		
	
		
		// '<INPUT type="text" value="' + oData + '" onclick="this.focus()" onChange="updateFavQty(this)" onKeyDown="processEnter(arguments[0])" style="width: 30px" />';
			// BUG in YUI table - it rememebers class names...
	YAHOO.util.Dom.removeClass(elCell.parentNode,'nota');
	YAHOO.util.Dom.removeClass(elCell.parentNode,'live');
	YAHOO.util.Dom.removeClass(elCell.parentNode,'dntd');
	YAHOO.util.Dom.removeClass(elCell.parentNode,'deleted');
	if ( oRecord.status ) {
		YAHOO.util.Dom.addClass(elCell.parentNode, oRecord.status); // style the row 
	} else {
		YAHOO.util.Dom.addClass(elCell.parentNode, "deleted"); // style the row 
	}	
		
		
	} else {
		elCell.innerHTML = oData;
	}

}

var FavoritesListingTable;
var FavoritesListingItemTable;
var FSFLHeaders = [
    {key:"title", text:"Title",sortable:true, resizeable:true, formatter: FSFLEditFormatter},	
    {key:"count", text:"Product count",sortable:true, resizeable:true, formatter: FSCountFormatter},
    /*{key:"sum_price", text:"Total",sortable:true, resizeable:true, formatter: FSPriceFormatter},*/
    {key:"updated", text:"Last Updated",sortable:true, resizeable:true, formatter: FSDateFormatter},
    {key:"view", text:"View Products",sortable:false, resizeable:false, formatter: FSViewFormatter},
    {key:"amend", text:"Rename List",sortable:false, resizeable:false, formatter: FSAmendFormatter},
    {key:"del", text:"Delete list",sortable:false, resizeable:false, formatter: FSDelFormatter}
];

var FSFLIHeaders = [
    {key:"code", text:"Code",sortable:true, resizeable:false, formatter: FSFLCodeFormatter},	
    {key:"title", text:"Product",sortable:true, resizeable:false},	
    {key:"rrp", text:"RRP EX VAT",sortable:true, resizeable:false, formatter: FSPriceFormatter},
    {key:"vat", text:"VAT RATE",sortable:true, resizeable:false, formatter: FSPercentFormatter},
    {key:"discount", text:"DISC %",sortable:true, resizeable:false, formatter: FSPercentFormatter},
    {key:"price", text:"YOU PAY",sortable:true, resizeable:false, formatter: FSPriceFormatter},
    {key:"del", text:"Delete",sortable:false, resizeable:false, formatter: FSDelFormatter},
    {key:"qty", text:"QTY",sortable:false, resizeable:false, formatter: FSQtyFormatter}
];

// Let's get data from Server

// Point to a local or proxy URL
var FSFLDataSource = new YAHOO.util.DataSource("/ajax/");

// Set the responseType as JSON
FSFLDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

// Define the data schema
FSFLDataSource.responseSchema = {
    resultsList: "items", // Dot notation to results array
    fields: ["bid","title","updated","count"] // Field names
};


var FSFLIDataSource = new YAHOO.util.DataSource([]);
FSFLIDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
FSFLIDataSource.responseSchema = {
	resultsList: "items", // Dot notation to results array
	    fields: ["bid","grp", "bpid","code", "title","rrp","vat","discount","price","qty","del"] // Field names
};

var FSFLISQLDataSource = new YAHOO.util.DataSource("/ajax/");
FSFLISQLDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
FSFLISQLDataSource.responseSchema = {
	resultsList: "items", // Dot notation to results array
	    fields: ["bid","grp", "bpid","code", "title","rrp","vat","discount","price","qty","status","add"] // Field names
};


// to call onWindow Load to display table
function loadFavoritesListingTable() {
	FavoritesListingTable = new YAHOO.widget.DataTable("FavoritesListingTable",  new YAHOO.widget.ColumnSet(FSFLHeaders), FSFLDataSource, 
		{initialRequest: 'ajax=getFavouritesList', rowSingleSelect:true} );

	FavoritesListingTable.subscribe("cellClickEvent", FavoritesListingTable.onEventEditCell);
	FavoritesListingTable.subscribe("cellClickEvent", FSFLCellDelete); 
	FavoritesListingTable.subscribe("cellEditEvent",FSFLCellEdit); 
	
	var paramValue = document.location.search;
	if(paramValue != ""){
		if(paramValue.search("bid") > 0)	{
			params = paramValue.split("=");
			var bid = parseInt(params[1]);
			if (bid > 0) {
				FavoritesListingTable.subscribe("dataReturnEvent", 
				function () {
					window.setTimeout(function () {displayFavouritesListItems(bid)},200);	
				}, FavoritesListingTable);
			}
		}
	}
	

}

var FSFLCellDelete = function(oArgs) {
	if ( ! oArgs.target.columnIndex ) return; // safe
	var record = FavoritesListingTable.getRecordSet().getRecord(oArgs.target.parentNode.sectionRowIndex);
	var editedKey = FavoritesListingTable.getColumnSet().keys[oArgs.target.columnIndex].key;

	if (editedKey == 'del') {
		if ( confirm('Are you sure you want to delete favourites list named ' + record.title + '?') ) {
			var DeleteDeliveryCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						FavoritesListingTable.deleteRow(oArgs.target.parentNode);  // It is a clicked TR
						FavoritesListingTable.getRecordSet().deleteRecord(record);
					} else {
						alert(r.error);
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', DeleteDeliveryCallback, 'ajax=deleteFavouriteList&bid=' + record.bid);
		
		}
	} else if (editedKey == 'amend'){
		openFavTitleEditor( FavoritesListingTable, record, oArgs.target );
	}	
}
var FSFLCellEdit = function(oArgs) { 
	if (oArgs.oldData != oArgs.newData) {
		// WARNING: for title only !!!
		var record = FavoritesListingTable.getRecordSet().getRecord(oArgs.target.parentNode.sectionRowIndex);
			var EditDeliveryCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						// do nothing ???
					} else {
						alert(r.error);
						// and get old text back !!!!
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', EditDeliveryCallback, 'ajax=editFavouriteList&title=' + encodeURIComponent(oArgs.newData) + '&bid=' + record.bid);
	} 
} 

var addFavouritesToBasket = function() {
	var r = FavoritesListingItemTable.getRecordSet().getRecord(0);
	if ( r ) {
		var bid = r.bid;
		var mergeCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.added > 0) {
						window.location.href = '/basket.html';
						return;
						/*if ( r.added == 1) {
							alert('One line was added to the basket');
						} else {
							alert(r.added + ' lines were added to the basket');
						}*/
						// set all qty to 0
						
						var rs = FavoritesListingItemTable.getRecordSet();
						var recs = rs._records;
						for(var i=0; i<recs.length; i++) {
							rs.updateRecord(recs[i], 'qty', 0);
							var tds = FavoritesListingItemTable.getRow(i).getElementsByTagName('TD');
							FavoritesListingItemTable.formatCell(tds[tds.length-1]);	
						} 
						if ( parseFloat(r.totals.exvat) > 0 ) {
				 			var t = document.getElementById('basket_total');
							if ( t ) {
								t.innerHTML = r.totals.exvat;
				 			}
						}
					} else {
						hideLoading();
						if (r.error) {
							alert(r.error);
						} else {
							alert("Nothing was added to the basket.");
						}
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			showLoading();
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', mergeCallback, 'ajax=addFavoutitesToBasket&include_totals=1&bid=' + bid);	
	}
}


var addFavouriteList = function(txt) {
	
    var AddCallback = {
	success : function(o) {
		var r = eval ( '(' + o.responseText + ')' );
		if (r.error == null) {
		var myRec = FavoritesListingTable.getRecordSet().insert({
			bid: r.bid, 
			title: r.title, 
			updated: r.updated,
			items: '0',
			total: '0.00',
			del: '',
			edit: ''
		});
		
		// this one to update visual model
		FavoritesListingTable.addRow(myRec,0);
		} else {
			alert(r.error);
		}
	},
	failure : function(o) {
		alert('AJAX connectivity problem :-(');
	}
	};
	
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddCallback, 'ajax=addFavouriteList&text=' + encodeURIComponent(txt));
 
	return false;
} 

// setting up an empty table for basket contents...
var loadFavoritesListingItemTable = function () {
	FavoritesListingItemTable = new YAHOO.widget.DataTable("FavoritesListingItemTable",  new YAHOO.widget.ColumnSet(FSFLIHeaders), FSFLIDataSource, {rowSingleSelect:true} );
	//FavoritesListingItemTable.subscribe("cellClickEvent", FavoritesListingItemTable.onEventEditCell);
	//FavoritesListingItemTable.subscribe("cellEditEvent",FSFLICellEdit);
	FavoritesListingItemTable.subscribe("cellClickEvent", FSFLICellDelete);
	FavoritesListingItemTable.sortColumn1 = function(oColumn) { // not functional .....
		// remove last column and insert it back after sort ????
		var l = this.getLastRow();
		var li = l.sectionRowIndex;
		var total = this.getRecordSet().getRecord(li);
		this.deleteRow(l);		
		
		//this.deleteRow(this.getLastRow());
		YAHOO.widget.DataTable.prototype.sortColumn.call(this, oColumn);
		this.addRow(this.getRecordSet().append({bid: 0, price: total.price, qty: total.qty}));
	}
	
	FavoritesListingItemTable.onDataReturnReplaceRows = function (sRequest , oResponse , bError ) {
		YAHOO.widget.DataTable.prototype.onDataReturnReplaceRows.call(this, sRequest , oResponse , bError);
		setupFavouritesTotals(this);
	}
	
}

setupFavouritesTotals = function(table) {
	return; // not functional as we have no tatal row...
	var q = 0;
	var p = 0.0;
	var r = table.getRecordSet()._records;
	for (var i = 0; i < table.getRecordSet()._length; i ++){
		//var qty = parseInt(r[i].qty);
		//q = q + qty;
		//if (r[i].price) p = p + parseFloat(parseFloat(r[i].price).toFixed(2)) * qty;
		if (r[i].price) p = p + parseFloat(parseFloat(r[i].price).toFixed(2));
	}
	q = table.getRecordSet()._length;
	var r = table.getRecordSet().append({bid: 0, price: p, qty: q, title: 'TOTAL:'});
	table.addRow(r);
	
}




var addToFavourites = function(frmid, code, animid, iconid, redir) {
	frm = document.getElementById(frmid);
	f = frm.favourites.value;
	if ( f == 0 ) {
		var mySimpleDialog;
		var handleYes = function() {
			var whatName = mySimpleDialog.body.getElementsByTagName('input')[0].value;
			if ((whatName == "") || (whatName == null)){
				return;
			}
			var AddCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						stopAnimWithMessage('new list created...', animid);
						f = r.bid;
						var o = document.createElement('option');
						o.innerHTML = whatName;
						o.setAttribute('value',f);
						frm.favourites.appendChild(o);
						BASKET_REDIR = redir;
						ADDING_TO = 'fav';
						addToBasket(f,0,code, animid, iconid);
					} else {
						alert(r.error);
						stopAnimWithMessage('new list creation failed...', animid);
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			mySimpleDialog.hide();
			startAnimWithMessage('creating new list...', animid);
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddCallback, 'ajax=addFavouriteList&text=' + encodeURIComponent(whatName));
		};
		
		mySimpleDialog = new YAHOO.widget.SimpleDialog("dlg", { width: "20em",fixedcenter:true,	modal:true,	draggable:false, visible: false });
		mySimpleDialog.setHeader("Please provide title for the new favourites list");
		mySimpleDialog.setBody('<input type="text" name="" value="" />');
		mySimpleDialog.cfg.setProperty("icon",YAHOO.widget.SimpleDialog.ICON_INFO);
		var myButtons = [ 
			{ text:"Ok",handler:handleYes, isDefault:true },
			{ text:"Cancel",handler: mySimpleDialog.hide }
		];
		mySimpleDialog.cfg.queueProperty("buttons", myButtons);

		mySimpleDialog.render(document.body);
		mySimpleDialog.show();
	} else if ( f > 0 ) {
		ADDING_TO = 'fav';
		BASKET_REDIR = redir;
		addToBasket(f,0,code, animid, iconid);
	}
}

var displayFavouritesListItems = function(bid) {
	// hide div...
	var rec = FavoritesListingTable.getRecordSet().getRecordBy('bid', bid); 
	if ( rec ) {
		BID = bid; // to use on other pages
		document.getElementById('favlist_bid').value = bid;
		document.getElementById("FavoritesListingDiv").style.display = "none";
		document.getElementById("FavoritesListingItemDiv").style.display = "block";
		document.getElementById("FavoritesHeader").innerHTML = "You Have Selected: &quot;" + rec.title + "&quot;";
		// clear table... and replace with bid content
    	
    	FSFLISQLDataSource.sendRequest('ajax=getFavouritesListContent&bid=' + bid , FavoritesListingItemTable.onDataReturnReplaceRows, FavoritesListingItemTable);
    }
}




var backToFavouritesList = function() {
	document.getElementById("FavoritesListingItemDiv").style.display = "none";
	document.getElementById("FavoritesListingDiv").style.display = "block";
	document.getElementById("FavoritesHeader").innerHTML = "Favourites Lists";
	if (BID) {
	var recs = FavoritesListingTable.getRecordSet()._records;
    for(var i=0; i<recs.length; i++) {
        var rec = recs[i];
        if(rec && (rec.bid == BID)) {
            var tds = FavoritesListingTable.getRow(i).getElementsByTagName('TD');
            for ( var i = 1; i < tds.length; i++ ) {
				FavoritesListingTable.formatCell(tds[i]);	
			}
			return;
        }
   }
	}
}

// compatibility func
var updateFavQty = function (inp) {
	var record = FavoritesListingItemTable.getRecordSet().getRecord(inp.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.sectionRowIndex);
	var oArgs = {oldData: record.qty, newData: inp.value, target: inp.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode};
	FSFLICellEdit(oArgs);
}

function processEnter(e) {
	if (window.event) e = window.event;
	var f = YAHOO.util.Event.getTarget(e);

    if ((e.type == 'click') || (e.keyCode == 13 )) {
    	f.blur();
    }
}

var FSFLICellDelete = function(oArgs) { 
	if ( ! oArgs.target.columnIndex ) return; //safe
	var record = FavoritesListingItemTable.getRecordSet().getRecord(oArgs.target.parentNode.sectionRowIndex);
	var editedKey = FavoritesListingItemTable.getColumnSet().keys[oArgs.target.columnIndex].key;
	if (editedKey == 'del') {
		if ( ! record.code ) return;
		if ( confirm('Are you sure you want to delete ' + record.code + ' from favourites list ?') ) {
			var DeleteCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						FavoritesListingItemTable.deleteRow(oArgs.target.parentNode);  // deleted
						FavoritesListingItemTable.getRecordSet().deleteRecord(record);
							
						var rs = FavoritesListingItemTable.getRecordSet();
						//var total = rs._records[FavoritesListingItemTable.getLastRow().sectionRowIndex]; // not working as it
						
						var p = parseInt(record.qty) * parseFloat(record.price).toFixed(2);
						//var p = parseFloat(parseFloat(record.price).toFixed(2));
						//var q = 1;			

						//q = parseInt(total.qty) - q;
						var q = rs._records.length;
						
						//FavoritesListingItemTable.getRecordSet().updateRecord(total, 'qty', q);
						//p = parseFloat(parseFloat(total.price) - p).toFixed(2);
						//FavoritesListingItemTable.getRecordSet().updateRecord(total, 'price', p);
						//var tds = FavoritesListingItemTable.getLastRow().getElementsByTagName('TD');
						//for ( var i = 0; i < tds.length; i++ ) {
						//	FavoritesListingItemTable.formatCell(tds[i]);	
						//} 
						updateTotals(record.bid,q,p,r.updated);
					} else {
						alert(r.error);
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', DeleteCallback, 'ajax=updateBasketCount&bid=' + record.bid + '&grp=' + record.grp );
		
		}
	}
}



var FSFLICellEdit = function(oArgs) { 
	if (oArgs.oldData != oArgs.newData) {
		var record = FavoritesListingItemTable.getRecordSet().getRecord(oArgs.target.parentNode.sectionRowIndex);
		var editedKey = FavoritesListingItemTable.getColumnSet().keys[oArgs.target.columnIndex].key;
		var nVal = parseInt(oArgs.newData);
		if (isNaN(nVal)) {
			alert('Not a number');
			FavoritesListingItemTable.getRecordSet().updateRecord(record, 'qty',oArgs.oldData);
			FavoritesListingItemTable.formatCell(oArgs.target);
			return;
		}
			var EditDeliveryCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						BID = record.bid; // to use later on all pages... ???
						/*
						var rs = FavoritesListingItemTable.getRecordSet();
						var total = rs._records[FavoritesListingItemTable.getLastRow().sectionRowIndex];
						var p = 0.0;
						var q = 0;
						if ( nVal > 0) {
							FavoritesListingItemTable.getRecordSet().updateRecord(record, 'qty', nVal);
							FavoritesListingItemTable.formatCell(oArgs.target);
							//p = nVal * parseFloat(parseFloat(record.price).toFixed(2));
							p = parseFloat(parseFloat(record.price).toFixed(2));
							//q = nVal;			
						}
						//q = parseInt(total.qty) - parseInt(oArgs.oldData) + q;
						q = parseInt(total.qty);
						FavoritesListingItemTable.getRecordSet().updateRecord(total, 'qty', q);
						//p =  parseFloat(parseFloat(total.price).toFixed(2)) + p - parseInt(oArgs.oldData) * parseFloat(parseFloat(record.price).toFixed(2));
						p =  parseFloat(parseFloat(total.price).toFixed(2)) + p - parseFloat(parseFloat(record.price).toFixed(2));
						FavoritesListingItemTable.getRecordSet().updateRecord(total, 'price', p);
						var tds = FavoritesListingItemTable.getLastRow().getElementsByTagName('TD');
						for ( var i = 0; i < tds.length; i++ ) {
							FavoritesListingItemTable.formatCell(tds[i]);	
						} 
						updateTotals(record.bid,q,p,r.updated);
						*/
					} else {
						alert(r.error);
						FavoritesListingItemTable.getRecordSet().updateRecord(record, 'qty', oArgs.oldData);
						FavoritesListingItemTable.formatCell(oArgs.target);
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', EditDeliveryCallback, 'ajax=updateBasketCount&bid=' + record.bid + '&grp=' + record.grp + '&qty=' + nVal);
	} 
} 

function updateTotals(bid,q,p,updated) {
	// UPDATE parent YUI table with new totals !!!!
	// FIXME FavoritesListingTable

	var recs = FavoritesListingTable.getRecordSet()._records;
	for(var i=0; i<recs.length; i++) {
    	var rec = recs[i];
    	if(rec && (rec.bid == bid)) {
	    	FavoritesListingTable.getRecordSet().updateRecord(rec, 'updated', updated);
    		FavoritesListingTable.getRecordSet().updateRecord(rec, 'count', q);
    		FavoritesListingTable.getRecordSet().updateRecord(rec, 'sum_price', p);
    		//alert(q + ' ' + p + ' ' + updated);
    		var tds = FavoritesListingTable.getRow(i).getElementsByTagName('TD');
			for ( var j = 0; j < tds.length; j++ ) {
				FavoritesListingTable.formatCell(tds[j]);	
			} 
			return;
    	}
	}
}

// Instantiate the Dialog
var FSFavTitleEditor;

var FSFavHandleSuccess = function(o) {
	FSFavTitleEditor.table.getRecordSet().updateRecord(FSFavTitleEditor.record, 'title', document.getElementById('FSFavNewTitle').value);
	FSFavTitleEditor.table.formatCell(FSFavTitleEditor.td);
	var tds = FSFavTitleEditor.table.getRow(FSFavTitleEditor.td.parentNode.sectionRowIndex).getElementsByTagName('TD');
	for ( var j = 0; j < tds.length; j++ ) {
		FSFavTitleEditor.table.formatCell(tds[j]);	
	} 

};

var FSFavHandleFailure = function(o) {
	alert("Submission failed: " + o.status);
};

// Define various event handlers for Dialog
var FSFavHandleSubmit = function() {
	this.submit();
	this.hide();
};
var FSFavHandleCancel = function() {
	this.cancel();
};

function initFavTitleEditor () {
 if ( !FSFavTitleEditor) {
 	FSFavTitleEditor = new YAHOO.widget.Dialog("FSChangeFavTitle", 
		{ width : "300px",
		fixedcenter : true,
		visible : true, 
		constraintoviewport : true,
		buttons : [ 
			{ text:"Submit", handler:FSFavHandleSubmit, isDefault:true },
			{ text:"Cancel", handler:FSFavHandleCancel } 
		]
		}
	);
	FSFavTitleEditor.render();
	FSFavTitleEditor.callback = { success: FSFavHandleSuccess,failure: FSFavHandleFailure };
 }
}



function openFavTitleEditor (table, record, td) {
	initFavTitleEditor();
	FSFavTitleEditor.table = table;
	FSFavTitleEditor.record = record;
	FSFavTitleEditor.td = td;
	document.getElementById('FSFavBID').value = record.bid;
	document.getElementById('FSFavOldTitle').innerHTML = record.title;
	document.getElementById('FSFavNewTitle').value = '';
	FSFavTitleEditor.show();
}

