function logOut()
{
	location.href = "../login/logout_process.asp?referer=" + location.href;
}

function checkSession()
{
	xml.load("../includes/CheckSessionXML.asp")
	if (eval(xml.documentElement.text))
	{
		location.href = "../login/index.asp"
		return false
	}
	
	return true
}

function lateBindForm(f, x)
{
	var n
	var els = f.elements

	for (var i = 0; i < els.length; i++)
	{
		if (els[i].dataFld == null || els[i].dataFld == "") continue
		n = x.documentElement.selectSingleNode(els[i].dataFld)
		if (n == null) continue
		
		if (els[i].type == "radio")
			if (!els[i].checked)
				continue
				
		if (els[i].type == "checkbox")
		{
			if (!els[i].checked)
			{
				n.text = ""
				continue
			}
		}
		
		n.text = els[i].value
	}
}

function loadXMLToForm(x, f)
{
	var n
	var els = f.elements

	for (var i = 0; i < els.length; i++)
	{
		if (els[i].dataFld == null || els[i].dataFld == "") continue
		n = x.documentElement.selectSingleNode(els[i].dataFld)
		if (n == null) continue
		
		if (els[i].type == "radio" || els[i].type == "checkbox")
			els[i].checked = (els[i].value == n.text)
		else
			els[i].value = n.text
	}
}


function setupXML(x)
{
	x.async = false
	x.resolveExternals = false
}

function removeByValue(sel, val)
{
	for (var i = 1; i < sel.length; i++)
	{
		if (sel.options[i].value == val)
			break
	}
	
	sel.options.remove(i)
	sel.selectedIndex = -1
}

function getIndexByValue(sel, val)
{
	var iIndex = -1
	
	for (var i = 0; i < sel.length; i++)
	{
		if (sel.options[i].value == val)
		{
			iIndex = i
			break
		}
	}
	
	return iIndex
}

function insertOptAlpha(sel, id, name)
{
	var nm
	nm = name.toLowerCase()
	
	var tnm
	for (var i = 1; i < sel.length;)
	{
		tnm = sel.options[i].text.toLowerCase()
		
		if (nm > tnm)
			i++
		else
			break
	}
	
	var o = document.createElement("OPTION")
	sel.options.add(o, i)
	o.value = id
	o.text = name
	
	return i
}

function insertOptAlphaFNmLNm(sel, id, name)
{
	var nm, lnm, fnm

	nm = name.toLowerCase()
	var iIndex = nm.indexOf(",")
	if (iIndex != -1)
	{
		lnm = nm.substring(0, iIndex - 1)
		fnm = nm.substring(iIndex + 2, nm.length - 1)
	}
	else
	{
		lnm = nm
		fnm = ""
	}
	
	var tnm, tfnm, tlnm
	
	for (var i = 1; i < sel.length;)
	{
		tnm = sel.options[i].text.toLowerCase()
		iIndex = tnm.indexOf(",")
		if (iIndex != -1)
		{
			tlnm = tnm.substring(0, iIndex - 1)
			tfnm = tnm.substring(iIndex + 2, tnm.length - 1)
		}
		else
		{
			tlnm = tnm
			tfnm = ""
		}
		
		if (lnm > tlnm || (lnm == tlnm && fnm > tfnm))
			i++
		else
			break
	}
	
	var o = document.createElement("OPTION")
	sel.options.add(o, i)
	o.value = id
	o.text = name
	
	return i
}

function stripeTable()
{
	var el = event.srcElement
	
	if (el.className != "tblSelectable") return
	if (el.readyState != "complete") return
	
	el.Stripes(true)
}

function preventCharacters(allowPeriod, allowNegative)
{
	if (allowPeriod == null) allowPeriod = false
	if (allowNegative == null) allowNegative = false

    var Key = window.event.keyCode

	if (allowPeriod && Key == 46)
		return true;

	if (allowNegative && Key == 45)
		return true;

    if (Key < 48 || Key > 57)
	{
		event.returnValue = false
		event.cancelBubble = true
		return false
	}
	
	return true
}

function getFormElementByName(f, nm)
{
	for (var i = 0; i < f.elements.length; i++)
		if (f.elements[i].name == nm)
			return f.elements[i]
	
	return null
}
function checkSelected(s, p)
{
	var tbl = eval("tbl" + p)
	if (event.rowWasSelected != null)
		if (event.rowWasSelected)
			if (tbl.hasSelected())
				tbl.deselect(tbl.selectedIndex)

	if (typeof doc.images["btnDelete" + s] != "undefined")
	{
		if (tbl.hasSelected())
			doc.images["btnDelete" + s].src = imgDeleteOn.src
		else
			doc.images["btnDelete" + s].src = imgDeleteOff.src
	}
}

function loadXML(x, f, url)
{
	if (url != null)
		xml.load(url)
		
	if (xml.documentElement.childNodes.length == 0)
		x.documentElement.selectNodes(f).removeAll()
	else
		x.loadXML(xml.xml);
}

function getDialogStr(w, h)
{
	return "dialogHeight:" + h + "px;dialogWidth:" + w + "px;help:no;scroll:no;status:no"
}

function sortXML(x, f)
{
	if (gsLastSortXML != x.id)
	{
		gsLastSortField = ""
		gsSortDir = "+"
		gsLastSortXML = x.id
	}
	
	if (gsLastSortField == f)
		gsSortDir = (gsSortDir == '+' ? '-' : '+')
	else
	{
		gsSortDir = '+'
		gsLastSortField = f
	}
	var sSort = gsSortDir + ' ' + gsLastSortField

	if (x.documentElement.childNodes.length == 0) return
	if (typeof x.xsl == "undefined") return
	
	var xsl = eval(x.xsl)
	var nl = xsl.selectNodes("//xsl:for-each")
	for (var i = 0; i < nl.length; i++)
		nl[i].setAttribute("order-by", sSort)

	x.loadXML(x.documentElement.transformNode(xsl.documentElement))
}

function installComponent(href)
{
	//window.open(href, "", "width=400,height=300");
	var r = window.showModalDialog(href, "", getDialogStr(400, 300));
	
	if (r != null)
		location.reload();
}

function isComponentInstalled(sProgID)
{
	try
	{
		var o = new ActiveXObject(sProgID);
		return true;
	}
	catch(e)
	{
		return false;
	}
}