17be567191
For an overvies of the DIV framework and the DIVs in the header and footer please look at http://moodle.org/mod/wiki/view.php?id=2935&userid=0&groupid=0&wikipage=CoursePage The CSS is not yet well structured - it's just working for a starting. For the offical release I'll have to rebuild the CSS to match the final needs. It's lacking an easy CSS for beginners too. Please tell me, if you find some bugs or have some remarks - or if you just like it ;-) Thank you Urs
89 lines
2.9 KiB
Plaintext
89 lines
2.9 KiB
Plaintext
<attach event="ondocumentready" handler="parseStylesheets" />
|
|
<script language="JScript">
|
|
/**
|
|
* PSUEDOS - V1.21.041022 - hover & active
|
|
* ---------------------------------------------
|
|
* Peterned - http://www.xs4all.nl/~peterned/
|
|
* (c) 2004 - Peter Nederlof
|
|
*
|
|
* Credits - Arnoud Berendsen
|
|
* - Martin Reurings
|
|
* for inspiring me and finding really sick bugs
|
|
*
|
|
* howto: body { behavior:url("csshover.htc"); }
|
|
* ---------------------------------------------
|
|
*/
|
|
|
|
var currentSheet, doc = window.document;
|
|
var activators = {
|
|
onhover:{on:'onmouseover', off:'onmouseout'},
|
|
onactive:{on:'onmousedown', off:'onmouseup'}
|
|
}
|
|
|
|
function parseStylesheets() {
|
|
var sheets = doc.styleSheets, l = sheets.length;
|
|
for(var i=0; i<l; i++)
|
|
parseStylesheet(sheets[i]);
|
|
}
|
|
function parseStylesheet(sheet) {
|
|
var l, rules, imports;
|
|
if(sheet.imports) {
|
|
imports = sheet.imports, l = imports.length;
|
|
for(var i=0; i<l; i++)
|
|
parseStylesheet(sheet.imports[i]);
|
|
}
|
|
|
|
rules = (currentSheet = sheet).rules, l = rules.length;
|
|
for(var j=0; j<l; j++) parseCSSRule(rules[j]);
|
|
}
|
|
|
|
function parseCSSRule(rule) {
|
|
var select = rule.selectorText, style = rule.style.cssText;
|
|
if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
|
|
|
|
var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
|
|
var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
|
|
var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
|
|
var affected = select.replace(/:hover.*$/, '');
|
|
var elements = getElementsBySelect(affected);
|
|
|
|
currentSheet.addRule(newSelect, style);
|
|
for(var i=0; i<elements.length; i++)
|
|
new HoverElement(elements[i], className, activators[pseudo]);
|
|
}
|
|
|
|
function HoverElement(node, className, events) {
|
|
if(!node.hovers) node.hovers = {};
|
|
if(node.hovers[className]) return;
|
|
node.hovers[className] = true;
|
|
node.attachEvent(events.on,
|
|
function() { node.className += ' ' + className; });
|
|
node.attachEvent(events.off,
|
|
function() { node.className =
|
|
node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
|
|
}
|
|
|
|
function getElementsBySelect(rule) {
|
|
var parts, nodes = [doc];
|
|
parts = rule.split(' ');
|
|
for(var i=0; i<parts.length; i++) {
|
|
nodes = getSelectedNodes(parts[i], nodes);
|
|
} return nodes;
|
|
}
|
|
function getSelectedNodes(select, elements) {
|
|
var result, node, nodes = [];
|
|
var classname = (/\.([a-z0-9_-]+)/i).exec(select);
|
|
var identify = (/\#([a-z0-9_-]+)/i).exec(select);
|
|
var tagName = (/^[a-z0-9]+/i).exec(select.toUpperCase()) || '*';
|
|
for(var i=0; i<elements.length; i++) {
|
|
result = elements[i].getElementsByTagName(tagName);
|
|
for(var j=0; j<result.length; j++) {
|
|
node = result[j];
|
|
if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
|
|
classname[1] + '\\b').exec(node.className)))) continue;
|
|
nodes[nodes.length] = node;
|
|
}
|
|
} return nodes;
|
|
}
|
|
</script>
|