- From: Olivier Thereaux via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 20 Feb 2007 01:56:46 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/htdocs/scripts
In directory hutz:/tmp/cvs-serv27255/scripts
Added Files:
toggle.js
Log Message:
[work in progress]
revamping home page UI based on work made for CSS validator and Unicorn:
- usage of tabtastic for the method (uri, upload) choice
- usage ot toggle scripting for extended options
- menu moved to bottom of page, giving most important page
real estate to form interface
--- NEW FILE: toggle.js ---
// toggling event visibility
// $Id: toggle.js,v 1.1 2007/02/20 01:56:44 ot Exp $
// v1.0 David Dorward for the W3C CSS Validation Service, 18/12/2006
// Based on v2.01 Kent Brewster, 6/8/2006 http://www.mindsack.com
// namespace protection: one global variable to rule them all
var W3C = {};
W3C.QA = {};
W3C.QA.Validator = {};
W3C.QA.Validator.CSS = {};
W3C.QA.Validator.CSS.toggle =
{
init : function(toggle, closed, hidden)
{
// three class names, fed in from init call
this.toggleClass = toggle;
this.toggleClosed = closed;
this.toggleHidden = hidden;
this.toggleText = "toggletext";
// crawl through the document, look for toggled elements
this.crawl(document.body);
},
crawl : function(el)
{
// get this element's next sibling
var nextSib = this.getNextSibling(el);
// if it has a class name, the class name matches our toggle class
if (el.className && el.className.match(this.toggleClass))
{
// labels are nice, but redundant with the link we are adding
for (i=0;i<el.childNodes.length;i++)
{
current_child_node=el.childNodes[i];
if (current_child_node.tagName && current_child_node.className && current_child_node.className.match(this.toggleText))
// we only want to match an element with a class
{
current_child_node.className = 'hideme';
if (current_child_node.tagName.toLowerCase() == "legend")
{
var paragraph = document.createElement('p');
}
else
{
var paragraph = document.createElement(current_child_node.tagName.toLowerCase());
}
var link = document.createElement('a');
var text = current_child_node.childNodes[0].nodeValue;
//text = text.replace("_", " ", "g");
//var text = "Show/Hide extra validation options";
text = document.createTextNode(text);
link.appendChild(text);
link.href="#" + el.id;
link.onclick = this.newToggleState(this,paragraph,el);
paragraph.appendChild(link);
paragraph.className += ' toggle closed';
el.parentNode.insertBefore(paragraph, el);
}
}
// if the next sib ought to be hidden and it isn't already, hide it
// you can hard-code class=hidden in the HTML if you like, and avoid the Flash of Unstyled Content
if (el.className.match(this.toggleClosed))
{
el.className += ' ' + this.toggleHidden;
//el.parentNode.className += ' ' + this.toggleClosed;
}
}
// is there more to do? Do it, if so:
if (el.firstChild)
{
this.crawl(el.firstChild);
}
if (nextSib)
{
this.crawl(nextSib);
}
},
newToggleState : function(o,element,nextEl) {
return function () { return o.toggleState(element,nextEl) };
},
toggleState : function(el,nextEl)
{
// there's got to be a way to get this without stating it explicitly
var o = W3C.QA.Validator.CSS.toggle;
// change the style of the triggering element
if(el.className.match(o.toggleClosed))
{
el.className = el.className.replace(o.toggleClosed, '');
}
else
{
el.className = el.className + ' ' + o.toggleClosed;
}
// yes, we need to check if it's really there; other scripts could have removed it
if(nextEl && nextEl.className.match('hidden'))
{
nextEl.className = nextEl.className.replace(o.toggleHidden, '');
}
else
{
nextEl.className += ' ' + o.toggleHidden;
}
return false;
},
getNextSibling : function(el)
{
var nextSib = el.nextSibling;
// hack for Gecko browsers
if (nextSib && nextSib.nodeType != 1)
{
nextSib = nextSib.nextSibling;
}
return nextSib;
},
getEl : function(v)
{
var tg = (v) ? v : event;
var el = null;
if (tg.target)
{
el = (tg.target.nodeType == 3) ? tg.target.parentNode : tg.target;
}
else
{
el = tg.srcElement;
}
return el;
}
};
// feed it the CSS class names of your choice
window.onload = function()
{
W3C.QA.Validator.CSS.toggle.init('alttoggle', 'closed', 'hidden');
};
Received on Tuesday, 20 February 2007 01:57:00 UTC