var contentWin;
Date.prototype.getDiff = function(date, interval){
	  if (typeof date == "string"){
	     date = new Date(date);
	  }
	  if (isNaN(date) || !(date instanceof Date)){
	     return NaN;
	  }
	  if (typeof interval == "undefined") interval = "ms";
	  var diff = this - date;
	  switch(interval.toLowerCase()){
	    case "s":
	      diff = diff/1000; break;
	    case "n":
	      diff = diff/(1000*60); break;
	    case "h":
	      diff = diff/(1000*60*60); break;
	    case "d":
	      diff = diff/(1000*60*60*24); break;
	    case "m":
	      diff = diff/(1000*60*60*24*30); break;
	    case "y":
	      diff = diff/(1000*60*60*24*365); break;
	    default:
	      ;
	  }
	  return Math.floor(diff);
	}
function concatCollections() {
	var c, k, j, i = arguments.length;
	var a = [];
	for ( j=0; j<i; j++ ) {
		c = arguments[j];
		h = c.length;
		for ( k=0; k<h; k++ ){
			a.push(c[k]);
		}
	}
	return a;
}
//is form valid, submit to server

function openWaiver(){
	var dob = $F('birth_month') + '/' + $F('birth_day') + '/' + $F('birth_year');
	var content_id='';
	$('dob').value = dob;
	if($('type').value == 'g'){
		if (isAdult(dob))
			content_id = 'group-waiver';
	}
	else{
		if (isAdult(dob)) {
			$('minor-waiver').hide();
				content_id = 'adult-waiver';
		}
		else {
			$('adult-waiver').hide();
			content_id = 'minor-waiver';
		}
	}
	//open dialog with waiver



	if($(content_id) != null){
		$('waiver_recoveryRally_alpha').show();
		$('waiver_recoveryRally').show();
		$(content_id).show();
		hideSelects();
	}
	else{
		alert("For group applications the leader must be 18 years of age or over.")
	}
	if (content_id == 'minor-waiver') {
	 //pre-set form value based on reg form input
		$('MINOR_NAME_1').value = $F('firstName') + ' ' + $F('lastName');
		$('MINOR_NAME_2').value = $F('MINOR_NAME_1');
	}
}

function validate(form) {
	var button_event = $('waiver_submit').onclick;
	$('waiver_submit').onclick =null;
	$('advice-validate-captcha').style.display="none";
	$('advice-validate-email').style.display="none";
	$('captcha').removeClassName('validate-failed');
	$('email').removeClassName('validate-failed');
	$('captcha').addClassName('validate-passed');
	$('email').addClassName('validate-passed');
	if(validRegistration.validate()){
		$('grouprally').request({
	  		method: 'post',
	  		onSuccess: function(transport){
	  			var serverValid = false;
		  		var response = transport.responseText.evalJSON();
		  		serverValid=response.result;


		  		if (serverValid ) {

					openWaiver();
				
				}
				else{
		  			validateServerSide(response.errors);
		  		}
				$('waiver_submit').onclick = button_event;
	  		},
	  		onFailure: function(){$('waiver_submit').onclick = button_event; alert("Communication error, please try again later.");}
	  	});
	}
	else{
		$('waiver_submit').onclick = button_event;
	}
	//$('waiver_submit').onclick = button_event;
  	//prevent submit of the form
	return false;
}


function validateServerSide(errors){
	var l="";
	$('advice-validate-captcha').style.display="none";
	$('advice-validate-email').style.display="none";
	for(var i=0;i<errors.length;i++){
		switch(errors[i]){
			case'captcha_invalid':
				$('captcha').addClassName('validate-failed');
				$('captcha').removeClassName('validate-passed');
				$('advice-validate-captcha').style.display="";
			break;
			case'server_error':
				 $('advice-validate-servererror').style.display="";
			break;
			case'email_registered':
				$('email').addClassName('validate-failed');
				$('email').removeClassName('validate-passed');
				$('advice-validate-email').style.display="";
			break;

		}


	}
	//alert(l);
}
function validateWaiver(content_id) {

	var success = true;
	var inputs = document.getElementById(content_id).getElementsByTagName("input");
	var lists = document.getElementById(content_id).getElementsByTagName("select");




	var fields = concatCollections(inputs, lists);
	for (i=0; i<fields.length; i++){
		if (Validation.get('IsEmpty').test($F(fields[i].id))) {

			success = false;
			if (content_id == 'minor-waiver') {
				alert('Please fill out the waiver form completely and accept all of the terms and conditions at the bottom of this waiver.');
			} else {
				alert('Please accept all of the terms and conditions at the bottom of this waiver.');
			}
			break;
		}
	}
	//validation success
	if (success) {
		if (content_id == 'minor-waiver') {
			$('MINOR_NAME_hd').value = $F('MINOR_NAME_1');
			$('GUARDIAN_NAME_hd').value = $F('GUARDIAN_NAME_1');
			$('RELATIONSHIP_WITH_MINOR_hd').value = $F('RELATIONSHIP_WITH_MINOR_1');
			$('MINOR_WAIVER_REQUIRED_CHECKBOX_1_hd').value = $F('MINOR_WAIVER_REQUIRED_CHECKBOX_1');
			$('MINOR_WAIVER_REQUIRED_CHECKBOX_2_hd').value = $F('MINOR_WAIVER_REQUIRED_CHECKBOX_2');
			$('MINOR_WAIVER_REQUIRED_CHECKBOX_3_hd').value = $F('MINOR_WAIVER_REQUIRED_CHECKBOX_3');
		} else {
			$('ADULT_WAIVER_REQUIRED_CHECKBOX_1_hd').value = $F('ADULT_WAIVER_REQUIRED_CHECKBOX_1');
			$('ADULT_WAIVER_REQUIRED_CHECKBOX_2_hd').value = $F('ADULT_WAIVER_REQUIRED_CHECKBOX_2');
		}
	//	contentWin.close();


		$('grouprally').action=$('formActionURL').value;
		document.entry.submit();






	}


}
function closeWaiver(content_id){
	$(content_id+'_alpha').hide();
	$(content_id).hide();
	showSelects();
}
function setValue(e) {
	switch (e.id) {
		case ('MINOR_NAME_1'):
			$('MINOR_NAME_2').value = e.value;
			break;
		case ('MINOR_NAME_2'):
			$('MINOR_NAME_1').value = e.value;
			break;
		case ('GUARDIAN_NAME_1'):
			$('GUARDIAN_NAME_2').value = e.value;
			break;
		case ('GUARDIAN_NAME_2'):
			$('GUARDIAN_NAME_1').value = e.value;
			break;
		case ('RELATIONSHIP_WITH_MINOR_1'):
			$('RELATIONSHIP_WITH_MINOR_2').value = e.value;
			break;
		case ('RELATIONSHIP_WITH_MINOR_2'):
			$('RELATIONSHIP_WITH_MINOR_1').value = e.value;
			break;
	}
}

function isAdult(dob) {
	if( !/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.test(dob) ) {
		//alert( "Invalid date supplied - must be format MM/DD/YYYY" );
		return false;
	}

	var d = new Date(today);
	var d2 = new Date(RegExp.$3, (RegExp.$1 - 1), RegExp.$2);

	var diff = d.getDiff(d2, "y");
	switch (true) {
		case ( isNaN(diff) ):
			//Invalid date supplied
			return false;
		case ( diff == 18 ):
			var myDate = new Date(d.getFullYear(), (RegExp.$1 - 1), RegExp.$2);
			if (myDate > d) {
				return false;
			}
			break;
		case ( diff < 18 ):
			//under 18
			return false;
	}
	return true;
}
myObserver = {
    onDestroy: function(eventName, win) {
      if (win == contentWin) {
        contentWin = null;
        Windows.removeObserver(this);
      }
    }
}
var defaultvalue  = Class.create();

defaultvalue .prototype = {

    initialize: function(ctrl, v) {
		var v;
		this.ctrl = ctrl;
		this.v = v;

        if (this.ctrl == null) return;
        if (this.ctrl.value == '') this.ctrl.value = v;
        Event.observe(this.ctrl, 'focus', this.clear.bindAsEventListener(this), false);
        Event.observe(this.ctrl, 'blur', this.reset.bindAsEventListener(this), false);
    },

    clear: function() {
        if (this.ctrl.value == this.v) {
        	this.ctrl.value = "";
        }
    },

    reset: function() {
        if (this.ctrl.value == "") {
        	this.ctrl.value = this.v;
        }
    }
}

function initMainEvents() {
	Windows.addObserver(myObserver);
//	new defaultvalue ($('firstName'), "First Name");
//	new defaultvalue ($('lastName'), "Last Name");
}

function hideSelects(){
	var selects = document.getElementById('grouprally').getElementsByTagName("select");

	for (var i=0;i<selects.length;i++)
		selects[i].style.display = "none";
}
function showSelects(){
	var selects = document.getElementById('grouprally').getElementsByTagName("select");
	for (var i=0;i<selects.length;i++)
		selects[i].style.display = "";
}

Event.observe(window, "load", initMainEvents);

