//***********************************************************************
// Classe Javascript Gerant la selection par 2 listes HTML SELECT
//***********************************************************************
/*verif  utf-8 : 中文*/
var _BISELECT_JS = 2.04;

//--------------------------------------------------
function clBiselect()
{
    this.pseudoValue = "pseudo";
    this.select2select = biselect_Select2Select;
    this.triSelect = biselect_TriSelect;
}

var biselect = new clBiselect();


//--------------------------------------------------
function biselect_Select2Select(oSelFrom, oSelTo)
{
    if( is.ie5up || is.moz )
    {
	    var oLast = oSelTo.childNodes.item(oSelTo.childNodes.length-1);
	    for(var i = (oSelFrom.options.length-1); i >= 0; i-=1)
	    {
		    var opt = oSelFrom.options.item(i);
		    if( opt.selected && this.pseudoValue != opt.value )
		    {
			    oSelTo.insertBefore(oSelFrom.removeChild(opt), oLast);
			    oLast = opt;
		    }
	    }
	}
	else
	{
	    var oLast = oSelTo.options[oSelTo.options.length - 1];
	    for(var i = (oSelFrom.options.length-1); i >= 0; i-=1)
	    {
		    var opt = oSelFrom.options[i];
		    if( opt.selected && this.pseudoValue != opt.value )
		    {
			    oSelTo.options.length = oSelTo.options.length + 1;																			
    			
			    var lvOpt2 = new Option();						
			    oSelTo.options[oSelTo.options.length-1] = lvOpt2;				
			    lvOpt2.value = oLast.value;
			    lvOpt2.text = oLast.text;								
    		
			    var lvOpt2 = new Option();						
			    oSelTo.options[oSelTo.options.length-2] = lvOpt2;				
			    lvOpt2.value = opt.value;
			    lvOpt2.text = opt.text;
    														
			    for(var j=i; j < oSelFrom.options.length-1; j++)
			    {
				    oSelFrom.options[j].text = oSelFrom.options[j+1].text;
				    oSelFrom.options[j].value = oSelFrom.options[j+1].value;					
			    }
			    oSelFrom.options.length = oSelFrom.options.length-1;
			    oSelTo.options[oSelTo.options.length-2].selected = true;	
			    oSelTo.options[oSelTo.options.length-1].selected = false;	
		    }
	    }
	}
}
//--------------------------------------------------
function biselect_TriSelect(oSel, bDown)
{
    if( is.ie5up || is.moz )
    {
	    var iOptSel = null;
	    var iCompt = 0;
	    var iNb = oSel.options.length;
	    for(var i = (iNb-2); i >= 0; i-=1)
	    {
		    var opt = oSel.options.item(i);
		    if( opt.selected  )
		    {
			    iOptSel = i;
			    iCompt ++;
			    if( iCompt > 1 )
			    {
				    alert("Vous ne pouvez faire monter ou descendre qu'un seul élément à la fois.");
				    return;
			    }
		    }
	    }
	    if( 1 == iCompt )
	    {
		    if( bDown )
		    {
			    if( iOptSel < iNb-2 )
			    {
				    var oRef = oSel.options.item(iOptSel);
				    var oAfter = oSel.options.item(iOptSel+2);
				    oSel.insertBefore(oSel.removeChild(oRef), oAfter);
			    }
		    }
		    else // up
		    {
			    if( iOptSel > 0 )
			    {
				    var oRef = oSel.options.item(iOptSel);
				    var oAfter = oSel.options.item(iOptSel-1);
				    oSel.insertBefore(oSel.removeChild(oRef), oAfter);
			    }
		    }
	    }
	}
	else
	{
	    for(var i=0; i < oSel.options.length; i++)
	    {
		    if(oSel.options[i].selected)
		    {
			    var iSwap = (bDown) ? i+1 : i-1;
			    if( iSwap < 0  || iSwap >= oSel.options.length )
			    {
				    return;
			    }
    			
			    var lvOpt = oSel.options[i];
			    var lvOptValue = lvOpt.value;
			    var lvOptText = lvOpt.text;
			    var lvOpt2 = oSel.options[iSwap];

			    if( this.pseudoValue == lvOpt.value  
				    || 
				    this.pseudoValue == lvOpt2.value )
			    {
				    return;
			    }
    			
			    var lvOpt3 = new Option();						
			    oSel.options[i] = lvOpt3;				
			    lvOpt3.value = lvOpt2.value;
			    lvOpt3.text = lvOpt2.text;								

			    var lvOpt3 = new Option();						
			    oSel.options[iSwap] = lvOpt3;				
			    lvOpt3.value = lvOptValue;
			    lvOpt3.text = lvOptText;								

			    oSel.options[i].selected = false;
			    oSel.options[iSwap].selected = true;
    			
			    return;
		    }
	    }
    }	
}



