]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
allow forwarding multiple articles by email
[tt-rss.git] / viewfeed.js
index d2425d99c8e9e56d44341eb02fb0dc4e9ac53fd5..1e9a11a1656a165f4a24fa2f33eac251e1f631aa 100644 (file)
@@ -15,42 +15,9 @@ var post_under_pointer = false;
 
 var last_requested_article = false;
 
-function toggle_published_callback(transport) {
-       try {
-               if (transport.responseXML) {
-
-                       all_counters_callback2(transport);
-
-                       var note = transport.responseXML.getElementsByTagName("note")[0];
-
-                       if (note) {
-                               var note_id = note.getAttribute("id");
-                               var note_size = note.getAttribute("size");
-                               var note_content = note.firstChild.nodeValue;
-
-                               var container = $('POSTNOTE-' + note_id);
-
-                               cache_invalidate(note_id);
-
-                               if (container) {
-                                       if (note_size == "0") {
-                                               Element.hide(container);
-                                       } else {
-                                               container.innerHTML = note_content;
-                                               Element.show(container);
-                                       }
-                               }
-                       }       
-               }
-
-       } catch (e) {
-               exception_error("toggle_published_callback", e, transport);
-       }
-}
-
 function catchup_callback2(transport, callback) {
        try {
-               debug("catchup_callback2 " + transport + ", " + callback);
+               console.log("catchup_callback2 " + transport + ", " + callback);
                notify("");                     
                all_counters_callback2(transport);
                if (callback) {
@@ -88,7 +55,7 @@ function headlines_callback2(transport, feed_cur_page) {
 
                loading_set_progress(100);
 
-               debug("headlines_callback2 [page=" + feed_cur_page + "]");
+               console.log("headlines_callback2 [page=" + feed_cur_page + "]");
 
                if (!transport_error_check(transport)) return;
 
@@ -134,7 +101,7 @@ function headlines_callback2(transport, feed_cur_page) {
                var f = $("headlines-frame");
                try {
                        if (feed_cur_page == 0) { 
-                               debug("resetting headlines scrollTop");
+                               console.log("resetting headlines scrollTop");
                                f.scrollTop = 0; 
                        }
                } catch (e) { };
@@ -183,14 +150,14 @@ function headlines_callback2(transport, feed_cur_page) {
                                        }
 
                                } else {
-                                       debug("headlines_callback: returned no data");
+                                       console.log("headlines_callback: returned no data");
                                f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
        
                                }
                        } else {
                                if (headlines) {
                                        if (headlines_count > 0) {
-                                               debug("adding some more headlines...");
+                                               console.log("adding some more headlines...");
        
                                                var c = $("headlinesList");
                
@@ -202,17 +169,17 @@ function headlines_callback2(transport, feed_cur_page) {
        
                                                c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue;
 
-                                               debug("restore selected ids: " + ids);
+                                               console.log("restore selected ids: " + ids);
 
                                                for (var i = 0; i < ids.length; i++) {
                                                        markHeadline(ids[i]);
                                                }
 
                                        } else {
-                                               debug("no new headlines received");
+                                               console.log("no new headlines received");
                                        }
                                } else {
-                                       debug("headlines_callback: returned no data");
+                                       console.log("headlines_callback: returned no data");
                                        notify_error("Error while trying to load more headlines");      
                                }
 
@@ -221,30 +188,30 @@ function headlines_callback2(transport, feed_cur_page) {
                        if (articles) {
                                for (var i = 0; i < articles.length; i++) {
                                        var a_id = articles[i].getAttribute("id");
-                                       debug("found id: " + a_id);
+                                       console.log("found id: " + a_id);
                                        cache_inject(a_id, articles[i].firstChild.nodeValue);
                                }
                        } else {
-                               debug("no cached articles received");
+                               console.log("no cached articles received");
                        }
        
                        if (counters) {
-                               debug("parsing piggybacked counters: " + counters);
+                               console.log("parsing piggybacked counters: " + counters);
                                parse_counters(counters, false);
                        } else {
-                               debug("counters container not found in reply, requesting...");
+                               console.log("counters container not found in reply, requesting...");
                                request_counters();
                        }
        
                        if (runtime_info) {
-                               debug("parsing runtime info: " + runtime_info[0]);
+                               console.log("parsing runtime info: " + runtime_info[0]);
                                parse_runtime_info(runtime_info[0]);
                        } else {
-                               debug("counters container not found in reply");
+                               console.log("counters container not found in reply");
                        }
        
                } else {
-                       debug("headlines_callback: returned no XML object");
+                       console.log("headlines_callback: returned no XML object");
                        f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>";
                }
        
@@ -257,11 +224,11 @@ function headlines_callback2(transport, feed_cur_page) {
                if (!$("headlinesList") && 
                                getActiveFeedId() != -3 &&
                                getInitParam("cdm_auto_catchup") == 1) {
-                       debug("starting CDM watchdog");
+                       console.log("starting CDM watchdog");
                        _cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 5000);
                        _cdm_wd_vishist = new Array();
                } else {
-                       debug("not in CDM mode or watchdog disabled");
+                       console.log("not in CDM mode or watchdog disabled");
                }
        
                _feed_cur_page = feed_cur_page;
@@ -365,7 +332,7 @@ function showArticleInHeadlines(id) {
 
 function article_callback2(transport, id) {
        try {
-               debug("article_callback2 " + id);
+               console.log("article_callback2 " + id);
 
                if (!transport.responseText && db) {
                        offlineConfirmModeChange();
@@ -388,23 +355,23 @@ function article_callback2(transport, id) {
                        }
 
                        if (id != last_requested_article) {
-                               debug("requested article id is out of sequence, aborting");
+                               console.log("requested article id is out of sequence, aborting");
                                return;
                        }
 
                        active_post_id = id; 
 
-                       debug("looking for articles to cache...");
+                       console.log("looking for articles to cache...");
 
                        var articles = transport.responseXML.getElementsByTagName("article");
 
                        for (var i = 0; i < articles.length; i++) {
                                var a_id = articles[i].getAttribute("id");
 
-                               debug("found id: " + a_id);
+                               console.log("found id: " + a_id);
 
                                if (a_id == active_post_id) {
-                                       debug("active article, rendering...");                                  
+                                       console.log("active article, rendering...");                                    
                                        render_article(articles[i].firstChild.nodeValue);
                                }
 
@@ -421,7 +388,7 @@ function article_callback2(transport, id) {
                        var reply = transport.responseXML.firstChild.firstChild;
                
                } else {
-                       debug("article_callback: returned no XML object");
+                       console.log("article_callback: returned no XML object");
                        //var f = $("content-frame");
                        //f.innerHTML = "<div class='whiteBox'>" + __('Could not display article (missing XML object)') + "</div>";
                }
@@ -441,10 +408,10 @@ function article_callback2(transport, id) {
                                var counters = transport.responseXML.getElementsByTagName("counters")[0];
 
                                if (counters) {
-                                       debug("parsing piggybacked counters: " + counters);
+                                       console.log("parsing piggybacked counters: " + counters);
                                        parse_counters(counters, false);
                                } else {
-                                       debug("counters container not found in reply, requesting...");
+                                       console.log("counters container not found in reply, requesting...");
                                        request_counters();
                                }
                        }
@@ -458,21 +425,19 @@ function article_callback2(transport, id) {
 
 function view(id) {
        try {
-               debug("loading article: " + id);
+               console.log("loading article: " + id);
 
                if (offline_mode) return view_offline(id);
 
                var cached_article = cache_find(id);
 
-               debug("cache check result: " + (cached_article != false));
+               console.log("cache check result: " + (cached_article != false));
        
                enableHotkeys();
                hideAuxDlg();
 
                var query = "?op=view&id=" + param_escape(id);
 
-               var date = new Date();
-
                var neighbor_ids = getRelativePostIds(active_post_id);
 
                /* only request uncached articles */
@@ -485,7 +450,7 @@ function view(id) {
                        }
                }
 
-               debug("additional ids: " + cids_to_request.toString());                 
+               console.log("additional ids: " + cids_to_request.toString());                   
 
                /* additional info for piggyback counters */
 
@@ -495,10 +460,6 @@ function view(id) {
                        query = query + "&omode=flc";
                }
 
-               var date = new Date();
-               var timestamp = Math.round(date.getTime() / 1000);
-               query = query + "&ts=" + timestamp;
-
                query = query + "&cids=" + cids_to_request.toString();
 
                var crow = $("RROW-" + id);
@@ -512,25 +473,10 @@ function view(id) {
 
                if (!cached_article) {
 
-//                     notify_progress("Loading, please wait...", true);
-
-/*                     var content = $('HLC-' + id);
-
-                       if (content && !$('LL-' + id)) {
-                               var ll = document.createElement('img');
-               
-                               ll.src = 'images/indicator_tiny.gif';
-                               ll.className = 'hlLoading';
-                               ll.id = 'LL-' + id;
-
-                               content.appendChild(ll);
-
-                       } */
-
                        var upic = $('FUPDPIC-' + id);
 
                        if (upic) {     
-                               upic.src = 'images/indicator_white.gif'; 
+                               upic.src = getInitParam("sign_progress");
                        }
 
                } else if (cached_article && article_is_unread) {
@@ -575,7 +521,7 @@ function tMark_afh_off(effect) {
        try {
                var elem = effect.effects[0].element;
 
-               debug("tMark_afh_off : " + elem.id);
+               console.log("tMark_afh_off : " + elem.id);
 
                if (elem) {
                        elem.src = elem.src.replace("mark_set", "mark_unset");
@@ -592,7 +538,7 @@ function tPub_afh_off(effect) {
        try {
                var elem = effect.effects[0].element;
 
-               debug("tPub_afh_off : " + elem.id);
+               console.log("tPub_afh_off : " + elem.id);
 
                if (elem) {
                        elem.src = elem.src.replace("pub_set", "pub_unset");
@@ -636,7 +582,6 @@ function toggleMark(id, client_only, no_effects) {
                        }
 
                } else {
-                       //mark_img.src = "images/mark_unset.png";
                        mark_img.alt = __("Please wait...");
                        query = query + "&mark=0";
        
@@ -656,7 +601,7 @@ function toggleMark(id, client_only, no_effects) {
                if (!no_effects) update_local_feedlist_counters();
 
                if (!client_only) {
-                       debug(query);
+                       console.log(query);
 
                        new Ajax.Request("backend.php", {
                                parameters: query,
@@ -704,7 +649,6 @@ function togglePub(id, client_only, no_effects, note) {
                        query = query + "&pub=1";
 
                } else {
-                       //mark_img.src = "images/pub_unset.png";
                        mark_img.alt = __("Please wait...");
                        query = query + "&pub=0";
        
@@ -720,12 +664,33 @@ function togglePub(id, client_only, no_effects, note) {
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function(transport) { 
-                                       toggle_published_callback(transport); 
+                                       all_counters_callback2(transport);
+               
+                                       var note = transport.responseXML.getElementsByTagName("note")[0];
+               
+                                       if (note) {
+                                               var note_id = note.getAttribute("id");
+                                               var note_size = note.getAttribute("size");
+                                               var note_content = note.firstChild.nodeValue;
+               
+                                               var container = $('POSTNOTE-' + note_id);
+               
+                                               cache_invalidate(note_id);
+               
+                                               if (container) {
+                                                       if (note_size == "0") {
+                                                               Element.hide(container);
+                                                       } else {
+                                                               container.innerHTML = note_content;
+                                                               Element.show(container);
+                                                       }
+                                               }
+                                       }       
+
                                } });
                }
 
        } catch (e) {
-
                exception_error("togglePub", e);
        }
 }
@@ -743,8 +708,8 @@ function correctHeadlinesOffset(id) {
                var rel_offset_top = row.offsetTop - container.scrollTop;
                var rel_offset_bottom = row.offsetTop + row.offsetHeight - container.scrollTop;
        
-               debug("Rtop: " + rel_offset_top + " Rbtm: " + rel_offset_bottom);
-               debug("Vport: " + viewport);
+               console.log("Rtop: " + rel_offset_top + " Rbtm: " + rel_offset_bottom);
+               console.log("Vport: " + viewport);
 
                if (rel_offset_top <= 0 || rel_offset_top > viewport) {
                        container.scrollTop = row.offsetTop;
@@ -1146,12 +1111,6 @@ function selectionToggleMarked(cdm_mode) {
 
                        query = query + "&afid=" + getActiveFeedId();
 
-/*                     if (tagsAreDisplayed()) {
-                               query = query + "&omode=tl";
-                       } else {
-                               query = query + "&omode=flc";
-                       } */
-
                        query = query + "&omode=lc";
 
                        new Ajax.Request("backend.php", {
@@ -1194,12 +1153,6 @@ function selectionTogglePublished(cdm_mode) {
 
                        query = query + "&afid=" + getActiveFeedId();
 
-/*                     if (tagsAreDisplayed()) {
-                               query = query + "&omode=tl";
-                       } else {
-                               query = query + "&omode=flc";
-                       } */
-
                        query = query + "&omode=lc";
 
                        new Ajax.Request("backend.php", {
@@ -1356,7 +1309,7 @@ function deleteSelection() {
 
                query = "?op=rpc&subop=delete&ids=" + param_escape(rows);
 
-               debug(query);
+               console.log(query);
 
                new Ajax.Request("backend.php", {
                        parameters: query,
@@ -1408,7 +1361,7 @@ function archiveSelection() {
 
                query = "?op=rpc&subop="+op+"&ids=" + param_escape(rows);
 
-               debug(query);
+               console.log(query);
 
                for (var i = 0; i < rows.length; i++) {
                        cache_invalidate(rows[i]);
@@ -1456,10 +1409,8 @@ function catchupSelection() {
        
                if ($("headlinesList")) {
                        selectionToggleUnread(false, false, 'viewCurrentFeed()', true);
-       //              selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
                } else {
                        selectionToggleUnread(true, false, 'viewCurrentFeed()', true)
-       //              cdmSelectArticles('none');
                }
 
        } catch (e) {
@@ -1476,39 +1427,6 @@ function editArticleTags(id, feed_id, cdm_enabled) {
                           });
 }
 
-
-function tag_saved_callback(transport) {
-       try {
-               debug("in tag_saved_callback");
-
-               closeInfoBox();
-               notify("");
-
-               if (tagsAreDisplayed()) {
-                       _reload_feedlist_after_view = true;
-               }
-
-
-               if (transport.responseXML) {
-                       var tags_str = transport.responseXML.getElementsByTagName("tags-str")[0];
-                       
-                       if (tags_str) {
-                               var id = tags_str.getAttribute("id");
-
-                               if (id) {
-                                       var tags = $("ATSTR-" + id);
-                                       if (tags) {
-                                               tags.innerHTML = tags_str.firstChild.nodeValue;
-                                       }
-                               }
-                       }
-               }
-
-       } catch (e) {
-               exception_error("tag_saved_callback", e);
-       }
-}
-
 function editTagsSave() {
 
        notify_progress("Saving article tags...");
@@ -1519,14 +1437,42 @@ function editTagsSave() {
 
        query = "?op=rpc&subop=setArticleTags&" + query;
 
-       debug(query);
+       console.log(query);
 
        new Ajax.Request("backend.php", {
                parameters: query,
                onComplete: function(transport) {
-                               tag_saved_callback(transport);
+                               try {
+                                       console.log("tags saved...");
+                       
+                                       closeInfoBox();
+                                       notify("");
+                       
+                                       if (tagsAreDisplayed()) {
+                                               _reload_feedlist_after_view = true;
+                                       }                       
+                       
+                                       if (transport.responseXML) {
+                                               var tags_str = transport.responseXML.getElementsByTagName("tags-str")[0];
+                                               
+                                               if (tags_str) {
+                                                       var id = tags_str.getAttribute("id");
+                       
+                                                       if (id) {
+                                                               var tags = $("ATSTR-" + id);
+                                                               if (tags) {
+                                                                       tags.innerHTML = tags_str.firstChild.nodeValue;
+                                                               }
+
+                                                               cache_invalidate(id);
+                                                       }
+                                               }
+                                       }
+                       
+                               } catch (e) {
+                                       exception_error("editTagsSave", e);
+                               }
                        } });
-
 }
 
 function editTagsInsert() {
@@ -1555,7 +1501,7 @@ function editTagsInsert() {
 }
 
 function cdmScrollViewport(where) {
-       debug("cdmScrollViewport: " + where);
+       console.log("cdmScrollViewport: " + where);
 
        var ctr = $("headlinesInnerContainer");
 
@@ -1674,7 +1620,7 @@ function cdmWatchdog() {
                                if (ctr.scrollTop <= e.offsetTop && e.offsetTop + e.offsetHeight <=
                                                ctr.scrollTop + ctr.offsetHeight) {
 
-//                                     debug(e.id + " is visible " + e.offsetTop + "." + 
+//                                     console.log(e.id + " is visible " + e.offsetTop + "." + 
 //                                             (e.offsetTop + e.offsetHeight) + " vs " + ctr.scrollTop + "." +
 //                                             (ctr.scrollTop + ctr.offsetHeight));
 
@@ -1702,7 +1648,7 @@ function cdmWatchdog() {
                        e = e.nextSibling;
                }
 
-               debug("cdmWatchdog, ids= " + ids.toString());
+               console.log("cdmWatchdog, ids= " + ids.toString());
 
                if (ids.length > 0) {
 
@@ -1736,8 +1682,7 @@ function cdmWatchdog() {
 function cache_inject(id, article, param) {
        try {
                if (!cache_check_param(id, param)) {
-                       debug("cache_article: miss: " + id + " [p=" + param + "]");
-       
+                       console.log("cache_article: miss: " + id + " [p=" + param + "]");
        
                        if (db) {
 
@@ -1758,7 +1703,7 @@ function cache_inject(id, article, param) {
                        }
        
                } else {
-                       debug("cache_article: hit: " + id + " [p=" + param + "]");
+                       console.log("cache_article: hit: " + id + " [p=" + param + "]");
                }
        } catch (e) {   
                exception_error("cache_inject", e);
@@ -1881,7 +1826,7 @@ function cache_expire() {
        }
 }
 
-function cache_empty() {
+function cache_flush() {
        article_cache = new Array();
 }
 
@@ -1897,7 +1842,7 @@ function cache_invalidate(id) {
 
                        while (i < article_cache.length) {
                                if (article_cache[i]["id"] == id) {
-                                       debug("cache_invalidate: removed id " + id);
+                                       console.log("cache_invalidate: removed id " + id);
                                        article_cache.splice(i, 1);
                                        return true;
                                }
@@ -1905,7 +1850,7 @@ function cache_invalidate(id) {
                        }
                }
 
-               debug("cache_invalidate: id not found: " + id);
+               console.log("cache_invalidate: id not found: " + id);
                return false;
        } catch (e) {
                exception_error("cache_invalidate", e);
@@ -1934,31 +1879,13 @@ function cdmClicked(id) {
        } 
 }
 
-function preload_article_callback(transport) {
-       try {
-               if (transport.responseXML) {
-                       var articles = transport.responseXML.getElementsByTagName("article");
-
-                       for (var i = 0; i < articles.length; i++) {
-                               var id = articles[i].getAttribute("id");
-                               if (!cache_check(id)) {
-                                       cache_inject(id, articles[i].firstChild.nodeValue);                             
-                                       debug("preloaded article: " + id);
-                               }
-                       }
-               }
-       } catch (e) {
-               exception_error("preload_article_callback", e);
-       }
-}
-
 function preloadArticleUnderPointer(id) {
        try {
                if (getInitParam("bw_limit") == "1") return;
 
                if (post_under_pointer == id && !cache_check(id)) {
 
-                       debug("trying to preload article " + id);
+                       console.log("trying to preload article " + id);
 
                        var neighbor_ids = getRelativePostIds(id, 1);
 
@@ -1971,7 +1898,7 @@ function preloadArticleUnderPointer(id) {
                                        cids_to_request.push(neighbor_ids[i]);
                                }
                        }
-                       debug("additional ids: " + cids_to_request.toString());
+                       console.log("additional ids: " + cids_to_request.toString());
 
                        cids_to_request.push(id);
 
@@ -1981,7 +1908,15 @@ function preloadArticleUnderPointer(id) {
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function(transport) { 
-                                       preload_article_callback(transport);
+                                       var articles = transport.responseXML.getElementsByTagName("article");
+
+                                       for (var i = 0; i < articles.length; i++) {
+                                               var id = articles[i].getAttribute("id");
+                                               if (!cache_check(id)) {
+                                                       cache_inject(id, articles[i].firstChild.nodeValue);                             
+                                                       console.log("preloaded article: " + id);
+                                               }
+                                       }
                        } });
                }
        } catch (e) {
@@ -2018,12 +1953,12 @@ function headlines_scroll_handler() {
 
                var toolbar_form = document.forms["main_toolbar_form"];
 
-               debug((e.scrollTop + e.offsetHeight) + " vs " + e.scrollHeight + " dis? " +
+               console.log((e.scrollTop + e.offsetHeight) + " vs " + e.scrollHeight + " dis? " +
                        _infscroll_disable);
 
                if (e.scrollTop + e.offsetHeight > e.scrollHeight - 100) {
                        if (!_infscroll_disable) {
-                               debug("more cowbell!");
+                               console.log("more cowbell!");
                                viewNextFeedPage();
                        }
                }
@@ -2084,7 +2019,7 @@ function catchupRelativeToArticle(below) {
                } else {
                        var msg = __("Mark %d article(s) as read?").replace("%d", ids_to_mark.length);
 
-                       if (confirm(msg)) {
+                       if (getInitParam("confirm_feed_catchup") != 1 || confirm(msg)) {
 
                                for (var i = 0; i < ids_to_mark.length; i++) {
                                        var e = $("RROW-" + ids_to_mark[i]);
@@ -2127,7 +2062,7 @@ function cdmExpandArticle(a_id) {
 
 
        } catch (e) {
-               exception_error("appearBlockElementF", e);
+               exception_error("cdmExpandArticle", e);
        }
 
 }
@@ -2246,43 +2181,6 @@ function zoomToArticle(id) {
        }
 }
 
-function showOriginalArticleInline(id) {
-       try {
-
-               var query = "?op=rpc&subop=getArticleLink&id=" + id;
-
-               notify_progress("Loading, please wait...", true);
-
-               new Ajax.Request("backend.php", {
-                       parameters: query,
-                       onComplete: function(transport) { 
-
-                               if (transport.responseXML) {
-                       
-                                       var link = transport.responseXML.getElementsByTagName("link")[0];
-                                       var id = transport.responseXML.getElementsByTagName("id")[0];
-
-                                       notify("");
-
-                                       if (link && id) {
-                                               link = link.firstChild.nodeValue;
-
-                                               var ci = $("content-insert");
-
-                                               var tmp = "<iframe id=\"inline_orig_article\" width=\""+ci.offsetWidth+"\" height=\""+ci.offsetHeight+"\" style=\"border-width : 0px;\" src=\""+link+"\"></iframe>";
-
-                                               render_article(tmp);
-
-                                       }
-                               }
-                       } });
-
-       } catch (e) {
-               exception_error("showOriginalArticleInline", e);
-       }
-}
-
-
 function scrollArticle(offset) {
        try {
                if (!isCdmMode()) {
@@ -2364,3 +2262,74 @@ function publishWithNote(id, def_note) {
                exception_error("publishWithNote", e);
        }
 }
+
+function emailArticle(id) {
+       try {
+               if (!id) {
+                       var ids = getSelectedArticleIds2();
+
+                       if (ids.length == 0) {
+                               alert(__("No articles are selected."));
+                               return;
+                       }
+
+                       id = ids.toString();
+               }
+
+               displayDlg('emailArticle', id, 
+                  function () {                                
+                               document.forms['article_email_form'].destination.focus();
+
+                          new Ajax.Autocompleter('destination', 'destination_choices',
+                                  "backend.php?op=rpc&subop=completeEmails",
+                                  { tokens: '', paramName: "search" });
+
+                       });
+
+       } catch (e) {
+               exception_error("emailArticle", e);
+       }
+}
+
+function emailArticleDo() {
+       try {
+               var f = document.forms['article_email_form'];
+
+               if (f.destination.value == "") {
+                       alert("Please fill in the destination email.");
+                       return;
+               }
+
+               if (f.subject.value == "") {
+                       alert("Please fill in the subject.");
+                       return;
+               }
+
+               var query = Form.serialize("article_email_form");
+
+//             console.log(query);
+
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) { 
+                               try {
+
+                                       var error = transport.responseXML.getElementsByTagName('error')[0];
+
+                                       if (error) {
+                                               alert(__('Error sending email:') + ' ' + error.firstChild.nodeValue);
+                                       } else {
+                                               notify_info('Your message has been sent.');
+                                               closeInfoBox();
+                                       }
+
+                               } catch (e) {
+                                       exception_error("sendEmailDo", e);
+                               }
+
+                       } });
+
+       } catch (e) {
+               exception_error("emailArticleDo", e);
+       }
+}