function init() {
	var cr = document.getElementById('create');
	var ed = document.getElementById('edit');
	var lg = document.getElementById('logo');
	countchars();
	if(lg) {
		lg.style.cursor = 'pointer';
		lg.onclick = function() {
			location.href='/';
		}
	}
	if(cr && ed) {
		cr.onmouseover = function() {
			document.getElementById('create').className = 'fs active';
			document.getElementById('edit').className = 'fs';
		}
		ed.onmouseover = function() {
			document.getElementById('edit').className = 'fs active';
			document.getElementById('create').className = 'fs';
		}
	}
	if(document.forms.length > 0) {
		for(var i=0; i < document.forms.length; i++) {
			if(window.addEventListener) {
				document.forms[i].addEventListener('submit', validate, false);
			} else if(window.attachEvent) {
				document.forms[i].attachEvent('onsubmit', validate);
			}
		}
	}
}

function countchars() {
	var lab = document.getElementsByTagName('label');
	for(var i=0; i < lab.length; i++) {
		var te = lab[i].getElementsByTagName('textarea');
		var sp = lab[i].getElementsByTagName('span');
		if(te.length > 0 && te[0].className == 'countchars') {
			var le = 200 - te[0].value.length;
			for(var j = 0; j < sp.length; j++) {
				if(sp[j].className == 'countchars_left') {
					sp[j].innerHTML = le;
				}
			}
		}
	}


	setTimeout(countchars, 500);
}

function validate(e) {
	var check = document.getElementById('edit');
	var t = false;
	var errors = false;
	if(e.target) {
		t = e.target;
	} else if(window.event.srcElement) {
		var t = window.event.srcElement;
		window.event.cancelBubble;
	} else {
		return false;
	}
	e.cancelBubble = true;
	if(check && check.className == 'fs active') {
		t.submit();
		return true;
	}
	var err_els = t.getElementsByTagName('*');
	for(var i=0; i < err_els.length; i++) {
		if(err_els[i].className == 'error') {
			err_els[i].parentNode.removeChild(err_els[i]);
		}
	}
	for(var i=0; i < t.elements.length; i++) {
		var cur = t.elements[i];
		if(cur.className && cur.className.indexOf('required') != -1) {
			var val = cur.value;
			var nam = cur.name;
			var validateon = cur.className.split('required')[1].split(' ');
			for(var j=0; j < validateon.length; j++) {
				var v = validateon[j];
				switch(v) {
					default: 
					break;
					case 'string':
						if(val == '') {
							if(errors == false) {
								errors = {};
							}
							errors[nam] = 'You must enter a value.';
						}
					break;
					case 'date':
						if(!/^\d?\d\/\d?\d\/\d\d\d\d/.test(val)) {
							if(errors == false) {
								errors = {};
							}
							errors[nam] = 'You must enter a date as MM/DD/YYYY.';
						}
					break;
					case 'time':
						if(!/^\d?\d\:\d\d\ [aApP][mM]/.test(val)) {
							if(errors == false) {
								errors = {};
							}
							errors[nam] = 'You must enter a time as HH:MM AM/PM.';
						}
					break;
					case 'zip':
						if(!/^\d\d\d\d\d/.test(val)) {
							if(errors == false) {
								errors = {};
							}
							errors[nam] = 'The zip must be a 5 digit number.';
						}
					break;
					case 'state':
						if(!/^[a-zA-Z][a-zA-Z]/.test(val)) {
							if(errors == false) {
								errors = {};
							}
							errors[nam] = 'The state must be a two letter abbreviation.';
						}
					break;
				}
			}
		}
	}
	if(errors != false) {
		for(var x in errors) {
			var s = document.createElement('span');
			s.className = 'error';
			s.innerHTML = 'Error &rarr; ';
			s.title = errors[x];
			t.elements[x].title = errors[x];
			t.elements[x].parentNode.insertBefore(s, t.elements[x].parentNode.firstChild);
		}
		if(e.preventDefault) {
			e.preventDefault();
		} else {
			window.event.returnValue = false;
		}
	} else {
		t.submit();
	}
}

if(window.addEventListener) {
	window.addEventListener('load', init, false);
} else if(window.attachEvent) {
	window.attachEvent('onload', init);
}
