]> git.mxchange.org Git - friendica.git/blobdiff - include/main.js
move icons style in new file
[friendica.git] / include / main.js
index 750cce74c0ed11a3fdf440071d8f0c01b2eeaaad..83dcc720c7a165d55a57a2f85ec771cbc6f05067 100644 (file)
        var pr = 0;
        var liking = 0;
        var in_progress = false;
+       var langSelect = false;
+       var commentBusy = false;
 
-       $(document).ready(function() {
+       $(function() {
                $.ajaxSetup({cache: false});
 
                msie = $.browser.msie ;
+               
+               /* setup navbar menus */
+               
+               
+               
+               /* setup onoff widgets */
+               $(".onoff input").each(function(){
+                       val = $(this).val();
+                       id = $(this).attr("id");
+                       $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
+                       
+               });
+               $(".onoff > a").click(function(event){
+                       event.preventDefault(); 
+                       var input = $(this).siblings("input");
+                       var val = 1-input.val();
+                       var id = input.attr("id");
+                       $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
+                       $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden");
+                       input.val(val);
+                       //console.log(id);
+               });
+               
+               /* setup field_richtext */
+               setupFieldRichtext();
+
+               /* popup menus */
+               $('a[rel^=#]').click(function(e){
+                       menu = $( $(this).attr('rel') );
+                       e.stopPropagation();
+                       if (menu.attr('popup')=="false") return false;
+                       $(this).parent().toggleClass("selected");
+                       menu.toggle();
+                       return false;
+               });
+               
+               
+
+               /* notifications template */
+               var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
+               var notifications_empty = unescape($("#nav-notifications-menu").html());
+               
+               /* nav update event  */
+               $('nav').bind('nav-update', function(e,data){;
+                       var net = $(data).find('net').text();
+                       if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') }
+                       $('#net-update').html(net);
+
+                       var home = $(data).find('home').text();
+                       if(home == 0) { home = '';  $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
+                       $('#home-update').html(home);
+
+                       var eNotif = $(data).find('notif')
+                       notif = eNotif.attr('count');
+                       if (notif>0){
+                               nnm = $("#nav-notifications-menu");
+                               nnm.html("");
+                               nnm.attr('popup','true');
+                               eNotif.children("note").each(function(){
+                                       e = $(this);
+                                       text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
+                                       html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'));
+                                       nnm.append(html);
+                               });
+                       } else {
+                               $("#nav-notifications-menu").html(notifications_empty);
+                       }
+                       if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') }
+                       $('#notify-update').html(notif);
+                       
+               });
+               
+               
                NavUpdate(); 
                // Allow folks to stop the ajax page updates with the pause/break key
                $(document).keypress(function(event) {
                                        $('#pause').html('');
                                }
                        }
-// this is shift-home on FF, but $ on IE, disabling until I figure out why the diff.
-// update: incompatible usage of onKeyDown vs onKeyPress
-//                     if(event.keyCode == '36' && event.shiftKey == true) {
-//                             if(homebase !== undefined) {
-//                                     event.preventDefault();
-//                                     document.location = homebase;
-//                             }
-//                     }
+                       else {
+                               // any key to resume
+                               if(stopped == true) {
+                                       stopped = false;
+                                       $('#pause').html('');
+                               }
+                       }
+
                });                                     
        });
 
        function NavUpdate() {
 
-               if($('#live-network').length) { src = 'network'; liveUpdate(); }
-               if($('#live-profile').length) { src = 'profile'; liveUpdate(); }
+               if($('#live-network').length)   { src = 'network'; liveUpdate(); }
+               if($('#live-profile').length)   { src = 'profile'; liveUpdate(); }
+               if($('#live-community').length) { src = 'community'; liveUpdate(); }
                if($('#live-display').length) { 
                        if(liking) {
                                liking = 0;
                if(! stopped) {
                        $.get("ping",function(data) {
                                $(data).find('result').each(function() {
-                                       var net = $(this).find('net').text();
-                                       if(net == 0) { net = ''; }
-                                       $('#net-update').html(net);
-                                       var home = $(this).find('home').text();
-                                       if(home == 0) { home = ''; }
-                                       $('#home-update').html(home);
-                                       var mail = $(this).find('mail').text();
-                                       if(mail == 0) { mail = ''; }
-                                       $('#mail-update').html(mail);
-                                       var intro = $(this).find('intro').text();
-                                       var register = $(this).find('register').text();
-                                       if(intro == 0) { intro = ''; }
-                                       if(register != 0 && intro != '') { intro = intro+'/'+register; }
-                                       if(register != 0 && intro == '') { intro = '0/'+register; }
-                                       $('#notify-update').html(intro);
-
+                                       // send nav-update event
+                                       $('nav').trigger('nav-update', this);
                                });
                        }) ;
                }
                timer = setTimeout(NavUpdate,30000);
-
        }
 
        function liveUpdate() {
 
                in_progress = true;
                var udargs = ((netargs.length) ? '/' + netargs : '');
-               var update_url = 'update_' + src + udargs + '?p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
+               var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
 
                $.get(update_url,function(data) {
                        in_progress = false;
                        $('.ccollapse-wrapper',data).each(function() {
                                var ident = $(this).attr('id');
+                               var is_hidden = $('#' + ident).is(':hidden');
                                if($('#' + ident).length) {
                                        $('#' + ident).replaceWith($(this));
+                                       if(is_hidden)
+                                               $('#' + ident).hide();
                                }
                        });
                        $('.wall-item-outside-wrapper',data).each(function() {
                                var ident = $(this).attr('id');
-                               if($('#' + ident).length == 0) { 
+                               if($('#' + ident).length == 0) {
                                        $('img',this).each(function() {
                                                $(this).attr('src',$(this).attr('dst'));
                                        });
                                else { 
 
                                        $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); 
-                                       $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper'));
+                                       if($('#' + ident + ' ' + '.comment-edit-text-empty').length)
+                                               $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper'));
                                        $('#' + ident + ' ' + '.wall-item-like').replaceWith($(this).find('.wall-item-like'));
                                        $('#' + ident + ' ' + '.wall-item-dislike').replaceWith($(this).find('.wall-item-dislike'));
                                        $('#' + ident + ' ' + '.my-comment-photo').each(function() {
                                prev = ident; 
                        });
                        $('.like-rotator').hide();
+                       if(commentBusy) {
+                               commentBusy = false;
+                               $('body').css('cursor', 'auto');
+                       }
                });
-
        }
 
        function imgbright(node) {
-               $(node).attr("src",$(node).attr("src").replace('hide','show'));
-               $(node).css('width',24);
-               $(node).css('height',24);
+               $(node).removeClass("drophide").addClass("drop");
        }
 
        function imgdull(node) {
-               $(node).attr("src",$(node).attr("src").replace('show','hide'));
-               $(node).css('width',16);
-               $(node).css('height',16);
+               $(node).removeClass("drop").addClass("drophide");
        }
 
        // Since our ajax calls are asynchronous, we will give a few 
                liking = 1;
        }
 
+       function dostar(ident) {
+               $('#like-rotator-' + ident.toString()).show();
+               $.get('starred/' + ident.toString(), function(data) {
+                       if(data.match(/1/)) {
+                               $('#starred-' + ident.toString()).addClass('starred');
+                               $('#starred-' + ident.toString()).removeClass('unstarred');
+                       }
+                       else {                  
+                               $('#starred-' + ident.toString()).addClass('unstarred');
+                               $('#starred-' + ident.toString()).removeClass('starred');
+                       }
+                       $('#like-rotator-' + ident.toString()).hide();  
+               });
+       }
+
        function getPosition(e) {
                var cursor = {x:0, y:0};
                if ( e.pageX || e.pageY  ) {
        }
 
        function post_comment(id) {
+               commentBusy = true;
+               $('body').css('cursor', 'wait');
                $.post(  
              "item",  
              $("#comment-edit-form-" + id).serialize(),
                                if(data.reload) {
                                        window.location.href=data.reload;
                                }
-                                       
                        },
                        "json"  
          );  
          return false;  
        }
 
+
+    function bin2hex(s){  
+        // Converts the binary representation of data to hex    
+        //   
+        // version: 812.316  
+        // discuss at: http://phpjs.org/functions/bin2hex  
+        // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)  
+        // +   bugfixed by: Onno Marsman  
+        // +   bugfixed by: Linuxworld  
+        // *     example 1: bin2hex('Kev');  
+        // *     returns 1: '4b6576'  
+        // *     example 2: bin2hex(String.fromCharCode(0x00));  
+        // *     returns 2: '00'  
+        var v,i, f = 0, a = [];  
+        s += '';  
+        f = s.length;  
+          
+        for (i = 0; i<f; i++) {  
+            a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");  
+        }  
+          
+        return a.join('');  
+    }  
+
+       function groupChangeMember(gid,cid) {
+               $('body .fakelink').css('cursor', 'wait');
+               $.get('group/' + gid + '/' + cid, function(data) {
+                               $('#group-update-wrapper').html(data);
+                               $('body .fakelink').css('cursor', 'auto');                              
+               });
+       }
+
+       function profChangeMember(gid,cid) {
+               $('body .fakelink').css('cursor', 'wait');
+               $.get('profperm/' + gid + '/' + cid, function(data) {
+                               $('#prof-update-wrapper').html(data);
+                               $('body .fakelink').css('cursor', 'auto');                              
+               });
+       }
+
+       function contactgroupChangeMember(gid,cid) {
+               $('body').css('cursor', 'wait');
+               $.get('contactgroup/' + gid + '/' + cid, function(data) {
+                               $('body').css('cursor', 'auto');
+               });
+       }
+
+
+function checkboxhighlight(box) {
+  if($(box).is(':checked')) {
+       $(box).addClass('checkeditem');
+  }
+  else {
+       $(box).removeClass('checkeditem');
+  }
+}
+
+function setupFieldRichtext(){
+       tinyMCE.init({
+               theme : "advanced",
+               mode : "specific_textareas",
+               editor_selector: "fieldRichtext",
+               plugins : "bbcode,paste",
+               theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+               theme_advanced_buttons2 : "",
+               theme_advanced_buttons3 : "",
+               theme_advanced_toolbar_location : "top",
+               theme_advanced_toolbar_align : "center",
+               theme_advanced_blockformats : "blockquote,code",
+               paste_text_sticky : true,
+               entity_encoding : "raw",
+               add_unload_trigger : false,
+               remove_linebreaks : false,
+               force_p_newlines : false,
+               force_br_newlines : true,
+               forced_root_block : '',
+               convert_urls: false,
+               content_css: baseurl+"/view/custom_tinymce.css",
+               theme_advanced_path : false,
+       });
+}
+
+/** 
+ * sprintf in javascript 
+ *     "{0} and {1}".format('zero','uno'); 
+ **/
+String.prototype.format = function() {
+    var formatted = this;
+    for (var i = 0; i < arguments.length; i++) {
+        var regexp = new RegExp('\\{'+i+'\\}', 'gi');
+        formatted = formatted.replace(regexp, arguments[i]);
+    }
+    return formatted;
+};
+// Array Remove
+Array.prototype.remove = function(item) {
+  to=undefined; from=this.indexOf(item);
+  var rest = this.slice((to || from) + 1 || this.length);
+  this.length = from < 0 ? this.length + from : from;
+  return this.push.apply(this, rest);
+};
+