public void FloaterControl(ScenePresence sp, FloaterData d, string msg)
        {
            string sendData = String.Format("># floater {0} {1}", d.FloaterName, msg);
            SendToClient(sp, sendData);

        }
        public void DoUserFloater(UUID agentID, FloaterData dialogData, string configuration)
        {
            ScenePresence sp = m_scene.GetScenePresence(agentID);
            if (sp == null || sp.IsChildAgent)
                return;

            if (!m_floaters.ContainsKey(agentID))
                m_floaters[agentID] = new Dictionary<int, FloaterData>();

            if (m_floaters[agentID].ContainsKey(dialogData.Channel))
                return;

            m_floaters[agentID].Add(dialogData.Channel, dialogData);

            string xml;
            if (dialogData.XmlText != null && dialogData.XmlText != String.Empty)
            {
                xml = dialogData.XmlText;
            }
            else
            {
                using (FileStream fs = File.Open(dialogData.XmlName + ".xml", FileMode.Open))
                {
                    using (StreamReader sr = new StreamReader(fs))
                        xml = sr.ReadToEnd().Replace("\n", "");
                }
            }

            List<string> xparts = new List<string>();

            while (xml.Length > 0)
            {
                string x = xml;
                if (x.Length > 600)
                {
                    x = x.Substring(0, 600);
                    xml = xml.Substring(600);
                }
                else
                {
                    xml = String.Empty;
                }

                xparts.Add(x);
            }

            for (int i = 0 ; i < xparts.Count ; i++)
                SendToClient(sp, String.Format("># floater {2} create {0}/{1} " + xparts[i], i + 1, xparts.Count, dialogData.FloaterName));

            SendToClient(sp, String.Format("># floater {0} {{notify:1}} {{channel: {1}}} {{node:cancel {{notify:1}}}} {{node:ok {{notify:1}}}} {2}", dialogData.FloaterName, (uint)dialogData.Channel, configuration));
        }