1var engineUrl = "https://engine.seolium.com/"; 2var loginUrl = "https://engine.seolium.com/login/"; 3var loginRegisterLink = "https://www.seolium.com/confirm-account"; 4var loginRecoveryLink = "https://www.seolium.com/password-reset"; 5var loginLang = "en"; 6 7jQuery(document).ready(function($){ 8 var $form_modal = $('.user-modal'), 9 $form_login = $form_modal.find('#login'), 10 $form_signup = $form_modal.find('#signup'), 11 $form_forgot_password = $form_modal.find('#reset-password'), 12 $form_modal_tab = $('.switcher'), 13 $tab_login = $form_modal_tab.children('li').eq(0).children('a'), 14 $tab_signup = $form_modal_tab.children('li').eq(1).children('a'), 15 $forgot_password_link = $form_login.find('.form-bottom-message a'), 16 $back_to_login_link = $form_forgot_password.find('.form-bottom-message a'); 17 $main_nav = $('.main-nav'); 18 19 //open modal 20 $main_nav.on('click', function(event){ 21 22 if( $(event.target).is($main_nav) ) { 23 // on mobile open the submenu 24 $(this).children('ul').toggleClass('is-visible'); 25 } else { 26 // on mobile close submenu 27 $main_nav.children('ul').removeClass('is-visible'); 28 //show modal layer 29 $form_modal.addClass('is-visible'); 30 //show the selected form 31 ( $(event.target).is('.signup') ) ? signup_selected() : login_selected(); 32 } 33 34 }); 35 36 //close modal 37 $('.user-modal').on('click', function(event){ 38 if( $(event.target).is($form_modal) || $(event.target).is('.close-form') ) { 39 $form_modal.removeClass('is-visible'); 40 } 41 }); 42 //close modal when clicking the esc keyboard button 43 $(document).keyup(function(event){ 44 if(event.which=='27'){ 45 $form_modal.removeClass('is-visible'); 46 } 47 }); 48 49 //switch from a tab to another 50 $form_modal_tab.on('click', function(event) { 51 event.preventDefault(); 52 ( $(event.target).is( $tab_login ) ) ? login_selected() : signup_selected(); 53 }); 54 55 //hide or show password 56 $('.hide-password').on('click', function(){ 57 var $password = $(this).prev('input'); 58 var $eye = $(this).find('.glyphicon'); 59 if ($eye.hasClass('glyphicon-eye-open')){ 60 $eye.removeClass('glyphicon-eye-open'); 61 $eye.toggleClass('glyphicon-eye-close'); 62 $password.attr('type', 'text') 63 } else { 64 $eye.removeClass('glyphicon-eye-close'); 65 $eye.toggleClass('glyphicon-eye-open'); 66 $password.attr('type', 'password') 67 } 68 //focus and move cursor to the end of input field 69 $password.putCursorAtEnd(); 70 }); 71 72 //show forgot-password form 73 $forgot_password_link.on('click', function(event){ 74 event.preventDefault(); 75 forgot_password_selected(); 76 }); 77 78 //back to login from the forgot-password form 79 $back_to_login_link.on('click', function(event){ 80 event.preventDefault(); 81 login_selected(); 82 }); 83 84 function login_selected(){ 85 $form_login.addClass('is-selected'); 86 $form_signup.removeClass('is-selected'); 87 $form_forgot_password.removeClass('is-selected'); 88 $tab_login.addClass('selected'); 89 $tab_signup.removeClass('selected'); 90 } 91 92 function signup_selected(){ 93 $form_login.removeClass('is-selected'); 94 $form_signup.addClass('is-selected'); 95 $form_forgot_password.removeClass('is-selected'); 96 $tab_login.removeClass('selected'); 97 $tab_signup.addClass('selected'); 98 $("#loginErrorMessage").removeClass("is-visible"); 99 } 100 101 function forgot_password_selected(){ 102 $form_login.removeClass('is-selected'); 103 $form_signup.removeClass('is-selected'); 104 $form_forgot_password.addClass('is-selected'); 105 $("#loginErrorMessage").removeClass("is-visible"); 106 } 107 108 bindButton($form_login.find('input[type="submit"]'), 2000, login); 109 bindButton($form_signup.find('input[type="submit"]'), 4000, register); 110 bindButton($form_forgot_password.find('input[type="submit"]'), 2000, forgotPassword); 111 112 $("html").click(function(){ 113 $("#languageMenu").hide(); 114 }) 115 116 $("#languageButton").click(function(event){ 117 event.stopPropagation(); 118 if ($("#languageMenu").is(":visible")){ 119 $("#languageMenu").hide(); 120 } else { 121 $("#languageMenu").show(); 122 } 123 }) 124 125 $(".menuicon").on("click", function(event){
126 console.log("Meeeeeeeeeeeeee"); 127 event.stopPropagation(); 128 if ($(".meniu").is(":visible")){ 129 $(".meniu").hide(); 130 } else { 131 $(".meniu").show(); 132 } 133 }) 134 135 //IE9 placeholder fallback 136 //credits http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html 137/* if(!Modernizr.input.placeholder){ 138 $('[placeholder]').focus(function() { 139 var input = $(this); 140 if (input.val() == input.attr('placeholder')) { 141 input.val(''); 142 } 143 }).blur(function() { 144 var input = $(this); 145 if (input.val() == '' || input.val() == input.attr('placeholder')) { 146 input.val(input.attr('placeholder')); 147 } 148 }).blur(); 149 $('[placeholder]').parents('form').submit(function() { 150 $(this).find('[placeholder]').each(function() { 151 var input = $(this); 152 if (input.val() == input.attr('placeholder')) { 153 input.val(''); 154 } 155 }) 156 }); 157 } 158*/ 159}); 160 161 162//credits http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/ 163jQuery.fn.putCursorAtEnd = function() { 164 return this.each(function() { 165 // If this function exists... 166 if (this.setSelectionRange) { 167 // ... then use it (Doesn't work in IE) 168 // Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh. 169 var len = $(this).val().length * 2; 170 this.setSelectionRange(len, len); 171 } else { 172 // ... otherwise replace the contents with itself 173 // (Doesn't work in Google Chrome) 174 $(this).val($(this).val()); 175 } 176 }); 177}; 178 179/////// 180/////// LOGIN AND REGISTER CODE 181/////// 182/////// 183/////// 184/////// 185/////// 186/////// 187/////// 188/////// 189/////// 190/////// 191/////// 192 193function closeDialog(){ 194 $('.user-modal').removeClass('is-visible'); 195} 196 197function login() { 198 var signinEmail = $('#signin-email').val(); 199 var signinPassword = $('#signin-password').val(); 200 myAjax({ 201 url: 'LoginServlet', 202 data: { 203 email: signinEmail, 204 password: signinPassword 205 }, 206 success: function(res) { 207 console.log("login success"); 208 console.log(res); 209 pushCookie(res.tokenID); 210 setCookie(res.tokenID, $('#rememberMe').is(':checked')); 211 closeDialog(); 212 window.location.href = "https://www.seolium.com/seo/tools/projects/"; 213 }, 214 error: function(data) { 215 console.log("login error"); 216 $("#loginErrorMessage").addClass("is-visible"); 217 setTimeout(function(){ 218 $("#loginErrorMessage").removeClass("is-visible"); 219 }, 4000); 220 } 221 }); 222} 223 224function register() { 225 var signupEmail = $('#signup-email').val(); 226 myAjaxUrl({ 227 url: 'register', 228 data: { 229 email: signupEmail 230 }, 231 success: function(res) { 232 gtag("event", "Registration", { 233 "event_category": "Conversion", 234 "event_label": "Menu", 235 "UserId": res.userId 236 }); 237 gtag("event", "SetEmail", {"UserEmail": signupEmail, "UserId": res.userId}); 238 console.log(res); 239 console.log("signup success"); 240 console.log(res.userId); 241 $("#registerMessage").show(); 242 setTimeout(function(){ 243 $("#registerMessage").hide(); 244 closeDialog(); 245 }, 4000); 246 }, 247 error: function(res) { 248 console.log("signup error"); 249 $("#signupErrorMessage").addClass("is-visible"); 250 setTimeout(function(){ 251 $("#signupErrorMessage").removeClass("is-visible"); 252 }, 7000); 253 } 254 }, "project/"); 255} 256 257function forgotPassword() { 258 forgotEmailValue = $('#reset-email').val(); 259 myAjax({ 260 url: 'changepassword', 261 data: { 262 forgotEmail: forgotEmailValue 263 }, 264 success: function(res) { 265 closeDialog(); 266 }, 267 error: function(res) { 268 console.log("forgot password error"); 269 $("#forgotMessage").show(); 270 setTimeout(function(){ 271 $("#forgotMessage").hide(); 272 closeDialog(); 273 }, 7000); 274 } 275 }) 276} 277 278function pushCookie(cookie) { 279 console.log("pushing user information"); 280 myAjax({ 281 url: "Cookie", 282 data: { 283 tokenID: cookie 284 }, 285 success: function(){ 286 console.log("pushed"); 287 }, 288 error: function(){ 289 console.log("pushing error"); 290 } 291 }); 292} 293 294function setCookie(cookieValue, isRemembered) { 295 var timeToStay = isRemembered ? (10 * 24 * 60 * 60 * 1000) : (60 * 60 * 1000); 296 var rememberPostfix = isRemembered ? "" : "!"; 297 var finalCookieValue = cookieValue + rememberPostfix; 298 var date = new Date(); 299 date.setTime(date.getTime() + timeToStay); 300 document.cookie = "userCookie=" + finalCookieValue + "; expires=" + date.toGMTString() + "; path=/"; 301} 302 303function myAjax(object){
304 myAjaxUrl(object, "login/"); 305} 306 307function myAjaxUrl(object, baseUrl) { 308 $.ajax({ 309 url : engineUrl + baseUrl + object.url, 310 type : "GET", 311 dataType : "jsonp", 312 data : object.data, 313 xhrFields : { 314 withCredentials : true 315 }, 316 success : function(data) { 317 if (!data.hasOwnProperty("errorCode") || data.errorCode != 0) { 318 object.error(data); 319 } else { 320 object.success(data); 321 } 322 }, 323 error : object.error 324 }) 325} 326 327function bindButton(button, time, callback){ 328 button.on('click', function(event){ 329 event.preventDefault(); 330 button.prop('disabled', true); 331 setTimeout(function(){ 332 button.prop('disabled', false); 333 }, time); 334 callback(); 335 }) 336 }
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.