Added: james/site-cms/trunk/content/assets/javascript/index.js
URL: 
http://svn.apache.org/viewvc/james/site-cms/trunk/content/assets/javascript/index.js?rev=1335420&view=auto
==============================================================================
--- james/site-cms/trunk/content/assets/javascript/index.js (added)
+++ james/site-cms/trunk/content/assets/javascript/index.js Tue May  8 11:27:04 
2012
@@ -0,0 +1,140 @@
+$(document).ready(function() {
+    $('input[type=text]#searchbox').keyup(function() {
+        input = $(this).val();
+        if (input.length != 0) {
+            var filter = input.split(' ');
+            var regexps = new Array();
+            var idx = 0;
+
+            for (var i = 0; i < filter.length; i++) {
+                if (!$.trim(filter[i]).length == 0) {
+                    regexps[idx++] = new RegExp(filter[i],"i");
+                }
+            }
+        }
+
+        // filtering apis
+        $('div#checkboxes-check > ul > li > 
input[type=button].button').each(function(i, val) {
+            var toShow = false;
+            if (input.length == 0) {
+                toShow = true;
+            } else {
+                for (var i = 0; i < regexps.length; i++) {
+                    if (regexps[i].test($(val).attr('value'))) {
+                        toShow = true;
+                        break;
+                    }
+                }
+            }
+            if (toShow) {
+                $(val).show('fast');
+            } else {
+                $(val).hide();
+            }
+        });
+
+        // used only in click-filtering mode
+        $('#api-info').hide();
+    });
+});
+
+var close = ' X';
+var selectedClasses = new Array(); // classes to use
+var correspondingExamples = new Array(); // classes to use
+
+function filterExamples($button) {
+    // resetting filter by text input
+    $('#searchbox').val('');
+
+    // selecting the clicked button
+    if ($button.selected) {
+        $button.value = $button.value.substring(0, $button.value.length - 
close.length);
+        for (var i = 0; i < selectedClasses.length; i++) {
+            if (selectedClasses[i] == $($button).attr('api')) {
+                selectedClasses.splice(i, 1);
+                correspondingExamples.splice(i, 1);
+                break;
+            }
+        }
+    } else {
+        $button.value = $button.value.concat(close);
+        selectedClasses.push($($button).attr('api'));
+        correspondingExamples.push($($button).attr('class'));
+    }
+    $button.selected = !$button.selected;
+
+    // refreshing
+    var filteringForExamples = ''; // for examples
+    if (selectedClasses.length > 0) {
+        filteringForExamples = '.'.concat(selectedClasses.join('.'));
+    }
+
+    var filteringForButtons = ''; // for buttons
+    if (correspondingExamples.length > 0) {
+        for (var i = 0; i < correspondingExamples.length; i++) {
+            filteringForButtons = filteringForButtons.concat(' 
').concat(correspondingExamples[i]);
+        }
+        var examplesForButtons = $.unique(filteringForButtons.split(' '));
+        filteringForButtons = '.'.concat(examplesForButtons.join('.'));
+    }
+
+    // filtering examples
+    $('div#examples').find('li' + filteringForExamples).show('fast');
+    if (selectedClasses.length > 0) {
+        $('div#examples').find('li:not(' + filteringForExamples + 
').example').hide();
+    }
+
+    // filtering buttons (apis)
+    if (correspondingExamples.length > 0) {
+        var examples = new Array();
+        $('div#examples').find('li' + filteringForExamples).each(function(i, 
val) {
+            examples.push($(val).attr('example'));
+        });
+        examples = filterArray(examples);
+
+        $('div#checkboxes-check > ul > li > input[type=button].button').hide();
+        for (var i = 0; i < examples.length; i++) {
+            $('li[example="' + 
examples[i].substring(examples[i].lastIndexOf('_') + 1, examples[i].length) + 
'"]').each(function(i, val) {
+                $buttons = $(val).attr('class');
+                $buttons = $buttons.substring('example '.length, 
$buttons.length);
+                $buttonsArray = $buttons.split(' ');
+                for (var b = 0; b < $buttonsArray.length; b++) {
+                    if (shouldIHideIt(examples, $buttonsArray[b]) && 
selectedClasses.indexOf($buttonsArray[b]) == -1) {
+                        $('input[api="' + $buttonsArray[b] + '"]').hide();
+                    } else {
+                        $('input[api="' + $buttonsArray[b] + 
'"]').show('fast');
+                    }
+                }
+            });
+        }
+
+        $('#api-info').show();
+        $('#api-info').text(examples.length + ' examples are matching');
+    } else {
+        $('div#checkboxes-check > ul > li > 
input[type=button].button').show('fast');
+        $('#api-info').hide();
+    }
+}
+
+function filterArray(list) {
+    var out = new Array();
+    for (var i = 0; i < list.length; i++) {
+        if (list[i].length > 0) {
+            out.push(list[i]);
+        }
+    }
+    return out;
+}
+
+function shouldIHideIt(list, api) {
+    for (var i = 0; i < list.length; i++) {
+        $item = $('li[example="' + list[i].substring(list[i].lastIndexOf('_') 
+ 1, list[i].length) + '"]').next().attr('class');
+        if ($item != undefined && $item != false) {
+            $apis = $item.split(' ');
+            if ($apis.indexOf(api) == -1) {
+                return false;
+            }
+        }
+    }
+    return true;
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to