﻿function SwitchElement(fromID, toID, containerID, maxItems, maxItemsMessage, cannotSwitchValue, cannotSwitchMessage)
{
    var from = document.getElementById(fromID);
    var to = document.getElementById(toID);
    
    
    for (var i = 0; i < from.options.length; i++)
    { 
        if (from.options[i].selected) 
        { 
            if (maxItems != -1 && to.options.length >= maxItems)
            {
                alert(maxItemsMessage);
            }
            else if (from.options[i].value == cannotSwitchValue)
            {
                alert(cannotSwitchMessage);
            }
            else
            { Opt=new Option(from.options[i].text,from.options[i].value);
              Opt.setAttribute("title",from.options[i].text);
                to.options.add(Opt);
                from.remove(i--);
            }
        } 
    } 
    var container = document.getElementById(containerID);
    container.value = escape("<listboxes>" + SerializeElement(from) + SerializeElement(to) + "</listboxes>");
} 
function SerializeElement(dropdown) 
{ 
    var value = '<' + dropdown.id + '>';
    for (var i = 0; i < dropdown.options.length; i++) 
    {
        value+= '<option><key><![CDATA[' + dropdown.options[i].text + ']]></key><value><![CDATA[' + dropdown.options[i].value + ']]></value></option>'; 
    }
    value+='</' + dropdown.id + '>';
    return value
} 
function UnselectCurrentItem(listbox)
{ 
    document.getElementById(listbox).selectedIndex=-1;
} 
   
   
   function SwitchHierarchicalElement(fromID, toID, containerID, maxItems, maxItemsMessage, cannotSwitchValue, cannotSwitchMessage,direction)
{
    var from = document.getElementById(fromID);
    var to = document.getElementById(toID);
   
    for (var i = 0; i < from.options.length; i++)
    { 
        if (from.options[i].selected) 
        { 
            if (maxItems != -1 && to.options.length >= maxItems)
            {
                alert(maxItemsMessage);
            }
            else if (from.options[i].value == cannotSwitchValue)
            {
                alert(cannotSwitchMessage);
            }
            else
            { Opt=new Option(from.options[i].text,from.options[i].value);
              Opt.setAttribute("title",from.options[i].text);
				if(direction=="ToSource")
				{	
					 
					for (var y = 0; y < to.options.length; y++)
					{ 
					if(to.options[y].value==from.options[i].value)
					{	
						to.options[y].setAttribute('style', 'color:#000000'); 
						to.options[y].style.cssText= 'color:#000000';
						}
					}
					from.remove(i--);
				}             
				else
				{	 
				if(!FolderAllreadySelected(from.options[i].value,to))
					{
					lastLevel = ElementLevel(from.options[i].text);
				 
					if(ElementLevel(Opt.text)>2)
						Opt.text="__"+Opt.text.substring(ElementLevel(Opt.text));
					
					var x=i;
					
					while(from.options[x].text.substring(0,1)=="_")
					{
					var currentLevel = ElementLevel(from.options[x-1].text);
					
						if(lastLevel >currentLevel)
						{	
							Opt.text=((currentLevel==0)?"":"__")+from.options[x-1].text.substring(currentLevel)+Opt.text;
							Opt.setAttribute("title",Opt.text);
							lastLevel =ElementLevel(from.options[x-1].text);
						}
						x--;
					} 
						to.options.add(Opt);
						 
						from.options[i].setAttribute('style', 'color:#A0A0A0'); 
						from.options[i].style.cssText= 'color:#A0A0A0';

					}
				}
				
            }
        } 
    } 
    var container = document.getElementById(containerID);
    container.value = escape("<listboxes>" + SerializeElement(from) + SerializeElement(to) + "</listboxes>");

} 

function ElementLevel(ElementText)
{
var p=0;
while(ElementText.charAt(p)=='_')
{
p++;
}
return p;
}

function FolderAllreadySelected(folderValue,searchIn)
{
	for (var y = 0; y < searchIn.options.length; y++)
	{ 
	if(searchIn.options[y].value == folderValue)
		return true;
	}
return false;
}