var W3CDOM = (document.getElementsByTagName && document.createElement);

if (typeof(js_form_validation_field_required) == 'undefined') {
	var js_form_validation_field_required = 'This field is required';
}

if (typeof(js_form_validation_valid_email) == 'undefined') {
	var js_form_validation_valid_email = 'Enter a valid e-mail address';
}

function validate(theForm)	{
	validForm = true;
	firstError = null;
	errorstring = '';

	var x = theForm.elements;

	for (var i=0;i<x.length;i++) {

		if (!x[i].value && x[i].className.indexOf('required') > -1) {
			writeError(x[i],js_form_validation_field_required,theForm);
		}

		else if (x[i].className.indexOf('required') > -1 && x[i].getAttribute('disabled')=="disabled") {
			writeError(x[i],js_form_validation_field_required,theForm);
		}

		else if (x[i].className.indexOf('email') > -1 && x[i].className.indexOf('required') > -1 && x[i].value.indexOf('@') < 1) {
			writeError(x[i],js_form_validation_valid_email,theForm);
		}

	}

	if (!W3CDOM)
		alert(errorstring);
	if (firstError)
		firstError.focus();
	if (!validForm)
		return false;
}

function validate_category() {
	var videos = $$('ul.categories');
	var hasCategory = false;

	for(var i=0; i<videos.length; i++) {
		var items = videos[i].getElementsByTagName("input");

		var checked = 0;
		for(var j=0; j<items.length; j++) {
			if(items[j].checked)
				checked++;
		}

		if(checked < 1) {
			hasCategory = false;
			break;
		}
		else {
			hasCategory = true;
		}
	}

	if(hasCategory)
		return true;
	else
		return false;
}

function validate_add_video(theForm) {
	var checkCategory = validate_category();

	if(checkCategory) {
		validForm = true;
		firstError = null;
		errorstring = '';

		var x = theForm.elements;

		for (var i=0;i<x.length;i++) {

			if (!x[i].value && x[i].className.indexOf('required') > -1) {
				writeError(x[i],js_form_validation_field_required,theForm);
			}

			else if (x[i].className.indexOf('required') > -1 && x[i].getAttribute('disabled')=="disabled") {
				writeError(x[i],js_form_validation_field_required,theForm);
			}

			else if (x[i].className.indexOf('email') > -1 && x[i].className.indexOf('required') > -1 && x[i].value.indexOf('@') < 1) {
				writeError(x[i],js_form_validation_valid_email,theForm);
			}

		}

		if (!W3CDOM)
			alert(errorstring);
		if (firstError)
			firstError.focus();
		if (!validForm)
			return false;

	}
	else {
		alert("Please choose at least one category for each of your videos.");
		return false;
	}

}

function writeError(obj,message,theForm) {
	validForm = false;
	if (obj.hasError) return;

	if (W3CDOM) {
		var width = theForm.offsetWidth;
       	obj.className += ' formError';
		obj.onchange = removeError;
		var sp = document.createElement('span');

		if (width < 500) {
			sp.className = 'errorBlock';
		}

        else {
			sp.className = 'error';
		}

		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}

	else {
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}

	if (!firstError)
		firstError = obj;
}

function removeError() {
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}
