function initSurveys() {
	if(document.getElementById('form')) {
		var controls = document.createElement('p');
		controls.className = 'controls';
		var button = document.createElement('input');
		button.type = 'image';
		button.value = button.Alt = button.title = 'Section';
		button.src = 'images/surveys/add_section.png';
		button.onclick = surveyItemAdd;
		controls.appendChild(button);
		button = button.cloneNode(false);
		button.value = button.Alt = button.title = 'Question';
		button.src = 'images/surveys/add_question.png';
		button.onclick = surveyItemAdd;
		controls.appendChild(button);
		var controls2 = controls.cloneNode(true);
		controls2.childNodes[0].onclick = controls2.childNodes[1].onclick = surveyItemAdd;

		var title = document.createElement('fieldset');
		title.className = 'title';
		title.innerHTML = '<strong>Title</strong>';
		var span = document.createElement('span');
		span.className = 'field';
		var field = document.createElement('input');
		field.type = field.className = 'text';
		field.name = 'title';
		field.size = 40;
		field.maxlength = 40;
		span.appendChild(field);
		title.appendChild(span);

		var submit = document.createElement('fieldset');
		submit.className = 'submit';
		var button = document.createElement('input');
		button.type = 'submit';
		button.value = 'Create';
		button.onclick = surveyCheck;
		submit.appendChild(button);

		var items = document.createElement('div');
		items.id = 'items';
		items.created = 0;

		document.getElementById('form').appendChild(controls);
		document.getElementById('form').appendChild(title);
		document.getElementById('form').appendChild(items);
		document.getElementById('form').appendChild(controls2);
		document.getElementById('form').appendChild(submit);
	}
}
function surveyItemAdd() {
	if(document.getElementById('items')) {
		var type = this.value;
		var items = document.getElementById('items').created++;

		var fieldset = document.createElement('fieldset');
		fieldset.className = fieldset.item = type.toLowerCase();
		fieldset.number = items;
		fieldset.id = 'i'+items;

		var label = document.createElement('strong');
		label.innerHTML = type;
		fieldset.appendChild(label);

		var field = document.createElement('input');
		field.size = 40;
		field.maxlength = 250;
		field.type = field.className = 'text';
		field.name = type.toLowerCase()+items;
		var span = document.createElement('span');
		span.className = 'field';
		span.appendChild(field);
		fieldset.appendChild(span);

		fieldset.appendChild(surveyItemControl());

		document.getElementById('items').appendChild(fieldset);
		surveyControlsHide(fieldset);
		field.focus();
	}
	return false;
}
function surveyItemControl() {
	if(!this.value) {
		var span = document.createElement('span');
		span.className = 'controls';

		var u = document.createElement('img');
		u.style.visibility = 'visible';
		var d = u.cloneNode(true);
		var x = u.cloneNode(true);

		u.type = d.type = x.type = 'image';
		u.onclick = d.onclick = x.onclick = surveyItemControl;

		u.value = u.alt = u.title = 'Up';
		u.src = 'images/surveys/arrow_up.png';
		span.appendChild(u);

		d.value = d.alt = d.title = 'Down';
		d.src = 'images/surveys/arrow_down.png';
		span.appendChild(d);

		x.value = x.alt = x.title = 'X';
		x.src = 'images/surveys/delete_field.png';
		span.appendChild(x);

		return span;
	}
	else {
		var fieldset = this.parentNode.parentNode;
		var items = document.getElementById('items');
		switch(this.value) {
			case 'Up':
			case 'Down':
				surveyItemSwap(fieldset, this.value.toLowerCase());
				break;
			case 'X':
				var affected = [fieldset.previousSibling, fieldset.nextSibling];
				document.getElementById('items').removeChild(fieldset);
				surveyControlsHide(affected[0]);
				surveyControlsHide(affected[1]);
		}
		return false;
	}
}
function surveyControlsHide(item) {
	if(!item) return false;
	var items = [item.previousSibling ? item.previousSibling : false, item, item.nextSibling ? item.nextSibling : false];
	for(i in items) {
		if(items[i]) {
			var controls = items[i].getElementsByTagName('img');
			controls[0].style.visibility = items[i].previousSibling ? 'visible' : 'hidden';
			controls[1].style.visibility = items[i].nextSibling ? 'visible' : 'hidden';
		}
	}
}
function surveyItemSwap(item, dir) {
	var items = document.getElementById('items');
	if(dir == 'up') {
		if(item.previousSibling)
			items.insertBefore(item, item.previousSibling);
	}
	else {
		if(item.nextSibling && item.nextSibling.nextSibling)
			items.insertBefore(item, item.nextSibling.nextSibling);
		else if(item.nextSibling)
			items.appendChild(item);
	}
	surveyControlsHide(item);
}
function surveyItemValidate() {
	if(this.value.length >= 3)
		this.parentNode.parentNode.className = this.parentNode.parentNode.classNameO;
}
function surveyCheck() {
	var fieldsets = document.getElementById('form').getElementsByTagName('fieldset');
	var count = 0;
	var questions = 0;
	var sections = 0;
	var lastType = 0;
	var sectionFailure = false;
	for(var f = 0; f < fieldsets.length - 1; f++) {
		var input = fieldsets[f].childNodes[1].childNodes[0];
		input.onblur = surveyItemValidate;
		if(input.type == 'text') {
			if(input.value.length < 3) {
				if(!fieldsets[f].classNameO)
					fieldsets[f].classNameO = fieldsets[f].className;
				fieldsets[f].className += ' error';
				count++;
			}
			else if(fieldsets[f].classNameO)
				fieldsets[f].className = fieldsets[f].classNameO;
			if(fieldsets[f].item == 'question') {
				questions++;
				lastType = 'q';
			}
			else if(fieldsets[f].item == 'section') {
				sections++;
				if(lastType == 's') {
					sectionFailure = true;
					if(!fieldsets[f-1].classNameO)
						fieldsets[f-1].classNameO = fieldsets[f-1].className;
					fieldsets[f-1].className += ' error';
				}
				lastType = 's';
			}
		}
	}
	if(questions < sections || lastType == 's' || sectionFailure) {
		if(lastType == 's') {
			var f = fieldsets[fieldsets.length-2];
			if(!f.classNameO)
				f.classNameO = f.className;
			f.className += ' error';
		}
		alert('There must be a question in each section of the survey.');
		return false;
	}
	if(count > 0) {
		alert('The form is incomplete.  Please correct highlighted fields.');
		return false;
	}
	if(questions < 5) {
		alert('There must be at least 5 questions in the survey.');
		return false;
	}
}

onloadAdd(initSurveys);
