source: trunk/phpgwapi/js/venus/shapes.js @ 2

Revision 2, 13.5 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/* Source: Venus Project
2   http://www.jbanana.org/venus/ 
3         License: LGPL-CC & Creative Commons */
4
5//global vars
6var _DEFAULT_PX_CLASS = "PX";
7
8//prototypes
9var _PROTOTYPE_TRIANGLE_UP = null;
10var _PROTOTYPE_TRIANGLE_DOWN = null;
11var _PROTOTYPE_TRIANGLE_LEFT = null;
12var _PROTOTYPE_TRIANGLE_RIGHT = null;
13var _PROTOTYPE_TRIANGLE_END = null;
14var _PROTOTYPE_TRIANGLE_INI = null;
15var _PROTOTYPE_ARC_Q1 = null;
16var _PROTOTYPE_ARC_Q2 = null;
17var _PROTOTYPE_ARC_Q3 = null;
18var _PROTOTYPE_ARC_Q4 = null;
19var _PROTOTYPE_STAR = null;
20var _PROTOTYPE_X = null;
21var _PROTOTYPE_SQUARE = null;
22var _PROTOTYPE_UNDERLINE = null;
23var _PROTOTYPE_PIN = null;
24var _PROTOTYPE_FILTER = null;
25var _PROTOTYPE_POSITIVE = null;
26var _PROTOTYPE_NEGATIVE = null;
27
28//public functions *****************************
29function vMirror(DOMtable) {
30   return _vMirror(DOMtable);
31}
32
33function bMirror(DOMtable) {
34   return _bMirror(DOMtable);
35}
36
37function hMirror(DOMtable) {
38   return _hMirror(DOMtable);
39}
40
41function rotate(DOMtable) {
42   return _rotate(DOMtable);
43}
44
45function addUnderLine(DOMtable, className) {
46   return _addUnderLine(DOMtable, className);
47}
48
49function getNegativeShape(type, className) {
50   var nArg = getNegativeShape.arguments.length;
51   if(nArg == 1) className = _DEFAULT_PX_CLASS;
52   var tmp = getShape(type, className);
53   if(tmp == null)
54   return null;
55   return _negative(tmp, className);
56}
57
58function getShape(type, className) {
59   var nArg = getShape.arguments.length;
60   if(nArg == 1) {
61      className = _DEFAULT_PX_CLASS;
62      var prototype = eval("_PROTOTYPE_" + type);
63      if(prototype == null) {
64         eval("_PROTOTYPE_" + type + " = _new" + type + "('" + className + "');");
65         eval("prototype = _PROTOTYPE_" + type);
66      }
67      return prototype.cloneNode(true);
68   }
69   else if(nArg == 2) {
70      eval("_PROTOTYPE_" + type + " = _new" + type + "('" + className + "');");
71      eval("prototype = _PROTOTYPE_" + type);
72      return prototype.cloneNode(true);
73   }
74   return null;
75}
76//objects ***************************************
77
78function Corner() {
79   //atributos
80   this.DOMtable = document.createElement("table");
81   this.DOMtbody = document.createElement("tbody");
82   this.DOMq0 = document.createElement("td");
83   this.DOMq1 = document.createElement("td");
84   this.DOMq2 = document.createElement("td");
85   this.DOMq3 = document.createElement("td");
86   this.DOMq4 = document.createElement("td");
87   this.DOMtop = document.createElement("td");
88   this.DOMdown = document.createElement("td");
89   this.DOMtr1 = null;
90   this.DOMtr2 = null;
91   this.DOMtr3 = null;
92   this.className = _DEFAULT_PX_CLASS;
93   //metodos   
94   this.setQuadrant = setQuadrant;
95   //outros
96   this.DOMtable.cellPadding = "0";
97   this.DOMtable.cellSpacing = "0";
98   this.DOMtable.border = "0";
99   this.DOMtable.appendChild(this.DOMtbody);
100   //linha 1
101   var DOMtr = document.createElement("tr");
102   this.DOMtr1 = DOMtr;
103   var DOMtrTmp = document.createElement("tr");
104   this.DOMq1.width = "1";
105   this.DOMq2.width = "1";
106   this.DOMq1.className = this.className;
107   this.DOMq2.className = this.className;
108   DOMtr.appendChild(this.DOMq2);
109   var DOMtd = this.DOMtop;
110   DOMtd.className = this.className;
111   DOMtd.width = "100%";
112   DOMtr.appendChild(DOMtd);
113   DOMtr.appendChild(this.DOMq1);
114   DOMtd.appendChild(DOMtrTmp);
115   this.DOMtbody.appendChild(DOMtr);
116   //linha 2
117   DOMtr = document.createElement("tr");
118   this.DOMtr2 = DOMtr;
119   DOMtr.className = this.className;
120   DOMtd = this.DOMq0;
121   this.DOMq0.className = this.className;
122   DOMtd.colSpan = 3;
123   DOMtr.appendChild(DOMtd);
124   this.DOMtbody.appendChild(DOMtr);
125   //linha 3
126   DOMtr = document.createElement("tr");
127   this.DOMtr3 = DOMtr;
128   this.DOMq3.width = "1";
129   this.DOMq4.width = "1";
130   this.DOMq3.className = this.className;
131   this.DOMq4.className = this.className;
132   DOMtr.appendChild(this.DOMq3);
133   DOMtd = this.DOMdown;
134   DOMtd.className = this.className;
135   DOMtd.width = "100%";
136   DOMtr.appendChild(DOMtd);
137   DOMtr.appendChild(this.DOMq4);
138   this.DOMtbody.appendChild(DOMtr);
139   return this;
140}
141//contextual functions ************************
142
143function setQuadrant(DOMtable, numQuad, plusHeight) {
144   var DOMq = eval("this.DOMq" + numQuad);
145   var child = DOMq;
146   while(child.firstChild != null) {
147      if(child.firstChild != null) child.removeChild(child.firstChild);
148   }
149   var DOMtableTmp = null;
150   if(plusHeight != undefined) {
151      var DOMtd = document.createElement("td");
152      DOMtd.appendChild(document.createTextNode(""));
153      DOMtd.style.width="9px";
154      DOMtableTmp = document.createElement("table");
155      DOMtd.height = plusHeight;
156      DOMtableTmp.width = "9px";
157      DOMtableTmp.className = this.className;
158      DOMtd.className = this.className;
159      DOMtableTmp.cellPadding = "0";
160      DOMtableTmp.cellSpacing = "0";
161      DOMtableTmp.border = "0";
162      DOMtableTmp.appendChild(document.createElement("tbody"));
163      DOMtableTmp.firstChild.appendChild(document.createElement("tr"));
164      DOMtableTmp.firstChild.firstChild.appendChild(DOMtd);
165   }
166   DOMq.className = null;
167   if(numQuad > 2 && DOMtableTmp != null) DOMq.appendChild(DOMtableTmp);
168   DOMq.appendChild(DOMtable);
169   if(numQuad < 3 && DOMtableTmp != null) DOMq.appendChild(DOMtableTmp);
170}
171//private functions ****************************
172
173function _vMirror(DOMtable) {
174   var DOMtbody = DOMtable.firstChild;
175   var DOMtr = DOMtbody.lastChild;
176   var DOMtmp = null;
177   while(DOMtr != null) {
178      DOMtmp = DOMtr.previousSibling;
179      if(DOMtr != null) {
180         DOMtbody.removeChild(DOMtr);
181         DOMtbody.appendChild(DOMtr);
182         DOMtr = DOMtmp;
183      }
184   }
185   return DOMtable;
186}
187
188function _bMirror(DOMtable) {
189   var DOMtbody = DOMtable.firstChild;
190   var DOMtr = DOMtbody.lastChild;
191   var DOMtd = null;
192   var DOMtmp1 = null;
193   var DOMtmp2 = null;
194   while(DOMtr != null) {
195      DOMtmp1 = DOMtr.previousSibling;
196      if(DOMtr != null) {
197         DOMtbody.removeChild(DOMtr);
198         DOMtbody.appendChild(DOMtr);
199         DOMtd = DOMtr.lastChild;
200         while(DOMtd != null) {
201            DOMtmp2 = DOMtd.previousSibling;
202            if(DOMtd != null) {
203               DOMtr.removeChild(DOMtd);
204               DOMtr.appendChild(DOMtd);
205               DOMtd.moved = true;
206            }
207            DOMtd = DOMtmp2;
208         }
209         DOMtr = DOMtmp1;
210      }
211   }
212   return DOMtable;
213}
214
215function _hMirror(DOMtable) {
216   var DOMtbody = DOMtable.firstChild;
217   var DOMtr = DOMtbody.lastChild;
218   var DOMtd = null;
219   var DOMtmp1 = null;
220   var DOMtmp2 = null;
221   while(DOMtr != null) {
222      DOMtmp1 = DOMtr.previousSibling;
223      if(DOMtr != null) {
224         DOMtd = DOMtr.lastChild;
225         while(DOMtd != null) {
226            DOMtmp2 = DOMtd.previousSibling;
227            if(DOMtd != null) {
228               DOMtr.removeChild(DOMtd);
229               DOMtr.appendChild(DOMtd);
230               DOMtd.moved = true;
231            }
232            DOMtd = DOMtmp2;
233         }
234         DOMtr = DOMtmp1;
235      }
236   }
237   return DOMtable;
238}
239
240function _rotate(DOMtable) {
241   var array = new Array();
242   var DOMbody = DOMtable.firstChild;
243   var tmpArray = null;
244   var DOMtd = null;
245   var DOMrow = DOMbody.lastChild;
246   while(DOMrow.childNodes.length > 0) {
247      tmpArray = new Array();
248      array[array.length] = tmpArray;
249      while(DOMrow != null) {
250         DOMtd = DOMrow.firstChild;
251         tmpArray[tmpArray.length] = DOMtd;
252         DOMrow.removeChild(DOMtd);
253         DOMrow = DOMrow.previousSibling;
254      }
255      DOMrow = DOMbody.lastChild;
256   }
257   DOMtable.removeChild(DOMbody);
258   DOMbody = document.createElement("tbody");
259   DOMtable.appendChild(DOMbody);
260   for(var i = 0; i < array.length; i++) {
261      DOMrow = document.createElement("tr");
262      DOMbody.appendChild(DOMrow);
263      for(var ii = 0; ii < array[i].length; ii++) {
264         if(array[i][ii] != null) DOMrow.appendChild(array[i][ii]);
265      }
266   }
267   DOMtable.height=array.length;
268   DOMtable.width=array[0].length;
269   return DOMtable;
270}
271
272function _negative(DOMtable, className) {
273   var DOMtbody = DOMtable.firstChild;
274   var DOMtr = DOMtbody.lastChild;
275   var DOMtd = null;
276   while(DOMtr != null) {
277      DOMtd = DOMtr.lastChild;
278      DOMtr.className = null;
279      while(DOMtd != null) {
280         if(DOMtd.className == null || DOMtd.className == "")
281                DOMtd.className = className;
282         else DOMtd.className = null;
283                DOMtd = DOMtd.previousSibling;
284      }
285      DOMtr = DOMtr.previousSibling;
286   }
287   return DOMtable;
288}
289
290function _change(DOMtable, className) {
291   var DOMtbody = DOMtable.firstChild;
292   var DOMtr = DOMtbody.lastChild;
293   var DOMtd = null;
294   while(DOMtr != null) {
295      DOMtd = DOMtr.lastChild;     
296      while(DOMtd != null) {
297         if(DOMtd.className != null && DOMtd.className != "")
298                DOMtd.className = className;
299         else
300                DOMtd.className = "";
301         DOMtd = DOMtd.previousSibling;         
302      }
303      DOMtr = DOMtr.previousSibling;
304   }
305   return DOMtable;
306}
307function _addUnderLine(DOMtable, className) {
308   var DOMtr = DOMtable.firstChild.firstChild;
309   DOMtr = DOMtr.cloneNode(true);
310   DOMtr.className = className;
311   DOMtable.firstChild.appendChild(DOMtr);
312   return DOMtable;
313}
314
315function _newTRIANGLE_INI(triangleClass) {
316   return rotate(addUnderLine(getShape("TRIANGLE_DOWN", triangleClass), triangleClass));
317}
318
319function _newTRIANGLE_END(triangleClass) {
320   return hMirror(getShape("TRIANGLE_INI", triangleClass));
321}
322
323function _newTRIANGLE_LEFT(triangleClass) {
324   return hMirror(getShape("TRIANGLE_RIGHT", triangleClass));
325}
326
327function _newTRIANGLE_RIGHT(triangleClass) {
328   return rotate(getShape("TRIANGLE_UP", triangleClass));
329}
330
331function _newTRIANGLE_UP(triangleClass) {
332   return vMirror(getShape("TRIANGLE_DOWN", triangleClass));
333}
334
335function _newTRIANGLE_DOWN(className) {
336   var condiction = "i==0 ||";
337   condiction += "i == 1 && (ii<8 && ii>0)||";
338   condiction += "i == 2 && (ii<7 && ii>1)||";
339   condiction += "i == 3 && (ii<6 && ii>2)||";
340   condiction += "i == 4 && (ii<5 && ii>3)";
341   return _newGeneral(className, condiction, "TRIANGLE", 5, 9);
342}
343
344function _newTD(triangleClass) {
345   var DOMtd = document.createElement("td");
346   DOMtd.width = 1;
347   DOMtd.height = 1;
348   DOMtd.className = triangleClass;
349   return DOMtd;
350}
351
352function _newARC_Q2(className) {
353   return hMirror(getShape("ARC_Q1", className));
354}
355
356function _newARC_Q3(className) {
357   return bMirror(getShape("ARC_Q1", className));
358}
359
360function _newARC_Q4(className) {
361   return vMirror(getShape("ARC_Q1", className));
362}
363
364function _newARC_Q1(className) {
365   var condiction = "!((i == 0 && ii > 2) ||(i == 1 && ii > 4) ||(i == 2 && ii > 5) ||(i == 3 && ii > 6) ||(i > 3 && i < 6 && ii > 7))";
366   return _newGeneral(className, condiction, "ARC", 9);
367}
368
369function _newX(className) {
370   var condiction = "(i!=0 && i!=8) && (i - ii) == 0 ||";
371   condiction += "i == 1 && ii == 7 ||";
372   condiction += "i == 2 && ii == 6 ||";
373   condiction += "i == 3 && ii == 5 ||";
374   condiction += "i == 5 && ii == 3 ||";
375   condiction += "i == 6 && ii == 2 ||";
376   condiction += "i == 7 && ii == 1";
377   return _newGeneral(className, condiction, "X", 9);
378}
379
380function _newSQUARE(className) {
381   var condiction = "((i!=0 && i!=8) && (ii==1 || ii==7)) ||";
382   condiction += "((ii!=0 && ii!=8) && (2==i || i==1 || i==7))";
383   return _newGeneral(className, condiction, "SQUARE", 9);
384}
385
386function _newUNDERLINE(className) {
387   var condiction = "(5==i||6==i||i==7) && (ii!=0&&ii!=8)";
388   return _newGeneral(className, condiction, "UNDERLINE", 9);
389}
390
391function _newSTAR(className) {
392   var condiction = "i == 4 || ii == 4 || (i!=0 && i!=8) && (i - ii) == 0 ||";
393   condiction += "i == 1 && ii == 7 ||";
394   condiction += "i == 2 && ii == 6 ||";
395   condiction += "i == 3 && ii == 5 ||";
396   condiction += "i == 5 && ii == 3 ||";
397   condiction += "i == 6 && ii == 2 ||";
398   condiction += "i == 7 && ii == 1";
399   return _newGeneral(className, condiction, "STAR", 9);
400}
401
402function _newPIN(className) {
403   var condiction = "((i!=0 && i!=4) && (ii==1 || ii==3)) ||";
404   condiction += "((ii!=0 && ii!=4) && (i==1 || i==3))";
405   return _newGeneral(className, condiction, "PIN", 5);
406}
407
408
409function _newFILTER(className) {
410   var condiction = "i==0 ||";
411   condiction += "(i == 1 && (ii<8 && ii>0))||";
412   condiction += "(i == 2 && (ii<7 && ii>1))||";
413   condiction += "(i == 3 && (ii<6 && ii>2))||";
414   condiction += "(i == 4 && (ii<5 && ii>3))||";
415   condiction += "(i >= 5 && ii == 4)||";
416   condiction += "((i>=2 && i<5) && ii==8) ||";
417   condiction += "(i == 5 && (ii>5 && ii<8))";
418   return _newGeneral(className, condiction, "FILTER", 7, 9);
419}
420
421function _newPOSITIVE(className) {
422   var condiction = "(i==3||i==4||ii==3||ii==4)";
423   return _newGeneral(className, condiction, "POSITIVE", 8,8);
424}
425
426function _newNEGATIVE(className) {
427   var condiction = "(i==3||i==4)";
428   return _newGeneral(className, condiction, "NEGATIVE", 8,8);
429}
430
431function _newGeneral(className, condiction, id, loop, loop2) {
432   if(loop2==undefined||loop2==null) loop2 = loop;     
433   var DOMtable = document.createElement("table");
434   var DOMtbody = document.createElement("tbody");
435   DOMtable.appendChild(DOMtbody);
436   DOMtable.id = id;
437   DOMtable.valign = "top";
438   DOMtable.cellPadding = "0";
439   DOMtable.cellSpacing = "0";
440   DOMtable.border = "0";
441   DOMtable.width = loop2;
442   DOMtable.height = loop;
443   DOMtable.appendChild(DOMtbody);
444   var DOMtd = null;
445   var DOMtr = null;
446   for(var i = 0; i < loop; i++) {
447      DOMtr = document.createElement("tr");
448      DOMtbody.appendChild(DOMtr);
449      for(var ii = 0; ii < loop2; ii++) {
450         DOMtd = document.createElement("td");
451         DOMtd.width = 1;
452         DOMtd.height = 1;
453         DOMtr.appendChild(DOMtd);
454         if(eval(condiction)) DOMtd.className = className;
455      }
456   }
457   return DOMtable;
458}
Note: See TracBrowser for help on using the repository browser.