$(document).ready(function(){
  InitDropDown("startdate");
  InitDropDown("enddate");
});

var viewModel = {
    showMoreVisitors: ko.observable(false),
    error: ko.observable(""),
	loading: ko.observable(true),

    person1: ko.observable(),
    person2: ko.observable(),
    person3: ko.observable(),
    person4: ko.observable(),
    person5: ko.observable(),
    person6: ko.observable(),
    startDate: ko.observable(defaultStartDate),
    endDate: ko.observable(defaultEndDate),
    benefit: ko.observable(50000),
    stableMedicalConditions: ko.observable("0"),

    selectedView: ko.observable("form"),
    result: ko.observable(null),

    performGetQuotes: function() {
        this.result(null);
        this.selectedView("results");
    }
};

viewModel.hasError = ko.dependentObservable(function(){
	if (this.loading()) return false;
	if (this.person1()=="-1" && this.person2()=="-1"){
		this.error("You should select at least one person's age!");
		return true;
	}

	if (this.startDate()==""){		  this.error("Please select start date!");	      return true;    }		var tDate=new Date();    tDate=new Date(tDate.getYear(),tDate.getMonth(),tDate.getDate());	var sDate=Date.parse(this.startDate());	var eDate=Date.parse(this.endDate());	if (isNaN(sDate)){		this.error("Please enter valid start date!");	    return true;    }		if (sDate<tDate){		this.error("Please select start date equal or greater than today.");		return true;	}
	if (isNaN(eDate)){		this.error("Please enter valid end date!");		return true;    }	if (eDate<tDate){		this.error("Please select end date equal or greater than today.");  	    return true;    }		if (eDate<=sDate){	    this.error("Please select end date greater than start date.");		return true;    }		return false;
}, viewModel);

viewModel.hasNextBenefit = ko.dependentObservable(function(){
	if (!this.result()) return false;
	return this.result().Query.NextBenefit!="0";
}, viewModel);

viewModel.getQuotes=ko.dependentObservable(function(){
    if (this.selectedView()=="results"){
		this.loading(false);
		if (this.hasError()){
			this.selectedView("form");
			return;
		}
		var url= "https://www.easylinks.ca/EasyLinksApi.svc/visitors/";
		url += this.startDate()+"/";
		url += this.endDate()+"/";
		url += this.benefit()+"/";
		url += (this.stableMedicalConditions()=="1"?"true":"false") + "/";
		
		if (this.person1()!="-1") url+=this.person1()+",";
		if (this.person2()!="-1") url+=this.person2()+",";
		if (this.person3()!="-1") url+=this.person3()+",";
		if (this.person4()!="-1") url+=this.person4()+",";
		if (this.person5()!="-1") url+=this.person5()+",";
		if (this.person6()!="-1") url+=this.person6()+",";
		
		$.getJSON(url+"?callback=?", this.result);
	}
},viewModel);

ko.applyBindings(viewModel);

ko.linkObservableToUrl(viewModel.selectedView, "view" /* hash param name */, "form" /* default value */);
