
// Parent = "head", "body"
// Type = "text/javascript", "text/css"
function LoadScript(SourceURL, Type , Parent)
{
   var Element = document.createElement("script");
   Element.type= Type;
   Element.src = SourceURL;
   document.getElementsByTagName(Parent)[0].appendChild(Element);
/*
// Assumes ScriptManager is loaded
            var ScriptLoader = Sys._ScriptLoader.getInstance();
            ScriptLoader.queueScriptReference(SourceURL);
            ScriptLoader.loadScripts(0);
*/
}

function FindEntryInArray(Key, Array)
{
    var Location = -1;
    
    for (Counter = 0 ; Counter < Array.length ; Counter = Counter + 1)
    {
       if ( Array[Counter] == Key )
       {
          Location = Counter ;
          break ;
       }
    }
    return Location;
}

function FillADivList(Options,Name,ClickEventHandler, MouseOverHandler, MouseOutHandler,TextClassName)
{
   var DivBox = document.getElementById(Name);
     
   var Length = Options.length ;
   
   var TheOption ;

   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
        var Text = Options[Counter];
         
        var RowDiv = document.createElement('div');

        RowDiv.className = TextClassName;
        RowDiv.innerHTML = Text;
        RowDiv.id = Text ;
        
        if ( MouseOverHandler != "" )
            RowDiv.onmouseover = new Function(MouseOverHandler+"(this)") ;
        if ( MouseOutHandler != "" )
            RowDiv.onmouseout = new Function(MouseOutHandler+"(this)") ;
        if ( ClickEventHandler != "" )
            RowDiv.onclick = new Function(ClickEventHandler+"(this)");

        DivBox.appendChild(RowDiv);
   }
}


function ResetElementClass(ClassID,ClassName)
{
  var Element = document.getElementById(ClassID);

  Element.className = ClassName;
}

// May Be IE Only
function ReadFile(FilePath)
{
    var String = '';
    var FSO =  new ActiveXObject("Scripting.FileSystemObject");
    var File = FSO.GetFile(FilePath); // Open the file for reading
    if(File!=-1) // If the file has been successfully opened
    {
        String = FSO.ReadAll(File);   // Read in the entire file
        FSO.Close;                         // Close the file       
    }
    return String ;
}

function DisplayAlertBox(Caption, Message, Top,Left,Width,Height)
{
   SetTextContents('AlertCaption',Caption) ;
   SetTextContents('AlertMsg',Message) ;
   PutPropertyIntoStyleSheet(0, 'AlertBox', 'top', Top);
   PutPropertyIntoStyleSheet(0, 'AlertBox', 'left', Left);
   PutPropertyIntoStyleSheet(0, 'AlertBox', 'width', Width);
   PutPropertyIntoStyleSheet(0, 'AlertBox', 'height', Height);
   SetElementVisibility('AlertBox','visible') ;
}
function HideAlertBox()
{
    SetElementVisibility('AlertBox','hidden') ;
}

// State = 'visible' or 'hidden'
function SetElementVisibility( Name, State )
{
  var Element ;
  
  Element = document.getElementById( Name )
  Element.style.visibility = State ;
}

function SetImageSource(CachedImages,ElementName, ImageListEntry)
{
  var Element = document.getElementById( ElementName )
  Element.src = CachedImages[ImageListEntry].src;
}

function ConvertElementToImage(ElementName,LeftLocation, ClassName, CachedImages, ImageListEntry)
{
  SetOuterHTML(ElementName,'<img id="' + ElementName + '" src="">');
  PutPropertyIntoStyleSheet(0, ClassName, 'left', LeftLocation);
  SetImageSource(CachedImages,ElementName, ImageListEntry);
}
function AddElement(CachedImages,ParentName,ChildName, ChildType, ChildClass, ImageListEntry)
{
  var Parent = document.getElementById(ParentName);

  var Element = document.createElement(ChildType);
  Element.id = ChildName ;
  
  if (ChildClass != '')
    Element.className = ChildClass;
 
  if (ChildType == 'img')
  {
    if ( ImageListEntry >= 0)
        Element.src = CachedImages[ImageListEntry].src;
  }
  
  Parent.appendChild(Element);
}

function AddNewElement(ParentName,ChildName, ChildType, ChildClass, Contents)
{
  var Parent = document.getElementById(ParentName);

  var Element = document.createElement(ChildType);
  Element.id = ChildName ;
  
  if (ChildClass != '')
    Element.className = ChildClass;
   
  SetTheTextContents(Element,Contents) ;
  
  Parent.appendChild(Element);
}

function GetImageName(ImageSrc)
{
   var Name = "" ;
   
   var ClipStart ;
   var Location = ImageSrc.length;
   
   var CurrentChar = ImageSrc.substring(Location,Location-1) ;
   while( CurrentChar != "/")
   { 
      Location = Location - 1; 
      CurrentChar = ImageSrc.substring(Location,Location-1) ;
   } 
   ClipStart = Location;
   Name = ImageSrc.substring(ImageSrc.length,ClipStart);
    
   return Name ;
}

function FindImageInCache(CachedImages,Name)
{
  var Location = 0 ;
  var Length = CachedImages.length ;
         
   // First character in CachedImages[Counter].src is automatically converted
   // to upper case during caching, causing match to fail
   // Convert all names to lower case so match will work 
   Name = Name.toLowerCase() ;
   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
      var ImageName = GetImageName( CachedImages[Counter].src );
      ImageName = ImageName.toLowerCase() ;
      
      if ( ImageName == Name )
      {
         Location = Counter ;
         break ;
      }
   }
  
   return Location ;
}

function BuildImageCache(ImageList)
{
   var Length = ImageList.length ;
   var Images = new Array(Length);
   
   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
      Images[Counter] = new Image() ;
      Images[Counter].src = ImageList[Counter] ;
   }
  
   return Images ;
}

// Mode = "Hide", "Show"
function ShowElement(ElementName, Mode) 
{
	var Element = document.getElementById(ElementName);
	
	var Display ;
	if ( Mode == "Hide" )
	   Display = "none" ;
	if ( Mode == "Show" )
	   Display = "block" ;
	Element.style.display = Display;
}

function GetNumberEntriesInDivList(DivListName)
{
   var DivList = document.getElementById(DivListName);
   var NumberChildren = GetNumberChildren(DivList) ;
   return NumberChildren ;
}

function RemoveItemFromDivList(ItemToRemove,DivListName)
{
   var ParentDiv = GetParent(ItemToRemove);

   var DivList = document.getElementById(DivListName);

   DivList.removeChild(ParentDiv) ;
}

function  MoveItemToNewDivList(ItemToMove,DivListName, 
                                ClickEventHandler, MouseOverHandler, MouseOutHandler,
                                ParentClassName, SpacerClassName, ButtonClassName, ButtonImageHTML, TextClassName)
{  
      var ParentDiv = GetParent(ItemToMove) ;

      var RowDiv = ParentDiv.cloneNode(true);
      
      RowDiv.className = ParentClassName;
      
      var Column0Div = GetChild(RowDiv,0);
      Column0Div.className = SpacerClassName;
      Column0Div.innerHTML = GetSpacerFillerHTML();
     
      var Column1Div = GetChild(RowDiv,1) ;
      Column1Div.className = ButtonClassName;
      Column1Div.innerHTML = ButtonImageHTML;
      
      var Column2Div = GetChild(RowDiv,2) ;
      Column2Div.className = TextClassName;
     
      if ( MouseOverHandler != "" )
          RowDiv.onmouseover = new Function(MouseOverHandler+"(this)") ;
      if ( MouseOutHandler != "" )
          RowDiv.onmouseout = new Function(MouseOutHandler+"(this)") ;
      if ( ClickEventHandler != "" )
      {
          Column1Div.onclick = new Function(ClickEventHandler+"(this)");
          Column2Div.onclick = new Function(ClickEventHandler+"(this)");
      }
   
      var DivList = document.getElementById(DivListName);
 
      DivList.appendChild(RowDiv) ;
 
      var GrandParentDiv = GetParent(ParentDiv) ;

      GrandParentDiv.removeChild(ParentDiv) ;
}

function ClearItemsInDivList(Name)
{
   var DivList = document.getElementById(Name);

   var Length =GetDivListLength(DivList) ;
  
   if ( Length > 0 )
   {
      if (DivList.hasChildNodes())
      {
           while(Length >= 1)
           {
              DivList.removeChild( DivList.firstChild) ;
              Length =GetDivListLength(DivList) ;
           }
      }
   }
}

function FillDivList(Options,Name,GetElement,GetData, GetFormattedData, ConcatData, 
                     ClickEventHandler, MouseOverHandler, MouseOutHandler,
                     ParentClassName, SpacerClassName, ButtonClassName, ButtonImageHTML, TextClassName)
{
   ClearItemsInDivList(Name);

   var DivBox = document.getElementById(Name);
     
   var Length = Options.length ;
   
   var TheOption ;

   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
      if ( (GetElement != null) && (GetData != null) )
      {
        var Text = GetElement(Options[Counter]);
        var Data = GetData(Options[Counter]) ;
       
        var FormattedData = "" ;
        if (GetFormattedData != null)
        {
            FormattedData = GetFormattedData(Options[Counter]);
        }
        
        if (ConcatData == true)
        {
            Text = Text.concat(FormattedData) ;
        }
        
        var RowDiv = document.createElement('div');
        var Column0Div = document.createElement('div');
        var Column1Div = document.createElement('div');
        var Column2Div = document.createElement('div');

        RowDiv.className = ParentClassName;
      
        Column0Div.className = SpacerClassName ;
        Column0Div.innerHTML = GetSpacerFillerHTML();
        Column1Div.className = ButtonClassName;
        Column1Div.innerHTML = ButtonImageHTML;
        PutDataField(Column1Div,Data) ;
        Column2Div.className = TextClassName;
        Column2Div.innerHTML = Text ;
        Column2Div.title = Text ;
        PutDataField(Column2Div,Data) ;
      
        if ( MouseOverHandler != "" )
            RowDiv.onmouseover = new Function(MouseOverHandler+"(this)") ;
        if ( MouseOutHandler != "" )
            RowDiv.onmouseout = new Function(MouseOutHandler+"(this)") ;
        if ( ClickEventHandler != "" )
        {
            Column1Div.onclick = new Function(ClickEventHandler+"(this)");
            Column2Div.onclick = new Function(ClickEventHandler+"(this)");
        }

        RowDiv.appendChild(Column0Div) ;        
        RowDiv.appendChild(Column1Div) ;
        RowDiv.appendChild(Column2Div) ;
        DivBox.appendChild(RowDiv);
     }
   }
}

function SetVisibilityOfList( List, State )
{
  var Element ;
  for (Counter = 0 ; Counter < List.length ; Counter = Counter + 1)
  {
    Element = document.getElementById( List[Counter] )
    Element.style.visibility = State ;
  }
}

function AdjustElementStyle(ElementName,StyleProperty,Percent,StorageName) 
{
    var Element = document.getElementById( ElementName )
    var Storage = document.getElementById( StorageName )

   var TheValue ;
   if ( Percent > 0.0 )
    {
        TheValue = GetPropertyFromStyleSheet(0,Element.className, StyleProperty );
        PutPropertyIntoStyleSheet(0,Element.className, StyleProperty , TheValue * Percent );
        Storage.value = TheValue ;
    }
    else
    {
        TheValue = Storage.value ;
        PutPropertyIntoStyleSheet(0,Element.className, StyleProperty , TheValue );
    }
}

function GetPropertyFromStyleSheet(SheetNumber, StyleName, PropertyName)
{
    var Rules ;
    var Sheet = document.styleSheets[SheetNumber] ; 
    if (Sheet.rules)
    {
        Rules = Sheet.rules;// IE Only
    }
    else
    {
        Rules = Sheet.cssRules; 
    } 
   var NumberRules = Rules.length ;
   var Rule ;
   var Style ;
   var TheRule ;
   var TheStyleName = "." + StyleName ;
   
   for (Counter = 0 ; Counter < NumberRules ; Counter = Counter + 1)
   {
     Rule = Rules[Counter] ;
     Name = Rule.selectorText ;
     if (Name == TheStyleName )
     {
        TheRule = Rule ;
        break ;
     }
   }
   var PropertyValue = 0;
   if (TheRule != null)
   {
       Style = TheRule.style ;
           
       switch( PropertyName )
       {
            case 'top':
                PropertyValue = Style.top.split("px")[0];
            break ;
            case 'left':
                PropertyValue = Style.left.split("px")[0];
            break ;
            case 'width':
                PropertyValue = Style.width.split("px")[0];
            break ;
            case 'height':
                PropertyValue = Style.height.split("px")[0];
            break ;
            case 'paddingbottom':
                 PropertyValue = Style.paddingBottom.split("px")[0];
            break ;
            case 'visibility':
                 PropertyValue = Style.visibility;
            break ;
       }
   }
   
   return PropertyValue ;
}

function PutPropertyIntoStyleSheet(SheetNumber, StyleName, PropertyName, Value)
{
    var Rules ;
    var Sheet = document.styleSheets[SheetNumber] ; 
    if (Sheet.rules)
    {
        Rules = Sheet.rules;// IE Only
    }
    else
    {
        Rules = Sheet.cssRules; 
    } 
   var NumberRules = Rules.length ;
   var Rule ;
   var Style ;
   var TheRule ;
   var TheStyleName = "." + StyleName ;
   
   for (Counter = 0 ; Counter < NumberRules ; Counter = Counter + 1)
   {
     Rule = Rules[Counter] ;
     Name = Rule.selectorText ;
     if (Name == TheStyleName )
     {
        TheRule = Rule ;
        break ;
     }
   }
   var PropertyValue = 0;
   if (TheRule != null)
   {
       Style = TheRule.style ;
           
       switch( PropertyName )
       {
            case 'top':
                Style.top = Value + "px" ;
            break ;
            case 'left':
                Style.left = Value + "px" ;
            break ;
            case 'width':
                Style.width = Value + "px" ;
            break ;
            case 'height':
                Style.height = Value + "px" ;
            break ;
            case 'paddingbottom':
                Style.paddingBottom = Value + "px" ;
            break ;
            case 'visibility':
                Style.visibility = Value;
            break ;
       }
   }
}

function AddOptionToList(List, Text) 
{
   TheOption = new Option() ;
   TheOption.text = Text ;

   try
   {
     List.add( TheOption , null ) ;
   }
   catch(ex)
   {
      List.add( TheOption ) ; // IE only
   }
}

function GetSelectedItem(ListName)
{
   var List = document.getElementById(ListName);
   var SelectedIndex = List.selectedIndex;  
   var SelectedItem = "" ;
   
    if ( SelectedIndex >= 0 )
    {
         var Item = List.options[SelectedIndex] ;
         SelectedItem = Item.text ;
    }
    return SelectedItem;
}

function FillStringWithBlanks(NumberBlanks)
{
  var Fill = "" ;
  for (Counter = 0 ; Counter < NumberBlanks ; Counter = Counter + 1)
  {
    Fill = Fill.concat(" ") ;
  }
  return Fill ;
}
  
function CheckListVisibility(DivName,ListName)
{
   var Div = document.getElementById(DivName);
   var List = document.getElementById(ListName) ;
   
   if (List.options.length > 0)
   {
        Div.style.visibility = 'visible' ;
   }
   else
   {
    Div.style.visibility = 'hidden' ;
   }
}

function ClearTextBox(Name) 
{
   var Field = document.getElementById(Name);
   Field.value = "" ;
}

function PutInnerHTML(Name,Value)
{
   var Field = document.getElementById(Name);
   Field.innerHTML = Value ;
}

function PutFieldValue(Name,Value)
{
   var Field = document.getElementById(Name);
   Field.value = Value ;
}
function GetFieldValue(Name)
{
   var Field = document.getElementById(Name);
   return Field.value ;
}

function ClearField(Name) 
{
   var Field = document.getElementById(Name);
   Field.value = "" ;
}

function AddStringToField(Name,Value, GetData)
{
   var Field = document.getElementById(Name);
   var Argument = GetData(Value) ;
   var CurrentList = Field.value ;
   CurrentList = CurrentList.concat(Argument) ;
   CurrentList = CurrentList.concat(";");
   Field.value = CurrentList ;
}
function CheckFieldForString(Name,Value, GetData)
{
   var Field = document.getElementById(Name);
   var Argument = GetData(Value) ;
   var CurrentList = Field.value ;
   var Included = false ;
   var Location = CurrentList.indexOf(Argument) ;
   if (Location > -1)
      Included = true ;
      
   return Included ;
}

function RemoveAStringFromField(Name,SelectedItem)
{
   var SelectedValue = SelectedItem.split(":")[0] ;
   var Field = document.getElementById(Name);
   var CurrentList = Field.value ;
 
   var ObjectIDs = CurrentList.split(";") ;
   var Length = ObjectIDs.length;
   
   var ID ;
  CurrentList = "" ;
  if ( Length > 0)
   {
      for (Counter = 0 ; Counter < Length; Counter = Counter + 1)
      {
           ID = ObjectIDs[Counter] ;
           if ( (ID != SelectedValue) && (ID != "") )
           {
               CurrentList = CurrentList.concat(ID) ;
               CurrentList = CurrentList.concat(";");
           }
      }
   }
   
   Field.value = CurrentList ;
}

function RemoveStringFromField(Name,SelectedIndex)
{
   var Field = document.getElementById(Name);
   var CurrentList = Field.value ;
 
   var ObjectIDs = CurrentList.split(";") ;
   var Length = ObjectIDs.length;
   
   var ID ;
  CurrentList = "" ;
  if ( Length > 0)
   {
      ObjectIDs.splice(SelectedIndex,1) ;
      Length = Length - 1 ;
      for (Counter = 0 ; Counter < Length; Counter = Counter + 1)
      {
           ID = ObjectIDs[Counter] ;
           if (ID != "")
           {
               CurrentList = CurrentList.concat(ID) ;
               CurrentList = CurrentList.concat(";");
           }
      }
   }
   
   Field.value = CurrentList ;
}

function FillObjectsFromField(Name,PutData)
{
   var Field = document.getElementById(Name);
   var CurrentList = Field.value ;
   var ObjectIDs = CurrentList.split(";") ;
   var Length = ObjectIDs.length - 1 ;
   
   if (Length > 0)
   {
       var Objects = new Array();
       for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
       {
           var Entry = new Object() ;
           PutData(Entry, ObjectIDs[Counter]) ;
           Objects[Counter] = Entry ;
       }
       return Objects ;
   }
   
   return null ;
}

function FillObjectsFromTable(Name, PutElement, PutData)
{
   var Table = document.getElementById(Name);

   var Length = Table.rows.length ;
   
   var Objects = new Array();
   
   if ( (PutElement != null) && (PutData != null) )
   {
       if (Length > 0)
       {
           var Entry ;
           var Text ;
           var Data ;
           for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
           {

                Entry = new Object() ;
                Text = Table.rows[Counter].cells[1].innerHTML ;
                PutElement(Entry,Text) ;
                
                Data = Table.rows[Counter].cells[2].innerHTML ;
                PutData(Entry,Data) ;
                
                Objects[Counter] = Entry ;
           }
           
           return Objects ;
       }
   }
   
   return null ;
}

function FindItemInComboBox(Name,SearchString)
{
   var ComboBox = document.getElementById(Name);
   
   var Length = ComboBox.options.length ;
   
   var Item ;
   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
       if ( ComboBox.options[Counter].text == SearchString )
       {
         Item = ComboBox.options[Counter];
         break ;
       }
   }
   return Item ;
}

function FindRowInTable(Name,SearchString)
{
   var Table = document.getElementById(Name);
   
   var NumberRows = Table.rows.length ;
   
   var Row ;
   for (Counter = 0 ; Counter < NumberRows ; Counter = Counter + 1)
   {
      if ( Table.rows[Counter].cells[1].innerHTML == SearchString )
      {
         Row = Counter ;
         break;
      }
   }
   
   return Row ;
}

function AddRowToTable(Object,Name,GetElement, GetData, GetRating, FillerClass, RowEventHandler)
{
   var Table = document.getElementById(Name);

   var Cell;
   var Row ;
   var Node ;
  
  if ( (GetElement != null)  && (GetData != null) )
  {
    Row = Table.insertRow(Table.rows.length);

    if ( RowEventHandler != null )
    {
      Row.onclick = RowEventHandler ;
    }
      
    Cell = Row.insertCell(0);
    Cell.className = FillerClass ;
   
    var Text = GetElement(Object);
    Cell = Row.insertCell(1);
    Node = document.createTextNode(Text);
    Cell.appendChild(Node);

    var Data = GetData(Object) ;
    Cell = Row.insertCell(2);
    Node = document.createTextNode(Data);
    Cell.appendChild(Node); 
    
    if ( GetRating != null )
    {
        var Rating = GetRating(Object) ;
        Cell = Row.insertCell(3);
        Node = document.createTextNode(Rating);
        Cell.appendChild(Node);
    }    
  }
}

function RemoveRowFromTable(Name, SearchString)
{
  var Row = FindRowInTable(Name,SearchString);

  var Table = document.getElementById(Name);

  Table.deleteRow(Row) ;
}

function FillTable(Objects, Name, GetElement, GetData, GetRating, FillerClass, RowEventHandler)
{
   ClearTableRows(Name);
   
   var Length = Objects.length ;

   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
        AddRowToTable( Objects[Counter], Name, GetElement,GetData,GetRating, FillerClass, RowEventHandler ) ;
   }
}

function ClearTableRows(Name)
{
  var Table = document.getElementById(Name);
   
   var Length = Table.rows.length ;
   
   if ( Length > 0 )
   {
       for (Counter = Length - 1 ; Counter >= 0 ; Counter = Counter - 1)
       {
          Table.deleteRow(Counter) ;
       }
   }
}

function MoveItemFromComboBoxToComboBox(Box1Name, SelectedIndex, Box2Name, ParseText, ParseData, ConcatData)
{
   var ComboBox1 = document.getElementById(Box1Name);
   var ComboBox2 = document.getElementById(Box2Name);
      
   var SelectedItem = ComboBox1.options[SelectedIndex] ;
   var Text = SelectedItem.text ;
   var Data = SelectedItem.value ;
   
   if ( ParseText != null )
   {
        Text = ParseText(Text) ;
   }
        
   if ( ParseData != null )
   {
        Data = ParseData(Data) ;
   }
   
   if ( ConcatData == true )
   {
      Text = Text.concat(Data) ;
   }

   TheOption = new Option() ;
   TheOption.text = Text ;
   TheOption.value = Data ;

   try
   {
     ComboBox2.add( TheOption , null ) ;
   }
   catch(ex)
   {
      ComboBox2.add( TheOption ) ; // IE only
   }

   ComboBox1.remove(SelectedIndex) ;
}

function FillObjectsFromComboBoxAndData(Name, PutElement, PutData)
{
   var ComboBox = document.getElementById(Name);

   var Length = ComboBox.options.length ;
   
   var Objects = new Array();
   
   if ( (PutElement != null) && (PutData != null) )
   {
       if (Length > 0)
       {
           var Entry ;
           var Text ;
           var Data ;
           for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
           {
                Text = ComboBox.options[Counter].text ;
                Data = ComboBox.options[Counter].value ;

                Entry = new Object() ;
                PutElement(Entry,Text) ;
                PutData(Entry,Data) ;
                
                Objects[Counter] = Entry ;
           }
           
           return Objects ;
       }
   }
   
   return null ;
}

function FillComboBoxAndData(Options,Name,GetElement,GetData, GetFormattedData, ConcatData, OptionEventHandler, SelectDefault)
{
    ClearItemsInComboBox(Name,false,0);

   var ComboBox = document.getElementById(Name);
     
   var Length = Options.length ;
   
   var TheOption ;

   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
      if ( (GetElement != null) && (GetData != null) )
      {
        var Text = GetElement(Options[Counter]);
        var Data = GetData(Options[Counter]) ;
       
        var FormattedData = "" ;
        if (GetFormattedData != null)
        {
            FormattedData = GetFormattedData(Options[Counter]);
        }
        
        if (ConcatData == true)
        {
            Text = Text.concat(FormattedData) ;
        }
        
        TheOption = new Option() ;
        TheOption.text = Text ;
        TheOption.value = Data ;
      
        if ( OptionEventHandler != null )
        {
          TheOption.onclick = OptionEventHandler ;
        }

        ComboBox.options[Counter] = TheOption ;
      }
      else
      {
        ComboBox.options[Counter] = new Option( Options[Counter] ) ;
      }
   }
   if (SelectDefault == true)
   {
        ComboBox.selectedIndex = 0 ;
   }
}

function FillComboBox(Options,Name,GetElement)
{
    ClearItemsInComboBox(Name,false,0);

   var ComboBox = document.getElementById(Name);
     
   var Length = Options.length ;
   
   for (Counter = 0 ; Counter < Length ; Counter = Counter + 1)
   {
      if ( GetElement != null )
      {
        var Text = GetElement(Options[Counter]);
        
        ComboBox.options[Counter] = new Option( Text ) ;
      }
      else
      {
        ComboBox.options[Counter] = new Option( Options[Counter] ) ;
      }
   }
   ComboBox.selectedIndex = 0 ;
}

function SetSelectedIndexInComboBox(Name,Index)
{
   var ComboBox = document.getElementById(Name);
   
   ComboBox.selectedIndex = Index;
}

function FindSelectedItemInComboBox(Name)
{
   var ComboBox = document.getElementById(Name);
   
   var SelectedIndex = ComboBox.selectedIndex;
   
   if ( SelectedIndex >= 0)
   {
        return ComboBox.options[ SelectedIndex ].text ;
   }
   
   return "" ;
}

function ClearComboBoxInDiv(ControlName,DivName)
{
   var Div = document.getElementById(DivName) ;
   var Width = GetPropertyFromStyleSheet(0,Div.className, 'width' );
   ClearItemsInComboBox(ControlName,true,Width) ;
}

function ClearComboBox(Name) 
{
   var ComboBox = document.getElementById(Name);
   
   var Length = ComboBox.options.length ;
   
   if ( Length > 0 )
   {
       var LowerLimit = 0;
       var UpperLimit = Length - 1;
       for (Counter = UpperLimit ; Counter >= LowerLimit ; Counter = Counter - 1)
       {
          ComboBox.remove(Counter) ;
       }
   }
}

function ClearItemsInComboBox(Name,EmptyFirstLine, Width)
{
   var ComboBox = document.getElementById(Name);
   
   var Length = ComboBox.options.length ;
   
   if ( Length > 0 )
   {
       var LowerLimit = 0;
       var UpperLimit = Length - 1;
       if (EmptyFirstLine)
       {
           var Text = FillStringWithBlanks( Width ) ;         
            AddOptionToList(ComboBox,Text) ;   
       }
       for (Counter = UpperLimit ; Counter >= LowerLimit ; Counter = Counter - 1)
       {
          ComboBox.remove(Counter) ;
       }
   }
}

function DeleteSelectedItemInComboBox(Name)
{
   var ComboBox = document.getElementById(Name);
   
   var SelectedIndex = ComboBox.selectedIndex;

   if (SelectedIndex >= 0)
   {
        ComboBox.remove(SelectedIndex) ;
   }
}

function SetElementClass(Element,BaseClass, ExtensionClass)
{
	var NewClass = BaseClass;
	NewClass = NewClass.concat(' ') ;
	NewClass = NewClass.concat(ExtensionClass) ;
	Element.className = NewClass ;
}

function GetTheTextContents(Element)
{
  var TheElement ;
  var Contents ;
  
  var TheElement = document.getElementById(Element);

  Contents = TheElement.value ;
  
  return Contents ;
}

/* *********************** Browser Portability Methods ********************* */

function CheckBrowser()
{
  var ErrorLocation = "./ErrorPage.htm"
  
  var Name = navigator.appName ;
  var Version = parseFloat(navigator.appVersion.split(" ")[0]) ;
  
  if(navigator.appName == "WebTV")
  {
     window.location = ErrorLocation;
  }
  if(navigator.appName == "Netscape")
  {
     window.location = ErrorLocation;
  }
  if(navigator.appName == "Microsoft Internet Explorer")
  {
    if (Version >= 4.0)
        return ;
        
     window.location = ErrorLocation;
  }
}

function DetermineKeyCharacter(TheEvent)
{
  if (window.event) // IE
  {
     KeyNumber = TheEvent.keyCode ;
  }
  else if (TheEvent.which) // NN / FF / Opera
  {
     KeyNumber = TheEvent.which ;
  } 
  KeyCharacter = String.fromCharCode(KeyNumber) ;
  
  return KeyCharacter ;
}

function GetDivListLength(DivList)
{
  var Name = navigator.appName ;
  var Length ;
  
  if(Name == "Netscape")
  {
    Length = DivList.childNodes.length ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Length = DivList.children.length ;
  }
  return Length ;
}

function GetParent(Element)
{
  var Name = navigator.appName ;
  var Parent ;
  
  if(Name == "Netscape")
  {
    Parent = Element.parentNode ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Parent = Element.parentElement ;
  }
  return Parent ;
}

function GetChild(Parent,ChildNumber)
{
  var Name = navigator.appName ;
  var Child ;
  
  if(Name == "Netscape")
  {
    Child = Parent.childNodes[ChildNumber] ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Child = Parent.children[ChildNumber] ;
  }
  return Child ;
}

function GetNumberChildren(Parent)
{
  var Name = navigator.appName ;
  var NumberChildren ;
  
  if(Name == "Netscape")
  {
    NumberChildren = Parent.childNodes.length ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    NumberChildren = Parent.children.length ;
  }
  return NumberChildren ;
}

function GetDataField(Element)
{
  var Name = navigator.appName ;
  var Data ;
  
  if(Name == "Netscape")
  {
    Data = Element.getAttribute('DataFld') ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Data = Element.dataFld ;
  }
  return Data ;
}
function PutDataField(Element, Value)
{
  var Name = navigator.appName ;
  
  if(Name == "Netscape")
  {
    Element.setAttribute('DataFld',Value);
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Element.dataFld = Value ;
  }
}

function GetEventTarget(Event)
{
  var Name = navigator.appName ;
  var Target ;
  
  if(Name == "Netscape")
  {
    Target = Event.explicitOriginalTarget.nodeValue ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Target = Event.srcElement.id ;
  }
  return Target ;
}

function GetTextContents(Element)
{
  var Name = navigator.appName ;
  var Contents ;
  
  if(Name == "Netscape")
  {
    Contents = Element.textContent ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Contents = Element.text ;
  }
  return Contents ;
}

function SetTextContents(Element,Content)
{
  var Name = navigator.appName ;
  var TheElement ;
  
  var TheElement = document.getElementById(Element);

  if(Name == "Netscape")
  {
    TheElement.textContent = Content ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    TheElement.innerText = Content ;
  }
}

function SetTheTextContents(Element,Content)
{
  var Name = navigator.appName ;

  if(Name == "Netscape")
  {
    Element.textContent = Content ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Element.innerText = Content ;
  }
}

// Required because Firefox doesn't automatically fill blank spaces
function GetSpacerFillerHTML()
{
  var Filler ="&nbsp;" ;
  return Filler ;
}

function GetBrowserSizes() 
{
  var Sizes = new Array() ;
  
  var Name = navigator.appName ;

  if(Name == "Netscape")
  {
    Sizes["width"] = window.innerWidth;
    Sizes["height"] = window.innerHeight;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Sizes["width"] = document.body.clientWidth ;
    Sizes["height"] = document.body.clientHeight;
  }
  
  return Sizes ;
}

function SetWindowSizeHandler(Handler)
{
  var Name = navigator.appName ;

  if(Name == "Netscape")
  {
    window.onresize = Handler ;
  }
  if(Name == "Microsoft Internet Explorer")
  {
    //document.body.onresize = Handler;
   document.body.onresize = null;
  }
}

function SetOuterHTML(ElementName,HTMLString)
{
  var Name = navigator.appName ;

  var Element = document.getElementById( ElementName );

  if(Name == "Netscape")
  {
	var iRange = document.createRange();

	iRange.setStartBefore(Element);

	var strFragment = iRange.createContextualFragment(HTMLString);
	var sRangeNode = iRange.startContainer;

	iRange.insertNode(strFragment);
	sRangeNode.removeChild(Element);
  }
  if(Name == "Microsoft Internet Explorer")
  {
    Element.outerHTML = HTMLString ;
  }
}

function GetXMLDocument(XMLString)
{
  var Name = navigator.appName ;
  var XMLDoc ;
  
  if(Name == "Netscape")
  {
    var Parser=new DOMParser();
    XMLDoc=Parser.parseFromString(XMLString,"text/xml");
  }
  if(Name == "Microsoft Internet Explorer")
  {
    XMLDoc = new ActiveXObject("Microsoft.XMLDOM");
    XMLDoc.async="false";
    XMLDoc.loadXML(XMLString);
  }
  
  return XMLDoc ;
}

function ShowModalDialog(Name,URL,Width,Height)
{
  var Name = navigator.appName ;
  
  if(Name == "Netscape")
  {
     var Properties = "'width=" + Width + "px,height=" + Height + "px,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes ,modal=yes'";
     window.open(URL,Name,Properties);
  }
  if(Name == "Microsoft Internet Explorer")
  {
     var Properties = "dialogWidth:" + Width + "px;dialogHeight:" + Height + "px";
     window.showModalDialog(URL,Name,Properties)
  }
}

function GetBrowserType()
{
  var Name = navigator.appName ;
  var Type = "" ;
  
  if(Name == "Netscape")
  {
      Type = "FF";
  }
  if(Name == "Microsoft Internet Explorer")
  {
      Type = "IE";
  }
  return Type ;
}
