]> git.wh0rd.org - tt-rss.git/blobdiff - functions.js
hide load progress
[tt-rss.git] / functions.js
index ca51b1acd12e7e3a9d42381ab8f1dc56ca45e7d4..1d45b1cbf8b03c1f568e5c68719273193439d69f 100644 (file)
@@ -129,11 +129,10 @@ function hotkey_handler(e) {
                seq = seq + "" + keycode;
        }
 
-       var piggie = document.getElementById("piggie");
-
-       if (piggie) {
+       if (document.getElementById("piggie")) {
 
                if (seq.match("807371717369")) {
+                       seq = "";
                        localPiggieFunction(true);
                } else {
                        localPiggieFunction(false);
@@ -156,7 +155,11 @@ function cleanSelectedList(element) {
        if (!document.getElementById("feedCatHolder")) {
                for (i = 0; i < content.childNodes.length; i++) {
                        var child = content.childNodes[i];
-                       child.className = child.className.replace("Selected", "");
+                       try {
+                               child.className = child.className.replace("Selected", "");
+                       } catch (e) {
+                               //
+                       }
                }
        } else {
                for (i = 0; i < content.childNodes.length; i++) {
@@ -165,7 +168,7 @@ function cleanSelectedList(element) {
                        if (child.id == "feedCatHolder") {
                                var fcat = child.lastChild;
                                for (j = 0; j < fcat.childNodes.length; j++) {
-                                       var feed = fcat.childNodes[j];
+                                       var feed = fcat.childNodes[j];                                  
                                        feed.className = feed.className.replace("Selected", "");
                                }               
                        }
@@ -181,7 +184,6 @@ function cleanSelected(element) {
        for (i = 0; i < content.rows.length; i++) {
                content.rows[i].className = content.rows[i].className.replace("Selected", "");
        }
-
 }
 
 function getVisibleUnreadHeadlines() {
@@ -239,6 +241,12 @@ function markHeadline(id) {
                        row.className = row.className = "Active";
                }
                
+               var check = document.getElementById("RCHK-" + id);
+
+               if (check) {
+                       check.checked = true;
+               }
+
                row.className = row.className + "Selected"; 
                
        }
@@ -355,9 +363,15 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
        xmlhttp_rpc = new XMLHttpRequest();
 }
 
-function parse_counters(reply, f_document) {
+function parse_counters(reply, f_document, title_obj, scheduled_call) {
        try {
                for (var l = 0; l < reply.childNodes.length; l++) {
+                       if (!reply.childNodes[l] ||
+                               typeof(reply.childNodes[l].getAttribute) == "undefined") {
+                               // where did this come from?
+                               continue;
+                       }
+
                        var id = reply.childNodes[l].getAttribute("id");
                        var t = reply.childNodes[l].getAttribute("type");
                        var ctr = reply.childNodes[l].getAttribute("counter");
@@ -365,8 +379,8 @@ function parse_counters(reply, f_document) {
                        var has_img = reply.childNodes[l].getAttribute("hi");
        
                        if (id == "global-unread") {
-                               parent.global_unread = ctr;
-                               parent.updateTitle();
+                               title_obj.global_unread = ctr;
+                               title_obj.updateTitle();
                                continue;
                        }
        
@@ -384,6 +398,11 @@ function parse_counters(reply, f_document) {
                        var feed_img = f_document.getElementById("FIMG-" + id);
 
                        if (feedctr && feedu && feedr) {
+
+                               if (feedu.innerHTML != ctr && id == getActiveFeedId() && scheduled_call) {
+                                       var hf = title_obj.parent.frames["headlines-frame"];
+                                       hf.location.reload(true);
+                               }
                
                                feedu.innerHTML = ctr;
 
@@ -419,6 +438,9 @@ function parse_counters(reply, f_document) {
        }
 }
 
+// this one is called from feedlist context
+// thus title_obj passed to parse_counters is parent (e.g. main ttrss window)
+
 function all_counters_callback() {
        if (xmlhttp_rpc.readyState == 4) {
                try {
@@ -430,7 +452,7 @@ function all_counters_callback() {
                        var reply = xmlhttp_rpc.responseXML.firstChild;
                        var f_document = parent.frames["feeds-frame"].document;
 
-                       parse_counters(reply, f_document);
+                       parse_counters(reply, f_document, parent);
        
                } catch (e) {
                        exception_error("all_counters_callback", e);
@@ -494,8 +516,12 @@ function popupHelp(tid) {
 
 function hideOrShowFeeds(doc, hide) {
 
+       if (!doc.styleSheets) return;
+
        var css_rules = doc.styleSheets[0].cssRules;
 
+       if (!css_rules || !css_rules.length) return;
+
        for (i = 0; i < css_rules.length; i++) {
                var rule = css_rules[i];
 
@@ -511,8 +537,13 @@ function hideOrShowFeeds(doc, hide) {
 
 }
 
-function fatalError(code) {
-       window.location = "error.php?c=" + param_escape(code);
+function fatalError(code, params) {
+       if (!params) {
+               window.location = "error.php?c=" + param_escape(code);
+       } else {
+               window.location = "error.php?c=" + param_escape(code) + 
+                       "&p=" + param_escape(params);
+       }
 }
 
 function selectTableRow(r, do_select) {
@@ -523,8 +554,28 @@ function selectTableRow(r, do_select) {
        }
 }
 
+function selectTableRowById(elem_id, check_id, do_select) {
+
+       try {
+
+               var row = document.getElementById(elem_id);
+
+               if (row) {
+                       selectTableRow(row, do_select);
+               }               
+
+               var check = document.getElementById(check_id);
+
+               if (check) {
+                       check.checked = do_select;
+               }
+       } catch (e) {
+               exception_error("selectTableRowById", e);
+       }
+}
+
 function selectTableRowsByIdPrefix(content_id, prefix, check_prefix, do_select, 
-       classcheck) {
+       classcheck, reset_others) {
 
        var content = document.getElementById(content_id);
 
@@ -538,14 +589,34 @@ function selectTableRowsByIdPrefix(content_id, prefix, check_prefix, do_select,
        
                        if (content.rows[i].id.match(prefix)) {
                                selectTableRow(content.rows[i], do_select);
+                       
+                               var row_id = content.rows[i].id.replace(prefix, "");
+                               var check = document.getElementById(check_prefix + row_id);
+
+                               if (check) {
+                                       check.checked = do_select;
+                               }
+                       } else if (reset_others) {
+                               selectTableRow(content.rows[i], false);
+
+                               var row_id = content.rows[i].id.replace(prefix, "");
+                               var check = document.getElementById(check_prefix + row_id);
+
+                               if (check) {
+                                       check.checked = false;
+                               }
+
                        }
+               } else if (reset_others) {
+                       selectTableRow(content.rows[i], false);
 
                        var row_id = content.rows[i].id.replace(prefix, "");
                        var check = document.getElementById(check_prefix + row_id);
 
                        if (check) {
-                               check.checked = do_select;
+                               check.checked = false;
                        }
+
                }
        }
 }
@@ -588,6 +659,20 @@ function toggleSelectRowById(sender, id) {
        }
 }
 
+function toggleSelectListRow(sender) {
+       var parent_row = sender.parentNode;
+
+       if (sender.checked) {
+               if (!parent_row.className.match("Selected")) {
+                       parent_row.className = parent_row.className + "Selected";
+               }
+       } else {
+               if (parent_row.className.match("Selected")) {
+                       parent_row.className = parent_row.className.replace("Selected", "");
+               }
+       }
+}
+
 
 function toggleSelectRow(sender) {
        var parent_row = sender.parentNode.parentNode;
@@ -744,3 +829,63 @@ function showBlockElement(id) {
 function hideParentElement(e) {
        e.parentNode.style.display = "none";
 }
+
+function dropboxSelect(e, v) {
+       for (i = 0; i < e.length; i++) {
+               if (e[i].value == v) {
+                       e.selectedIndex = i;
+                       break;
+               }
+       }
+}
+
+// originally stolen from http://www.11tmr.com/11tmr.nsf/d6plinks/MWHE-695L9Z
+// bugfixed just a little bit :-)
+function getURLParam(strParamName){
+  var strReturn = "";
+  var strHref = window.location.href;
+
+  if (strHref.indexOf("#") == strHref.length-1) {
+               strHref = strHref.substring(0, strHref.length-1);
+  }
+
+  if ( strHref.indexOf("?") > -1 ){
+    var strQueryString = strHref.substr(strHref.indexOf("?"));
+    var aQueryString = strQueryString.split("&");
+    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
+      if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
+        var aParam = aQueryString[iParam].split("=");
+        strReturn = aParam[1];
+        break;
+      }
+    }
+  }
+  return strReturn;
+} 
+
+function leading_zero(p) {
+       var s = String(p);
+       if (s.length == 1) s = "0" + s;
+       return s;
+}
+
+function center_element(e) {
+
+       try {
+               var c_width = document.body.clientWidth;
+               var c_height = document.body.clientHeight;
+       
+               var c_scroll = document.body.scrollTop;
+       
+               var e_width = e.clientWidth;
+               var e_height = e.clientHeight;
+       
+               var set_y = (c_height / 2) + c_scroll - (e_height / 2);
+               var set_x = (c_width / 2) - (e_width / 2);
+       
+               e.style.top = set_y + "px";
+               e.style.left = set_x + "px";
+       } catch (e) {
+               exception_error("center_element", e);
+       }
+}