document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b' + cl + '\\b');
	var elem = this.getElementsByTagName('*');
	for ( var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes))
			retnode.push(elem[i]);
	}
	return retnode;
};

function checkHidden(chkbox, targetId, moreStuff) {
	var a = document.getElementById(chkbox);
	var b = document.getElementById(targetId);
	var c = document.getElementById(moreStuff);
	if (a.checked) {
		var allTags = document.getElementsByTagName("*");
		for ( var i = 0; i < allTags.length; i++) {
			if (allTags[i].className == 'frequency') {
				if (allTags[i].name != chkbox) {
					allTags[i].checked = false;
				}
			}
			if (allTags[i].className == 'shown') {
				(allTags[i].className = 'hidden');
			}
		}
		b.className = 'shown';
		c.className = 'shown';
	} else {
		b.className = 'hidden';
		c.className = 'hidden';
	}
}

function toggleElement(chkbox, targetId) {
	var chk = document.getElementById(chkbox);
	var tgt = document.getElementsByClassName(targetId);
	for ( var i = 0; i < tgt.length; i++) {
		if (chk.checked) {
			Core.removeClass(tgt[i], 'hidden');
			Core.addClass(tgt[i], 'shown');
		} else {
			Core.removeClass(tgt[i], 'shown');
			Core.addClass(tgt[i], 'hidden');
		}
	}
}

function toggleTree(chkbox, targetId) {
	var chk = document.getElementById(chkbox);
	var tgt = document.getElementById(targetId);
	var children = tgt.childNodes;
	alert(children);
	for ( var i = 0; i < children.length; i++) {
		toggleTree(chkbox, children[i].id);
	}
	togggleElement(checkbox, tgt.id);
}

function toggle(chkbox, targetId) {
	var chk = document.getElementById(chkbox);
	var tgt = document.getElementById(targetId);
	if (chk.checked) {
		tgt.className = 'shown';
	} else {
		tgt.className = 'hidden';
	}
}

function checkFieldType(fieldId) {
	var fld = document.getElementById(fieldId);
	var flen = document.getElementById('fieldLength');
	var flist = document.getElementById('fieldList');
	var val = fld.options[fld.selectedIndex].value;
	var a = val.split('/');
	var fieldLength = a[1];
	var fieldList = a[2];
	// alert(fieldLength + ' ' + fieldList);
	flen.className = fieldLength;
	flist.className = fieldList;
}

function initFields(fieldLength, fieldList) {
	var flen = document.getElementById('fieldLength');
	var flist = document.getElementById('fieldList');
	flen.className = fieldLength;
	flist.className = fieldList;
}

function hide(targetId) {
	var t = document.getElementById(targetId);
	t.className = 'hidden';
}

function show(targetId) {
	var t = document.getElementById(targetId);
	t.className = 'shown';
}

function uncheck(targetId) {
	var b = document.getElementById(targetId);
	if (b.checked) {
		b.checked = false;
	}
}

function checkFreq(event) {
	var a = document.getElementById('daily');
	if (a.checked) {
		checkHidden('daily', 'dailyStuff', 'recStuff');
	}
	a = document.getElementById('weekly');
	if (a.checked) {
		checkHidden('weekly', 'weeklyStuff', 'recStuff');
	}
	a = document.getElementById('monthly');
	if (a.checked) {
		checkHidden('monthly', 'monthlyStuff', 'recStuff');
	}
	a = document.getElementById('yearly');
	if (a.checked) {
		checkHidden('yearly', 'yearlyStuff', 'recStuff');
	}
}

function check(targetId) {
	var b = document.getElementById(targetId);
	b.checked = true;
}

function blankout(targetId) {
	var b = document.getElementById(targetId);
	b.value = '';
}

function fillText(targetId, val) {
	var b = document.getElementById(targetId);
	b.value = val;
}

function isLeapYear(y) {
	return ((y % 4 == 0) && ((y % 100 != 0) || (y % 400 == 0)));
}

function updateDay(mm, dd, yy) {
	var oldDays = document.getElementById(mm).options.length;
	var month = parseInt(document.getElementById(mm).value);
	var year = parseInt(document.getElementById(yy).value);

	var maxDays = 30;

	switch (month) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 9:
	case 11:
		maxDays = 31;
		break;
	case 2:
		maxDays = (isLeapYear(year) ? 29 : 28);
		break;
	}

	document.getElementById(dd).options.length = maxDays;
	if (maxDays > oldDays) {
		for ( var i = oldDays; i < maxDays; i++) {
			document.getElementById(dd).options[i] = new Option(i + 1, i + 1);
		}
	}
}

