1var fc = fc || {}; 2var freezeVp = function(e) { 3 e.preventDefault(); 4}; 5function stopBodyScrolling (bool) { 6 if (bool === true) { 7 document.body.addEventListener("touchmove", freezeVp, false); 8 } else { 9 document.body.removeEventListener("touchmove", freezeVp, false); 10 } 11} 12function dropdownToggleCallback(action) { 13 if (fc.isMobileVersion) { 14 if (action === "open") { 15 stopBodyScrolling(true); 16 $("html").addClass("dropdown_opened"); 17 } else { 18 stopBodyScrolling(false); 19 $("html").removeClass("dropdown_opened"); 20 } 21 } 22 $("#hero #login_username").click().focus(); 23} 24$(function(){ 25 var quotes = [ 26 { 27 quote: "Freedcamp is amazing stuff. I use it everyday and it helps me to maintain my sanity. Highly recommended for those juggling projects.", 28 author: "Eric Hilliard", 29 username: "erichilliard", 30 avatar: cdn_front_url + "images/quotes/erichil.jpg", 31 link: "https://twitter.com/erichilliard" 32 33 }, 34 { 35 quote: "We love your product and are so glad we can help spread the news!", 36 author: "Intellitonicâ", 37 username: "Intellitonic", 38 avatar: cdn_front_url + "images/quotes/intellitonic.jpg", 39 link: "https://twitter.com/Intellitonic" 40 41 }, 42 { 43 quote: "I am crushing on Freedcamp, the free project management tool. Organize any group activity today with ease.", 44 author: "Lisa Laskey Parks", 45 username: "fit_is_ageless", 46 avatar: cdn_front_url + "images/quotes/lisa.jpg", 47 link: "https://twitter.com/fit_is_ageless" 48 49 },{ 50 quote: "I'm loving @Freedcamp! Best project management system yet! #designergoals", 51 author: "Rebecca Smetak", 52 username: "rsdesigncreativ", 53 avatar: cdn_front_url + "images/quotes/rebecca.jpg", 54 link: "https://twitter.com/rsdesigncreativ" 55 56 }, 57 { 58 quote: "The best Project Management App is: Freedcamp, I absolutely love them", 59 author: "Milan Vuk Stankovic", 60 username: "LanmiDCS", 61 avatar: cdn_front_url + "images/quotes/milan.jpg", 62 link: "https://twitter.com/LanmiDCS" 63 64 }, 65 { 66 quote: "Freedcamp is the market leader and we are proud to be a part of your community!", 67 author: "Michael Peters", 68 username: "NewJerseySPCA", 69 avatar: cdn_front_url + "images/quotes/njspca.jpg", 70 link: "https://twitter.com/NewJerseySPCA" 71 72 } 73 ]; 74 var quotes2 = [ 75 { 76 quote: "Shout out to @Freedcamp - we've been using it for about a week and love it!", 77 author: "SECOND STORY", 78 username: "2ndstoryagency", 79 avatar: cdn_front_url + "images/quotes/secondstory.jpg", 80 link: "https://twitter.com/2ndstoryagency" 81 82 }, 83 { 84 quote: "Started using @Freedcamp for project management. Love it!", 85 author: "Troy Coroles", 86 username: "TroyCoroles", 87 avatar: cdn_front_url + "images/quotes/troy.jpeg", 88 link: "https://twitter.com/TroyCoroles" 89 90 }, 91 { 92 quote: "PM and QA are my passion, and it is a pleasure to use Freedcamp. Thank you @Freedcamp team for all your support and generous reward!", 93 author: "Robert Okadar", 94 username: "araneanetwork", 95 avatar: cdn_front_url + "images/quotes/robert.jpeg", 96 link: "https://twitter.com/araneanetwork" 97 98 }, 99 { 100 quote: "My new favorite FREE project management software. Freedcamp.com", 101 author: "Tina Sullivan", 102 username: "TinaPSullivan", 103 avatar: cdn_front_url + "images/quotes/tina.jpeg", 104 link: "https://twitter.com/TinaPSullivan" 105 106 } 107 ]; 108 $.autocapitalize(); 109 fkit.initiatePlugins(); 110 var $template = $(".reviews .review").clone(); 111 var $reviews = $(".reviews"); 112 $("#all_reviews").on("click", ".load_more", function(e){ 113 e.preventDefault(); 114 show_more_clicked = true; 115 loadTweets(quotes2); 116 // $.extend( configList, { "maxTweets": 20 } ); 117 // twitterFetcher.fetch(configList); 118 }); 119 var show_more_clicked = false;
120 function loadTweets(quotes) { 121 if (!show_more_clicked) { 122 $reviews.html(""); 123 } 124 for (var i = 0; i < quotes.length; i++) { 125 var $new_template = $template.clone(); 126 $new_template.find(".message").text(quotes[i].quote); 127 $new_template.find(".avatar").css({"background-image":"url("+quotes[i].avatar+")"}); 128 $new_template.find(".first_last").text(quotes[i].author); 129 $new_template.find(".twitter").attr("href", quotes[i].link).text("@" + quotes[i].username); 130 $reviews.append($new_template); 131 //if (!show_more_clicked) { 132 $new_template.addClass("animate"); 133 //} 134 } 135 if (!show_more_clicked) { 136 setWayPoints(); 137 } else { 138 $(".load_more").remove(); 139 } 140 } 141 setTimeout(function(){ 142 loadTweets(quotes); 143 },300); 144 145 146 $(".quick_add_project_name").on("click",function(){ 147 var $th = $(this); 148 $("#project_name").val($th.find(".spaced_text").text()); 149 $("#project_name").focus(); 150 }); 151 152 function showLoadingScreenOverlay() { 153 $('.fc_home_loading_screen').css('display', 'flex') 154 .hide() 155 .fadeIn(function () { 156 setTimeout(function () { 157 setTimeout(function () { 158 $('.fc_task_popover_single').first().addClass('donedone'); 159 }, 1000); 160 setTimeout(function () { 161 $('.fc_task_popover_single:nth-of-type(2)').addClass('donedone'); 162 }, 3900); 163 setTimeout(function () { 164 $('.fc_task_popover_single:nth-of-type(3)').addClass('donedone'); 165 }, 6700); 166 }, 500); 167 }); 168 } 169 function hideLoadingScreenOverlay() { 170 $('.fc_home_loading_screen').hide(); 171 $('.fc_task_popover_single.donedone').removeClass('donedone'); 172 } 173 174 $(".register_form").submit(function(e){ 175 e.preventDefault(); 176 177 if (!$(".a_js_token").length) { 178 var t = $('input[name=a_token]'); 179 if (t.length) { 180 var val = t.first().val(); 181 t.parents('form').append("<input class='a_js_token' type='hidden' name='a_js_token' value='" + val + "'>"); 182 } 183 } 184 185 var $th = $(this); 186 var entered_email = $th.find('input[name=email]'); 187 var entered_email_val = entered_email.val(); 188 if(!fc.validateEmail(entered_email_val)) { 189 entered_email.addClass("error").parents(".field").addClass("error_field") 190 .parents(".group").addClass("error_group"); 191 entered_email.focus(); 192 return; 193 } 194 showLoadingScreenOverlay(); 195 var url = base_url + "register";
196 ajaxRequest(url, $th.serializeFormJSON(), function(response) { 197 if (response.data.f_error) { 198 hideLoadingScreenOverlay(); 199 $th[0].processErrors(response.data.errors,true); 200 if (response.message) { 201 alert(response.message); 202 } 203 return; 204 } 205 window.location = response.data.redirect_to; 206 }); 207 }); 208 209 if ($(".first_last").val() !== "") { 210 $(".register_form").submit(); 211 } 212 var scroll_when = [ 213 { elem: "#features_tasks .section_title", add_to: "#features_tasks .section_title", offset: 50}, 214 { elem: "#features_tasks .feature_column_left", add_to: "#features_tasks .feature_column_left,#features_tasks .browser-container", offset: 650}, 215 { elem: "#register_follow_up .section_inner", add_to: "#register_follow_up .section_inner", offset: 200}, 216 { elem: "#features_apps .section_title", add_to: "#features_apps .section_title", offset: 100}, 217 { elem: "#features_apps .feature_column_left", add_to: "#features_apps .feature_column_left,#features_apps .browser-container", offset: 880}, 218 { elem: "#mobile .mobile_content", add_to: "#mobile .mobile_content,#mobile .iphone, #mobile .app-icon", offset: 300}, 219 { elem: "#features_modules .section_title", add_to: "#features_modules .section_title", offset: 30}, 220 { elem: "#features_modules .feature_list", add_to: "#features_modules .feature_list .feature", offset: 460}, 221 { elem: "#main_user_review .section_inner", add_to: "#main_user_review .section_inner", offset: 100}, 222 { elem: "#all_reviews .section_title", add_to: "#all_reviews .section_title", offset: 30}, 223 { elem: "#all_reviews .reviews", add_to: "#all_reviews .review", offset: 461}, 224 { elem: "#register_final .section_inner", add_to: "#register_final .section_inner", offset: 30}, 225 { elem: "footer .section_inner", add_to: "footer .section_inner", offset: 10} 226 ]; 227 function isElementInViewport (el, offset) { 228 var $el = el; 229 if (typeof jQuery === "function" && el instanceof jQuery) { 230 el = el[0]; 231 } 232 if (typeof el === "undefined") 233 return; 234 var rect = el.getBoundingClientRect(); 235 return (rect.top + offset >= 0 && 236 rect.left >= 0 && 237 rect.bottom - offset <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ 238 rect.right <= (window.innerWidth || document.documentElement.clientWidth)); 239 } 240 function addAnimateClass($elem, $animate, offset) { 241 if ( isElementInViewport($elem, offset) && !$animate.hasClass("animate")) { 242 $animate.addClass("animate"); 243 } 244 $(window).scroll(function() { 245 if ( isElementInViewport($elem, offset) && !$animate.hasClass("animate") ) { 246 $animate.addClass("animate"); 247 } 248 }); 249 } 250 function setWayPoints() { 251 for ( var i = 0; i < scroll_when.length; i++ ) { 252 addAnimateClass($(scroll_when[i].elem), $(scroll_when[i].add_to), scroll_when[i].offset); 253 } 254 } 255 256 $(".feature_toggle").each(function(){ 257 var self = this; 258 self.$th = $(this); 259 self.$feature_list = self.$th.find(".feature_list"); 260 self.$browser = self.$th.find(".feature_screenshot_list"); 261 self.$feature_list.on("click", ".feature", function(e){ 262 self.$browser.find("li").hide(); 263 self.$feature_list.find("li").removeClass("active"); 264 $(this).addClass("active"); 265 self.$browser.find("li").eq($(this).index()).css({"display":"block"}).addClass("animate"); 266 }); 267 self.$feature_list.find("li:first-child").click(); 268 }); 269 270 $(".go_to_signup").on("click", function(e){ 271 e.preventDefault(); 272 var $scroll_to = fc.isMobileVersion ? $("#register .register_form") : $("#hero"); 273 var offset_to = fc.isMobileVersion ? -20 : 100; 274 $('html, body').animate({ 275 scrollTop: $scroll_to.offset().top + offset_to 276 }, 700); 277 $("#hero .email").focus(); 278 }); 279 $(".go_to_login").on("click", function(e){ 280 e.preventDefault(); 281 $('html, body').animate({ 282 scrollTop: $("#hero").offset().top 283 }, 700); 284 setTimeout(function(){ 285 $(".login .fkit_dropdown_activate").trigger("click"); 286 $("#hero #login_username").focus(); 287 },650); 288 }); 289 $("a.contact, .contact_support_now").on("click",function(e){ 290 e.preventDefault(); 291 window.openSupportChatBotFrontpage({ 292 callback: (conversationId) => { 293 $("#contact #bot_support_conversation_id").val(conversationId); 294 showContact($(this)); 295 } 296 }); 297 }); 298 // Hide contact form 299 $(document).on("click", "a.close_popup", function(e) { 300 e.preventDefault(); 301 hideContact(); 302 }); 303 304 var contact_popup_orig_top = 0; 305 function showContact(elem) { 306 var url = base_url + "get_contact"; 307 var location = elem.hasClass('contact') ? 'footer' : 'header'; 308 309 if($('.contact_dialog').length) {//already loaded 310 $('.contact_lighten, .contact_darken').fadeIn(400); 311 $('#contact').show(); 312 $('#contact_success').hide(); 313 setContactPopupStyles(location, elem); 314 $('.contact_dialog').fadeIn(400); 315 return true; 316 } 317 318 ajaxRequest(url, {}, function(response) { 319 $('body').prepend(response.data.html); 320 $('.contact_lighten, .contact_darken').fadeIn(200); 321 contact_popup_orig_top = parseInt($('.contact_dialog').css('top'), 10); 322 323 setContactPopupStyles(location, elem); 324 $('.contact_dialog').fadeIn(200); 325 $("#contact").submit(function(){ 326 doContact(); 327 return false;
328 }); 329 }); 330 }; 331 332 function doContact() { 333 var url = base_url + "contact"; 334 335 var extra_params = {onError : function(response){ 336 $("form#contact")[0].processErrors(response); 337 }}; 338 ajaxRequest(url, $("form#contact").serializeFormJSON(), function() { 339 $('#contact')[0].reset(); 340 $('#contact').hide(); 341 $('#contact_success').show(); 342 setTimeout(function(){ hideContact(); }, 6000); 343 }, extra_params); 344 }; 345 346 function hideContact() { 347 $('.contact_lighten, .contact_darken').removeClass('footer'); 348 $('.contact_dialog').removeClass('header footer'); 349 $('.contact_dialog, .contact_lighten, .contact_darken').fadeOut(1000); 350 }; 351 352 function setContactPopupStyles(location, elem) { 353 var left = ($(window).width() - $('.contact_dialog').outerWidth())/2; 354 $('.contact_dialog').css({"top":contact_popup_orig_top, "bottom":'auto', "left": left}); 355 } 356 357}); 358 359if(is_frontpage) { 360 $(window).load(function () { 361 if ($(".preload").length) { 362 $(".preload").addClass('active'); 363 } 364 }); 365} 366 367$(function () { 368 var isMobile = fc.mobilecheck(); 369 370 $("#login_form").on("submit", function(e){ 371 e.preventDefault(); 372 var $th = $(this); 373 var data = {}; 374 data.username = $('#login_username').val(); 375 data.password = $('#login_password').val(); 376 data.remember = $('#remember_me').is(':checked') ? 1 : 0; 377 data.a_token = $('input[name="a_token"]').val(); 378 379 data.f_ajax_login = 1; 380 var location = getURLParameter('location'); 381 if (location) { 382 data.location = location; 383 } 384 385 var url = base_url + "login"; 386 387 $("#login_loader").show(); 388 389 var extra_params = { 390 onError : function(response){ 391 if (response.status === "error") { 392 var errors = response.data; 393 if (empty(errors)) { 394 errors = {'global_error' : response.message}; 395 } 396 $th[0].processErrors(errors); 397 } 398 $("#login_loader").hide(); 399 }}; 400 401 ajaxRequest(url, data, function(response){ 402 $("#login_loader").hide(); 403 window.location = response.data.redirect_to; 404 }, extra_params); 405 }); 406 407 408 $("#forgot_password").click(function(){ 409 var url = $(this).attr("href"); 410 url += "?email=" + encodeURIComponent($("#login_username").val()); 411 window.location = url; 412 return false; 413 }); 414 415 $('#add_st').hover( 416 function() { 417 $('#storage_extra').fadeIn(); 418 }, function() { 419 setTimeout( function() { $('#storage_extra').fadeOut(); }, 2000); 420 } 421 ); 422 423 $('.start_trial').click(function(e){ 424 e.preventDefault(); 425 var plan_id = $(this).data("plan-id"); 426 var url = base_url + "/marketplace/subscriptions/start_trial"; 427 ajaxRequest(url, {plan_id : plan_id}, function(){ }, { onError: function(response){ 428 $('#start_tr_err').html(response.message); 429 $.magnificPopup.open({ 430 items: { 431 src: '#error_popup', 432 type: 'inline' 433 } 434 }); 435 //alert(response.message); 436 } }); 437 }); 438 439 $('.popup__close-btn').click(function(){ 440 var magnificPopup = $.magnificPopup.instance; 441 magnificPopup.close(); 442// $(this).parents(".popup").hide(); 443 }); 444 445 $('.fc_for_people_link').click(function(e){ 446 e.preventDefault(); 447 var scrollTo = $("#for_the_people").parent().offset().top - $("#main-header").height(); 448 $('html, body').animate({ 449 scrollTop: scrollTo 450 }, 800); 451 }); 452 $('.fc_active_users_link').click(function(e){ 453 e.preventDefault(); 454 var scrollTo = $("#active_users").parent().offset().top - $("#main-header").height(); 455 $('html, body').animate({ 456 scrollTop: scrollTo 457 }, 800); 458 }); 459 $('.fc_entrp_link').click(function(e){ 460 e.preventDefault(); 461 var scrollTo = $("#enterprise_benefits").parent().offset().top - $("#main-header").height(); 462 $('html, body').animate({ 463 scrollTop: scrollTo 464 }, 800); 465 }); 466 $('.core_apps').click(function(e){ 467 e.preventDefault(); 468 var scrollTo = $("#core_apps").parent().offset().top - $("#main-header").height(); 469 $('html, body').animate({ 470 scrollTop: scrollTo 471 }, 800); 472 }); 473 474 $('.dropdown-hint .pricing-cell').on('click', function(e) { 475 if($(this).hasClass('expanded')) { 476 $(this).removeClass('expanded'); 477 } else { 478 $('.pricing-cell.expanded').removeClass('expanded'); 479 $(this).addClass('expanded'); 480 } 481 }); 482 483 $('.toggle').on('click', function(e) { 484 $(this).toggleClass('is-active'); 485 $('.pricing-plans').find('.plan-monthly-value, .plan-yearly-value').toggleClass('hide'); 486 487 var is_annual = $(this).hasClass('is-active'); 488 $('.pricing-plans').find('.button-cta.checkout').each(function(){ 489 $(this).attr('href', $(this).data('href') + '/' + (is_annual ? 'annual' : 'monthly')); 490 }); 491 }); 492}); 493 494fc.mobilecheck = function () { 495 var check = false;
496 (function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera); 497 return check; 498}; 499 500function getURLParameter(name) { 501 return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; 502} 503 504 505/* REVEAL LIST VS KANBAN */ 506 507jQuery(document).ready(function($){ 508 //check if the .cd-image-container is in the viewport 509 //if yes, animate it 510 checkPosition($('.cd-image-container')); 511 $(window).on('scroll', function(){ 512 checkPosition($('.cd-image-container')); 513 }); 514 515 //make the .cd-handle element draggable and modify .cd-resize-img width according to its position 516 $('.cd-image-container').each(function(){ 517 var actual = $(this); 518 drags(actual.find('.cd-handle'), actual.find('.cd-resize-img'), actual, actual.find('.cd-image-label[data-type="original"]'), actual.find('.cd-image-label[data-type="modified"]')); 519 }); 520 521 //upadate images label visibility 522 $(window).on('resize', function(){ 523 $('.cd-image-container').each(function(){ 524 var actual = $(this); 525 updateLabel(actual.find('.cd-image-label[data-type="modified"]'), actual.find('.cd-resize-img'), 'left'); 526 updateLabel(actual.find('.cd-image-label[data-type="original"]'), actual.find('.cd-resize-img'), 'right'); 527 }); 528 }); 529}); 530 531function checkPosition(container) { 532 container.each(function(){ 533 var actualContainer = $(this); 534 if( $(window).scrollTop() + $(window).height()*0.5 > actualContainer.offset().top) { 535 actualContainer.addClass('is-visible'); 536 } 537 }); 538} 539 540//draggable funtionality - credits to http://css-tricks.com/snippets/jquery/draggable-without-jquery-ui/ 541function drags(dragElement, resizeElement, container, labelContainer, labelResizeElement) { 542 dragElement.on("mousedown vmousedown", function(e) { 543 dragElement.addClass('draggable'); 544 resizeElement.addClass('resizable'); 545 546 var dragWidth = dragElement.outerWidth(), 547 xPosition = dragElement.offset().left + dragWidth - e.pageX, 548 containerOffset = container.offset().left, 549 containerWidth = container.outerWidth(), 550 minLeft = containerOffset + 10, 551 maxLeft = containerOffset + containerWidth - dragWidth - 10; 552 553 dragElement.parents().on("mousemove vmousemove", function(e) { 554 leftValue = e.pageX + xPosition - dragWidth; 555 556 //constrain the draggable element to move inside his container 557 if(leftValue < minLeft ) { 558 leftValue = minLeft; 559 } else if ( leftValue > maxLeft) { 560 leftValue = maxLeft; 561 } 562 563 widthValue = (leftValue + dragWidth/2 - containerOffset)*100/containerWidth+'%'; 564 565 $('.draggable').css('left', widthValue).on("mouseup vmouseup", function() { 566 $(this).removeClass('draggable'); 567 resizeElement.removeClass('resizable'); 568 }); 569 570 $('.resizable').css('width', widthValue); 571 572 updateLabel(labelResizeElement, resizeElement, 'left'); 573 updateLabel(labelContainer, resizeElement, 'right'); 574 575 }).on("mouseup vmouseup", function(e){ 576 dragElement.removeClass('draggable'); 577 resizeElement.removeClass('resizable'); 578 }); 579 e.preventDefault(); 580 }).on("mouseup vmouseup", function(e) { 581 dragElement.removeClass('draggable'); 582 resizeElement.removeClass('resizable'); 583 }); 584} 585 586function updateLabel(label, resizeElement, position) { 587 if(position == 'left') { 588 ( label.offset().left + label.outerWidth() < resizeElement.offset().left + resizeElement.outerWidth() ) ? label.removeClass('is-hidden') : label.addClass('is-hidden') ; 589 } else { 590 ( label.offset().left > resizeElement.offset().left + resizeElement.outerWidth() ) ? label.removeClass('is-hidden') : label.addClass('is-hidden') ; 591 } 592} 593 594// Check if mobile device to apply special JavaScript 595if(navigator.userAgent.match(/Android/i) 596 || navigator.userAgent.match(/webOS/i) 597 || navigator.userAgent.match(/iPhone/i) 598 || navigator.userAgent.match(/iPad/i) 599 || navigator.userAgent.match(/iPod/i) 600 || navigator.userAgent.match(/BlackBerry/i) 601 || navigator.userAgent.match(/Windows Phone/i) 602){ 603 // WE're IN MOBILE LAND 604 fc.isMobileVersion = true; 605 $("body").addClass("fc_mobile"); 606 607} 608$(function(){ 609 function checkWindowWidth() { 610 if( $(window).width() < 767 ) { 611 fc.isMobileVersion = true; 612 $("body").addClass("fc_mobile"); 613 } else { 614 fc.isMobileVersion = false;
615 $("body").removeClass("fc_mobile"); 616 } 617 } 618 619 $("#dismiss_update_lnk").click(function(){ 620 $(".updates_block").hide(); 621 fc.setCookie('f_dismiss_update', 1, 365); 622 return false; 623 }); 624 625 checkWindowWidth(); 626 $(window).resize(checkWindowWidth); 627});
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.