decir/js/bbcedit.js
author Dan
Tue, 13 Nov 2007 23:33:14 -0500
changeset 9 6d9655e02026
parent 1 6f8b7c6fac02
permissions -rw-r--r--
Removed all dragger debugging info and started on the form for forum/category deletion
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     1
// Client detection from MediaWiki
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     2
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     3
var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     4
                && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     5
var is_safari = ((clientPC.indexOf('applewebkit')!=-1) && (clientPC.indexOf('spoofer')==-1));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     6
var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     7
if (clientPC.indexOf('opera') != -1) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     8
	var is_opera = true;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
     9
	var is_opera_preseven = (window.opera && !document.childNodes);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    10
	var is_opera_seven = (window.opera && document.childNodes);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    11
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    12
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    13
// List of BBcode buttons
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    14
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    15
var buttons = [
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    16
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    17
      'start' : '[b]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    18
      'end'   : '[/b]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    19
      'desc'  : 'Bold',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    20
      'style' : { 'fontWeight' : 'bold' }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    21
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    22
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    23
      'start' : '[i]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    24
      'end'   : '[/i]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    25
      'desc'  : 'Italics',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    26
      'style' : { 'fontStyle' : 'italic' }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    27
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    28
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    29
      'start' : '[u]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    30
      'end'   : '[/u]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    31
      'desc'  : 'Underline',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    32
      'style' : { 'textDecoration' : 'underline' }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    33
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    34
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    35
      'start' : '[color=black]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    36
      'end'   : '[/color]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    37
      'custom': true,
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    38
      'func'  : function() { openColorPicker(this); },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    39
      'desc'  : 'Color',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    40
      'style' : { 'color' : 'red' }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    41
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    42
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    43
      'start' : '[size=1]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    44
      'end'   : '[/size]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    45
      'custom': true,
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    46
      'func'  : function() { openSizePicker(this); },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    47
      'desc'  : 'Size'
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    48
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    49
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    50
      'start' : '[code]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    51
      'end'   : '[/code]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    52
      'desc'  : 'Code',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    53
      'style' : { 'fontFamily' : 'courier new, monospace' }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    54
    },
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    55
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    56
      'start' : '[quote]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    57
      'end'   : '[/quote]',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    58
      'desc'  : 'Quote'
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    59
    },
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    60
    {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    61
      'start' : '[url]',
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    62
      'end'   : '[/url]',
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    63
      'custom':true,
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    64
      'func'  : function() { openUrlInput(this); },
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    65
      'desc'  : 'URL'
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    66
    },
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    67
    {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    68
      'start' : '[[',
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    69
      'end'   : ']]',
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    70
      'custom':true,
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    71
      'func'  : function() { openWikilinkInput(this); },
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
    72
      'desc'  : 'Wikilink'
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    73
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    74
  ];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    75
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    76
// List of valid smilies
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    77
var smilies = {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    78
  'O:-)'        : 'face-angel.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    79
  'O:)'         : 'face-angel.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    80
  'O=)'         : 'face-angel.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    81
  ':-)'         : 'face-smile.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    82
  ':)'          : 'face-smile.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    83
  '=)'          : 'face-smile-big.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    84
  ':-('         : 'face-sad.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    85
  ':('          : 'face-sad.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    86
  ';('          : 'face-sad.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    87
  ':-O'         : 'face-surprise.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    88
  ';-)'         : 'face-wink.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    89
  ';)'          : 'face-wink.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    90
  '8-)'         : 'face-glasses.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    91
  '8)'          : 'face-glasses.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    92
  ':-D'         : 'face-grin.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    93
  ':D'          : 'face-grin.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    94
  '=D'          : 'face-grin.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    95
  ':-*'         : 'face-kiss.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    96
  ':*'          : 'face-kiss.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    97
  '=*'          : 'face-kiss.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    98
  ':\'('        : 'face-crying.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
    99
  ':-|'         : 'face-plain.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   100
  ':-\\'        : 'face-plain.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   101
  ':-/'         : 'face-plain.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   102
  ':joke:'      : 'face-plain.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   103
  ']:->'        : 'face-devil-grin.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   104
  ':kiss:'      : 'face-kiss.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   105
  ':-P'         : 'face-tongue-out.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   106
  ':P'          : 'face-tongue-out.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   107
  ':-p'         : 'face-tongue-out.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   108
  ':p'          : 'face-tongue-out.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   109
  ':-X'         : 'face-sick.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   110
  ':X'          : 'face-sick.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   111
  ':sick:'      : 'face-sick.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   112
  ':-]'         : 'face-oops.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   113
  ':]'          : 'face-oops.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   114
  ':oops:'      : 'face-oops.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   115
  ':-['         : 'face-embarassed.png',
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   116
  ':['          : 'face-embarassed.png'
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   117
};
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   118
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   119
function initBBCodeControls()
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   120
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   121
  txtars = getElementsByClassName(document, 'textarea', 'bbcode');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   122
  for ( i = 0; i < txtars.length; i++ )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   123
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   124
    convertTextAreaToBBCode(txtars[i]);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   125
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   126
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   127
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   128
var smileycache = { 'td' : [], 'img' : [] };
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   129
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   130
function convertTextAreaToBBCode(txtarea)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   131
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   132
  var pn = txtarea.parentNode;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   133
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   134
  var loadingDiv = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   135
  loadingDiv.appendChild(document.createTextNode('Initializing editor...'));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   136
  pn.appendChild(loadingDiv);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   137
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   138
  if(!IE)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   139
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   140
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   141
    var smileybox = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   142
    smileybox.style.cssFloat = 'left';   // Mozilla
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   143
    smileybox.style.styleFloat = 'left'; // IE
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   144
    smileybox.style.marginRight = '10px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   145
    smileybox.style.maxWidth = '220px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   146
    smileybox.style.maxHeight = '300px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   147
    smileybox.style.clip = 'rect(0px,auto,auto,0px)';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   148
    smileybox.style.overflow = 'auto';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   149
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   150
    var fl = document.createElement('fieldset');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   151
    var lb = document.createElement('legend');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   152
    lb.appendChild(document.createTextNode('Smilies'));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   153
    fl.appendChild(lb);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   154
    var used = [];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   155
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   156
    var frm = document.createElement('form');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   157
    frm.action='javascript:void(0)';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   158
    frm.onsubmit = function(){return false;};
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   159
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   160
    var tbl = document.createElement('table');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   161
    tbl.border = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   162
    tbl.cellspacing = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   163
    tbl.cellpadding = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   164
    tbl.width = '100%';
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   165
    tbl.style.backgroundColor = 'transparent';
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   166
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   167
    var tr = document.createElement('tr');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   168
    var tick = -1;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   169
    var apd = false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   170
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   171
    for ( var i in smilies )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   172
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   173
      apd = false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   174
      if ( in_array(smilies[i], used) )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   175
        continue;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   176
      used.push(smilies[i]);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   177
      
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   178
      tick++;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   179
      if ( tick == 3 )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   180
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   181
        tick = 0;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   182
        tbl.appendChild(tr);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   183
        tr = document.createElement('tr');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   184
        apd = true;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   185
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   186
      
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   187
      var smile = i.replace(/\\/g, '\\\\');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   188
      
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   189
      var td = document.createElement('td');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   190
      td.style.textAlign = 'center';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   191
      td.style.padding = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   192
      
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   193
      var img = ( IE ) ? new Image() : document.createElement('input');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   194
      img.type = 'image';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   195
      img.className = 'clicksmiley';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   196
      img.src = scriptPath + '/images/smilies/' + smilies[i];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   197
      img.style.cursor = 'pointer';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   198
      img.style.margin = '2px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   199
      img.onclick = insertSmiley;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   200
      img.title = i;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   201
      img.alt = i;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   202
      if (IE)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   203
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   204
        // This IE bug (yet another) is stupid BEYOND reason.
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   205
        setTimeout('smileycache.td['+smileycache.td.length+'].appendChild(smileycache.img['+smileycache.img.length+']);', 20);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   206
        smileycache.img[smileycache.img.length] = img;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   207
        smileycache.td[smileycache.td.length] = td;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   208
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   209
      else
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   210
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   211
        td.appendChild(img);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   212
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   213
      tr.appendChild(td);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   214
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   215
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   216
    if (!apd)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   217
      tbl.appendChild(tr);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   218
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   219
    frm.appendChild(tbl);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   220
    fl.appendChild(frm);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   221
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   222
    smileybox.appendChild(fl);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   223
    pn.insertBefore(smileybox, txtarea);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   224
    
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   225
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   226
  else
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   227
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   228
    var div = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   229
    var html = '<fieldset style="padding: 10px; display: inline;"><legend>Available smilies:</legend>';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   230
    var c = 0;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   231
    for ( var i in smilies )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   232
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   233
      c++;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   234
      html += i + '&nbsp;&nbsp;';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   235
      if ( c == 10 )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   236
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   237
        html += '<br />';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   238
        c = 0;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   239
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   240
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   241
    html += '</fieldset>';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   242
    div.innerHTML = html;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   243
    pn.appendChild(div, txtarea);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   244
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   245
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   246
  var toolbar = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   247
  for ( j = 0; j < buttons.length; j++ )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   248
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   249
    var btn = document.createElement('input');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   250
    btn.type='button';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   251
    btn.className = 'bbcbutton';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   252
    btn.value = buttons[j].desc;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   253
    if ( buttons[j].custom )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   254
      btn.onclick = buttons[j].func;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   255
    else 
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   256
      btn.onclick = BBCodeClickHandler;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   257
    if ( buttons[j].style )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   258
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   259
      for ( var k in buttons[j].style )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   260
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   261
        btn.style[k] = buttons[j].style[k];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   262
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   263
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   264
    toolbar.appendChild(btn);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   265
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   266
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   267
  pn.insertBefore(toolbar, txtarea);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   268
  pn.removeChild(loadingDiv);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   269
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   270
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   271
function insertSmiley()
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   272
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   273
  var imgid = this.src;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   274
  imgid = imgid.split('/');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   275
  imgid = imgid[imgid.length-1];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   276
  emot = array_search(imgid, smilies) + ' ';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   277
  var o = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   278
  formatBBCode(o, emot, "", "");
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   279
  return false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   280
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   281
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   282
function BBCodeClickHandler()
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   283
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   284
  var obj = false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   285
  for ( i = 0; i < buttons.length; i++ )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   286
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   287
    if ( buttons[i]['desc'] == this.value )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   288
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   289
      obj = buttons[i];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   290
      break;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   291
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   292
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   293
  if(!obj)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   294
    return false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   295
  formatBBCode(this, obj['start'], obj['end'], obj['desc']);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   296
  return true;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   297
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   298
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   299
//
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   300
// COLOR PICKER
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   301
//
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   302
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   303
function openColorPicker(parent)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   304
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   305
  var off = fetch_offset(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   306
  var dim = fetch_dimensions(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   307
  var top = off['top'] + dim['h'] - 1;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   308
  var left = off['left'];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   309
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   310
  var div = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   311
  div.style.border = '1px solid #000000';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   312
  div.style.padding = '10px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   313
  div.style.position = 'absolute';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   314
  div.style.top = top + 'px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   315
  div.style.left = left + 'px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   316
  div.style.backgroundColor = '#ffffff';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   317
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   318
  var cwheel = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   319
  cwheel.id = 'color_wheel';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   320
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   321
  var cinput = document.createElement('input');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   322
  cinput.size = '7';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   323
  cinput.id = 'color_val';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   324
  cinput.value = '#ff0000';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   325
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   326
  var btni = document.createElement('input');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   327
  btni.type = 'button';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   328
  btni.value = 'Insert';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   329
  btni.onclick = finishColorPicker;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   330
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   331
  var btnc = document.createElement('input');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   332
  btnc.type = 'button';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   333
  btnc.value = 'Cancel';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   334
  btnc.onclick = closeColorPicker;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   335
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   336
  div.appendChild(cwheel);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   337
  div.appendChild(cinput);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   338
  div.appendChild(btni);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   339
  div.appendChild(btnc);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   340
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   341
  parent.parentNode.appendChild(div);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   342
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   343
  $jq('#color_wheel').farbtastic('#color_val');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   344
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   345
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   346
function finishColorPicker()
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   347
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   348
  parent = this.parentNode;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   349
  input = parent.getElementsByTagName('input')[0];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   350
  color = input.value;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   351
  formatBBCode(parent, '[color=' + color + ']', '[/color]', 'Colored text');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   352
  parent.parentNode.removeChild(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   353
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   354
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   355
function closeColorPicker()
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   356
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   357
  parent = this.parentNode;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   358
  parent.parentNode.removeChild(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   359
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   360
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   361
//
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   362
// SIZE PICKER
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   363
//
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   364
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   365
function openSizePicker(parent)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   366
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   367
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   368
  var off = fetch_offset(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   369
  var dim = fetch_dimensions(parent);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   370
  var top = off['top'] + dim['h'] - 1;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   371
  var left = off['left'];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   372
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   373
  var div = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   374
  div.style.border = '1px solid #000000';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   375
  div.style.padding = '3px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   376
  div.style.position = 'absolute';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   377
  div.style.top = top + 'px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   378
  div.style.left = left + 'px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   379
  div.style.backgroundColor = '#ffffff';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   380
  div.style.width = '130px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   381
  //div.style.maxHeight = '400px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   382
  div.style.clip = 'rect(0px,auto,auto,0px)';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   383
  div.style.overflow = 'hidden';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   384
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   385
  var tbl = document.createElement('table');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   386
  tbl.border = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   387
  tbl.cellspacing = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   388
  tbl.cellpadding = '0';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   389
  tbl.style.maxWidth = '75px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   390
  tbl.style.clip = 'rect(0px,75px,auto,0px)';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   391
  tbl.style.overflow = 'hidden';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   392
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   393
  var i = 0;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   394
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   395
  for ( i = 0.5; i <= 4; i=i+0.5 )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   396
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   397
    var tr = document.createElement('tr');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   398
    var td = document.createElement('td');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   399
    td.innerHTML = i;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   400
    tr.appendChild(td);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   401
    var td = document.createElement('td');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   402
    td.className = 'sizepick_td';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   403
    td.style.fontSize = i + 'em';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   404
    td.innerHTML = 'The quick brown fox jumps over the lazy dog.';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   405
    td.onclick = function() { sizePickClickHandler(this); }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   406
    tr.appendChild(td);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   407
    tbl.appendChild(tr);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   408
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   409
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   410
  var a = document.createElement('a');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   411
  a.href='#';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   412
  a.onclick = function() { this.parentNode.parentNode.removeChild(this.parentNode); return false; };
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   413
  a.appendChild(document.createTextNode('Close size picker'));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   414
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   415
  div.appendChild(tbl);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   416
  div.appendChild(a);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   417
  parent.parentNode.appendChild(div);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   418
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   419
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   420
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   421
function sizePickClickHandler(parent)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   422
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   423
  size = parent.style.fontSize.substr(0, parent.style.fontSize.length - 2);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   424
  formatBBCode(parent.parentNode.parentNode.parentNode, '[size=' + size + ']', '[/size]', 'Large/small text');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   425
  parent.parentNode.parentNode.parentNode.parentNode.removeChild(parent.parentNode.parentNode.parentNode);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   426
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   427
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   428
//
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   429
// URL INPUT
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   430
//
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   431
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   432
function openUrlInput(button)
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   433
{
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   434
  var url = prompt('Please enter the URL to the page you want to link to:', 'http://');
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   435
  if ( url == '' || url == 'http://' || !url )
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   436
    return false;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   437
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   438
  var start = '[url]';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   439
  var inner = url;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   440
  var end = '[/url]';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   441
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   442
  var text = prompt('Please enter some text to be displayed as the link (optional):');
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   443
  if ( text != '' && ! (!text) )
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   444
  {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   445
    start = '[url=' + url + ']';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   446
    inner = text;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   447
    end = '[/url]';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   448
  }
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   449
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   450
  formatBBCode(button, start, end, inner);
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   451
}
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   452
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   453
//
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   454
// WIKILINK INPUT
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   455
//
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   456
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   457
function openWikilinkInput(button)
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   458
{
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   459
  var url = prompt('Please enter the title of the page to link to:', '');
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   460
  if ( url == '' || !url )
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   461
    return false;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   462
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   463
  var start = '[[';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   464
  var inner = url;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   465
  var end = ']]';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   466
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   467
  var text = prompt('Please enter some text to be displayed as the link (optional):');
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   468
  if ( text != '' && ! (!text) )
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   469
  {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   470
    start = '[[' + url + '|';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   471
    inner = text;
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   472
    end = ']]';
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   473
  }
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   474
  
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   475
  formatBBCode(button, start, end, inner);
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   476
}
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   477
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   478
//
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   479
// HTML RENDERER
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   480
//
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   481
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   482
function htmlspecialchars(text)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   483
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   484
  text = text.replace(/</g, '&lt;');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   485
  text = text.replace(/>/g, '&gt;');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   486
  return text;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   487
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   488
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   489
function render_bbcode(text)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   490
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   491
  // Smilies
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   492
  for(var i in smilies)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   493
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   494
    if ( text.indexOf(i) > -1 )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   495
    {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   496
      while ( text.indexOf(i) > -1 )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   497
      {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   498
        text = text.replace(i, '<img alt="' + rawhtmlcode(i) + '" src="/images/smilies/' + smilies[i] + '" />');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   499
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   500
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   501
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   502
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   503
  // Destroy (X|HT)ML tags
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   504
  text = htmlspecialchars(text);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   505
  text = text.replace(/ /g, '&nbsp;');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   506
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   507
  // Bold text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   508
  text = text.replace(/\[b\]([\w\W]+?)\[\/b\]/g, '<span style="font-weight: bold;">$1</span>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   509
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   510
  // Italicized text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   511
  text = text.replace(/\[i\]([\w\W]+?)\[\/i\]/g, '<span style="font-style: italic;">$1</span>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   512
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   513
  // Underlined text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   514
  text = text.replace(/\[u\]([\w\W]+?)\[\/u\]/g, '<span style="text-decoration: underline;">$1</span>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   515
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   516
  // Quotes
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   517
  text = text.replace(/\[quote\]([\w\W]+?)\[\/quote\]/g, '<blockquote>$1</blockquote>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   518
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   519
  // Colored text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   520
  text = text.replace(/\[color=#([0-9A-Fa-f]+?)\]([\w\W]*?)\[\/color\]/g, '<span style="color: #$1">$2</span>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   521
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   522
  // Sized text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   523
  text = text.replace(/\[size=([0-9\.]+?)\]([\w\W]*?)\[\/size\]/g, '<span style="font-size: $1em">$2</span>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   524
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   525
  // Newlines
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   526
  var nlre = new RegExp(unescape('%0A'), 'g');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   527
  text = text.replace(nlre, '<br />' + unescape('%0A'));
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   528
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   529
  // Preformatted text
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   530
  text = text.replace(/\[code\]([\w\W]+?)\[\/code\]/gi, '<pre class="code">$1</pre>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   531
  text = text.replace(/<pre class=\"code\">([\s]+)/gi, '<pre class="code">');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   532
  text = text.replace(/([\s]+)<\/pre>/gi, '</pre>');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   533
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   534
  return text;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   535
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   536
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   537
function rawhtmlcode(text)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   538
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   539
  var ret = '';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   540
  for ( var i = 0; i < text.length; i++ )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   541
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   542
    chr = text.charCodeAt(i);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   543
    chr = '&#' + chr + ';';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   544
    ret += chr;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   545
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   546
  return ret;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   547
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   548
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   549
// Preview function
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   550
function makePreview(obj)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   551
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   552
  obj = document.getElementById(obj);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   553
  var bbcode = obj.value;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   554
  var body = document.getElementsByTagName('body')[0];
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   555
  var div = document.createElement('div');
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   556
  div.style.border = '1px solid #000';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   557
  div.style.padding = '10px';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   558
  div.innerHTML = render_bbcode(bbcode);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   559
  //body.insertBefore(div, body.firstChild);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   560
  body.appendChild(div);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   561
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   562
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   563
function fetch_offset(obj) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   564
  var left_offset = obj.offsetLeft;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   565
  var top_offset = obj.offsetTop;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   566
  while ((obj = obj.offsetParent) != null) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   567
    left_offset += obj.offsetLeft;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   568
    top_offset += obj.offsetTop;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   569
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   570
  return { 'left' : left_offset, 'top' : top_offset };
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   571
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   572
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   573
function fetch_dimensions(o) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   574
  var w = o.offsetWidth;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   575
  var h = o.offsetHeight;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   576
  return { 'w' : w, 'h' : h };
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   577
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   578
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   579
function getElementsByClassName(parent, type, cls) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   580
  if(!type)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   581
    type = '*';
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   582
  if(!parent)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   583
    parent = document;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   584
  ret = new Array();
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   585
  el = parent.getElementsByTagName(type);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   586
  for ( var i in el )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   587
  {
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   588
    if(el[i])
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   589
    {
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   590
      if(el[i].className)
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   591
      {
1
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   592
        if(el[i].className.indexOf(' ') > 0)
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   593
        {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   594
          classes = el[i].className.split(' ');
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   595
        }
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   596
        else
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   597
        {
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   598
          classes = new Array();
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   599
          classes.push(el[i].className);
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   600
        }
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   601
        if ( in_array(cls, classes) )
6f8b7c6fac02 Let's just say: major progress and still only 20% complete. So many changes I forgot to commit.
Dan
parents: 0
diff changeset
   602
          ret.push(el[i]);
0
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   603
      }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   604
    }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   605
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   606
  return ret;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   607
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   608
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   609
function in_array(needle, haystack)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   610
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   611
  for( var i in haystack )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   612
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   613
    if(haystack[i] == needle)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   614
      return true;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   615
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   616
  return false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   617
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   618
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   619
function array_search(needle, haystack)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   620
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   621
  for( var i in haystack )
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   622
  {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   623
    if(haystack[i] == needle)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   624
      return i;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   625
  }
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   626
  return false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   627
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   628
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   629
document.getElementsByClassName = function(type, cls) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   630
  return getElementsByClassName(document, type, cls);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   631
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   632
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   633
// Function adapted from MediaWiki/phpBB
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   634
function formatBBCode(parent, tagOpen, tagClose, sampleText)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   635
{
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   636
  var txtarea = parent.parentNode.nextSibling;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   637
  
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   638
  // IE
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   639
	if (document.selection  && !is_gecko) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   640
		var theSelection = document.selection.createRange().text;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   641
		if (!theSelection)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   642
			theSelection=sampleText;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   643
		txtarea.focus();
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   644
		if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   645
			theSelection = theSelection.substring(0, theSelection.length - 1);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   646
			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   647
		} else {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   648
			document.selection.createRange().text = tagOpen + theSelection + tagClose;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   649
		}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   650
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   651
	// Mozilla
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   652
	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   653
		var replaced = false;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   654
		var startPos = txtarea.selectionStart;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   655
		var endPos = txtarea.selectionEnd;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   656
		if (endPos-startPos)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   657
			replaced = true;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   658
		var scrollTop = txtarea.scrollTop;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   659
		var myText = (txtarea.value).substring(startPos, endPos);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   660
		if (!myText)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   661
			myText=sampleText;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   662
		if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   663
			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   664
		} else {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   665
			subst = tagOpen + myText + tagClose;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   666
		}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   667
		txtarea.value = txtarea.value.substring(0, startPos) + subst +
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   668
			txtarea.value.substring(endPos, txtarea.value.length);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   669
		txtarea.focus();
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   670
		//set new selection
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   671
		if (replaced) {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   672
			var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   673
			txtarea.selectionStart = cPos;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   674
			txtarea.selectionEnd = cPos;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   675
		} else {
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   676
			txtarea.selectionStart = startPos+tagOpen.length;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   677
			txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   678
		}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   679
		txtarea.scrollTop = scrollTop;
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   680
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   681
	// All other browsers get no toolbar.
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   682
	}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   683
	// reposition cursor if possible
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   684
	if (txtarea.createTextRange)
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   685
		txtarea.caretPos = document.selection.createRange().duplicate();
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   686
}
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   687
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   688
addOnloadHook(initBBCodeControls);
0417a5a0c7be Initial repository population
dan@fuhry
parents:
diff changeset
   689