var formDependencies = new Object();
var jumpToControlId;

function addDependencyRelationship(dependedOnControlId, dependentControlId)
{
    if (!formDependencies[dependedOnControlId])
        formDependencies[dependedOnControlId] = new Array();
        
    var depArray = formDependencies[dependedOnControlId];
    depArray[depArray.length] = dependentControlId;
}

function initialiseDependencyLinkages()
{
	var inputElements = document.getElementsByTagName('input')
    for (key in formDependencies)
    {
        var formItem = getElementFromId(key);
		if (! formItem) continue;
		    
        formItem.onclick = function(e) { refreshControlShadowStates() };
        
		if (formItem.type = 'radio')
		{
		    for (var i = 0; i < inputElements.length; i++)
		    {
		        var inputEl = inputElements[i];
		        
		        if (inputEl == formItem)
		            continue;
		        
		        if (inputEl.type != formItem.type && inputEl.name != formItem.name)
		            continue;
		            
		        inputEl.onclick = function(e) { refreshControlShadowStates() };
		    }
		}
    }
}

function refreshControlShadowStates()
{
    for (key in formDependencies)
    {
        var dependedOnCtrl = getElementFromId(key);
        if (!dependedOnCtrl) continue;
        
        for (var i = 0; i < formDependencies[key].length; i++)
        {
            var dependentCtrl = getElementFromId(formDependencies[key][i]);
            if (!dependentCtrl) continue;
            dependentCtrl.disabled = (!dependedOnCtrl.checked);
        }
    }
}

function getElementFromId(id)
{
	if (document.getElementById)
		return document.getElementById(id);
	else if (document.all)
		return document.all[id];
	else
        return null
}

function setJumpToControlId(id)
{
    jumpToControlId = id;
}

var oldOnload = window.onload;
window.onload = function()
{
    if (oldOnload)
        oldOnload();
        
    refreshControlShadowStates();
    initialiseDependencyLinkages();
    
    if (jumpToControlId)
    {
        var el = getElementFromId(jumpToControlId);
        // JL: el may be undefined, if it exists then we scroll
        // otherwise just loading will suffice.
        if(el){
		el.scrollIntoView();
	}
    }
         
}
