function validate($form, $fields) {	$form = document.forms[$form];	var $errors = [];	var $focus;	for(var $i = 0; $i < $fields.length; $i ++) {		var $field = $fields[$i];		switch($field.type) {			case "checkboxes":			$field.element = $form[$field.field + "[]"];			break;			case "ck":			$field.element = $field.field;			break;			default:			$field.element = $form[$field.field];			break;		}		if($field.element && elementVisible($field)) {			var $valid = true;			switch($field.type) {				case "text":				if($field.required && !validateText($field.element)) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "number":				if(validateText($field.element)) {					if(!validateNumber($field.element)) {						$errors.push($field.title + " must contain only numbers");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "integer":				if(validateText($field.element)) {					if(!validateInteger($field.element)) {						$errors.push($field.title + " must be a whole number");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "float":				if(validateText($field.element)) {					if(!validateFloat($field.element)) {						$errors.push($field.title + " must be a numeric value");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "email":				if(validateText($field.element)) {					if(!validateEmail($field.element)) {						$errors.push($field.title + " is invalid");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "reentry":				if(!validateReentry($field.element, $form[$field.source])) {					$errors.push($field.title + " do not match");					$valid = false;				}				break;				case "checkbox":				if(!validateCheckbox($field.element)) {					$errors.push($field.error);					$valid = false;				}				break;				case "checkboxes":				if(!validateCheckboxes($field.element)) {					$errors.push($field.error);					$valid = false;				}				break;				case "radios":				if($field.required && !validateCheckboxes($field.element)) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "file":				if(validateText($field.element)) {					if(!validateFile($field.element, $field.extensions)) {						$errors.push($field.title + " is an invalid file format");						$valid = false;					}				} else if($field.required && parseInt($field.element.getAttribute("validation_req"))) {					$errors.push($field.title + " is required");					$valid = false;				}				//console.log($valid);				break;				case "ck":				if($field.required && !validateCK(CKEDITOR.instances[$field.element])) {					$errors.push($field.title + " is required");					$valid = false;				}				break;			}			if(!$valid && !$focus) $focus = $field;		}	}	var $error = "";	if($errors.length > 0) {		if($errors.length > 1) {			$error += "Please correct the following errors:\n";		} else {			$error += "Please correct the following error:\n";		}		for(var $i = 0; $i < $errors.length; $i ++) {			$error += "- " + $errors[$i] + "\n";		}		alert($error);		focusTab($focus);		switch($focus.type) {			case "ck":				CKEDITOR.instances[$focus.element].focus();			break;			case "radios":				$focus.element[0].focus();			break;			default:				$focus.element.focus();			break;		}		return false;	} else {		return true;	}}function validateText($field) {	return($field.value != "");}function validateNumber($field) {	return(/^[0-9 ]+$/.test($field.value));}function validateInteger($field) {	return(/^[0-9]+$/.test($field.value));}function validateFloat($field) {	return(/^[0-9]*(\.[0-9]+)?$/.test($field.value));}function validateEmail($field) {	return(/^[\w']+([\.-][\w']+)*@\w+([\.-]\w+)*(\.\w{2,4})$/.test($field.value));}function validateReentry($field, $source) {	return($field.value == $source.value);}function validateCheckbox($field) {	return($field.checked);}function validateCheckboxes($field) {	$valid = false;	if(!$field.length) $field = [$field];	for(var $i = 0; $i < $field.length; $i ++) {		if($field[$i].checked) {			$valid = true;			break;		}	}	return $valid;}function validateFile($field, $valid) {	if(!$valid) $valid = ["gif", "jpg", "png"];	var $extension = $field.value.split(".").pop().toLowerCase();	for(var $i = 0; $i < $valid.length; $i ++) if($extension == $valid[$i]) return true;	return false;}function validateCK($field) {	return $field.getData() != "";}function checkAll($checkbox, $form) {	$form = document.forms[$form];	for(var $i = 0; $i < $form.length; $i ++) {		var $field = $form[$i];		if($field.type == "checkbox") {			$field.checked = $checkbox.checked;		}	}}function elementVisible($field) {	var $element = getElement($field);	console.log($element);	do {		if($element.style.display == "none") return false;		$element = $element.parentNode;	} while($element.tagName.toLowerCase() != "body");	return true;}function focusTab($field) {	var $element = getElement($field);	while($element.tagName.toLowerCase() != "body") {		if($element.className == "TabContent") {			selectTab($element.id.substring(7));			break;		} else {			$element = $element.parentNode;		}	}}function getElement($field) {	switch($field.type) {		case "checkboxes":		var $element = $field.element[0];		break;		case "radios":		if($field.element.length) {			var $element = $field.element[0];		} else {			var $element = $field.element;		}		break;		case "ck":		var $element = document.getElementById("cke_" + $field.element);		break;		default:		var $element = $field.element;		break;	}	return $element;}/*function validate($fields) {	var $errors = [];	var $focus;	for(var $i = 0; $i < $fields.length; $i ++) {		var $field = $fields[$i];		switch($field.type) {			case "checkboxes":			$field.element = document.form[$field.field + "[]"];			break;			case "ck":			$field.element = $field.field;			break;			default:			$field.element = document.form[$field.field];			break;		}		if($field.element && elementVisible($field)) {			var $valid = true;			switch($field.type) {				case "text":				if($field.required && !validateText($field.element)) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "number":				if(validateText($field.element)) {					if(!validateNumber($field.element)) {						$errors.push($field.title + " must contain only numbers");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "integer":				if(validateText($field.element)) {					if(!validateInteger($field.element)) {						$errors.push($field.title + " must be a whole number");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "float":				if(validateText($field.element)) {					if(!validateFloat($field.element)) {						$errors.push($field.title + " must be a numeric value");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "email":				if(validateText($field.element)) {					if(!validateEmail($field.element)) {						$errors.push($field.title + " is invalid");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "reenter":				if(!validateReentry($field.element, $field.source)) {					$errors.push($field.title + " do not match");					$valid = false;				}				break;				case "checkbox":				if(!validateCheckbox($field.element)) {					$errors.push($field.error);					$valid = false;				}				break;				case "checkboxes":				if(!validateRadio($field.element)) {					$errors.push($field.error);					$valid = false;				}				break;				case "radio":				if(!validateRadio($field.element)) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "image":				if(validateText($field.element)) {					if(!validateImage($field.element)) {						$errors.push($field.title + " is an invalid file format");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "audio":				if(validateText($field.element)) {					if(!validateAudio($field.element)) {						$errors.push($field.title + " is an invalid file format");						$valid = false;					}				} else if($field.required) {					$errors.push($field.title + " is required");					$valid = false;				}				break;				case "ck":				if($field.required && !validateCK(CKEDITOR.instances[$field.element])) {					$errors.push($field.title + " is required");					$valid = false;				}				break;			}			if(!$valid && !$focus) $focus = $field;		}	}	var $error = "";	if($errors.length > 0) {		if($errors.length > 1) {			$error += "Please correct the following errors:\n";		} else {			$error += "Please correct the following error:\n";		}		for(var $i = 0; $i < $errors.length; $i ++) {			$error += "- " + $errors[$i] + "\n";		}		alert($error);		focusTab($focus);		switch($focus.type) {			case "text":			$focus.element.focus();			break;			case "number":			$focus.element.focus();			break;			case "integer":			$focus.element.focus();			break;			case "float":			$focus.element.focus();			break;			case "email":			$focus.element.focus();			break;			case "reentry":			$focus.element.focus();			break;			case "image":			$focus.element.focus();			break;			case "ck":			CKEDITOR.instances[$focus.element].focus();			break;		}		return false;	} else {		return true;	}}function validateText($field) {	return($field.value != "");}function validateNumber($field) {	return(/^[0-9 ]+$/.test($field.value));}function validateInteger($field) {	return(/^[1-9]+[0-9]*$/.test($field.value));}function validateFloat($field) {	return(/^[0-9]*(\.[0-9]+)?$/.test($field.value));}function validateEmail($field) {	return(/^[\w']+([\.-][\w']+)*@\w+([\.-]\w+)*(\.\w{2,4})$/.test($field.value));}function validateReentry($field, $source) {	return($field.value == document.form[$source].value);}function validateCheckbox($field) {	return($field.checked);}function validateRadio($field) {	$valid = false;	if(!$field.length) $field = [$field];	for(var $i = 0; $i < $field.length; $i ++) {		if($field[$i].checked) {			$valid = true;			break;		}	}	return $valid;}function validateImage($field) {	var $valid = ["gif", "jpg", "png"];	var $extension = $field.value.split(".").pop().toLowerCase();	for(var $i = 0; $i < $valid.length; $i ++) if($extension == $valid[$i]) return true;	return false;}function validateAudio($field) {	var $valid = ["mp3"];	var $extension = $field.value.split(".").pop().toLowerCase();	for(var $i = 0; $i < $valid.length; $i ++) if($extension == $valid[$i]) return true;	return false;}function validateCK($field) {	return $field.getData() != "";}function checkAll() {	for(var $i = 0; $i < document.form.length; $i ++) {		var $field = document.form[$i];		if($field.type == "checkbox") {			$field.checked = document.form.all.checked;		}	}}function elementVisible($field) {	var $element = getElement($field);	do {		if($element.style.display == "none") return false;		$element = $element.parentNode;	} while($element.tagName.toLowerCase() != "body");	return true;}function focusTab($field) {	var $element = getElement($field);	while($element.tagName.toLowerCase() != "body") {		if($element.className == "TabContent") {			selectTab($element.id.substring(7));			break;		} else {			$element = $element.parentNode;		}	}}function getElement($field) {	switch($field.type) {		case "checkboxes":		var $element = $field.element[0];		break;		case "radio":		if($field.element.length) {			var $element = $field.element[0];		} else {			var $element = $field.element;		}		break;		case "ck":		var $element = document.getElementById("cke_" + $field.element);		break;		default:		var $element = $field.element;		break;	}	return $element;}*/
