/* Scripts om opties in en tussen twee combo's te verplaatsen */

var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(deCombo, deTekst, deWaarde)
{	
  var nieuweOpt = new Option(deTekst, deWaarde);
  var comboLengte = deCombo.length;
  deCombo.options[comboLengte] = nieuweOpt;   
}

function addOptionExtra(deCombo, deTekst, deWaarde, deExtra)
{	
  var nieuweOpt = new Option(deTekst, deWaarde);
  var comboLengte = deCombo.length;
  deCombo.options[comboLengte] = nieuweOpt;
  deCombo.options[comboLengte].extra = deExtra;
}


function deleteOption(deCombo, deIndex)
{ 
  var comboLengte = deCombo.length;
  if(comboLengte>0)
  {
    deCombo.options[deIndex] = null;
  }
}

/* Iets verplaatsen van een combo naar een andere combo */
function moveOptions(theSelFrom, theSelTo)
{
  
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(theSelFrom.options[i].selected)
    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  // Add the selected text/values in reverse order.
  // This will add the Options to the 'to' Select
  // in the same order as they were in the 'from' Select.
  for(i=selectedCount-1; i>=0; i--)
  {
    addOption(theSelTo, selectedText[i], selectedValues[i]);
  }
  
  if(NS4) history.go(0);
}

/* Iets verwijderen van een combo1 uit combo2 */
function delTargetOptions(theSelFrom, theSelTo)
{
  
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i,j;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(theSelFrom.options[i].selected)
    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      // deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  // zoek de geselecteerde waarden in target combobox
  // indien gevonden, dan verwijderen
  for(i=selectedCount-1; i>=0; i--)
  {
	  for(j=0;j<theSelTo.length;j++){
		  if(selectedValues[i] == theSelTo.options[j].value){
			  deleteOption(theSelTo, j);
			  break;
		  }
	  }    
  }
  
  if(NS4) history.go(0);
}

/* Iets copiëren van een combo naar een andere combo */
function copyOptions(theSelFrom, theSelTo)
{
  
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(theSelFrom.options[i].selected)
    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      // deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  
  for(i=selectedCount-1; i>=0; i--)
  {
    addOption(theSelTo, selectedText[i], selectedValues[i]);
  }
  
  if(NS4) history.go(0);
}

/* Sorteren */
function sorteer(listbox) {	
	var x, y, holdertext, holdervalue;
	// Bubble Sort
	for(x = 0; x < listbox.options.length-1; x++) {
		for(y = 0; y < (listbox.options.length-x-1); y++) {
			if(Number(listbox.options[y].value) > Number(listbox.options[y+1].value)) {
				holdervalue = listbox.options[y+1].value;
				holdertext = listbox.options[y+1].text;
				listbox.options[y+1].text = listbox.options[y].text;
				listbox.options[y+1].value = listbox.options[y].value;
				listbox.options[y].text = holdertext;
				listbox.options[y].value = holdervalue;
			}
		}
	}
}

/* sorteren exclusief het eerste kantoor */
function sorteerExcl(listbox) {
	var x, y, holdertext, holdervalue;
	//Bubble Sort
	for(x = 1; x < listbox.options.length-1; x++) {
		for(y = 1; y < listbox.options.length-x; y++) {
			if(Number(listbox.options[y].value) > Number(listbox.options[y+1].value)) {
				holdervalue = listbox.options[y+1].value;
				holdertext = listbox.options[y+1].text;
				listbox.options[y+1].text = listbox.options[y].text;
				listbox.options[y+1].value = listbox.options[y].value;
				listbox.options[y].text = holdertext;
				listbox.options[y].value = holdervalue;
			}
		}
	}
}

/* Sorteren op label in plaats van value */
function sorteerText(listbox) {	
	var x, y, holdertext, holdervalue;
	// Bubble Sort
	for(x = 0; x < listbox.options.length-1; x++) {
		for(y = 0; y < (listbox.options.length-x-1); y++) {
			if(listbox.options[y].text > listbox.options[y+1].text) {
				holdervalue = listbox.options[y+1].value;
				holdertext = listbox.options[y+1].text;
				listbox.options[y+1].text = listbox.options[y].text;
				listbox.options[y+1].value = listbox.options[y].value;
				listbox.options[y].text = holdertext;
				listbox.options[y].value = holdervalue;
			}
		}
	}
}

function htmlEncode(s) {
	var str = new String(s);
	str = str.replace(/&/g, "&amp;");
	str = str.replace(/</g, "&lt;");
	str = str.replace(/>/g, "&gt;");
	str = str.replace(/"/g, "&quot;");
	return str;
}

/* iets verplaatsen binnen een combobox */
function move(deCombo,index,to) {
	var total = deCombo.options.length-1;
	if (index == -1) return false;
	if (to == +1 && index == total) return false;
	if (to == -1 && index == 0) return false;
	
	var items = new Array;
	var values = new Array;
	for (i = total; i >= 0; i--) {
		items[i] = deCombo.options[i].text;
		values[i] = deCombo.options[i].value;
	}
	for (i = total; i >= 0; i--) {
		if (index == i) {
			deCombo.options[i + to] = new Option(items[i],values[i], 0, 1);
			deCombo.options[i] = new Option(items[i + to], values[i + to]);
			i--;
		}
		else {
			deCombo.options[i] = new Option(items[i], values[i]);
		}
	}
	deCombo.focus();
}

/* iets verplaatsen naar boven binnen een combobox. Maakt gebruik van bovenstaande functie (nvdr) */
function movetotop(deCombo,index) {
	for (var i=index;i>0;i--){
		move(deCombo,i,-1);
	}
}

// inhoud combobox kopiëren van -> naar andere combobox
function copyCombo(cmbVan,cmbNaar){
	var vOption;
	cmbNaar.options.length = 0;
	for (var i=0;i<cmbVan.options.length;i++){
		vOption = cmbVan.options[i];
		cmbNaar.options[i] = new Option(vOption.text, vOption.value, false, false);	
	}
}

function concatCombo(deCombo){
	// lijst van de waarden uit combobox maken
	var strReturn = "";
	for (var i = 0; i <= deCombo.options.length-1; i++) { 
		strReturn += deCombo.options[i].value;
		// een "," toevoegen tussen de items, maar niet op het einde
		if (i != deCombo.options.length-1) strReturn += ",";
	}
	return strReturn;
}


/*
function getOptionLabel(deCombo){
	var strReturn = "";
	strReturn = deCombo.options[deCombo.options.selectedIndex].text;
	return strReturn;
}
*/

function getOptionLabel(deCombo,deIndex){
	var intIndex = -1;
	try{
		intIndex = parseInt(deIndex);
		}
		catch(e){}
	if (intIndex == -1 || !(intIndex)) {
		intIndex = deCombo.options.selectedIndex;
	}
	var strReturn = "";
	strReturn = deCombo.options[intIndex].text;
	return strReturn;
}

// De geselecteerde kopiëren van een combo naar een andere combo als ze er nog niet inzitten -> voorkomt dubbele waarden.
function copyOptionsIfNew(cmbFrom, cmbTo)
{  
	var deWaarde, deTekst;
	var cmbToLengte;
	var blnGevonden = false;	
	var cmbFromLengte = cmbFrom.length;
	var i,j;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
	for(i=cmbFromLengte-1; i>=0; i--)
	{
		if(cmbFrom.options[i].selected)
		{
			cmbToLengte = cmbTo.length;
			blnGevonden = false;
			deTekst = cmbFrom.options[i].text;
			deWaarde = cmbFrom.options[i].value;
						
			for(j=cmbToLengte-1;j>=0;j--)
			{
				//alert("value: " + cmbTo.options[j].value + " text: " + cmbTo.options[j].text + " de waarde: " + deWaarde + " de tekst: " + deTekst);
				if(cmbTo.options[j].value == deWaarde && cmbTo.options[j].text == deTekst)
				{
					blnGevonden = true;
					j = -1;
				}		
			}
			
			if (!blnGevonden)
			{
				var nieuweOpt = new Option(deTekst, deWaarde);
				cmbTo.options[cmbToLengte] = nieuweOpt; 
			}	  				
		}
	}  
	
	if(NS4) history.go(0);
}


