﻿function GetObjectByPartName(name)
{
  var obj = null; 

  //Go through the forms collection
  for (var i= 0; i < document.forms[0].elements.length; i++)
  {    
    var elementname = document.forms[0].elements[i].name.toString();
		
    // if the object name passed equals the object name in the form collection - return it's number
    if (elementname.indexOf(name) != -1)
    {
	    obj = document.forms[0].elements[i]
	    break;
    }
  }
  
  if(obj == null)
		obj = GetObjectByPartialTagName('span', name);
    
  if(obj == null)
		obj = GetObjectByPartialTagName('div', name)
		
	if(obj == null)
		obj = GetObjectByPartialTagName('table', name)
		
	if(obj == null)
		obj = GetObjectByPartialTagName('img', name)

    if(obj == null)
		obj = GetObjectByPartialTagName('a', name)
  return obj;
}

function GetObjectByPartialTagName(tagName, name)
{
	var obj = null;
	var elementnumber;
	var elements = document.getElementsByTagName(tagName);  
    
  for(i=0; i<elements.length; i++) 
  {  
		var elementID = elements[i].id;
		
		//alert(elements[i].getElementsByTagName(tagName).length);
  		
    // if the object name passed equals the object name in the form collection - return it's number
    if (elementID.indexOf(name) != -1)
    {
      obj = elements[i]
      break;
		}    
  }
  
  return obj;
}

function Toggle(divID, ctrl, upImage, downImage)
{
	var divControl = document.getElementById(divID);
	
	if(divControl.style.display == 'block')
	{
		EraseCookie(divID);
		CreateCookie(divID, 'none', 1);
		divControl.style.display = 'none';
		ctrl.src = upImage;
	}
	else
	{
		EraseCookie(divID);
		CreateCookie(divID, 'block', 1);
		divControl.style.display = 'block';
		ctrl.src = downImage;
	}	
}

function MenuToggle(linkID, divID)
{
	var oldMenuItem = CloseOldMenuItem(divID);
	UnhighlightOldMenuItem();
	
	var oldMenuItem = ReadCookie('OpenMenuItem');
		
	// Only close the submenu if accessing another sub menu
	if(divID != null)
	{
		if(divID != oldMenuItem)
		{
			var divControl = document.getElementById(divID);
			if(divControl)
			{		
				if(divControl.style.display == '')
				{		
					divControl.style.display = 'none';
				}
				else
				{		
					divControl.style.display = '';
				}
				EraseCookie('OpenMenuItem');
				CreateCookie('OpenMenuItem', divID, 1);		
			}
		}		
	}

	// Only highlight real link items.
	if(linkID.indexOf('NonLink') == -1)
	{
		var linkControl = document.getElementById(linkID);	
		linkControl.style.fontWeight = 'bold';	
		
		EraseCookie('OpenLinkItem');
		CreateCookie('OpenLinkItem', linkID, 1);
	}
}

function CloseOldMenuItem(divID)
{	
	var oldMenuItem = ReadCookie('OpenMenuItem');
	
	if(divID != oldMenuItem)
	{	
		if(oldMenuItem != null)
		{
			if(document.getElementById(oldMenuItem))
				document.getElementById(oldMenuItem).style.display = 'none';	
		}
			
		EraseCookie('OpenMenuItem');
	}
	
	return oldMenuItem;
}

function UnhighlightOldMenuItem()
{
	var oldLinkItem = ReadCookie('OpenLinkItem');

	if(oldLinkItem != null)
	{
		if(document.getElementById(oldLinkItem))
			document.getElementById(oldLinkItem).style.fontWeight = '';	
	}
}
		
function HighlightInvalidControls()
{
	var success = true;
	Page_ClientValidate();
	
	if (document.Page_Validators != "undefined")
	{
		for (i = 0; i < Page_Validators.length; i++) 
		{
			val = Page_Validators[i];			
			
			if(!val.isvalid)
			{
					ChangeColour(val.controltovalidate, '#FFCCCC');
					success = false;
			}
			else
					ChangeColour(val.controltovalidate, '#FFFFFF');
		}
	}
	
	return success;
}
	
function ChangeColour(controlID, color)
{   
	if (document.getElementById(controlID) != null)
		document.getElementById(controlID).style.backgroundColor='' + color + '';
}

function EraseCookie(name) 
{
    CreateCookie(name, '', -1);
}

function CreateCookie(name, value, days) 
{
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function ReadCookie(name) 
{
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function PageScroll()
{
		window.scrollBy(0,1000);		
}

function RenderImage()
{
	var nRandom = Math.ceil(Math.random() * 4);
	document.write ('<div id="centrecontent' + nRandom + '">');
	document.write ('</div>');
}

// this function puts the dark screen over the entire page
function DisablePage()
{
    var page_screen = document.getElementById('page_screen');
    page_screen.style.height = document.body.parentNode.scrollHeight + 'px';
    page_screen.style.display = 'block';
}

function EnablePage()
{
    var page_screen = document.getElementById('page_screen');
    page_screen.style.height = '0px';
    page_screen.style.display = 'none';
}

function ShowLoadingBox(item)
{
    var content = '<img src="/Images/working.gif" /> <Strong>Important:</strong> ' + item + ' is retrieving data, so please be patient.';

    DisablePage();
    return overlib(content, WIDTH, 370, BORDER, 3, BGCOLOR, '#CC6666', FGCOLOR, '#FFCCCC', STICKY, CELLPAD, 5, TIMEOUT, 20000);
}

function AddFavouriteReport(reportName, reportUrl)
{
    var favourites = ReadCookie('favourites');
    
    if(favourites == null)
    {
        CreateCookie('favourites', reportName + ',' + reportUrl, 7);
        alert('The report "' + reportName + '" was added to favourite reports.');
    }
    else
    {
        if(favourites.indexOf(reportName) < 0)
        {
            EraseCookie('favourites');
            CreateCookie('favourites', favourites + '|' + reportName + ',' + reportUrl, 7);
            alert('The report "' + reportName + '" was added to favourite reports.');
        }
        else
            alert('The report "' + reportName + '" has already been added to favourite reports.');
    } 
}

function ShowFavouriteReports()
{
    var content = '';
    var favourites = ReadCookie('favourites');
    
    if(favourites == null)
        content = '<i>You have no favourite reports</i>';
    else
    { 
        content = '<strong>Click to load reports.</strong><br />';
        var reports = favourites.split('|');
       
        for(var i=0; i<reports.length; i++)
        {
            var nameAndUrl = reports[i].split(',');
            
            content += '<span class="webpartfont">&nbsp;&nbsp;- <a class="item" style="font-size:x-small" href="' + nameAndUrl[1] + '">' + nameAndUrl[0] + '</a></span><br />';
        }    
    }

    return overlib(content, WIDTH, 220, BORDER, 3, BGCOLOR, '#b2c6d7', FGCOLOR, '#e5ecf2', CAPTION, 'Favourite Reports', STICKY, MOUSEOFF, CELLPAD, 5, CAPTIONFONTCLASS, 'glossaryHeaderFont', CLOSEFONTCLASS, 'glossaryCloseFont');
}

function Show(contents)
{
	//alert(2891);
	var divTag = document.getElementById("ExceptionDetails");
	var iFrameTag = document.getElementById("selectblocker");
	var tableTag = GetObjectByPartName("contents");
	var AnchorPos = 100;//getAnchorPosition("name")
	
	alert(tableTag.innerText);
	divTag.style.left=300+20;
	divTag.style.top=100+22;
	divTag.style.width=300;
	divTag.style.height=150;
	iFrameTag.style.left = 0;
	iFrameTag.style.top = 0;
	iFrameTag.style.width = divTag.style.width;
	iFrameTag.style.height = divTag.style.height;
	iFrameTag.style.zIndex = divTag.style.zIndex-1;
	
	divTag.innerHTML = contents;	
	divTag.style.display = "block";
}
function Hide()
{
	var divTag = document.getElementById("ExceptionDetails");
	divTag.style.display = "none";
}

function IsMaxLength(obj, mlength)
{
	if (obj.getAttribute && obj.value.length>mlength)
		obj.value = obj.value.substring(0,mlength);
}

function FloatMenu () 
{
    if (bNC && nVer >= 4) {
		if (window.pageYOffset < nMenuYPos - nYDelta)
			nNeededPos = nMenuYPos;
		else	
			nNeededPos = window.pageYOffset + nYDelta;
		nCurrentPos = document.layers["floatingmenu"].top;

		if (nNeededPos == nCurrentPos)
			return;

		nCurrentPos += Math.round ( (nNeededPos - nCurrentPos) / 4);
		document.layers["floatingmenu"].top = nCurrentPos;
	}

	if (bIE && nVer >= 4 && !bMacIE) {
		if (document.body.scrollTop < nMenuYPos - nYDelta)
			nNeededPos = nMenuYPos;
		else
			nNeededPos = document.body.scrollTop + nYDelta;
		nCurrentPos = document.all["floatingmenu"].offsetTop;
		
		if (nNeededPos == nCurrentPos)
			return;

		nDelta = (nNeededPos - nCurrentPos) / 6;
		if (nDelta > 0 && nDelta < 0.5)
			nCurrentPos += nNeededPos - nCurrentPos;
		else
			if (nDelta < 0 && nDelta >= -0.5)
				nCurrentPos --;
			else
				nCurrentPos += Math.round (nDelta);
		
		pnt = document.all["floatingmenu"].style;
		
		
		pnt.top = nCurrentPos;
	}
}

function ScriptStart () 
{
    if (bNC && nVer >= 4)
		setInterval ("FloatMenu()", 20);
	if (bIE && nVer >= 4 && !bMacIE)
		setInterval("FloatMenu()", 20);
}