Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

$(document).ready(function(){
	var PAGE_DRUG = 0, PAGE_RESIDENCY = 1, PAGE_HOUSEHOLD_SIZE = 2, PAGE_HOUSEHOLD_INCOME = 3, PAGE_INSURANCE = 4, PAGE_MAY_QUALIFY = 5, PAGE_MAY_NOT_QUALIFY = 6;
	var income_vals = { "1":3, "2":3, "3":4, "4":5, "5":7, "6":7, "7":8, "8+":8 };
	
	var breadcrumb_divider = "&nbsp; &raquo; &nbsp; ";
	var breadcrumb_eval = [
		function(pageIndex) {
			var selectedItems = $(".gs_page").eq(pageIndex).find("li.selected");
			if (selectedItems.length == 0)
				breadcrumbs.remove(pageIndex);
			else
				breadcrumbs[pageIndex] = selectedItems.attr("label");		
		},
		function(pageIndex) {
			var selectedItems = $(".gs_page").eq(pageIndex).find("li.selected");
			if (selectedItems.length == 0)
				breadcrumbs.remove(pageIndex);
			else
				breadcrumbs[pageIndex] = breadcrumb_divider + "Resident"; // + selectedItems.attr("label");
		},
		function(pageIndex) {
			var selectedItems = $(".gs_page").eq(pageIndex).find("li.selected");
			if (selectedItems.length == 0)
				breadcrumbs.remove(pageIndex);
			else
				breadcrumbs[pageIndex] = breadcrumb_divider + "Household"; // "Household size " + selectedItems.html();
		},
		function(pageIndex) {
			var selectedItems = $(".gs_page").eq(pageIndex).find("li.selected");
			if (selectedItems.length == 0)
				breadcrumbs.remove(pageIndex);
			else
				breadcrumbs[pageIndex] = breadcrumb_divider + "Income"; // selectedItems.attr("label") + " " + selectedItems.html().toLowerCase();
		},
		function(pageIndex) {
			var selectedItems = $(".gs_page").eq(pageIndex).find("li.selected");
			if (selectedItems.length == 0)
				breadcrumbs.remove(pageIndex);
			else {
				breadcrumbs[pageIndex] = breadcrumb_divider + selectedItems.attr("label");
			}	
		}
	];
	var breadcrumbs = [];
	

	
	//Resets states of objects
	var reset = function(){	
		$(".gs_page li").removeClass("selected");
		breadcrumbs.length = 0;
		changePage(PAGE_DRUG);
	}
	$("div.start_over").click(reset);
	
	
	var answerClicks = function() {
		$(".gs_page li").click(function() {
			var currentPageIndex = $(this).parents(".gs_page").index();
		
			
			if ($(this).hasClass("selected")) {
				$(this).removeClass("selected");
			}
			else {
				if ($(this).parents("div.only-one").length > 0) {
					$(this).parents("div.only-one").find("li").removeClass("selected");
				}
				$(this).addClass("selected");
			}
			
			breadcrumb_eval[currentPageIndex](currentPageIndex);
			updateBreadcrumb();
		});
	}
	answerClicks();
	
	var nextClicks = function() {
		$(".gs_next_button").click(function() {
			if ($(this).parents(".gs_page").find("li.selected").length > 0) {
				var currentPageIndex = $(this).parent(".gs_page").index();
				
				switch(currentPageIndex)
				{
					case PAGE_RESIDENCY:
						nextPage = residencyCheck(PAGE_HOUSEHOLD_SIZE, PAGE_MAY_NOT_QUALIFY);
						break;
					case PAGE_INSURANCE:
						nextPage = submissionCheck();
						break;
					default:
						nextPage = currentPageIndex+1;
				}
				changePage(nextPage);
			}
		});
	}
	nextClicks();
	
	var backClicks = function() {
		$(".gs_back_button").click(function() {
			var currentPageIndex = $(this).parent(".gs_page").index();
			var lastPageIndex = $(".gs_breadcrumb ul").children().length;
			
			
			if (currentPageIndex > PAGE_INSURANCE && lastPageIndex != 2) {
				changePage(PAGE_INSURANCE);
			}
			else if (lastPageIndex == 2 && (currentPageIndex == PAGE_MAY_QUALIFY || currentPageIndex == PAGE_MAY_NOT_QUALIFY)) {
				changePage(PAGE_RESIDENCY);
			}
			else {
				changePage(currentPageIndex-1);
			}
			
			
			updateBreadcrumb();
		});
	}
	backClicks();

	
	
	var updateBreadcrumb = function() {
		$(".gs_breadcrumb ul").empty();
		for (var i=0; i<=$(".gs_page.center").index(".gs_page"); i++) {
			if (breadcrumbs[i] !== undefined) $(".gs_breadcrumb ul").append($("<li>" + breadcrumbs[i] + "</li>"));
		}
	};
	
	var updateProgress = function() {
		var currentPageIndex = $(".gs_page.center").index(".gs_page");
		if (currentPageIndex <= PAGE_INSURANCE) {
			$(".gs_dot_indicator img").removeClass("on").eq(currentPageIndex).addClass("on");
		}
		else {
			$(".gs_dot_indicator img").addClass("on");
		}
	}
	
	
	
	
	var residencyCheck = function(nextPage, mayNotQualifyPage) {
		var selectedIndex = $(".gs_page").eq(PAGE_RESIDENCY).find("li.selected").index();
		return (selectedIndex === 1) ? mayNotQualifyPage : nextPage;
	}
	var submissionCheck = function() {
		var selectedHouseholdSize = $(".gs_page").eq(PAGE_HOUSEHOLD_SIZE).find("li.selected").html();
		
		var householdIncomes = $(".gs_page").eq(PAGE_HOUSEHOLD_INCOME).find("li");
		for (var i=0; i<householdIncomes.length; i++) {
			if ($(householdIncomes[i]).hasClass("selected")) {
				selectedHouseholdIncomeIndex = i;
				break;
			}
		}
		
		return (selectedHouseholdIncomeIndex <= income_vals[selectedHouseholdSize]) ? PAGE_MAY_QUALIFY : PAGE_MAY_NOT_QUALIFY;
	}

	

	// Change the page
	var changePage = function(pageID){
		$(".gs_page_container").animate({ opacity: 0 }, 300, function() {
			$(".gs_page").removeClass("center").eq(pageID).addClass("center");
				updateBreadcrumb();
				updateProgress();
			$(".gs_page_container").animate({ opacity: 1 }, 300);
		});
	}

	
	

	
	
	
	changePage(PAGE_DRUG);
	

});

