(function($,undefined){$.widget('depositphotos.depositPasswordRecovery',{options:{url:undefined,requestUrl:undefined,step:1,checkTimeout:500,trigger:'resetPass'},_init:function(){this.$this=this.element;this.options.requestUrl='//'+window.location.host+this.options.url;this._counter=0;this._buffer={};dp.core.binder(this.targets=this._gather(),this.handlers=this._handlers(),this.eventNamespace);this._triggerData=null;this._checkTimeouts={};this.initApi();this._bindPopup();this._searchTrigger();},_destroy:function(){dp.core.unbinder(this.targets,this.handlers,this.eventNamespace);this.targets=this.handlers=undefined;},initApi:function(){var _this=this;dp.recovery={pass:function(step,buffer){_this._buffer=buffer;_this.step=step||_this.options.step;_this.targets.scope.$popup.trigger('hide').trigger('show');}};},_gather:function(){return{scope:{$popup:dp.popup.get('password-recovery')},fields:{$inputs:this.$this.find('input[name]'),$passwords:this.$this.find('input[name^="password"]')},buttons:{$send:this.$this.find('.d-sendLink'),$save:this.$this.find('.d-savePass'),$update:this.$this.find('.d-updatePass'),$again:this.$this.find('.d-tryAgain')},triggers:{$showPass:this.$this.find('.d-show-pass-trigger'),$login:this.$this.find('.d_forLogin')}};},_handlers:function(){var _this=this;return{fields:{inputs:{handler:function(e){var input=this;var name=input.getAttribute('name');if(input.getAttribute('data-sync')==='true'&&e.type==='keyup'){$(input).parent().find('[name][data-sync]').not(input)[0].value=input.value;} clearTimeout(_this._checkTimeouts[name]);if(e.type!=='force'){_this._checkTimeouts[name]=setTimeout(function(){_this._validate(input);},_this.options.checkTimeout);}else{_this._validate(input);}},events:['change','input','blur','keyup','paste','force'],run:'depositField'}},buttons:{send:{handler:function(){var $btn=$(this);var $form=_this._getForm(_this.$this);var $inputs=$form.find('.d-input[name]').trigger('reset');var emptyFields=0;$inputs.each(function(){var $el=$(this);if($el.val().length){$el.trigger('force');}else{emptyFields++;}});if($inputs.length<=emptyFields||$form.find('.d_incorrect').length){return;} $btn.trigger('loading');_this._sendRequest($.extend({handler:'sendResetLink'},$form.serializeForm()),function(resp){$btn.trigger('loaded');if(resp.result){dp.recovery.pass(2);}else{dp.validator.showErrors($inputs,resp.errors);}},$btn);},events:['click'],run:'depositLoading'},save:{handler:function(){var $btn=$(this);var $form=_this._getForm(_this.$this);var $inputs=$form.find('.d-input[name]').trigger('reset').trigger('force');if($form.find('.d_incorrect').length){return;} $btn.trigger('loading');_this._sendRequest($.extend({handler:'savePassword',userId:_this._triggerData.userId},$form.serializeForm()),function(resp){$btn.trigger('loaded');_this._triggerData=null;if(resp.result){dp.recovery.pass(4);}else{dp.validator.showErrors($inputs,resp.errors);}},$btn);},events:['click'],run:'depositLoading'},update:{handler:function(){var $btn=$(this);var $form=_this._getForm(_this.$this);var $inputs=$form.find('.d-input[name]').trigger('reset').trigger('force');if($form.find('.d_incorrect').length){return;} $btn.trigger('loading');_this._sendRequest($.extend({handler:'updatePassword',userId:dp.config.user.id},$form.serializeForm(),_this._buffer),function(resp){$btn.trigger('loaded');if(resp.result){dp.recovery.pass(4);_this.targets.scope.$popup.find('.d-tthide').hide();}else{dp.validator.showErrors($inputs,resp.errors);}},$btn);},events:['click'],run:'depositLoading'},again:{handler:function(){dp.recovery[_this._triggerData['type']]();_this._triggerData=null;},events:['click']}},triggers:{showPass:{handler:function(){_this._toggleInputs(this.checked?'text':'password',true);},events:['click']},login:{handler:function(){_this.targets.scope.$popup.trigger('hide');dp.popup.show('login');},events:['click']}}};},_validate:function(field){var errors=[];var $fields=$(field);var cpass=(field.name==='password2')?this._getForm(this.$this).find('input[name="password"]').filter('[type='+field.type+']').val():null;if((['username','email'].indexOf(field.name)===-1||field.value)&&field.name!=='password0'){errors=dp.validator.validate(field.name,field.value,cpass);} if(field.name==='password'&&this._getForm(this.$this).find('input[name="password2"]').val()){this._getForm(this.$this).find('input[name="password2"]').trigger('force');} if(field.name.indexOf('pass')!==-1){$fields=this.targets.fields.$passwords.filter('[name="'+field.name+'"]');} $fields.trigger('reset');if(errors.length){dp.validator.showErrors($fields,errors);}else if(field.value){$fields.trigger('correct');}},_searchTrigger:function(){this._triggerData=$.parseJSON(cookie.get(this.options.trigger));if(this._isValidTrigger(this._triggerData)){dp.recovery[this._triggerData['type']](this._triggerData['step']);}},_bindPopup:function(){var _this=this;dp.popup.callback('password-recovery','show',function($pop){var step=parseInt(_this.step)||1;_this.targets.fields.$inputs.trigger('reset').val('');$pop.find('[data-step]').hide().filter('[data-step="'+step+'"]').show();if(step===6){_this._toggleInputs('text');_this.targets.triggers.$showPass.prop('checked',true);}else{_this._toggleInputs('password');_this.targets.triggers.$showPass.prop('checked',false);} dp.tools.focusOnStraightBrowsersInput(_this.targets.fields.$inputs.eq(0));},true);},_toggleInputs:function(type,withValidation){withValidation=!!withValidation;var $form=this._getForm(this.$this);var $visibleInputs=$form.find('.d-show-pass input').hide().filter('[name][type="'+type+'"]');var fakePlaceholderEq=type==='password'?0:1;if($form.find('.d_placeholder_active').length){$visibleInputs.each(function(){var $this=$(this);if(!$this.val().length){$this.parent().find('.d_placeholder_active').eq(fakePlaceholderEq).show();}else{$this.show();}});}else{$visibleInputs.show();} if(withValidation===true){$visibleInputs.trigger('keyup');}},_isValidTrigger:function(triggerData){if(!triggerData||typeof triggerData!=='object'){return false;} return!(!triggerData.hasOwnProperty('userId')||!triggerData.hasOwnProperty('type')||!triggerData.hasOwnProperty('step'));},_getForm:function($pop){return $pop.find('form:visible');},_sendRequest:function(data,callback,$btn){var _this=this;var uuid=getUUID();data=$.extend(data,{callback:'depositPasswordRecovery'+uuid});var ajaxOptions={url:this.options.requestUrl,jsonp:false,jsonpCallback:'depositPasswordRecovery'+uuid,data:data,xhrFields:{withCredentials:true},success:function(data){if(typeof callback==='function'){callback(data);}},error:function(jqXHR,textStatus,errorThrown){if(errorThrown==='timeout'&&_this._counter++<2){_this._sendRequest(data,callback,$btn);}else{var $form=_this._getForm(_this.$this);var $input=$form.find('input:visible').eq(0);var errors={};errors[$input.attr('name')]=[tr('Network error. Please try again')];dp.validator.showErrors($input,errors);if($btn){$btn.trigger('loaded');}}}};if(dp.config.isHttpsAllowed&&window.location.protocol.search('https')===-1){ajaxOptions.dataType='jsonp';ajaxOptions.data.dataType='jsonp';ajaxOptions.url='https:'+this.options.requestUrl;ajaxOptions.timeoutTime=6000;}else{ajaxOptions.url=this.options.requestUrl;} return dp.core.ajax(ajaxOptions);}});})(jQuery); ;(function($){$.widget('depositphotos.depositLogin',{options:{selector:'form[data-space]',url:'//'+window.location.host+'/ajaxlogin.html'},_init:function(){this.$this=this.element;this._counter=0;this._credentials={username:'',password:''};this._space=undefined;dp.core.binder(this.targets=this._gather(),this.handlers=this._handlers(),this.eventNamespace);this._addObserver();},_addObserver:function(){dp.observer.add(this.eventNamespace,'pushstate',(function(){this._redirect=this._getRedirect(window.location.href);}).bind(this));},_destroy:function(){dp.observer.remove(this.eventNamespace);dp.core.unbinder(this.targets,this.handlers,this.eventNamespace);this.targets=this.handlers=undefined;},_gather:function(){var $mainForm=this.$this.find(this.options.selector);var $satelliteForm=$('form.d-login');var $mixedForms=$mainForm.add($satelliteForm);return{$wrapper:this.$this,main:{$popup:dp.popup.get('login'),$form:$mainForm,$inputs:this.$this.find('input[name="username"], input[name="password"]'),$username:this.$this.find('input[name="username"]'),$password:this.$this.find('input[name="password"]'),$submit:this.$this.find('input[type="submit"]'),$reset:this.$this.find('[data-action="password-recovery"]')},satellite:{$form:$satelliteForm,$submit:$satelliteForm.find('input[type="submit"]')},mixed:{$form:$mixedForms,$submit:$mixedForms.find('input[type="submit"]')}};},_handlers:function(){var _this=this;return{wrapper:{handler:function(){if(!$.browser.mobile){dp.tools.focusOnStraightBrowsersInput(_this.targets.main.$inputs.eq(0));}},events:'tipsShowed',run:function(){var attrRedirect=_this.targets.$wrapper.attr('data-redirect')||_this.targets.main.$form.attr('data-redirect');if(attrRedirect&&attrRedirect.search('login.html')===-1){_this._redirect=_this._getRedirect(attrRedirect);}else{_this._redirect=_this._getRedirect(window.location.href);}}},mixed:{form:{handler:function(e){e.preventDefault();e.stopPropagation();_this._space=this.getAttribute('data-space');_this._handle();},events:'submit'},submit:{run:'depositLoading'}},main:{popup:{run:function(){dp.popup.callback('login','hide',function(){dp.track.fire('b_login_popupClose');},true);dp.popup.callback('login','show',function($pop,caller){$pop.find('input[name="username"]').focus();var href=window.location.href;if(caller){var hrefAttr=caller.getAttribute('href');if(hrefAttr&&hrefAttr.indexOf('/')!==-1){href=hrefAttr;} var space=caller.getAttribute('data-space');if(space){dp.track.fire('b_login_popupAutoShow');}} _this._redirect=href;dp.track.page('/ingoing/login_form');dp.social.init($pop);},true);}},reset:{handler:function(e){e.preventDefault();dp.popup.hide('login');dp.popup.load('password-recovery',function(){dp.recovery.pass();});},events:'click'},inputs:{handler:function(e){if(e.which===13||e.keyCode===13){e.preventDefault();e.stopPropagation();_this._space=_this.targets.mixed.$form.attr('data-space');_this._handle();}},events:['keydown'],run:'depositField'}}};},_needPopup:function(){return['popup','landing','single'].indexOf(this._space)!==-1;},_trimUsername:function($inputs){var $username=$inputs.filter('[name=username]');$username.val($username.val().trim());return $inputs;},_handle:function(){var _this=this;var $inputs=_this._trimUsername(this.targets.main.$inputs);if(!_this._needPopup()){$inputs=this.targets.satellite.$form.filter('[data-space="'+this._space+'"]').find('input[name="username"], input[name="password"]');} $inputs.each(function(){_this._credentials[this.name]=this.value;});var result=this._validate();this.targets.main.$inputs.trigger('reset');if(result===true){this._authenticate();}else{this._onValidationFail(result);}},_validate:function(){var errors={};for(var i in this._credentials){if(!this._credentials.hasOwnProperty(i)){continue;} var result=[];var validationResults=[];if(!this._credentials[i].length){result.push(true);} if(i!=='password'){validationResults=dp.validator.validate(i,this._credentials[i]);} errors[i]=dp.tools.mergeToArray(result,validationResults);} if((errors.username.length+errors.password.length)!==0){return errors;} return true;},_onValidationFail:function(result){dp.track.fire('b_login_'+this._space+'_fail');if(!this._needPopup()){this._showWindow();} return this._showErrors(result);},_showWindow:function(){var _this=this;dp.popup.callback('login','init',function(){for(var i in _this._credentials){if(!_this._credentials.hasOwnProperty(i)){continue;} this.find('input[name="'+i+'"]').val(_this._credentials[i]).trigger('reset');if($.browser['msie']){this.find('input[name="'+i+'"]').trigger('change');}}});dp.popup.show('login');},_showErrors:function(errors){if(errors.hasOwnProperty('username')&&errors.hasOwnProperty('password')&&errors.username[0]===true&&errors.password[0]===true&&!this._needPopup()){return false;} dp.validator.showErrors(this.targets.main,errors);return false;},_authenticate:function(){var _this=this;var uuid=getUUID();var $caller=this.targets[this._space==='popup'||this._space==='single'?'main':'satellite'].$submit;var ajaxOptions={$caller:$caller,jsonp:false,jsonpCallback:'depositLogin_'+uuid,data:{callback:'depositLogin_'+uuid,edata:btoa(JSON.stringify({username:$.trim(this._credentials.username),password:this._credentials.password}))},xhrFields:{withCredentials:true},success:function(data,$caller){_this._response(data,$caller);},error:function(jqXHR,textStatus,errorThrown){if(errorThrown==='timeout'&&_this._counter++<2){_this._authenticate();}else{_this._showErrors({'username':[tr('e_network_error')]});}}};if(this._redirect!==false){ajaxOptions.data.redirect=this._redirect;} if((dp.config.isForceHttpsLogin||dp.config.isHttpsAllowed)&&window.location.protocol.search('https')===-1){ajaxOptions.dataType='jsonp';ajaxOptions.data.dataType='jsonp';ajaxOptions.url='https:'+_this.options.url;ajaxOptions.timeoutTime=6000;}else{ajaxOptions.data.dataType='json';ajaxOptions.url=_this.options.url;} dp.core.ajax(ajaxOptions);},_response:function(data,$caller){if(data.errors&&data.errors!==false){this._onValidationFail(data.errors);$caller.trigger('loaded',false);}else{try{cookie.remove('u-guest');dp.storage.renew(data.data['user_settings']);}catch(e){$.error('jquery.depositLogin.js: cannot update user settings while successfully logged in');} dp.track.fire('b_login_'+this._space);if(this._bigFuckingCrutch(data)){return;} if(data.data.redirect){if(window.location.href===data.data.redirect){location.reload();}else{window.location.href=data.data.redirect.replace('https://','http://');}}}},_getRedirect:function(url){return url;},_bigFuckingCrutch:function(data){var dpUrl=dp.url(window.location.href);var backUrl=cookie.get('backUrl');if(dpUrl.attr('path').search('signup.')!==-1){if(backUrl&&(data.data.user_balance.credits>0||data.data.user_balance.subscriptionCount>0||data.data.user_balance.imagepacksCount>0)){window.location.href=backUrl;return true;}} return false;}});})(jQuery); ;dp.tips.callbacks.loginForm=function($target,$this){dp.social.init($target);$target.not('.disable-login').depositLogin();dp.social.init($target);}; ;