in tapestry-contrib/src/org/apache/tapestry/contrib/form/MaskEdit.js [17:90]
function initMask(field, maskField) {
if (field.disabled == true) {
return;
}
var mask = maskField.value;
var val = field.value;
if (!val) { // if there's no val, init it with empty mask
val = displayMask(mask);
field.value = displayMask(mask);
}
// create a div and add a bunch of spans
// and edits to it.
div = document.createElement("div");
div.style.backgroundColor = "white";
for (var i = 0 ; i < mask.length ; i++) {
var ds = document.createElement("SPAN");
var v = val.substr(i,1);
var m = mask.substr(i,1);
if (v==" ") {
v=" ";
}
ds.innerHTML = v;
ds.index = i;
ds.mask = m;
ds.div = div;
// if we can edit this char
// make a little tiny edit field
if (isEditChar(m)) {
var es = document.createElement("INPUT");
es.style.width = "1px";
es.style.border="0px";
es.index = i;
es.field = field;
es.mask = m;
es.display = ds;
ds.editField = es;
es.div = div;
div.appendChild(es); // set up some events
if (navigator.appName == "Microsoft Internet Explorer") {
addEvent("keypress", es, changeBitIE);
} else {
addEvent("keypress", es, changeBitNS);
}
addEvent("keydown", es, specialKey); // keydown handles stuff like home, end etc
addEvent("click", ds, click);
}
div.appendChild(ds);
}
// the final edit field on the end
var es =document.createElement("INPUT");
es.style.width = "1px";
es.style.border="0px";
es.div = div;
div.appendChild(es);
if (navigator.appName == "Microsoft Internet Explorer") {
addEvent("keypress", es, changeBitIE);
} else {
addEvent("keypress", es, changeBitNS);
}
addEvent("keydown", es, specialKey);
div.noWrap = true; // force single line display
formatDiv(div, field); // format the DIV to look like an edit box
field.style.display = 'none';
field.parentNode.insertBefore(div, field);
addEvent("click", div, divClick);
}