var publishedFieldChanged = false;
var handleSubmit = function() {
	this.submit();
};
var handleCancel = function() {
	this.cancel();
};

var cancel = function()
{
	return false;
}

var dialogBox = null;
var tabView = null;
var descriptionEditor = null;

function clearExceptions()
{
	var form = $('editSavedForm');
	form.elements.productTitle.style.backgroundColor = "white";
	form.elements.productTitle.title = "";
	form.elements.subTitle.style.backgroundColor = "white";
	form.elements.subTitle.title = "";
	form.elements.languageCode.style.backgroundColor = "white";
	form.elements.languageCode.title = "";
	form.elements.isbn.style.backgroundColor = "white";
	form.elements.isbn.title = "";
	form.elements.customerProductId.value;
	form.elements.customerProductId.title = "";
	form.elements.previewPages.style.backgroundColor = "white";
	form.elements.previewPages.title = "";
	form.elements.msrp.style.backgroundColor = "white";
	form.elements.msrp.title = "";
	form.elements.shortDescription.style.backgroundColor = "white";
	form.elements.shortDescription.title = "";
};

function handleExceptionsInCallback(o)
{
	var returnObj;
	//var messages;
	var exceptions
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		//messages = returnObj.data;
		exceptions = returnObj.exceptions;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	for(var key in exceptions)
	{
		if($(key))
		{
			$(key).style.backgroundColor = "rgb(255,120,120)";
			$(key).title = exceptions[key];
		}
		//alert(exceptions[key].value);
	}
};

function prep() 
{
	YAHOO.util.Event.addListener($("savedEditor"), "change", function(){publishedFieldChanged = true;}); 
	
	loadBooksData();
	publishedBooks.loadImmutableBooksData();
	publishers.load();
	stores.load();

	dialogBox = new YAHOO.widget.Dialog("dialogBox", 
			{ width : "500px",
			  fixedcenter : true,
			  modal:true,
			  visible : false, 
			  constraintoviewport : true,
			  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
						  { text:"Cancel", handler:handleCancel } ]
			 } );
	dialogBox.callback.success = publishedBooks.loadImmutableBooksData;
	
	tabView = new YAHOO.widget.TabView('booksTabs'); 
	
	//create the RTE:
	descriptionEditor = new YAHOO.widget.SimpleEditor('description', {
	    width: '450px',
		height: '300px',
		toolbar: {
			titlebar: 'Full Description',
			buttons: [
				{ group: 'fontstyle', label: 'Font Name and Size',
					buttons: [
						{ type: 'select', label: 'Arial', value: 'fontname', disabled: true,
							menu: [
								{ text: 'Arial', checked: true },
								{ text: 'Arial Black' },
								{ text: 'Comic Sans MS' },
								{ text: 'Courier New' },
								{ text: 'Lucida Console' },
								{ text: 'Tahoma' },
								{ text: 'Times New Roman' },
								{ text: 'Trebuchet MS' },
								{ text: 'Verdana' }
							]
						},
						{ type: 'spin', label: '13', value: 'fontsize', range: [ 9, 36 ], disabled: true }
					]
				},
				{ type: 'separator' },
				{ group: 'textstyle', label: 'Font Style',
					buttons: [
						{ type: 'push', label: 'Bold CTRL + SHIFT + B', value: 'bold' },
						{ type: 'push', label: 'Italic CTRL + SHIFT + I', value: 'italic' },
					]
				},
				{ type: 'separator' },
				{ group: 'indentlist', label: 'Lists',
					buttons: [
						{ type: 'push', label: 'Create an Unordered List', value: 'insertunorderedlist' },
						{ type: 'push', label: 'Create an Ordered List', value: 'insertorderedlist' }
					]
				},
				{ type: 'separator' },
				{ group: 'insertitem', label: 'Insert Item',
					buttons: [
						{type: 'push', label: 'HTML Link CTRL + SHIFT + L', value: 'createlink', disabled: true },
						{ type: 'push', label: 'Insert Image', value: 'insertimage' }
					]
				}
			]

		}
	});
	descriptionEditor.render();
	try{descriptionEditor.show();}catch(e){}
	
	languageSuggestor = function() {
		// Use an XHRDataSource
		var oDS = new YAHOO.util.XHRDataSource("suggestLanguages.jsp");
		// Set the responseType
		oDS.responseType = YAHOO.util.DataSource.TYPE_JSON;
		oDS.responseSchema = {
			resultsList: "data",
			fields: ["name", "code"]
		};
		
		// Enable caching
		oDS.maxCacheEntries = 5;

		// Instantiate the AutoComplete
		var oAC = new YAHOO.widget.AutoComplete("language", "languageSuggestions", oDS, {autoHighlight: true, useShadow: true});
		// Result data passed as object for easy access from custom formatter.
		oAC.resultTypeList = false;
		// Customize formatter to show thumbnail images
		oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
			/*if(oResultData.thumbnail_url) {
				img = "<img src=\""+ oResultData.thumbnail_url + "\">";
			}
			else {
				img = "<span class=\"img\"><span class=\"imgtext\">N/A</span></span>";
			}*/
			return "<div class=\"result\"><span class=\"name\">" + oResultData.name + ", ("+oResultData.code+")</span></div>";
		};
		var itemSelectHandler = function(sType, aArgs) {
			//YAHOO.log(sType); // this is a string representing the event;
							  // e.g., "itemSelectEvent"
			var oMyAcInstance = aArgs[0]; // your AutoComplete instance
			var elListItem = aArgs[1]; // the <li> element selected in the suggestion
									   // container
			var oData = aArgs[2]; // object literal of data for the result
			$("languageCode").value = oData.code;
			$("language").value = oData.name+" ("+oData.code+")";
			//publishedBooks.addCategory();
		};
		
		oAC.itemSelectEvent.subscribe(itemSelectHandler); 
		
		return {
			oDS: oDS,
			oAC: oAC
		};
	}();
	
	/*YAHOO.example.BasicRemote = function() {
		// Use an XHRDataSource
		var oDS = new YAHOO.util.XHRDataSource("suggestCategories.jsp");
		// Set the responseType
		oDS.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
	
		// Enable caching
		oDS.maxCacheEntries = 5;

		// Instantiate the AutoComplete
		var oAC = new YAHOO.widget.AutoComplete("category", "categorySuggestions", oDS, {autoHighlight: false, useShadow: true});
		var itemSelectHandler = function(sType, aArgs) {
			//YAHOO.log(sType); // this is a string representing the event;
							  // e.g., "itemSelectEvent"
			var oMyAcInstance = aArgs[0]; // your AutoComplete instance
			var elListItem = aArgs[1]; // the <li> element selected in the suggestion
									   // container
			var oData = aArgs[2]; // object literal of data for the result
			publishedBooks.addCategory();
		};
		var keyHandler = function(arg0, arg1, arg2, arg3)
		{
			var i =0;
			i++;
		}
		
		oAC.itemSelectEvent.subscribe(itemSelectHandler); 
		oAC.unmatchedItemSelectEvent.subscribe(itemSelectHandler); 
		YAHOO.util.Event.addListener("category", "keyup", function(pEvent) {
			var oEvent = (window.event) ? event : pEvent;
			if(oEvent.keyCode == 13) {
			publishedBooks.addCategory();
			}
			});
		return {
			oDS: oDS,
			oAC: oAC
		};
	}();*/
	
	publishedBooks.handleGetFieldSuccess();
}

var books = {};
books.booksOnServer = {};
books.booksDataTable = [];

books.handleFailure = function(o)
{
	var returnObj;
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
			
		alert("Problem: "+returnObj.message);
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}


};

books.handleGetBooksFailure = function (o)
{
	alert(o);
}

books.addBook = function(o)
{
	//alert(o);
	this.booksOnServer[o.id]=o;
	this.booksDataTable.push({id:o.id, title: o.title, author:o.author, publisher:o.publisher, lastUpdate:o.lastUpdate});
};

books.chopFormatter = function(elCell, oRecord, oColumn, oData)
{
	if(oData)
	{
		if(oData.length<30)
		{
			elCell.innerHTML = oData;
		}
		else
		{
			elCell.innerHTML = oData.substr(0, 27)+"...";
			elCell.title = oData;
		}
	}
};

books.handleGetBooksSuccess = function (o)
{
	var returnObj;
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		messages = returnObj.data;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	this.booksDataTable = [];
	
	for(var i = 0; i<messages.length; i++)
	{
		this.addBook(messages[i]);
	}

	var selectorColumns = [ 
		/*{key:"id", sortable:true, resizeable:true}*/
		{key:"title", label:"Title", formatter:books.chopFormatter, sortable:true, resizeable:false},
		{key:"author", label:"Author", formatter:books.chopFormatter, sortable:true, resizeable:false},
		{key:"publisher", label:"Publisher", formatter:books.chopFormatter, sortable:true, resizeable:false},
		{key:"lastUpdate", label:"Updated", formatter:books.chopFormatter, sortable:true, resizeable:false}
		
	];
	
	booksDataSource = new YAHOO.util.DataSource(this.booksDataTable);
	booksDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
	booksDataSource.responseSchema = {
		fields: ["id", "title", "author", "publisher", "lastUpdate"]
		//fields: ["id", "title"]
	};
	booksTable = new YAHOO.widget.DataTable("booksContainer", selectorColumns, booksDataSource, {caption:"Select a Book", selectionMode:"single", scrollable:true, height:"15em"});
	booksTable.subscribe("rowMouseoverEvent", booksTable.onEventHighlightRow); 
	booksTable.subscribe("rowMouseoutEvent", booksTable.onEventUnhighlightRow); 
	booksTable.subscribe("rowClickEvent", booksTable.onEventSelectRow); 
	this.table = booksTable;
}

books.editSelectedBook = function()
{
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Cookie.set("lastEditedBook", data.id, {path: "/", domain: "snowfallpress.com"});
		window.location = "/makeReady/yui.html?bookId="+data.id;
	}
};

books.deleteSelectedBook = function()
{
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', "/users/deleteMutableBook.jsp", null, "bookId="+data.id);
		booksTable.deleteRow(record);
	}
	
};

books.proofRequestCallback = 
{
	success: function(o)
	{
		var returnObj;
		var message;
		var state;
		try 
		{
			returnObj = YAHOO.lang.JSON.parse(o.responseText);
			message = returnObj.message;
			state = returnObj.state;
		}
		catch (x) 
		{
			alert("JSON Parse failed!"+x.message+": "+o.responseText);
			return;
		}
		if(state=="SUCCESS")
		{
			alert('Added book to shopping cart');
		}
		else
		{
			alert("ERROR: "+message);
		}
	},
	failure: books.handleFailure,
	scope: books
};

books.proofSelectedBook = function()
{
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', '/users/addProofToCart.jsp', books.proofRequestCallback, "mutableBookId="+data.id);
	}
};


books.publishRequestCallback = 
{
	success: function()
		{
			publishedBooks.loadImmutableBooksData();
		},
	failure: books.handleFailure,
	scope: books
};

books.publish = function()
{
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0]);
	var bookId = -1;
	if(record!=null)
	{
		bookId = record.getData().id;
	}
	else
	{
		return false;
	}
	var dialogBody = '<p>"Publishing" a book creates an unchanging copy that you can place in stores to sell.</p>';
	dialogBody += '<form method="POST" action="createImmutableBook.jsp">';
	dialogBody += '<input type="hidden" name="mutableBookId" value="'+bookId+'" />';
	dialogBody += '<input type="hidden" name="isProof" value="false" />';
	dialogBody += '<label for="publisherSelect">Publisher: </label>';
	dialogBody += '<select name="publisherId" id="publisherSelect">';
	for(var i = 0; i<publishers.data.length; i++)
	{
		var selected = '';
		if(i==0) selected = ' selected="selected"';
		var publisher = publishers.data[i];
		dialogBody += '<option value="'+publisher.id+'"'+selected+'>'+publisher.name+'</option>';
	}
	dialogBody += '</select>';
	dialogBody += '</form>';
	
	dialogBox.setHeader("Publish a Book");
	dialogBox.setBody(dialogBody);
	dialogBox.render(); //render dialog to page
	dialogBox.show();
	/*
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', '/users/createImmutableBook.jsp', books.publishRequestCallback, "mutableBookId="+data.id);
	}
	*/
};

books.saveBook = function()
{
	var record = this.table.getRecord(this.table.getSelectedRows()[0]);
	var bookId = -1;
	if(record!=null)
	{
		bookId = record.getData().id;
	}
	else
	{
		return false;
	}
	
	/*var dialogBody = '<p>"Save" a book to create an unchanging copy that you can place in your e-commerce store or order from Snowfall.</p>';
	dialogBody += '<form method="POST" action="savePersonalBook.jsp">';
	dialogBody += '<div style="background-color: white;">';
	dialogBody += '<input type="hidden" name="mutableBookId" value="'+bookId+'" />';
	dialogBody += '<table><tbody>';
	dialogBody += '<tr><td style="padding-right: 1em;"><label for="productTitle">Product Title: </label></td><td><input type="text" name="productTitle" id="productTitle" /></td></tr>';
	dialogBody += '<tr><td><label for="productCost">Production Cost: </label></td><td><input type="text" disabled="disabled" name="productCost" id="productCost" /></td></tr>';
	dialogBody += '<tr><td><label style="cursor: help;" for="msrp" title="Manufacturer\'s recommended sales price.">Retail: </label></td><td>$<input type="text" name="msrp" id="msrp" /></td></tr>';
	dialogBody += '<tr><td><label for="description" style="cursor: help;" title="Describe your product as it should appear in your site.">Description: </label></td><td></td></tr>';
	dialogBody += '<tr><td colspan="2" style="padding-left: 2em;"><textarea name="description" style="border-style: solid; width: 100%;"></textarea></td></tr>';
	dialogBody += '</tbody></table></div></form>';
	dialogBox.setHeader("Save Book");
	dialogBox.setBody(dialogBody);
	dialogBox.render(); //render dialog to page
	dialogBox.show();*/
	
	var record = booksTable.getRecord(booksTable.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', '/users/savePersonalBook.jsp', books.publishRequestCallback, "mutableBookId="+bookId);
	}
	
};

books.handleCreateBookRequestSuccess = function(o)
{
	/*var returnObj = YAHOO.lang.JSON.parse(o.responseText);
	var bookId = returnObj.data;*/
	loadBooksData();
};
	
var createRequestCallback = 
{
	success: books.handleCreateBookRequestSuccess,
	failure: books.handleFailure,
	scope: books
};

books.createNew = function()
{
	YAHOO.util.Connect.asyncRequest('POST', '/users/createBook.jsp', createRequestCallback, null);
};

var getBooksRequestCallback =
{
	success: books.handleGetBooksSuccess,
	failure: books.handleGetBooksFailure,
	scope: books
};
	
function loadBooksData()
{
	YAHOO.util.Connect.asyncRequest('POST', '/users/getAllEditableBooks.jsp', getBooksRequestCallback, "role=Editor");
}

//------------------------------------------
var publishedBooks = {};

publishedBooks.booksOnServer = {};
publishedBooks.booksDataTable = [];

publishedBooks.handleGetBooksFailure = function (o)
{
	alert(o);
}

publishedBooks.addBook = function(o)
{
	//alert(o);
	this.booksOnServer[o.disId]=o;
	this.booksDataTable.push({disId:o.disId, title: o.title, bookId: o.bookId, created:o.created});
};

publishedBooks.handleGetBooksSuccess = function (o)
{
	var returnObj;
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		messages = returnObj.data;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	this.booksDataTable = [];
	
	for(var i = 0; i<messages.length; i++)
	{
		this.addBook(messages[i]);
	}

	var selectorColumns = [ 
		/*{key:"id", sortable:true, resizeable:true}*/
		{key:"title", label:"Title", formatter:books.chopFormatter, sortable:true, resizeable:false},
		{key:"created",  label: "Created", formatter:books.chopFormatter, sortable:true, resizeable:false}		
	];
	
	var booksDataSource = new YAHOO.util.DataSource(this.booksDataTable);
	booksDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
	booksDataSource.responseSchema = {
		fields: ["bookId", "title", "disId", "created"]
		//fields: ["id", "title"]
	};
	this.table = new YAHOO.widget.DataTable("publishedBooksContainer", selectorColumns, booksDataSource, {caption:"Select a Book", selectionMode:"single", scrollable:true, height:"15em"});
	this.table.subscribe("rowMouseoverEvent", this.table.onEventHighlightRow); 
	this.table.subscribe("rowMouseoutEvent", this.table.onEventUnhighlightRow);
	this.table.subscribe("rowClickEvent", 
		function(o)
		{
			publishedBooks.table.onEventSelectRow(o);
			publishedBooks.editSelectedBook();
		}
	);
	this.table.render();
}

publishedBooks.printSelectedBook = function()
{
	var record = this.table.getRecord(this.table.getSelectedRows()[0])
	if(record!=null)
	{
		var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', '/users/addBookToCart.jsp', books.proofRequestCallback, "bookId="+data.bookId+"&disId="+data.disId);
	}
};

publishedBooks.displayCategories = function(o)
{
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		messages = returnObj.data;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	var cats = "";
	
	for(var i = 0; i<messages.length; i++)
	{
		var cat = messages[i];
		cats += "["+cat.text+"&nbsp;<span style=\"color:red\" onclick=\"publishedBooks.removeCategory("+cat.ID+");\">x</span>] ";
	}
	
	$("assignedCategories").innerHTML = cats;
};

publishedBooks.getCategories = function()
{
	var callback ={success:publishedBooks.displayCategories};
	var form = $('editSavedForm');
	var bookId = form.elements.bookId.value;
	YAHOO.util.Connect.asyncRequest('POST', '/users/getCategoriesForBook.jsp', callback, "bookId="+bookId);
};

publishedBooks.addCategory = function()
{
	var form = $('editSavedForm');
	var input = $("category");
	var value = input.value;
	
	var callback = {success: publishedBooks.getCategories};
	YAHOO.util.Connect.asyncRequest('POST', '/users/addCategoryToBook.jsp', callback, "bookId="+form.elements.bookId.value+"&category="+encodeURIComponent(value));
};

publishedBooks.removeCategory = function(catId)
{
	var form = $('editSavedForm');
	
	var callback = {success: publishedBooks.getCategories};
	YAHOO.util.Connect.asyncRequest('POST', '/users/removeCategoryFromBook.jsp', callback, "bookId="+form.elements.bookId.value+"&categoryId="+catId);
};


publishedBooks.saveProduct = function()
{
	clearExceptions();
	var form = $('editSavedForm');
	var send = {};
	send.bookId = encodeURIComponent(form.elements.bookId.value);
	var activeVal = getSelectedRadioValue(form.elements.active);
	if((activeVal == 'ACTIVE' && !wasActive) || (activeVal == 'INACTIVE' && wasActive))
	{
		send.active = getSelectedRadioValue(form.elements.active);
	}
	send.title = form.elements.productTitle.value;
	send.subTitle = form.elements.subTitle.value;
	send.languageCode = form.elements.languageCode.value;
	send.isbn = form.elements.isbn.value;
	send.customerProductId = form.elements.customerProductId.value;
	send.previewPages = form.elements.previewPages.value;
	send.msrp = form.elements.msrp.value;
	send.shortDescription = form.elements.shortDescription.value;
	send.description = descriptionEditor.getEditorHTML();
	//alert(YAHOO.lang.JSON.stringify(send));
	YAHOO.util.Connect.asyncRequest('POST', '/users/setPublisherProductFields.jsp', {success: function(){publishedFieldChanged=false;}, failure: handleExceptionsInCallback}, "send="+ encodeURIComponent(YAHOO.lang.JSON.stringify(send)));
}

function setSelectedRadioValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

function getSelectedRadioValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

var wasActive = false;

publishedBooks.displayPreviewPages = function(pages)
{
	var pageList = pages.split(',');
	var pagesHMTL = "";
	var form = $("editSavedForm");
	pagesHMTL += "<img src=\"http://gateway.snowfallpress.com/feed/image/"+form.elements.storeId.value+"_"+form.elements.storeProductId.value+"_cover_7.jpg\" />";
	for(var page in pageList)
	{
		pagesHMTL += "<img src=\"http://gateway.snowfallpress.com/feed/image/"+form.elements.storeId.value+"_"+form.elements.storeProductId.value+"_"+page+"_7.jpg\" />";
	}
	$("previewPagesDiv").innerHTML = pagesHMTL;
}
publishedBooks.handleGetFieldSuccess = function (o)
{
	clearExceptions();
	var returnObj;
	var messages = {};
	if(o)
	{
		try 
		{
			returnObj = YAHOO.lang.JSON.parse(o.responseText);
			messages = returnObj.data;
		}
		catch (x) 
		{
			alert("JSON Parse failed!"+x.message+": "+o.responseText);
			return;
		}
	}
	
	var form = $('editSavedForm');
	if(messages.id)
		form.elements.bookId.value = messages.id;
	else
		form.elements.bookId.value = null;
	//form.elements.category.value="";
	if(messages.active && messages.active=="true")
	{
		setSelectedRadioValue(form.elements.active, "ACTIVE");
		wasActive = true;
	}else{
		setSelectedRadioValue(form.elements.active, "INACTIVE")
		wasActive = false;
	}
	if(messages.title){form.elements.productTitle.value = messages.title;}else{form.elements.productTitle.value=""}
	if(messages.subtitle){form.elements.subTitle.value = messages.subtitle;}else{form.elements.subTitle.value=""}
	if(messages.languageCode){form.elements.languageCode.value = messages.languageCode;}else{form.elements.languageCode.value=""}
	if(messages.language){form.elements.language.value = messages.language;}else{form.elements.language.value=""}
	if(messages.productionCost){form.elements.productionCost.value = messages.productionCost;}else{form.elements.productionCost.value=""}
	if(messages.wholesaleCost){form.elements.wholesaleCost.value = messages.wholesaleCost;}else{form.elements.wholesaleCost.value=""}
	if(messages.msrp){form.elements.msrp.value = messages.msrp;}else{form.elements.msrp.value=""}
	if(messages.isbn){form.elements.isbn.value = messages.isbn;}else{form.elements.isbn.value=""}
	if(messages.sfbn){form.elements.sfbn.value = messages.sfbn;}else{form.elements.sfbn.value=""}
	if(messages.customerProductId){form.elements.customerProductId.value = messages.customerProductId;}else{form.elements.customerProductId.value=""}
	if(messages.storeProductId){form.elements.storeProductId.value = messages.storeProductId;}else{form.elements.storeProductId.value=""}
	if(messages.storeId){form.elements.storeId.value = messages.storeId;}else{form.elements.storeId.value=""}
	if(messages.previewPages){form.elements.previewPages.value = messages.previewPages;}else{form.elements.previewPages.value=""}
	if(messages.shortDescription){form.elements.shortDescription.value = messages.shortDescription;}else{form.elements.shortDescription.value=""}
	if(messages.description)
	{
		form.elements.description.value = messages.description;
		descriptionEditor.setEditorHTML(messages.description);
	}else{form.elements.msrp.description=""; descriptionEditor.setEditorHTML("");}
	//publishedBooks.getCategories();
	publishedFieldChanged = false;
	
	this.displayPreviewPages(form.elements.previewPages.value);
	
};

var publisherProductFieldResponseHandler = 
{
	success: publishedBooks.handleGetFieldSuccess,
	failure: null,
	scope: publishedBooks
};
publishedBooks.editSelectedBook = function()
{
	var ok = true;
	var form = $('editSavedForm');
	if(publishedFieldChanged && form.elements.bookId.value)
		ok = confirm("You have unsaved changes. Continue without saving?");
	if(!ok) return false;
	
	var record = this.table.getRecord(this.table.getSelectedRows()[0]);
	var bookId = -1;
	if(record!=null)
	{
		bookId = record.getData().bookId;
	}
	else
	{
		return false;
	}
	
	YAHOO.util.Connect.asyncRequest('POST', "/users/getPublisherProductFields.jsp", publisherProductFieldResponseHandler, "bookId="+bookId);
};

publishedBooks.deleteSelectedBook = function()
{
	if(!confirm("After deleting your saved book be sure to remove the book from any E-Commerce systems that link to it.")) return false;
	
	var record = this.table.getRecord(this.table.getSelectedRows()[0]);
	if(record!=null)
	{
		var bookId = -1;
		bookId = record.getData().bookId;
		//var data = record.getData();
		YAHOO.util.Connect.asyncRequest('POST', "/users/archiveBook.jsp", null, "bookId="+bookId);
		this.table.deleteRow(record);
	}
	
};

var getImmutableBooksRequestCallback =
{
	success: publishedBooks.handleGetBooksSuccess,
	failure: publishedBooks.handleGetBooksFailure,
	scope: publishedBooks
};

publishedBooks.loadImmutableBooksData = function()
{
	YAHOO.util.Connect.asyncRequest('POST', '/users/getImmutableBooks.jsp', getImmutableBooksRequestCallback, "role=Editor");
}

//--------------------------------
publishers = {};
publishers.data = new Array();

publishers.handleSuccess = function (o)
{
	var returnObj;
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		messages = returnObj.data;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	for(var i = 0; i<messages.length; i++)
	{
		var message = messages[i];
		publishers.data[i] = message;
	}
};
	
getPublishersRequestCallback =
{
	success: publishers.handleSuccess,
	failure: {},
	scope: publishers
};

publishers.load = function()
{
	YAHOO.util.Connect.asyncRequest('POST', '/users/getPublishers.jsp', getPublishersRequestCallback, "role=EDITOR");
}

//-----------------------------------------------------------
var stores = {};
stores.data = new Array();

stores.handleSuccess = function (o)
{
	var returnObj;
	var messages;
	try 
	{
		returnObj = YAHOO.lang.JSON.parse(o.responseText);
		messages = returnObj.data;
	}
	catch (x) 
	{
		alert("JSON Parse failed!"+x.message+": "+o.responseText);
		return;
	}
	
	for(var i = 0; i<messages.length; i++)
	{
		var message = messages[i];
		stores.data[i] = message;
	}
};
	
getStoresRequestCallback =
{
	success: stores.handleSuccess,
	failure: {},
	scope: stores
};

stores.load = function()
{
	YAHOO.util.Connect.asyncRequest('POST', '/users/getStores.jsp', getStoresRequestCallback, "role=PRODUCT_MANAGER");
}
YAHOO.util.Event.onDOMReady(prep);