/*
 *
 * Status:	IN PROGRESS
 *
 * Author:	Matt Adair
 *
 */
function validate(eve) {
	var validate_result = true;
	var alert_string = 'The following errors occurred:\n\n';
	var alert_image = document.createElement('img');
	alert_image.setAttribute('src', '/images/pi_diagonal/01/16/50.png');
	var tar = null;
	if (eve.type == 'submit') {
		tar = eve.target;
	} else if (eve.type == 'click') {
		var submitButton = eve.srcElement;
		var parentForm = submitButton.parentNode;
		while (parentForm && parentForm.tagName != 'FORM') {
			parentForm = parentForm.parentNode;
		}
		if (parentForm) {
			tar = parentForm;
		} else {
			alert('Parent form not found.');
		}
	}

	for(i = 0; i < tar.elements.length; i++) {
		tar.elements[i].setAttribute('style', '');
      	if (tar.elements[i].getAttribute('validate')) {
			var element_result = true;

			var display_name = ucwords(new String(tar.elements[i].getAttribute('myName') ? tar.elements[i].getAttribute('myName'):tar.elements[i].getAttribute('name')).replace(/_/,' ','g'));


			if (tar.elements[i].getAttribute('validate').match('required') && (tar.elements[i].tagName.toUpperCase()=='SELECT') && (tar.elements[i].selectedIndex == '0' )) {
                alert_string = alert_string + display_name + ' is required.\n';
                validate_result = false;
                element_result = false;
            }


			if (tar.elements[i].getAttribute('validate').match('required') && tar.elements[i].value == '') {
				alert_string = alert_string + display_name + ' is required.\n';
				validate_result = false;
				element_result = false;
			}

			if (tar.elements[i].getAttribute('validate').match('min_length') && (tar.elements[i].value.length>0) && (tar.elements[i].value.length<tar.elements[i].getAttribute('min_length'))) {
				alert_string = alert_string + display_name + ' must be atleast '+tar.elements[i].getAttribute('min_length')+' char long.\n';
				validate_result = false;
				element_result = false;
			}

			if (tar.elements[i].getAttribute('validate').match('numeric') && isNaN(tar.elements[i].value)) {
				alert_string = alert_string + display_name + ' must be numeric.\n';
				validate_result = false;
				element_result = false;
			}

			if (!element_result) {
				tar.elements[i].setAttribute('style',
				'background:url(/images/pi_diagonal/01/16/50.png);background-repeat:no-repeat;background-position:right;background-color:#FFCCCC;');
			}
	  	}
	}

	if (!validate_result) {
		alert(alert_string);
		if (eve.preventDefault) eve.preventDefault();
		if (eve.stopPropagation) eve.stopPropagation();
		eve.cancelBubble=true;
	} else if ((frm=findForm(tar)) && (frm.getAttribute('method').toLowerCase()=='post')) {
		submitForm(eve);
	}
}

function checkDate(tar) {
	var startDate = new Date();
	var endDate = new Date();

	startDate.setFullYear(tar.Start_Year.value,tar.Start_Month.value-1,tar.Start_Day.value);
	if (tar.Start_Hour && tar.Start_Minute) {
		startDate.setHours(tar.Start_Hour.value,tar.Start_Minute.value);
	}

	endDate.setFullYear(tar.End_Year.value,tar.End_Month.value-1,tar.End_Day.value);
	if (tar.End_Hour && tar.End_Minute.value) {
		endDate.setHours(tar.End_Hour.value,tar.End_Minute.value);
	}

	if ( startDate > endDate ) {
		alert( 'The start date has been set later than the end date.' );
		return false;
	}
	else {
		return true;
	}
}

function ucwords( str ) {
	return (str+'').replace(/^(.)|\s(.)/g, function ( $1 ) { return $1.toUpperCase ( ); } );
}  
