]> git.mxchange.org Git - friendica.git/blob - view/theme/frost/js/main.js
bug in main.js for VideoJS on initial page load
[friendica.git] / view / theme / frost / js / main.js
1
2         function openClose(listID) {
3 /*              if(document.getElementById(theID).style.display == "block") { 
4                         document.getElementById(theID).style.display = "none" 
5                 }
6                 else { 
7                         document.getElementById(theID).style.display = "block" 
8                 }*/
9                 listID = "#" + listID.replace(/:/g, "\\:");
10                 listID = listID.replace(/\./g, "\\.");
11                 listID = listID.replace(/@/g, "\\@");
12
13                 if($j(listID).is(":visible")) {
14                         $j(listID).hide();
15                         $j(listID+"-wrapper").show();
16                 }
17                 else {
18                         $j(listID).show();
19                         $j(listID+"-wrapper").hide();
20                 }
21         }
22
23         function openMenu(theID) {
24                 document.getElementById(theID).style.display = "block" 
25         }
26
27         function closeMenu(theID) {
28                 document.getElementById(theID).style.display = "none" 
29         }
30
31
32
33         var src = null;
34         var prev = null;
35         var livetime = null;
36         var msie = false;
37         var stopped = false;
38         var totStopped = false;
39         var timer = null;
40         var pr = 0;
41         var liking = 0;
42         var in_progress = false;
43         var langSelect = false;
44         var commentBusy = false;
45         var last_popup_menu = null;
46         var last_popup_button = null;
47
48         $j(function() {
49                 $j.ajaxSetup({cache: false});
50
51                 msie = $j.browser.msie ;
52                 
53                 collapseHeight();
54                 
55                 /* setup tooltips *//*
56                 $j("a,.tt").each(function(){
57                         var e = $j(this);
58                         var pos="bottom";
59                         if (e.hasClass("tttop")) pos="top";
60                         if (e.hasClass("ttbottom")) pos="bottom";
61                         if (e.hasClass("ttleft")) pos="left";
62                         if (e.hasClass("ttright")) pos="right";
63                         e.tipTip({defaultPosition: pos, edgeOffset: 8});
64                 });*/
65                 
66                 
67                 
68                 /* setup onoff widgets */
69                 $j(".onoff input").each(function(){
70                         val = $j(this).val();
71                         id = $j(this).attr("id");
72                         $j("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
73                         
74                 });
75                 $j(".onoff > a").click(function(event){
76                         event.preventDefault(); 
77                         var input = $j(this).siblings("input");
78                         var val = 1-input.val();
79                         var id = input.attr("id");
80                         $j("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
81                         $j("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden");
82                         input.val(val);
83                         //console.log(id);
84                 });
85                 
86                 /* setup field_richtext */
87                 //setupFieldRichtext();
88
89                 /* popup menus */
90                 function close_last_popup_menu(e) {
91
92                         if( last_popup_menu ) {
93                                 if( '#' + last_popup_menu.attr('id') !== $j(e.target).attr('rel')) {
94                                         last_popup_menu.hide();
95                                         last_popup_button.removeClass("selected");
96                                         last_popup_menu = null;
97                                         last_popup_button = null;
98                                 }
99                         }
100                 }
101                 $j('a[rel^=#]').click(function(e){
102
103                         close_last_popup_menu(e);
104                         menu = $j( $j(this).attr('rel') );
105                         e.preventDefault();
106                         e.stopPropagation();
107
108                         if (menu.attr('popup')=="false") return false;
109
110                         $j(this).parent().toggleClass("selected");
111                         menu.slideToggle('fast');
112
113                         if (menu.css("display") == "none") {
114                                 last_popup_menu = null;
115                                 last_popup_button = null;
116                         } else {
117                                 last_popup_menu = menu;
118                                 last_popup_button = $j(this).parent();
119                         }
120                         return false;
121                 });
122                 $j('html').click(function(e) {
123                         close_last_popup_menu(e);
124                 });
125                 
126                 // fancyboxes
127                 $j("a.popupbox").colorbox({
128                         'inline' : true,
129                         'transition' : 'elastic'
130                 });
131                 
132
133                 /* notifications template */
134                 var notifications_tpl= unescape($j("#nav-notifications-template[rel=template]").html());
135                 var notifications_all = unescape($j('<div>').append( $j("#nav-notifications-see-all").clone() ).html()); //outerHtml hack
136                 var notifications_mark = unescape($j('<div>').append( $j("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack
137                 var notifications_empty = unescape($j("#nav-notifications-menu").html());
138                 
139                 /* nav update event  */
140                 $j('nav').bind('nav-update', function(e,data){;
141                         var invalid = $j(data).find('invalid').text();
142                         if(invalid == 1) { window.location.href=window.location.href }
143
144                         var net = $j(data).find('net').text();
145                         if(net == 0) { net = ''; $j('#net-update').removeClass('show') } else { $j('#net-update').addClass('show') }
146                         $j('#net-update').html(net);
147
148                         var home = $j(data).find('home').text();
149                         if(home == 0) { home = '';  $j('#home-update').removeClass('show') } else { $j('#home-update').addClass('show') }
150                         $j('#home-update').html(home);
151                         
152                         var intro = $j(data).find('intro').text();
153                         if(intro == 0) { intro = '';  $j('#intro-update').removeClass('show') } else { $j('#intro-update').addClass('show') }
154                         $j('#intro-update').html(intro);
155
156                         var mail = $j(data).find('mail').text();
157                         if(mail == 0) { mail = '';  $j('#mail-update').removeClass('show') } else { $j('#mail-update').addClass('show') }
158                         $j('#mail-update').html(mail);
159                         
160                         var intro = $j(data).find('intro').text();
161                         if(intro == 0) { intro = '';  $j('#intro-update-li').removeClass('show') } else { $j('#intro-update-li').addClass('show') }
162                         $j('#intro-update-li').html(intro);
163
164                         var mail = $j(data).find('mail').text();
165                         if(mail == 0) { mail = '';  $j('#mail-update-li').removeClass('show') } else { $j('#mail-update-li').addClass('show') }
166                         $j('#mail-update-li').html(mail);
167
168                         var eNotif = $j(data).find('notif')
169                         
170                         if (eNotif.children("note").length==0){
171                                 $j("#nav-notifications-menu").html(notifications_empty);
172                         } else {
173                                 nnm = $j("#nav-notifications-menu");
174                                 nnm.html(notifications_all + notifications_mark);
175                                 //nnm.attr('popup','true');
176                                 eNotif.children("note").each(function(){
177                                         e = $j(this);
178                                         text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
179                                         html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
180                                         nnm.append(html);
181                                 });
182
183                                 $j("img[data-src]", nnm).each(function(i, el){
184                                         // Add src attribute for images with a data-src attribute
185                                         $j(el).attr('src', $j(el).data("src"));
186                                 });
187                         }
188                         notif = eNotif.attr('count');
189                         if (notif>0){
190                                 $j("#nav-notifications-linkmenu").addClass("on");
191                         } else {
192                                 $j("#nav-notifications-linkmenu").removeClass("on");
193                         }
194                         if(notif == 0) { notif = ''; $j('#notify-update').removeClass('show') } else { $j('#notify-update').addClass('show') }
195                         $j('#notify-update').html(notif);
196                         
197                         var eSysmsg = $j(data).find('sysmsgs');
198                         eSysmsg.children("notice").each(function(){
199                                 text = $j(this).text();
200                                 $j.jGrowl(text, { sticky: false, theme: 'notice', life: 3000 }); // originally: sticky: true,
201                         });
202                         eSysmsg.children("info").each(function(){
203                                 text = $j(this).text();
204                                 $j.jGrowl(text, { sticky: false, theme: 'info', life: 1000 });
205                         });
206                         
207                 });
208                 
209                 
210                 NavUpdate(); 
211                 // Allow folks to stop the ajax page updates with the pause/break key
212                 $j(document).keydown(function(event) {
213                         if(event.keyCode == '8') {
214                                 var target = event.target || event.srcElement;
215                                 if (!/input|textarea/i.test(target.nodeName)) {
216                                         return false;
217                                 }
218                         }
219                         if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) {
220                                 event.preventDefault();
221                                 if(stopped == false) {
222                                         stopped = true;
223                                         if (event.ctrlKey) {
224                                                 totStopped = true;
225                                         }
226                                         $j('#pause').html('<img src="images/pause.gif" alt="pause" style="border: 1px solid black;" />');
227                                 } else {
228                                         unpause();
229                                 }
230                         } else {
231                                 if (!totStopped) {
232                                         unpause();
233                                 }
234                         }
235                 });
236                 
237                 
238         });
239
240         function NavUpdate() {
241
242                 if(! stopped) {
243                         var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : '');
244                         $j.get(pingCmd,function(data) {
245                                 $j(data).find('result').each(function() {
246                                         // send nav-update event
247                                         $j('nav').trigger('nav-update', this);
248                                         
249                                         
250                                         // start live update
251
252                                         
253
254                                         if($j('#live-network').length)   { src = 'network'; liveUpdate(); }
255                                         if($j('#live-profile').length)   { src = 'profile'; liveUpdate(); }
256                                         if($j('#live-community').length) { src = 'community'; liveUpdate(); }
257                                         if($j('#live-notes').length)     { src = 'notes'; liveUpdate(); }
258                                         if($j('#live-display').length) { src = 'display'; liveUpdate(); }
259                                         /*if($j('#live-display').length) {
260                                                 if(liking) {
261                                                         liking = 0;
262                                                         window.location.href=window.location.href 
263                                                 }
264                                         }*/
265                                         if($j('#live-photos').length) {
266                                                 if(liking) {
267                                                         liking = 0;
268                                                         window.location.href=window.location.href 
269                                                 }
270                                         }
271
272                                         
273                                         
274                                         
275                                 });
276                         }) ;
277                 }
278                 timer = setTimeout(NavUpdate,updateInterval);
279         }
280
281         function liveUpdate() {
282                 if((src == null) || (stopped) || (typeof profile_uid == 'undefined') || (! profile_uid)) { $j('.like-rotator').hide(); return; }
283                 if(($j('.comment-edit-text-full').length) || (in_progress)) {
284                         if(livetime) {
285                                 clearTimeout(livetime);
286                         }
287                         livetime = setTimeout(liveUpdate, 10000);
288                         return;
289                 }
290                 if(livetime != null)
291                         livetime = null;
292
293                 prev = 'live-' + src;
294
295                 in_progress = true;
296                 var udargs = ((netargs.length) ? '/' + netargs : '');
297                 var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
298
299                 $j.get(update_url,function(data) {
300                         in_progress = false;
301                         //                      $j('.collapsed-comments',data).each(function() {
302                         //      var ident = $j(this).attr('id');
303                         //      var is_hidden = $j('#' + ident).is(':hidden');
304                         //      if($j('#' + ident).length) {
305                         //              $j('#' + ident).replaceWith($j(this));
306                         //              if(is_hidden)
307                         //                      $j('#' + ident).hide();
308                         //      }
309                         //});
310
311                         // add a new thread
312
313                         $j('.toplevel_item',data).each(function() {
314                                 var ident = $j(this).attr('id');
315
316                                 if($j('#' + ident).length == 0 && profile_page == 1) {
317                                         $j('img',this).each(function() {
318                                                 $j(this).attr('src',$j(this).attr('dst'));
319                                         });
320                                         $j('#' + prev).after($j(this));
321                                 }
322                                 else {
323                                         // Find out if the hidden comments are open, so we can keep it that way
324                                         // if a new comment has been posted
325                                         var id = $j('.hide-comments-total', this).attr('id');
326                                         if(typeof id != 'undefined') {
327                                                 id = id.split('-')[3];
328                                                 var commentsOpen = $j("#collapsed-comments-" + id).is(":visible");
329                                         }
330
331                                         $j('img',this).each(function() {
332                                                 $j(this).attr('src',$j(this).attr('dst'));
333                                         });
334                                         //vScroll = $j(document).scrollTop();
335                                         $j('html').height($j('html').height());
336                                         $j('#' + ident).replaceWith($j(this));
337
338                                         if(typeof id != 'undefined') {
339                                                 if(commentsOpen) showHideComments(id);
340                                         }
341                                         $j('html').height('auto');
342                                         //$j(document).scrollTop(vScroll);
343                                 }
344
345                                 // Add Colorbox for viewing Network page images
346                                 $j("#" + ident + " .wall-item-body a img").each(function(){
347                                         var aElem = $j(this).parent();
348                                         var imgHref = aElem.attr("href");
349
350                                         // We need to make sure we only put a Colorbox on links to Friendica images
351                                         // We'll try to do this by looking for links of the form
352                                         // .../photo/ab803d8eg08daf85023adfec08(-0.jpg) (with nothing more following), in hopes
353                                         // that that will be unique enough
354                                         if(imgHref.match(/\/photo\/[a-fA-F0-9]+(-[0-9]\.[\w]+?)?$/)) {
355
356                                                 // Add a unique class to all the images of a certain post, to allow scrolling through
357                                                 var cBoxClass = $j(this).closest(".wall-item-body").attr("id") + "-lightbox";
358                                                 $j(this).addClass(cBoxClass);
359
360                                                 aElem.colorbox({
361                                                         maxHeight: '90%',
362                                                         photo: true,
363                                                         rel: cBoxClass
364                                                 });
365                                         }
366                                 });
367
368                                 prev = ident;
369                         });
370
371                         // reset vars for inserting individual items
372
373                         /*prev = 'live-' + src;
374
375                         $j('.wall-item-outside-wrapper',data).each(function() {
376                                 var ident = $j(this).attr('id');
377
378                                 if($j('#' + ident).length == 0 && prev != 'live-' + src) {
379                                                 $j('img',this).each(function() {
380                                                         $j(this).attr('src',$j(this).attr('dst'));
381                                                 });
382                                                 $j('#' + prev).after($j(this));
383                                 }
384                                 else { 
385                                         $j('#' + ident + ' ' + '.wall-item-ago').replaceWith($j(this).find('.wall-item-ago')); 
386                                         if($j('#' + ident + ' ' + '.comment-edit-text-empty').length)
387                                                 $j('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($j(this).find('.wall-item-comment-wrapper'));
388                                         $j('#' + ident + ' ' + '.hide-comments-total').replaceWith($j(this).find('.hide-comments-total'));
389                                         $j('#' + ident + ' ' + '.wall-item-like').replaceWith($j(this).find('.wall-item-like'));
390                                         $j('#' + ident + ' ' + '.wall-item-dislike').replaceWith($j(this).find('.wall-item-dislike'));
391                                         $j('#' + ident + ' ' + '.my-comment-photo').each(function() {
392                                                 $j(this).attr('src',$j(this).attr('dst'));
393                                         });
394                                 }
395                                 prev = ident; 
396                         });*/
397                         
398                         $j('.like-rotator').hide();
399                         if(commentBusy) {
400                                 commentBusy = false;
401                                 $j('body').css('cursor', 'auto');
402                         }
403                         /* autocomplete @nicknames */
404                         $j(".comment-edit-form  textarea").contact_autocomplete(baseurl+"/acl");
405                 
406                         collapseHeight();
407
408                         // setup videos, since VideoJS won't take care of any loaded via AJAX
409                         if(typeof _V_ != 'undefined') _V_.autoSetup();
410                 });
411         }
412
413         function collapseHeight(elems) {
414                 var elemName = '.wall-item-body:not(.divmore)';
415                 if(typeof elems != 'undefined') {
416                         elemName = elems + ' ' + elemName;
417                 }
418                 $j(elemName).each(function() {
419                         if($j(this).height() > 450) {
420                                 $j('html').height($j('html').height());
421                                 $j(this).divgrow({ initialHeight: 400, showBrackets: false, speed: 0 });
422                                 $j(this).addClass('divmore');
423                                 $j('html').height('auto');
424                         }                                       
425                 });
426         }
427
428         /*function imgbright(node) {
429                 $j(node).removeClass("drophide").addClass("drop");
430         }
431
432         function imgdull(node) {
433                 $j(node).removeClass("drop").addClass("drophide");
434         }*/
435
436         // Since our ajax calls are asynchronous, we will give a few 
437         // seconds for the first ajax call (setting like/dislike), then 
438         // run the updater to pick up any changes and display on the page.
439         // The updater will turn any rotators off when it's done. 
440         // This function will have returned long before any of these
441         // events have completed and therefore there won't be any
442         // visible feedback that anything changed without all this
443         // trickery. This still could cause confusion if the "like" ajax call
444         // is delayed and NavUpdate runs before it completes.
445
446         function dolike(ident,verb) {
447                 unpause();
448                 $j('#like-rotator-' + ident.toString()).show();
449                 $j.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
450                 liking = 1;
451         }
452
453         function dostar(ident) {
454                 ident = ident.toString();
455 //              $j('#like-rotator-' + ident).show();
456                 $j.get('starred/' + ident, function(data) {
457                         if(data.match(/1/)) {
458                                 $j('#starred-' + ident).addClass('starred');
459                                 $j('#starred-' + ident).removeClass('unstarred');
460                                 $j('#star-' + ident).addClass('hidden');
461                                 $j('#unstar-' + ident).removeClass('hidden');
462                         }
463                         else {                  
464                                 $j('#starred-' + ident).addClass('unstarred');
465                                 $j('#starred-' + ident).removeClass('starred');
466                                 $j('#star-' + ident).removeClass('hidden');
467                                 $j('#unstar-' + ident).addClass('hidden');
468                         }
469 //                      $j('#like-rotator-' + ident).hide();    
470                 });
471         }
472
473         function getPosition(e) {
474                 var cursor = {x:0, y:0};
475                 if ( e.pageX || e.pageY  ) {
476                         cursor.x = e.pageX;
477                         cursor.y = e.pageY;
478                 }
479                 else {
480                         if( e.clientX || e.clientY ) {
481                                 cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
482                                 cursor.y = e.clientY + (document.documentElement.scrollTop  || document.body.scrollTop)  - document.documentElement.clientTop;
483                         }
484                         else {
485                                 if( e.x || e.y ) {
486                                         cursor.x = e.x;
487                                         cursor.y = e.y;
488                                 }
489                         }
490                 }
491                 return cursor;
492         }
493
494         var lockvisible = false;
495
496         function lockview(event,id) {
497                 event = event || window.event;
498                 cursor = getPosition(event);
499                 if(lockvisible) {
500                         lockviewhide();
501                 }
502                 else {
503                         lockvisible = true;
504                         $j.get('lockview/' + id, function(data) {
505                                 $j('#panel').html(data);
506                                 $j('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5});
507                                 $j('#panel').show();
508                         });
509                 }
510         }
511
512         function lockviewhide() {
513                 lockvisible = false;
514                 $j('#panel').hide();
515         }
516
517         function post_comment(id) {
518                 unpause();
519                 commentBusy = true;
520                 $j('body').css('cursor', 'wait');
521                 $j("#comment-preview-inp-" + id).val("0");
522                 $j.post(  
523              "item",  
524              $j("#comment-edit-form-" + id).serialize(),
525                         function(data) {
526                                 if(data.success) {
527                                         $j("#comment-edit-wrapper-" + id).hide();
528                                         $j("#comment-edit-text-" + id).val('');
529                                 var tarea = document.getElementById("comment-edit-text-" + id);
530                                         if(tarea)
531                                                 commentClose(tarea,id);
532                                         if(timer) clearTimeout(timer);
533                                         timer = setTimeout(NavUpdate,10);
534                                 }
535                                 if(data.reload) {
536                                         window.location.href=data.reload;
537                                 }
538                         },
539                         "json"  
540          );  
541          return false;  
542         }
543
544
545         function preview_comment(id) {
546                 $j("#comment-preview-inp-" + id).val("1");
547                 $j("#comment-edit-preview-" + id).show();
548                 $j.post(  
549              "item",  
550              $j("#comment-edit-form-" + id).serialize(),
551                         function(data) {
552                                 if(data.preview) {
553                                                 
554                                         $j("#comment-edit-preview-" + id).html(data.preview);
555                                         $j("#comment-edit-preview-" + id + " a").click(function() { return false; });
556                                 }
557                         },
558                         "json"  
559          );  
560          return true;  
561         }
562
563
564         function showHideComments(id) {
565                 if( $j("#collapsed-comments-" + id).is(":visible")) {
566                         $j("#collapsed-comments-" + id).hide();
567                         $j("#hide-comments-" + id).html(window.showMore);
568                 }
569                 else {
570                         $j("#collapsed-comments-" + id).show();
571                         $j("#hide-comments-" + id).html(window.showFewer);
572                         collapseHeight("#collapsed-comments-" + id);
573                 }
574         }
575
576
577         function preview_post() {
578                 $j("#jot-preview").val("1");
579                 $j("#jot-preview-content").show();
580                 tinyMCE.triggerSave();
581                 $j.post(  
582                         "item",  
583                         $j("#profile-jot-form").serialize(),
584                         function(data) {
585                                 if(data.preview) {                      
586                                         $j("#jot-preview-content").html(data.preview);
587                                         $j("#jot-preview-content" + " a").click(function() { return false; });
588                                 }
589                         },
590                         "json"  
591                 );  
592                 $j("#jot-preview").val("0");
593                 return true;  
594         }
595
596
597         function unpause() {
598                 // unpause auto reloads if they are currently stopped
599                 totStopped = false;
600                 stopped = false;
601             $j('#pause').html('');
602         }
603                 
604
605     function bin2hex(s){  
606         // Converts the binary representation of data to hex    
607         //   
608         // version: 812.316  
609         // discuss at: http://phpjs.org/functions/bin2hex  
610         // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)  
611         // +   bugfixed by: Onno Marsman  
612         // +   bugfixed by: Linuxworld  
613         // *     example 1: bin2hex('Kev');  
614         // *     returns 1: '4b6576'  
615         // *     example 2: bin2hex(String.fromCharCode(0x00));  
616         // *     returns 2: '00'  
617         var v,i, f = 0, a = [];  
618         s += '';  
619         f = s.length;  
620           
621         for (i = 0; i<f; i++) {  
622             a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");  
623         }  
624           
625         return a.join('');  
626     }  
627
628         function groupChangeMember(gid, cid, sec_token) {
629                 $j('body .fakelink').css('cursor', 'wait');
630                 $j.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) {
631                                 $j('#group-update-wrapper').html(data);
632                                 $j('body .fakelink').css('cursor', 'auto');                             
633                 });
634         }
635
636         function profChangeMember(gid,cid) {
637                 $j('body .fakelink').css('cursor', 'wait');
638                 $j.get('profperm/' + gid + '/' + cid, function(data) {
639                                 $j('#prof-update-wrapper').html(data);
640                                 $j('body .fakelink').css('cursor', 'auto');                             
641                 });
642         }
643
644         function contactgroupChangeMember(gid,cid) {
645                 $j('body').css('cursor', 'wait');
646                 $j.get('contactgroup/' + gid + '/' + cid, function(data) {
647                                 $j('body').css('cursor', 'auto');
648                 });
649         }
650
651
652 function checkboxhighlight(box) {
653   if($j(box).is(':checked')) {
654         $j(box).addClass('checkeditem');
655   }
656   else {
657         $j(box).removeClass('checkeditem');
658   }
659 }
660
661 function notifyMarkAll() {
662         $j.get('notify/mark/all', function(data) {
663                 if(timer) clearTimeout(timer);
664                 timer = setTimeout(NavUpdate,1000);
665         });
666 }
667
668
669 // code from http://www.tinymce.com/wiki.php/How-to_implement_a_custom_file_browser
670 function fcFileBrowser (field_name, url, type, win) {
671     /* TODO: If you work with sessions in PHP and your client doesn't accept cookies you might need to carry
672        the session name and session ID in the request string (can look like this: "?PHPSESSID=88p0n70s9dsknra96qhuk6etm5").
673        These lines of code extract the necessary parameters and add them back to the filebrowser URL again. */
674
675
676     var cmsURL = baseurl+"/fbrowser/"+type+"/";
677
678     tinyMCE.activeEditor.windowManager.open({
679         file : cmsURL,
680         title : 'File Browser',
681         width : 420,  // Your dimensions may differ - toy around with them!
682         height : 400,
683         resizable : "yes",
684         inline : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
685         close_previous : "no"
686     }, {
687         window : win,
688         input : field_name
689     });
690     return false;
691   }
692
693 /*function setupFieldRichtext(){
694         tinyMCE.init({
695                 theme : "advanced",
696                 mode : "specific_textareas",
697                 editor_selector: "fieldRichtext",
698                 plugins : "bbcode,paste, inlinepopups",
699                 theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
700                 theme_advanced_buttons2 : "",
701                 theme_advanced_buttons3 : "",
702                 theme_advanced_toolbar_location : "top",
703                 theme_advanced_toolbar_align : "center",
704                 theme_advanced_blockformats : "blockquote,code",
705                 paste_text_sticky : true,
706                 entity_encoding : "raw",
707                 add_unload_trigger : false,
708                 remove_linebreaks : false,
709                 //force_p_newlines : false,
710                 //force_br_newlines : true,
711                 forced_root_block : 'div',
712                 convert_urls: false,
713                 content_css: baseurl+"/view/custom_tinymce.css",
714                 theme_advanced_path : false,
715                 file_browser_callback : "fcFileBrowser",
716         });
717 }*/
718
719
720 /** 
721  * sprintf in javascript 
722  *      "{0} and {1}".format('zero','uno'); 
723  **/
724 String.prototype.format = function() {
725     var formatted = this;
726     for (var i = 0; i < arguments.length; i++) {
727         var regexp = new RegExp('\\{'+i+'\\}', 'gi');
728         formatted = formatted.replace(regexp, arguments[i]);
729     }
730     return formatted;
731 };
732 // Array Remove
733 Array.prototype.remove = function(item) {
734   to=undefined; from=this.indexOf(item);
735   var rest = this.slice((to || from) + 1 || this.length);
736   this.length = from < 0 ? this.length + from : from;
737   return this.push.apply(this, rest);
738 };
739
740 function previewTheme(elm) {
741         theme = $j(elm).val();
742         $j.getJSON('pretheme?f=&theme=' + theme,function(data) {
743                         $j('#theme-preview').html('<div id="theme-desc">' + data.desc + '</div><div id="theme-version">' + data.version + '</div><div id="theme-credits">' + data.credits + '</div><a href="' + data.img + '"><img src="' + data.img + '" width="320" height="240" alt="' + theme + '" /></a>');
744         });
745
746 }