
    var debugCommonFlag = false;
    
    ///////////////////////////////////////////////////////////////////////////////////////
	// PAGE PRINT CODE ////////////////////////////////////////////////////////////////////
	///////////////////////////////////////////////////////////////////////////////////////
	var mainContentsClass;
	var m_mainContentsID;  //used in endPrint
	var origHeight; // used in endPrint
	var origWidth;  // used in endPrint
	
    /// <author>Keith Sacra</author>
    /// <date>????</date>
    /// <summary>
    /// Sends the designated ID to the printer.
    /// Sets the page display (style) back to designated style       
    /// </summary>
    /// <param name="mainContentsID" dir="IN"></param>
    /// <exception cref=""></exception>
    /// <remarks></remarks>
    /// <modified name="jshewchu" date="05/22/2007 9:49:36 AM">
    /// Added comments and added "pass through" variables for allowing
    /// for different printable elements.
    /// </modified>
	function startPrint(mainContentsID){

		var mainContents = document.getElementById(mainContentsID);
		m_mainContentsID= mainContentsID;
		var origHeight = mainContents.style.height;
		var origWidth = mainContents.style.width;
        
		//window.onafterprint = endPrint(mainContentsID, origHeight, origWidth);
		window.onafterprint = endPrint;

		// Save the MainContents's Class so we can reset it
		mainContentsClass = mainContents.className;

		// Set the style and dimensions of the MainContents to cover the screen
		//mainContents.className = 'clsLayout_Print';
		mainContents.style.height = document.body.clientHeight;
		mainContents.style.width = document.body.clientWidth;
		
		window.print();
	}
	
    /// <author>Keith Sacra</author>
    /// <date>????</date>
    /// <summary>
    /// resets printable element style
    /// </summary>
    /// <exception cref=""></exception>
    /// <remarks></remarks>
    /// <modified name="jshewchu" date="05/22/2007 9:49:36 AM">
    /// Added comments and added calls to "pass through" variables for allowing
    /// for different printable elements.
    /// </modified>
	function endPrint(){
		
		var mainContents = document.getElementById(m_mainContentsID);
		
		// Reset the MainContents dimensions and Class back to normal
		mainContents.className = mainContentsClass;
//		mainContents.style.height = "100%";
//		mainContents.style.width = "100%";
        
        if (origHeight != null)
        {
            mainContents.style.height = origHeight;        
        }        
        else
        {
            //Leave as is;
        }
        
        if (origWidth != null)
        {
            mainContents.style.width = origWidth;     
        }        
        else
        {
            //Leave as is;
        }
        
		
		window.onafterprint = null;
		
	}
    ///////////////////////////////////////////////////////////////////////////////////////
	// END OF PAGE PRINT CODE ////////////////////////////////////////////////////////////////////
	///////////////////////////////////////////////////////////////////////////////////////	
	
    /// <author>John Shewchuk</author>
    /// <date>05/22/2007</date>
    /// <summary>
    /// Enables a validator that is wired up to any control
    /// event that expects a validation to be fired subsequently
    /// 
    /// Assumes the control exists
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function enableValidator(sender, validatorID)	
	{	
	    if(debugCommonFlag)
	    {
	        alert("enableValidator");
	    }	    
	    
	    var validator = document.getElementById(validatorID);
	    
	    if(debugCommonFlag)
	    {
	        if(validator == null)
	        {
	            alert("validator is null. validatorID = " + validatorID);
	        }
	        else
	        {
	            alert("validator is NOT null");
	        }
	        
	    }	    	    
	    
	    if(validator != null)
	    {    	    
	        validator.enabled=true;
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>05/22/2007</date>
    /// <summary>
    /// Disable a validator that is wired up to any control
    /// event that expects a validation to be fired subsequently
    /// 
    /// Assumes the control exists
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function disableValidator(sender, validatorID)
	{
	    if(debugCommonFlag)
	    {
	        alert("disableValidator");
	    }
	    var validator = document.getElementById(validatorID);
	    
	     if(debugCommonFlag)
	    {
	        if(validator == null)
	        {
	            alert("validator is null. validatorID = " + validatorID);
	        }
	        else
	        {
	            alert("validator is NOT null");
	        }
	        
	    }	    	
	    if(validator !=null)
	    {
	        validator.enabled=false;
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>05/22/2007</date>
    /// <summary>
    /// Sets a dropdown list to a specific "reset" value
    /// 
    /// Assumes the control exists
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function resetDropDownList(sender, dropDownListID, resetIndex)
	{
	   setDropDownList(sender, dropDownListID, resetIndex);
	}
	
	function setDropDownList(sender, dropDownListID, index)
	{
	    var dropDownList = document.getElementById(dropDownListID);
	    	    
	    dropDownList.selectedIndex = index;
	}
	
    /// <author>John Shewchuk</author>
    /// <date>05/22/2007</date>
    /// <summary>
    /// Sets a text box to a specific "reset" value
    /// 
    /// Assumes the control exists
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function clearTextBox(sender, textBoxID, resetValue)
	{
	    var textBox = document.getElementById(textBoxID);
	    
	    textBox.value = resetValue;
	}
	
	//global variable that contains a collection of dropDownTarget objects
	//that is keyed by the specified key on the object
	var arrDropDownTargetsByCoverageProgramState;
	
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// Adds a specific drop down ID to be processed later on certain events
    /// for a particular Coverage/Program/state.  The CPS is used to group
    /// a set of controls
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function addDropDownForOnChangeCopy(coverageProgramState, dropDownID)
	{   
	    var arrDropDownCPSTarget;
	    var objTarget;
	
	    if(debugCommonFlag)
	    {
	        alert("Entered addDropDownForOnChangeCopy with CPS of " + coverageProgramState);
	    }
	    //check if the array is initialized
	    //if not, initialize it
	    if (arrDropDownTargetsByCoverageProgramState == null)
	    {
	        //alert("Adding new object for: " + coverageProgramState);
	        objTarget = new dropDownTarget(coverageProgramState);
	        objTarget.AddTargetDrownDownChild(dropDownID);
	        
	        //alert("Adding new object to array");
	        arrDropDownTargetsByCoverageProgramState= new Array(1);
	        arrDropDownTargetsByCoverageProgramState[0] = objTarget;
	        
	    }
	    else
	    {
	        
	        //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramState.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramState[i];
	            
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget == null)
	        {
	            //Does not exist, create it
	            objTarget = new dropDownTarget(coverageProgramState);
	            arrDropDownTargetsByCoverageProgramState.push(objTarget);
	            
	        }
	    
	        //Target list tracks 
	        objTarget.AddTargetDrownDownChild(dropDownID);
	        
	    }	    
	    
	}
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// Sets the specific drop down ID to be used for processing later on certain events
    /// for a particular Coverage/Program/state.  The CPS is used to group
    /// a set of controls
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setDropDownTarget(coverageProgramState, dropDownID)
	{	
	    var objTarget;
	    
	    if(debugCommonFlag)
	    {
	        alert("Entered setDropDownTarget with CPS of " + coverageProgramState);
	    }
	
	    //check if the array is initialized
	    //if not, initialize it
	    if (arrDropDownTargetsByCoverageProgramState == null)
	    {
	        objTarget = new dropDownTarget(coverageProgramState);
	        objTarget.targetDropDownID = dropDownID;
	        
	        arrDropDownTargetsByCoverageProgramState= new Array(1);
	        arrDropDownTargetsByCoverageProgramState[0] = objTarget;
	        
	        //alert(arrDropDownTargetsByCoverageProgramState[0]);
	        
	    }
	    else
	    {
	        //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramState.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramState[i];
	            
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget == null)
	        {
	            //Does not exist, create it
	            objTarget = new dropDownTarget(coverageProgramState);
	            //alert("Prepush length: " + arrDropDownTargetsByCoverageProgramState.length);
	            arrDropDownTargetsByCoverageProgramState.push(objTarget);	       
	            //alert("Postpush length: " + arrDropDownTargetsByCoverageProgramState.length);     
	        }
	        	         
	        //Target list tracks 
	         objTarget.targetDropDownID = dropDownID;
	         
	        
	    }	    
	}
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// on a pariticular control.  The culimation of setting the sender/target (setDropDownTarget)
    /// for a group of listeners (addDropDownForOnChangeCopy)
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setTargetsToSelectedIndex(sender, coverageProgramState)
	{
	
	    var objTarget;   
	    	    
	    if(debugCommonFlag)
	    {
	        alert("Entered setTargetsToSelectedIndex with CPS of " + coverageProgramState);
	    }
	    
	    if (arrDropDownTargetsByCoverageProgramState != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramState.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramState[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramState[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.SetDropDownsToSelectedIndex(sender, sender.selectedIndex);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>07/06/2007</date>
    /// <summary>
    /// The event that is used to indicate if a radio button should
    /// be set to TRUE if the index of the dropDown box has changed
    /// from the specified Reset Index
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setRadioButtonToTrueOnDropDownChange(sender, targetRadioID, resetIndex, includeNullAsResetIndex)
	{
	    
	    var targetRadioCtrl = document.getElementById(targetRadioID);
	    
	    if (sender != null && targetRadioCtrl != null)
	    {
	        if(debugCommonFlag)
	        {
	            alert("Sender.SelectedIndex: " + sender.selectedIndex);
	        }
	        
	        //Check if the selectedIndex on the drop down list
	        //equals the reset value
	        if (sender.selectedIndex != resetIndex)
	        {
	            //Check if the value is null
	            if(sender.selectedIndex == null) 
	            {
	                //if nulls are not considered the reset than set the radio to TRUE
	                if (includeNullAsResetIndex == false)
	                {
	                    targetRadioCtrl.checked = true;
	                }
	            }
	            else
	            {
	               targetRadioCtrl.checked = true;
	            }
	            
	        }
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>07/06/2007</date>
    /// <summary>
    /// The event that is used to indicate if a radio button should
    /// be set to TRUE if the index of the text box has changed
    /// from the specified Reset Value
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setRadioButtonToTrueOnTextBoxChange(sender, targetRadioID, resetValue)
	{
	    
	    var targetRadioCtrl = document.getElementById(targetRadioID);
	    
	    if (sender != null && targetRadioCtrl != null)
	    { 
	        
	        if(debugCommonFlag)
	        {
	            alert("Sender.value: " + sender.value);	           
	        }
	        
	        //Check if the selectedIndex on the drop down list
	        //equals the reset value
	        if (sender.value != resetValue)
	        {	            
	            targetRadioCtrl.checked = true;            
	            
	        }
	    }
	}
	
	/*
	Non Mandatory Match Unit functions
	
	*/
	
	//global variable that contains a collection of dropDownTarget objects
	//that is keyed by the specified key on the object
	var arrDropDownTargetsByCoverageProgramStateNonMandatory;
	
	
    /// <author>John Shewchuk</author>
    /// <date>10/09/2007</date>
    /// <summary>
    /// Adds a specific drop down ID to be processed later on certain events
    /// for a particular Coverage/Program/state.  The CPS is used to group
    /// a set of controls
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	//function addDropDownForOnChangeCopyNonMandatory(coverageProgramState, rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem)
	function addDropDownForOnChangeCopyNonMandatory(coverageProgramState, rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem, enableValidatorFunctionPointer, disableValidatorFunctionPointer)
	{   
	    var arrDropDownCPSTarget;
	    var objTarget;
	
	    //check if the array is initialized
	    //if not, initialize it
	    if (arrDropDownTargetsByCoverageProgramStateNonMandatory == null)
	    { 
	        if(debugCommonFlag)
	        {
	            alert(enableValidatorFunctionPointer);
	        }
	        
	        //alert("Adding new object for: " + coverageProgramState);
	        objTarget = new dropDownTargetNonMand(coverageProgramState);
	        //objTarget.AddTargetDrownDownSibling(rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem);
	        objTarget.AddTargetDrownDownSibling(rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem, enableValidatorFunctionPointer, disableValidatorFunctionPointer);
	        
	        if(debugCommonFlag)
	        {
	            alert("Adding new object to array");
	        }
	        
	        arrDropDownTargetsByCoverageProgramStateNonMandatory= new Array(1);
	        arrDropDownTargetsByCoverageProgramStateNonMandatory[0] = objTarget;
	        
	    }
	    else
	    {
	        
	        //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateNonMandatory.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateNonMandatory[i];
	            
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget == null)
	        {
	            //Does not exist, create it
	            objTarget = new dropDownTargetNonMand(coverageProgramState);
	            arrDropDownTargetsByCoverageProgramStateNonMandatory.push(objTarget);
	            
	        }
	    
	        //Target list tracks 
	        //objTarget.AddTargetDrownDownSibling(rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem);
	        objTarget.AddTargetDrownDownSibling(rdoYesNoIDItem, ddlSiblingIDItem, vehicleIndexItem, enableValidatorFunctionPointer, disableValidatorFunctionPointer);
	        
	    }	    
	    
	}
	    	
    /// <author>John Shewchuk</author>
    /// <date>10/09/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// on a pariticular control.  The culimation of setting the sender/target (setDropDownTarget)
    /// for a group of listeners (addDropDownForOnChangeCopy)
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setTargetsToSelectedIndexNonMandatory(sender, coverageProgramState, ignoreRadioUnitEnabled)
	{
	    if(debugCommonFlag)
	    {
	        alert("setTargetsToSelectedIndexNonMandatory fired");
	    }
	    
	    var objTarget;
	    
	    if (arrDropDownTargetsByCoverageProgramStateNonMandatory != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateNonMandatory.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateNonMandatory[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramState[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.SetDropDownsToSelectedIndex(sender, sender.selectedIndex, ignoreRadioUnitEnabled);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
	/// <author>John Shewchuk</author>
    /// <date>10/10/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// on a pariticular control.  This event sets the related dropdownlist to
    /// a related value that has previously been set.  If none of the other coverages
    /// have been set value will remain in the defaulted state
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setDropDownOnRadioYesChange(sender, coverageProgramState)
	{
	     var objTarget;
	    
	    if (arrDropDownTargetsByCoverageProgramStateNonMandatory != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateNonMandatory.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateNonMandatory[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramState[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.UpdateValueToMinVehicleNumber(sender, sender.selectedIndex);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>10/26/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// group of validators to Enabled
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function enableGroupValidators(sender, coverageProgramState)
	{
	    if(debugCommonFlag)
	    {
	        alert("setTargetsToSelectedIndexNonMandatory fired");
	    }
	    
	    var objTarget;
	    
	    if (arrDropDownTargetsByCoverageProgramStateNonMandatory != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateNonMandatory.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateNonMandatory[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramState[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.enableValidators(sender);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
    /// <author>John Shewchuk</author>
    /// <date>10/26/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// group of validators to disabled
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function disableGroupValidators(sender, coverageProgramState)
	{
	    if(debugCommonFlag)
	    {
	        alert("setTargetsToSelectedIndexNonMandatory fired");
	    }
	    
	    var objTarget;
	    
	    if (arrDropDownTargetsByCoverageProgramStateNonMandatory != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateNonMandatory.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateNonMandatory[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramState[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.disableValidators(sender);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
	//global variable that contains a collection of dropDownTarget objects
	//that is keyed by the specified key on the object
	var arrDropDownTargetsByCoverageProgramStateMatchSibling;
	
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// Adds a specific drop down ID to be processed later on certain events
    /// for a particular Coverage/Program/state.  The CPS is used to group
    /// a set of controls
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function addDropDownForOnChangeCopyMatchSibling(coverageProgramState, dropDownID)
	{   
	    var arrDropDownCPSTarget;
	    var objTarget;
	
	    //check if the array is initialized
	    //if not, initialize it
	    if (arrDropDownTargetsByCoverageProgramStateMatchSibling == null)
	    {
	        //alert("Adding new object for: " + coverageProgramState);
	        objTarget = new dropDownTarget(coverageProgramState);
	        objTarget.AddTargetDrownDownChild(dropDownID);
	        
	        //alert("Adding new object to array");
	        arrDropDownTargetsByCoverageProgramStateMatchSibling= new Array(1);
	        arrDropDownTargetsByCoverageProgramStateMatchSibling[0] = objTarget;
	        
	    }
	    else
	    {
	        
	        //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateMatchSibling.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateMatchSibling[i];
	            
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget == null)
	        {
	            //Does not exist, create it
	            objTarget = new dropDownTarget(coverageProgramState);
	            arrDropDownTargetsByCoverageProgramStateMatchSibling.push(objTarget);
	            
	        }
	    
	        //Target list tracks 
	        objTarget.AddTargetDrownDownChild(dropDownID);
	        
	    }	    
	    
	}
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// Sets the specific drop down ID to be used for processing later on certain events
    /// for a particular Coverage/Program/state.  The CPS is used to group
    /// a set of controls
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setDropDownTargetMatchSibling(coverageProgramState, dropDownID)
	{	
	    var objTarget;
	
	    //check if the array is initialized
	    //if not, initialize it
	    if (arrDropDownTargetsByCoverageProgramStateMatchSibling == null)
	    {
	        objTarget = new dropDownTarget(coverageProgramState);
	        objTarget.targetDropDownID = dropDownID;
	        
	        arrDropDownTargetsByCoverageProgramStateMatchSibling= new Array(1);
	        arrDropDownTargetsByCoverageProgramStateMatchSibling[0] = objTarget;
	        
	        //alert(arrDropDownTargetsByCoverageProgramStateMatchSibling[0]);
	        
	    }
	    else
	    {
	        //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateMatchSibling.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateMatchSibling[i];
	            
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget == null)
	        {
	            //Does not exist, create it
	            objTarget = new dropDownTarget(coverageProgramState);
	            //alert("Prepush length: " + arrDropDownTargetsByCoverageProgramStateMatchSibling.length);
	            arrDropDownTargetsByCoverageProgramStateMatchSibling.push(objTarget);	       
	            //alert("Postpush length: " + arrDropDownTargetsByCoverageProgramStateMatchSibling.length);     
	        }
	        	         
	        //Target list tracks 
	         objTarget.targetDropDownID = dropDownID;
	         
	        
	    }	    
	}
	
    /// <author>John Shewchuk</author>
    /// <date>06/01/2007</date>
    /// <summary>
    /// The event that is used to set a particular Coverage/Program/State
    /// on a pariticular control.  The culimation of setting the sender/target (setDropDownTargetMatchSibling)
    /// for a group of listeners (addDropDownForOnChangeCopyMatchSibling)
    /// </summary>
    /// <remarks>Generally added during server side processing to specific control</remarks>
	function setTargetsToSelectedIndexMatchSibling(sender, coverageProgramState)
	{
	
	    var objTarget;
	    
	    if (arrDropDownTargetsByCoverageProgramStateMatchSibling != null)
	    {
	         //Check the array for the specified coverage/program/state
	        for (i = 0; i < arrDropDownTargetsByCoverageProgramStateMatchSibling.length; i++)
	        {
	            objTargetItem = arrDropDownTargetsByCoverageProgramStateMatchSibling[i];
	           
	           
//	            alert(arrDropDownTargetsByCoverageProgramStateMatchSibling[0]);
//	            alert(objTargetItem);
//	            alert("Target Key: " + objTargetItem.targetKey);
//	            alert("Target Key: " + coverageProgramState);
	            if (objTargetItem.targetKey == coverageProgramState)
	            {
	                objTarget = objTargetItem;
	                break;
	            }
    	    
	        }

	        //if the coverage/program/state does not exist in the arrary, create an object	        
	        if (objTarget != null)
	        {	            
	            //alert(sender.selectedIndex);
	            //Exists, execute the method
	            objTarget.SetDropDownsToSelectedIndex(sender, sender.selectedIndex);             
	        }
	        else
	        {
	            alert("Target is null");
	        }
	        
	    }
	}
	
	var enableValidatorVar = new Function("sender", "validatorID", "enableValidator(sender, validatorID);");
	var disableValidatorVar = new Function("sender", "validatorID", "disableValidator(sender, validatorID);");

