10987b64bbf004c79f62e9718d276f60afa31009
[ldapsaisie.git] / trunk / includes / js / functions.js
1 var LSdebug_active = 0;
2
3 function LSdebug(arguments) {
4     if (LSdebug_active != 1) return;
5     if (typeof console != 'undefined') {
6       console.log(arguments);
7       return true;
8     }
9     if (typeof opera != 'undefined') {
10       opera.postError(arguments);
11       return true;
12     }
13     alert(arguments);
14 }
15
16 /**
17  * Construction of formatted string
18  *
19  * This function returns a formatted string according to given data & format parameters
20  *
21  * @author Benjamin Renard <brenard@easter-eggs.com>
22  *
23  * @param[in] $format string String Format
24  * @param[in] $data mixed Data used to compose the string.
25  *                    It can be strings array or object.
26  * @param[in] $meth string Object method name to call to get the new value for the formatted string.
27  * 
28  * Invocation example :
29  * getFData('%{test1} je  %{test2}',{
30  *    getValue: function(val) {
31  *      var data = {
32  *        test1: 'val_test1',
33  *        test2: 'val_test2'
34  *      };
35  *      return data[val];
36  *    }
37  * },'getValue');
38  * 
39  * @retval string The formatted string
40  */
41 function getFData(format,data,meth) {
42   var getMotif =  new RegExp('%\{(([A-Za-z0-9]+)(\:(-?[0-9])+)?(\:(-?[0-9])+)?)\}');
43   var find=1;  
44   var val="";
45   if(($type(data)=='object') || ($type(data)=='array')) {
46     if ($type(data[meth])!='function') {
47       while (find) {
48         var ch = getMotif.exec(format);
49         if ($type(ch)) {
50           if($type(ch[4])) {
51             if ($type(ch[6])) {
52               var s=ch[4];
53               var l=ch[6];
54             }
55             else {
56               var s=0;
57               var l=ch[4];
58             }
59             var val=data[ch[2]].substr(s,l);
60           }
61           else {
62             val=data[ch[2]];
63           }
64           format=format.replace(new RegExp('%\{'+ch[1]+'\}'),val);
65         }
66         else {
67           find=0;
68         }           
69       }
70     }
71     else {
72       while (find) {
73         var ch = getMotif.exec(format);
74         if ($type(ch)) {
75           try {
76             val=data[meth](ch[2]);
77           }
78           catch(e) {
79             LSdebug('getFData() : '+meth+'() -> rater');
80             return;
81           }
82           
83           if($type(ch[4])&&ch[4]!="") {
84             if ($type(ch[6])&&ch[6]!="") {
85               var s=ch[4];
86               var l=ch[6];
87             }
88             else {
89               var s=0;
90               var l=ch[4];
91             }
92             val=val.substr(s,l);
93           }
94           
95           format=format.replace(new RegExp('%\{'+ch[1]+'\}'),val);
96         }
97         else {
98           find=0;
99         }           
100       }
101     }
102   }
103   return format;
104 }
105
106 /**
107 * Delete accentuated characters in a string
108
109 * @param[in] $string Original string
110
111 * @retval string de-accentuated string
112 */
113 function replaceAccents(str) {
114   var new_str = String(str);
115   var accent = 
116     new Array("à","á","â","ã","ä","ç","è","é","ê","ë","ì","í","î","ï","ñ","ò","ó","ô","õ","ö","ù","ú","û","ü","ý","ÿ","À","Á","Â","Ã","Ä","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò","Ó","Ô","Õ","Ö","Ù","Ú","Û","Ü","Ý");
117   var sans_accent = 
118     new Array("a","a","a","a","a","c","e","e","e","e","i","i","i","i","n","o","o","o","o","o","u","u","u","u","y","y","A","A","A","A","A","C","E","E","E","E","I","I","I","I","N","O","O","O","O","O","U","U","U","U","Y");
119   if (str && str!= "") {
120     for (i=0; i<accent.length; i++) {
121       var reg_exp= RegExp(accent[i], "gi");
122       new_str = new_str.replace (reg_exp, sans_accent[i]);
123     }
124   }
125   return new_str;
126 }
127
128 /**
129 * Replace spaces or tabs of a string by an argument
130
131 * @param[in] $string The original string
132 * @param[in] $string The character to set instead of spaces or tabs
133
134 * @retval string The modified outspaced string
135 */
136 function replaceSpaces(str,to) {
137   if (!$type(to)) {
138     to = '';
139   }
140   var new_str = String(str);
141   if (str && str!= "") {
142     var reg_exp= RegExp('[ \t]', "gi");
143     new_str = new_str.replace (reg_exp, to);
144   }
145   return new_str;
146 }
147
148 /**
149  * Add one variable with value in URL
150  * @param[in] url string The original URL
151  * @param[in] name string The variable name
152  * @param[in] value string The value of the variable
153  * 
154  * @retval string The URL with the value
155  */
156 function urlAddVar(url,name,value) {
157   if ($type(url)) {
158     var isExtended = RegExp('[?]');
159     if (isExtended.test(url)) {
160       url=url+'&';
161     }
162     else {
163       url=url+'?';
164     }
165     return url + name + '=' + value;
166   }
167   return url;
168 }