// JavaScript Document

	var alertIntro;
	var alertExtro;

	function checkForm(oForm,alertType) {
		
		var alertMessage = "";
		
		var badinputClassName = "badinput";
		var crLabelAdd = "_label";	// Addition to id of radiobuttons label e.g.: payment_label
		
		var oLabels = document.getElementsByTagName("label");
	  	var label, j = 0;
		
		var oInputs = document.getElementsByTagName("input");
		var input, x = 0;
		
		var oSelects = document.getElementsByTagName("select");
		var selecto, y = 0;

		var oTextareas = document.getElementsByTagName("textarea");
		var textarea, z = 0;

		// remove 'badinput' class from all labels
		while (label = oLabels[j++]){
			var labelClassName = label.className;
			var labelClassNameNew = labelClassName.replace(badinputClassName, "");
			label.className = labelClassNameNew;
		}		

		// remove 'badinputs' class from all inputs
		while (input = oInputs[x++]){
			var inputClassName = input.className;
			var inputClassNameNew = inputClassName.replace(badinputClassName, "");
			input.className = inputClassNameNew;
		}		

		// remove 'badinputs' class from all selects
		while (selecto = oSelects[y++]){
			var selectoClassName = selecto.className;
			var selectoClassNameNew = selectoClassName.replace(badinputClassName, "");
			selecto.className = selectoClassNameNew;
		}		

		// remove 'badinputs' class from all textareas
		while (textarea = oTextareas[z++]){
			var textareaClassName = textarea.className;
			var textareaClassNameNew = textareaClassName.replace(badinputClassName, "");
			textarea.className = textareaClassNameNew;
		}		
		

		for(i in checkFields) {
			
			if (checkFields[i]===undefined) continue;
			
			var element =  document.getElementById(i);
			if(!element) element = document.getElementsByName(i).item(0);
			if(!element) continue; 
			
			var badinput = false;
			
			// selectbox
			if (element.selectedIndex!==undefined) {
				badinput = element.options[element.selectedIndex].value === 0;
			}
			
			// radio button
			else if(element.type == "radio") {

				var checked = false;
				var elementname = document.getElementsByName(i);
		
				// reset radiobutton label class
				if(document.getElementById(element.name + crLabelAdd)) {
						var radioClassName = document.getElementById(element.name + crLabelAdd).className;
						var radioClassNameNew = radioClassName.replace(badinputClassName, "");
						document.getElementById(element.name + crLabelAdd).className = radioClassNameNew;
				}

				for (i=0;i < elementname.length; i++) {
					if(elementname[i].checked) {
						checked = true;
					}
				}
	
				if(!checked) {
					badinput = true;
				}
			}
			
			// checkbox
			else if(element.type == 'checkbox' && !element.checked) {
				badinput = true;
			}
	
			// text field
			else if(element.value == '') {
				badinput = true;
			}
			
			
			// when badinput write message and change class of label/input elements
			if(badinput) {

				var labelText = "";
				var elementMsgText = "";
				var labelName = "";

				if(element.type == 'radio') {
					elementMsgText = checkFields[element.name];
					labelName = element.name;
					
					// change radiobutton  label class
					if(document.getElementById(element.name + crLabelAdd)) {
						document.getElementById(element.name + crLabelAdd).className += " " + badinputClassName;
					}
					
				} else {
					elementMsgText = checkFields[element.id];
					labelName = element.id
				}

				// input
				if(element.type != 'radio' && element.type != 'checkbox' && element.className.indexOf(badinputClassName) == -1) {
					element.className += " " + badinputClassName;
					if(!focusElement) { 
						element.focus();
						var focusElement = true;
					}
				}

				// label
				j = 0;
				while (label = oLabels[j++]) {
					if(element.type == 'radio' && label.htmlFor.indexOf(labelName) != -1) {
						label.htmlFor == labelName;
						if(label.className.indexOf(badinputClassName) == -1) label.className += " " + badinputClassName;
					}
					if(label.htmlFor == labelName) {
						if(label.className.indexOf(badinputClassName) == -1) label.className += " " + badinputClassName;
						labelText = label.innerHTML;
					}
				}
				
				// message
				alertMessage += "- ";
				if(elementMsgText != "") { alertMessage += elementMsgText; } 		
				else if(labelText != "") { 
					var less = labelText.indexOf('<');
					var greater = labelText.indexOf('>');
					if(less < greater && less != -1) { 
						labelText = labelText.substr(greater+1); 
						if(labelText.indexOf(' ') == 0) labelText = labelText.substr(1);
					} 
					else if (less != -1) { labelText = labelText.substring(0,less-1) 
					}
					alertMessage += labelText.replace(':',''); 
				}
				else { 
					labelName = labelName.substring(0,1).toUpperCase() + labelName.substr(1);
					alertMessage += labelName; 
				}
				alertMessage += "\n";

			}
			
		}
						
		if(alertMessage != "") {
			
			switch(alertType) {
				case '0':
					// show no message
					break;
				case '1':
					// show missing fields
					if(!alertIntro) { alertIntro = "You have forgotten to enter the following information:"; }
					if(!alertExtro)	{ alertExtro = "Enter the required information."; }
					alert(alertIntro + '          \n\n' + alertMessage + '        \n' + alertExtro);
					break;
				default:
					// show general message
					if(!alertGeneral) alertGeneral = "You have forgotten to enter some information\n\nEnter the required information.";
					alert(alertGeneral);
					break;
			}
			return false;
        }

		if (document.getElementById('checked')) {
			document.getElementById('checked').value = '1';	
		}

		return true;
		
	}