// form validation function //

function submitForm(form){
	var target = document.getElementById('form_regSubmit');
	if(validate(target)){
	document.getElementById("submitReg").style.display = "none";
		status = new Ajax.Request('includes/danceloot_eventReg.php', {
							method:'post',
							parameters: $('form_regSubmit').serialize(true),
							onSuccess: function(obj){
											successRegEx = /success/
											if(obj.responseText.search(successRegEx)){
												queryRegEx = /\<sessionId>(\w+)\<\/sessionId>/;
												var sessionId = obj.responseText.match(queryRegEx)[1];
												window.location = "http://www.bluesbootcamp.com/regConfirm.php?ticket="+sessionId;
											}
											else{
												alert("no match!");
											}
										}
							});
	}
	document.getElementById('bbcRegStatus').innerHTML = "<span style='color:red'>processing...Please Wait One Moment...</span>";
}

function validate(form) {

	var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
	var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
	var intRegex = /^[0-9]+$/;
	var timeout = 2;	
	
	var firstName = form.firstName.value;
	var lastName= form.lastName.value;
	var phone = form.phone1.value + form.phone2.value + form.phone3.value;
	var email1 = form.emailAddress.value;
    var email2 = form.verifyEmail.value;
	var address1 = form.address1.value;
	var city = form.city.value;
	var state = form.state.value;
	var zip = form.zip.value;
	var yearsExp = form.yearsExp.value;
	var dancePerMonth = form.dancePerMonth.value;
	var gender = false;
	var danceRole = false;
	var agreement = form.readAgreement.checked;
	
	if(firstName == "") {
		inlineMsg('firstName','You must enter your first name.', timeout);
		return false;
	}
	if(!firstName.match(nameRegex)) {
		inlineMsg('firstName','You have entered an invalid name.', timeout);
		return false;
	}
	if(lastName == "") {
		inlineMsg('lastName','You must enter your last name.', timeout);
		return false;
	}
	if(!lastName.match(nameRegex)) {
		inlineMsg('lastName','You have entered an invalid name.', timeout);
		return false;
	}
	if((!phone.match(intRegex)) || (phone.length != 10)){
		inlineMsg('primaryPhone','You must enter a valid phone number.', timeout);	
		return false;
	}
	if(email1 == "") {
		inlineMsg('emailAddress','<strong>Error</strong><br />You must enter your email.', timeout);
		return false;
	}
	if(!email1.match(emailRegex)) {
		inlineMsg('emailAddress','<strong>Error</strong><br />You have entered an invalid email.', timeout);
		return false;
	}
	if(email2 == "") {
		inlineMsg('verifyEmail','<strong>Error</strong><br />You must enter your email.', timeout);
		return false;
	}
	if(!email2.match(emailRegex)) {
		inlineMsg('verifyEmail','<strong>Error</strong><br />You have entered an invalid email.', timeout);
		return false;
	}
	if(email1.toLowerCase() != email2.toLowerCase()){
		inlineMsg('emailAddress', '<strong>Error</strong><br />You must enter matching email addresses.', timeout);
		return false;
	}
	if(address1 == "") {
		inlineMsg('address1','<strong>Error</strong><br />You must enter your address.', timeout);
		return false;
	}
	if(city == "") {
		inlineMsg('city','<strong>Error</strong><br />You must enter your city.', timeout);
		return false;
	}
	if(state == "") {
		inlineMsg('state','<strong>Error</strong><br />You must select a state.', timeout);
		return false;
	}
	if(zip == "") {
		inlineMsg('zip','<strong>Error</strong><br />You must enter your zip code.', timeout);
		return false;
	}
	if(!zip.match(intRegex)){
		inlineMsg('zip','<strong>Error</strong><br />You must enter a valid zip code.', timeout);
		return false;
	}
	if(!yearsExp.match(intRegex)){
		inlineMsg('yearsExp', '<strong>Error:</strong>Not a valid number.', timeout);
		return false;
	}
	if(!dancePerMonth.match(intRegex)){
		inlineMsg('dancePerMonth', '<strong>Error:</strong>Not a valid number.', timeout);
		return false;
	}
	for(i=0; i<form.gender.length; i++){
		if(form.gender[i].checked == true){
			gender = true;		
		}
	}	
	if(gender == false){
		inlineMsg('gender', '<strong>Error</strong><br />You need to select a gender.', timeout);
		return false;
	}
	for(i=0; i<form.danceRole.length; i++){
		if(form.danceRole[i].checked == true){
			danceRole = true;
		}
	}
	if(danceRole == false){
		inlineMsg('danceRole', '<strong>Error</strong><br />You must select Lead or Follow.', timeout);
		return false;
	}
	
	if(agreement == "") {
		inlineMsg('readAgreement','<strong>Error</strong><br />You must agree to the terms and conditions.', timeout);
		return false;
	}	
	
	document.getElementById('errorAlert').style.display = 'none';
	return true;
}
	
	// START OF MESSAGE SCRIPT //
	
var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
	var msg;
	var msgcontent;
	if(!document.getElementById('msg')) {
		msg = document.createElement('div');
		msg.id = 'msg';
		msgcontent = document.createElement('div');
		msgcontent.id = 'msgcontent';
		document.body.appendChild(msg);
		msg.appendChild(msgcontent);
		msg.style.filter = 'alpha(opacity=0)';
		msg.style.opacity = 0;
		msg.alpha = 0;
	} else {
		msg = document.getElementById('msg');
		msgcontent = document.getElementById('msgcontent');
	}
	msgcontent.innerHTML = string;
	msg.style.display = 'block';
	var msgheight = msg.offsetHeight;
	var targetdiv = document.getElementById(target);
	targetdiv.focus();
	var targetheight = targetdiv.offsetHeight;
	var targetwidth = targetdiv.offsetWidth;
	var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
	var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
	msg.style.top = topposition + 'px';
	msg.style.left = leftposition + 'px';
	clearInterval(msg.timer);
	msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
	if(!autohide) {
		autohide = MSGHIDE;  
	}
	window.setTimeout("hideMsg()", (autohide * 1000));
	document.getElementById('errorAlert').style.display = 'block';
}
	
// hide the form alert //
function hideMsg(msg) {
	var msg = document.getElementById('msg');
	if(!msg.timer) {
		msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
	}
}
	
// fade the message box //
function fadeMsg(flag) {
	if(flag == null) {
		flag = 1;
	}
	var msg = document.getElementById('msg');
	var value;
	if(flag == 1) {
		value = msg.alpha + MSGSPEED;
	} else {
		value = msg.alpha - MSGSPEED;
	}
	msg.alpha = value;
	msg.style.opacity = (value / 100);
	msg.style.filter = 'alpha(opacity=' + value + ')';
	if(value >= 99) {
		clearInterval(msg.timer);
		msg.timer = null;
	} else if(value <= 1) {
		msg.style.display = "none";
		clearInterval(msg.timer);
	}
}
	
// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
	var left = 0;
	if(target.offsetParent) {
		while(1) {
			left += target.offsetLeft;
			if(!target.offsetParent) {
				break;
			}
			target = target.offsetParent;
		}
	} else if(target.x) {
		left += target.x;
	}
	return left;
}
	
// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
	var top = 0;
	if(target.offsetParent) {
		while(1) {
		  top += target.offsetTop;
		  if(!target.offsetParent) {
			break;
		  }
		  target = target.offsetParent;
		}
	} else if(target.y) {
		top += target.y;
	}
	return top;
}
	
// preload the arrow //
if(document.images) {
	arrow = new Image(7,80); 
	arrow.src = "images/msg_arrow.gif"; 
}