/**
* Copyright (c) InOut TV 2008
* @file configuration.js
* @author Albert Daurell
* @brief IOConfiguration utils
* @date 07/03/08
*/

var IOConfiguration = {
    
    _cselect : null,
    _ccombo : null,
    
    init: function(lselect,lcombo)
    {
      if(lselect!=null && typeof lselect == "string") lselect=IOLayers.getLayerById(lselect);
	  if(lcombo!=null && typeof lcombo == "string") lcombo=IOLayers.getLayerById(lcombo);
	    
      IOConfiguration._cselect=lselect;
      IOConfiguration._ccombo=lcombo;
      
      if(lcombo==null || lselect==null) return;
      
      IOConfiguration.doClean();
      // Ensure last config is loaded
      IOConfig.loadConfig();
      var ch=IOConfig.getParam("channels");
      if(typeof ch == "string")
      {
        ch=ch.split(",");
        for(var i=0;i<ch.length;i++)
        {
            var curId=ch[i];
            for(var j=0;j<IOConfiguration._cselect.length;j++)
            {
                if(IOConfiguration._cselect.options[j].value*1==curId)
                {
                    var mOption = document.createElement('option');
                        mOption.text = IOConfiguration._cselect.options[j].text;
                        mOption.value = IOConfiguration._cselect.options[j].value;
                    try 
                    {
                        IOConfiguration._ccombo.add(mOption, null); 
                    }
                    catch(ex) 
                    {
                        IOConfiguration._ccombo.add(mOption);
                    }
                }
            }
        }
      }
    },
    
    doAdd: function()
    {
        if(!IOConfiguration._cselect) return;
        if(IOConfiguration._cselect.selectedIndex>=0)
        {
            var currentOpt=IOConfiguration._cselect.options[IOConfiguration._cselect.selectedIndex];
            for(var i=0;i<IOConfiguration._ccombo.length;i++)
            {
                if(IOConfiguration._ccombo.options[i].value==currentOpt.value)
                {
                    return;
                }
            }
            var mOption = document.createElement('option');
                mOption.text = currentOpt.text;
                mOption.value = currentOpt.value;
            try 
            {
                IOConfiguration._ccombo.add(mOption, null); 
            }
            catch(ex) 
            {
                IOConfiguration._ccombo.add(mOption);
            }
  
        }
        else alert("Para aņadir un canal a la lista debes seleccionarlo primero.");
    },
    
    doClean: function()
    {
        if(!IOConfiguration._ccombo) return;
        for (var i=IOConfiguration._ccombo.length-1;i>=0;i--)
        {
            IOConfiguration._ccombo.remove(i);
        }
    },
    
    doRemove: function()
    {
        if(!IOConfiguration._ccombo) return;
        if(IOConfiguration._ccombo.selectedIndex>=0)
        {
            for (var i=IOConfiguration._ccombo.length-1;i>=0;i--)
            {
                if (IOConfiguration._ccombo.options[i].selected) 
                {
                    IOConfiguration._ccombo.remove(i);
                }
            }
        }
        else alert("Para quitar un canal de la lista debes seleccionarlo primero.");
    },
    
    doUp: function()
    {
        if(!IOConfiguration._cselect) return;
        var swap=false;
        for(var i=0;i<IOConfiguration._ccombo.options.length;i++)
        {
                if(IOConfiguration._ccombo.options[i].selected)
                {
                    if(i != 0 && !IOConfiguration._ccombo.options[i-1].selected)
                    {
                        IOConfiguration.swapOptions(i,i-1);
                        swap=true;
                    }
                }
        }
        if(!swap) alert("Para cambiar el orden de un canal en la lista debes seleccionarlo primero.");
    },
    
    doDown: function()
    {
        if(!IOConfiguration._cselect) return;
        var swap=false;
        for(var i=IOConfiguration._ccombo.options.length-1;i>=0;i--)
        {
            if(IOConfiguration._ccombo.options[i].selected)
            {
                if(i !=(IOConfiguration._ccombo.options.length-1) && ! IOConfiguration._ccombo.options[i+1].selected)
                {
                    IOConfiguration.swapOptions(i,i+1);
                    swap=true;
                }
            }
        }
        if(!swap) alert("Para cambiar el orden de un canal en la lista debes seleccionarlo primero.");
    },
    
    swapOptions: function(i,j)
    {
        var opts = IOConfiguration._ccombo.options;
        var i_selected = opts[i].selected;
        var j_selected = opts[j].selected;
        var temp1 = new Option(opts[i].text, opts[i].value, opts[i].defaultSelected, opts[i].selected);
        var temp2= new Option(opts[j].text, opts[j].value, opts[j].defaultSelected, opts[j].selected);
        opts[i] = temp2;
        opts[j] = temp1;
        opts[i].selected = j_selected;
        opts[j].selected = i_selected;
    },
    
    saveOptions: function()
    {
        try
        {
            var channels=Array();
            for(var i=0;i<IOConfiguration._ccombo.options.length;i++)
            {
                channels[channels.length]=IOConfiguration._ccombo.options[i].value;
            }
            if(channels.length>0)
            {
                IOConfig.setParam("channels",channels,true);  
            }
        }
        catch(ex)
        {
            // Problems detected
        }
    }
   
};