var m2mCanShow = false, m2mCNIDs='';

function m2mShowHide(whom) {
    o=my_get_elment(whom);

    if (typeof(o) != "object")
        return;

    if(o.style.display=='inline' || o.style.display=='')
        o.style.display='none';
    else
        o.style.display='inline';
}

function m2mSelectB(whom, val, arr) {
    document.getElementsByName(whom)[0].value=val;

    var keyExists=false;
    try { keyExists=(typeof(arr[val]) != 'undefined'); } catch(e) { keyExists=false; }

    if (keyExists) {
        my_get_elment('m2m' + whom).innerHTML=arr[val];

        return;
    }

    var str=Array();
    for(var i in arr)
        if (i&val) str[str.length] = arr[i];

    my_get_elment('m2m' + whom).innerHTML=str.join(', ');
}

function updateIDCheckBoxes(o) {
    if ((m2mCNIDs=='')) return;

    obj_arr = document.getElementsByName(m2mCNIDs);

    try {
        for (var i=0; i<obj_arr.length; i++) {
            isSelected = false;
            for(var j=0; j<o.length; j++ ) {
                if (obj_arr[i].value==o.options[j].value) {
                    isSelected=true;
                    break;
                }
            }
            obj_arr[i].checked=isSelected;
        }
    } catch(e) {
    }
}

function updateBField(cn, arr) {
    var oSel=my_get_elment('m2mSelected'+cn);
    var sel=0;

    for(var i=0; i<oSel.options.length; i++ )
       if (typeof(arr[oSel.options[i].value]) != 'undefined') sel+=parseInt(oSel.options[i].value);

    m2mSelectB(cn,sel,arr);
}

function m2mTransferOptions(from_Field, to_Field, do_All, updateFkt) {
	var fromField = my_get_elment(arguments[0]);
	var toField = my_get_elment(arguments[1]);
	var txt = arguments[2].toLowerCase();
	var doAll = (txt == 'sall' || txt == 'dsall');
    var sel = (txt == 'sall' || txt == 'selected');
    var isSelected=false;
    var o;

	for( var k=fromField.length-1; k>=0; k-- ) {
		if( doAll || fromField.options[k].selected ) {
			toField.options[toField.length] = new Option(fromField.options[k].text, fromField.options[k].value, false, true);
			toField.options[toField.length-1].title = fromField.options[k].text;
			toField.options[toField.length-1].className="toolTipElement";
			fromField.options[k] = null;
		}
	}

    if (sel)
        o=toField;
    else
        o=fromField;

    if (updateFkt.indexOf('updateIDCheckBoxes') == 0 || updateFkt.indexOf('updateBField') == 0)
        eval(updateFkt);

	for( var i=0; i < toField.options.length; i++ ) {
		for( var j=0; j < toField.options.length-1; j++ ) {
			// if an option is greater than the next option, swap them
			var o1 = toField.options[j];
			var o2 = toField.options[j+1];
			if(o1.text.toLowerCase() > o2.text.toLowerCase()) {
				var sText = o1.text;
				var sValue = o1.value;
				var sSelected = o1.selected;
				o1.title = o2.title;
				o1.text = o2.text;
				o1.value = o2.value;
				o1.selected = o2.selected;
				o1.className="toolTipElement";
				o2.title =sText;
				o2.text = sText;
				o2.value = sValue;
				o2.selected = sSelected;
				o2.className="toolTipElement";
			}
		}
	}

	update_selectionHolder();
}

function m2mFill(cnSel, cnSelNot, cnIDs) {
    var oWork;

    var idArr = document.getElementsByName(cnIDs);
    var oSel = my_get_elment(cnSel);
    var oSelNot = my_get_elment(cnSelNot);

    try {
        if (idArr.length==0) return;
        for(var i=0; i < idArr.length; i++) {
            if (idArr[i].checked)
                oWork = oSel;
            else
                oWork = oSelNot;

            oWork.options[oWork.length]=optionCreate(my_get_elment('namespan' + idArr[i].value).innerHTML.replace(/<\/?[^>]+>/gi, ''), idArr[i].value);
        }
        m2mCanShow = true;
        m2mCNIDs=cnIDs;
    } catch(e) {
        m2mCanShow=false;
    }
}

function m2mFillArray(a, val, cn) {
    var oWork;

    var oSel = my_get_elment('m2mSelected'+cn);
    var oSelNot = my_get_elment('m2mSelectedNot'+cn);

    try {
        for (var i in a) {
            if (i==0) continue;

            if (i&val)
                oWork = oSel;
            else
                oWork = oSelNot;

            oWork.options[oWork.length]=optionCreate(a[i], i);
        }
    } catch(e) {
    }
}

function optionCreate(theTitle, id) {
    o=Option(theTitle, id, false, false);
    o.title=theTitle;
    o.className="toolTipElement";

    return o;
}