~canonical-sysadmins/wordpress/4.7.2

« back to all changes in this revision

Viewing changes to wp-includes/js/colorpicker.js

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// ===================================================================
 
2
// Author: Matt Kruse <matt@mattkruse.com>
 
3
// WWW: http://www.mattkruse.com/
 
4
//
 
5
// NOTICE: You may use this code for any purpose, commercial or
 
6
// private, without any further permission from the author. You may
 
7
// remove this notice from your final code if you wish, however it is
 
8
// appreciated by the author if at least my web site address is kept.
 
9
//
 
10
// You may *NOT* re-distribute this code in any way except through its
 
11
// use. That means, you can include it in your product, or your web
 
12
// site, or any other form where the code is actually being used. You
 
13
// may not put the plain javascript up on your site for download or
 
14
// include it in your javascript libraries for download.
 
15
// If you wish to share this code with others, please just point them
 
16
// to the URL instead.
 
17
// Please DO NOT link directly to my .js files from your site. Copy
 
18
// the files to your server and use them there. Thank you.
 
19
// ===================================================================
 
20
 
 
21
 
 
22
/* SOURCE FILE: AnchorPosition.js */
 
23
 
 
24
/*
 
25
AnchorPosition.js
 
26
Author: Matt Kruse
 
27
Last modified: 10/11/02
 
28
 
 
29
DESCRIPTION: These functions find the position of an <A> tag in a document,
 
30
so other elements can be positioned relative to it.
 
31
 
 
32
COMPATABILITY: Netscape 4.x,6.x,Mozilla, IE 5.x,6.x on Windows. Some small
 
33
positioning errors - usually with Window positioning - occur on the
 
34
Macintosh platform.
 
35
 
 
36
FUNCTIONS:
 
37
getAnchorPosition(anchorname)
 
38
  Returns an Object() having .x and .y properties of the pixel coordinates
 
39
  of the upper-left corner of the anchor. Position is relative to the PAGE.
 
40
 
 
41
getAnchorWindowPosition(anchorname)
 
42
  Returns an Object() having .x and .y properties of the pixel coordinates
 
43
  of the upper-left corner of the anchor, relative to the WHOLE SCREEN.
 
44
 
 
45
NOTES:
 
46
 
 
47
1) For popping up separate browser windows, use getAnchorWindowPosition.
 
48
   Otherwise, use getAnchorPosition
 
49
 
 
50
2) Your anchor tag MUST contain both NAME and ID attributes which are the
 
51
   same. For example:
 
52
   <A NAME="test" ID="test"> </A>
 
53
 
 
54
3) There must be at least a space between <A> </A> for IE5.5 to see the
 
55
   anchor tag correctly. Do not do <A></A> with no space.
 
56
*/
 
57
 
 
58
// getAnchorPosition(anchorname)
 
59
//   This function returns an object having .x and .y properties which are the coordinates
 
60
//   of the named anchor, relative to the page.
 
61
function getAnchorPosition(anchorname) {
 
62
        // This function will return an Object with x and y properties
 
63
        var useWindow=false;
 
64
        var coordinates=new Object();
 
65
        var x=0,y=0;
 
66
        // Browser capability sniffing
 
67
        var use_gebi=false, use_css=false, use_layers=false;
 
68
        if (document.getElementById) { use_gebi=true; }
 
69
        else if (document.all) { use_css=true; }
 
70
        else if (document.layers) { use_layers=true; }
 
71
        // Logic to find position
 
72
        if (use_gebi && document.all) {
 
73
                x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
 
74
                y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
 
75
                }
 
76
        else if (use_gebi) {
 
77
                var o=document.getElementById(anchorname);
 
78
                x=AnchorPosition_getPageOffsetLeft(o);
 
79
                y=AnchorPosition_getPageOffsetTop(o);
 
80
                }
 
81
        else if (use_css) {
 
82
                x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
 
83
                y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
 
84
                }
 
85
        else if (use_layers) {
 
86
                var found=0;
 
87
                for (var i=0; i<document.anchors.length; i++) {
 
88
                        if (document.anchors[i].name==anchorname) { found=1; break; }
 
89
                        }
 
90
                if (found==0) {
 
91
                        coordinates.x=0; coordinates.y=0; return coordinates;
 
92
                        }
 
93
                x=document.anchors[i].x;
 
94
                y=document.anchors[i].y;
 
95
                }
 
96
        else {
 
97
                coordinates.x=0; coordinates.y=0; return coordinates;
 
98
                }
 
99
        coordinates.x=x;
 
100
        coordinates.y=y;
 
101
        return coordinates;
 
102
        }
 
103
 
 
104
// getAnchorWindowPosition(anchorname)
 
105
//   This function returns an object having .x and .y properties which are the coordinates
 
106
//   of the named anchor, relative to the window
 
107
function getAnchorWindowPosition(anchorname) {
 
108
        var coordinates=getAnchorPosition(anchorname);
 
109
        var x=0;
 
110
        var y=0;
 
111
        if (document.getElementById) {
 
112
                if (isNaN(window.screenX)) {
 
113
                        x=coordinates.x-document.body.scrollLeft+window.screenLeft;
 
114
                        y=coordinates.y-document.body.scrollTop+window.screenTop;
 
115
                        }
 
116
                else {
 
117
                        x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
 
118
                        y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
 
119
                        }
 
120
                }
 
121
        else if (document.all) {
 
122
                x=coordinates.x-document.body.scrollLeft+window.screenLeft;
 
123
                y=coordinates.y-document.body.scrollTop+window.screenTop;
 
124
                }
 
125
        else if (document.layers) {
 
126
                x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
 
127
                y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
 
128
                }
 
129
        coordinates.x=x;
 
130
        coordinates.y=y;
 
131
        return coordinates;
 
132
        }
 
133
 
 
134
// Functions for IE to get position of an object
 
135
function AnchorPosition_getPageOffsetLeft (el) {
 
136
        var ol=el.offsetLeft;
 
137
        while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
 
138
        return ol;
 
139
        }
 
140
function AnchorPosition_getWindowOffsetLeft (el) {
 
141
        return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
 
142
        }
 
143
function AnchorPosition_getPageOffsetTop (el) {
 
144
        var ot=el.offsetTop;
 
145
        while((el=el.offsetParent) != null) { ot += el.offsetTop; }
 
146
        return ot;
 
147
        }
 
148
function AnchorPosition_getWindowOffsetTop (el) {
 
149
        return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
 
150
        }
 
151
 
 
152
/* SOURCE FILE: PopupWindow.js */
 
153
 
 
154
/*
 
155
PopupWindow.js
 
156
Author: Matt Kruse
 
157
Last modified: 02/16/04
 
158
 
 
159
DESCRIPTION: This object allows you to easily and quickly popup a window
 
160
in a certain place. The window can either be a DIV or a separate browser
 
161
window.
 
162
 
 
163
COMPATABILITY: Works with Netscape 4.x, 6.x, IE 5.x on Windows. Some small
 
164
positioning errors - usually with Window positioning - occur on the
 
165
Macintosh platform. Due to bugs in Netscape 4.x, populating the popup
 
166
window with <STYLE> tags may cause errors.
 
167
 
 
168
USAGE:
 
169
// Create an object for a WINDOW popup
 
170
var win = new PopupWindow();
 
171
 
 
172
// Create an object for a DIV window using the DIV named 'mydiv'
 
173
var win = new PopupWindow('mydiv');
 
174
 
 
175
// Set the window to automatically hide itself when the user clicks
 
176
// anywhere else on the page except the popup
 
177
win.autoHide();
 
178
 
 
179
// Show the window relative to the anchor name passed in
 
180
win.showPopup(anchorname);
 
181
 
 
182
// Hide the popup
 
183
win.hidePopup();
 
184
 
 
185
// Set the size of the popup window (only applies to WINDOW popups
 
186
win.setSize(width,height);
 
187
 
 
188
// Populate the contents of the popup window that will be shown. If you
 
189
// change the contents while it is displayed, you will need to refresh()
 
190
win.populate(string);
 
191
 
 
192
// set the URL of the window, rather than populating its contents
 
193
// manually
 
194
win.setUrl("http://www.site.com/");
 
195
 
 
196
// Refresh the contents of the popup
 
197
win.refresh();
 
198
 
 
199
// Specify how many pixels to the right of the anchor the popup will appear
 
200
win.offsetX = 50;
 
201
 
 
202
// Specify how many pixels below the anchor the popup will appear
 
203
win.offsetY = 100;
 
204
 
 
205
NOTES:
 
206
1) Requires the functions in AnchorPosition.js
 
207
 
 
208
2) Your anchor tag MUST contain both NAME and ID attributes which are the
 
209
   same. For example:
 
210
   <A NAME="test" ID="test"> </A>
 
211
 
 
212
3) There must be at least a space between <A> </A> for IE5.5 to see the
 
213
   anchor tag correctly. Do not do <A></A> with no space.
 
214
 
 
215
4) When a PopupWindow object is created, a handler for 'onmouseup' is
 
216
   attached to any event handler you may have already defined. Do NOT define
 
217
   an event handler for 'onmouseup' after you define a PopupWindow object or
 
218
   the autoHide() will not work correctly.
 
219
*/
 
220
 
 
221
// Set the position of the popup window based on the anchor
 
222
function PopupWindow_getXYPosition(anchorname) {
 
223
        var coordinates;
 
224
        if (this.type == "WINDOW") {
 
225
                coordinates = getAnchorWindowPosition(anchorname);
 
226
                }
 
227
        else {
 
228
                coordinates = getAnchorPosition(anchorname);
 
229
                }
 
230
        this.x = coordinates.x;
 
231
        this.y = coordinates.y;
 
232
        }
 
233
// Set width/height of DIV/popup window
 
234
function PopupWindow_setSize(width,height) {
 
235
        this.width = width;
 
236
        this.height = height;
 
237
        }
 
238
// Fill the window with contents
 
239
function PopupWindow_populate(contents) {
 
240
        this.contents = contents;
 
241
        this.populated = false;
 
242
        }
 
243
// Set the URL to go to
 
244
function PopupWindow_setUrl(url) {
 
245
        this.url = url;
 
246
        }
 
247
// Set the window popup properties
 
248
function PopupWindow_setWindowProperties(props) {
 
249
        this.windowProperties = props;
 
250
        }
 
251
// Refresh the displayed contents of the popup
 
252
function PopupWindow_refresh() {
 
253
        if (this.divName != null) {
 
254
                // refresh the DIV object
 
255
                if (this.use_gebi) {
 
256
                        document.getElementById(this.divName).innerHTML = this.contents;
 
257
                        }
 
258
                else if (this.use_css) {
 
259
                        document.all[this.divName].innerHTML = this.contents;
 
260
                        }
 
261
                else if (this.use_layers) {
 
262
                        var d = document.layers[this.divName];
 
263
                        d.document.open();
 
264
                        d.document.writeln(this.contents);
 
265
                        d.document.close();
 
266
                        }
 
267
                }
 
268
        else {
 
269
                if (this.popupWindow != null && !this.popupWindow.closed) {
 
270
                        if (this.url!="") {
 
271
                                this.popupWindow.location.href=this.url;
 
272
                                }
 
273
                        else {
 
274
                                this.popupWindow.document.open();
 
275
                                this.popupWindow.document.writeln(this.contents);
 
276
                                this.popupWindow.document.close();
 
277
                        }
 
278
                        this.popupWindow.focus();
 
279
                        }
 
280
                }
 
281
        }
 
282
// Position and show the popup, relative to an anchor object
 
283
function PopupWindow_showPopup(anchorname) {
 
284
        this.getXYPosition(anchorname);
 
285
        this.x += this.offsetX;
 
286
        this.y += this.offsetY;
 
287
        if (!this.populated && (this.contents != "")) {
 
288
                this.populated = true;
 
289
                this.refresh();
 
290
                }
 
291
        if (this.divName != null) {
 
292
                // Show the DIV object
 
293
                if (this.use_gebi) {
 
294
                        document.getElementById(this.divName).style.left = this.x + "px";
 
295
                        document.getElementById(this.divName).style.top = this.y;
 
296
                        document.getElementById(this.divName).style.visibility = "visible";
 
297
                        }
 
298
                else if (this.use_css) {
 
299
                        document.all[this.divName].style.left = this.x;
 
300
                        document.all[this.divName].style.top = this.y;
 
301
                        document.all[this.divName].style.visibility = "visible";
 
302
                        }
 
303
                else if (this.use_layers) {
 
304
                        document.layers[this.divName].left = this.x;
 
305
                        document.layers[this.divName].top = this.y;
 
306
                        document.layers[this.divName].visibility = "visible";
 
307
                        }
 
308
                }
 
309
        else {
 
310
                if (this.popupWindow == null || this.popupWindow.closed) {
 
311
                        // If the popup window will go off-screen, move it so it doesn't
 
312
                        if (this.x<0) { this.x=0; }
 
313
                        if (this.y<0) { this.y=0; }
 
314
                        if (screen && screen.availHeight) {
 
315
                                if ((this.y + this.height) > screen.availHeight) {
 
316
                                        this.y = screen.availHeight - this.height;
 
317
                                        }
 
318
                                }
 
319
                        if (screen && screen.availWidth) {
 
320
                                if ((this.x + this.width) > screen.availWidth) {
 
321
                                        this.x = screen.availWidth - this.width;
 
322
                                        }
 
323
                                }
 
324
                        var avoidAboutBlank = window.opera || ( document.layers && !navigator.mimeTypes['*'] ) || navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled );
 
325
                        this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");
 
326
                        }
 
327
                this.refresh();
 
328
                }
 
329
        }
 
330
// Hide the popup
 
331
function PopupWindow_hidePopup() {
 
332
        if (this.divName != null) {
 
333
                if (this.use_gebi) {
 
334
                        document.getElementById(this.divName).style.visibility = "hidden";
 
335
                        }
 
336
                else if (this.use_css) {
 
337
                        document.all[this.divName].style.visibility = "hidden";
 
338
                        }
 
339
                else if (this.use_layers) {
 
340
                        document.layers[this.divName].visibility = "hidden";
 
341
                        }
 
342
                }
 
343
        else {
 
344
                if (this.popupWindow && !this.popupWindow.closed) {
 
345
                        this.popupWindow.close();
 
346
                        this.popupWindow = null;
 
347
                        }
 
348
                }
 
349
        }
 
350
// Pass an event and return whether or not it was the popup DIV that was clicked
 
351
function PopupWindow_isClicked(e) {
 
352
        if (this.divName != null) {
 
353
                if (this.use_layers) {
 
354
                        var clickX = e.pageX;
 
355
                        var clickY = e.pageY;
 
356
                        var t = document.layers[this.divName];
 
357
                        if ((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)) {
 
358
                                return true;
 
359
                                }
 
360
                        else { return false; }
 
361
                        }
 
362
                else if (document.all) { // Need to hard-code this to trap IE for error-handling
 
363
                        var t = window.event.srcElement;
 
364
                        while (t.parentElement != null) {
 
365
                                if (t.id==this.divName) {
 
366
                                        return true;
 
367
                                        }
 
368
                                t = t.parentElement;
 
369
                                }
 
370
                        return false;
 
371
                        }
 
372
                else if (this.use_gebi && e) {
 
373
                        var t = e.originalTarget;
 
374
                        while (t.parentNode != null) {
 
375
                                if (t.id==this.divName) {
 
376
                                        return true;
 
377
                                        }
 
378
                                t = t.parentNode;
 
379
                                }
 
380
                        return false;
 
381
                        }
 
382
                return false;
 
383
                }
 
384
        return false;
 
385
        }
 
386
 
 
387
// Check an onMouseDown event to see if we should hide
 
388
function PopupWindow_hideIfNotClicked(e) {
 
389
        if (this.autoHideEnabled && !this.isClicked(e)) {
 
390
                this.hidePopup();
 
391
                }
 
392
        }
 
393
// Call this to make the DIV disable automatically when mouse is clicked outside it
 
394
function PopupWindow_autoHide() {
 
395
        this.autoHideEnabled = true;
 
396
        }
 
397
// This global function checks all PopupWindow objects onmouseup to see if they should be hidden
 
398
function PopupWindow_hidePopupWindows(e) {
 
399
        for (var i=0; i<popupWindowObjects.length; i++) {
 
400
                if (popupWindowObjects[i] != null) {
 
401
                        var p = popupWindowObjects[i];
 
402
                        p.hideIfNotClicked(e);
 
403
                        }
 
404
                }
 
405
        }
 
406
// Run this immediately to attach the event listener
 
407
function PopupWindow_attachListener() {
 
408
        if (document.layers) {
 
409
                document.captureEvents(Event.MOUSEUP);
 
410
                }
 
411
        window.popupWindowOldEventListener = document.onmouseup;
 
412
        if (window.popupWindowOldEventListener != null) {
 
413
                document.onmouseup = new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");
 
414
                }
 
415
        else {
 
416
                document.onmouseup = PopupWindow_hidePopupWindows;
 
417
                }
 
418
        }
 
419
// CONSTRUCTOR for the PopupWindow object
 
420
// Pass it a DIV name to use a DHTML popup, otherwise will default to window popup
 
421
function PopupWindow() {
 
422
        if (!window.popupWindowIndex) { window.popupWindowIndex = 0; }
 
423
        if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); }
 
424
        if (!window.listenerAttached) {
 
425
                window.listenerAttached = true;
 
426
                PopupWindow_attachListener();
 
427
                }
 
428
        this.index = popupWindowIndex++;
 
429
        popupWindowObjects[this.index] = this;
 
430
        this.divName = null;
 
431
        this.popupWindow = null;
 
432
        this.width=0;
 
433
        this.height=0;
 
434
        this.populated = false;
 
435
        this.visible = false;
 
436
        this.autoHideEnabled = false;
 
437
 
 
438
        this.contents = "";
 
439
        this.url="";
 
440
        this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";
 
441
        if (arguments.length>0) {
 
442
                this.type="DIV";
 
443
                this.divName = arguments[0];
 
444
                }
 
445
        else {
 
446
                this.type="WINDOW";
 
447
                }
 
448
        this.use_gebi = false;
 
449
        this.use_css = false;
 
450
        this.use_layers = false;
 
451
        if (document.getElementById) { this.use_gebi = true; }
 
452
        else if (document.all) { this.use_css = true; }
 
453
        else if (document.layers) { this.use_layers = true; }
 
454
        else { this.type = "WINDOW"; }
 
455
        this.offsetX = 0;
 
456
        this.offsetY = 0;
 
457
        // Method mappings
 
458
        this.getXYPosition = PopupWindow_getXYPosition;
 
459
        this.populate = PopupWindow_populate;
 
460
        this.setUrl = PopupWindow_setUrl;
 
461
        this.setWindowProperties = PopupWindow_setWindowProperties;
 
462
        this.refresh = PopupWindow_refresh;
 
463
        this.showPopup = PopupWindow_showPopup;
 
464
        this.hidePopup = PopupWindow_hidePopup;
 
465
        this.setSize = PopupWindow_setSize;
 
466
        this.isClicked = PopupWindow_isClicked;
 
467
        this.autoHide = PopupWindow_autoHide;
 
468
        this.hideIfNotClicked = PopupWindow_hideIfNotClicked;
 
469
        }
 
470
 
 
471
/* SOURCE FILE: ColorPicker2.js */
 
472
 
 
473
/*
 
474
Last modified: 02/24/2003
 
475
 
 
476
DESCRIPTION: This widget is used to select a color, in hexadecimal #RRGGBB
 
477
form. It uses a color "swatch" to display the standard 216-color web-safe
 
478
palette. The user can then click on a color to select it.
 
479
 
 
480
COMPATABILITY: See notes in AnchorPosition.js and PopupWindow.js.
 
481
Only the latest DHTML-capable browsers will show the color and hex values
 
482
at the bottom as your mouse goes over them.
 
483
 
 
484
USAGE:
 
485
// Create a new ColorPicker object using DHTML popup
 
486
var cp = new ColorPicker();
 
487
 
 
488
// Create a new ColorPicker object using Window Popup
 
489
var cp = new ColorPicker('window');
 
490
 
 
491
// Add a link in your page to trigger the popup. For example:
 
492
<A HREF="#" onClick="cp.show('pick');return false;" NAME="pick" ID="pick">Pick</A>
 
493
 
 
494
// Or use the built-in "select" function to do the dirty work for you:
 
495
<A HREF="#" onClick="cp.select(document.forms[0].color,'pick');return false;" NAME="pick" ID="pick">Pick</A>
 
496
 
 
497
// If using DHTML popup, write out the required DIV tag near the bottom
 
498
// of your page.
 
499
<SCRIPT LANGUAGE="JavaScript">cp.writeDiv()</SCRIPT>
 
500
 
 
501
// Write the 'pickColor' function that will be called when the user clicks
 
502
// a color and do something with the value. This is only required if you
 
503
// want to do something other than simply populate a form field, which is
 
504
// what the 'select' function will give you.
 
505
function pickColor(color) {
 
506
        field.value = color;
 
507
        }
 
508
 
 
509
NOTES:
 
510
1) Requires the functions in AnchorPosition.js and PopupWindow.js
 
511
 
 
512
2) Your anchor tag MUST contain both NAME and ID attributes which are the
 
513
   same. For example:
 
514
   <A NAME="test" ID="test"> </A>
 
515
 
 
516
3) There must be at least a space between <A> </A> for IE5.5 to see the
 
517
   anchor tag correctly. Do not do <A></A> with no space.
 
518
 
 
519
4) When a ColorPicker object is created, a handler for 'onmouseup' is
 
520
   attached to any event handler you may have already defined. Do NOT define
 
521
   an event handler for 'onmouseup' after you define a ColorPicker object or
 
522
   the color picker will not hide itself correctly.
 
523
*/
 
524
ColorPicker_targetInput = null;
 
525
function ColorPicker_writeDiv() {
 
526
        document.writeln("<DIV ID=\"colorPickerDiv\" STYLE=\"position:absolute;visibility:hidden;\"> </DIV>");
 
527
        }
 
528
 
 
529
function ColorPicker_show(anchorname) {
 
530
        this.showPopup(anchorname);
 
531
        }
 
532
 
 
533
function ColorPicker_pickColor(color,obj) {
 
534
        obj.hidePopup();
 
535
        pickColor(color);
 
536
        }
 
537
 
 
538
// A Default "pickColor" function to accept the color passed back from popup.
 
539
// User can over-ride this with their own function.
 
540
function pickColor(color) {
 
541
        if (ColorPicker_targetInput==null) {
 
542
                alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");
 
543
                return;
 
544
                }
 
545
        ColorPicker_targetInput.value = color;
 
546
        }
 
547
 
 
548
// This function is the easiest way to popup the window, select a color, and
 
549
// have the value populate a form field, which is what most people want to do.
 
550
function ColorPicker_select(inputobj,linkname) {
 
551
        if (inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea") {
 
552
                alert("colorpicker.select: Input object passed is not a valid form input object");
 
553
                window.ColorPicker_targetInput=null;
 
554
                return;
 
555
                }
 
556
        window.ColorPicker_targetInput = inputobj;
 
557
        this.show(linkname);
 
558
        }
 
559
 
 
560
// This function runs when you move your mouse over a color block, if you have a newer browser
 
561
function ColorPicker_highlightColor(c) {
 
562
        var thedoc = (arguments.length>1)?arguments[1]:window.document;
 
563
        var d = thedoc.getElementById("colorPickerSelectedColor");
 
564
        d.style.backgroundColor = c;
 
565
        d = thedoc.getElementById("colorPickerSelectedColorValue");
 
566
        d.innerHTML = c;
 
567
        }
 
568
 
 
569
function ColorPicker() {
 
570
        var windowMode = false;
 
571
        // Create a new PopupWindow object
 
572
        if (arguments.length==0) {
 
573
                var divname = "colorPickerDiv";
 
574
                }
 
575
        else if (arguments[0] == "window") {
 
576
                var divname = '';
 
577
                windowMode = true;
 
578
                }
 
579
        else {
 
580
                var divname = arguments[0];
 
581
                }
 
582
 
 
583
        if (divname != "") {
 
584
                var cp = new PopupWindow(divname);
 
585
                }
 
586
        else {
 
587
                var cp = new PopupWindow();
 
588
                cp.setSize(225,250);
 
589
                }
 
590
 
 
591
        // Object variables
 
592
        cp.currentValue = "#FFFFFF";
 
593
 
 
594
        // Method Mappings
 
595
        cp.writeDiv = ColorPicker_writeDiv;
 
596
        cp.highlightColor = ColorPicker_highlightColor;
 
597
        cp.show = ColorPicker_show;
 
598
        cp.select = ColorPicker_select;
 
599
 
 
600
        // Code to populate color picker window
 
601
        var colors = new Array( "#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099",
 
602
                                                        "#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
 
603
                                                        "#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099",
 
604
                                                        "#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF",
 
605
                                                        "#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F",
 
606
                                                        "#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000",
 
607
 
 
608
                                                        "#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399",
 
609
                                                        "#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399",
 
610
                                                        "#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399",
 
611
                                                        "#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF",
 
612
                                                        "#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F",
 
613
                                                        "#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00",
 
614
 
 
615
                                                        "#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699",
 
616
                                                        "#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699",
 
617
                                                        "#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699",
 
618
                                                        "#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F",
 
619
                                                        "#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F",
 
620
                                                        "#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F",
 
621
 
 
622
                                                        "#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999",
 
623
                                                        "#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999",
 
624
                                                        "#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999",
 
625
                                                        "#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF",
 
626
                                                        "#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F",
 
627
                                                        "#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000",
 
628
 
 
629
                                                        "#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
 
630
                                                        "#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99",
 
631
                                                        "#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99",
 
632
                                                        "#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF",
 
633
                                                        "#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F",
 
634
                                                        "#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00",
 
635
 
 
636
                                                        "#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99",
 
637
                                                        "#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99",
 
638
                                                        "#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99",
 
639
                                                        "#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F",
 
640
                                                        "#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F",
 
641
                                                        "#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F",
 
642
 
 
643
                                                        "#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666",
 
644
                                                        "#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000",
 
645
                                                        "#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000",
 
646
                                                        "#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999",
 
647
                                                        "#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF",
 
648
                                                        "#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF",
 
649
 
 
650
                                                        "#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66",
 
651
                                                        "#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00",
 
652
                                                        "#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000",
 
653
                                                        "#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099",
 
654
                                                        "#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF",
 
655
                                                        "#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF",
 
656
 
 
657
                                                        "#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF",
 
658
                                                        "#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC",
 
659
                                                        "#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000",
 
660
                                                        "#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900",
 
661
                                                        "#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33",
 
662
                                                        "#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF",
 
663
 
 
664
                                                        "#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF",
 
665
                                                        "#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF",
 
666
                                                        "#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F",
 
667
                                                        "#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F",
 
668
                                                        "#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F",
 
669
                                                        "#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");
 
670
        var total = colors.length;
 
671
        var width = 72;
 
672
        var cp_contents = "";
 
673
        var windowRef = (windowMode)?"window.opener.":"";
 
674
        if (windowMode) {
 
675
                cp_contents += "<html><head><title>Select Color</title></head>";
 
676
                cp_contents += "<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>";
 
677
                }
 
678
        cp_contents += "<table style='border: none;' cellspacing=0 cellpadding=0>";
 
679
        var use_highlight = (document.getElementById || document.all)?true:false;
 
680
        for (var i=0; i<total; i++) {
 
681
                if ((i % width) == 0) { cp_contents += "<tr>"; }
 
682
                if (use_highlight) { var mo = 'onMouseOver="'+windowRef+'ColorPicker_highlightColor(\''+colors[i]+'\',window.document)"'; }
 
683
                else { mo = ""; }
 
684
                cp_contents += '<td style="background-color: '+colors[i]+';"><a href="javascript:void()" onclick="'+windowRef+'ColorPicker_pickColor(\''+colors[i]+'\','+windowRef+'window.popupWindowObjects['+cp.index+']);return false;" '+mo+'>&nbsp;</a></td>';
 
685
                if ( ((i+1)>=total) || (((i+1) % width) == 0)) {
 
686
                        cp_contents += "</tr>";
 
687
                        }
 
688
                }
 
689
        // If the browser supports dynamically changing TD cells, add the fancy stuff
 
690
        if (document.getElementById) {
 
691
                var width1 = Math.floor(width/2);
 
692
                var width2 = width = width1;
 
693
                cp_contents += "<tr><td colspan='"+width1+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+width2+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>";
 
694
                }
 
695
        cp_contents += "</table>";
 
696
        if (windowMode) {
 
697
                cp_contents += "</span></body></html>";
 
698
                }
 
699
        // end populate code
 
700
 
 
701
        // Write the contents to the popup object
 
702
        cp.populate(cp_contents+"\n");
 
703
        // Move the table down a bit so you can see it
 
704
        cp.offsetY = 25;
 
705
        cp.autoHide();
 
706
        return cp;
 
707
        }