// Copyright 1999-2009 Tyco Electronics Corporation

dojo.require("te.MplNewListDlg");
dojo.require("te.MplSaveNoteDlg");
dojo.require("te.MplRemoveListDlg");
dojo.require("te.MplRemoveNoteDlg");
dojo.require("dojo.i18n");

var newListLink = null;
var renameListLink = null;
var removeLink = null;
var selectListNode = null;
var newListDialog = null;
var renameListDialog = null;
var removeListDialog = null;
var addListNoteDialog = null;
var editListNoteDialog = null;
var removeListNoteDialog = null;
var actionsOverlayNode = null;
var listNoteNode = null;
/*Stores Arrays of [Part List Name, Part List ID]*/
var listNames = [];
var rememberState = null;
var isRegisteredUser = false;
var viewState = null;
var currentUser = null;

dojo.addOnLoad(function() {
	dojo.requireLocalization("te", "ewt", TE_locale);
	TE_mplMessages = dojo.i18n.getLocalization("te", "ewt", TE_locale);

	/* New List */
	actionsOverlayNode = dojo.byId("TE_mpl_actionsOverlay_manage");
	
	newListLink = dojo.byId("TE_mpl_newList_manage");
	if (newListLink) {
		selectListNode = dojo.byId("mpl_partList_select");
		newListDialog = new mpl.MplNewListDlg(null, newListLink, showDialogOverlay, hideDialogOverlay, hideError);
		initializeListData();
		newListDialog.setlistNames(listNames);
	}
	
	/* Rename List */
	renameListLink = dojo.byId("TE_mpl_renameList_manage");
	if (renameListLink) {
		renameListDialog = new mpl.MplNewListDlg(null, renameListLink, showDialogOverlay, hideDialogOverlay, hideError, true, listName);
		renameListDialog.setlistNames(listNames);
		dojo.connect(renameListDialog,"finishWithError", "completeRenameListWithErrors");
		dojo.connect(renameListDialog,"finishSuccessfully", "completeRenameList");
	}
	
	/* Remove List */
	removeLink = dojo.byId("TE_mpl_removeList_manage");
	if (removeLink) {
		removeListDialog = new mpl.MplRemoveListDlg(removeLink, listId, listName, showDialogOverlay, hideDialogOverlay, hideError);
	}
		
	/* Add/Edit/Remove List Notes */
	var addNoteLink = dojo.byId("TE_mpl_addListNoteLink_manage");
	var editNoteLink = dojo.byId("TE_mpl_editListNoteLink_manage");
	var removeNoteLink = dojo.byId("TE_mpl_removeListNoteLink_manage");
	listNoteNode = dojo.byId("TE_mpl_listNoteTxt");
	var noteTxt = null;
	if (listNoteNode.firstChild) {
		noteTxt = listNoteNode.firstChild.nodeValue;
	}
	
	removeListNoteDialog = new mpl.MplRemoveNoteDlg(null, removeNoteLink, null, showDialogOverlay, hideDialogOverlay, hideError);
	addListNoteDialog = new mpl.MplSaveNoteDlg(null, addNoteLink, TE_mplMessages.mplAddNoteMessage, null, noteTxt, showDialogOverlay, hideDialogOverlay, hideError);
	editListNoteDialog = new mpl.MplSaveNoteDlg(null, editNoteLink, TE_mplMessages.mplEditNoteMessage, null, noteTxt, showDialogOverlay, hideDialogOverlay, hideError);
	
	setRememberState();
	saveStateInCookie();
	
	dojo.connect(removeListNoteDialog, "endRemoveNote", "completeRemoveListNote");
	dojo.connect(addListNoteDialog, "endEditNote", "completeSaveListNote");
	dojo.connect(editListNoteDialog, "endEditNote", "completeSaveListNote");
});

function initializeListData() {
	for (i = 0; i < selectListNode.length; i++) {
		listNames.push([selectListNode.options[i].text, selectListNode.options[i].value]);
	}
}

function completeSaveListNote(status, newNote, errorMsg, errorCode) {
	if (status == "success") {
		if (newNote == "") {
			this.removeListNoteFromDisplay();
		} else {
			listNoteNode.innerHTML = newNote;
			addListNoteDialog.noteTxt = newNote;
			editListNoteDialog.noteTxt = newNote;
			dojo.style(dojo.byId("TE_mpl_noteNotExists_actions"), "display", "none");
			dojo.style(dojo.byId("TE_mpl_noteExists_actions"), "display", "");
		}
	} else {
		showError(errorMsg, errorCode);
	}	
}

function completeRemoveListNote(status, errorMsg, errorCode) {
	if (status == "success") {
		this.removeListNoteFromDisplay();
	} else {
		showError(errorMsg, errorCode);
	}
}

function removeListNoteFromDisplay() {
	listNoteNode = dojo.byId("TE_mpl_listNoteTxt");
	if (listNoteNode.firstChild) {
		listNoteNode.firstChild.nodeValue = "";
		addListNoteDialog.noteTxt = "";
		editListNoteDialog.noteTxt = "";
		noteTxt = "";
	}
	dojo.style(dojo.byId("TE_mpl_noteExists_actions"), "display", "none");
	dojo.style(dojo.byId("TE_mpl_noteNotExists_actions"), "display", "");
}

function completeRenameList (newListName, oldListName) {
	for (i = 0; i < selectListNode.length; i++) {
		if (selectListNode.options[i].text == oldListName) {
			selectListNode.options[i].text = newListName;
			listNames[i][0] = newListName;
		}
	}
	listName = newListName;
	removeListDialog.listName = newListName;
}

function completeRenameListWithErrors (errorMsg, errorCode) {
	showError(errorMsg, errorCode);
}

function showError(errorMsg, errorCode) {
	var errorsNode = dojo.byId("TE_mpl_errors");
	if (errorsNode.firstChild) {
		errorsNode.removeChild(errorsNode.firstChild);
	}
	errorsNode.appendChild(document.createTextNode(errorMsg));
	
	dojo.style(dojo.byId("TE_mpl_errorBox"), "display", "");
}

function showDialogOverlay() {
	actionsOverlayNode.style.height = document.body.offsetHeight + 'px';
	actionsOverlayNode.style.width = document.body.offsetWidth + 'px';
	
	actionsOverlayNode.style.display = 'block';
}

function hideDialogOverlay() {
	dojo.style(actionsOverlayNode, "display", "none");
}
	
// Changes active list / list displayed
function changeList(id) {
	window.location = '/commerce/mpl/managePartLists.do?pl=' + id;
}

function hideError() {
	dojo.style(dojo.byId("TE_mpl_errorBox"), "display", "none");
}


function saveStateInCookie() {
	var partCnt;
	partCnt = partCount;
	
	getStateFromCookie();
	
	var value = "" + viewState + "|";
	value += listName + "|";
	value += partCnt;
	if (currentUser && currentUser.length > 0) {
		value += "|" + currentUser;
	}
	/*rememberState is declared in this file, but is set in manage page jsp and determined by server side logic. It should not be obfuscated*/
	if (rememberState) {
		dojo.cookie('TECmpl', value, {domain: '.tycoelectronics.com', expires:30, path:'/'});
	} else {
		// make it a session cookie
		dojo.cookie('TECmpl', value, {domain: '.tycoelectronics.com', path:'/'});
	}

}
	
function getStateFromCookie() {
	var value = dojo.cookie('TECmpl');
	if (value) {
		var values = value.split('|');
		viewState = values[0];
		if (values[3] && values[3].length > 0) {
			currentUser = values[3];
		}
	} else {
		viewState = 0;
	}
}

function setRememberState() {

	if (isRegisteredUser) {
		var value = dojo.cookie('TECuso1');
	
		if (value && value.length > 0) {
			rememberState = true;
		} else {
			rememberState = false;
			saveStateInCookie(); // re-write cookie to make it session cookie
		}
	} else {	// always remember state if anonymous user
		rememberState = true;
	}
}