~hexmode/+junk/main

« back to all changes in this revision

Viewing changes to install-files/apps/phpmyadmin2.10.1/pmd/scripts/move.js

  • Committer: Mark A. Hershberger
  • Date: 2008-01-05 19:38:56 UTC
  • Revision ID: hershberger@spawn-xp-20080105193856-6rnzgwa4nehue3qj
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
$Id: move.js 10044 2007-03-02 14:13:13Z cybot_tm $
 
3
@author  Ivan A Kirillov (Ivan.A.Kirillov@gmail.com)
 
4
*/
 
5
var dx, dy, dy2;
 
6
var cur_click;
 
7
var sm_x = 2, sm_y = 2; // update in Main()
 
8
var sm_s           = 0;
 
9
var sm_add         = 10;
 
10
var s_left         = 0;
 
11
var s_right        = 0;
 
12
var ON_relation    = 0;
 
13
var ON_grid        = 0;
 
14
var ON_display_field = 0;
 
15
var ON_angular_direct = 0;// relation_style: 0 - angular 1 - direct
 
16
var click_field    = 0;
 
17
var link_relation  = "";
 
18
var id_hint;
 
19
var canvas_width   = 0;
 
20
var canvas_height  = 0;
 
21
var osn_tab_width  = 0;
 
22
var osn_tab_height = 0;
 
23
var height_field   = 7;
 
24
var Glob_X, Glob_Y;
 
25
var timeoutID;
 
26
var layer_menu_cur_click = 0;
 
27
var step = 10;
 
28
var old_class;
 
29
 
 
30
//---------------------------------------------------------------------------------------------------------------------------
 
31
//---------------------------------------------------------------------------------------------------------------------------
 
32
//---------------------------------------------------------------------------------------------------------------------------
 
33
 
 
34
 
 
35
//window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP); 
 
36
//---CROSS
 
37
document.onmousedown = MouseDown; 
 
38
document.onmouseup   = MouseUp; 
 
39
document.onmousemove = MouseMove;
 
40
 
 
41
isIE = document.all && !window.opera;
 
42
isNN = !document.all && document.getElementById;
 
43
isN4 = document.layers;
 
44
 
 
45
if (isIE) {
 
46
  window.onscroll = General_scroll; 
 
47
  document.onselectstart = function () {return false;};
 
48
}
 
49
 
 
50
//document.onmouseup = function(){General_scroll_end();}
 
51
function MouseDown(e) 
 
52
 
53
  if (cur_click != null) 
 
54
  { 
 
55
    offsetx=isIE ? event.clientX + document.body.scrollLeft : e.pageX;
 
56
    offsety=isIE ? event.clientY + document.body.scrollTop : e.pageY;
 
57
    dx = offsetx - parseInt(cur_click.style.left);
 
58
    dy = offsety - parseInt(cur_click.style.top);
 
59
    //alert(" dx = " + dx + " dy = " +dy);
 
60
    document.getElementById("canvas").style.visibility = 'hidden';
 
61
    /*
 
62
    var left = parseInt(cur_click.style.left);
 
63
    var top  = parseInt(cur_click.style.top);
 
64
    dx = e.pageX - left; 
 
65
    dy = e.pageY - top;
 
66
    
 
67
    alert(" dx = " + dx + " dy = " +dy);*/
 
68
    cur_click.style.zIndex = 2;    
 
69
  }
 
70
  if(layer_menu_cur_click)
 
71
  {
 
72
    offsetx=isIE ? event.clientX + document.body.scrollLeft: e.pageX;
 
73
    dx = offsetx - parseInt(document.getElementById("layer_menu").style.width); 
 
74
  }
 
75
 
76
 
 
77
function MouseMove(e)
 
78
 
79
  
 
80
  //Glob_X = e.pageX; 
 
81
  //Glob_Y = e.pageY;
 
82
  Glob_X = isIE ? event.clientX + document.body.scrollLeft: e.pageX; 
 
83
  Glob_Y = isIE ? event.clientY + document.body.scrollTop: e.pageY;
 
84
 
 
85
  // mouseX= (bw.ns4||bw.ns6)? e.pageX: bw.ie&&bw.win&&!bw.ie4? (event.clientX-2)+document.body.scrollLeft : event.clientX+document.body.scrollLeft;
 
86
  //mouseY= (bw.ns4||bw.ns6)? e.pageY: bw.ie&&bw.win&&!bw.ie4? (event.clientY-2)+document.body.scrollTop : event.clientY+document.body.scrollTop;
 
87
  
 
88
  //window.status = "X = "+ Glob_X + " Y = "+ Glob_Y;
 
89
  
 
90
  var mGx, mGy;
 
91
  if (cur_click != null) 
 
92
  {
 
93
    mGx = Glob_X - dx;
 
94
    mGy = Glob_Y - dy;
 
95
    mGx = mGx > 0 ? mGx : 0;
 
96
    mGy  = mGy > 0 ? mGy : 0;
 
97
 
 
98
    if(ON_grid)
 
99
    {
 
100
      mGx = mGx % step < step / 2 ? mGx - mGx % step : mGx - mGx % step + step;
 
101
      mGy = mGy % step < step / 2 ? mGy - mGy % step : mGy - mGy % step + step;
 
102
    }
 
103
    
 
104
    cur_click.style.left = mGx;
 
105
    cur_click.style.top  = mGy;
 
106
  }
 
107
 
 
108
  if (ON_relation || ON_display_field) 
 
109
  {
 
110
    document.getElementById('hint').style.left = Glob_X + 20;
 
111
    document.getElementById('hint').style.top  = Glob_Y + 20;
 
112
  }
 
113
 
 
114
  if(layer_menu_cur_click)
 
115
  { 
 
116
    document.getElementById("layer_menu").style.width = Glob_X - dx>=150?Glob_X - dx:150;
 
117
    //document.getElementById("layer_menu").style.height = Glob_Y - dy>=200?Glob_Y - dy:200;
 
118
    //document.getElementById("id_scroll_tab").style.height = Glob_Y - dy2;
 
119
  }
 
120
}
 
121
 
 
122
function MouseUp(e)
 
123
{
 
124
  if (cur_click != null) 
 
125
  {  
 
126
    document.getElementById("canvas").style.visibility = 'visible';
 
127
    Re_load(); 
 
128
    cur_click.style.zIndex = 1;
 
129
    cur_click = null; 
 
130
  }
 
131
  layer_menu_cur_click=0;
 
132
  //window.releaseEvents(Event.MOUSEMOVE); 
 
133
}
 
134
//---------------------------------------------------------------------------------------------------------------------------
 
135
//---------------------------------------------------------------------------------------------------------------------------
 
136
//---------------------------------------------------------------------------------------------------------------------------
 
137
 
 
138
 
 
139
//function ToInt(s)
 
140
//{
 
141
 // return s.substring(0,s.length-2)*1; //re = /(\d+)\w*/; newstr = str.replace(re, "$1");
 
142
//}
 
143
 
 
144
function Canvas_pos()
 
145
{
 
146
  canvas_width  = document.getElementById('canvas').width  = osn_tab_width  - 3;
 
147
  canvas_height = document.getElementById('canvas').height = osn_tab_height - 3;
 
148
 
 
149
   if(isIE)
 
150
  { 
 
151
    document.getElementById('canvas').style.width  = (osn_tab_width  - 3)?(osn_tab_width  - 3):0;
 
152
    document.getElementById('canvas').style.height = (osn_tab_height - 3)?(osn_tab_height - 3):0;
 
153
  }
 
154
}
 
155
 
 
156
function Osn_tab_pos()
 
157
{
 
158
  osn_tab_width  = parseInt(document.getElementById('osn_tab').style.width);
 
159
  osn_tab_height = parseInt(document.getElementById('osn_tab').style.height);
 
160
}
 
161
 
 
162
 
 
163
function Main()
 
164
{ //alert( document.getElementById('osn_tab').offsetTop);
 
165
 //---CROSS 
 
166
  if(isIE)
 
167
  {
 
168
    document.getElementById('top_menu').style.position = 'absolute';
 
169
    document.getElementById('layer_menu').style.position = 'absolute';
 
170
  }
 
171
 
 
172
  document.getElementById("layer_menu").style.top = -1000; //fast scroll
 
173
  sm_x += document.getElementById('osn_tab').offsetLeft;
 
174
  sm_y += document.getElementById('osn_tab').offsetTop;
 
175
  Osn_tab_pos(); 
 
176
  Canvas_pos(); 
 
177
  Small_tab_refresh();
 
178
  Re_load();
 
179
  id_hint = document.getElementById('hint');
 
180
  if (isIE) {
 
181
    General_scroll();
 
182
  }
 
183
}
 
184
 
 
185
 
 
186
//---------------------------------------- new -----------------------------------------
 
187
function Rezize_osn_tab()
 
188
{
 
189
  var max_X = max_Y = 0;
 
190
  for (key in j_tabs)
 
191
  { 
 
192
    k_x = parseInt(document.getElementById(key).style.left) + document.getElementById(key).offsetWidth;
 
193
    k_y = parseInt(document.getElementById(key).style.top) + document.getElementById(key).offsetHeight;
 
194
    max_X = max_X < k_x ? k_x : max_X;
 
195
    max_Y = max_Y < k_y ? k_y : max_Y;
 
196
  }
 
197
  osn_tab_width = max_X  + 50;
 
198
  osn_tab_height = max_Y + 50;
 
199
  Canvas_pos();
 
200
  document.getElementById('osn_tab').style.width = osn_tab_width;
 
201
  document.getElementById('osn_tab').style.height = osn_tab_height;
 
202
}
 
203
//--------------------------------------------------------------------------------------
 
204
 
 
205
 
 
206
function Re_load() 
 
207
{
 
208
  Rezize_osn_tab();
 
209
  var n;
 
210
  var a = new Array();
 
211
  Clear();
 
212
  for (K in contr) 
 
213
    for (key in contr[K])                 // contr name
 
214
      for (key2 in contr[K][key])         // table name
 
215
        for (key3 in contr[K][key][key2]) // field name
 
216
        { 
 
217
          if(!document.getElementById("check_vis_"+key2).checked || 
 
218
             !document.getElementById("check_vis_"+contr[K][key][key2][key3][0]).checked) continue; // if hide
 
219
          var x1_left  = document.getElementById(key2).offsetLeft+1;
 
220
          var x1_right = x1_left + document.getElementById(key2).offsetWidth;
 
221
          var x2_left  = document.getElementById(contr[K][key][key2][key3][0]).offsetLeft;
 
222
          var x2_right = x2_left + document.getElementById(contr[K][key][key2][key3][0]).offsetWidth;
 
223
          a[0] = Math.abs( x1_left - x2_left );  a[1] = Math.abs(x1_left  - x2_right);
 
224
          a[2] = Math.abs( x1_right - x2_left ); a[3] = Math.abs(x1_right - x2_right);
 
225
          n = s_left = s_right = 0;
 
226
          for(var i=1;i<4;i++)
 
227
            if(a[n]>a[i])n=i;
 
228
          if(n==1){ x1 = x1_left-sm_s;  x2 = x2_right+sm_s; if(x1<x2)n=0;}
 
229
          if(n==2){ x1 = x1_right+sm_s; x2 = x2_left-sm_s;  if(x1>x2)n=0;}
 
230
          if(n==3){ x1 = x1_right+sm_s; x2 = x2_right+sm_s; s_right = 1; }
 
231
          if(n==0){ x1 = x1_left-sm_s;  x2 = x2_left-sm_s;  s_left = 1;  }
 
232
    // alert(key2+"."+key3);
 
233
          var y1 = document.getElementById(key2).offsetTop + document.getElementById(key2+"."+key3).offsetTop + height_field;
 
234
      //    alert(1);
 
235
          var y2 = document.getElementById(contr[K][key][key2][key3][0]).offsetTop + 
 
236
                   document.getElementById(contr[K][key][key2][key3][0]+"."+contr[K][key][key2][key3][1]).offsetTop + height_field;
 
237
          Line0(x1-sm_x,y1-sm_y,x2-sm_x,y2-sm_y,"rgba(0,100,150,1)");
 
238
          
 
239
        }
 
240
}
 
241
 
 
242
function Line(x1,y1,x2,y2,color_line) 
 
243
 
244
  var canvas = document.getElementById("canvas");
 
245
  var ctx    = canvas.getContext("2d");
 
246
  ctx.strokeStyle = color_line;
 
247
  ctx.lineWidth = 1;
 
248
  ctx.beginPath();
 
249
  ctx.moveTo(x1, y1);
 
250
  ctx.lineTo(x2, y2);
 
251
  ctx.stroke();  
 
252
}
 
253
 
 
254
function Line0(x1,y1,x2,y2,color_line)
 
255
{
 
256
  if(ON_angular_direct)
 
257
  Line2(x1,y1,x2,y2,color_line);
 
258
  else
 
259
  Line3(x1,y1,x2,y2,color_line);
 
260
}
 
261
 
 
262
function Line2(x1,y1,x2,y2,color_line) 
 
263
{
 
264
  var x1_ = x1;
 
265
  var x2_ = x2;
 
266
  
 
267
  Circle(x1,y1,3,3,"rgba(0,0,255,1)");
 
268
  Rect(x2-1,y2-2,4,4,"rgba(0,0,255,1)");
 
269
  
 
270
  if(s_right) 
 
271
  {
 
272
    x1_ += sm_add; x2_ += sm_add;
 
273
  }
 
274
  else if(s_left) 
 
275
  {
 
276
    x1_ -= sm_add; x2_ -= sm_add;
 
277
  }
 
278
  else
 
279
  if(x1 < x2) { x1_ += sm_add; x2_ -= sm_add; }
 
280
  else        { x1_ -= sm_add; x2_ += sm_add; }
 
281
    
 
282
  
 
283
  Line(x1,y1,x1_,y1,color_line);
 
284
  Line(x2,y2,x2_,y2,color_line);
 
285
  Line(x1_,y1,x2_,y2,color_line);
 
286
}
 
287
 
 
288
function Line3(x1,y1,x2,y2,color_line) 
 
289
{
 
290
  var x1_ = x1;
 
291
  var x2_ = x2;
 
292
  Circle(x1,y1,3,3,"rgba(0,0,255,1)");
 
293
  Rect(x2-1,y2-2,4,4,"rgba(0,0,255,1)");
 
294
 
 
295
  var x_s = (x1+x2)/2;
 
296
  if(s_right) 
 
297
  {
 
298
    if(x1 < x2) { x1_ += x2 - x1 + sm_add; x2_ += sm_add; }
 
299
    else        { x2_ += x1 - x2 + sm_add; x1_ += sm_add; }
 
300
    
 
301
    Line(x1,y1,x1_,y1,color_line);
 
302
    Line(x2,y2,x2_,y2,color_line);
 
303
    Line(x1_,y1,x2_,y2,color_line);
 
304
    return 0;
 
305
  }
 
306
  if(s_left) 
 
307
  {
 
308
    if(x1 < x2) { x2_ -= x2 - x1 + sm_add; x1_ -= sm_add; }
 
309
    else        { x1_ -= x1 - x2 + sm_add; x2_ -= sm_add; }
 
310
    
 
311
    Line(x1,y1,x1_,y1,color_line);
 
312
    Line(x2,y2,x2_,y2,color_line);
 
313
    Line(x1_,y1,x2_,y2,color_line);
 
314
    return 0;
 
315
  }
 
316
    
 
317
  Line(x1,y1,x_s,y1,color_line);
 
318
  Line(x_s,y2,x2,y2,color_line);
 
319
  Line(x_s,y1,x_s,y2,color_line);
 
320
}
 
321
 
 
322
function Circle(x,y,r,w,color) 
 
323
{   
 
324
  var ctx = document.getElementById('canvas').getContext('2d');   
 
325
  ctx.beginPath(); 
 
326
  ctx.moveTo(x, y);
 
327
  ctx.lineWidth = w;
 
328
  ctx.strokeStyle = color;
 
329
  ctx.arc(x, y, r, 0, 2*Math.PI, true);   
 
330
  ctx.stroke(); 
 
331
 
332
 
 
333
function Clear() 
 
334
{
 
335
  var canvas = document.getElementById("canvas");
 
336
  var ctx    = canvas.getContext("2d");
 
337
  ctx.clearRect(0, 0, canvas_width, canvas_height);
 
338
}
 
339
  
 
340
function Rect(x1,y1,w,h,color)
 
341
{
 
342
  var ctx = document.getElementById('canvas').getContext('2d');
 
343
  ctx.fillStyle = color;
 
344
  ctx.fillRect(x1,y1,w,h);
 
345
}
 
346
 
 
347
//---------------------------------------------- SAVE ---------------------------------------------------
 
348
function Save(url) // (del?) no for pdf
 
349
{
 
350
  for (key in j_tabs)
 
351
  {
 
352
    document.getElementById('t_x['+key+']').value=parseInt(document.getElementById(key).style.left);
 
353
    document.getElementById('t_y['+key+']').value=parseInt(document.getElementById(key).style.top);
 
354
    document.getElementById('t_v['+key+']').value=document.getElementById('_|_tbody_'+key).style.display=='none'?0:1;
 
355
    document.getElementById('t_h['+key+']').value=document.getElementById('check_vis_'+key).checked?1:0;
 
356
  }
 
357
  document.form1.action = url; 
 
358
  document.form1.submit();
 
359
}
 
360
 
 
361
function Get_url_pos()
 
362
{
 
363
  var poststr = '';
 
364
  for (key in j_tabs)
 
365
  {
 
366
    poststr += '&t_x['+key+']=' + parseInt(document.getElementById(key).style.left);
 
367
    poststr += '&t_y['+key+']=' + parseInt(document.getElementById(key).style.top);
 
368
    poststr += '&t_v['+key+']=' + (document.getElementById('_|_tbody_'+key).style.display == 'none' ? 0 : 1);
 
369
    poststr += '&t_h['+key+']=' + (document.getElementById('check_vis_'+key).checked ? 1 : 0);
 
370
  }
 
371
  return poststr;
 
372
}
 
373
 
 
374
function Save2()
 
375
{
 
376
  var poststr = 'IS_AJAX=1&db='+db+'&token='+token+'&die_save_pos=1';
 
377
  poststr += Get_url_pos();
 
378
  makeRequest('pmd_save_pos.php', poststr);
 
379
}
 
380
 
 
381
function Grid()
 
382
{
 
383
  if(!ON_grid ) {
 
384
    ON_grid = 1;
 
385
    document.getElementById('grid_button').className = 'M_butt_Selected_down';//'#FFEE99';gray #AAAAAA
 
386
  
 
387
    if(isIE) { // correct for IE
 
388
      document.getElementById('grid_button').className = 'M_butt_Selected_down_IE';
 
389
    }
 
390
  }
 
391
  else  {
 
392
    document.getElementById('grid_button').className = 'M_butt';
 
393
    ON_grid = 0;  
 
394
  }
 
395
}
 
396
 
 
397
function Angular_direct()
 
398
{
 
399
  if(!ON_angular_direct ) {
 
400
    ON_angular_direct = 1;
 
401
    document.getElementById('angular_direct_button').className = 'M_butt_Selected_down';//'#FFEE99';gray #AAAAAA
 
402
  
 
403
    if(isIE) { // correct for IE
 
404
      document.getElementById('angular_direct_button').className = 'M_butt_Selected_down_IE';
 
405
    }
 
406
  }
 
407
  else {
 
408
    ON_angular_direct = 0;  
 
409
    document.getElementById('angular_direct_button').className = 'M_butt';
 
410
  }
 
411
  Re_load();
 
412
}
 
413
//+++++++++++++++++++++++++++++++++++++++++++++++++++++ RELATION ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
414
function Start_relation()
 
415
{
 
416
  if(ON_display_field) return; 
 
417
 
 
418
  if(!ON_relation )
 
419
  {
 
420
    document.getElementById('InnoDB_relation').style.display = '';
 
421
    ON_relation = 1;
 
422
    document.getElementById('hint').innerHTML = LangSelectReferencedKey;
 
423
    document.getElementById('hint').style.visibility = "visible";
 
424
    document.getElementById('rel_button').className = 'M_butt_Selected_down';//'#FFEE99';gray #AAAAAA
 
425
    
 
426
    if(isIE) { // correct for IE
 
427
      document.getElementById('rel_button').className = 'M_butt_Selected_down_IE';
 
428
    }
 
429
  }
 
430
  else
 
431
  {
 
432
    document.getElementById('hint').innerHTML = "";
 
433
    document.getElementById('hint').style.visibility = "hidden";
 
434
    document.getElementById('rel_button').className = 'M_butt';
 
435
    click_field = 0; 
 
436
    ON_relation = 0;  
 
437
  }
 
438
}
 
439
 
 
440
function Click_field(T,f,PK) // table field
 
441
{
 
442
  if (ON_relation)
 
443
  {
 
444
    if(!click_field)
 
445
    {//.style.display=='none'    .style.visibility = "hidden"
 
446
      if(!PK) { alert(LangPleaseSelectPrimaryOrUniqueKey); return 0; }//PK
 
447
      if(j_tabs[db+'.'+T]!='INNODB') document.getElementById('InnoDB_relation').style.display='none';
 
448
      click_field = 1;
 
449
      link_relation = "T1=" + T + "&F1=" + f;
 
450
      document.getElementById('hint').innerHTML = LangSelectForeignKey;
 
451
    }
 
452
    else 
 
453
    {
 
454
      Start_relation(); // hidden hint...
 
455
      if(j_tabs[db+'.'+T]!='INNODB' || !PK ) document.getElementById('InnoDB_relation').style.display='none';
 
456
      document.getElementById('layer_new_relation').style.left = Glob_X - (document.getElementById('layer_new_relation').offsetWidth>>1);
 
457
      document.getElementById('layer_new_relation').style.top  = Glob_Y - document.getElementById('layer_new_relation').offsetHeight - 10;
 
458
      document.getElementById('layer_new_relation').style.visibility = "visible";
 
459
      link_relation += '&T2=' + T + '&F2=' + f;   
 
460
    }
 
461
  }
 
462
  
 
463
  if(ON_display_field)
 
464
  {
 
465
    if(display_field[T] == f) // if is display field
 
466
    { //alert(T);
 
467
      //s = '';for(k in display_field)s += k + ' = ' + display_field[k] + ',';alert(s);
 
468
      old_class = 'tab_field';
 
469
      //display_field.splice(T, 1);
 
470
      delete display_field[T];
 
471
      //s = '';for(k in display_field)s += k + ' = ' + display_field[k] + ', ';alert(s);
 
472
      //n = 0;for(k in display_field)n++;alert(n);
 
473
    }
 
474
    else
 
475
    { 
 
476
      old_class = 'tab_field_3';
 
477
      if(display_field[T])
 
478
      {
 
479
        document.getElementById('_|_tr_' + T + '.' + display_field[T]).className = 'tab_field';
 
480
        //display_field.splice(T, 1);
 
481
        delete display_field[T];
 
482
      }
 
483
      display_field[T] = f;
 
484
    }
 
485
    ON_display_field = 0;
 
486
    document.getElementById('hint').innerHTML = "";
 
487
    document.getElementById('hint').style.visibility = "hidden";
 
488
    document.getElementById('display_field_button').className = 'M_butt';
 
489
    makeRequest('pmd_display_field.php', 'T=' + T + '&F=' + f + '&db=' + db + '&token=' + token );
 
490
  }
 
491
}
 
492
 
 
493
function New_relation()
 
494
{
 
495
  document.getElementById('layer_new_relation').style.visibility = 'hidden';
 
496
  link_relation += '&db=' + db + '&token=' + token + '&die_save_pos=0';
 
497
  link_relation += '&on_delete=' + document.getElementById('on_delete').value + '&on_update=' + document.getElementById('on_update').value;
 
498
  link_relation += Get_url_pos();
 
499
  
 
500
  //alert(link_relation);
 
501
  makeRequest('pmd_relation_new.php', link_relation);
 
502
}
 
503
 
 
504
//----------------------------------------------------- create tables -----------------------------------------------------
 
505
 
 
506
function Start_table_new()
 
507
{
 
508
  window.location.href='db_operations.php?db='+db+'&token='+token;
 
509
}
 
510
 
 
511
function Start_tab_upd(table)
 
512
{
 
513
  window.location.href='tbl_structure.php?db='+db+'&token='+token+'&table='+table;
 
514
}
 
515
//----------------------------------------------------- hide tables -----------------------------------------------------
 
516
 
 
517
function Small_tab_all(id_this) // max/min all tables
 
518
{
 
519
  if(isIE) {
 
520
    alert(LangIEnotSupport);
 
521
    return;
 
522
  }
 
523
  if(id_this.alt=="v")
 
524
  {
 
525
    for (key in j_tabs)
 
526
      if(document.getElementById('_|_hide_tbody_'+key).innerHTML=="v")
 
527
      Small_tab(key,0);
 
528
    id_this.alt = ">";
 
529
    id_this.src="pmd/images/rightarrow1.png";
 
530
  }
 
531
  else
 
532
  {  
 
533
    for (key in j_tabs)
 
534
      if(document.getElementById('_|_hide_tbody_'+key).innerHTML!="v")
 
535
      Small_tab(key,0);
 
536
    id_this.alt = "v";
 
537
    id_this.src="pmd/images/downarrow1.png";
 
538
  }
 
539
  Re_load();
 
540
}
 
541
 
 
542
function Small_tab_invert() // invert max/min all tables
 
543
{
 
544
  if(isIE) {
 
545
    alert(LangIEnotSupport);
 
546
    return;
 
547
  }
 
548
  for (key in j_tabs)
 
549
    Small_tab(key,0);
 
550
  Re_load();
 
551
}
 
552
 
 
553
function Small_tab_refresh() 
 
554
{
 
555
   for (key in j_tabs)
 
556
     if(document.getElementById('_|_hide_tbody_'+key).innerHTML!="v")
 
557
     {
 
558
       Small_tab(key,0);
 
559
       Small_tab(key,0);
 
560
     }
 
561
}
 
562
 
 
563
function Small_tab(t,re_load) 
 
564
{
 
565
  var id      = document.getElementById('_|_tbody_'+t);
 
566
  var id_this = document.getElementById('_|_hide_tbody_'+t);
 
567
  var id_t    = document.getElementById(t);
 
568
 
 
569
  id_t.style.width = id_t.offsetWidth;
 
570
  if(id_this.innerHTML=="v")
 
571
  {
 
572
    //---CROSS
 
573
    if(isIE) return; //IE not supported
 
574
    id.style.display = 'none';
 
575
    id_this.innerHTML = '>';
 
576
  }
 
577
  else 
 
578
  {
 
579
    id.style.display = '';
 
580
    id_this.innerHTML = 'v';
 
581
  }
 
582
  if(re_load) Re_load();
 
583
}
 
584
//-----------------------------------------------------------------------------------------------------------------
 
585
function Select_tab(t)
 
586
{
 
587
  var id_zag = document.getElementById('_|_zag_'+t);
 
588
  if(id_zag.className != 'tab_zag_3')
 
589
    document.getElementById('_|_zag_'+t).className = 'tab_zag_2';
 
590
  else
 
591
    document.getElementById('_|_zag_'+t).className = 'tab_zag';
 
592
  //----------
 
593
  var id_t    = document.getElementById(t);
 
594
  window.scrollTo( parseInt(id_t.style.left)-300, parseInt(id_t.style.top)-300 );
 
595
  
 
596
  setTimeout(function(){document.getElementById('_|_zag_'+t).className = 'tab_zag';},800);
 
597
}
 
598
//-----------------------------------------------------------------------------------------------------------------
 
599
 
 
600
function Canvas_click(id)
 
601
{
 
602
  var n,relation_name,selected = 0;
 
603
  var a = new Array();
 
604
  var Key0,Key1,Key2,Key3,Key;
 
605
  Clear();
 
606
  for (K in contr)
 
607
    for (key in contr[K])
 
608
      for (key2 in contr[K][key])
 
609
        for (key3 in contr[K][key][key2])
 
610
        { 
 
611
          if(!document.getElementById("check_vis_"+key2).checked || 
 
612
             !document.getElementById("check_vis_"+contr[K][key][key2][key3][0]).checked) continue; // if hide
 
613
          var x1_left  = document.getElementById(key2).offsetLeft + 1;//document.getElementById(key2+"."+key3).offsetLeft;
 
614
          var x1_right = x1_left + document.getElementById(key2).offsetWidth;
 
615
          var x2_left  = document.getElementById(contr[K][key][key2][key3][0]).offsetLeft;//+document.getElementById(contr[K][key2][key3][0]+"."+contr[K][key2][key3][1]).offsetLeft
 
616
          var x2_right = x2_left + document.getElementById(contr[K][key][key2][key3][0]).offsetWidth;
 
617
          a[0] = Math.abs( x1_left - x2_left );  a[1] = Math.abs(x1_left  - x2_right);
 
618
          a[2] = Math.abs( x1_right - x2_left ); a[3] = Math.abs(x1_right - x2_right);
 
619
          n = s_left = s_right = 0;
 
620
          for(var i=1;i<4;i++)
 
621
            if(a[n]>a[i])n=i;
 
622
          if(n==1){ x1 = x1_left-sm_s;  x2 = x2_right+sm_s; if(x1<x2)n=0;}
 
623
          if(n==2){ x1 = x1_right+sm_s; x2 = x2_left-sm_s;  if(x1>x2)n=0;}
 
624
          if(n==3){ x1 = x1_right+sm_s; x2 = x2_right+sm_s; s_right = 1; }
 
625
          if(n==0){ x1 = x1_left-sm_s;  x2 = x2_left-sm_s;  s_left  = 1; }
 
626
     
 
627
          var y1 = document.getElementById(key2).offsetTop + document.getElementById(key2+"."+key3).offsetTop + height_field;
 
628
          var y2 = document.getElementById(contr[K][key][key2][key3][0]).offsetTop + 
 
629
                   document.getElementById(contr[K][key][key2][key3][0]+"."+contr[K][key][key2][key3][1]).offsetTop + height_field;
 
630
          if( !selected && Glob_X > x1-10 && Glob_X < x1+10 && Glob_Y > y1-7 && Glob_Y < y1+7)
 
631
          {
 
632
            Line0(x1-sm_x,y1-sm_y,x2-sm_x,y2-sm_y,"rgba(255,0,0,1)"); 
 
633
            selected = 1; // Rect(x1-sm_x,y1-sm_y,10,10,"rgba(0,255,0,1)"); 
 
634
            relation_name = key; // 
 
635
            Key0=contr[K][key][key2][key3][0]; Key1=contr[K][key][key2][key3][1]; 
 
636
            Key2 = key2; Key3 = key3;
 
637
            Key = K;
 
638
          } 
 
639
          else    
 
640
          Line0(x1-sm_x,y1-sm_y,x2-sm_x,y2-sm_y,"rgba(0,100,150,1)");
 
641
        }
 
642
  if( selected )  // select relations
 
643
  { //alert(Key0+' - '+Key1+' - '+Key2+' - '+Key3);
 
644
    document.getElementById('layer_upd_relation').style.left = Glob_X - (document.getElementById('layer_upd_relation').offsetWidth>>1);
 
645
    document.getElementById('layer_upd_relation').style.top  = Glob_Y - document.getElementById('layer_upd_relation').offsetHeight-10;
 
646
    document.getElementById('layer_upd_relation').style.visibility = 'visible';
 
647
    link_relation = 'T1='+Key0+'&F1='+Key1+'&T2='+Key2+'&F2='+Key3+'&K='+Key;
 
648
  }
 
649
}
 
650
 
 
651
function Upd_relation()
 
652
{
 
653
  document.getElementById('layer_upd_relation').style.visibility = 'hidden';
 
654
  link_relation += '&db=' + db + '&token=' + token + '&die_save_pos=0';
 
655
  link_relation += Get_url_pos();
 
656
  makeRequest('pmd_relation_upd.php', link_relation);
 
657
}
 
658
 
 
659
function VisibleTab(id,t_n)
 
660
{
 
661
  if(id.checked)document.getElementById(t_n).style.visibility = 'visible';
 
662
  else document.getElementById(t_n).style.visibility = 'hidden';
 
663
  Re_load();
 
664
}
 
665
 
 
666
function Hide_tab_all(id_this) // max/min all tables
 
667
{
 
668
  if(id_this.alt == 'v') { id_this.alt='>';id_this.src="pmd/images/rightarrow1.png"; }
 
669
  else { id_this.alt='v';id_this.src="pmd/images/downarrow1.png"; }
 
670
  var E = document.form1;
 
671
  for (i=0;i<E.elements.length;i++) 
 
672
    if(E.elements[i].type=="checkbox" && E.elements[i].id.substring( 0 , 10) == 'check_vis_')
 
673
    {
 
674
      if(id_this.alt == 'v') { E.elements[i].checked = true; document.getElementById(E.elements[i].value).style.visibility = 'visible';}       
 
675
      else { E.elements[i].checked = false; document.getElementById(E.elements[i].value).style.visibility = 'hidden';} 
 
676
    }
 
677
  Re_load();
 
678
}
 
679
 
 
680
function in_array_k(x,m)
 
681
{
 
682
  var b=0;
 
683
  for (u in m)
 
684
  if(x == u){ b=1; break; }
 
685
  return b;
 
686
}
 
687
 
 
688
function No_have_constr(id_this) 
 
689
{
 
690
  var a = new Array();
 
691
  for (K in contr) 
 
692
    for (key in contr[K])                 // contr name
 
693
      for (key2 in contr[K][key])         // table name
 
694
        for (key3 in contr[K][key][key2]) // field name
 
695
        a[key2]=a[contr[K][key][key2][key3][0]]=1; // exist constr
 
696
 
 
697
 
 
698
        
 
699
  if(id_this.alt == 'v') { id_this.alt='>';id_this.src="pmd/images/rightarrow2.png"; }
 
700
  else { id_this.alt='v';id_this.src="pmd/images/downarrow2.png"; }
 
701
  var E = document.form1;
 
702
  for (i=0;i<E.elements.length;i++) 
 
703
    if(E.elements[i].type=="checkbox" && E.elements[i].id.substring(0, 10) == 'check_vis_')
 
704
    {
 
705
      if(!in_array_k(E.elements[i].value,a))
 
706
      if(id_this.alt == 'v') 
 
707
           { E.elements[i].checked = true; document.getElementById(E.elements[i].value).style.visibility = 'visible';}       
 
708
      else { E.elements[i].checked = false; document.getElementById(E.elements[i].value).style.visibility = 'hidden';} 
 
709
    }
 
710
}
 
711
 
 
712
function Help()
 
713
{
 
714
 var WinHelp = 
 
715
 window.open("pmd_help.php","wind1", "top=200,left=400,width=300,height=200,resizable=yes,scrollbars=yes,menubar=no");
 
716
}
 
717
 
 
718
function PDF_save()
 
719
{
 
720
  // var WinPDF = 
 
721
  // window.open("pmd_pdf.php?token="+token+"&db="+db,"wind1", "top=200,left=200,width=200,height=100,resizable=yes,scrollbars=yes,menubar=no");
 
722
 Save('pmd_pdf.php?token='+token+'&db='+db);
 
723
}
 
724
 
 
725
 
 
726
function General_scroll()
 
727
{
 
728
   /*
 
729
  if(!document.getElementById('show_relation_olways').checked)
 
730
  {
 
731
    document.getElementById("canvas").style.visibility = 'hidden';
 
732
    clearTimeout(timeoutID);
 
733
    timeoutID = setTimeout(General_scroll_end,500);
 
734
  }*/
 
735
  //if(timeoutID)
 
736
  clearTimeout(timeoutID);
 
737
  timeoutID = setTimeout
 
738
  (
 
739
    function()
 
740
    {  
 
741
      document.getElementById('top_menu').style.left = document.body.scrollLeft;
 
742
      document.getElementById('top_menu').style.top  = document.body.scrollTop;
 
743
      document.getElementById('layer_menu').style.left = document.body.scrollLeft;
 
744
      document.getElementById('layer_menu').style.top  = document.body.scrollTop + document.getElementById('top_menu').offsetHeight;
 
745
    }
 
746
    ,200
 
747
  );
 
748
 
749
 
 
750
/*
 
751
function General_scroll_end()
 
752
 
753
//  document.getElementById('layer_menu').style.left = document.body.scrollLeft;
 
754
//  document.getElementById('layer_menu').style.top  = document.body.scrollTop + document.getElementById('top_menu').offsetHeight;
 
755
  //if(isIE)
 
756
  //{
 
757
  //  document.getElementById('layer_menu').style.left = document.body.scrollLeft;
 
758
  //  document.getElementById('layer_menu').style.top  = document.body.scrollTop + document.getElementById('top_menu').offsetHeight;
 
759
  //}
 
760
  document.getElementById("canvas").style.visibility = 'visible';
 
761
}
 
762
*/
 
763
 
 
764
function Show_left_menu(id_this) // max/min all tables
 
765
{
 
766
  if(id_this.alt=="v")
 
767
  {
 
768
    document.getElementById("layer_menu").style.top = document.getElementById('top_menu').offsetHeight;
 
769
    document.getElementById("layer_menu").style.visibility = 'visible';
 
770
    id_this.alt = ">";
 
771
    id_this.src="pmd/images/uparrow2_m.png";
 
772
    if(isIE) General_scroll();
 
773
  }
 
774
  else
 
775
  {  
 
776
    document.getElementById("layer_menu").style.top = -1000; //fast scroll
 
777
    document.getElementById("layer_menu").style.visibility = 'hidden';
 
778
    id_this.alt = "v";
 
779
    id_this.src="pmd/images/downarrow2_m.png";
 
780
  }
 
781
}
 
782
//----------------------------------------------------------------------------------------
 
783
function Top_menu_right(id_this)
 
784
 
785
  if(id_this.alt==">")
 
786
  {
 
787
    document.getElementById('top_menu').style.marginLeft = document.getElementById('top_menu').offsetWidth; // = 350
 
788
    id_this.alt = "<";
 
789
    id_this.src="pmd/images/2leftarrow_m.png";
 
790
  }
 
791
  else
 
792
  {  
 
793
    document.getElementById('top_menu').style.marginLeft = 0;
 
794
    id_this.alt = ">";
 
795
    id_this.src="pmd/images/2rightarrow_m.png";
 
796
  } 
 
797
}
 
798
//----------------------------------------------------------------------------------------
 
799
function Start_display_field()
 
800
{
 
801
  if( ON_relation ) return;
 
802
  if( !ON_display_field )
 
803
  {
 
804
    ON_display_field = 1;
 
805
    document.getElementById('hint').innerHTML = LangChangeDisplay;
 
806
    document.getElementById('hint').style.visibility = "visible";
 
807
    document.getElementById('display_field_button').className = 'M_butt_Selected_down';//'#FFEE99';gray #AAAAAA
 
808
 
 
809
    if(isIE) { // correct for IE
 
810
      document.getElementById('display_field_button').className = 'M_butt_Selected_down_IE';
 
811
    }
 
812
  }
 
813
  else
 
814
  {
 
815
    document.getElementById('hint').innerHTML = "";
 
816
    document.getElementById('hint').style.visibility = "hidden";
 
817
    document.getElementById('display_field_button').className = 'M_butt';
 
818
    ON_display_field = 0;  
 
819
  }
 
820
}