

var GUserInfo = null;
var GUserDialog = null;

function WidgetSeter(widgets, data) {
         var value, item;
         for(var i in widgets) {
                 if(data[i] != undefined) {
                            if(widgets[i] != undefined) {
								   if(data[i] instanceof Object)
								   		value = data[i].text;
									else
										value = data[i];
			
								GDebugPort.debug("widget type: " + widgets[i].getTagName().toLowerCase());
			
			           switch(widgets[i].getTagName().toLowerCase()) {
			                  case "input":
                                              GDebugPort.debug("set input value: " + value);
                                              widgets[i].setValue((value + "" == "null") ? "" : value);
				              break;
				              
				              case "textarea":
				              GDebugPort.debug("set textarea value: " + value);
                                              widgets[i].setValue((value + "" == "null") ? "" : value);
				              break;

				              case "div":
				              if(widgets[i] instanceof qx.ui.form.ComboBox) {
				                       GDebugPort.debug("set combobox value: " + value);
                                                       if(value == undefined || value == null || value == "") break;
				                       var fi = widgets[i].getList().findValue(value + "");
                                                       if(fi instanceof qx.ui.form.ListItem)
                                                             widgets[i].setSelected(fi);
                                              }
				              if(widgets[i] instanceof qx.ui.basic.Image) {
				                       GDebugPort.debug("set image source: " + value);
                                                       if(value == undefined || value == null || value == "") break;
                                                       widgets[i].__img__name = value;
                                                       widgets[i].setSource(IconGroupPath(value + "", 32, 0));
                                              }
				              break;
				   }
			    }
                 }
         }
         return data;
}

function WidgetReader(widgets, data) {
		var value;
         for(var i in widgets) {
                 if(data[i] != undefined) {
                            if(widgets[i] != undefined) {
                                GDebugPort.debug("widget type: " + widgets[i].getTagName().toLowerCase());
			           			switch(widgets[i].getTagName().toLowerCase()) {
			                    	case "input":
                                	value = widgets[i].getValue();
                                	GDebugPort.debug("get input value: " + value);
				              		break;

				              		case "textarea":
                                	value = widgets[i].getValue();
                                	GDebugPort.debug("get textarea value: " + value);
                                	break;

				              		case "div":
				              		if(widgets[i] instanceof qx.ui.form.ComboBox) {
				                		value = widgets[i].getSelected().getValue() + "";
				                    	GDebugPort.debug("get combobox value: " + value);
                                	}
				              		if(widgets[i] instanceof qx.ui.basic.Image) {
				                    	//value = widgets[i].getSource() + "";
				                    	value = widgets[i].__img__name;
				                    	GDebugPort.debug("get image source: " + value);
                                	}
				              		break;
				   				}

								if(data[i] instanceof Object)
								   		data[i].text = value;
									else
										data[i] = value;
			    			}
                 }
         }
         return data;
}


var GBrowse = "<input id='folder_browse' size=30 type=file accept='image/*' onchange='onChangePath(this.value); return true;' >";
var GBrowse_embed = null;
var GBrowse_field = null;

function onChangePath(path) {
         var folder_path = document.getElementById('folder_browse').value;
         
         GBrowse_embed.resetHtml();
         GBrowse_embed.setHtml(GBrowse);
         
         var reg = /[a-zA-Z]{1}:/;
         if(reg.test(folder_path) == true) {
               var tmp = "file:///" + folder_path;
               folder_path = tmp.replace(/\\/gi, "/");
         }

         folder_path = folder_path.replace(/\w*\.desc/i, "");

         GBrowse_field.setValue(folder_path);
}

function InitUserDialog() {

         var doc = qx.ui.core.ClientDocument.getInstance();
         var win_adrprop = new qx.ui.window.Window(Window_UserInfo_Caption);
         
         win_adrprop._data_widgets = new Array;
         
         with (win_adrprop)
	 {
	      setModal(true);
	      setResizeable(false);
	      setMoveable(true);
              setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
              setWidth(530);
              getMinWidthValue(530);
              //setBackgroundColor("#134275");
	      setHeight(430);
              setLocation(260, 50);
              //setAllowMaximize();
        }
   	var spacer1 = new qx.ui.menu.Separator();
	with(spacer1)
	{
                     setTop(45);
      	             setWidth("100%");
   	}
    	var spacer2 = new qx.ui.menu.Separator();
	with(spacer2)
	{
      	             setTop(45);
      	             setWidth("100%");
   	}
       	var spacer3 = new qx.ui.menu.Separator();
	with(spacer3)
	{
      	             setTop(45);
      	             setWidth("100%");
   	}

       	var spacer4 = new qx.ui.menu.Separator();
	with(spacer4)
	{
      	             setTop(45);
      	             setWidth("100%");
   	}

        var barView = new qx.ui.pageview.buttonview.ButtonView;
        barView.setLocation(0, 0);
        barView.setRight(0);
        barView.setBottom(50);
        barView.setBarPosition("left");

        var tv_adrprop_1 = new qx.ui.pageview.buttonview.Button(Button_UserInfo_Name, map_resource_map + "user.png");
        var tv_adrprop_2 = new qx.ui.pageview.buttonview.Button(Button_UserInfo_Contacts, map_resource_map + "home.png");
        var tv_adrprop_3 = new qx.ui.pageview.buttonview.Button(Button_UserInfo_Other, map_resource_map + "info.png");
        var tv_adrprop_4 = new qx.ui.pageview.buttonview.Button(Button_UserInfo_Settings, map_resource_map + "preferences.png");

        tv_adrprop_1.setChecked(true);

        barView.getBar().add(tv_adrprop_1, tv_adrprop_2, tv_adrprop_3, tv_adrprop_4);
        tv_adrprop_1.setIconPosition("left");
        tv_adrprop_2.setIconPosition("left");
        tv_adrprop_3.setIconPosition("left");
        tv_adrprop_4.setIconPosition("left");

        tv_adrprop_1.setHorizontalChildrenAlign("left");
        tv_adrprop_2.setHorizontalChildrenAlign("left");
        tv_adrprop_3.setHorizontalChildrenAlign("left");
        tv_adrprop_4.setHorizontalChildrenAlign("left");

        var pv_adrprop_1 = new qx.ui.pageview.buttonview.Page(tv_adrprop_1);
        var pv_adrprop_2 = new qx.ui.pageview.buttonview.Page(tv_adrprop_2);
        var pv_adrprop_3 = new qx.ui.pageview.buttonview.Page(tv_adrprop_3);
        var pv_adrprop_4 = new qx.ui.pageview.buttonview.Page(tv_adrprop_4);

        barView.getPane().add(pv_adrprop_1, pv_adrprop_2, pv_adrprop_3, pv_adrprop_4);

	var atom_user_name = new qx.ui.basic.Atom(Atom_UserInfo_Name);
	with(atom_user_name)
        {
	     setTop(10);
	     setLeft(10);
        }

	var label_fname = new qx.ui.basic.Label(Atom_UserInfo_Fname);
	with(label_fname)
        {
	     setTop(70);
	     setLeft(10);
        }
        win_adrprop._data_widgets["elmtFname"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtFname"])
      	{
             setTop(70);
             setLeft(70);
	     setWidth(100);
     //      setRight(13);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_lname = new qx.ui.basic.Label(Atom_UserInfo_Lname);
	with(label_lname)
        {
	     setTop(70);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtLname"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtLname"])
      	{
             setTop(70);
      	     setWidth(100);
             setLeft(290);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_aname = new qx.ui.basic.Label(Atom_UserInfo_Aname);
	with(label_aname)
        {
	     setTop(100);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtAname"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtAname"])
      	{
             setTop(100);
     //      setLeft(260);
	     setLeft(70);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}
      	
        var label_sex = new qx.ui.basic.Label(Atom_UserInfo_Sex);
	with (label_sex)
        {
	     setTop(140);
	     setLeft(10);
        }

        win_adrprop._data_widgets["elmtSex"] = new qx.ui.form.ComboBox;
        win_adrprop._data_widgets["elmtSex"].set({ top: 138, left: 70, width: 100 });

        for(var i=0; i<Items_UserInfo_Sex.length; i++) {
                var item = new qx.ui.form.ListItem(Items_UserInfo_Sex[i].text);
                item.setValue(Items_UserInfo_Sex[i].value);
	        win_adrprop._data_widgets["elmtSex"].add(item);
        }
        win_adrprop._data_widgets["elmtSex"].setSelected(win_adrprop._data_widgets["elmtSex"].getList().getFirstChild());

	var label_birthday = new qx.ui.basic.Label(Atom_UserInfo_Birthday);
	with(label_birthday)
        {
	     setTop(140);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtBirthday"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtBirthday"])
      	{
             setTop(140);
	     setLeft(290);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

        //var dcb1 = new qx.ui.component.DateChooserButton(win_adrprop._data_widgets["elmtBirthday"]);
        //dcb1.set({top:100, left:380});

        pv_adrprop_1.add(spacer1, atom_user_name, label_fname, label_lname, label_aname, label_sex, label_birthday);
        pv_adrprop_1.add(win_adrprop._data_widgets["elmtFname"],
                         win_adrprop._data_widgets["elmtLname"],
                         win_adrprop._data_widgets["elmtAname"],
                         win_adrprop._data_widgets["elmtSex"],
                         win_adrprop._data_widgets["elmtBirthday"]);

        // CONTACTS.

	var atom_user_contacts = new qx.ui.basic.Atom(Atom_UserInfo_Contacts);
	with(atom_user_contacts)
        {
	     setTop(10);
	     setLeft(10);
        }
        
	var label_town = new qx.ui.basic.Label(Atom_UserInfo_Town);
	with(label_town)
        {
	     setTop(70);
	     setLeft(10);
        }
        win_adrprop._data_widgets["elmtTown"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtTown"])
      	{
             setTop(70);
             setLeft(70);
	     setWidth(100);
     //      setRight(13);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_country = new qx.ui.basic.Label(Atom_UserInfo_Country);
	with(label_country)
        {
	     setTop(70);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtCountry"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtCountry"])
      	{
             setTop(70);
      	     setWidth(100);
             setLeft(290);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_icq = new qx.ui.basic.Label(Atom_UserInfo_ICQ);
	with(label_icq)
        {
	     setTop(100);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtICQ"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtICQ"])
      	{
             setTop(100);
     //      setLeft(260);
	     setLeft(70);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

       var label_jabber = new qx.ui.basic.Label(Atom_UserInfo_Jabber);
	with(label_jabber)
        {
	     setTop(100);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtJabber"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtJabber"])
      	{
             setTop(100);
      	     setWidth(100);
             setLeft(290);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_msn = new qx.ui.basic.Label(Atom_UserInfo_MSN);
	with(label_msn)
        {
	     setTop(130);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtMSN"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtMSN"])
      	{
             setTop(130);
     //      setLeft(260);
	     setLeft(70);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

       var label_skype = new qx.ui.basic.Label(Atom_UserInfo_Skype);
	with(label_skype)
        {
	     setTop(130);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtSkype"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtSkype"])
      	{
             setTop(130);
      	     setWidth(100);
             setLeft(290);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}
      	
        var label_email = new qx.ui.basic.Label(Atom_UserInfo_Email);
	with(label_email)
        {
	     setTop(160);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtEmail"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtEmail"])
      	{
             setTop(160);
     //      setLeft(260);
	     setLeft(70);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

       var label_phone = new qx.ui.basic.Label(Atom_UserInfo_Phone);
	with(label_phone)
        {
	     setTop(160);
	     setLeft(190);
        }

  	win_adrprop._data_widgets["elmtPhone"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtPhone"])
      	{
             setTop(160);
      	     setWidth(100);
             setLeft(290);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

        var label_lj = new qx.ui.basic.Label(Atom_UserInfo_LJ);
	with(label_lj)
        {
	     setTop(190);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtLJ"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtLJ"])
      	{
             setTop(190);
     //      setLeft(260);
	     setLeft(70);
             setWidth(100);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

        pv_adrprop_2.add(spacer2, atom_user_contacts, label_town, label_country, label_icq, label_jabber,
                          label_msn, label_skype, label_email, label_phone, label_lj);
        pv_adrprop_2.add(win_adrprop._data_widgets["elmtTown"],
                         win_adrprop._data_widgets["elmtCountry"],
                         win_adrprop._data_widgets["elmtICQ"],
                         win_adrprop._data_widgets["elmtJabber"],
                         win_adrprop._data_widgets["elmtMSN"],
                         win_adrprop._data_widgets["elmtSkype"],
                         win_adrprop._data_widgets["elmtEmail"],
                         win_adrprop._data_widgets["elmtPhone"],
                         win_adrprop._data_widgets["elmtLJ"]);

        var atom_user_other = new qx.ui.basic.Atom(Atom_UserInfo_Other);
	with(atom_user_other)
        {
             setTop(10);
	     setLeft(10);
        }

        var label_interests = new qx.ui.basic.Label(Atom_UserInfo_Interests);
	with(label_interests)
        {
	     setTop(70);
	     setLeft(10);
        }
        win_adrprop._data_widgets["elmtInterests"] = new qx.ui.form.TextArea();
        with(win_adrprop._data_widgets["elmtInterests"])
      	{
             setTop(70);
             setLeft(80);
	     setWidth(300);
	     setHeight(220);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

        pv_adrprop_3.add(spacer3, atom_user_other, label_interests);
        pv_adrprop_3.add(win_adrprop._data_widgets["elmtInterests"]);

        // *************************************************************
        // SETTINGS.
        // *************************************************************
        
        var tf1 = new qx.ui.pageview.tabview.TabView;
        tf1.set({ left: 0, top: 0, right: 0, bottom: 0 });
        tf1.setBorder(qx.renderer.border.BorderPresets.getInstance().none);

        var t1_1 = new qx.ui.pageview.tabview.Button(Button_Settings_Common);
        var t1_2 = new qx.ui.pageview.tabview.Button(Button_Settings_MapServer);

        t1_2.setChecked(true);

        tf1.getBar().add(t1_1, t1_2);

        var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
        var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);

        tf1.getPane().add(p1_1, p1_2);
        
        // MAP SERVERS.
        var map_server_data = [];

        for(var i=0; i<GAllMaps.__indices.length; i++) {
                var uid = GAllMaps.__indices[i];
                var map = GAllMaps[uid + ""];
                var link = Profile.getMapServer(map.elmtId);
                var map_server = {
                             name : {  text : map.elmtName.text },
                             comments : { text : map.elmtComments.text },
                             link : { text : link != "" ? link : map_static_data },
                             __id : map.elmtId
                };
                map_server_data.push(map_server);
                GDebugPort.debug(map.elmtName.text);
        }

        var header =
        {
            name        : { label : List_MapServer_Name, width : 80, type : "text", sortable : true, sortProp : "text" },
            comments    : { label : List_MapServer_Comments, width : 80, type : "text", sortable : true, sortProp : "text" },
            link        : { label : List_MapServer_Link, width : 400, type : "text", sortable : true, sortProp : "text" }
        };

        map_server_list = new qx.ui.listview.ListView(map_server_data, header);
        map_server_list.set({ top : 0, left: 0, width: 380, height : 223 }); //bottom: 70, right: 0 });
        map_server_list.setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));

        var atom_link = new qx.ui.basic.Atom(Atom_MapServer_Link);
	with(atom_link)
        {
             setBottom(37);
	     setLeft(0);
        }

/*  	var link_field = new qx.ui.form.TextField();
        with(link_field)
      	{
             setBottom(27);
	     setLeft(100);
             setWidth(275);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}
*/
       // document.InitUserDialog().onChangePath(this.value); return true;

	var embed_browse = new qx.ui.embed.HtmlEmbed(GBrowse);
	with(embed_browse) {
             setBottom(32);
	     setLeft(100);
             setWidth(275);
             setZIndex(0);
	}
	GBrowse_embed = embed_browse;

  	var link_field = new qx.ui.form.TextField();
        with(link_field)
      	{
             setBottom(32);
	     setLeft(85);
             setWidth(221);
             setHeight(22);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
	     setZIndex(100);
      	}
      	GBrowse_field = link_field;

        var apply_link = new qx.ui.form.Button(Button_MapServer_Apply);
    	with(apply_link)
    	{
             setBottom(0);
	     setRight(0);
	     addEventListener("execute", function(e) {
	            var item = map_server_list.getPane().getSelectedItem();
                    if(item == undefined) return;
                    item.link.text = link_field.getValue();
	            map_server_list.update();
	            Profile.addMapServer(item.__id, link_field.getValue());
                    if(MapData.isLoaded == true && MapData.map_id == item.__id) {
                            MapData.map_server = link_field.getValue();
                            //MapData.setSplash(MapData.map_server);
                            RefreshMap();
                    }
                    // Save to server.
    		    GUserProfile.elmtAccuid = GAuthInfo.elmtAccuid;
    		    GUserProfile.elmtMapServer = Profile.map_servers;
    		    SetUserProfile(GUserProfile);
             });
  	}

        var default_link = new qx.ui.form.Button(Button_MapServer_Default);
    	with(default_link)
    	{
             setBottom(0);
	     setRight(80);
	     addEventListener("execute", function(e) {
	            var item = map_server_list.getPane().getSelectedItem();
                    if(item == undefined) return;
                    item.link.text = map_static_data;
	            map_server_list.update();
                    link_field.setValue(map_static_data);
	            Profile.addMapServer(item.__id, map_static_data);
                    if(MapData.isLoaded == true && MapData.map_id == item.__id) {
                            MapData.map_server = map_static_data;
                            //MapData.setSplash(MapData.map_server);
                            RefreshMap();
                    }
                    // Save to server.
       		    GUserProfile.elmtAccuid = GAuthInfo.elmtAccuid;
    		    GUserProfile.elmtMapServer = Profile.map_servers;
    		    SetUserProfile(GUserProfile);
             });
  	}

        p1_2.add(map_server_list, atom_link, embed_browse, link_field, apply_link, default_link);
        
        //map_server_list

       	map_server_list.getPane().getManager().addEventListener("changeSelection", function(e) {
           	var item = e.getData()[0];
           	link_field.setValue(item.link.text);
        });

        pv_adrprop_4.add(tf1);


        var btn5 = new qx.ui.form.Button("OK", "icon/16/actions/dialog-apply.png");
    	with(btn5)
    	{
                  setBottom(10);
      		  setRight(100);
      		  setWidth(70);
      		  addEventListener("execute", function(e) {
                        GUserInfo = WidgetReader(win_adrprop._data_widgets, GUserInfo);
                        SetUserInfo(GAuthInfo.elmtUid, GAuthInfo.elmtAccuid, GUserInfo);
                        win_adrprop.close();
                  });
  	}

        var btn6 = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
    	with(btn6)
    	{
      		setBottom(10);
      		setRight(20);
      		setWidth(70);
      	//	setEnableElementFocus(false);
      		addEventListener("execute", function(e) { win_adrprop.close(); });
    	}

        win_adrprop.add(barView, btn5, btn6);
        doc.add(win_adrprop);

        return win_adrprop;
}

var GChooseIcon, GIconGallery;

function InitGroupDialog() {

         var doc = qx.ui.core.ClientDocument.getInstance();
         var win_adrprop = new qx.ui.window.Window(Window_Groups_Caption);

         win_adrprop._data_widgets = new Array;

         with (win_adrprop)
	 {
	      setModal(false);
	      setResizeable(false);
	      setMoveable(true);
              setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
              setWidth(370);
              //getMinWidthValue(200);
              //setBackgroundColor("#134275");
	      setHeight(250);
              setLocation(260, 50);
              //setAllowMaximize();
        }

	var label_name = new qx.ui.basic.Label(Atom_Groups_Name);
	with(label_name)
        {
	     setTop(20);
	     setLeft(10);
        }

        win_adrprop._data_widgets["elmtName"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtName"])
      	{
             setTop(20);
             setLeft(100);
	     setWidth(250);
     //      setRight(13);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_comments = new qx.ui.basic.Label(Atom_Groups_Comments);
	with(label_comments)
        {
	     setTop(50);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtComments"] = new qx.ui.form.TextArea();
        with(win_adrprop._data_widgets["elmtComments"])
      	{
             setTop(50);
      	     setWidth(250);
      	     setHeight(100);
             setLeft(100);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_class = new qx.ui.basic.Label(Atom_Groups_Class);
	with(label_class)
        {
	     setTop(160);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtClass"] = new qx.ui.form.ComboBox();
        with(win_adrprop._data_widgets["elmtClass"])
      	{
             setTop(160);
     //      setLeft(260);
	     setLeft(100);
             setWidth(250);
             //setOverflow("scrollX");
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}
      	
     	//var class_items = GetAllMarkerClass("*");

        for(var i=0; i<MapData.classes.length; i++) {
            var item = new qx.ui.form.ListItem(MapData.classes[i].elmtName.text);
            item.setValue(MapData.classes[i].elmtCuid);
            win_adrprop._data_widgets["elmtClass"].add(item);
        }
/*
     	var class_items = [ { elmtName : "Test1", elmtCuid : 5 },
                            { elmtName : "Test2", elmtCuid : 7 }
                          ];

        for(var i=0; i<class_items.length; i++) {
            var item = new qx.ui.form.ListItem(class_items[i].elmtName);
            item.setValue(class_items[i].elmtCuid + "");
            win_adrprop._data_widgets["elmtClass"].add(item);
        }
*/
        win_adrprop._data_widgets["elmtClass"].setSelected(win_adrprop._data_widgets["elmtClass"].getList().getFirstChild());

        var label_icon = new qx.ui.basic.Label(Atom_Groups_Icon);
	with (label_icon)
        {
	     setTop(70);
	     setLeft(20);
        }

        var icon_gallery = CreateIconGallery();
        qx.ui.core.ClientDocument.getInstance().add(icon_gallery);

        GIconGallery = icon_gallery;

        win_adrprop._data_widgets["elmtIcon"] = new qx.ui.basic.Image("icon/32/actions/go-home.png");
	with (win_adrprop._data_widgets["elmtIcon"])
        {
             setBackgroundColor(new qx.renderer.color.Color("#FFFFFF"));
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
	     setTop(80);
	     setLeft(20);
	     setPadding(4);

	     addEventListener("click", function(e) {
                    icon_gallery.setTop(e.getPageY() + 3);
                    icon_gallery.setLeft(e.getPageX() + 3);
                    icon_gallery.show();
                    icon_gallery.bringToFront();
	     });
	     addEventListener("mouseover", function() { mouseonIcon(this.getElement()); });
	     addEventListener("mouseout", function() { mouseoutIcon(this.getElement()); });
        }
        
        win_adrprop._data_widgets["elmtIcon"].__img__name = "";

        GChooseIcon = win_adrprop._data_widgets["elmtIcon"];

        win_adrprop.add(label_name, label_comments, label_class);
        win_adrprop.add(win_adrprop._data_widgets["elmtName"],
                         win_adrprop._data_widgets["elmtComments"],
                         win_adrprop._data_widgets["elmtClass"],
                         win_adrprop._data_widgets["elmtIcon"]);

        var btn5 = new qx.ui.form.Button("OK", "icon/16/actions/dialog-apply.png");
    	with(btn5)
    	{
                  setBottom(10);
      		  setRight(100);
      		  setWidth(70);
      		  addEventListener("execute", function(e) {

                        var gid = "";
                        
                       /* if(Favorites.group_action == 1) { // Offline test.
                               gid = parseInt(Math.random()*10000);
                               GDebugPort.debug("NEW GID = " + gid);
                        }*/

                        if(Favorites.group_action == 2) {
                               gid = Favorites.group_list.getSelectedItem().__group.elmtGid;
                        } // Set gid.

                        var data = { elmtAccuid : GAuthInfo.elmtAccuid, // DON`T FORGET UNCOMMENT THIS!!!
                                     elmtMapUid : MapData.map_guid,
                                     elmtModerator : 0,
                                     elmtUid : 0,
                                     elmtGid : gid,
                                     elmtName : "",
                                     elmtComments : "",
                                     elmtClass : "",
                                     elmtIcon : "",
                                     elmtFlags : "" };
                                   
                        data = WidgetReader(win_adrprop._data_widgets, data); // Fill fields.
                        
                        var ret = SetMarkerGroup(data); // SOAP SetMarkerGroup.
                        
                        if(ret.elmtResult == 0) {
                               data.elmtGid = ret.elmtGid; // DON`T FORGET UNCOMMENT THIS!!!
                               
                               if(Favorites.group_action == 1) {
                                       MapData.addGroup(data);
                                       Favorites.addGroup2List(data);
                               }
                               if(Favorites.group_action == 2) {
                                       MapData.groups[data.elmtUid + ":" + data.elmtGid] = data;
                                       fi = Favorites.group_list.getSelectedItem();
                                       fi.setLabel("<b>" + data.elmtName + "</b><br>" + data.elmtComments);
                                       fi.setIcon(IconGroupPath(data.elmtIcon, 32, 0));
                               }
                        }

                        Favorites.group_action = 0;
                        win_adrprop.close();
                  });
  	}

        var btn6 = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
    	with(btn6)
    	{
      		setBottom(10);
      		setRight(20);
      		setWidth(70);
      	//	setEnableElementFocus(false);
      		addEventListener("execute", function(e) {
                      Favorites.group_action = 0;
                      win_adrprop.close();
                });
    	}

        win_adrprop.add(btn5, btn6);
        doc.add(win_adrprop);

        return win_adrprop;
}

function InitMarkerDialog() {

         var doc = qx.ui.core.ClientDocument.getInstance();
         var win_adrprop = new qx.ui.window.Window(Window_Marker_Caption);

         win_adrprop._data_widgets = new Array;

         with (win_adrprop)
	 {
	      setModal(false);
	      setResizeable(false);
	      setMoveable(true);
              setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
              setWidth(370);
              //getMinWidthValue(200);
              //setBackgroundColor("#134275");
	      setHeight(250);
              setLocation(260, 50);
              //setAllowMaximize();
        }

	var label_name = new qx.ui.basic.Label(Atom_Marker_Name);
	with(label_name)
        {
	     setTop(20);
	     setLeft(10);
        }

        win_adrprop._data_widgets["elmtName"] = new qx.ui.form.TextField();
        with(win_adrprop._data_widgets["elmtName"])
      	{
             setTop(20);
             setLeft(100);
	     setWidth(250);
     //      setRight(13);
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_comments = new qx.ui.basic.Label(Atom_Marker_Comments);
	with(label_comments)
        {
	     setTop(50);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtComments"] = new qx.ui.form.TextArea();
        with(win_adrprop._data_widgets["elmtComments"])
      	{
             setTop(50);
      	     setWidth(250);
      	     setHeight(100);
             setLeft(100);
      	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

	var label_group = new qx.ui.basic.Label(Atom_Marker_Group);
	with(label_group)
        {
	     setTop(160);
	     setLeft(10);
        }

  	win_adrprop._data_widgets["elmtGroup"] = new qx.ui.form.ComboBox();
        with(win_adrprop._data_widgets["elmtGroup"])
      	{
             setTop(160);
     //      setLeft(260);
	     setLeft(100);
             setWidth(250);
             //setOverflow("scrollX");
	     setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
      	}

     	var group_items = [ { elmtName : Label_Group_Replacer["all"], elmtGid : -1 } ];

        for(var i=0; i<group_items.length; i++) {
            var item = new qx.ui.form.ListItem(group_items[i].elmtName);
            item.setValue(group_items[i].elmtGid + "");
            win_adrprop._data_widgets["elmtGroup"].add(item);
        }
        win_adrprop._data_widgets["elmtGroup"].setSelected(win_adrprop._data_widgets["elmtGroup"].getList().getFirstChild());

      	win_adrprop._check_global = new qx.ui.form.CheckBox("Global marker", "global_check", "global_check");
        with(win_adrprop._check_global)
        {
            setLocation(8, 185);
            //setHeight(20);
        }
        Switcher.addWidget2Sector(Switcher.ADMIN_SECTOR, win_adrprop._check_global);

        win_adrprop._check_global.addEventListener("changeChecked", function(e) {
              if(this.getChecked() == true) { // Global.
                     win_adrprop._data_widgets["elmtGroup"].getList().removeAll();
                     for(var i=0; i<MapData.groups.__indices.length; i++) {
                             var uidgid = MapData.groups.__indices[i];
                             if(MapData.groups[uidgid].elmtUid == 0) { // Check on global.
                                    var item = new qx.ui.form.ListItem(MapData.groups[uidgid].elmtName);
  			                var color = MapData.classes[MapData.groups[uidgid].elmtClass].elmtColor;
                                    item.setIcon(IconMarkerPath(MapData.groups[uidgid].elmtIcon, 16, color));
                                    item.setValue(MapData.groups[uidgid].elmtGid + "");
                                    win_adrprop._data_widgets["elmtGroup"].add(item);
                             }
                     }
                     win_adrprop._data_widgets["elmtGroup"].setSelected(win_adrprop._data_widgets["elmtGroup"].getList().getFirstChild());
              } else {
                     win_adrprop._data_widgets["elmtGroup"].getList().removeAll();
                     for(var i=0; i<group_items.length; i++) {
                             var item = new qx.ui.form.ListItem(group_items[i].elmtName);
                             item.setValue(group_items[i].elmtGid + "");
                             win_adrprop._data_widgets["elmtGroup"].add(item);
                     }
                     win_adrprop._data_widgets["elmtGroup"].setSelected(win_adrprop._data_widgets["elmtGroup"].getList().getFirstChild());
              }
        });

      	win_adrprop._check_advert = new qx.ui.form.CheckBox("Advert marker", "advert_check", "adver_check");
        with(win_adrprop._check_advert)
        {
            setLocation(8, 205);
            //setHeight(20);
        }
        Switcher.addWidget2Sector(Switcher.ADMIN_SECTOR, win_adrprop._check_advert);

        win_adrprop._check_advert.addEventListener("changeChecked", function(e) {
              if(this.getChecked() == true) { // Advert.

              } else {

              }
        });

        win_adrprop.add(label_name, label_comments, label_group, win_adrprop._check_global, win_adrprop._check_advert);
        win_adrprop.add(win_adrprop._data_widgets["elmtName"],
                         win_adrprop._data_widgets["elmtComments"],
                         win_adrprop._data_widgets["elmtGroup"]);

        var btn5 = new qx.ui.form.Button("OK", "icon/16/actions/dialog-apply.png");
    	with(btn5)
    	{
                  setBottom(10);
      		  setRight(100);
      		  setWidth(70);
      		  addEventListener("execute", function(e) {

                        var data;

                        if(MyMarkers.marker_action == 2) {
                               data = MyMarkers.marker_list.getPane().getSelectedItem();
                        }

                        data = WidgetReader(win_adrprop._data_widgets, data); // Fill fields.
                        data = SetIconGroup(data);
                        data = SetTextGroup(data);

                        // If new marker for global group add his to global group.
                        if(MapData.checkGroupOnGlobalByGid(data.elmtGroup) == true)
                                if(MapData.markers[MapData.FAVORITE_MARKERS].indexOf(data) == -1)
                                        MapData.markers[MapData.FAVORITE_MARKERS].push(data);

                        RedrawLabels();

                        MyMarkers.marker_list.update();

                        var soap_data = [];
                        soap_data["elmtMid"] = data.elmtMid;
                        soap_data["elmtName"] = data.elmtName.text;
                        soap_data["elmtComments"] = data.elmtComments.text;
                        soap_data["elmtLatitude"] = data.lat;
                        soap_data["elmtLongitude"] = data.lon;
                        soap_data["elmtGroup"] = data.elmtGroup;
                        soap_data["elmtPreview"] = data.elmtPreview;
                        soap_data["elmtPicsNum"] = data.elmtPicsNum;
                        soap_data["elmtPicsComments"] = data.elmtPicsComments;
                        
                        if(win_adrprop._check_advert.getChecked() == true) {
                                var reg = /:adv/gi;
                                if(reg.test(data.elmtFlags) == false) data.elmtFlags += ":adv";
                        } else {
                              data.elmtFlags = (data.elmtFlags + "").replace(/:adv/gi, "");
                        }
                        soap_data["elmtFlags"] = data.elmtFlags;
                        
                        var ret = SetMarker(soap_data); // SOAP SetMarker.

                        if(ret.elmtResult == 0) {

                        }

                        MyMarkers.marker_action = 0;
                        win_adrprop.close();
                  });
  	}

        var btn6 = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
    	with(btn6)
    	{
      		setBottom(10);
      		setRight(20);
      		setWidth(70);
      	//	setEnableElementFocus(false);
      		addEventListener("execute", function(e) {
                      MyMarkers.marker_action = 0;
                      win_adrprop.close();
                });
    	}

        win_adrprop.add(btn5, btn6);
        doc.add(win_adrprop);

        return win_adrprop;
}

function CreateGallery(icon_list, cols) {
	var table = "";
	var start_table = "<table style='border-style:none'><tbody>";
	var end_table = "</table>";
	var start_row_table = "<tr>";
	var end_row_table = "</tr>";
	var start_col_table = "<td style='padding:4; border-style:none; width:32; height:32'>";
	var end_col_table = "</td>";
	var start_cell_icon = "<img style='border-color:#B0B0B0' border=1 onmouseover='mouseonIcon(this)' onmouseout='mouseoutIcon(this)' ";
	var end_cell_icon = "onclick='chooseIcon(this)'>";
	table = start_table;
	var rows = parseInt(icon_list.length/cols) + 1;
	var curr_id;
	for(var i=0; i<rows; i++) {
		table += start_row_table;
		for(var j=0; j<cols; j++) {
			table += start_col_table;
			curr_id = i*cols+j;
			if(curr_id<icon_list.length) {
				table += start_cell_icon;
				table += "src='" + IconGroupPath(icon_list[curr_id], 32, 0) + "' "
				table += "id='" + icon_list[curr_id] + "' ";
				table += "title='" + icon_list[curr_id] + "' ";
				table += end_cell_icon;
			}
			table += end_col_table;
		}
		table += end_row_table;
	}
	table += end_table;
	return table;
}

function CreateIconGallery() {
    var popup = new qx.ui.popup.Popup;
    var icons = GetIcons("w32");
	var table = CreateGallery(icons, 6);
	var embed_icon = new qx.ui.embed.HtmlEmbed(table);
	with(embed_icon) {
             setBackgroundColor(new qx.renderer.color.Color("#FFFFFF"));
             setBorder(new qx.renderer.border.Border(4, "solid", "#B0B0B0"));
             setTop(0);
             setLeft(0);
             setWidth(342);
             setHeight(200);
             setOverflow("scrollY");
	}
	popup.add(embed_icon);
	return popup;
}

function chooseIcon(elm) {
         GChooseIcon.__img__name = elm.id;
         GChooseIcon.setSource(elm.src);
         GIconGallery.hide();
}

function mouseonIcon(elm) { elm.style.borderStyle = 'outset'; } //elm.style.borderColor = "#505050"; }
function mouseoutIcon(elm) { elm.style.borderStyle = 'solid'; } //elm.style.borderColor = "#B0B0B0"; }

function IconGroupPath(name, size, color) {
         return map_scripts + "showicon.php?fn=" + name + "_" + size + ".png&color=" + color;
}

function IconMarkerPath(name, size, color) {
         //return map_scripts + "showicon.php?fn=" + name + "_" + size + ".png&color=" + color + "&border=0&negate";
         return map_icons + 'set/' + name + '_' + size + '_' + color + '_0_1.png';
}

function SetIconGroup(data) {
         var gid = data.elmtGroup;
         if(MapData.checkGroupOnGlobalByGid(gid) == true) {
                var color = MapData.classes[MapData.groups["0:" + gid].elmtClass].elmtColor;
                data.icon.icon = IconMarkerPath(MapData.groups["0:" + gid].elmtIcon, 16, color);
                GDebugPort.debug("Small icon: " + data.icon.icon);
         } else {
                data.icon.icon = map_marker_url + "lightviolet.png";
         }
         return data;
}

function SetTextGroup(data) {
         var gid = data.elmtGroup;
         if(MapData.checkGroupOnGlobalByGid(gid) == true) {
                data.elmtType.text = MapData.groups["0:" + gid].elmtName;
                GDebugPort.debug("Group text: " + data.elmtType.text);
         } else {
                data.elmtType.text = Label_Group_Replacer["all"];
         }
         return data;
}
