function ClrTimeout(pInterval) {
	clearTimeout(pInterval)
}				
function swapSubMenu(pType, obj) {
	switch (pType) {
	case 'over':
		try {obj.parentElement.className="submenuover"} catch(e) {}
		break
	default:
		try {obj.parentElement.className="submenu"} catch(e) {}
		break
	}
}
var IntervalID
function hideMenuTimer() {
	clearTimeout(IntervalID)					// clear the last intervalID before setting the next
	IntervalID = setTimeout("hideMenu()",500)
}
function hideMenu() {
	try {
		var obj = document.getElementById("submenu")
		obj.style.visibility = "hidden"
	} catch (e) {}
}

function showMenu(pMenu) {
	try {		
	
		clearTimeout(IntervalID)
		var zDefaultLink = ''
		var obj = document.getElementById("submenu")

		obj.style.pixelLeft = '0px'
		obj.style.left = 0

		switch (pMenu) {
		case 'basket':
			zDefaultLink = createBasketMenu()
			var subMenuWin = parent.fraTop
			break;
		case 'history':
			zDefaultLink = createHistoryMenu()
			var subMenuWin = parent.fraTop
			break;
		case 'library':
			zDefaultLink = createLibraryMenu()
			var subMenuWin = parent.fraCenter
			break;
		default:
			break;
		}
	
		var objPos = subMenuWin.getPosition(pMenu,obj.offsetWidth)
		// Centralise
		if (obj.offsetWidth <= objPos.width) {
			try {objPos.x = objPos.x + Math.abs((obj.offsetWidth - objPos.width)/2)} catch(e){}
		}

		obj.style.pixelLeft = objPos.x + 'px'
		obj.style.left = objPos.x
		obj.style.pixelTop = '0px'
		obj.style.top = 0

		switch (pMenu) {
		case 'library':
			obj.style.pixelTop = objPos.y - obj.offsetHeight
			obj.style.top = objPos.y - obj.offsetHeight
			break;
		default:
			break;
		}

		obj.style.visibility = "visible"

		var zCursor = "pointer"
		if (isIE) zCursor='hand'
		if (zDefaultLink!='') {
			subMenuWin.document.getElementById(pMenu).href = "javascript:parent.fraCenter.hideMenu(); " + zDefaultLink
			subMenuWin.document.getElementById(pMenu+'').style.cursor = zCursor
		} else {
			subMenuWin.document.getElementById(pMenu).href="javascript:void(0)"
			subMenuWin.document.getElementById(pMenu+'').style.cursor = "default"
		}	
		try {
			if (pMenu!='library') {
				if (zDefaultLink!='') {
					subMenuWin.document.getElementById('BUTTON'+pMenu).onclick = function () {parent.fraCenter.hideMenu(); eval('parent.fraTop.'+zDefaultLink) }
					subMenuWin.document.getElementById('BUTTON'+pMenu+'').style.cursor = zCursor
				} else {
					subMenuWin.document.getElementById('BUTTON'+pMenu).onclick="function () {void(0)}"
					subMenuWin.document.getElementById('BUTTON'+pMenu+'').style.cursor = "default"
				}	
			} else {
				// This is because we deal with this menu specially 
				// with an "<A>" wrapped around the button
				// We must make sure the button has no functionality
				subMenuWin.document.getElementById('BUTTONPaprikaProf').onclick="function () {void(0)}"
			}		
		} catch (e) {}
	} catch(e){}

}
function writeSubMenuItem(pEnabled, pRoutine, pText, pCount, pHint) {
	var zMouseOut  = "swapSubMenu('out',this)"
	var zMouseOver = "swapSubMenu('over',this)"
	var zSuff = ''
	if (pEnabled) {
		if (pCount != 0) zSuff = ' (' + pCount + ')'
		var l = '<tr><td class="submenu" title="' +pHint+ '"><nobr>' + 
						 '<a onmouseover="' + zMouseOver +
						 '" onmouseout="'+zMouseOut + 
						 '" class="submenu' + 
						 '" title="'+pHint + 
						 '" style="width:100%'+ 
						 '" href="javascript:hideMenu(); ' + pRoutine + ';">' + 
						 pText + zSuff +
						 '</a></nobr>' + 
						 '</td></tr>'
		l = l + '<tr class="submenuline" ><td class="submenuline"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td width="100%" height="1" class="submenuline"><img height="1" src="{$ImagesPath}none.gif"/></td></tr></table></td></tr>'
	} else {
		var l = '<tr><td class="submenudis"><span class="submenudis"><nobr>' + pText + '</nobr></span></td></tr>'
		l = l + '<tr class="submenuline" ><td class="submenuline"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td width="100%" height="1" class="submenuline"><img height="1" src="{$ImagesPath}none.gif"/></td></tr></table></td></tr>'
	}
	return l;
}

function createBasketMenu() {
	var zDefaultLink = "BrowseBasket()"
	var zResultSetType = XW_GlobalVar_ResultSetType
	var zBasketCount = parent.fraTop.XW_GlobalVar_BasketCount				
						
	var zNull = (gRecordCount == 0)						
	if (document.FormMoreSearch) if (document.FormMoreSearch.UpdatedResultSetName) zNull = true;						
	if (gNoDetail) zNull = true
						
	zSelected = 1
	var zItemsSelected = false;
	if ((SelectedListCode) && (document.FormSend)) {
		if (document.FormSend.SelectedCode) {
			zSelected = SelectedListCode.length;
			if (zSelected !=0) zItemsSelected = true
		}
	}

	var zHTML = ''
	var zAddEnabled = false; var zAddCount = 0
	var zClrEnabled = false; var zClrCount = 0
	var zDelEnabled = false; var zDelCount = 0
	var zBrwEnabled = false; var zBrwCount = 0
	var zLoadEnabled = false; var zLoadCount = 0
	var zSaveEnabled = false; var zSaveCount = 0

	// Take this line out when we are ready
	gProfessional = 'F'

	if (gProfessional=='T') {
		if ((parent.global.Prof.saved=='F') && (zBasketCount!=0)) {
			zSaveEnabled = true
		}
		if (parent.global.Prof.loaded=='F') {
			zLoadEnabled = true
		}
	
	}

	var zAddText = gv.BasketAdd
	if ((zResultSetType == 'RS') && (zNull == false)) {
		if (zSelected == 0) {
			if (gHistory == false) {
				zAddText = gv.BasketAddAll
				zSelected = gRecordCount
				zAddEnabled = true; zAddCount = zSelected
			} 
		} else {
			zAddEnabled = true; zAddCount = zSelected
			if (gHistory) zAddCount = 0
		}
							
	}
						
	if (zBasketCount != 0) {
		zClrEnabled = true; zClrCount = zBasketCount
		if (zResultSetType == 'BA') {
			if (zSelected != 0) {
				zDelEnabled = true; zDelCount = zSelected
			}
		} else {
			zBrwEnabled = true; zBrwCount = zBasketCount
		}
	}

	var zAddHint = ''
	if (zItemsSelected) {
		switch (zSelected.toString()) {
		case '1':
			if (gHistory)
				 zAddHint = gv.HSelDocH;
			else zAddHint = gv.HSelDoc;
			break;
		default:
			if (gHistory)
				 zAddHint = gv.HSelHB + zSelected + gv.HSelHA
			else zAddHint = gv.HSelB + zSelected + gv.HSelA
			break;
		}
	} else {
		switch (zSelected.toString()) {
		case '1':
			zAddHint = gv.HNoSelDoc
			break;
		default:
			zAddHint = gv.HNoSelB + zSelected + gv.HNoSelA
			break;
		}
	}

	var zActionClear = "parent.fraTop.UpdateBasket('Clear')"
	if (zResultSetType == 'BA') {zActionClear = "ClearBasket()"}
						
	if ((zResultSetType != 'BA') | (gv.ShowAllItems)) {
		zHTML += writeSubMenuItem(zBrwEnabled, "parent.fraTop.BrowseBasket()",gv.BasketBrowse,zBrwCount, '')
	}
						
	if ( ((zResultSetType == 'RS') && (zNull == false)) | (gv.ShowAllItems)) {
		zHTML += writeSubMenuItem(zAddEnabled, "AddBasket()",zAddText,zAddCount, zAddHint)
	}
	if ((zResultSetType == 'BA')  | (gv.ShowAllItems)) {
		zHTML += writeSubMenuItem(zDelEnabled, "DelBasket();",gv.BasketDelete,zDelCount, '')
	}
	zHTML += writeSubMenuItem(zClrEnabled, zActionClear,gv.BasketClear,zClrCount, '')
	if (gProfessional=='T') {
		zHTML += writeSubMenuItem(zLoadEnabled, "loadBasket();",gv.BasketLoad,zLoadCount, '')
		zHTML += writeSubMenuItem(zSaveEnabled, "saveBasket();",gv.BasketSave,zSaveCount, '')
	}
	
						
						
	if (zHTML == '') {zHTML = '<tr><td bgcolor="#cccccc">' + gv.BasketHint + '</td></tr>';}
						
	zHTML = '<table width="170" height="70" class="submenu" border="1" cellspacing="0" cellpadding="0">' + 
			zHTML +	'<tr height="100%"><td style="border:none; font-size:1px">&#160;</td></tr></table>'
						
	document.getElementById("submenu").innerHTML = zHTML
						

	if ((zClrEnabled) | (zBrwEnabled) | (zAddEnabled) | (zDelEnabled)) {
		parent.fraTop.XW_GlobalVar_Show = true
	} else {
		parent.fraTop.XW_GlobalVar_Show = false
	}
						
	if (zBrwEnabled) return zDefaultLink;
	else return '';
}
function loadBasket() {
	parent.global.Prof.loaded = 'T'
	var zList = ''
}
function saveBasket() {
	parent.global.Prof.saved = 'T'
	zURL = 'RecordList?XFile=xml&XPath1=RecordList&ResultSetType=BA'

	var zList = xmlHttpCallSync(zURL)
}

function createHistoryMenu() {
	var zDefaultLink = "BrowseHisto()"
	var zResultSetType = XW_GlobalVar_ResultSetType
	var zHistCount = parent.fraTop.XW_GlobalVar_HistCount

	var zSelected = 1
	if ((SelectedListCode) && (document.FormSend)) {
		if (document.FormSend.SelectedCode) {
			zSelected = SelectedListCode.length;
		}
	}

	var zHTML = ''
	var zClrEnabled = false; var zClrCount = 0
	var zDelEnabled = false; var zDelCount = 0
	var zBrwEnabled = false; var zBrwCount = 0
						
	if (gHistory) {
		if (zHistCount != 0) {
			zClrEnabled = true; zClrCount = zHistCount;
			if (zSelected != 0) {
				zDelEnabled = true; zDelCount = zSelected
			}
		}
	} else {
		if (zHistCount != 0) {
			//zClrEnabled = true; zClrCount = zHistCount; // causes failure, not part of original
			zBrwEnabled = true; zBrwCount = zHistCount;
		}
	}

	if ((gHistory) | (gv.ShowAllItems)) {
		zHTML += writeSubMenuItem(zDelEnabled, "DelHisto();",gv.HDelete,zDelCount, '') 
		zHTML += writeSubMenuItem(zClrEnabled, gActionClear,gv.HClear,zClrCount, '')
	}
						
	if ((gHistory == false) | (gv.ShowAllItems)) {
		zHTML += writeSubMenuItem(zBrwEnabled, "parent.fraTop.BrowseHisto()",gv.HBrowse,zBrwCount, '')
	}
						
	if (zHTML == '') {zHTML = '<tr><td bgcolor="#cccccc">' + gv.HistHint + '</td></tr>';}
						
	zHTML = '<table width="170" height="70" class="submenu" border="1" cellspacing="0" cellpadding="0">' + 
			zHTML +	'<tr height="100%"><td style="border:none; font-size:1px">&#160;</td></tr></table>'
						
	document.getElementById("submenu").innerHTML = zHTML
										
	if (zBrwEnabled) return zDefaultLink;
	else return '';
}
function createLibraryMenu(pOnLoadOnly) {
	
	var NN = gLibMenu_NN
	
	var zHTML		= ''
	var zDL			= ''
	var zCommand	= ''

	var oProfCmd = window.external.PopIntf('ProfCmd')
	
	switch (PaprikaMenu.paprikaProf) {
	case 'T':
		if (oProfCmd.Pop('CATALOGENABLED')=='T') {
			zCommand = "ProfCmd('Catalog','"+gLibMenu_NN+"');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true, zCommand,gv.LMCatalog,0, '');
		}
		if (oProfCmd.Pop('CURRENTINFOENABLED')=='T') {
			zCommand = "ProfCmd('CurrentInfo','"+gLibMenu_NN+"');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true, zCommand,gv.LMCurr,0, '')
		}
		if ((gLibMenu_Reservations) && (oProfCmd.Pop('PENDINGRESERVATIONSENABLED')=='T')) {
			zCommand = "ProfCmd('PendingReservations','"+gLibMenu_NN+"');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true, zCommand,gv.LMPend,0, '')
		}
		if ((gLibMenu_Orders) && (oProfCmd.Pop('ORDERSENABLED')=='T')) {
			zCommand = "ProfCmd('Orders','"+gLibMenu_NN+"');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true, zCommand,gv.LMOrd,0, '')
		}
		if (oProfCmd.Pop('ACCOUNTENABLED')=='T') {
			zCommand = "ProfCmd('Account','');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true,zCommand,gv.LMAcc,0, '')
		}
		if (oProfCmd.Pop('RESERVEENABLED')=='T') {
			zCommand = "ProfCmd('Reserve','"+gLibMenu_NN+"');"
			if (zDL=='') zDL = zCommand
			zHTML += writeSubMenuItem(true, zCommand,gv.LMRes,0, '')
		}
		break;
	case 'X':
		switch (PaprikaMenu.authority) {
		case 'T':
			if (oProfCmd.Pop('IMPORTAUTHENABLED')=='T') {		
				zCommand = "ProfCmd('Import','"+gLibMenu_NN+"');"
				if (zDL=='') zDL = zCommand
				zHTML += writeSubMenuItem(true, zCommand,gv.LMCatalogImport,0, '');
			}
			break;
		default:
			if (oProfCmd.Pop('IMPORTENABLED')=='T') {		
				zCommand = "ProfCmd('Import','"+gLibMenu_NN+"');"
				if (zDL=='') zDL = zCommand
				zHTML += writeSubMenuItem(true, zCommand,gv.LMCatalogImport,0, '');
			}
			break;
		}
		break;
	default:
		break;
	}
	zHTML = '<table width="170" height="70" class="submenu" border="1" cellspacing="0" cellpadding="0">' + 
			zHTML +	'<tr height="100%"><td style="border:none; font-size:1px">&#160;</td></tr></table>'
						
	if (!pOnLoadOnly) document.getElementById("submenu").innerHTML = zHTML

	return zDL;
						
}
