1 | // tiles.js |
---|
2 | |
---|
3 | var DEBUG = false, message = ""; |
---|
4 | |
---|
5 | function getElementsByClassName(className, parentElement) { |
---|
6 | var result = new Array(), |
---|
7 | list = (parentElement || window.document.body).getElementsByTagName('*'); |
---|
8 | if(list.length == 0) list = (parentElement || window.document.body).all; |
---|
9 | var class_re = new RegExp('(^|\\s)' + className + '(\\s|$)'); |
---|
10 | for(var i = 0; i < list.length; i++) if(list[i].className.match(class_re)) result[result.length] = list[i]; |
---|
11 | return result; |
---|
12 | }; |
---|
13 | |
---|
14 | // browser compatibility functions |
---|
15 | function add_Event(obj, evt, listener, captured) { |
---|
16 | if (!obj.addEventListener) obj.attachEvent('on'+evt, listener); |
---|
17 | else obj.addEventListener(evt, listener, captured); |
---|
18 | } |
---|
19 | |
---|
20 | function stopBubbling(e) { |
---|
21 | if(!e) window.event.cancelBubble=true; |
---|
22 | else (e.stopPropagation) ? e.stopPropagation() : e.cancelBubble=true; |
---|
23 | } |
---|
24 | |
---|
25 | function getPrimaryLink(list) { |
---|
26 | // get first a.primary element from the list |
---|
27 | // or just first element if no primary anchor is marked |
---|
28 | if(list.length == 0) return false; |
---|
29 | var primary = new RegExp('(^|\\s)' + 'primary' + '(\\s|$)'); |
---|
30 | for(var i = 0; i < list.length; i++) if(primary.exec(list[i].className)) return list[i]; |
---|
31 | return list[0]; |
---|
32 | } |
---|
33 | |
---|
34 | function initTiles(){ |
---|
35 | var tiles = getElementsByClassName("tile", window.document) |
---|
36 | for(var i = 0; i < tiles.length; i++) { |
---|
37 | var tile = tiles[i], |
---|
38 | hrefs = tile.getElementsByTagName('A'); |
---|
39 | var a = getPrimaryLink(hrefs); |
---|
40 | if (a) { |
---|
41 | // adding styling for tiles |
---|
42 | tile.style.cursor='pointer'; |
---|
43 | tile.tabIndex = 0; |
---|
44 | // adding event handling |
---|
45 | add_Event(tile, 'click', new Function("e", "window.location='"+a.href+"';stopBubbling(e)"), false); |
---|
46 | add_Event(tile, 'mouseover', new Function("e", "window.status= '"+a.href+"';stopBubbling(e)"), false); |
---|
47 | add_Event(tile, 'mouseout', function( e ){ window.status= ''; stopBubbling(e) }, false); |
---|
48 | } |
---|
49 | } |
---|
50 | } |
---|
51 | |
---|
52 | registerPloneFunction(initTiles); |
---|