$(document).ready(function(){
	var formName = $('form').attr('id');
	
	if(formName == 'guest') {
		//GUEST FORM: Hide Optional Select Lists
		$('p#children, p#divers, p#equipment').css('display','none');
		
		//GUEST FORM: If a parent select item is VALID, reveal associated lists
		$('select').change(function() { showOptional($(this).attr('id')) });
	}

	if(formName == 'flight') {
		//GUEST FORM: Hide Optional Select labels and lists by hiding their parent <p> tag
		$('p#departure, p#return').css('display','none');
		
		//GUEST FORM: If a parent select item is VALID, reveal associated lists
		$('select').change(function() { showOptional($(this).attr('id')) });
	}

	//Add 'Optional' to all Optional inputs
	$('input.optional, textarea.optional').val('Optional');
	$('input.optional, select.optional, textarea.optional').css('color','#999999');

	//ON BLUR: Validate First and Last Name Fields
	$('input.required,input.valid').blur(function() { valInputRequired($(this).attr('id')); });
	//ON BLUR: Validate a required text area
	$('textarea.required').blur(function() { valInputRequired($(this).attr('id')); });
	//ON BLUR: Compare value of two email address fields - both fields must contain the same address
	$('input#email1,input#email2').blur(function() { valCompareEmail(); });
	//ON CHANGE: Validate Single Select Lists													  
	$('select.single').change(function() { valSelectSingle($(this).attr('id')); });
	//Validate Select Arrays													  
	$('select.array').change(function() { valSelectArray($(this).attr('id')); });
	//ON FOCUS: Clear Optional Inputs
	$('input.optional,textarea.optional').focus(function() { clearOptional($(this).attr('id')); });
	//ON BLUR: Validate Optional Inputs
	$('input.optional,textarea.optional').blur(function() { valOptional($(this).attr('id')); });

	$('input#next,input#submit').click(function() {
		
		var alertMessage = '';
		
		switch(formName) {
			case 'guest':
				var result = checkGuestForm();
				var btnNam = '"Next >"';
				break;
			  
			case 'flight':
				var result = checkFlightForm();
				
				if(result) {
					if(!valDepartReturn('depDate', 'retDate')) {
						
						alertMessage += 'You MUST select:\n\n';
						alertMessage += 'A date for your Departure Flight...\n';
						alertMessage += 'and / or ...\n';
						alertMessage += 'A date for your Return Flight.';
						
						result = false;
					}
				}
				
				var btnNam = '"Submit"';
				break;
			  
			case 'accommodation':
				var result = checkAccommodationForm();
				var btnNam = '"Submit"';
				break;
				
			case 'guestbook':
				var result = checkGuestbookForm();
				var btnNam = '"Submit"';
				break;
				
			case 'contact':
				var result = checkContactForm();
				var btnNam = '"Submit"';
				break;
		}

		if(result) { 
			form.submit();
		} else { 
			if(alertMessage == '') {
				alertMessage += 'One or more form fields have not been completed,\n';
				alertMessage += 'or have not been completed correctly.\n\n';
				alertMessage += 'Field errors are shown in red.\n\n';
				alertMessage += 'Please include/correct the information required\n';
				alertMessage += 'and press the ' + btnNam + ' button again.';
			}
			
			alert(alertMessage);
			
			return false;
		}

//		TESTING
//		if(result) { alert('Form Good') } else { alert('Form Bad') }
//		return false;
	});
});

function checkGuestForm()
{
	var first   = valInputRequired('first');
	var last    = valInputRequired('last');
	var email1  = valInputRequired('email1');
	var email2  = valInputRequired('email2');
	var comEml  = valCompareEmail();
	var country = valSelectSingle('country');
	var adults  = valSelectSingle('adults');
	var diving  = valSelectSingle('diving');
  
	return (first && last && email1 && email2 && comEml && country && adults && diving) ? true : false;
}

function checkFlightForm()
{
	var first   = valInputRequired('first');
	var last    = valInputRequired('last');
	var email1  = valInputRequired('email1');
	var payment = valSelectSingle('payment');
	var depDate = valSelectArray('depdate');
	var depTime = ($('p#departure').is(':visible')) ? valSelectSingle('deptime') : true;
	var retDate = valSelectArray('retdate');
	var retTime = ($('p#return').is(':visible')) ? valSelectSingle('rettime') : true;
	
	var adult = true;
	var child = true;
	var birth = true;

	// Verify that all Adult Name fields have been completed
	for(i=0; i < 10; i++) {
		var curCla = $('input#adult' + i).attr('class');
		
		if(curCla == 'required' && !valInputRequired('adult' + i)) { adult = false; }
	}

	// Verify that Children's fields are visible
	if($('input#child0').attr('class') == 'required') {
		// Verify that all Children's Name fields have been completed
		for(i=0; i < 10; i++) {
			var curCla = $('input#child' + i).attr('class');
			
			if(curCla == 'required' && !valInputRequired('child' + i)) { child = false; }
		}
	
		// Verify that all Children's Birthday fields have been completed
		for(x=2; x < 12; x++)
		{
			var curCla = $('select#mon_' + x).attr('class').split(' ');
		
			if(curCla[1] == 'required' && !valSelectArray('mon_' + x)) { birth = false; }
		}
	}
	
	if(first && last && email1 && payment && depDate && depTime && retDate && retTime && adult && child && birth) {
	  return true;
	} else { 
	  return false 
	}
}

function checkAccommodationForm()
{
	var first     = valInputRequired('first');
	var last      = valInputRequired('last');
	var email1    = valInputRequired('email1');
	var adult     = valSelectSingle('adult');
	var child     = valSelectSingle('child');
	var payment   = valSelectSingle('payment');
	var datein    = valSelectArray('datein');
	var dateout   = valSelectArray('dateout');
	var stars     = valSelectSingle('stars');
	var twin      = valSelectSingle('twin');
	var double    = valSelectSingle('double');
	var smoking   = valSelectSingle('smoking');
	var breakfast = valSelectSingle('breakfast');
  
	return (first && last && email1 && adult && child && payment && datein && dateout && 
	        stars && twin && double && smoking && breakfast) ? true : false;
}

function checkGuestbookForm()
{
	var full     = valInputRequired('full_name');
	var country  = valSelectSingle('country');
	var stars    = valSelectSingle('star_rating');
	var comment  = valInputRequired('textcomment');
  
	return (full && country && stars && comment) ? true : false;
}

function checkContactForm()
{
	var subject = valInputRequired('subject');
	var full  	= valInputRequired('full_name');
	var email   = valInputRequired('email1');
	var message = valInputRequired('textcomment');
  
	return (subject && full && email && message) ? true : false;
}

function valDepartReturn(sel1, sel2) 
{
	var selId = new Array();
	selId[0]  = 'mon';
	selId[1]  = 'day';
	selId[2]  = 'yer';

	// Following is only for form submission triggers
	if(sel1 == 'depDate') sel1 = 'mon_0';
	if(sel2 == 'retDate') sel2 = 'mon_1';
	
	var invalid_dep = new Array();
	invalid_dep[0]  = true;
	invalid_dep[1]  = true;
	invalid_dep[2]  = true;

	// Split the id of the element into it's two parts: ie: eleId[0] = 'mon'; eleId[1] = 0
	var eleId = sel1.split('_');
	
	// CHECK DEPARTURE DATE FIELDS
	for(i=0; i < selId.length; i++) {
		
		var curId = selId[i] + '_' + eleId[1];
		var value = $('select#' + curId).val();
		
		if(value == 'Mnth:' || value == 'Day:' || value == 'Year:') {
			invalid_dep[i] = false;				
		}
	}
	
	var invalid_ret = new Array();
	invalid_ret[0]  = true;
	invalid_ret[1]  = true;
	invalid_ret[2]  = true;

	// Split the id of the element into it's two parts: ie: eleId[0] = 'mon'; eleId[1] = 0
	var eleId = sel2.split('_');
	
	// CHECK RETURN DATE FIELDS
	for(i=0; i < selId.length; i++) {
		
		var curId = selId[i] + '_' + eleId[1];
		var value = $('select#' + curId).val();
		
		if(value == 'Mnth:' || value == 'Day:' || value == 'Year:') {
			invalid_ret[i] = false;				
		}
	}

	var depErr = (!invalid_dep[0] && !invalid_dep[0] && !invalid_dep[0]) ? true : false;
	var retErr = (!invalid_ret[0] && !invalid_ret[0] && !invalid_ret[0]) ? true : false;

	return (depErr && retErr) ? false : true;
}

// ON BLUR: Check to make sure that required fields are not empty
// If input IS NOT EMPTY, validate input value
function valInputRequired(id)
{
	var element = getFullElement(id);
	var value   = $(element).val();
	
	if(value == '') {
		setElementColor(id, 'invalid');
		setElementError(id, 'empty');
		return false;
		
	} else {
			
		switch(id) {
			case 'first': case 'last':
				test = valNotEmpty(element);
				break;	
			
			case 'full_name':
				test = valMultiWord(element);
				break;
			
			case 'subject':
				test = valNotEmpty(element);
				break;

			case 'textcomment':
				test = valMultiWord(element);
				break;
	
			case 'email1': case 'email2':
				test = valInputEmail(element);
				break;

			case 'adult0': case 'adult1': case 'adult2': case 'adult3': case 'adult4':
			case 'adult5': case 'adult6': case 'adult7': case 'adult8': case 'adult9':
				test = valMultiWord(element);
				break;
				
			case 'child0': case 'child1': case 'child2': case 'child3': case 'child4':
			case 'child5': case 'child6': case 'child7': case 'child8': case 'child9':
				test = valMultiWord(element);
				break;
		}
		
		if(!test) { // Input Value has Failed
			switch(id) {
				case 'first': case 'last':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  return false;
				  break;

				case 'full_name':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  return false;
				  break;

				case 'subject':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  return false;
				  break;

				case 'textcomment':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  return false;
				  break;

				case 'email1': case 'email2':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  return false;
				  break;
				
				case 'adult0': case 'adult1': case 'adult2': case 'adult3': case 'adult4':
				case 'adult5': case 'adult6': case 'adult7': case 'adult8': case 'adult9':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  break;
				  
				case 'child0': case 'child1': case 'child2': case 'child3': case 'child4':
				case 'child5': case 'child6': case 'child7': case 'child8': case 'child9':
				  setElementColor(id, 'invalid');
				  setElementError(id, 'invalid');
				  break;

				default:
				  setElementColor(id, 'invalid');
				  setElementError(id, 'empty');
				  return false;
				  break;		

			}
		} else {
			setElementColor(id, 'valid');
			setElementError(id, 'valid');
			return true;
		}
	}
}

// VALIDATE A NUMBER - VALUE MUST BE BETWEEN 0 AND 10
function valInputNumber(element)
{
	var value = $.trim($(element).val());
	
	return (value >= 0 && value <= 10) ? true : false;
}

// VALIDATE A SINGLE WORD FIELD
function valSingleWord(element)
{	
	// Get the value of the element and strip leading and trailing space characters
	var value   = $.trim($(element).val());
	
	// Only one word allowed (two-character minimum)
	var pattern = /^\S{2,}$/;
	
	return (value.search(pattern)) ? false : true;
}

//Validate Multiple Word Field - MINIMUM 2 WORDS
function valMultiWord(element)
{	
	// Get the value of the element and strip leading and trailing space characters
	var value   = $.trim($(element).val());

	// Multiple words allowed (two-word minimum)
	var multiWord = /(\b[a-z0-9]+\b.*){2,}/i;
	
	return (value.search(multiWord)) ? false : true;
}

//Validate to ensure SOMETHING is in field
function valNotEmpty(element)
{	
	// Get the value of the element and strip leading and trailing space characters
	var value   = $.trim($(element).val());

	return (value == '') ? false : true;
}

// VALIDATE AN EMAIL ADDRESS //
function valInputEmail(element) {
	
	var value = $(element).val();
	
	var valid =/^([\w]+)(\.[\w]+)*@([\w\-]+)(\.[\w]{2,7})(\.[a-z]{2})?$/
	
	if (value.search(valid)) {
		return false;
	} else {
		return true;
	}
}

// COMPARE TWO EMAIL ADDRESSES //
function valCompareEmail() {
	
	// First check to see if there's an email field to compare against
	// If not, simply return TRUE
	if($('#email2').length == 0) {
		return true;
	}
	
	var email1 = valInputEmail('input#email1');
	var email2 = valInputEmail('input#email2');
	
	if(email1 && email2) {
		var valEmail1 = $('input#email1').val();
		var valEmail2 = $('input#email2').val();
		
		if(valEmail1 == valEmail2) {
			setElementColor('email1', 'valid');
			setElementError('email1', 'valid');

			setElementColor('email2', 'valid');
			setElementError('email2', 'valid');

			return true;
		} else {
		  setElementColor('email1', 'invalid');
		  setElementError('email1', 'compare');

		  setElementColor('email2', 'invalid');
		  setElementError('email2', 'compare');
		  
		  return false;
		}
	}
}

// VALIDATE A SINGLE SELECT LIST //
function valSelectSingle(id) {
	
	// Create a new array to hold element ID names
	// Invalid select list options
	var invalid = new Array();
	invalid[0] = 'Choose One:';
	invalid[1] = 'Optional';
	invalid[2] = '*';

	// Transfer the value of the element id into eleId
	var eleId = id;
	
	// Get and split the css class of the element into it's two parts: ie: eleCl[0] = 'single'; eleCl[1] = 'required'
	var eleCl = $('select#' + id).attr('class').split(' ');
	
	// Get the name of the select element, i.e. 'country'
	var eleNa = $('select#' + id).attr('name');
	
	if(eleCl[1] != 'optional') {
		
		var value = $('select#' + eleId).val();
		
		for(i=0; i < invalid.length; i++) {
			
			if(value == invalid[i]) {
				if(value == '*') $('select#' + eleId).val('Choose One:');
				
				setElementColor(id, 'invalid');
				setElementError(id, 'empty')
				var error = true;
				break;
				
			} else {
				setElementColor(id, 'valid');
				setElementError(id, 'valid')
				var error = false;
			}
		}
	}

	if(eleCl[1] == 'optional') {
		var value = $('select#' + eleId).val();

		for(i=0; i < invalid.length; i++) {
			
			if(value == invalid[i]) {
				if(value == '*') $('select#' + eleId).val('Optional');
				
				setElementColor(id, 'optional');
				break;
				
			} else {
				setElementColor(id, 'valid');
			}
		}
		
		var error = false;
	}
		
	return error ? false : true;
}

// VALIDATE AN ARRAY OF SELECT LISTS //
function valSelectArray(id) {
	
	// Create a new array to hold element ID names
	var selId = new Array();
	selId[0]  = 'mon';
	selId[1]  = 'day';
	selId[2]  = 'yer';

	// Following is only for form submission triggers
	switch(id) {
		case 'depdate': case 'datein': // DEPARTURE DATE
			id = 'mon_0';
			break;
		
		case 'retdate': case 'dateout': // RETURN DATE
			id = 'mon_1';
			break;
	}
	
	// Split the id of the element into it's two parts: ie: eleId[0] = 'mon'; eleId[1] = 0
	var eleId = id.split('_');
	
	// Get and split the css class of the element into it's two parts: ie: eleCl[0] = 'array'; eleCl[1] = 'required'
	var eleCl = $('select#' + id).attr('class').split(' ');
	
	// Get and split the name of the element into it's two parts: ie: eleNa[0] = bday0; eleNa[1] = 'yer]'
	var eleNa = $('select#' + id).attr('name').split('[');
	
	// Initialize the error list array
	var errLs = new Array();
	
	// Initialize the error message
	var error = false;
	
	if(eleCl[1] == 'required') {
		for(i=0; i < selId.length; i++) {
			
			var curId = selId[i] + '_' + eleId[1];
			var value = $('select#' + curId).val();
			
			if(value == 'Mnth:' || value == 'Day:' || value == 'Year:' || value == '*') {
				if(value == '*') $('select#' + curId).val(0);
				
				setElementColor(curId, 'invalid');
				errLs[i] = selId[i];	
				error = true
				
			} else {
				setElementColor(curId, 'valid');
			}
		}
	}

	if(eleCl[1] == 'optional') {

		// TEST: All options INVALID
		var invalid = new Array();
		invalid[0] = false;
		invalid[1] = false;
		invalid[2] = false;
	
		for(i=0; i < selId.length; i++) {
			var curId = selId[i] + '_' + eleId[1];
			var value = $('select#' + curId).val();
		
			if(value == 'Mnth:' || value == 'Day:' || value == 'Year:' || value == '*') {
				if(value == '*') $('select#' + curId).val(0);
				
				setElementColor(curId, 'optional');

				invalid[i] = true;
			}
		}

		if(invalid[0] && invalid[1] && invalid[2]) {
			setElementError(eleNa[0], 'valid')

			return true;
		}
		
		var curId = eleId[0] + '_' + eleId[1];
		var value = $('select#' + curId).val();
		
		// ERROR VALUE: if the CHOSEN value is '*', reset THIS select to it's proper invalid option
		if(value == '*') {
			$('select#' + curId).val(0);
			
			setElementColor(curId, 'optional');
			
		// VALID VALUE: if the CHOSEN value is VALID, set this option to green
		} else {
			setElementColor(curId, 'valid');
							
			// For loop - check other elements for invalid.
			// If invalid - turn to red.
			for(i=0; i < selId.length; i++) {
				var curId = selId[i] + '_' + eleId[1];
				var value = $('select#' + curId).val();
				
				if(value == 'Mnth:' || value == 'Day:' || value == 'Year:') {
					
					setElementColor(curId, 'invalid');	
					errLs[i] = selId[i];
					error = true;
				}
			}		
		}
	}
	
	if(error) {
		setElementError(eleNa[0], 'invalid', errLs);
		return false;
	} else {
		setElementError(eleNa[0], 'valid', false);
		return true;
	}
}

// ON FOCUS: REMOVE "OPTIONAL" STRING FROM OPTIONAL FIELDS //
function clearOptional(id) {
	
	var element = getFullElement(id);
	
	var value = $(element).val();

	if (value == 'Optional') {
		$(element).val('');
		$(element).css('color','#000000');
	}
}

// ON BLUR:
// IF OPTIONAL FIELD / TEXTAREA VALUE IS NOT EMPTY, SET BACKGROUND TO GREEN AND TEXT TO BLACK
// IF OPTIONAL FIELD / TEXTAREA VALUE IS EMPTY, SET BACKGROUND TO WHITE AND TEXT TO GRAY 
function valOptional(id) {
	
	var element = getFullElement(id);
	
	var value = $.trim($(element).val());
	
	if (value != '') {
		setElementColor(id, 'valid');
	} else {
		setElementColor(id, 'optional');
	}
}

// Show various optional fields when a parent field has a valid value
function showOptional(id) {

	var element = getFullElement(id);
	
	var value = $(element).val();
	
	switch(id) {
		case 'adults':
			if(value != 'Choose One:' && value != '*') {
				$('p#children').css('display','');
			} else {
				$('p#children').css('display','none');
				setElementColor('childList', 'optional');
			}
			
			break;
		
		case 'diving':
			if(value == 'Yes') {
				$('p#equipment').css('display','');
				$('p#divers').css('display','');
			} else {
				$('p#equipment').css('display','none');
				$('p#divers').css('display','none');
				setElementColor('equipList', 'optional');
				setElementColor('diverList', 'optional');
			}
			
			break;
		
		case 'mon_0': case 'day_0': case 'yer_0':
		case 'mon_1': case 'day_1': case 'yer_1':
			
			var eleId = id.split('_');
			
			switch(eleId[1]) {
				case '0': var pId = 'departure'; var sId = 'deptime'; break;
				case '1': var pId = 'return'; var sId = 'rettime'; break;
			}
			
			var valMon = getFullElement('mon_' + eleId[1]);
			var valDay = getFullElement('day_' + eleId[1]);
			var valYer = getFullElement('yer_' + eleId[1]);
			
			valMon = $(valMon).val();
			valDay = $(valDay).val();
			valYer = $(valYer).val();
			
			var mon = valMon == 'Mnth:' || value == '*' ? false : true;
			var day = valDay == 'Day:'  || value == '*' ? false : true;
			var yer = valYer == 'Year:' || value == '*' ? false : true;
			
			if(mon && day && yer) {
				$('p#' + pId).css('display','');
				$('select#' + sId).removeClass('optional');
				$('select#' + sId).addClass('required');
				setElementColor(sId, 'required');
			} else {
				$('p#' + pId).css('display','none');
				$('select#' + sId).removeClass('required');
				$('select#' + sId).addClass('optional');
				setElementColor(sId, 'optional');
			}
	
			break;
	}
}

// SET THE BACKGROUND AND TEXT COLOR OF AN ELEMENT //
function setElementColor(id, trigger) {

	var element = getFullElement(id);
	
	switch(trigger) {
		case 'valid': // Set color to green / set text to black
			$(element).css('background-color','#E4FFCA');
			$(element).css('color','#000000');
			break;
		
		case 'invalid': // Set color to red / set text to black
			$(element).css('background-color','#FFCCCC');
			$(element).css('color','#000000');
			break;
		
		case 'required': // Set color to yellow / set text to black
			$(element).css('background-color','#FFE066');
			$(element).css('color','#000000');
			break;
		
		case 'optional': // set color to white / set text to gray
			$(element).css('background-color','#FFFFFF');
			$(element).css('color','#999999');
			$(element).val('Optional');
			break;	
	}
}

// DISPLAY OR REMOVE AN ELEMENT'S ERROR MESSAGE //
function setElementError(id, trigger, selArr) {

	var element = 'span#error_' + id;

	if(trigger != 'empty' && trigger != 'invalid' && trigger != 'compare') {
		$(element).css('visibility','hidden');
		$(element).removeClass('msgEr');
		
		if(id == 'textcomment') {
			$(element).css('display','none');
		}
		
		return true;
	}
		
	var error = '< ';

	switch(id) {
		case 'first':
			error += 'Enter your First Name';
			break;
			
		case 'last':
			error += 'Enter your Last Name';
			break;

		case 'email1':
			if(trigger == 'compare') {
				error += 'Email Addresses do not Match';
			} else {
				error += trigger == 'empty' ? 'Enter your Email Address' : 'Enter a Valid Email Address';
			}
			break;
		
		case 'email2':
			if(trigger == 'compare') {
				error += 'Email Addresses do not Match';
			} else {
				error += trigger == 'empty' ? 'Confirm your Email Address' : 'Enter a Valid Email Address';
			}
			break;
			
		case 'country':
			error += 'Select Your Home Country';
			break;
			
		case 'adult': case 'adults':
			error += 'Select the Number of Adults';
			break;

		case 'child':
			error += 'Select the Number of Children';
			break;

		case 'diving':
			error += 'Select Yes or No';
			break;
			
		case 'payment':
			error += 'Select PayPal or Bank Transfer';
			break;
			
		case 'deptime': case 'rettime':
			error += 'Select a Departure Time';
			break;
			
		case 'full_name':
			error += 'Enter your first AND last name';
			break;

		case 'subject':
			error += 'Enter a subject for your email';
			break;

		case 'textcomment':
			error = '^ Enter your comment';
			break;

		case 'adult0': case 'adult1': case 'adult2': case 'adult3': case 'adult4':
		case 'adult5': case 'adult6': case 'adult7': case 'adult8': case 'adult9':
			error += 'Enter COMPLETE Name of Adult';
			break;

		case 'child0': case 'child1': case 'child2': case 'child3': case 'child4':
		case 'child5': case 'child6': case 'child7': case 'child8': case 'child9':
			error += 'Enter COMPLETE Name of Child';
			break;
			
		case 'stars':
			error += 'Select a Hotel Star Rating';
			break;
			
		case 'star_rating':
			error += 'Select a Star Rating';
			break;

		case 'twin':
			error += 'Select number of Twin Rooms';
			break;

		case 'double':
			error += 'Select number of Double Rooms';
			break;

		case 'smoking': case 'breakfast':
			error += 'Select "Yes" or "No"';
			break;

		// SELECT ARRAY ERROR CASES
		case 'depdate': case 'retdate': case 'datein': case 'dateout':
		case 'bday0': case 'bday1': case 'bday2': case 'bday3': case 'bday4':
		case 'bday5': case 'bday6': case 'bday7': case 'bday8': case 'bday9':

			error += 'Select a ';
			
			//Clean empty array indexes
			var arrMsg = new Array();
			for(i=0; i < selArr.length; i++) {
				if(selArr[i]) {
					switch(selArr[i]) {
						case 'mon': arrMsg.push('Month'); break;
						case 'day': arrMsg.push('Day'); break;
						case 'yer': arrMsg.push('Year'); break;
					}
				}
			}

			switch(arrMsg.length) {
				case 1: error += arrMsg[0]; break;
				case 2: error += arrMsg[0] + ' and ' + arrMsg[1]; break;
				case 3: error += arrMsg[0] + ', '    + arrMsg[1] + ' and ' + arrMsg[2]; break;
			}

			break;

	}
	
	$(element).css('visibility','visible');
	$(element).text(error);
	$(element).addClass('msgEr');
	
	if(id == 'textcomment') {
		$(element).css('display','block');
		$(element).css('margin-left','125px');
	}
	
	return false;
}

// Get the full element, i.e.:
// input#firstName or...
// select#country, etc.
function getFullElement(id) {
	return $('#' + id).get(0).tagName.toLowerCase() + '#' + id;
}
