/*
© 2006 - Centennial Software Limited - All rights reserved.

This work contains copyrighted, confidential, 
proprietary and trade secret information owned by Centennial Software Limited. 
No part of this work may be used, practiced, performed, copied, distributed, 
revised, modified, translated, abridged, condensed, expanded, collected, 
compiled, linked, recast or adapted without the prior written consent of 
Centennial Software Limited. Any use or exploitation of this work without full 
written authorization directly from Centennial Software Limited will constitute 
an infringement of Copyright.
*/



// Initialisation of JavaScript functionality on standard pages, includes
// hiding of elements and addition of onMouseOver, onFocus commands etc.
// This functionality is not hard coded into the HTML to ensure the pages
// will function and validate without JavaScript support.

//center align tables in IE5.5
if(navigator.appVersion.indexOf("MSIE 5")>0)
{
	var __x=document.getElementsByTagName("table");
	for (var i=0; i<__x.length;i++)
	{
		if (__x[i].className.indexOf("centered")>=0)
		{
			__x[i].align="center";
		}
	}
	
}

// Make the print icon visible. 6.0 version
if (document.getElementById("export-print")) {
	document.getElementById("export-print").style.display = "inline";

}
//6.1 version
if (document.getElementById("export-options"))
{
	var _lis = document.getElementById("export-options").getElementsByTagName("li");
	for (var i=0; i<_lis.length; i++)
	{
		var __li = _lis[i];
		__li.style.display="block";
	}
}


var frm = document.getElementById("org-form");
if (frm)
{
	//frm.onsubmit = function(){return (this.HierarchyID.value != 0);}
}

function resetOtherForms()
{
	//parse out the number of this id
	var r = /\w+-(\d)-\w+/i;
	var a = r.exec(this.id);
	if (a.length>0)
	{
		var p = a[1];
		for (var i=0; i<4; i++)
		{
			//remove the other input elements from the form;
			if (i!=parseInt(p))
			{
				var container = document.getElementById("report-" + i + "-form");
				if (container)
				{
					container.style.display="none";
					while(container.getElementsByTagName("select").length>0)
					{
						var m = container.getElementsByTagName("select")[0];
						m.parentNode.removeChild(m);
					}
					
				}
			}
		}
	}
	//return false;
}

function checkFieldset(check)
{
	var fld = check.parentNode;
	while (fld.tagName.toLowerCase()!="fieldset" && fld.parentNode!=null)
		fld = fld.parentNode;
	
	if (fld.tagName.toLowerCase() != "fieldset")
		return;
	
	//get all inputs in the fieldset and check their state
	var a = fld.getElementsByTagName("input");
	
	var checkstate=null;
	var fail = true;
	
	for (var i=0;i<a.length; i++)
	{
		if (a[i].type=="checkbox" && a[i].id!=check.id)
		{
			if (checkstate==null)
				checkstate = a[i].checked;
			
			if (checkstate!=a[i].checked)
			{
				fail=false;
				break;
			}				
		}
	}
	
	if (fail && checkstate==true)
		check.checked=checkstate;
	else
		check.checked=false;

}

// Ditto for column selection forms.
if (document.getElementById("system-column-selection-toggle")) 
{
	var a = document.getElementById("system-column-selection-toggle");
	a.href="#";
	a.onclick=ToggleSearchColumns;
	a.style.display = "block";
}
if (document.getElementById("system-column-selection")) 
{
	document.getElementById("system-column-selection").style.display = "none";
}


if (document.getElementById("system-filter-toggle")) 
{
	var a = document.getElementById("system-filter-toggle");
	a.href="#";
	a.style.display = "block";
	a.onclick = ToggleSearchFilter;
}
if (document.getElementById("system-filter")) {
	document.getElementById("system-filter").style.display = "none";
}

if(document.getElementById("system-filter-toggle"))
{
	if (document.getElementById("system-filter-toggle").className=="form-section-toggle") 
	{
		var a = document.getElementById("system-filter-toggle")
		a.onclick();
	}
	
}

if (document.getElementById("search-column-selection-toggle")) {
	document.getElementById("search-column-selection-toggle").style.display = "block";
}

if (document.getElementById("search-column-selection")) {
	document.getElementById("search-column-selection").style.display = "none";
}

if (document.getElementById("search-filter-toggle")) {
	document.getElementById("search-filter-toggle").style.display = "block";
}

if (document.getElementById("search-filter-toggle")) {
	document.getElementById("search-filter-toggle").style.backgroundImage = "url(images/widget_collapse.gif)";
}

checkButtons();

// Show "select all" javascript links in column selection forms.
if (document.getElementById("systems-networking-all")) {
	var s = document.getElementById("systems-networking-all");
	s.style.display = "block";
	checkFieldset(s.getElementsByTagName("input")[0]);
}
if (document.getElementById("systems-specification-all")) {
	var s = document.getElementById("systems-specification-all");
	s.style.display = "block";
	checkFieldset(s.getElementsByTagName("input")[0]);
}
if (document.getElementById("systems-os-all")) {
	var s=document.getElementById("systems-os-all");
	s.style.display = "block";
	checkFieldset(s.getElementsByTagName("input")[0]);
}
if (document.getElementById("systems-audit-all")) {
	var s = document.getElementById("systems-audit-all");
	s.style.display = "block";
	checkFieldset(s.getElementsByTagName("input")[0]);
}



// show any spans with a javascript-link class
var spans = document.getElementsByTagName("span");
for (var i=0; i<spans.length; i++)
{
	var span=spans[i];
	if (span.className=="javascript-link")
	{
		span.className = "";
	}
}
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++)
{
	
	if (anchors[i].rel == "external")
	{
		anchors[i].target="_blank";
	}
	
	if (anchors[i].className == "export-print")
	{
		anchors[i].style.display = "inline";
	}
}
/*

Search filter routines

*/

function ToggleSearchColumns()
{
	var searchColumnSelection = document.getElementById("system-column-selection");
	var searchColumnSelectionToggle = document.getElementById("system-column-selection-toggle");
	if (searchColumnSelection.style.display == "none") 
	{
		searchColumnSelection.style.display = "block";
		searchColumnSelectionToggle.style.backgroundImage = "url(../images/widget_collapse.gif)";
	}
	 else 
	{
		searchColumnSelection.style.display = "none";
		searchColumnSelectionToggle.style.backgroundImage = "url(../images/widget_expand.gif)";
	}
	checkButtons();
}

function ToggleSearchFilter()
{
	var searchFilter = document.getElementById("system-filter");
	var searchFilterToggle = document.getElementById("system-filter-toggle");
	

	if (searchFilter.style.display == "none") 
	{
		searchFilter.style.display = "block";
		searchFilterToggle.style.backgroundImage = "url(../images/widget_collapse.gif)";
	} 
	else 
	{
		searchFilter.style.display = "none";
		searchFilterToggle.style.backgroundImage = "url(../images/widget_expand.gif)";
	}
	checkButtons();
}

function checkButtons()
{
	var searchFilter = document.getElementById("system-filter");
	var searchColumnSelection = document.getElementById("system-column-selection");
	
	if (!searchFilter)
		return;
	
	if (searchFilter.style.display == "none" && searchColumnSelection.style.display == "none" && !document.getElementById("search-fields"))
	{
		if (document.getElementById("system-buttons"))
			document.getElementById("system-buttons").style.display="none";
	}
	else
	{
		if (document.getElementById("system-buttons"))
			document.getElementById("system-buttons").style.display="block";
	}

}


/*******************************************************************************************************************************

org unit methods

********************************************************************************************************************************/


function toggleMeKids()
{
	if (this.o.closed)
		this.o.open();		
	else
		this.o.close();

	return false;
}

function postForm()
{

	var f = document.getElementById("org-form");
	var found = false;
	if (document.getElementById("org-unit-select"))
	{
		
		document.getElementById("org-unit-select").value = this.hid;
		if(document.getElementById("org-unit-select").value==0)
		{
			var oOption = document.createElement("option");
			document.getElementById("org-unit-select").options.add(oOption);
			oOption.innerText = "";
			oOption.value = this.hid;	
			document.getElementById("org-unit-select").value = this.hid;		
		}
		
	}
	else
	{
		for (var i=0; i<f.getElementsByTagName("input").length; i++)
		{
			if (f.getElementsByTagName("input")[i].name == "HierarchyID")
			{
				f.getElementsByTagName("input")[i].value=this.hid;
				found = true;
				break;
			}			
		}
		
	}
	
	f.method="get";
	
	if (this.hid>0)
		f.submit();
	
	return false;
}


var __treeBuilt;
var __searching = false;
function recursiveSearch(o, val)
{
	__searching = true;
	var active = false;
	
	if (o.searchEx.indexOf(val)>=0)
	{ 
		if (val.length>2 || __ou.totalcount<200)
		{	
			o.open();
		}
		
		if (o.built && o.st.indexOf(val)>=0)
		{
			o.select();
		}
		else
		{
			o.div.style.fontWeight="normal";
			if (o.built)
				o.open();
		}
		
		for (var i=0; i<o.c.length; i++)
			recursiveSearch(o.c[i], val);
	}
	else
	{
		if (o.built)
			o.deselect();
	}

	//o.open();
	__searching = false;
	stretchShim();
	return active;
		
	
}

function doSearch()
{
	var searchVal = this.value.replace(/(^ +)|( +$)/, "").toLowerCase();
	
	recursiveSearch(__ou, searchVal);
	return;
}


function open()
{
	this.closed=false;
	if (this.c.length==0)
		return;
	
	addNodes(this, this.div);
	
	var ns = this.div.childNodes;
	
	for (var i=0; i<ns.length; i++)
	{
		if (ns[i].tagName.toLowerCase()=="div")
			ns[i].style.display="block";
	}
	this.div.style.display="block";
		
	this.a.replaceChild(AddImage(this.a._collapse),  this.a.childNodes[0]);
	stretchShim();
}

function close()
{
	this.closed=true;
	if (this.c.length==0)
		return;
	var ns = this.div.childNodes;
	
	for (var i=0; i<ns.length; i++)
	{
		if (ns[i].tagName.toLowerCase()=="div")
			ns[i].style.display="none";
	}
	
	this.a.replaceChild(AddImage(this.a._expand),  this.a.childNodes[0]);
	stretchShim();
	
}

function select()
{
	this.div.style.fontWeight="bold";
	this.div.style.display="block";
	this.active = true;
}
function deselect()
{
	this.div.style.fontWeight="normal";
	this.div.style.display="none";
	this.active = false;
}

function addSearchBox(cont)
{
	
	var text = xlat("OrgUnitFind", "Find");
	var input = document.createElement("input");
	input.style.marginLeft="3px";
	input.onkeyup=doSearch;
	input.id="__OUFind";
	var lbl = document.createElement("label");
	//lbl.className = "field-row-label";
	lbl.htmlFor = "__OUFind";
	lbl.appendChild(document.createTextNode(text));
	var divRow = document.createElement("div");
	//var divContent = document.createElement("div");
	//divRow.className = "field-row";
	//divContent.className="field-row-content";
	
	divRow.appendChild(lbl);
	divRow.appendChild(input);
	
	divRow.style.marginBottom="3px";
	divRow.style.border="none";
	divRow.style.padding="0";
	//divRow.appendChild(lbl)
	
	//divRow.appendChild(divContent);
	
	cont.appendChild(divRow);
}


function closePopup()
{
	showTree();
}

function showTree()
{
	buildTree();
	
	var popupDiv = document.getElementById("popup-reporting-level");
	var popupIframe = document.getElementById("popup-reporting-level-shim");
 
	if(popupDiv.style.display=="block") 
	{
		popupDiv.style.display="none";
		if (popupIframe)
			popupIframe.style.display = "none";
	} 
	else 
	{
		popupDiv.style.display="block";
		if (popupIframe)
		{
			popupIframe.style.width = popupDiv.offsetWidth -3 + "px";
			popupIframe.style.height = popupDiv.offsetHeight + "px";
			popupIframe.style.top="10px";
			popupIframe.style.left="217px";
			popupIframe.style.zIndex = popupDiv.style.zIndex - 1;
			popupIframe.style.display = "block";
			//popupIframe.style.border="1px solid red";
		}
	}
 
 return false;

}

function stretchShim()
{
	if (__searching)
		return;
		
	var popupDiv = document.getElementById("popup-reporting-level");
	var popupIframe = document.getElementById("popup-reporting-level-shim");
	if (popupIframe && popupDiv)
	{
		try
		{
			popupIframe.style.height = popupDiv.offsetHeight + "px";
		}
		catch (e)
		{}
	}
 
}
function buildSearchEnhancements(n)
{
	__ou.totalcount++;
	n.st = n.n.toLowerCase();
	
	var s = n.st;
	for (var i=0; i<n.c.length; i++)
	{
		s+= "/" + buildSearchEnhancements(n.c[i]);
	}
	n.searchEx = s;
	return s;
}

function buildTree()
{
	if (__treeBuilt)
		return;

	__treeBuilt = true;
		
//build the tree
	var reportLevel = document.getElementById("report-level-content");
	var treeCont = document.getElementById("report-options");
	var _contParent = document.getElementById("popup-reporting-level");
	
	if (!_contParent)
		return;
	
	try
	{
		if (!__ou)
			return;
	}
	catch (e)
	{
		return;
	
	}
	var _cont = document.createElement("div");
	
	if (!_cont)
		return;
	
	_contParent.appendChild(_cont);
	
	addSearchBox(_cont)

	__ou.level = 0;
	
	recursiveBuild(__ou, _cont);
	__ou.totalcount=0;
	buildSearchEnhancements(__ou);
}


function recursiveBuild(o, d)
{
	if (o.built)
		return;
		
	var newd = document.createElement("div");
	if (o.level>0)
		newd.style.padding="0 0 0 10px";
	else
		newd.style.padding="0 0 0 0";
	newd.style.border="0";
	newd.style.backgroundImage="none";
	newd.style.backgroundColor="transparent";
	newd.style.whiteSpace="nowrap";
	
	o.div = newd;
	o.close=close;
	o.open=open;
	o.select=select;
	o.deselect=deselect;
	o.searchTerm = o.n.toLowerCase();
	o.built=true;
	
	//newd.className="item";
	d.appendChild(newd);
	
	var a = document.createElement("a");
	a.href="#";
	a._expand="../images/widget_expand.gif";
	a._collapse="../images/widget_collapse.gif";
	a._none="../images/widget_leaf.gif";
	a.style.marginRight="3px";
	a.o = o;
	o.a = a;
	
	
	
	if (o.c && o.c.length>0)
	{
		if (o.level==0)
		{
			newd.style.width="100%";
			newd.style.overflow = "auto";
			
			a.appendChild(AddImage(a._expand));
		}
		else
			a.appendChild(AddImage(a._collapse));
		
		a.onclick=toggleMeKids;
		
	}
	else
	{
		a.appendChild(AddImage(a._none));
		a.onclick=function () {return false;};
	}	
	
	var toggler = a;
	
	newd.appendChild(a);
	
	a = document.createElement("a");
	a.href="#";
	a.hid = o.i;
	a.onclick=postForm;
	a.appendChild(document.createTextNode(o.n.replace(/\|([\/])?script/g, "$1script")));
	a.style.whiteSpace="nowrap";
	if (o.i==__currentOu)
	{
		a.className="current-ou";
	}
	newd.appendChild(a);
	
	//~ if (o.children.length>0)
	//~ {
		//~ for(var i=0;i<o.children.length;i++)
		//~ {
			//~ o.children[i].level = o.level+1;
			//~ recursiveBuild(o.children[i], newd);
		//~ }
	//~ }
	if (o.level==0)
		o.open();
	else
		o.close();
}


function addNodes(o, d)
{
	if (o.c.length>0)
	{
		
		for (var i=0; i<o.c.length; i++)
		{
			o.c[i].level = o.level+1;
			recursiveBuild(o.c[i], d);
			
		}
	}
}

function doOrg()
{
	__treeBuilt = false;
	var reportLevel = document.getElementById("report-level-content");
	var treeCont = document.getElementById("report-options");
	var _contParent = document.getElementById("popup-reporting-level");
	var _submitOu = document.getElementById("submit-ou");
	
	if (!_submitOu)
		return;
		
	if (!reportLevel)
		return;
	
	//set current selection
	
	//document.getElementById("report-level-content").style.display="none";
	
	var ulOptionsList = document.createElement("ul");
	ulOptionsList.className = "options-list";
	var li = document.createElement("li");
	ulOptionsList.appendChild(li);
	li.id="orgunit-select";
	var action = document.createElement("a");
	action.href="#";
	action.onclick=showTree;
	action.appendChild(document.createTextNode(xlat("OrgUnitSelection", "Select another level")));
	li.appendChild(action);
	
	reportLevel.appendChild(ulOptionsList);
								
	var clearingSpan = document.createElement("span");
	clearingSpan.className="clear";
	reportLevel.appendChild(clearingSpan);
	
	
	if (document.getElementById("current-report-level").getElementsByTagName("select").length>0)
		document.getElementById("current-report-level").getElementsByTagName("select")[0].parentNode.style.display="none";
		
	if (document.getElementById("current-report-level").getElementsByTagName("div").length>0)
		document.getElementById("current-report-level").getElementsByTagName("div")[0].style.display="none";
	
	//var img = document.createElement("img");
	//img.src="../images/popup_footer.jpg";
	//_contParent.appendChild(img);
	if (navigator.appVersion.indexOf("MSIE")>=0)
	{
		var iframe = document.createElement("iframe");
		iframe.id="popup-reporting-level-shim";
		iframe.src="javascript:false;";
		iframe.scrolling="no";
		iframe.frameBorder=0;
		iframe.style.position="absolute";
		iframe.style.top="10px";
		iframe.style.left="217px";
		iframe.style.display="none";
		treeCont.appendChild(iframe);
		
		reportLevel.style.paddingBottom="30px";
	}
	else
	{
		ulOptionsList.style.position="relative";
	}
	
}

function setCurrent()
{
	return;
	var ou = __ou["ouid_"];
	if (!ou)
		return;
		
	if (ou.li.text.className.indexOf("current")<0)
		ou.li.text.className = ou.li.text.className +" current";
}



function AddImage(url)
{
	var i = document.createElement("img");
	i.src = url;
	return i;
}
doOrg();


/*

AJAX Routines

*/

/*

hook the onchange event on the dropdown

*/
	var sels = document.getElementsByTagName("select");
	var ___selspos = -1;
	for (var i=0; i<sels.length; i++)
	{
		if (sels[i].className == "report-name")
		{
			sels[i].__pos = i;
			sels[i].onchange =  function (e)
			{
				___selspos = this.__pos;
				var script = document.createElement('script');
				script.type = 'text/javascript';
				script.src = "chart.ashx?" + this.value;
				document.getElementsByTagName('head')[0].appendChild(script);
				
			}
	
			if (navigator.appVersion.indexOf("MSIE")<0)
			{
				sels[i].onkeyup =  function (e)
				{
					if (!e)
					{
						e=event;
					}
					
					if ( (e.keyCode >= 33 &&
						e.keyCode <= 40) 
						|| e.keyCode == 13 )
					{
						var script = document.createElement('script');
						script.type = 'text/javascript';
						script.src = "chart.ashx?" + this.value;
						document.getElementsByTagName('head')[0].appendChild(script);
						___selspos = this.__pos;
				
					}
				}
			}
		}
	}
	
	function fillTypes(opts, id)
	{
		var lst = document.getElementById(id);
		lst.options.length=0;
		for (var i=0; i<opts.length;i++)
		{
			var opt = document.createElement("option");
			opt.value = opts[i].id;
			opt.text = opts[i].text;
			opt.innerText = opts[i].text;
			lst.appendChild(opt);
			
		}
	}
	
	function addFormRow(row, name, parent, sibling)
	{
		var formRow = document.createElement("div");
		formRow.className = "form-row disposable";
		var input;
		if (row.type == "ddl")
		{
			input = document.createElement("select");
			
			for (var i=0;i<row.items.length;i++)
			{
				var opt = document.createElement("option");
				opt.value = row.items[i].value;
				opt.text = row.items[i].text;
				opt.innerText = opt.text;
				input.appendChild(opt);
			}
			
		}
		else
		{
			input = document.createElement("input");
			input.type = "checkbox";
		}
		input.id ="b" + Math.floor(Math.random()*1000000)
		
		input.name = name;
		
		var label = document.createElement("label");
		label.htmlFor = input.id;
		label.appendChild(document.createTextNode(row.label));
		if (row.type == "ddl")
		{
			label.className = "column-label";
			formRow.appendChild(label);
			formRow.appendChild(input);
		}
		else
		{
			formRow.appendChild(input);
			formRow.appendChild(label);
		
		}
		parent.insertBefore(formRow, sibling);
	}
	
	
	function fillOptions(rows, idSrc)
	{
		var divForm = document.getElementById(idSrc.replace(/reportName/, "reportForm"));
		if (!divForm)
			return;
		var divCont = null;
		var divFirst = null;
		//remove old rows first
		var dvs = divForm.getElementsByTagName("div");
		var removables=new Array();
		
		for (var i=0; i<dvs.length; i++)
		{
			if (dvs[i].className=="form-row")
				divFirst = dvs[i];
				
			if (dvs[i].className.indexOf("disposable")>0)
			{
				removables.push(dvs[i]);
			}
			
			if (dvs[i].className =="form-row-container")
			{
				divCont = dvs[i];
			}
		}
		
		
		for (var dv in removables)
		{
			removables[dv].parentNode.removeChild(removables[dv]);
		}
		/*
		var imgs = divForm.parentNode.getElementsByTagName("img");
		for (var i=0; i<imgs.length; i++)
		{
			imgs[i].style.visibility="hidden";
		}
		*/
		if (!divCont)
			return;
		
		for (var i=0; i<rows.length; i++)
		{
			var name = idSrc.replace(/reportName/, rows[i].name);
			name=name.replace(/_/g, "!");
			name = name.replace("DC!", "DC_");
			name = name.replace(/!/g, ":");
			addFormRow(rows[i], name, divCont, divFirst);
		}
			
	}
	
	function __hjson(doc)
	{
		var o=eval(doc);
		if (o.response=="success")
		{
			if (sels[___selspos].className == "report-name")
			{
				if(sels[___selspos].value == o.disco)
				{
					fillTypes(o.chartTypes, sels[___selspos].id.replace(/reportName/, "reportChartType"));
					fillOptions(o.formRows, sels[___selspos].id);
				}
			}
				
		}
	}
	