﻿function Localize(Id, AutoLocalize, AptElement, RedirectUrl, ErrorDiv, InputClass, ErrorInputClass,
 LocModMessageDiv, LocModFormDiv, VisitorId, ErrorMessage, RefererUrl, StreetElement, ZipCodeElement,
 ZipCodeErrorMessage, LocalizePageName, LocalizeSuccessPageName, LocalizeLocationPickerPageName,
 LocationPickerType, LocalizeMarketPickerPageName, MarketPickerType, LocalizeFranchisePickerPageName, FranchisePickerType,
 DisplayType, ShopSource, IsPermanentChk, LocalizeMainDiv, SubmitBtnClientId, AptRequiredMessage, MoreInfoDiv, SegmentationMode, LocalizationType,
 IsPasswordAndSSNMode, PhoneNumber1Element, PhoneNumber2Element, PhoneNumber3Element, SSNElement, SSNErrorMessage, InvalidPhoneSSNAttemptAllowed, IsShopBuyflow, MDUMissingAptTitle, MDUMissingAptMessage,NewCustomerMDUTitle, NewCustomerMDUMessage, NewCustomerHeaderClientID, NewCustomerDescriptionClientID) {
	this.Id = Id;
	this.AutoLocalize = AutoLocalize;
	this.Validate = new Event();
	this.Submit = new Event();
	this.Localize = new Event();
	this.LocalizeFailed = new Event();
	this.RedirectUrl = RedirectUrl;
	this.Overlay = null;
	this.ErrorDiv = $(ErrorDiv);
	this.LocationId = "";
	this.MarketId = "";
	this.FranchiseMapId = "";
	this.PreviousLocalizetype = "";
	this.ProgressBar = new Progress();
	this.ProgressBar.Id = "localizeProgressBar";
	this.Mask = new Mask();
	this.Mask.Id = "localizeMask";
	this.ErrorInputClass = ErrorInputClass;
	this.InputClass = InputClass;
	this.LocModMessageDiv = $(LocModMessageDiv);
	this.LocModFormDiv = $(LocModFormDiv);
	this.VisitorId = VisitorId;
	this.SegmentationMode = SegmentationMode;
	this.LocalizePageName = LocalizePageName;
	this.LocalizeSuccessPageName = LocalizeSuccessPageName;
	this.LocalizeLocationPickerPageName = LocalizeLocationPickerPageName;
	this.LocationPickerType = LocationPickerType;
	this.LocalizeMarketPickerPageName = LocalizeMarketPickerPageName;
	this.MarketPickerType = MarketPickerType;
	this.LocalizeFranchisePickerPageName = LocalizeFranchisePickerPageName;
	this.FranchisePickerType = FranchisePickerType;
	this.ShopSource = ShopSource;
	this.IsShopBuyflow = IsShopBuyflow;
	this.DisplayType = DisplayType;
	if (this.DisplayType == "PageView")
		this.TrackOnLoad();
	this.LocalizeResponseType = {
		localized: "localized",
		multiplemarketsfound: "multiplemarketsfound",
		multiplefranchisesfound: "multiplefranchisesfound",
		multiplelocationsfound: "multiplelocationsfound",
		multiplemarketsfound: "multiplemarketsfound",
		notlocalized: "notlocalized",
		notserviceable: "notserviceable",
		badhousedebt: "badhousedebt",
		Commercial: "commercial",
		BulkAccount: "bulkaccount",
		ApartmentRequired: "apartmentrequired",
		RedirectToAuthentication: "redirecttoauthentication"
	}
	this.StreetAddress = "";
	this.AptNumber = "";
	this.City = "";
	this.ZipCode = "";
	this.ErrorMessage = ErrorMessage;
	this.RefererUrl = RefererUrl;
	this.StreetElementId = StreetElement;
	this.StreetElement = $(StreetElement);
	this.AptElementId = AptElement;
	this.AptElement = $(AptElement);
	this.ZipCodeElementId = ZipCodeElement;
	this.ZipCodeElement = $(ZipCodeElement);
	this.ZipCodeErrorMessage = ZipCodeErrorMessage;
	this.AptRequiredMessage = AptRequiredMessage;
	this.MoreInfoDiv = $(MoreInfoDiv);
	this.MoreInfoDivId = MoreInfoDiv;
	this.SSNErrorMessage = SSNErrorMessage;

	if (this.AutoLocalize == "1")
		addEvent(window, "load", function () { Auto(Id) });
	else {
		if (this.DisplayType == "PageView")
			addEvent(window, "load", function () { Localize.SetFocusOnStreet(Id) });
	}

	this.PermanentLocalization = "0";
	if (IsPermanentChk != null && IsPermanentChk != "") {
		this.IsPermanentChk = $(IsPermanentChk);
		if (this.IsPermanentChk.checked)
			this.PermanentLocalization = "1";
	}
	this.LocalizeMainDiv = $(LocalizeMainDiv);
	this.SubmitBtnClientId = SubmitBtnClientId;
	this.LocalizedResponse = "";
	this.IsPasswordAndSSNMode = Boolean.parse(IsPasswordAndSSNMode);
	this.PhoneNumber1ElementId = PhoneNumber1Element;
	this.PhoneNumber1Element = $(PhoneNumber1Element);
	this.PhoneNumber2ElementId = PhoneNumber2Element;
	this.PhoneNumber2Element = $(PhoneNumber2Element);
	this.PhoneNumber3ElementId = PhoneNumber3Element;
	this.PhoneNumber3Element = $(PhoneNumber3Element);
	this.SSNElementId = SSNElement;
	this.SSNElement = $(SSNElement);
	this.InvalidPhoneSSNAttemptAllowed = InvalidPhoneSSNAttemptAllowed;
	this.SessionSSNAttemptCount = 0;
	this.LocalizationType = LocalizationType;
	this.MDUMissingAptTitle = MDUMissingAptTitle;
	this.MDUMissingAptMessage = MDUMissingAptMessage;
	this.NewCustomerMDUTitle = NewCustomerMDUTitle;
	this.NewCustomerMDUMessage = NewCustomerMDUMessage;
	this.NewCustomerHeaderClientID = NewCustomerHeaderClientID;
	this.NewCustomerDescriptionClientID = NewCustomerDescriptionClientID;
	return this;
}
function AuthenticatePicker(PickerPageName) {
    s.pageName = PickerPageName;
    s.eVar37 = PickerPageName;
    s.eVar38 = "buyflow:oft:en";
    s.prop51 = "buyflow:oft:en";
    s.t();
}
Boolean.parse = function (str) {
    if (str != null) {
        switch (str.toLowerCase()) {
            case "true":
                return true;
            case "false":
                return false;
            default:
                return false;
        }
    }
    else {
        return false;
    }
};
 

Localize.SetFocusOnStreet = function (id) {
	var ctl = eval(id);
	if (ctl != null) {
		if (ctl.IsPasswordAndSSNMode) {
			ctl.PhoneNumber1Element.focus();
		}
		else {
			if (ctl.LocModFormDiv == null || ctl.LocModFormDiv.className.indexOf("visible") > -1)
				ctl.StreetElement.focus();
		}

	}
}

function LocalizationRequest() {
	this.StreetAddress = "";
	this.Apt = "";
	this.Zip = "";
	this.LocationId = "";
	this.MarketId = "";
	this.FranchiseMapId = "";
	this.Id;
	this.RememberMyInformation = "0";
	this.LocalizationFromCustomerArea = "0";
	this.SSN = "";
	this.PhoneNumber = "";
	this.Referer = "";
	this.SessionAttemptCount = 0;
	this.IsMDU = "UnIdentified";
}
function LocalizationResponse() {
	this.ErrorMessage = "";
	this.RedirectUrl = "";
	this.HTML = "";
	this.ResponseTypeString = "";
	this.OverlayId = "";
	this.Scripts = new Array();
	this.ScriptLibraries = new Array();
	this.StyleSheets = new Array();
	this.StreetAddress = "";
	this.AptNumber = "";
	this.City = "";
	this.ZipCode = "";
	this.RememberMyInformation = "0";
	this.PickerOptionCount = "";
	this.LocalizedBy = "";
}
Localize.prototype.addError = function (message) {
	if (message != "") {
		if (this.DisplayType == "PageView" && UseErrorControl()) {
			addError(message);
			this.clearErrors();
		}
		else {
			this.ErrorDiv.innerHTML = message;
			this.ErrorDiv.className = "errorSectionVisible";
		}
		TrackInteraction('{DCF58750-705D-478d-9B1C-451BCD67B8DC}'); //Validation Error
	}
	return;
}
Localize.prototype.addMoreInfoRequiredMessg = function (message) {
	if (message != "") {
		var moreInfoDivElement = $(this.MoreInfoDivId);
		if (moreInfoDivElement != null) {
			moreInfoDivElement.className = "errorSectionVisible aptRequiredMessage";
			moreInfoDivElement.innerHTML = message;
		}
	}
	return;
}
Localize.prototype.SetPermanentLocalizeCookie = function (isPermanentChk) {
	if (this.Id == undefined || this.Id == null || null == $(this.StreetElementId) || null == $(this.ZipCodeElementId))
		return;
	this.PermanentLocalization = "0";
	if (isPermanentChk.checked) {
		this.PermanentLocalization = "1";
	}
}
Localize.prototype.clearErrors = function () {
	this.ErrorDiv.innerHTML = "";
	this.ErrorDiv.className = "errorSection";
	return;
}
Localize.prototype.clearMoreInfoContent = function () {
	var moreInfoDivElement = $(this.MoreInfoDivId);
	if (moreInfoDivElement != null) {
		moreInfoDivElement.innerHTML = "";
		moreInfoDivElement.className = "errorSection";
	}
	return;
}
Localize.prototype.OnLocalize = function () {
	this.Localize.Execute(this);
	this.RedirectNext();
}
Localize.prototype.OnLocalizeFailed = function () {
	this.LocalizeFailed.Execute();
	this.RedirectNext();
}
Localize.prototype.RedirectNext = function () {
	if (this.RedirectUrl != "") {
		if (this.RedirectUrl.indexOf("http") == 0 || this.RedirectUrl.indexOf("/") == 0) {
			location.href = this.RedirectUrl;
		}
		else {
			this.ProgressBar.Hide();
			this.Mask.Hide();
		}
	}
}
function Auto(Id) {
	var c = eval(Id);
	if (null != c)
		c.OnSubmit();
}
Localize.prototype.OnValidate = function (localizationType) {
	if (this.Id == '' || this.Id == undefined)
		return;
	var ValidationStatus = true;
	if (this.DisplayType == 'PageView' && UseErrorControl()) {
		clearErrors();
	}
	else
		this.clearErrors();
	if (typeof (this.LocalizationType) != 'undefined' && this.LocalizationType != undefined && this.LocalizationType != null && this.LocalizationType == "BySSN") {
		this.StreetElement.className = this.InputClass;
		this.ZipCodeElement.className = this.InputClass;
		this.PhoneNumber1Element.className = this.InputClass;
		this.PhoneNumber2Element.className = this.InputClass;
		this.PhoneNumber3Element.className = this.InputClass;
		this.SSNElement.className = this.InputClass;
	}
	if (this.IsPasswordAndSSNMode || (localizationType != null && localizationType == "TnSsnSignIn")) {
		this.PhoneNumber1Element.className = this.InputClass;
		this.PhoneNumber2Element.className = this.InputClass;
		this.PhoneNumber3Element.className = this.InputClass;
		this.SSNElement.className = this.InputClass;
		var isPhoneNumberInvalid = !this.ValidateNumber3(this.PhoneNumber1Element) || !this.ValidateNumber3(this.PhoneNumber2Element) || !this.ValidateNumber4(this.PhoneNumber3Element);
		var isSSNInvalid = !this.ValidateNumber4(this.SSNElement);
		if (isPhoneNumberInvalid || isSSNInvalid) {
			ValidationStatus = false;
			this.addError(this.SSNErrorMessage);
			if (isPhoneNumberInvalid) {
				this.PhoneNumber1Element.className = this.ErrorInputClass;
				this.PhoneNumber2Element.className = this.ErrorInputClass;
				this.PhoneNumber3Element.className = this.ErrorInputClass;
				if (!this.PhoneNumber1Element.disabled)
					this.PhoneNumber1Element.focus();
			}
			if (isSSNInvalid) {
			    this.SSNElement.className = this.ErrorInputClass;
			    s.pageName = "Localization - Last 4 SSN/ TN -  Error Page"
			    s.t();
			}
		}
	}
	else {

		if (this.DisplayType == 'PageView' && UseErrorControl()) {
			clearErrors();
		}
		var StreetElement = $(this.StreetElementId);
		var ZipCodeElement = $(this.ZipCodeElementId);

		StreetElement.className = this.InputClass;
		ZipCodeElement.className = this.InputClass;
		var isInvalidstreetAddress = !this.ValidateStreetAddress(StreetElement);
		var isInvalidzipCode = !this.ValidateZipCode(ZipCodeElement);
		var isValidZipcodeFormat = !this.ValidateZipCodeFormat(ZipCodeElement);
		if (isInvalidstreetAddress) {
			ValidationStatus = false;
			StreetElement.className = this.ErrorInputClass;
			this.addError(this.ErrorMessage);
			if (!StreetElement.disabled)
				StreetElement.focus();
		}
		if (isInvalidzipCode || isValidZipcodeFormat) {
			if (this.DisplayType == 'PageView' && UseErrorControl()) {
				clearErrors();
			}
			ZipCodeElement.className = this.InputClass;
			ValidationStatus = false;
			ZipCodeElement.className = this.ErrorInputClass;

			if (isInvalidzipCode)
				this.addError(this.ErrorMessage);
			else if (isValidZipcodeFormat)
				this.addError(this.ZipCodeErrorMessage);

			if (!isInvalidstreetAddress && !ZipCodeElement.disabled)
				ZipCodeElement.focus();
		}
	}

	this.Validate.Execute();

	if (this.DisplayType == 'PageView' && UseErrorControl()) {
		if (ValidationStatus)
			HideError();
		else
		{
		    showErrorHeading();
            ShowError();
        }
	}
	return ValidationStatus;
}
Localize.prototype.ValidateStreetAddress = function (element) {
	var valid = true;
	var value = element.value.trim().RemoveSpaces();
	if (value == null || value == undefined || value == '' ||
        value.length == 0)
		valid = false;
	else if (value.trim().length < 3)
		valid = false;
	else if (value.trim().indexOf(' ') < 0)
		valid = false;
	else if (value.indexOf('%') > -1)
		valid = false;

	return valid;
}
Localize.prototype.ValidateZipCode = function (element) {
	var ValidationStatus = true;
	if (element.value == null || element.value.trim() == '') {
		ValidationStatus = false;
		//element.className = this.ErrorInputClass;
		this.addError(this.ZipCodeErrorMessage);
		if (!element.disabled)
			element.focus();
	}
	return ValidationStatus;
}
Localize.prototype.ValidateZipCodeFormat = function (element) {
	var zipRegExpression = /^\d{5}$/;
	var ValidationStatus = true;
	if (!element.value.match(zipRegExpression) || element.value == "00000") {
		ValidationStatus = false;
		//element.className = this.ErrorInputClass;
		if (!element.disabled)
			element.focus();
	}
	return ValidationStatus;
}
Localize.prototype.ValidateNumber3 = function (element) {
	var regExpression = /^\d{3}$/;
	var ValidationStatus = true;
	if (element.value == null || element.value.trim() == '') {
		ValidationStatus = false;
		//this.addError(this.ErrorMessage);
	}
	else if (!element.value.match(regExpression) || element.value == "000") {
		ValidationStatus = false;
		this.clearErrors();
		//this.addError(this.ZipCodeErrorMessage);
		if (!element.disabled)
			element.focus();
	}
	return ValidationStatus;
}
Localize.prototype.ValidateNumber4 = function (element) {
	var regExpression = /^\d{4}$/;
	var ValidationStatus = true;
	if (element.value == null || element.value.trim() == '') {
		ValidationStatus = false;
		//this.addError(this.ErrorMessage);
	}
	else if (!element.value.match(regExpression) || element.value == "0000") {
		ValidationStatus = false;
		this.clearErrors();
		//this.addError(this.ZipCodeErrorMessage);
		if (!element.disabled)
			element.focus();
	}
	return ValidationStatus;
}

function querySt(ji) {
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	for (i = 0; i < gy.length; i++) {
		ft = gy[i].split("=");
		if (ft[0].toLowerCase() == ji.toLowerCase()) {
			return ft[1];
		}
	}
}
function CIMATrackInteraction(signinTrackingId) {
    TrackInteraction(signinTrackingId);
    //Set omniture values
    SetLocalizeOmniture("event57");
    s.prop6 = "username/password";
    s.t();
}
function SetLocalizeOmniture(event) {
    s.events = event;
}
Localize.prototype.OnSubmit = function (localizationType) {
    var aptElement = $(this.AptElementId);
    if (aptElement != null && aptElement != "undefined") {
        if (this.MDU == "Yes" && aptElement.value == "") {
            // if the MDU value is Y and the apartment value is empty
            // the user needs to fill the apartment, so return false
            // for user to make any changes
            aptElement.className = "inputText ErrorInput";
            aptElement.focus();
            return false;
        }
        else {
            aptElement.className = "inputText";
        }
    }
    if (!this.OnValidate(localizationType))
        return false;
    this.DisableFields(true);
    var localizeControl = eval(this.Id);
    this.Mask.Show();
    this.ProgressBar.Show();

    this.TrackLocalizationAttempt();

    try {
        var request = new LocalizationRequest();
        var action = new RemoteMethod('Localize', 'LocalizeByAddress', request);
        if (localizeControl.IsPasswordAndSSNMode || (localizationType != null && localizationType == "TnSsnSignIn")) {
            request.SSN = localizeControl.SSNElement.value;
            request.PhoneNumber = localizeControl.PhoneNumber1Element.value + localizeControl.PhoneNumber2Element.value + localizeControl.PhoneNumber3Element.value;
            this.SessionSSNAttemptCount = this.SessionSSNAttemptCount + 1;
            request.SessionAttemptCount = this.SessionSSNAttemptCount;
            request.Referer = querySt("referer");
            var action = new RemoteMethod('Localize', 'LocalizeBySSNAndPhone', request);
        }
        else {
            request.IsMDU = this.MDU;
            request.StreetAddress = $(this.StreetElementId).value;
            request.Apt = $(this.AptElementId).value;
            request.Zip = $(this.ZipCodeElementId).value;
            if (request.Apt == "null" || request.Apt == "") request.Apt = '';
        }


        request.Id = this.Id;
        var controlId = this.Id;
        if (this.PermanentLocalization == "1")
            request.RememberMyInformation = "1";
        request.LocalizationFromCustomerArea = localizeControl.GetCustomerArea();

        action.LocalAction = function (args) {
            Localize.LocalizeComplete(args, controlId, localizationType);
        }
        action.Invoke();
    }
    catch (e) { }
    this.Submit.Execute();
    return false;
}
Localize.LocalizeComplete = function (response, Id, localizationType) {
    if (response != null) {
        var control = eval(Id);
        if (control.IsPasswordAndSSNMode) {
            control.PhoneNumber1Element.className = control.InputClass;
            control.PhoneNumber2Element.className = control.InputClass;
            control.PhoneNumber3Element.className = control.InputClass;
            control.SSNElement.className = control.InputClass;
        }
        else {
            var aptElement = $(control.AptElementId);
            aptElement.className = control.InputClass;
        }

        control.clearErrors();
        control.clearMoreInfoContent();

        if (response.ResponseTypeString != null || response.ResponseTypeString != "") {
            if (response.ResponseTypeString != control.LocalizeResponseType.localized && response.ResponseTypeString != control.LocalizeResponseType.RedirectToAuthentication) {
                control.ProgressBar.Hide();
                control.Mask.Hide();
            }

            switch (response.ResponseTypeString) {
                case control.LocalizeResponseType.localized:
                    {
                        control.TrackOnSuccess(response.LocalizedBy);
                        control.StreetAddress = response.StreetAddress;
                        control.AptNumber = response.AptNumber;
                        control.City = response.City;
                        control.ZipCode = response.ZipCode;
                        if (control.RefererUrl != undefined && control.RefererUrl != "")
                            control.RedirectUrl = control.RefererUrl;
                        else if (response.RedirectUrl != "")
                            control.RedirectUrl = response.RedirectUrl;
                        control.OnLocalize();
                    }
                    break;
                case control.LocalizeResponseType.multiplefranchisesfound:
                    control.ShowPicker(response);
                    control.TrackOnPicker(control.LocalizeFranchisePickerPageName, control.FranchisePickerType);
                    control.PreviousLocalizetype = control.LocalizeResponseType.multiplefranchisesfound;
                    pickerOptionCount = response.PickerOptionCount;
                    break;
                case control.LocalizeResponseType.multiplelocationsfound:
                    control.ShowPicker(response);
                    control.TrackOnPicker(control.LocalizeLocationPickerPageName, control.LocationPickerType);
                    control.PreviousLocalizetype = control.LocalizeResponseType.multiplelocationsfound;
                    pickerOptionCount = response.PickerOptionCount;
                    break;
                case control.LocalizeResponseType.multiplemarketsfound:
                    control.ShowPicker(response);
                    control.TrackOnPicker(control.LocalizeMarketPickerPageName, control.MarketPickerType);
                    control.PreviousLocalizetype = control.LocalizeResponseType.multiplemarketsfound;
                    pickerOptionCount = response.PickerOptionCount;
                    break;
                case control.LocalizeResponseType.notlocalized:
                    control.TrackOnFailure();
                    control.addError(response.ErrorMessage);
                    if (control.DisplayType == 'PageView' && UseErrorControl()) {
                        HideError();
                        if (typeof (localizationType) == undefined || localizationType == null)
                            hideErrorHeading();
                        else
                            showErrorHeading();
                        ShowError();
                    }
                    control.DisableFields(false);

                    if ((control.IsPasswordAndSSNMode) || (localizationType != null && localizationType == "TnSsnSignIn")) {
                        control.PhoneNumber1Element.className = control.ErrorInputClass;
                        control.PhoneNumber2Element.className = control.ErrorInputClass;
                        control.PhoneNumber3Element.className = control.ErrorInputClass;
                        control.SSNElement.className = control.ErrorInputClass;
                        control.PhoneNumber1Element.select();
                    }
                    else {
                        control.StreetElement.select();
                    }
                    control.RedirectUrl = "";
                    control.LocalizedResponse = control.LocalizeResponseType.notlocalized;
                    control.OnLocalizeFailed();
                    if (control.SessionSSNAttemptCount >= control.InvalidPhoneSSNAttemptAllowed)
                        MultipleLoginFailedOverlay();
                    break;
                case control.LocalizeResponseType.notserviceable:
                    control.RedirectUrl = response.RedirectUrl;
                    control.LocalizedResponse = control.LocalizeResponseType.notserviceable;
                    control.OnLocalizeFailed();
                    break;
                case control.LocalizeResponseType.badhousedebt:
                    if (control.RefererUrl != undefined && control.RefererUrl != "")
                        control.RedirectUrl = control.RefererUrl;
                    else if (response.RedirectUrl != "")
                        control.RedirectUrl = response.RedirectUrl;
                    control.OnLocalize();
                    break;
                case control.LocalizeResponseType.Commercial:
                    if (control.RefererUrl != undefined && control.RefererUrl != "")
                        control.RedirectUrl = control.RefererUrl;
                    else if (response.RedirectUrl != "")
                        control.RedirectUrl = response.RedirectUrl;
                    control.OnLocalize();
                    break;
                case control.LocalizeResponseType.BulkAccount:
                    if (control.RefererUrl != undefined && control.RefererUrl != "")
                        control.RedirectUrl = control.RefererUrl;
                    else if (response.RedirectUrl != "")
                        control.RedirectUrl = response.RedirectUrl;
                    control.OnLocalize();
                    break;
                case control.LocalizeResponseType.ApartmentRequired:
                    control.DisableFields(false);
                    var localizationType = control.LocalizationType;
                    if (localizationType != undefined) {
                        if (localizationType.toLowerCase() == "byaddress") {
                            if ($("localizationContent") != null && $("localizationContent") != "undefined")
                                $("localizationContent").style.display = "block";
                        }
                        else {
                            if ($("localizationContent") != null && $("localizationContent") != "undefined")
                                $("localizationContent").style.display = "none";
                        }
                    }
                    control.UpdateMDUMessage(control.MDUMissingAptTitle, control.MDUMissingAptMessage);
                    aptElement.className = "inputText ErrorInput";
                    aptElement.focus();
                    break;
                case control.LocalizeResponseType.RedirectToAuthentication:
                    if (response.RedirectUrl != "undefined" && response.RedirectUrl != "") {
                        //Set omniture values
                        SetLocalizeOmniture("event58");
                        s.prop6 = "phone/last 4";
                        s.t()
                        location.href = response.RedirectUrl;
                        location.href = response.RedirectUrl;
                    }
                    break;
            }
        }
    }
}
function MultipleLoginFailedOverlay() {
    overlayLC.HideAllOverlaysLC();
    OverlayMask.Show();
    overlayLC.ShowSSNTNAuthenticate();
}
Localize.prototype.DisableFields = function (disable) {
	var container = this.LocalizeMainDiv;
	if (container != null) {
		var fields = container.getElementsByTagName("input");
		for (var i = 0; i < fields.length; i++)
			fields[i].disabled = disable;
	}
}

Localize.prototype.ShowPicker = function (response) {
	if (response != null && response.HTML != '')
		EmbedHtml(response);
}

Localize.prototype.ShowOverlay = function (response) {
	if (response != null && response.HTML != '')
		EmbedHtml(response);
}
function closeOverlay() {

	if (typeof (marketPicker) != 'undefined') {
		marketPicker.OnHide(true)
	}
	if (typeof (locationPicker) != 'undefined') {
		locationPicker.OnHide(true)
	}
}

Localize.prototype.AddHandlers = function (picker) {
	var id = this.Id;
	this.Overlay = picker;

	if (!(picker == undefined || picker == null)) {
		if (!(picker.Confirm == undefined || picker.Confirm == null)) {
			picker.Confirm.AddHandler(function () { Localize.GetPickerSelection(id); });
		}
		if (!(picker.Validate == undefined || picker.Validate == null)) {
			picker.Validate.AddHandler(function () { Localize.ValidatePicker(id); });
		}
		if (!(picker.Cancel == undefined || picker.Cancel == null)) {
			picker.Cancel.AddHandler(function () { Localize.PickerCancel(picker, id, true); });
		}
		if (!(GetOverallBase(picker) == undefined || GetOverallBase(picker) == null)) {
			GetOverallBase(picker).Hide.AddHandler(function () { Localize.PickerCancel(picker, id, false); });
		}
	}
}
Localize.PickerCancel = function (picker, id, userAction) {
	var ctl = eval(id);
	if (userAction) {
		if (GetOverallBase(picker).Id == "locationPicker") {
			TrackInteraction('{DB63C588-B8D3-4b57-86B5-BD31E3818EFD}');
		}
		else if (GetOverallBase(picker).Id == "marketPicker") {
			TrackInteraction('{41051E38-73BB-4626-84F2-7926A60EDE55}');
		}
		else if (GetOverallBase(picker).Id == "franchisePicker") {
			TrackInteraction('{A23391C4-A9CE-4908-B5F3-98E53C1734E0}');
		}
	}
	GetOverallBase(picker).RemoveFromDOM();
	ctl.DisableFields(false);
	ctl.StreetElement.select();
}
Localize.ValidatePicker = function (Id) {
	var validationStatus = true;
	var localizeControl = eval(Id);
	var picker = eval(localizeControl.Overlay);
	if (picker.ReturnValue == "" && picker.PickerErrMsg != null) {
		picker.ShowValidationMessage();
		validationStatus = false;
	}
	return validationStatus;
}
Localize.GetPickerSelection = function (Id) {
	var localizeControl = eval(Id);
	var picker = eval(localizeControl.Overlay);
	if (localizeControl.PreviousLocalizetype == localizeControl.LocalizeResponseType.multiplelocationsfound) {
		localizeControl.LocationId = picker.ReturnValue;
	}
	else if (localizeControl.PreviousLocalizetype == localizeControl.LocalizeResponseType.multiplemarketsfound) {
		localizeControl.MarketId = picker.ReturnValue;
	}
	else if (localizeControl.PreviousLocalizetype == localizeControl.LocalizeResponseType.multiplefranchisesfound) {
		localizeControl.FranchiseMapId = picker.ReturnValue;
	}
	localizeControl.LocalizeByFullAddress();
	GetOverallBase(picker).RemoveFromDOM();
}
Localize.prototype.LocalizeByFullAddress = function () {
    var localizeControl = eval(this.Id);
    var request = new LocalizationRequest();
    var action;
    request.StreetAddress = $(this.StreetElementId).value.trim();
    request.Apt = $(this.AptElementId).value.trim();
    request.Zip = $(this.ZipCodeElementId).value.trim();
    request.LocalizationFromCustomerArea = localizeControl.GetCustomerArea();
    if (request.Apt == "null" || request.Apt == "") request.Apt = '';
    this.Mask.Show();
    this.ProgressBar.Show();
    try {

        var controlId = this.Id;
        if (this.PreviousLocalizetype == this.LocalizeResponseType.multiplelocationsfound) {
            action = new RemoteMethod('Localize', 'LocalizeByLocationId', request);
            request.LocationId = this.LocationId;
        }
        else if (this.PreviousLocalizetype == this.LocalizeResponseType.multiplemarketsfound) {
            action = new RemoteMethod('Localize', 'LocalizeByMarketId', request);
            request.MarketId = this.MarketId;
        }
        else if (this.PreviousLocalizetype == this.LocalizeResponseType.multiplefranchisesfound) {
            action = new RemoteMethod('Localize', 'LocalizeByFranchiseMapId', request);
            request.FranchiseMapId = this.FranchiseMapId;
        }

        if (this.PermanentLocalization == "1")
            request.RememberMyInformation = "1";
        action.LocalAction = function (args) {
            var localizationType = ""; //Passing localizationType in LocalizaComplete for TnSsnSignIn in Onsubmit for QC defect : 5538
            Localize.LocalizeComplete(args, controlId, localizationType);
        }
        action.Invoke();
    }
    catch (e) { }
}

Localize.prototype.InitializeFormView = function () {
	if (!$(this.StreetElementId).disabled)
		$(this.StreetElementId).focus();
	$(this.StreetElementId).value = "";
	$(this.AptElementId).value = "";
	$(this.ZipCodeElementId).value = "";
}
Localize.prototype.ResetLocMod = function () {
	if ((this.LocModMessageDiv != null || this.LocModMessageDiv != undefined) && (!$(this.StreetElementId).disabled))
		this.LocModMessageDiv.style.display = 'none';
	if ((this.LocModFormDiv != null || this.LocModFormDiv != undefined) && (!$(this.StreetElementId).disabled)) {
		this.LocModFormDiv.style.display = 'block';
		this.InitializeFormView();
	}
}
Localize.prototype.SetDefaultButton = function (e, View) {
    if (!e)
        e = window.event;
    if (e.keyCode == 13 && View == '') {
        this.OnSubmit();
    }
    else if (e.keyCode == 13 && View != '')
        this.OnSubmit(View);

    // set the MDU value to UnIdentified if any changes are made to the 
    // streetaddress and the zipcode field
    if (e.keyCode != 13) {
        if ($(this.StreetElementId).value != '' || $(this.ZipCodeElementId).value != '') {
            this.MDU = "UnIdentified";
            this.UpdateMDUMessage(this.NewCustomerMDUTitle, this.NewCustomerMDUMessage);
            $(GetElementClientID("input", "_aptNumberTxt")).className = "inputText";
        }
    }
}

function ChangeToCurrentCustomerLayout() {
	var newCustomerAreaId = $('newCustomerArea');
	var currentCustomerContentObj = $('currentCustomerArea');
	var addressCompleteDropdown = $('addresscomplete');
	var addressCompleteContainer = $('addressCompleteContainer');
	var streetElement = GetElementClientID("input", "_streetNameTxt");


	if (currentCustomerContentObj.innerHTML.indexOf("customerInfoFields") == -1) {
		if (addressCompleteDropdown != null) {
			addressCompleteDropdown.style.display = "none";
		}
		if (addressCompleteContainer != null) {
			addressCompleteContainer.className = "rtlAddressCoompleteContainer";
			$("main").style.width = "966px";
		}
		GetElementByClassName("newCustomerContentColContainer", "div", "customerHeader").style.display = "block";
		GetElementByClassName("newCustomerContentColContainer", "div", "customerDescription").style.display = "block";
		$("localizationContent").style.display = "block";

		currentCustomerContentObj.innerHTML = newCustomerAreaId.innerHTML;
		newCustomerAreaId.innerHTML = "";
	}
	currentCustomerContentObj.style.display = 'block';
	newCustomerAreaId.style.display = 'block';
	if (typeof (AddressCompletion) != 'undefined') {
		var localizeAddressCompletion = new AddressCompletion(streetElement, '/', '0');
	}
	var newCustomerAddressContainerId = $('newCustomerAddressContainer');
	if (newCustomerAddressContainerId.innerHTML.indexOf("javascript:void(0)") == -1)
		newCustomerAddressContainerId.innerHTML = "<a href='javascript:void(0)' id='newCustomerAddressAnchor' onclick='ChangeToNewCustomerLayout();'>" + newCustomerAddressContainerId.innerHTML + "</a>";
	var currentCustomerAddressContainerId = $('currentCustomerAddressContainer');
	currentCustomerAddressContainerId.innerHTML = $('currentCustomerAddressAnchor').innerHTML;
	ClearLocalizationFields();
	$(GetElementClientID("input", "_aptNumberTxt")).className = "inputText";
	var moreInfoDivElement = $("moreInfoContentContainer");
	if (moreInfoDivElement != null) {
		moreInfoDivElement.parentNode.className = "errorSection";
		moreInfoDivElement.parentNode.innerHTML = "";
	}

	$(streetElement).focus();
}

function ChangeToNewCustomerLayout() {
	var currentCustomerAreaId = $('currentCustomerArea');
	var newCustomerAreaId = $('newCustomerArea');
	var localizeAddressCompletion;
	var streetElement = GetElementClientID("input", "_streetNameTxt");

	if (newCustomerAreaId.innerHTML.indexOf("customerInfoFields") == -1) {
		newCustomerAreaId.innerHTML = currentCustomerAreaId.innerHTML;
		currentCustomerAreaId.innerHTML = "";
	}
	newCustomerAreaId.style.display = 'block';
	if (typeof (AddressCompletion) != 'undefined') {
		var localizeAddressCompletion = new AddressCompletion(streetElement, '/', '0');
	}
	var currentCustomerAddressContainerId = $('currentCustomerAddressContainer');
	if (currentCustomerAddressContainerId.innerHTML.indexOf("javascript:void(0)") == -1)
		currentCustomerAddressContainerId.innerHTML = "<a href='javascript:void(0)' id='currentCustomerAddressAnchor' onclick='ChangeToCurrentCustomerLayout();'>" + currentCustomerAddressContainerId.innerHTML + "</a>";

	var newCustomerAddressContainerId = $('newCustomerAddressContainer');
	newCustomerAddressContainerId.innerHTML = $('newCustomerAddressAnchor').innerHTML;

	var addressCompleteContainer = $('addressCompleteContainer');

	if (addressCompleteContainer != null) {
		addressCompleteContainer.className = "addressCompleteContainer";
		$("main").style.width = "966px";
	}

	if (typeof (addressCompleteDropdown) != 'undefined') {
		addressCompleteDropdown.style.display = "none";
	}
	ClearLocalizationFields();
	$(GetElementClientID("input", "_aptNumberTxt")).className = "inputText";
	var moreInfoDivElement = $("moreInfoContentContainer");
	if (moreInfoDivElement != null) {
		moreInfoDivElement.parentNode.className = "errorSection";
		moreInfoDivElement.parentNode.innerHTML = "";
	}
	GetElementByClassName("currentCustomerContentColContainer", "div", "customerHeader").style.display = "block";
	GetElementByClassName("currentCustomerContentColContainer", "div", "customerDescription").style.display = "block";
	$("localizationContent").style.display = "block";
	$(streetElement).focus();
}

Localize.prototype.OnCancel = function () {
	var newCustomerAreaId = $('newCustomerArea');
	var currentCustomerAreaId = $('currentCustomerArea');
	var StreetElement = $(this.StreetElementId);
	var ZipCodeElement = $(this.ZipCodeElementId);
	StreetElement.className = this.InputClass;
	ZipCodeElement.className = this.InputClass;
	this.clearErrors();
	if (newCustomerAreaId.innerHTML.indexOf("customerInfoFields") > 0) {
		ChangeToCurrentCustomerLayout();
	}
	else if (currentCustomerAreaId.innerHTML.indexOf("customerInfoFields") > 0) {
		ChangeToNewCustomerLayout();
	}
	return false;
}

Localize.prototype.GetCustomerArea = function () {
	var returnValue = "0";
	var newCustomerAreaId = $('newCustomerArea');
	var currentCustomerAreaId = $('currentCustomerArea');
	if (newCustomerAreaId != undefined && newCustomerAreaId != null && newCustomerAreaId.innerHTML.indexOf("customerInfoFields") > 0)
		returnValue = "1";
	else if (currentCustomerAreaId != undefined && currentCustomerAreaId != null && currentCustomerAreaId.innerHTML.indexOf("customerInfoFields") > 0)
		returnValue = "2";
	return returnValue;
}

Localize.prototype.SetOmnitureVariables = function () {
	s.prop17 = "Comcast - Home";
	if (this.ShopSource != "")
		s.prop24 = this.ShopSource;
	s.prop31 = "com";
	//s.eVar32 = "localization";
	s.prop32 = "shop";
	//s.eVar33 = s.prop33 = "comcast.com";
	//s.eVar34 = s.prop34 = "localize";
	s.prop34 = "localize";
	//s.eVar35 = s.prop35 = "localization-home";
	s.prop35 = "localization-home";
	//s.eVar36 = s.prop36 = "localization";
	s.prop36 = "localization";
	//s.prop37 = "com";
	//s.eVar50 = s.prop50 = this.VisitorId;
	s.prop50 = this.VisitorId;

	//Track Localization recipe
	if (this.IsShopBuyflow == "True") {
		if (this.SegmentationMode == "TargusA") {
			s.prop26 = "localization_recipeB";
		} else if (this.SegmentationMode == "TargusB") {
			s.prop26 = "localization_recipeC";
		} else if (this.SegmentationMode == "Default") {
			s.prop26 = "localization_recipeA"
		}
	}

}

Localize.prototype.TrackOnLoad = function () {
	TrackInteraction('{81F4D15A-B4AE-4005-BF54-57C7EB3E52C2}');
	s.pageName = this.LocalizePageName;
	s.events = "event11";
	s.prop11 = "start";
	this.SetOmnitureVariables();
	s.t();
}

Localize.prototype.TrackLocalizationAttempt = function () {
	var linkVars = s.linkTrackVars;
	s.linkTrackVars = linkVars + ",eVar6,eVar19";
	s.eVar6 = "+1";
	s.eVar19 = "+1";
	// Passing dummy anchor object instead of the localization submit button object
	// as the custom localization submit object is causing javascript errors in omniture code
	s.tl($('dummyAnchorLocalizationSubmit'), 'o', 'localization attempt');
	s.linkTrackVars = linkVars;
	s.eVar6 = "";
	s.eVar19 = "";
}

var pickerOptionCount = "";

Localize.prototype.TrackOnSuccess = function (LocalizedBy) {
	s.pageName = this.LocalizeSuccessPageName;
	s.events = "event1";
	//Localized by Address
	if (LocalizedBy == "0")
		s.prop11 = "success";
	//Localized by Market Picker
	else if (LocalizedBy == "1")
		s.prop11 = "success-mp:" + pickerOptionCount;
	//Localized by Location Picker
	else if (LocalizedBy == "2")
		s.prop11 = "success-lp:" + pickerOptionCount;
	//Localized by Franchise Picker
	else if (LocalizedBy == "3")
		s.prop11 = "success-fp:" + pickerOptionCount;

	s.t();
}

Localize.prototype.TrackOnFailure = function () {
    if (this.SessionSSNAttemptCount > 0) {
        if (this.SessionSSNAttemptCount >= this.InvalidPhoneSSNAttemptAllowed) {
            s.events = "event59";
            s.pageName = "Localize: TN-SSN: Validation Failed - Maximum Attempts Reached";
        }
        else {
            s.pageName = "Localize: TN-SSN: Validation Failed";
        }
        s.evar37 = s.pageName;
    }
    else {
        if ($(this.StreetElementId) != null && $(this.ZipCodeElementId) != null) {
            s.prop11 = "fail-add:" + $(this.StreetElementId).value + "-zip:" + $(this.ZipCodeElementId).value;
        }
    }
    s.t();
}

Localize.prototype.TrackOnPicker = function (PickerPageName, PickerType) {
	s.pageName = PickerPageName;
    s.eVar37 = s.pageName;
	//s.prop35 = s.eVar35 = PickerType;
	s.prop35 = PickerType;

	if (PickerType == this.LocationPickerType)
		s.prop11 = "lp-start";
	else if (PickerType == this.MarketPickerType)
		s.prop11 = "mp-start";
	else if (PickerType == this.FranchisePickerType)
		s.prop11 = "fp-start";

	s.events = "event11";
	s.prop31 = "com";
	//s.prop32 = s.eVar32 = "shop";
	s.prop32 = "shop";
	//s.prop33 = s.eVar33 = "comcast.com";
	//s.prop34 = s.eVar34 = "localization";
	s.prop34 = "localization";
	//s.prop36 = s.eVar36 = "localization";
	s.prop36 = "localization";
	//s.prop37 = "com";
	s.t();
}
Localize.prototype.Redirect = function () {
	var controlId = this.Id;
	var control = eval(controlId);

	if (control.StreetElement != null && control.StreetElement.value != "")
		control.StreetAddress = control.StreetElement.value.trim();
	else {
		var streetAddress = GetCookie("Serviceability", "StreetAddress");
		if (streetAddress != "")
			control.StreetAddress = streetAddress.trim().replaceAll("+", " ");
	}
	if (control.AptElement != null && control.AptElement.value != "")
		control.AptNumber = control.AptElement.value.trim();
	else {
		var AptNumber = GetCookie("Serviceability", "AptNumber");
		if (AptNumber != "")
			control.AptNumber = AptNumber.trim();
	}
	if (control.ZipCodeElement != null && control.ZipCodeElement.value != "")
		control.ZipCode = control.ZipCodeElement.value.trim();
	else {
		var ZipCode = GetCookie("Serviceability", "Zip");
		if (ZipCode != "")
			control.ZipCode = ZipCode.trim();
	}

	control.OnLocalize();
}
Localize.prototype.AutoLocalizeAddressComplete = function (Id, AutoCompleteAddress, Mdu) {
    var StreetElement = $(this.StreetElementId);
    var ZipCodeElement = $(this.ZipCodeElementId);
    var Apartment = $(this.AptElementId);
    var autoCompleteAddressResultStr = AutoCompleteAddress.split(",");
    this.MDU = Mdu;

    if (this.MDU == "Yes" && Apartment.value == "") {
        // if the MDUIndicator is Yes
        // check again for the street and zipcode text
        if (StreetElement == "" || ZipCodeElement == "") {
            // either streetelement is empty do not clear errors
            // do nothing
        }
        else {
            if (this.DisplayType == 'PageView' && UseErrorControl()) {
                clearErrors();
                HideError();
            }
            else
                this.clearErrors();

            if (StreetElement != "")
                $(GetElementClientID("input", "_streetNameTxt")).className = "inputText";
            if (ZipCodeElement != "")
                $(GetElementClientID("input", "_zipCodeTxt")).className = "inputText";
        }
        // set the focus on Apartment TextBox
        SetFocusOnAptAndFillAddress(AutoCompleteAddress);
        this.UpdateMDUMessage(this.MDUMissingAptTitle, this.MDUMissingAptMessage);
    }
    else {
        if (autoCompleteAddressResultStr.length > 0) {
            StreetElement.value = autoCompleteAddressResultStr[0];
            ZipCodeElement.value = autoCompleteAddressResultStr[2].substring(autoCompleteAddressResultStr[2].length - 5);
            Auto(Id);
        }
    }
}

function SetFocusOnAptAndFillAddress(CompleteAddress) {
    // highlight the apartment control
    $(GetElementClientID("input", "_aptNumberTxt")).focus();
    $(GetElementClientID("input", "_aptNumberTxt")).className = "inputText ErrorInput";
    var autoCompleteAddressResultStr = CompleteAddress.split(",");
    $(GetElementClientID("input", "_streetNameTxt")).value = autoCompleteAddressResultStr[0];
    $(GetElementClientID("input", "_zipCodeTxt")).value = autoCompleteAddressResultStr[2].substring(autoCompleteAddressResultStr[2].length - 5);
}

Localize.prototype.UpdateMDUMessage = function (title, message) {
    var newCustomerHeaderObj = $(this.NewCustomerHeaderClientID);
    var newCustomerDescriptionObj = $(this.NewCustomerDescriptionClientID);
    if (newCustomerHeaderObj != null && newCustomerHeaderObj != "undefined") {
        newCustomerHeaderObj.className = "customerHeader";
        newCustomerHeaderObj.innerHTML = title;
    }
    if (newCustomerDescriptionObj != null && newCustomerDescriptionObj != "undefined") {
        newCustomerHeaderObj.className = "customerDescription newCustomerDescription";
        newCustomerDescriptionObj.innerHTML = message;
    }
}

function GetElementClientID(ElementName, InputStr) {
	var allElements = document.getElementsByTagName(ElementName);
	var elementClientID;

	for (var i = 0, il = allElements.length; i < il; i++) {
		elm = allElements[i];
		if (elm.id.indexOf(InputStr) != -1) {
			elementClientID = elm.id;
			break;
		}
	}
	return elementClientID;
}

function ClearLocalizationFields() {
	var fields = document.getElementsByTagName("input");
	for (var i = 0; i < fields.length; i++) {
		if (fields[i].className == "inputText") {
			fields[i].value = "";
		}

	}
}

function GetElementByClassName(TargetContainer, ElementName, ClassName) {
	var container = $(TargetContainer);
	var element;
	if (container != null) {
		var fields = container.getElementsByTagName(ElementName);
		for (var i = 0; i < fields.length; i++) {
			if (fields[i].className == ClassName) {
				element = fields[i];
				break;
			}
		}
	}
	return element;
}
function UseErrorControl() {
	retVal = false;
	if (typeof (errorDisplayId) != 'undefined' && errorDisplayId != null && $(errorDisplayId.ClientId) != null) {
		retVal = true;
	}
	return retVal;
}

