
/*
var loader_form = "<form action='http://honet.ath.cx/terLocate/scripts/uploadimg.php' method='post' enctype='multipart/form-data'>" +
                "Accuid: <input id='accuid' type='text' name='accuid'><br>" +
                "Map uniqid: <input id='map_uniqid' type='text' name='map_uniqid'><br>" +
                "Mid: <input id='mid' type='text' name='mid'><br>" +
                "Img slot: <input id='img_slot' type='text' name='img_slot'><br>" +
                "Img comments: <input id='img_comments' type='text' name='img_comments'><br>" +
                "Img file: <input id='img_file' type='file' name='img_file'><br>" +
                "<input id='upload' type='submit' value='upload'></form>";
*/

function findMax(array) {
     var max = 0;
     for(var i=0; i<array.length; i++)
          if(parseInt(array[i]) > max) max = parseInt(array[i]);
     return parseInt(max);
}

function ImageGalleryLoader() {
//    var popup = new qx.ui.popup.Popup;

    var canvas = new qx.ui.layout.CanvasLayout();
    with(canvas) {
          setBackgroundColor(new qx.renderer.color.Color("#FFFFFF"));
          setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
          setTop(0);
          setLeft(0);
          setWidth(325);
          setHeight(195);
          setZIndex(10000);
          setVisibility(false);
    }
    
   var close_button = new qx.ui.basic.Atom(null, map_resource_map + "close.gif");
   with(close_button) {
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
             setTop(4);
             setRight(4);
             setWidth(16);
             setHeight(15);
             setCursor("pointer");

             addEventListener("click", function() {
                   canvas.setVisibility(false);
             });
   }

    var loader_iframe = new qx.ui.embed.Iframe(map_upload_form);
    with(loader_iframe) {
          setBackgroundColor(new qx.renderer.color.Color("#FFFFFF"));
          setBorder(qx.renderer.border.BorderPresets.getInstance().none);
          setTop(22);
          setLeft(10);
          setWidth(305);
          setHeight(140);
    }

    //var upload_btn = new qx.ui.form.Button("Upload");
    var upload_btn = new qx.ui.basic.Atom("Upload", null);
    with(upload_btn) {
         setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
         setRight(10);
         setBottom(10);
         setWidth(150);
         setHeight(22);
         setCursor("pointer");

         addEventListener("click", function() {
         
               var loader_doc = loader_iframe.getContentDocument();

               var accuid_el = loader_doc.getElementById('accuid');
               var map_uniqid_el = loader_doc.getElementById('map_uniqid');
               var mid_el = loader_doc.getElementById('mid');
               var num_el = loader_doc.getElementById('img_slot');
               var comments_el = loader_doc.getElementById('img_comments');
               var upload_el = loader_doc.getElementById('upload');

               accuid_el.value = GAuthInfo.elmtAccuid;
               map_uniqid_el.value = MapData.map_guid;

               var data = MyMarkers.marker_list.getPane().getSelectedItem();
               var mid = mid_el.value = data.elmtMid;
               var num = num_el.value = findMax(data.elmtPicsNum.split(":")) + 1;
               var comments = comments_el.value;

               data.elmtPicsNum += num + ":";
               data.elmtPicsComments += comments + ":";

               upload_el.click();
               
               Gallery.updaterStop = false;
               Gallery.updaterCallback = function() {
                       loader_doc = loader_iframe.getContentDocument();
                       if(loader_doc == undefined) return;
                       var answer = loader_doc.body.innerHTML + "";
                       if(answer.indexOf("form") == -1) {
                                GDebugPort.debug("Image loader: " + answer);
                                Gallery.updaterStop = true;
                                canvas.setVisibility(false);
                                if(answer == "0x000000") {
                                       Gallery.addImage(data, num, comments);
                                } else {
                                       // Uploading error.
                                       alert("Uploading error, code = " + answer);
                                }
                       }
               }
               Gallery.updater();
         });
    }

    canvas.add(close_button, loader_iframe, upload_btn);

    //popup.add(canvas);
//    popup.__loader_iframe = loader_iframe;
    canvas.__loader_iframe = loader_iframe;
    return canvas;
}

function Gallery() {}

Gallery.isInit = false;

Gallery.tab = null;

Gallery.removeBtn = null;
Gallery.offpreviewBtn = null;
Gallery.previewBtn = null;
Gallery.setlabelBtn = null;

Gallery.gallery_list = null;

Gallery.currMarker = null;

Gallery.updaterCallback = null;
Gallery.updaterStop = false;
Gallery.updater = function() { if(Gallery.updaterStop == true) return; Gallery.updaterCallback(); setTimeout("Gallery.updater()", 100); };

Gallery.visibilityBtns = function(visibility) {
/*    this.setlabelBtn.setVisibility(visibility);
    this.previewBtn.setVisibility(visibility);
    this.offpreviewBtn.setVisibility(visibility);
    this.removeBtn.setVisibility(visibility);
*/
    this.setlabelBtn.setEnabled(visibility);
    this.previewBtn.setEnabled(visibility);
    this.offpreviewBtn.setEnabled(visibility);
    this.removeBtn.setEnabled(visibility);
};

Gallery.init = function(parent) {

    if(this.isInit == true) return;
    
    var img_loader = ImageGalleryLoader();
    qx.ui.core.ClientDocument.getInstance().add(img_loader);

    this.setlabelBtn = new qx.ui.toolbar.Button(null, "icon/22/actions/edit-add.png"); //new qx.ui.basic.Atom(Atom_UserPanel_RemoveLabel);
    with(this.setlabelBtn) {
             //setLocation(2, 170);
             setRight(2);
             setTop(2);
             setPadding(4, 4);
             setWidth(28);
             setHeight(28);
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
             setToolTip(new qx.ui.popup.ToolTip(Tooltip_Gallery_Add));
             addEventListener("execute", function() {
                    img_loader.__loader_iframe.setSource(map_upload_form);
                    img_loader.__loader_iframe.reload();
                    img_loader.setTop(150); //e.getPageY() + 3);
                    img_loader.setLeft(150); //e.getPageX() + 3);
                    img_loader.setVisibility(true);
             });
    }

    this.previewBtn = new qx.ui.toolbar.Button(null, "icon/22/actions/view-pane-detailed.png"); //new qx.ui.basic.Atom(Atom_UserPanel_RemoveLabel);
    with(this.previewBtn) {
             //setLocation(2, 170);
             setRight(34);
             setTop(2);
             setPadding(4, 4);
             setWidth(28);
             setHeight(28);
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
             setToolTip(new qx.ui.popup.ToolTip(Tooltip_Gallery_PreviewOn));
             addEventListener("execute", function() {
                   var item = Gallery.gallery_list.getSelectedItem();
                   if(item == undefined || item == null || item == -1) return;
                   var marker = MyMarkers.marker_list.getPane().getSelectedItem();
                   marker.elmtPreview = item.__num;
                   
                   var soap_data = [];
                   soap_data["elmtMid"] = marker.elmtMid;
                   soap_data["elmtName"] = marker.elmtName.text;
                   soap_data["elmtComments"] = marker.elmtComments.text;
                   soap_data["elmtLatitude"] = marker.lat;
                   soap_data["elmtLongitude"] = marker.lon;
                   soap_data["elmtGroup"] = (marker.__global == true) ? marker.elmtGroup : "-1";
                   soap_data["elmtPreview"] = marker.elmtPreview;
                   soap_data["elmtPicsNum"] = marker.elmtPicsNum;
                   soap_data["elmtPicsComments"] = marker.elmtPicsComments;
                   var ret = SetMarker(soap_data); // SOAP SetMarker.
                   if(ret.elmtResult == 0) {

                   }
             });
    }

    this.offpreviewBtn = new qx.ui.toolbar.Button(null, "icon/22/actions/view-pane-remove.png"); //new qx.ui.basic.Atom(Atom_UserPanel_RemoveLabel);
    with(this.offpreviewBtn) {
             //setLocation(2, 170);
             setRight(68);
             setTop(2);
             setPadding(4, 4);
             setWidth(28);
             setHeight(28);
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
             setToolTip(new qx.ui.popup.ToolTip(Tooltip_Gallery_PreviewOff));
             addEventListener("execute", function() {
                   var item = Gallery.gallery_list.getSelectedItem();
                   if(item == undefined || item == null || item == -1) return;
                   var marker = MyMarkers.marker_list.getPane().getSelectedItem();
                   marker.elmtPreview = 0;
                   var soap_data = [];
                   soap_data["elmtMid"] = marker.elmtMid;
                   soap_data["elmtName"] = marker.elmtName.text;
                   soap_data["elmtComments"] = marker.elmtComments.text;
                   soap_data["elmtLatitude"] = marker.lat;
                   soap_data["elmtLongitude"] = marker.lon;
                   soap_data["elmtGroup"] = (marker.__global == true) ? marker.elmtGroup : "-1";
                   soap_data["elmtPreview"] = marker.elmtPreview;
                   soap_data["elmtPicsNum"] = marker.elmtPicsNum;
                   soap_data["elmtPicsComments"] = marker.elmtPicsComments;
                   var ret = SetMarker(soap_data); // SOAP SetMarker.
                   if(ret.elmtResult == 0) {

                   }
             });
    }

    this.removeBtn = new qx.ui.toolbar.Button(null, "icon/22/actions/edit-delete.png"); //new qx.ui.basic.Atom(Atom_UserPanel_RemoveLabel);
    with(this.removeBtn) {
             setLocation(2, 2);
             setPadding(4, 4);
             setWidth(28);
             setHeight(28);
             setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
             setToolTip(new qx.ui.popup.ToolTip(Tooltip_Gallery_Remove));
             addEventListener("execute", function() {

                   var item = Gallery.gallery_list.getSelectedItem();
                   if(item == undefined || item == null || item == -1) return;

                   var ret = DelImage(item.__mid, item.__num);
                   if(ret.elmtResult == 0) {

                            var marker = MyMarkers.marker_list.getPane().getSelectedItem();

                            GDebugPort.debug("Pre remove: " + marker.elmtPicsNum + "   " + marker.elmtPicsComments);

                            marker.elmtPicsNum = marker.elmtPicsNum.replace(new RegExp(item.__num + ":", "i"), "");
                            marker.elmtPicsComments = marker.elmtPicsComments.replace(new RegExp(item.__comments + ":", "i"), "");

                            GDebugPort.debug("Post remove: " + marker.elmtPicsNum + "   " + marker.elmtPicsComments);

                            if(marker.elmtPreview == item.__num) {
                                  var nums = marker.elmtPicsNum.split(":"); nums.length = nums.length - 1;
                                  marker.elmtPreview = nums[0];
                            }

                            Gallery.gallery_list.remove(item);
                   }
             });
    };

    parent.add(this.setlabelBtn, this.previewBtn, this.offpreviewBtn, this.removeBtn);

    this.visibilityBtns(false);

    this.gallery_list = new qx.ui.form.List;

    this.gallery_list.set({ top : 32, left: 2, bottom: 10, right: 2, overflow : "auto" });
    this.gallery_list.setBorder(new qx.renderer.border.Border(1, "solid", "#B0B0B0"));
//    this.gallery_list.setSpacing(1);
    parent.add(this.gallery_list);

    this.gallery_list.getManager().addEventListener("changeSelection", function(e) {
           var item = e.getData()[0];
    });

    this.gallery_list.getManager().handleDblClick = function(item, e) {
           var w1 = new qx.client.NativeWindow(Gallery.imagePath(item.__pid, item.__num, false));
           w1.setShowStatusbar(false);
           w1.setShowLocation(true);
           w1.setWidth(640);
           w1.setHeight(480);
           w1.open();
    }

    return { "gallery_list" : this.group_list };
};

Gallery.clear = function() {
    this.gallery_list.removeAll();
}

Gallery.fill = function(marker) {
    this.clear();
    if(marker.elmtPid == undefined) return false;
    if(marker.elmtPicsNum == "0") return false;
    var img_num = marker.elmtPicsNum.split(":"); img_num.length = img_num.length-1;
    var img_comments = marker.elmtPicsComments.split(":"); img_comments.length = img_comments.length-1;

    for(var i=0; i<img_num.length; i++) {
            this.addImage(marker, img_num[i], img_comments[i]);
    }

    return true;
};

Gallery.addImage = function(marker, num, comments) {
    GDebugPort.debug("Img num: " + num + "  Img comments: " + comments);
    var item = new qx.ui.form.ListItem(comments, this.imagePath(marker.elmtPid, num, true));
    item.__mid = marker.elmtMid;
    item.__pid = marker.elmtPid;
    item.__num = num;
    item.__comments = comments;
    this.gallery_list.add(item);
};

Gallery.checkOnImage = function(marker) {
    if(marker.elmtPreview == undefined) return false;
    if(marker.elmtPreview == "0") return false;
    return true;
};

Gallery.imagePath = function(pid, num, preview) {
    var prev = "";
    if(preview == true) prev = "preview/";
    return map_static_img + prev + pid + "_" + num + ".jpg";
};

