    
    function setOpFields(form, opfieldname, opvalue, targetfieldname, targetvalue, submit){
        if (form == null) return false;
        form.elements[opfieldname].value = opvalue;
        if (targetvalue != null) form.elements[targetfieldname].value = targetvalue;
        if(submit) form.submit();
        return true;
    }

    function setCheckboxesState(form, cbarrayname, state, targetfieldname){
        if (form == null) return false;
	    var cbs = form.elements[cbarrayname];
		if(!cbs) return false;
        if (cbs.length > 1)
		    for (var i = 0; i <= cbs.length - 1; i++)
		        cbs[i].checked = state;
        else
            cbs.checked = state;
        setTargetByCheckboxesState(form,cbarrayname,targetfieldname);
		return true;
	}
    
    function setCheckboxesStateSameAsTitle(form, cbarrayname, targetfieldname, titlecbname){
        if (form == null) return false;
	    var cbs = form.elements[cbarrayname];
		if(!cbs) return false;
        if (cbs.length > 1)
		    for (var i = 0; i <= cbs.length - 1; i++)
		        cbs[i].checked = form.elements[titlecbname].checked;
        else
            cbs.checked = form.elements[titlecbname].checked;
        setTargetByCheckboxesState(form,cbarrayname,targetfieldname);
		return true;
	}

    function setTargetByCheckboxesState(form, cbarrayname, targetfieldname){
        if (form == null) return false;
        var cbs = form.elements[cbarrayname];
		if(!cbs) return false;
        var newtarget = '';
        if (cbs.length > 1){
		    for (var i = 0; i <= cbs.length - 1; i++)
		        if(cbs[i].checked) newtarget = newtarget + cbs[i].value + '|';
        } else {
            if(cbs.checked) {
                newtarget = newtarget + cbs.value + '|';
            }
        }
        //rimozione dell'ultima barra verticale
        newtarget = newtarget.substr(0,newtarget.length-1);
        form.elements[targetfieldname].value = newtarget;
		return true;
    }

    function getCheckboxesSelCount(form, cbarrayname){
        if (form == null) return 0;
        var cbs = form.elements[cbarrayname];
	    count = 0;
        if(!cbs) return 0;
		if(cbs.checked)
            return 1;
		else{
		    for (var i = 0; i <= cbs.length - 1; i++)
			    if (cbs[i].checked) count++;
            return count;
		}
	}

    function getUserAgent(){
		var ua = navigator.userAgent;
		if (ua.indexOf('MSIE') != -1) return 'msie';
		if (ua.indexOf('Firefox') != -1) return 'firefox';
		return '';
	}
    
    function hideDetailRow(objnamepfx, row_id){
		var detail_row = document.getElementById(objnamepfx + 'detail_row_' + row_id);
        var detail_show = document.getElementById(objnamepfx + 'detail_show_' + row_id);
        var detail_hide = document.getElementById(objnamepfx + 'detail_hide_' + row_id);
        if(detail_row){
            detail_row.style.display = 'none';
            detail_hide.style.display = 'none';
            detail_show.style.display = '';
        }
        saveDetailRowState(objnamepfx, row_id);  
	}
    
    function showDetailRow(objnamepfx, row_id){
		var detail_row = document.getElementById(objnamepfx + 'detail_row_' + row_id);
        var detail_show = document.getElementById(objnamepfx + 'detail_show_' + row_id);
        var detail_hide = document.getElementById(objnamepfx + 'detail_hide_' + row_id);
        if(detail_row){
            detail_row.style.display = '';
            detail_hide.style.display = '';
            detail_show.style.display = 'none';
        }
        saveDetailRowState(objnamepfx, row_id);
	}
    
    function saveDetailRowState(objnamepfx, row_id){
        var detail_row = document.getElementById(objnamepfx + 'detail_row_' + row_id);
        if(!detail_row) return;
        if(detail_row.style.display == ''){
            document.cookie = row_id + '=' + '1';   //expanded
        } else {
            document.cookie = row_id + '=' + '0';   //colapsed
        }
    }
    
    function restoreDetailRowState(objnamepfx, row_id){
        var cookiestr = document.cookie;
        cookies = cookiestr.split('; ');
        for(var i = 0; i < cookies.length; i++){
            namevalue = String(cookies[i]).split('=');
            if(namevalue[0] == row_id){
                if(namevalue[1] == '0'){
                    hideDetailRow(objnamepfx, row_id);
                } else {
                    showDetailRow(objnamepfx, row_id);
                }
            }
        }
    }