//Sign Up Form JS for huskywintersports.com
//Uses Prototype JS library
//Author: Kaitlyn Schirmer - schirmek@uw.edu

var SKI_SAT_CLOSED = false;
var SKI_SUN_CLOSED = true;
var BOARD_SAT_CLOSED = false;
var BOARD_SUN_CLOSED = false;
var SKI_CLOSED = false;
var BOARD_CLOSED = false;

//this is really handled in php, this just makes sure that the radio buttons remain deactivated
var SIX_WEEK_CLOSED = true;
var SESSION_A_CLOSED = true;
var SESSION_B_CLOSED = false;

document.observe("dom:loaded", function() {
	//disableClosedSport();
	hidePackageDependentInfo();
	hideAbilityInfo();
	var packageInputs = $$(".package-selection");
	for(var i = 0; i < packageInputs.length; i++){
		packageInputs[i].observe("click", handleSessionSelection);
		if(packageInputs[i].checked){
			if(packageInputs[i].value == "3-week-group" || packageInputs[i].value == "3-week-private" ||
			packageInputs[i].value == "cub-club"){
				$("session-selection").show();
			}
			if(packageInputs[i].value == "single-group" || packageInputs[i].value == "single-private"){
				$("single-lesson-date-selection").show();
			}
			if(packageInputs[i].value == "6-week-group" || packageInputs[i].value == "6-week-private") {
				$("day-selection").show();
			}
		}
	}
	var abilities = $$(".ability-options");
	for(var i = 0; i < abilities.length; i++){
		abilities[i].observe("click", handleAbilitySelection);
	}
	$("cub-club").observe("click", verifyAgeAndAbility);

	//disable radio button for days that are full
	//only works if the person clicks a sport before a day
	var sportOptions = $$(".sport-selection");
	for(var i = 0; i < sportOptions.length; i++){
		sportOptions[i].observe("click", verifyDay);
	}
});

function clearPreviousDayResponse(){
	var dayOptions = $$(".package-day");
	for(var i = 0; i < dayOptions.length; i++){
		dayOptions[i].checked = false;
	}
}

function disableClosedSport(){
	if(SKI_CLOSED){
		$("sport-ski").disable();
	}
	if(BOARD_CLOSED){
		$("sport-snowboard").disable();
	}
}

function verifyDay(event){
	disableUnavailableDays(this);
}

//Refactor?
function disableUnavailableDays(radioOption){
	//alert("in disable unavailable days. sport = " + radioOption.value);
	var sport = radioOption.value;
	var dayOptions = $$(".package-day");
	for(var i = 0; i < dayOptions.length; i++){
		EnableAsAppropriate(dayOptions[i]);
		dayOptions[i].checked = false;
		if(dayOptions[i].nextSiblings().length > 0){
			dayOptions[i].next().remove();
		}
		if(sport == "ski"){
			if(SKI_SAT_CLOSED){
				if(dayOptions[i].value.indexOf("sat") !== -1){
					dayOptions[i].disable();
					var notice = $(document.createElement("span"));
					notice.innerHTML = "We're sorry, ski lessons for this day are full.";
					notice.addClassName("day-unavailable");
					dayOptions[i].up().appendChild(notice);
				}
			}
			if(SKI_SUN_CLOSED){
				if(dayOptions[i].value.indexOf("sun") !== -1){
					dayOptions[i].disable();
					var notice = $(document.createElement("span"));
					notice.innerHTML = "We're sorry, ski lessons for this day are full.";
					notice.addClassName("day-unavailable");
					dayOptions[i].up().appendChild(notice);
				}
			}
		} else {
			if(BOARD_SAT_CLOSED){
				if(dayOptions[i].value.indexOf("sat") !== -1){
					dayOptions[i].disable();
					var notice = $(document.createElement("span"));
					notice.innerHTML = "We're sorry, snowboard lessons for this day are full";
					notice.addClassName("day-unavailable");
					dayOptions[i].up().appendChild(notice);
				}
			}
			if(BOARD_SUN_CLOSED){
				if(dayOptions[i].value.indexOf("sun") !== -1){
					dayOptions[i].disable();
					var notice = $(document.createElement("span"));
					notice.innerHTML = "We're sorry, snowboard lessons for this day are full.";
					notice.addClassName("day-unavailable");
					dayOptions[i].up().appendChild(notice);
				}
			}
		}
	}
}

function EnableAsAppropriate(option){
	if(((option.value.indexOf("-a-") != -1) && SESSION_A_CLOSED !== true) || ((option.value.indexOf("-b-") != -1) && SESSION_B_CLOSED !== true)) {
		option.enable();
	}
}

function verifyAgeAndAbility(event){
	var age = $("age").value;
	if(age > 6){
		alert("We're sorry, your child is too old for Husky Cub Club. Please choose a different lesson package.");
	}
	var ability = $RF("signup","ability");
	if(ability != 'first-time'){
		alert("We're sorry, your child is too advanced for Husky Cub Club. Please choose a different lesson package.");
	}
}

//borrowed from http://xavisys.com/using-prototype-javascript-to-get-the-value-of-a-radio-group/
function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }
 
    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}

function hidePackageDependentInfo(){
	$("single-lesson-date-selection").hide();
	$("session-selection").hide();
	$("day-selection").hide();
}

function handleSessionSelection(event){
	clearPreviousDayResponse();
	hidePackageDependentInfo();
	var selection = this.value;
	if(selection.indexOf("3") != -1 || selection.indexOf("cub") != -1){
		$("session-selection").show();
	} else if (selection.indexOf("single") != -1){
		$("single-lesson-date-selection").show();
	} else {
		$("day-selection").show();
	}
}

function hideAbilityInfo(){
	var abilityDescriptions = $$(".ability-description");
	for(var i = 0; i < abilityDescriptions.length; i++){
		abilityDescriptions[i].hide();
	}
}

function handleAbilitySelection(event){
	hideAbilityInfo();
	var ability = "ability-" + this.value;
	$(ability).show();
}

function removeSundayOptions(){
	var allDayOptions = $$(".package-day");
	for(var i = 0; i < allDayOptions.length; i++){
		if(allDayOptions[i].value.indexOf("sun") !== -1){
			allDayOptions[i].up().hide();
		}
	}
}

