var $ = function(id) {
	return document.getElementById(id);
}
var addEventSimple = function(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}
var removeEventSimple = function(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}
var handleMultipleEl = function(arr, evt, fn) {
	for(var i=0; i<arr.length; i++) {
		addEventSimple(arr[i], evt, fn);
	}
}
var getEventTarget = function(e) {
	var targ;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;	
	return targ;
}
var setAttribute = function(el, className) {
	var classAttrStr = el.getAttribute('class') ? 'class' : 'className';
	el.setAttribute(classAttrStr, className);
}
var getClassNames = function(el) {
	return el.className != '' ? el.className.split(' ') : null;
}
var getClassNameByPrefix = function(el, prefix) {
	var classNames = getClassNames(el);
	for(var i=0; i<classNames.length; i++) {
		if(classNames[i].match(prefix)) return classNames[i].replace(prefix, '');
	}
}
var initBirthDateInput = function() {
	// register handlers
	var focusHandler = function(e) {
		var targ = getEventTarget(e);
		if (targ.value == getClassNameByPrefix(targ, 'defaultValue_')) {
			targ.style.color = '#000';
			targ.value = '';
		}
	}
	var blurHandler = function(e) {
		var targ = getEventTarget(e);
		var targPrevValue;
		if(targ.value == '') {
			targ.style.color = color;
			targ.value = getClassNameByPrefix(targ, 'defaultValue_');
		}
	}
	// init values
	var color;
	var formElToInit = [
		$('clientBirthDate').getElementsByTagName('input'), 
		$('childrenBirthDate').getElementsByTagName('input')
	]; 
	color = formElToInit[0][0].style.color;
	for(var i=0; i<formElToInit.length; i++) {
		for(var j=0; j<formElToInit[i].length; j++) {
			formElToInit[i][j].value = getClassNameByPrefix(formElToInit[i][j], 'defaultValue_');
		}
	}
	// init events
	handleMultipleEl($('clientBirthDate').getElementsByTagName('input'), 'focus', focusHandler);
	handleMultipleEl($('clientBirthDate').getElementsByTagName('input'), 'blur', blurHandler);
	handleMultipleEl($('childrenBirthDate').getElementsByTagName('input'), 'focus', focusHandler);
	handleMultipleEl($('childrenBirthDate').getElementsByTagName('input'), 'blur', blurHandler);
}
