function SetActivePane(eventSource)
{ 
  // Get references to Pane tops
  var indexPaneTop  = document.getElementById("indexPaneTop");
  var searchPaneTop = document.getElementById("searchPaneTop");
  var entryPaneTop  = document.getElementById("entryPaneTop");
  // Get references to Panes
  var indexPane   = document.getElementById("index");
  var searchPane  = document.getElementById("search");
  var entryPane   = document.getElementById("entry");

  // Make sure the selected class is removed from all pane tops 
  indexPaneTop.className  = indexPaneTop.className.replace(" naviButtonSelected", "");
  searchPaneTop.className = searchPaneTop.className.replace(" naviButtonSelected", "");
  entryPaneTop.className  = entryPaneTop.className.replace(" naviButtonSelected", "");     
  
  indexPane.className   = indexPane.className.replace("hidden", "");
  searchPane.className  = searchPane.className.replace("hidden", "");
  entryPane.className   = entryPane.className.replace("hidden", "");
  
  // Index pane clicked
  if(eventSource.id == "naviButtonIndex")
  {
    indexPaneTop.className = indexPaneTop.className + " naviButtonSelected";       
    
    searchPane.className = searchPane.className + " hidden";
    entryPane.className =  entryPane.className + " hidden";
  }
  // Search pane clicked
  else if (eventSource.id == "naviButtonSearch")
  {
    searchPaneTop.className = searchPaneTop.className + " naviButtonSelected";   
      
    indexPane.className = indexPane.className + " hidden";    
    entryPane.className = entryPane.className + " hidden";
  }
  // Entry pane clicked
  else if (eventSource.id == "naviButtonEntry")
  {
    entryPaneTop.className = entryPaneTop.className + " naviButtonSelected";
    
    indexPane.className = indexPane.className + " hidden";
    searchPane.className = searchPane.className + " hidden";    
  }
  
  // Remove focus from selected pane to make the pane and pane top appear nice
  eventSource.blur();
}

function ClickButton(buttonID, e)
{
  if (e)  //firefox etc.
  {
    if(e.keyCode==13)
    {
      document.getElementById(buttonID).click();
      e.cancelBubble = true;
      e.returnValue = false;
      return false
    }
  }
  else if (window.event)  //IE etc.
  {
    if(window.event.keyCode==13)
    { 
      document.getElementById(buttonID).click();
      window.event.cancelBubble = true;
      window.event.returnValue = false;
      return false
    }
  }
  return true; 
}

/////////////////////////////////////////////////////////////////////////////////////////
//
// Functions for advanced search
//
/////////////////////////////////////////////////////////////////////////////////////////
function ToggleVisible(id)
{
  var element = document.getElementById(id);
  
  if(element == null)
  { 
    alert("function ToggleVisible: Can not find element with id [" + id + "]");
  }
  else
  { 
    if(element.className.indexOf("hidden") >= 0)  
      element.className = element.className.replace("hidden", "");
    else
     element.className = (element.className == "" ? "hidden" : element.className + " hidden");
  }  
}

function IsVisible(element)
{
  if(element == null)
  {
    alert("function IsVisible: argument element is null");
    return false;
  }
  
  return element.className.indexOf("hidden") < 0;    
}

function ToggleInnerText(id, initial, newText)
{
  var element = document.getElementById(id);
  
  if(element == null)
  { 
    alert("function ToggleInnerText: Can find element with id [" + id + "]");
    return;
  }
  
  if(element.innerText == initial)
    element.innerText = newText;
  else
    element.innerText = initial;
}

function ResetSelects(advancedSearchContainerID, lstFromID, lstToID, valueFromID, valueToID)
{
  var advancedSearchContainer = document.getElementById(advancedSearchContainerID);
    
  if(advancedSearchContainer == null)
  { 
    alert('advancedSearchContainer: ' + advancedSearchContainerID); 
    return;
  }
  
  // Only reset selects if we're turning advanced search off
  if(IsVisible(advancedSearchContainer))
    return;
  
  var lstFrom = document.getElementById(lstFromID);
  var lstTo = document.getElementById(lstToID);
  var valueFrom = document.getElementById(valueFromID);
  var valueTo = document.getElementById(valueToID);
  
  if(lstFrom == null || lstTo == null || valueFrom == null || valueTo == null)
  {
    alert('lstFrom: ' + lstFrom);
    alert('lstTo: ' + lstTo);
    alert('valueFrom: ' + valueFrom);
    alert('valueTo: '+ valueTo);
    return;
  }  
  
  // Clear selectes and hidden fields
  ClearSelect(lstFrom);
  ClearSelect(lstTo);
  valueFrom.value = "";
  valueTo.value = "";
 
  // Reload values into the first select and hidden field 
  for(var i = 0; i < valuesArray.length; i++)
  {
    var newelem = new Option(textsArray[i], valuesArray[i], false, false);
    lstFrom.options[lstFrom.options.length] = newelem;
    valueFrom.value += valuesArray[i] + "|";
  } 
}

function ClearSelect(select)
{
  for(var i = (select.options.length-1); i >= 0; i--)                       
    select.options[i] = null;  
}

function Multilist_UpdateButtonState(lstAllID, lstSelectedID, btnSelectID, btnDeselectID)
{
   var lstAll = document.getElementById(lstAllID);
   var lstSelected = document.getElementById(lstSelectedID);
   var btnSelect = document.getElementById(btnSelectID);
   var btnDeselect = document.getElementById(btnDeselectID);  
   
   // Set select button
   if(!lstAll.disabled && HasSelectedItem(lstAll))
    btnSelect.className = "chapterSelectorButton chapterSelectorButtonEnabled";      
   else   
    btnSelect.className = "chapterSelectorButton chapterSelectorButtonDisabled";   
    
   // Set deselect button
   if(!lstSelected.disabled && HasSelectedItem(lstSelected))
    btnDeselect.className = "chapterSelectorButton chapterDeselectorButtonEnabled";      
   else   
    btnDeselect.className = "chapterSelectorButton chapterDeselectorButtonDisabled";    
}

function HasSelectedItem(lst)
{
  for(var i = 0 ; i < lst.options.length; i++)                           
  {                                                                           
    if(lst.options[i].selected)
      return true;                    
  }
  return false;
}

function Multilist_Select(action, lstFromID, lstToID, valueFromID, valueToID)   
{                                                               
  // Add                                                      
  if (action.indexOf('add')!=-1)                              
  {                                                                             
    Multilist_Move(lstFromID, lstToID, valueFromID, valueToID)                 
  }                                                                            
  // Remove                                                                    
  if (action.indexOf('remove')!=-1)                                            
  {                                                                            
    Multilist_Move(lstToID, lstFromID, valueToID,valueFromID)                
  }                                                                      
}                                                                            

function Multilist_Move(fromID, toID, valueFromID, valueToID)                      
{
  var objFrom = document.getElementById(fromID);
  var objTo   = document.getElementById(toID);
  var objFromValue = document.getElementById(valueFromID);
  var objToValue   = document.getElementById(valueToID);
      
  if ( objFrom==null || objTo==null || objFromValue==null || objToValue==null )
  {                                                                              
      alert('objFrom: ' + objFrom);                                    
      alert('objTo: ' + objTo);                                        
      alert('objFromValue: ' + objFromValue);                          
      alert('objToValue: '+ objToValue);                               
      return;                                                          
  }

  for(var i = 0; i < objFrom.options.length; i++)                      
  {                                                                    
     if (objFrom.options[i].selected)                                   
     {       
       if(objFrom.options[i].value == "")
         return;
       
       // PAV specific: Remove the dummy item if it exists
       if(objTo.options.length == 1)
       {
         for(var j = objTo.options.length-1; j >= 0 ; j--)
         {
           if(objTo.options[j].value == "")
            objTo.options[j] = null;
         }
       }       
                                                                
       var newelem = new Option(                                        
       objFrom.options[i].text,   // The text property                  
       objFrom.options[i].value,  // The value property                 
       false,                     // The defaultSelected property       
       false)                     // The selected property              
       
       // Add to added list                                             
       objTo.options[objTo.options.length] = newelem;                   
       objToValue.value += objFrom.options[i].value+'|';       
      }                                                                        
    }                                                                        
                                                                               
    // Remove from old list                                                  
    for(var i = (objFrom.options.length-1); i >= 0; i--)                     
    {      
      if (objFrom.options[i].selected)                                         
      {                                                                        
       objFrom.options[i] = null;                                             
      }      
    }     
    
    objFromValue.value = '';                                                    
    for( var i = 0 ; i < objFrom.options.length; i++)                           
    {                                                                           
      objFromValue.value += objFrom.options[i].value+'|';                       
    }
    
    // Set enabled disabled state
    objFrom.disabled = objFrom.options.length == 0;
    objTo.disabled = objTo.options.length == 0;
}  


/////////////////////////////////////////////////////////////////////////////////////////
//
// Functions for setting text size
//
/////////////////////////////////////////////////////////////////////////////////////////
var sizes = new Array()
sizes[0] = "70%"
sizes[1] = "80%"
sizes[2] = "90%"
sizes[3] = "100%"
sizes[4] = "125%"
sizes[5] = "150%"
sizes[6] = "175%"
var currentSize=3;
function SizeUp()
{
  setSize(currentSize+1);
}

function SizeDown()
{
  setSize(currentSize-1);
}

function SizeNormal()
{
  setSize(3);
}

function setSize(size)
{
  if(size<0)
    return;
    
  if(size >= sizes.length)
    return;

  var content = document.getElementById("contentAreaWide");
  if(content != null) 
  { 
    content.style.fontSize=sizes[size];
    currentSize = size;
  }
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) 
      return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function LoadTextSize()
{
  currentSize =readCookie("textSize");
  if(currentSize==null || "")
    currentSize=3;
    
  setSize(Number(currentSize));
}

function SaveTextSize()
{
  var content = document.getElementById("contentAreaWide");
  if(content != null) 
    createCookie("textSize",currentSize,300);
}

/////////////////////////////////////////////////////////////////////////////////////////
//
// Functions for PDF creation
//
/////////////////////////////////////////////////////////////////////////////////////////
var select = true;

function ToggleSelectAll(checkBoxIDArray, buttonID, buttonTextSelect, buttonTextDeSelect)
{
  var button = document.getElementById(buttonID);
    
  for(var i = 0 ; i < checkBoxIDArray.length; i++)  
  {
    var currentCheckbox = document.getElementById(checkBoxIDArray[i]);  
    currentCheckbox.checked = select;
  }
  
  button.innerHTML = (select ? buttonTextDeSelect : buttonTextSelect);  
  select = !select;
}
