Při generování souhrnu nás bude zajímat jen poslední den (nebudeme generovat celý poslední měsíc)
1 addEvent(window, "load", sortables_init);
9 while (myText.indexOf(". ") != -1 || myText.indexOf(": ") != -1 || myText.indexOf("\n") != -1)
11 myText = myText.replace(/\. /,".");
12 myText = myText.replace(/\: /,".");
13 myText = myText.replace(/\s /,"");
19 function sortables_init()
21 predemNactiNahoru = new Image(14,11);
22 predemNactiNahoru.src ="tabulka-nahoru.gif";
23 predemNactiDolu = new Image(14,11);
24 predemNactiDolu.src ="tabulka-dolu.gif";
26 if (!document.getElementsByTagName)
28 tbls = document.getElementsByTagName("table");
29 for (ti=0;ti<tbls.length;ti++)
32 if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id))
34 ts_makeSortable(thisTbl);
39 function ts_makeSortable(table)
41 if (table.rows && table.rows.length > 0)
43 var firstRow = table.rows[0];
49 for (var i=0;i<firstRow.cells.length;i++)
51 cell = firstRow.cells[i];
52 if (cell.className != 'dontsort')
54 txt = ts_getInnerText(cell);
55 cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this); return false;">'+txt+'<span class="sortarrow"></span></a>';
60 function ts_getInnerText(el)
62 if (typeof el == "string")
64 if (typeof el == "undefined")
67 return el.innerText; //Not needed but it is faster
70 var cs = el.childNodes;
72 for (var i = 0; i < l; i++)
74 switch (cs[i].nodeType)
76 case 1: //ELEMENT_NODE
77 str += ts_getInnerText(cs[i]);
80 str += cs[i].nodeValue;
87 function findValidRowInColumn(table,column)
90 for (ir=1 ;ir < table.rows.length; ir++)
92 if (table.rows[ir].cells[column] != undefined && table.rows[ir].cells[column].className != 'dontsort' && ts_getInnerText(table.rows[ir].cells[column]).length > 0 && ts_getInnerText(table.rows[ir].cells[column]) != " ")
98 function ts_resortTable(lnk)
101 for (var ci=0;ci<lnk.childNodes.length;ci++)
103 if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
105 var spantext = ts_getInnerText(span);
106 var td = lnk.parentNode;
107 var column = td.cellIndex;
108 var table = getParent(td,'TABLE');
110 if (table.rows.length <= 1)
112 var vr = findValidRowInColumn(table,column);
113 var itm = ts_getInnerText(table.rows[vr].cells[column]);
115 if (itm.match(/^\d{1,2}[\/.\/-][ ]?\d{1,2}[\/.\/-][ ]?(\d{2}|\d{4})([ ]{0,3}\d{1,2}[:]{1}\d{1,2}([ ]{0}|[:]{1}\d{1,2}))?$/))
116 sortfn = ts_sort_date;
117 else if (itm.match(/^(([�L\$])|k� |K� |K� ){1}.*|.*(([�L\$])|k� |K� |K� ){1}$/))
118 sortfn = ts_sort_currency;
119 else if (itm.match(/^[\d\,]+$/))
120 sortfn = ts_sort_numeric;
122 sortfn = ts_sort_caseinsensitive;
124 SORT_COLUMN_INDEX = column;
125 var firstRow = new Array();
126 var newRows = new Array();
127 var noSortRows = new Array();
128 firstRow[0] = table.rows[0];
129 var tableRowIndex = 1;
132 while (tableRowIndex < table.rows.length)
134 if (!table.rows[tableRowIndex].className || (table.rows[tableRowIndex].className && (table.rows[tableRowIndex].className != 'dontsort')))
136 newRows[newRowIndex] = table.rows[tableRowIndex];
141 noSortRows[noSortIndex] = table.rows[tableRowIndex];
147 newRows.sort(sortfn);
149 if (span.getAttribute("sortdir") == 'down')
151 ARROW = ' <img src=\"tabulka-dolu.gif\">';
152 //ARROW = ' ↑';
154 span.setAttribute('sortdir','up');
158 //ARROW = ' ↓';
159 ARROW = ' <img src=\"tabulka-nahoru.gif\">';
160 span.setAttribute('sortdir','down');
163 for (i=0;i<noSortRows.length;i++)
165 newRows[newRows.length] = noSortRows[i];
168 for (i=0;i<newRows.length;i++)
170 table.tBodies[0].appendChild(newRows[i]);
173 var allspans = document.getElementsByTagName("span");
174 for (var ci=0;ci<allspans.length;ci++)
175 if (allspans[ci].className == 'sortarrow')
176 if (getParent(allspans[ci],"table") == getParent(lnk,"table"))
177 allspans[ci].innerHTML = '';
178 span.innerHTML = ARROW;
181 function getParent(el, pTagName)
185 else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
188 return getParent(el.parentNode, pTagName);
191 function ts_sort_date(a,b)
194 if (a.cells[SORT_COLUMN_INDEX] != undefined && a.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).length > 0 && ts_getInnerText(a.cells[SORT_COLUMN_INDEX]) != " ")
196 aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
197 var aaList = trim(aa).split(" ");
200 if (aaList[0].indexOf(".") != -1)
203 aaDateList = aaList[0].split(".");
205 if (aaList[1] != null && aaList[1].indexOf(":") != -1)
207 aaTimeList = aaList[1].split(":");
208 if (aaTimeList.length > 2)
209 aaDateTime = new Date(aaDateList[2],(aaDateList[1]-1),aaDateList[0],aaTimeList[0],aaTimeList[1],aaTimeList[2]);
211 aaDateTime = new Date(aaDateList[2],(aaDateList[1]-1),aaDateList[0],aaTimeList[0],aaTimeList[1],0);
215 aaDateTime = new Date(aaDateList[2],(aaDateList[1]-1),aaDateList[0]);
220 aaTimeList = aaList[1].split(":");
221 aaDateList = aaList[0].split(".");
222 if (aaTimeList.length > 2)
223 aaDateTime = new Date(aaDateList[2],(aaDateList[1]-1),aaDateList[0],aaTimeList[0],aaTimeList[1],aaTimeList[2]);
225 aaDateTime = new Date(aaDateList[2],(aaDateList[1]-1),aaDateList[0],aaTimeList[0],aaTimeList[1],0);
229 aaDateTime = new Date(1900,0,1);
232 if (b.cells[SORT_COLUMN_INDEX] != undefined && b.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).length > 0 && ts_getInnerText(b.cells[SORT_COLUMN_INDEX]) != " ")
234 bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
235 var bbList = trim(bb).split(" ");
239 if (bbList[0].indexOf(".") != -1)
241 bbDateList = bbList[0].split(".");
242 if (bbList[1] != null && bbList[1].indexOf(":") != -1)
244 bbTimeList = bbList[1].split(":");
245 if (bbTimeList.length > 2)
246 bbDateTime = new Date(bbDateList[2],(bbDateList[1]-1),bbDateList[0],bbTimeList[0],bbTimeList[1],bbTimeList[2]);
248 bbDateTime = new Date(bbDateList[2],(bbDateList[1]-1),bbDateList[0],bbTimeList[0],bbTimeList[1],0);
252 bbDateTime = new Date(bbDateList[2],(bbDateList[1]-1),bbDateList[0]);
257 bbTimeList = bbList[1].split(":");
258 bbDateList = bbList[0].split(".");
259 if (bbTimeList.length > 2)
260 bbDateTime = new Date(bbDateList[2],(bbDateList[1]-1),bbDateList[0],bbTimeList[0],bbTimeList[1],bbTimeList[2]);
262 bbDateTime = new Date(bbDateList[2],(bbDateList[1]-1),bbDateList[0],bbTimeList[0],bbTimeList[1],0);
266 bbDateTime = new Date(1900,0,1);
268 if (aaDateTime == bbDateTime)
270 else if (aaDateTime < bbDateTime)
276 function ts_sort_currency(a,b)
278 aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
279 bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
280 return parseFloat(aa) - parseFloat(bb);
283 function ts_sort_numeric(a,b)
285 if (a.cells[SORT_COLUMN_INDEX] != undefined && a.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).length > 0 && ts_getInnerText(a.cells[SORT_COLUMN_INDEX]) != " ")
286 aa = parseFloat(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
289 if (b.cells[SORT_COLUMN_INDEX] != undefined && b.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).length > 0 && ts_getInnerText(b.cells[SORT_COLUMN_INDEX]) != " ")
290 bb = parseFloat(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
296 function char2Diacritic(transDiacritic)
298 var charDiacritic = "�����ĚĽ�����ŠŤ�Ŏ�Ž";
299 var numDiacritic = "ACDEILLNOORRSTUUYZ";
300 var tmpDiacritic = "";
301 var newDiacritic = "";
302 transDiacritic = transDiacritic.toUpperCase();
303 for(i=0;i<transDiacritic.length;i++)
305 if (charDiacritic.indexOf(transDiacritic.charAt(i))!=-1)
306 tmpDiacritic += numDiacritic.charAt(charDiacritic.indexOf(transDiacritic.charAt(i)))+'|';
308 tmpDiacritic += transDiacritic.charAt(i);
313 function ts_sort_caseinsensitive(a,b)
317 if (a.cells[SORT_COLUMN_INDEX] != undefined && a.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).length > 0)
318 aa = char2Diacritic(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
319 if (b.cells[SORT_COLUMN_INDEX] != undefined && b.cells[SORT_COLUMN_INDEX].className != 'dontsort' && ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).length > 0)
320 bb = char2Diacritic(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
329 function ts_sort_default(a,b)
331 aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
332 bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
341 function addEvent(elm, evType, fn, useCapture)
343 if (elm.addEventListener)
345 elm.addEventListener(evType, fn, useCapture);
348 else if (elm.attachEvent)
350 var r = elm.attachEvent("on"+evType, fn);
355 alert("Handler could not be removed");