var Hashtable=function(){function a(t){var r;if(typeof t=="string")return t;else if(typeof t.hashCode==p){r=t.hashCode();return typeof r=="string"?r:a(r)}else if(typeof t.toString==p)return t.toString();else try{return String(t)}catch(s){return Object.prototype.toString.call(t)}}function g(r,s){return r.equals(s)}function e(r,s){return typeof s.equals==p?s.equals(r):r===s}function c(r){return function(s){if(s===null)throw new Error("null is not a valid "+r);else if(typeof s=="undefined")throw new Error(r+
" must not be undefined");}}function d(u,s,t,r){this[0]=u;this.entries=[];this.addEntry(s,t);if(r!==null)this.getEqualityFunction=function(){return r}}function o(r){return function(t){var s=this.entries.length;var v;for(var u=this.getEqualityFunction(t);s--;){v=this.entries[s];if(u(t,v[0]))switch(r){case h:return true;case j:return v;case f:return[s,v[1]]}}return false}}function k(r){return function(u){var v=u.length;var t=0;for(var s=this.entries.length;t<s;++t)u[v+t]=this.entries[t][r]}}function m(s,
t){var r=s.length;for(var u;r--;){u=s[r];if(t===u[0])return r}return null}function i(r,s){var t=r[s];return t&&t instanceof d?t:null}function b(t,r){var w=this;var v=[];var u={};var x=typeof t==p?t:a;var s=typeof r==p?r:null;this.put=function(B,C){q(B);l(C);var D=x(B);var E;var A;var z=null;E=i(u,D);if(E){A=E.getEntryForKey(B);if(A){z=A[1];A[1]=C}else E.addEntry(B,C)}else{E=new d(D,B,C,s);v[v.length]=E;u[D]=E}return z};this.get=function(A){q(A);var B=x(A);var C=i(u,B);if(C){var z=C.getEntryForKey(A);
if(z)return z[1]}return null};this.containsKey=function(A){q(A);var z=x(A);var B=i(u,z);return B?B.containsKey(A):false};this.containsValue=function(A){l(A);for(var z=v.length;z--;)if(v[z].containsValue(A))return true;return false};this.clear=function(){v.length=0;u={}};this.isEmpty=function(){return!v.length};var y=function(z){return function(){var A=[];for(var B=v.length;B--;)v[B][z](A);return A}};this.keys=y("keys");this.values=y("values");this.entries=y("getEntries");this.remove=function(B){q(B);
var C=x(B);var z;var A=null;var D=i(u,C);if(D){A=D.removeEntryForKey(B);if(A!==null)if(!D.entries.length){z=m(v,C);n(v,z);delete u[C]}}return A};this.size=function(){var A=0;for(var z=v.length;z--;)A+=v[z].entries.length;return A};this.each=function(C){var z=w.entries();var A=z.length;for(var B;A--;){B=z[A];C(B[0],B[1])}};this.putAll=function(H,C){var B=H.entries();var E;var F;var D;var z;var A=B.length;for(var G=typeof C==p;A--;){E=B[A];F=E[0];D=E[1];if(G&&(z=w.get(F)))D=C(F,z,D);w.put(F,D)}};this.clone=
function(){var z=new b(t,r);z.putAll(w);return z}}var p="function";var n=typeof Array.prototype.splice==p?function(s,r){s.splice(r,1)}:function(u,t){var s;var v;var r;if(t===u.length-1)u.length=t;else{s=u.slice(t+1);u.length=t;for(v=0,r=s.length;v<r;++v)u[t+v]=s[v]}};var q=c("key");var l=c("value");var h=0;var j=1;var f=2;d.prototype={getEqualityFunction:function(r){return typeof r.equals==p?g:e},getEntryForKey:o(j),getEntryAndIndexForKey:o(f),removeEntryForKey:function(s){var r=this.getEntryAndIndexForKey(s);
if(r){n(this.entries,r[0]);return r[1]}return null},addEntry:function(r,s){this.entries[this.entries.length]=[r,s]},keys:k(0),values:k(1),getEntries:function(s){var u=s.length;var t=0;for(var r=this.entries.length;t<r;++t)s[u+t]=this.entries[t].slice(0)},containsKey:o(h),containsValue:function(s){for(var r=this.entries.length;r--;)if(s===this.entries[r][1])return true;return false}};return b}();
(function(jQuery){function FormatData(dec,group,neg){this.dec=dec;this.group=group;this.neg=neg}function init(){for(var localeGroupIdx=0;localeGroupIdx<nfAllLocales.length;localeGroupIdx++){localeGroup=nfAllLocales[localeGroupIdx];for(var i=0;i<localeGroup.length;i++)nfLocales.put(localeGroup[i],localeGroupIdx)}}function formatCodes(locale,isFullLocale){if(nfLocales.size()==0)init();var dec=".";var group=",";var neg="-";if(isFullLocale==false)if(locale.indexOf("_")!=-1)locale=locale.split("_")[1].toLowerCase();
else if(locale.indexOf("-")!=-1)locale=locale.split("-")[1].toLowerCase();var codesIndex=nfLocales.get(locale);if(codesIndex){var codes=nfLocaleFormatting[codesIndex];if(codes){dec=codes[0];group=codes[1]}}return new FormatData(dec,group,neg)}var nfLocales=new Hashtable;var nfLocalesLikeUS=["au","nz","ca","cn","gb","hk","il","sg","jp","ko","us","mx","pa","pr","gt","cr","tw","th","my","ph","pl","id","vn","ie","in"];var nfLocalesLikeDE=["de","es","co","cl","ec","ve","ar","py","pe","it","tr","br"];var nfLocalesLikeFR=
["fr","ru","za"];var nfLocalesLikeCH=["ch"];var nfLocaleFormatting=[[".",","],[",","."],[","," "],[".","'"]];var nfAllLocales=[nfLocalesLikeUS,nfLocalesLikeDE,nfLocalesLikeFR,nfLocalesLikeCH];jQuery.fn.formatNumber=function(options,writeBack,giveReturnValue){return this.each(function(){if(writeBack==null)writeBack=true;if(giveReturnValue==null)giveReturnValue=true;var text;if(jQuery(this).is(":input"))text=new String(jQuery(this).val());else text=new String(jQuery(this).text());var returnString=jQuery.formatNumber(text,
options);if(writeBack)if(jQuery(this).is(":input"))jQuery(this).val(returnString);else jQuery(this).text(returnString);if(giveReturnValue)return returnString})};jQuery.formatNumber=function(numberString,options){options=jQuery.extend({},jQuery.fn.formatNumber.defaults,options);var formatData=formatCodes(options.locale.toLowerCase(),options.isFullLocale);var dec=formatData.dec;var group=formatData.group;var neg=formatData.neg;var validFormat="0#-,.";var prefix="";var negativeInFront=false;for(var i=
0;i<options.format.length;i++)if(validFormat.indexOf(options.format.charAt(i))==-1)prefix=prefix+options.format.charAt(i);else if(i==0&&options.format.charAt(i)=="-"){negativeInFront=true;continue}else break;var suffix="";for(i=options.format.length-1;i>=0;i--)if(validFormat.indexOf(options.format.charAt(i))==-1)suffix=options.format.charAt(i)+suffix;else break;options.format=options.format.substring(prefix.length);options.format=options.format.substring(0,options.format.length-suffix.length);var number=
new Number(numberString);return jQuery._formatNumber(number,options,suffix,prefix,negativeInFront)};jQuery._formatNumber=function(number,options,suffix,prefix,negativeInFront){options=jQuery.extend({},jQuery.fn.formatNumber.defaults,options);var formatData=formatCodes(options.locale.toLowerCase(),options.isFullLocale);var dec=formatData.dec;var group=formatData.group;var neg=formatData.neg;var forcedToZero=false;if(isNaN(number))if(options.nanForceZero==true){number=0;forcedToZero=true}else return null;
if(suffix=="%")number=number*100;var returnString="";if(options.format.indexOf(".")>-1){var decimalPortion=dec;var decimalFormat=options.format.substring(options.format.lastIndexOf(".")+1);if(options.round==true)number=new Number(number.toFixed(decimalFormat.length));else{var numStr=number.toString();numStr=numStr.substring(0,numStr.lastIndexOf(".")+decimalFormat.length+1);number=new Number(numStr)}var decimalValue=number%1;var decimalString=new String(decimalValue.toFixed(decimalFormat.length));
decimalString=decimalString.substring(decimalString.lastIndexOf(".")+1);for(var i=0;i<decimalFormat.length;i++)if(decimalFormat.charAt(i)=="#"&&decimalString.charAt(i)!="0"){decimalPortion+=decimalString.charAt(i);continue}else if(decimalFormat.charAt(i)=="#"&&decimalString.charAt(i)=="0"){var notParsed=decimalString.substring(i);if(notParsed.match("[1-9]")){decimalPortion+=decimalString.charAt(i);continue}else break}else if(decimalFormat.charAt(i)=="0")decimalPortion+=decimalString.charAt(i);returnString+=
decimalPortion}else number=Math.round(number);var ones=Math.floor(number);if(number<0)ones=Math.ceil(number);var onesFormat="";if(options.format.indexOf(".")==-1)onesFormat=options.format;else onesFormat=options.format.substring(0,options.format.indexOf("."));var onePortion="";if(!(ones==0&&onesFormat.substr(onesFormat.length-1)=="#")||forcedToZero){var oneText=new String(Math.abs(ones));var groupLength=9999;if(onesFormat.lastIndexOf(",")!=-1)groupLength=onesFormat.length-onesFormat.lastIndexOf(",")-
1;var groupCount=0;for(i=oneText.length-1;i>-1;i--){onePortion=oneText.charAt(i)+onePortion;groupCount++;if(groupCount==groupLength&&i!=0){onePortion=group+onePortion;groupCount=0}}if(onesFormat.length>onePortion.length){var padStart=onesFormat.indexOf("0");if(padStart!=-1){var padLen=onesFormat.length-padStart;for(var pos=onesFormat.length-onePortion.length-1;onePortion.length<padLen;){var padChar=onesFormat.charAt(pos);if(padChar==",")padChar=group;onePortion=padChar+onePortion;pos--}}}}if(!onePortion&&
onesFormat.indexOf("0",onesFormat.length-1)!==-1)onePortion="0";returnString=onePortion+returnString;if(number<0&&negativeInFront&&prefix.length>0)prefix=neg+prefix;else if(number<0)returnString=neg+returnString;if(!options.decimalSeparatorAlwaysShown)if(returnString.lastIndexOf(dec)==returnString.length-1)returnString=returnString.substring(0,returnString.length-1);returnString=prefix+returnString+suffix;return returnString};jQuery.fn.parseNumber=function(options,writeBack,giveReturnValue){if(writeBack==
null)writeBack=true;if(giveReturnValue==null)giveReturnValue=true;var text;if(jQuery(this).is(":input"))text=new String(jQuery(this).val());else text=new String(jQuery(this).text());var number=jQuery.parseNumber(text,options);if(number){if(writeBack)if(jQuery(this).is(":input"))jQuery(this).val(number.toString());else jQuery(this).text(number.toString());if(giveReturnValue)return number}};jQuery.parseNumber=function(numberString,options){options=jQuery.extend({},jQuery.fn.parseNumber.defaults,options);
var formatData=formatCodes(options.locale.toLowerCase(),options.isFullLocale);var dec=formatData.dec;var group=formatData.group;var neg=formatData.neg;for(var valid="1234567890.-";numberString.indexOf(group)>-1;)numberString=numberString.replace(group,"");numberString=numberString.replace(dec,".").replace(neg,"-");var validText="";var hasPercent=false;if(numberString.charAt(numberString.length-1)=="%"||options.isPercentage==true)hasPercent=true;for(var i=0;i<numberString.length;i++)if(valid.indexOf(numberString.charAt(i))>
-1)validText=validText+numberString.charAt(i);var number=new Number(validText);if(hasPercent){number=number/100;var decimalPos=validText.indexOf(".");if(decimalPos!=-1){var decimalPoints=validText.length-decimalPos-1;number=number.toFixed(decimalPoints+2)}else number=number.toFixed(validText.length-1)}return number};jQuery.parseNumber.formatCodes=formatCodes;jQuery.fn.parseNumber.defaults={locale:"us",decimalSeparatorAlwaysShown:false,isPercentage:false,isFullLocale:false};jQuery.fn.formatNumber.defaults=
{format:"#,###.00",locale:"us",decimalSeparatorAlwaysShown:false,nanForceZero:true,round:true,isFullLocale:false};Number.prototype.toFixed=function(precision){return jQuery._roundNumber(this,precision)};jQuery._roundNumber=function(number,decimalPlaces){var power=Math.pow(10,decimalPlaces||0);var value=String(Math.round(number*power)/power);if(decimalPlaces>0){var dp=value.indexOf(".");if(dp==-1){value+=".";dp=0}else dp=value.length-(dp+1);for(;dp<decimalPlaces;){value+="0";dp++}}return value}})(jQuery);
jQuery.subcookie=function(name,part,value,options){var helper={set:function(name,part,value,options){options=options||{};if(value===null){value="";if(!part)options.expires=-1}if(part){var full={};var existing=this.get(name);if(existing)full=this.parseCookieHash(existing);full[part]=value;value=this.createCookieHashString(full)}var expires="";if(options.expires&&(typeof options.expires=="number"||options.expires.toUTCString)){var date;if(typeof options.expires=="number"){date=new Date;date.setTime(date.getTime()+
options.expires*24*60*60*1E3)}else date=options.expires;expires="; expires\x3d"+date.toUTCString()}var path=options.path?"; path\x3d"+options.path:"";var domain=options.domain?"; domain\x3d"+options.domain:"";var secure=options.secure?"; secure":"";document.cookie=[name,"\x3d",encodeURIComponent(value),expires,path,domain,secure].join("")},get:function(name,part){var cookieValue=null;if(document.cookie&&document.cookie!=""){var cookies=document.cookie.split(";");for(var i=0;i<cookies.length;i++){var cookie=
jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==name+"\x3d"){var temp=decodeURIComponent(cookie.substring(name.length+1));if(!part)cookieValue=temp;else{var cookieElements=this.parseCookieHash(temp);cookieValue=cookieElements[part]}break}}}return cookieValue},parseCookieHash:function(text){var hashParts=text.split("\x26");var hashPart=null;var hash={};if(text.length>0){var i=0;for(var len=hashParts.length;i<len;i++){hashPart=hashParts[i].split("\x3d");hash[decodeURIComponent(hashPart[0])]=
decodeURIComponent(hashPart[1])}}return hash},createCookieHashString:function(hash){var text=[];for(var key in hash)text.push(key+"\x3d"+String(hash[key]));return text.join("\x26")}};if(typeof value!="undefined")helper.set(name,part,value,options);else return helper.get(name,part)};
$(function(){var messageWrapper=$("#wrapper-messages");if(messageWrapper.length){var errorMessage=messageWrapper.find(".errorMessage, .noticeMessage, .successMessage");if(errorMessage.length)messageWrapper.addClass("active")}});
(function($){$(function(){$.fn.fitbitSelect=function(){var id=0;this.not(".ui-ignore").each(function(){id++;var jqElement=$(this);jqElement.replaceWith("\x3cdiv class\x3d'"+(jqElement.hasClass("toggle")?"fitbitToggle":"fitbitSelect")+" clearfix hasDownState curvyIgnore' id\x3d'fitbitSelect_"+id+"'\x3e"+"\x3cselect name\x3d'"+jqElement.attr("name")+"' id\x3d'"+jqElement.attr("id")+"'\x3e"+jqElement.html()+"\x3c/select\x3e"+'\x3cdiv class\x3d"nobr" onclick\x3d"void(0);"\x3e'+jqElement[0].options[jqElement[0].selectedIndex].text+
"\x3c/div\x3e"+"\x3c/div\x3e");$("#fitbitSelect_"+id+" select").not(".ui-disabled").on("change",function(){$(this).parent().children("div").text($(this)[0].options[$(this)[0].selectedIndex].text)})});$(".fitbitToggle").not(".ui-disabled").each(function(){$(this).on("click",function(){var jsElement=$(this).find("select")[0];jsElement.selectedIndex=jsElement.selectedIndex+1>=jsElement.options.length?0:jsElement.selectedIndex+1;$(this).children("select").trigger("change")})})};$(".wrapper.profile select").fitbitSelect();
$("#gender").selectmenu({width:"100%"});$("#heightSystem").on("change",function(){$("#height-group-us, #height-group-metric").each(function(){var element=$(this);var isVisible=element.toggleClass("invisible").hasClass("invisible");element.find("input").attr("disabled",isVisible)})});$("#weightSystem").on("change",function(){var catalyst=$(this);var groupToBeShown="#weight-group-"+catalyst.val();catalyst.closest(".weight").find(".weight-group").each(function(){var flag=!$(this).is(groupToBeShown);
$(this).toggleClass("invisible",flag).find("input").attr("disabled",flag)})});if(!$("#fullname").val()&&$(".errorMessage").length<1)$("#fullname").focus();$(".field.erasable").each(function(){if($(this).val()<1)$(this).val("")});if($.isFunction(fitbit.util.initTracking))fitbit.util.initTracking()})})(jQuery);
(function(){if(window.fitbit==undefined)window.fitbit={};window.fitbit.validators={_regexp:{email:/.+\@.+\..+/,day:/^(0?[1-9]|[12][0-9]|3[01])$/,month:/^(0?[1-9]|1[0-2])$/,year:/^\d{4}$/,number:/^\d+$/,threeIntWithTwoDecmialPlaces:/^(\d{0,3})(\.\d{1,2})?$/},_parseNumber:function(n){return $.parseNumber(n,{locale:fitbit.i18n.locale})},_ageFromDob:function(day,month,year){var today=new Date;var birthDate=new Date(year,month-1,day);var age=today.getFullYear()-birthDate.getFullYear();var m=today.getMonth()-
birthDate.getMonth();if(m<0||m===0&&today.getDate()<birthDate.getDate())age--;return age},isNotEmpty:function(value){return!!value.trim()},isInteger:function(value){return this._regexp.number.test(value)},isNumber:function(value){var formatData=$.parseNumber.formatCodes(fitbit.i18n.locale,false);return this.isInteger(value.replace(formatData.dec,""))},isGreaterThan:function(value,min){return value>min},isGreaterThanZero:function(value){return this.isGreaterThan(value,0)},required:function(value){return!!value},
email:function(value){var scope=this;var valid;valid=scope.required(value);if(valid)valid=scope._regexp.email.test(value);return valid},password:function(value){return this.required(value)},fullname:function(value){var valid;value=value.trim();return this.required(value)},gender:function(value){var valid=true;if(value=="NA")valid=false;return valid},isThreeIntWithTwoDec:function(value){var scope=this;var valid=scope.isNotEmpty(value);var parsedValue=scope._parseNumber(value);valid&&(valid=scope.isNumber(value));
valid&&(valid=scope.isGreaterThanZero(parsedValue)&&scope._regexp.threeIntWithTwoDecmialPlaces.test(parsedValue));return valid},heightUS:function(inches,feet){var scope=this;var valid=true;var value=inches;valid=scope.inch(inches);if(valid&&scope.isNotEmpty(feet)){valid=scope.foot(feet);value=(scope._parseNumber(inches)+scope._parseNumber(feet)*12).toString()}return valid&&scope.isThreeIntWithTwoDec(value)},heightCM:function(value){return this.cm(value)},foot:function(value){var scope=this;return scope.isNotEmpty(value)&&
scope.isInteger(value)},inch:function(value){var scope=this;return scope.isNotEmpty(value)&&scope.isNumber(value)},cm:function(value){return this.isThreeIntWithTwoDec(value)},weightUK:function(lbs,stone){var scope=this;var valid=true;var value=lbs;valid=scope.stLbs(lbs);if(valid&&scope.isNotEmpty(stone)){valid=scope.st(stone);value=(scope._parseNumber(lbs)+scope._parseNumber(stone)*14).toString()}return valid&&scope.isThreeIntWithTwoDec(value)},lbs:function(value){return this.isThreeIntWithTwoDec(value)},
kg:function(value){return this.isThreeIntWithTwoDec(value)},st:function(value){var scope=this;return scope.isNotEmpty(value)&&scope.isNumber(value)},stLbs:function(value){var scope=this;return scope.isNotEmpty(value)&&scope.isNumber(value)},birthMonth:function(value){var scope=this;var valid=scope.required(value);if(valid)valid=scope._regexp.month.test(value);return valid},birthDayOfMonth:function(value){var scope=this;var valid=scope.required(value);if(valid)valid=scope._regexp.day.test(value);return valid},
birthYear:function(value){var scope=this;var valid=scope.required(value);if(valid)valid=scope._regexp.year.test(value);return valid},futureDate:function(day,month,year){var scope=this;var valid=scope.date(day,month,year);var date;var today;if(valid){date=new Date(year,month-1,day);today=new Date;if(date.getFullYear<today.getFullYear&&date.getDate()<today.getDate()&&date.getMonth()<today.getMonth())valid=false}return valid},date:function(day,month,year){var scope=this;var date=new Date(year,month-
1,day);var valid=true;$.map([date.getFullYear()==year,date.getDate()==day,date.getMonth()+1==month],function(item){if(valid)valid=!!item});return valid},dobOver13:function(day,month,year){var age=this._ageFromDob(day,month,year);return age>=13},tooOld:function(day,month,year){var age=this._ageFromDob(day,month,year);var oldAge=this._ageFromDob(1,1,1893);return oldAge>=age}}})();
$(function(){function allowAuthButtonClick(ev){return ev.type!=="keyup"||ev.type==="keyup"&&/^13|32$/.test(ev.which)}function _switchPanels($panel1,$panel2){if($panel1.length&&$panel2.length){var sysMsgsParent=$("#wrapper-messages");var sysMsgValidation=sysMsgsParent.find(".validation \x3e *");var sysMsgNotices=sysMsgsParent.find(".notices \x3e *");var hideClass="invisible";$panel1.fadeOut("fast",function(){var p2SysMsgs=$panel2.data("sysMsgs");$panel1.data("sysMsgs",{validation:sysMsgValidation.detach(),
notices:sysMsgNotices.detach()});$panel1.addClass(hideClass);if(p2SysMsgs&&(p2SysMsgs.validation.length||p2SysMsgs.notices.length)){sysMsgsParent.addClass("active");sysMsgsParent.find(".validation").append(p2SysMsgs.validation);sysMsgsParent.find(".notices").append(p2SysMsgs.notices)}else sysMsgsParent.removeClass("active");$panel2.hide().removeClass(hideClass).fadeIn("fast",function(){$panel2.trigger("showPanel")})})}}function _goToCreatePasswordPanel(){_switchPanels($("#wrapper-signup"),$("#wrapper-create-password"))}
function _togglePrimaryPanels(ev){if(ev){ev.preventDefault();var catalyst=$(ev.target);if(!catalyst.hasClass("swap"))catalyst=catalyst.closest(".panel-swap").find(".swap");if(catalyst.length){var target=catalyst.attr("data-swap");var targetPanel=$("#"+target);var currentPanel=catalyst.closest("div[id|\x3dwrapper]");if(target==="wrapper-signup"&&$.subcookie("dobUnder13")){window.location.replace("/signup");return}_switchPanels(currentPanel,targetPanel);var previousForm=currentPanel.find("form");if(previousForm.length)setTimeout(function(){previousForm[0].reset();
if(!isPlaceholderAttributeSupported)previousForm.find(".field").placeholder()},500);$("#signupProcess").val(targetPanel.is("#wrapper-signup"))}}}function _trackSignupEvent(providerName,uiEvent,eventProperties){if(!$.isPlainObject(eventProperties))eventProperties={};if(!/^\s*$/.test(uiEvent))eventProperties=$.extend(eventProperties,{"uiEvent":uiEvent});_triggerMixpanelEvent("Auth: Sign Up",providerName,eventProperties);if(providerName==="FACEBOOK")_triggerMixpanelEvent("Social: FacebookConnect",providerName,
{"!PAGEGROUP":"SignUp"})}function _trackLoginEvent(providerName,uiEvent,eventProperties){if(!$.isPlainObject(eventProperties))eventProperties={};if(!/^\s*$/.test(uiEvent))eventProperties=$.extend(eventProperties,{"uiEvent":uiEvent});_triggerMixpanelEvent("Auth: Login",providerName,eventProperties);if(providerName==="FACEBOOK")_triggerMixpanelEvent("Social: FacebookConnect",providerName,{"!PAGEGROUP":"LogIn"})}function _triggerMixpanelEvent(eventName,providerName,eventProperties){var mpq=window.mpq;
if(!mpq||!mpqMasterPrj||!eventName||!providerName)return;mpq.push(["track",eventName,$.extend({"!AUTH_TYPE":providerName.toLowerCase(),"token":mpqMasterPrj},$.isPlainObject(eventProperties)?eventProperties:{})])}var facebookButtonSelector=".auth-btn-facebook";var facebookCallbackName="fbAsyncInit";var googleCallbackName="fitbitGoogleConnectInit";var $googleButtons=$(".auth-btn-google");var isPlaceholderAttributeSupported=Modernizr&&Modernizr.input&&Modernizr.input.placeholder;var loginRedirectUrl=
$("#loginRedirect").val();var FACEBOOK_APP_ID=window.facebookAppId||"106920676011663";$(window).on("load",function(){if($googleButtons.length&&typeof window.gapi==="undefined")$.getScript("//apis.google.com/js/client:plusone.js?parsetags\x3dexplicit\x26onload\x3d"+googleCallbackName);if(typeof window.FB==="undefined")$.getScript("//connect.facebook.com/en_US/sdk.js")});(function(){function _fitbit_debounce(ev,cb){var $catalystForm=$(ev.target);var disabled="disabled";if($catalystForm.data(disabled))ev.preventDefault();
else{var $submitButton=$catalystForm.find(".common-btn-submit").addClass(disabled);$catalystForm.data(disabled,true);if(cb)cb()}}function _showProfileModal(signupForm){function _appendSignupFormFieldsToProfileForm(){var profileForm=$("#completeProfile");profileForm.find(".appendedSignupField").remove();var elements=signupForm.find("input").map(function(index,input){var $input=$(input);var value=$input.val();var name=$input.attr("name");var type=$input.attr("type");if(type=="checkbox"&&!$input.attr("checked"))value=
false;return $("\x3cinput /\x3e").attr({name:name,value:value,type:type,style:"display:hidden","class":"appendedSignupField"}).addClass("invisible").get(0)});$(elements).filter("");$(elements).appendTo(profileForm)}_appendSignupFormFieldsToProfileForm();$(".panel.panel-profile").overlay({top:20,left:200,closeOnClick:true,closeOnEsc:true,fixed:false,target:".panel.panel-profile",mask:{color:"#000",opacity:.6},load:false,api:true}).load()}var _providerName="fitbit";if(localStorage.getItem("dobUnder13")){$(".panel-swap").remove();
localStorage.removeItem("dobUnder13")}$("form.validate-enabled").on("keyup",".field",function(ev){var catalyst=$(this);if(catalyst.val().length){$(ev.delegateTarget).removeClass(failureClass);catalyst.off(ev)}});var geti18n=function(key){return fitbit.i18n.getResource(key)};var getInvalidProfileErrorResource=function(key){return geti18n("com.fitbit.app.user.profile.error."+key+"_invalid")};var clearErrorText=function(element){element.empty()};var updateErrorText=function(element,msgs){clearErrorText(element);
element.append(msgs)};var serializeObj=function(form){var o={};var a=form.serializeArray();$.each(a,function(){if(o[this.name]!==undefined){if(!o[this.name].push)o[this.name]=[o[this.name]];o[this.name].push(this.value||"")}else o[this.name]=this.value||""});return o};var validators=window.fitbit.validators;var completeProfileSubmit=function(ev){var delegateTarget=ev.delegateTarget;var element=$(this);var errorList=element.find(".errorList");var dataArr=element.serializeArray();var dataObj=serializeObj(element);
var invalids=[];var dobGroup={birthMonth:dataObj.birthMonth,birthDayOfMonth:dataObj.birthDayOfMonth,birthYear:dataObj.birthYear};var invalidDob;element.find(".error").removeClass("error");_trackSignupEvent(_providerName,"submitAuthForm");ev.preventDefault();clearErrorText(errorList);$.each(dataArr,function(index,obj){var name=obj.name;var hasValidator=!!validators[name];if(hasValidator)if(!validators[name](obj.value))invalids.push(obj)});invalidDob=$.grep(invalids,function(obj){return["birthMonth",
"birthDayOfMonth","birthYear"].indexOf(obj.name)>=0});if(!invalidDob.length)if(!validators.futureDate(dobGroup.birthDayOfMonth,dobGroup.birthMonth,dobGroup.birthYear))invalids.push({name:"birthDate",value:dobGroup});else if(!validators.dobOver13(dobGroup.birthDayOfMonth,dobGroup.birthMonth,dobGroup.birthYear)){localStorage.setItem("dobUnder13",true);$.subcookie("dobUnder13",null,"dobUnder13",{expires:1,path:"/",domain:window.location.hostname,secure:true})}else if(!validators.tooOld(dobGroup.birthDayOfMonth,
dobGroup.birthMonth,dobGroup.birthYear))invalids.push({name:"birthDate_tooEarly",value:dobGroup});if(dataObj.heightSystem=="US")if(!validators.heightUS(dataObj.heightInches,dataObj.heightFeet)){invalids.push({name:"heightFeet",value:dataObj.heightFeet});invalids.push({name:"heightInches",value:dataObj.heightInches})}if(dataObj.weightSystem=="UK")if(!validators.weightUK(dataObj.stoneLbs,dataObj.stone)){invalids.push({name:"stone",value:dataObj.stone});invalids.push({name:"stoneLbs",value:dataObj.stoneLbs})}if(!invalids.length)_fitbit_debounce(ev,
function(){delegateTarget.submit()});else element.trigger("errors",[invalids])};var completeProfile=$("#completeProfile").on("submit",completeProfileSubmit).on("focus","input, select, textarea",function(e){var target=e.target;$(target).removeClass("error")}).on("errors",function(e,errors){var element=$(this);$.each(errors,function(index,obj){element.find("[name\x3d"+obj.name+"]").addClass("error")});if(element.find("[name\x3dgender]").hasClass("error"))genderSelectMenu.newelement.addClass("error");
if($.grep(errors,function(obj){return["birthDate_tooEarly","birthDate"].indexOf(obj.name)>=0}).length)element.find("[name^\x3dbirth]").addClass("error");var errorList=element.find(".errorList");var errorItems=$();$.each(errors,function(index,obj){var msg=$("\x3cli\x3e\x3c/li\x3e").html(getInvalidProfileErrorResource(obj.name)).get(0);errorItems.push(msg)});updateErrorText(errorList,errorItems)});var genderSelectMenu=completeProfile.find("[name\x3dgender]").data("selectmenu");if(genderSelectMenu)genderSelectMenu.newelement.on("click",
function(){genderSelectMenu.element.removeClass("error");genderSelectMenu.newelement.removeClass("error")});var signupCheck=false;var signupErrorsMap={SIGNUP_USER_NAME_EXISTS:"email",INVALID_EMAIL:"email",INVALID_PASSWORD:"password"};var signupForm;$("#signupForm, #signupFormComplete").on("submit",function(ev){var element=$(this);signupForm=element;var data=element.serializeArray();var dataObj=serializeObj(element);ev.preventDefault();if(!signupCheck){signupCheck=true;$.ajax({method:"GET",url:"/ajaxapi",
dataType:"json",data:$.param({request:JSON.stringify({template:"/login/checkEmailPassword.jsp",serviceCalls:[{name:"userAjax",method:"checkSignup",args:{email:dataObj.email,password:dataObj.password}}]})}),success:function(response){signupCheck=false;var sysMsgParent=$("#wrapper-messages");var sysMsgValidation=sysMsgParent.find(".validation").empty();var list;if(response.errors){$('\x3cdiv class\x3d"errorMessage"\x3e\x3c/div\x3e').text(geti18n("com.fitbit.app.error.errors_title")).appendTo(sysMsgValidation);
list=$('\x3cul class\x3d"errorList"\x3e\x3c/ul\x3e').appendTo(sysMsgValidation);$.each(response.errors,function(name,msg){var attribValue=signupErrorsMap[name]||"";var selector="[name\x3d"+attribValue+"]";if(msg)$("\x3cli\x3e\x3c/li\x3e").html(msg).appendTo(list);if(attribValue)element.find(selector).addClass("error")});sysMsgParent.addClass("active")}else{sysMsgParent.removeClass("active");_showProfileModal(element)}}})}}).on("change","input, select, textarea",function(ev){$(ev.target).removeClass("error")});
$("#loginForm").on("submit",function(ev){_fitbit_debounce(ev);_trackLoginEvent(_providerName,"submitAuthForm")});$("#signupFormComplete").on("submit",function(ev){var pn=$("#external-data-provider").val()||"unknown";_trackSignupEvent(pn,"submitCreatePasswordForm")});var detectionCounter=0;var failureClass="failure";var hasAutocompleteOccurred=false;var visibleForm=$("form.validate-enabled:visible");var visibleFormFields=visibleForm.find(".field[placeholder]");var counterRef=setInterval(function(){detectionCounter++;
if(detectionCounter>=10||hasAutocompleteOccurred||!visibleForm.is(":visible"))clearInterval(counterRef);visibleFormFields.each(function(index,field){field=$(field);var fieldValue=field.val();if(!hasAutocompleteOccurred&&fieldValue!=="")if(isPlaceholderAttributeSupported&&fieldValue!==field.attr("placeholder")){hasAutocompleteOccurred=true;visibleForm.removeClass(failureClass);return false}})},1E3);$(".panel-swap").on("click",_togglePrimaryPanels);if(isPlaceholderAttributeSupported)$("#wrapper-signup, #wrapper-login").on("showPanel",
function(){var emailField=$(this).find(".field.email");if(emailField.length)setTimeout(function(){emailField[0].focus()},0)}).filter(":visible").trigger("showPanel");$("#wrapper-create-password").on("showPanel",function(){var validationClass="validate success";var emailField=$("#external-data-email");if(!/^\s*$/.test(emailField.val()))emailField.addClass(validationClass);emailField.one("focus",function(){$(this).removeClass(validationClass)});var passwordField=emailField.closest(".field-group").find(".field.password");
if(passwordField.length)passwordField[0].focus()});$(".forgot").on("click",function(e){var email=$(".email").val()||"";if(Modernizr.localstorage){e.preventDefault();localStorage.setItem("loginEmail",email);window.location=$(this).attr("href")}});try{var timezoneEl=$("#signupForm").get(0).elements["timezone"];timezoneEl.value=(new Date).getTimezoneOffset()/60*-1}catch(e$$0){}if($.isFunction(fitbit.util.initTracking))fitbit.util.initTracking()})();window[googleCallbackName]=function(){function _google_authCallbackLogin(authResponse){if(authResponse.error==
undefined){if(authResponse.code){_google_oneTimeCode=authResponse.code;_google_exchangeRefreshToken(_google_oneTimeCode)}_google_loginRedirect()}else if(authResponse.error!=="immediate_failed"){var evProps={"errorMessage":authResponse.error||"unknown error"};var uiEvent="failedAuthentication";if(_google_pendingLoginRedirect)_trackLoginEvent(_providerName,uiEvent,evProps);else _triggerMixpanelEvent("Auth: Unknown",_providerName,$.extend(evProps,{"uiEvent":uiEvent}))}}function _google_authCallbackSignup(authResponse){if(authResponse.error==
undefined){if(authResponse.code){_google_oneTimeCode=authResponse.code;_google_exchangeRefreshToken(_google_oneTimeCode)}if(!_google_relayedAccessToken){_google_relayedAccessToken=true;_google_validateTokenAndGetUserEmail()}_google_fetchUserData()}else if(authResponse.error!=="immediate_failed"){var evProps={"errorMessage":authResponse.error||"unknown error"};var uiEvent="failedAuthentication";if(_google_pendingUserDataFetch)_trackSignupEvent(_providerName,uiEvent,evProps);else _triggerMixpanelEvent("Auth: Unknown",
_providerName,$.extend(evProps,{"uiEvent":uiEvent}))}}function _google_exchangeRefreshToken(code){$.ajax({type:"POST",url:"/ajaxapi",data:$.param({request:JSON.stringify({"template":"/mgmt/ajaxTemplate.jsp","serviceCalls":[{"name":"googleAjaxService","method":"exchangeRefreshToken","args":{"oneTimeCode":code}}]})})})}function _google_validateTokenAndGetUserEmail(){gapi.client.request({"path":"/oauth2/v1/tokeninfo","params":{"access_token":_google_getAccessToken()||""},"callback":function(validationResponse){if(validationResponse&&
validationResponse.email)$("#external-data-email").val(validationResponse.email)}})}function _google_fetchUserData(){gapi.client.request({"path":"/plus/v1/people/me","callback":function(userData){var emptyStr=/^\s*$/;$("#external-data-provider").val(_providerName);if(userData.displayName&&!emptyStr.test(userData.displayName)){$("#external-data-name-display").html(userData.displayName);$("#external-data-name").val(userData.displayName);$("#connect-confirmation-google").show();$("#connect-confirmation-facebook").hide()}if(userData.name){var fullName=
[];if(userData.name.givenName&&!emptyStr.test(userData.name.givenName))fullName.push(userData.name.givenName);if(userData.name.familyName&&!emptyStr.test(userData.name.familyName))fullName.push(userData.name.familyName);if(fullName.length)$("#external-data-name").val(fullName.join(" "))}if(userData.image&&!emptyStr.test(userData.image.url)){$("#external-data-photo-display").attr("src",userData.image.url);$("#external-data-photo").val(userData.image.url)}if(_google_oneTimeCode)$("#external-data-oneTimeCode").val(_google_oneTimeCode);
$("#completeAccount").val("true");_goToCreatePasswordPanel();_trackSignupEvent(_providerName,"goToCreatePassword")}})}function _google_loginRedirect(){_trackLoginEvent(_providerName,"loginRedirect");var urlParams={googleLogin:"on"};var idToken=_google_getIdToken();if(idToken)urlParams["id_token"]=idToken;if(_google_oneTimeCode)urlParams["one_time_code"]=_google_oneTimeCode;window.location="/login?"+$.param(urlParams)}function _google_getIdToken(){var idToken=null;if(gapi&&gapi.auth){var obj=gapi.auth.getToken();
if(obj&&obj.id_token)idToken=obj.id_token}return idToken}function _google_getAccessToken(){var accessToken=null;if(gapi&&gapi.auth){var obj=gapi.auth.getToken();if(obj&&obj.access_token)accessToken=obj.access_token}return accessToken}function _google_hideButtons(){$googleButtons.hide();$("#wrapper-login").find(facebookButtonSelector).end().find(".external-choices").addClass("oneChoice")}function _google_debounce($catalyst){if($catalyst&&$catalyst.length&&!$catalyst.data("auth-disabled")){var buttonClone=
$catalyst.clone().addClass(_disabledLoadingClass).removeAttr("data-gapiattached");$catalyst.hide().data("auth-disabled",true).before(buttonClone);setTimeout(function(){$catalyst.removeData("auth-disabled").show();buttonClone.remove()},3E3)}}var _providerName="GOOGLE";var _disabledLoadingClass="disabled loading";var _buttonConfigLogin={"clientid":null,"cookiepolicy":"http://fitbit.com","apppackagename":"com.fitbit.FitbitMobile","scope":"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email",
"approvalprompt":"auto","callback":_google_authCallbackLogin};var _buttonConfigSingup={"clientid":null,"accesstype":"offline","cookiepolicy":"http://fitbit.com","apppackagename":"com.fitbit.FitbitMobile","scope":"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email","approvalprompt":"force","callback":_google_authCallbackSignup};var _google_relayedAccessToken=false;var _google_pendingUserDataFetch=false;var _google_pendingLoginRedirect=false;var _google_oneTimeCode=
null;(function _google_initialize(){if(gapi.signin)$googleButtons.removeClass(_disabledLoadingClass).each(function(){var authType=$(this).data("auth-type");var clientid=$(this).data("auth-clientid");var validClientId=typeof clientid!=="undefined"&&!/^\s*$/.test(clientid);if(authType==="login"&&validClientId)$(this).on("click",function(ev){ev.preventDefault();_google_debounce($(this));gapi.auth.signIn($.extend(_buttonConfigLogin,{"clientid":clientid}));_trackLoginEvent(_providerName,"clickAuthButton");
_google_pendingLoginRedirect=true});else if(authType==="signup"&&validClientId)$(this).on("click",function(ev){ev.preventDefault();_google_debounce($(this));gapi.auth.signIn($.extend(_buttonConfigSingup,{"clientid":clientid}));_trackSignupEvent(_providerName,"clickAuthButton");_google_pendingUserDataFetch=true});else _google_hideButtons()});else _google_hideButtons()})()};window[facebookCallbackName]=function(){function getQueryVariable(variable){var query=window.location.search.substring(1);var vars=
query.split("\x26");for(var i=0;i<vars.length;i++){var pair=vars[i].split("\x3d");if(decodeURIComponent(pair[0])==variable)return decodeURIComponent(pair[1])}}function _facebook_signup(isSessionExpired){if(typeof window.FB==="undefined")return;_trackSignupEvent(_providerName,"clickAuthButton");var _goToNextStep=function(){_trackSignupEvent(_providerName,"goToCreatePassword");_goToCreatePasswordPanel()};FB.getLoginStatus(function(response$$0){if(!isSessionExpired||response$$0.authResponse&&response$$0.status===
"connected"){_facebook_fetchUserData(response$$0);_goToNextStep()}else FB.login(function(response){if(response.authResponse){_facebook_fetchUserData(response);_goToNextStep()}},{scope:"user_birthday,email,user_location"})})}function _facebook_fetchUserData(fbResponse){if(typeof window.FB==="undefined")return;FB.api("/me",{fields:"name,picture,email"},function(userData){if(!userData.name)_facebook_signup(true);else{$("#external-data-provider").val(_providerName);$("#external-data-email").val(userData.email);
$("#external-data-name-display").html(userData.name);$("#external-data-name").val(userData.name);$("#connect-confirmation-facebook").show();$("#connect-confirmation-google").hide();if(userData.picture&&userData.picture.data&&userData.picture.data.url){$("#external-data-photo-display").attr("src",userData.picture.data.url);$("#external-data-photo").val(userData.picture.data.url)}else $("#external-data-photo-display").css("visibility","hidden")}});$("#external-data-accessToken").val(fbResponse.authResponse.accessToken);
$("#completeAccount").val("true")}function _facebook_login(){if(typeof window.FB==="undefined")return;_trackLoginEvent(_providerName,"clickAuthButton");FB.getLoginStatus(function(response$$0){if(response$$0.authResponse&&response$$0.status==="connected")_facebook_loginRedirect(response$$0.authResponse.accessToken);else FB.login(function(response){if(response.authResponse)_facebook_loginRedirect(response.authResponse.accessToken)},{scope:"email"})})}function _facebook_loginRedirect(accessToken){var data=
{facebookLogin:"on",access_token:accessToken,loginRedirectUrl:loginRedirectUrl?loginRedirectUrl:""};var $form=$('\x3cform method\x3d"POST" style\x3d"display: none" action\x3d"/login"\x3e\x3c/form\x3e');var $fields=$.map(data,function(value,key){return $("\x3cinput/\x3e").attr({type:"hidden",name:key,value:value}).get(0)});$form.append($fields);$("body").append($form);_trackLoginEvent(_providerName,"loginRedirect");$form.submit()}var _providerName="FACEBOOK";FB.init({version:"v2.0",appId:FACEBOOK_APP_ID,
cookie:true,status:true,xfbml:true,oauth:true});var loadingClass="loading disabled";$("#wrapper-signup "+facebookButtonSelector).removeClass(loadingClass).on("click keyup",function(ev){if(allowAuthButtonClick(ev))_facebook_signup()});var isFacebookLogin=getQueryVariable("fbSignup");if(isFacebookLogin){history.pushState("","","/"+location.href.split("/")[3].split("?")[0]);var BasicModal=require("basicModal");var modalHtml="\x3cdiv style\x3d'background-color: white;height: 60px;text-align: center;margin: 40px;'\x3e\x3cp style\x3d'margin-bottom: 10px;'\x3eIn order to accept your friend invitation please \x3c/p\x3e\x3cdiv style\x3d'margin-left: 60px;' id\x3d'facebookLogLink'\x3e"+
$(".auth-btn-facebook")[0].outerHTML+"\x3c/div\x3e\x3c/div\x3e";var facebookLogLinkModal=new BasicModal(modalHtml,400);facebookLogLinkModal.trigger();$("#facebookLogLink").click(function(e){$(".basic-modal").find(".close-icon").click();e.preventDefault();_facebook_signup()})}$("#wrapper-login "+facebookButtonSelector).removeClass(loadingClass).on("click keyup",function(ev){if(allowAuthButtonClick(ev))_facebook_login()})}});
