function stripHTML(oldString) {
  return oldString.replace(/<\S[^><]*>/g, "");
}

function switchInputs(from, to) {
	from.style.display = 'none';
	to.style.display = 'inline';
}

function enterPwd() {
	var pwd = document.getElementById(this.alternative);
	switchInputs(this, pwd);
	pwd.focus();
	return true;
}

function leavePwd() {
	var pwd = document.getElementById(this.alternative);
	if (this.value == '') switchInputs(this, pwd);
	return true;
}

function enterInput() {
	if (this.value == this.old) {
		this.value = '';
		this.focus();
	}
	return true;
}

function leaveInput() {
	if (this.value == '') {
		this.value = this.old;
	}
	return true;
}

function setUpForm(form, values) {
	form = document.getElementById(form);
	if (!form) return false;
	
	var labels = form.getElementsByTagName('label');
	
	for (var key in labels) {
		if (labels[key].getAttribute) {
			var element = document.getElementById(labels[key].attributes['for'].nodeValue);
			var text = labels[key].innerHTML;
			if (text.charAt(text.length - 1) == ':') text = text.substr(0, text.length - 1);
			
			if (element.value == '') element.value = text;
			element.old = text;
			
			labels[key].style.display = 'none';
		}
	}
	
	var e = document.getElementById('user');
	e.onfocus = enterInput;
	e.onblur = leaveInput;
	
	e = document.getElementById('pass_plain');
	e.alternative = 'pass';
	e.onfocus = enterPwd;
	e.style.display = 'block';
	
	e = document.getElementById('pass');
	e.alternative = 'pass_plain';
	e.onblur = leavePwd;
	e.style.display = 'none';
	
	form.onsubmit = function() {
		var labels = form.getElementsByTagName('label');
		for (var key in labels) {
			if (labels[key].getAttribute) {
				var element = document.getElementById(labels[key].attributes['for'].nodeValue);
				if (element.value == element.old) element.value = '';
			}
		}
	}
}

function setUpOrdinaryForm(form, values) {
	form = document.getElementById(form);
	if (!form) return false;

	var labels = form.getElementsByTagName('label');
	var label;
	
	var remove = [];
	
	var defaults = {};

	for (var key in labels) {
		label = labels[key];
		if (label.getAttribute) {
			var element = document.getElementById(label.attributes['for'].nodeValue);
			var text = stripHTML(label.innerHTML);
			if (text.charAt(text.length - 1) == ':') text = text.substr(0, text.length - 1);
			
			if (!element.value || element.value == '') {
				element.value = text;
				$(element).addClass('defaultlabel');
			}
			
			element.old = text;
			element.onfocus = function() {
				if (this.value == this.old) {
					this.value = '';
					$(this).removeClass('defaultlabel');
				}
				
				this.focus();
				return true;
			};
			
			element.onblur = function() {
				if (this.value == '') {
					this.value = this.old;
					$(this).addClass('defaultlabel');
				}
				
				return true;
			};
			
			if (label.hasClass('forcedisplay')) continue;
			
			if (element.type != 'checkbox') {
				//label.style.display = 'none';
				defaults[key] = label.attributes['for'].nodeValue;
				remove[remove.length] = label;
			} else {
				label.style.display = 'inline';
			}
		}
	}
	
	var parent, temp;
	for (var i=0; i<remove.length; ++i) {
		parent = remove[i].parentNode;
		parent.removeChild(remove[i]);
		
/*@cc_on
		if (parent && parent.className == 'password') {
			temp = $(parent).getLast();
			$(document.body).adopt(temp);
			$(parent).empty();
			$(parent).adopt(temp);
			if (window.ie7) parent.style.marginBottom = '1em';
		}
@*/		
	}
	
	form.onsubmit = function() {
		var element;
		for (var key in defaults) {
			element = document.getElementById(defaults[key]);
			if (element.value == element.old) element.value = '';
		}
	}
}

