﻿var HolidayLink = new function () {

	this.Resolve;
	this.Proceed;
	this.Reference;


	//Go
	this.Go = function () {
		ShowWaitMessage('divHolidayFinderWaitMessage');
		this.Resolve();
	}


	//Child Ages
	this.GetChildAges = function (iChildren) {

		f.SetValue('hidChildrenCount', iChildren);

		f.ShowIf('pSingleChild', iChildren == 1);
		f.ShowIf('pMultipleChildren', iChildren > 1);

		var aChildAgeControls = f.GetObjectsByIDPrefix('ddlChildAge_', 'select');
		for (var i = 0; i < aChildAgeControls.length; i++) {
			SetControlValidClass(aChildAgeControls[i], true);
			f.ShowIf(aChildAgeControls[i], SafeInt(aChildAgeControls[i].id.split('_')[1]) <= iChildren);
		}

		HideWaitMessage('divHolidayFinderWaitMessage');
		e.ModalPopup.Show('mdpChildAges');
	}

	this.ValidateChildAges = function () {

		var iChildren = SafeInt(f.GetValue('hidChildrenCount'));

		var bSuccess = true;
		var sChildAges = '';

		for (var i = 1; i <= iChildren; i++) {
			var aChildAgeControl = f.GetObject('ddlChildAge_' + i);
			var sAge = dd.GetText(aChildAgeControl);

			if (sAge == '') {
				SetControlValidClass(aChildAgeControl, false);
				bSuccess = false;
				break;
			}

			sChildAges += sAge + '#';
		}

		sChildAges = s.Chop(sChildAges);

		if (bSuccess) {
			e.ModalPopup.Close();

			ShowWaitMessage('divHolidayFinderWaitMessage');
			this.Proceed(sChildAges);
		}
	}


	//Redirect Handler
	this.RedirectHandler = function (sRedirectURL) {

		if (s.StartsWith(sRedirectURL, 'WARNING: ')) {
			alert(sRedirectURL.substring(9));
			HideWaitMessage('divHolidayFinderWaitMessage');

		} else {
			window.location = sRedirectURL;
		}

	}


	//Holiday link webservice
	this.oResolveHolidayLink = new WebService();
	this.oResolveHolidayLink.Go = function (sReference, sChildAges, EmailLogsTo, sFromQuote) {
		HolidayLink.Reference = sReference;



		if (sFromQuote == 'true') {
			var aParams = new Array(['HolidayReference', sReference], ['ChildAges', sChildAges], ['EmailLogsTo', EmailLogsTo]);
			this.RunWebService('/webservices/search.asmx', 'http://intuitivesystems', 'ResolveHolidayLinkFromQuoteEmail', aParams, this, false);

		} else {
			var aParams = new Array(['HolidayReference', sReference], ['ChildAges', sChildAges], ['EmailLogsTo', EmailLogsTo]);
			this.RunWebService('/webservices/search.asmx', 'http://intuitivesystems', 'ResolveHolidayLink', aParams, this, false);

		}

	}
	this.oResolveHolidayLink.Done = function (oXML) {
		var sRedirectURL = this.GetTagValue(oXML, 'ResolveHolidayLinkResult');

		if (sRedirectURL == '') {
			sRedirectURL = this.GetTagValue(oXML, 'ResolveHolidayLinkFromQuoteEmailResult');
		}

		if (s.StartsWith(sRedirectURL, 'ChildAgesRequired')) {
			var iChildren = sRedirectURL.split('_')[1];

			HolidayLink.Proceed = function (sChildAges) { HolidayLink.oResolveHolidayLink.Go(HolidayLink.Reference, sChildAges, ''); };
			HolidayLink.GetChildAges(iChildren);
			return;
		}

		HolidayLink.RedirectHandler(sRedirectURL);
	}

	//Holiday search webservice
	this.oResolveHolidaySearch = new WebService();
	this.oResolveHolidaySearch.Go = function (sQueryString) {
		var aParams = new Array(['QueryString', sQueryString]);
		this.RunWebService('/webservices/search.asmx', 'http://intuitivesystems', 'ResolveHolidaySearch', aParams, this, false);
	}
	this.oResolveHolidaySearch.Done = function (oXML) {
		var sRedirectURL = this.GetTagValue(oXML, 'ResolveHolidaySearchResult');
		HolidayLink.RedirectHandler(sRedirectURL);
	}

	//Holiday options search webservice
	this.oResolveHolidayOptionsSearch = new WebService();
	this.oResolveHolidayOptionsSearch.Go = function (sQueryString, sChildAges) {

		var iChildren = SafeInt(f.GetValue('hidChildrenCount'));
		if (iChildren > 0 && sChildAges == '') {
			HolidayLink.Proceed = function (sChildAges) { HolidayLink.oResolveHolidayOptionsSearch.Go(sQueryString, sChildAges); };
			HolidayLink.GetChildAges(iChildren);
			return;
		}

		var aParams = new Array(['QueryString', sQueryString], ['ChildAges', sChildAges]);
		this.RunWebService('/webservices/search.asmx', 'http://intuitivesystems', 'ResolveHolidayOptionsSearch', aParams, this, false);
	}
	this.oResolveHolidayOptionsSearch.Done = function (oXML) {
		var sRedirectURL = this.GetTagValue(oXML, 'ResolveHolidayOptionsSearchResult');
		HolidayLink.RedirectHandler(sRedirectURL);
	}


}
