1
// Copyright 2007, Google Inc.
3
// Redistribution and use in source and binary forms, with or without
4
// modification, are permitted provided that the following conditions are met:
6
// 1. Redistributions of source code must retain the above copyright notice,
7
// this list of conditions and the following disclaimer.
8
// 2. Redistributions in binary form must reproduce the above copyright notice,
9
// this list of conditions and the following disclaimer in the documentation
10
// and/or other materials provided with the distribution.
11
// 3. Neither the name of Google Inc. nor the names of its contributors may be
12
// used to endorse or promote products derived from this software without
13
// specific prior written permission.
15
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
16
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
17
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
18
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
// Functions for putting the labels of input boxes in the boxes themselves.
28
function setupLabels(fields) {
29
for (var i = 0, elm; elm = fields[i]; i++) {
30
if (elm.type == "text" || elm.type == "password") {
31
if (elm.value == "") {
36
if (!DOM.is_pocket_ie) {
37
DOM.listen(elm, "focus", focusDynamicLabel);
38
DOM.listen(elm, "blur", blurDynamicLabel);
44
function resetLabels(fields) {
45
for (var i = 0, elm; elm = fields[i]; i++) {
46
if (elm.type == "text" || elm.type == "password") {
47
if (elm.value == elm.getAttribute("label")) {
54
function focusDynamicLabel(event) {
55
var elm = getEventSrc(event);
56
if (elm.value == elm.getAttribute("label")) {
57
if (elm._type == "password") {
58
elm = setInputType(elm, "password", true);
64
function blurDynamicLabel(event) {
65
// wierd... sometimes, it seems like the blur gets fired after unload, so
66
// this function is gone.
67
if (typeof window.getEventSrc == "undefined") {
71
var elm = getEventSrc(event);
75
function setDynamicLabel(elm) {
76
if ("" == elm.value) {
77
if (elm.type == "password") {
78
elm = setInputType(elm, "text", false);
81
elm.value = elm.getAttribute("label");
85
function getEventSrc(e) {
86
if (!e) e = window.event;
89
return e.originalTarget;
90
else if (e.srcElement)
94
function setInputType(el, type, focus) {
95
if (DOM.is_pocket_ie) {
96
// I could not get Pocket IE to respond to focus/blur events,
97
// so this manipulation is not necessary for that platform
101
var span = document.createElement("SPAN");
103
'<input id="' + el.id + '" type="' + type + '" class="' +
104
el.className + '" label="' + el.getAttribute("label") + '">';
106
var newEl = span.firstChild;
107
el.parentNode.replaceChild(newEl, el);
109
newEl._type = el._type;
112
window.setTimeout(function() { newEl.focus(); }, 0);
115
DOM.listen(newEl, "focus", focusDynamicLabel);
116
DOM.listen(newEl, "blur", blurDynamicLabel);