﻿// UtilScript.js
// -----------------
// Utilities functions

function SelectAllCheckBoxes(CheckBoxControl , GridName) 
{
    if (CheckBoxControl.checked == true) 
    {
        var i;
        for (i=0; i < document.forms[0].elements.length; i++) 
        {
            if ((document.forms[0].elements[i].type == 'checkbox') && 
            (document.forms[0].elements[i].name.indexOf(GridName) > -1) &&
            !document.forms[0].elements[i].disabled ) 
            {
                document.forms[0].elements[i].checked = true;
            }
        }
     } 
    else 
    {
        var i;
        for (i=0; i < document.forms[0].elements.length; i++) 
        {
            if ((document.forms[0].elements[i].type == 'checkbox') && 
            (document.forms[0].elements[i].name.indexOf(GridName) > -1) &&
            !document.forms[0].elements[i].disabled ) 
            {
                document.forms[0].elements[i].checked = false;
            }
        }
    }
 }
 
 function ResizeListBox( listBoxControl, divID, defaultItem )
 {
    var uxDiv = document.getElementById( divID );
    if( listBoxControl.options.length < defaultItem )
    {
       listBoxControl.size = defaultItem; 
    }
    else
    {
       listBoxControl.size = listBoxControl.options.length;
    }
        
        
    SortOptions( listBoxControl );
    listBoxControl.style.width = '';
    var widthDiv;
    if(listBoxControl.clientWidth <= uxDiv.clientWidth )
    {
        result = uxDiv.clientWidth;        
        listBoxControl.style.width = result + 'px';
        result -= 16;
        widthDiv = result + 'px';
    }
    else
    {
        listBoxControl.style.width = '';
        widthDiv = listBoxControl.clientWidth + 'px';
    }
    var browser=navigator.appName;
    
    if( browser != "Microsoft Internet Explorer" )
    {
        var uxDivTemp = uxDiv.getElementsByTagName( 'div' ).item(0);
        uxDivTemp.style.width = widthDiv;
        uxDivTemp.style.overflow = 'hidden';
        uxDiv.style.border = 'solid 1px #000000';
    }
 }
 
 function fnMoveItems(lstbxFrom,lstbxTo, divFromID, divToID, defaultItem, hiddenFieldID, controlIDSerialized)
 {
     var varFromBox = document.getElementById(lstbxFrom);
     var varToBox = document.getElementById(lstbxTo); 
     if ((varFromBox != null) && (varToBox != null)) 
     { 
          if(varFromBox.length < 1) 
          {
           alert('There are no items in the source ListBox');
           return false;
          }
          if(varFromBox.options.selectedIndex == -1) // when no Item is selected the index will be -1
          {
           alert('Please select an Item to move');
           return false;
          }
          while ( varFromBox.options.selectedIndex >= 0 ) 
          { 
               var newOption = new Option(); // Create a new instance of ListItem 

               newOption.text = varFromBox.options[varFromBox.options.selectedIndex].text; 
               newOption.value = varFromBox.options[varFromBox.options.selectedIndex].value; 
               varToBox.options[varToBox.length] = newOption; //Append the item in Target Listbox

               varFromBox.remove(varFromBox.options.selectedIndex); //Remove the item from Source Listbox 

          }
          
          ResizeListBox( varFromBox, divFromID, defaultItem );
          ResizeListBox( varToBox, divToID, defaultItem );
                    
          SaveToHiddenField( hiddenFieldID, Serialized(document.getElementById(controlIDSerialized)) );
     }
     return false; 
 } 
 
 function Serialized( listBoxControl )
 {
    var result = '';
    
    for(var i = 0; i < listBoxControl.length; i++)
    {
        if( i != 0 )
            result += ',';
        
        result += listBoxControl.options[i].value;
    }
    return result;
 }
 
 function SaveToHiddenField( hiddenID, val )
 {
    var hidden = document.getElementById( hiddenID );
    hidden.value = val;
 }
 
 function compareOptionText(a,b)
 {
    return a.text!=b.text ? a.text<b.text ? -1 : 1 : 0;
 }
 
 function SortOptions(list)
 {
    var items = list.options.length;
    // create array and make copies of options in list
    var tmpArray = new Array(items);
    for ( i=0; i<items; i++ )
        tmpArray[i] = new Option(list.options[i].text,list.options[i].value);
    // sort options using given function
    tmpArray.sort(compareOptionText);
    // make copies of sorted options back to list
    for ( i=0; i<items; i++ )
        list.options[i] = new Option(tmpArray[i].text,tmpArray[i].value);
 }

