Joideo

Get Started

In a classroom, lecture hall, or even just a small group gathered in a coffee shop, sharing a video as a part of a discussion is very effective means of communicating a point. Unfortunately, it’s nearly impossible for the entire group of viewers to huddle around one device to watch the same video, and launching the same video from multiple devices creates chaos and makes using the video for discussion nearly pointless. Joideo (meaning Join Video), allows one device to control video playback on multiple devices for synchronous viewing, so each viewer can view the same video on their own device simultaneously with other viewers in the same group. Joideo makes the group viewing experience much better than even watching the video on a projection screen because viewers can use their own device and even be in a different room. Use Joideo as the Controller or User – both are built into the same app. Controller can launch, pause, stop and scrub a video and the effect will change on all User devices that are connected.

Our Contributions

  • Design
  • Development and store submission

Supported Devices

  • iPhone
  • iPad

Development Tools/Environments

  • Xcode, Eclipse
  • php/MySQL, JSON
  • Code Ignitor, Cloud server

Category

Top jQuery(document).ready(function() { $(window).on('load', function () { if (window.location.hash) { const target = $(window.location.hash); if (target.length) { // Force scroll after load and default jump setTimeout(function () { window.scrollTo({ top: target.offset().top - 150, // Change 100 to your header height behavior: 'smooth' // Use 'auto' if you don't want animation }); }, 50); // Increase delay slightly to ensure it overrides browser jump } } }); function setMainHeight() { const headerHeight = $('header').outerHeight(); const windowHeight = $(window).height(); $('.chat-view-main-wrapper').css({ 'min-height': (windowHeight - headerHeight) + 'px', 'padding-top': headerHeight + 'px' }); } setMainHeight(); $(window).on('resize', setMainHeight); // jQuery('.owl-item').trigger('click'); // jQuery( ".owl-item" ).on( "click", function() { // alert('hiiii'); // }); /****popup*****/ jQuery('.request').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.startBtn').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.get-started-btn').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.btn-main').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.btn-trans').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.btn-main1').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.login-window').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.iot-get').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.iot-connect').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); jQuery('.startBtn').click(function() { jQuery('#send_mail_popup').find("input[type=text], textarea").val(""); jQuery('#login-box').bPopup({ follow: [false, false] }); }); /*****pop up end*****/ /********pop up form submit**********/ jQuery("#send_mail").submit(function(e) { e.preventDefault(); var error1 = 0; var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; jQuery("#send_mail .required_form").each(function() { id = this.id; val = jQuery.trim(jQuery(this).val()); if (val != '') { //jQuery('#'+id+'_error').hide(); jQuery('#' + id).removeClass('border-error'); if ((id == 'c_email')) { var em = re.test(val); if (!em) { error1 = 1; //jQuery('#'+id+'_error').show(); jQuery('#' + id).addClass('border-error'); } } } else { error1 = 1; //jQuery('#'+id+'_error').show(); jQuery('#' + id).addClass('border-error'); } }); var url = '/wp-content/themes/zen7/send_mail.php'; // the script where you handle the form input. if (error1 == 0) { jQuery('#success').html('Submitting...'); jQuery('#success').attr('disabled', 'true'); jQuery.ajax({ type: "POST", url: url, data: jQuery("#send_mail").serialize(), // serializes the form's elements. success: function(data) { if (data == 1) { jQuery('#captcha_error').show(); jQuery('#success').removeAttr('disabled'); jQuery('#success').html('Submit'); } else { jQuery('#send_mail').trigger("reset"); jQuery('#success').removeAttr('disabled'); jQuery('#success').html('Submit'); jQuery('#mask , .login-popup').fadeOut(300, function() { jQuery('#mask').remove(); }); window.location.href = "https://oneteam.us/thank-you/"; } } }); } }); /********pop up form submit end*********/ /********home page form submit**********/ jQuery("#send_mail_home").submit(function(e) { e.preventDefault(); var error1 = 0; var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; /****recapcha validation**** response = document.getElementsByName("g-recaptcha-response")[1].value; jQuery.ajax({ type: "POST", url: 'https://www.google.com/recaptcha/api/siteverify', dataType: 'json', crossDomain:true, async:true, data: { 'secret':'6LchLCITAAAAADB0ArxNLeq_VCwY7oJafO2KJgAc', 'response' : response, }, success: function(data) { } }); /********/ jQuery("#send_mail_home .required_form").each(function() { id = this.id; val = jQuery.trim(jQuery(this).val()); if (val != '') { //jQuery('#'+id+'_error').hide(); jQuery('#' + id).removeClass('border-error'); if ((id == 'c_email_home')) { var em = re.test(val); if (!em) { error1 = 1; //jQuery('#'+id+'_error').show(); jQuery('#' + id).addClass('border-error'); } } } else { error1 = 1; //jQuery('#'+id+'_error').show(); jQuery('#' + id).addClass('border-error'); } }); var url = '/wp-content/themes/zen7/send_mail.php'; // the script where you handle the form input. if (error1 == 0) { jQuery('#success_home').html('Submitting...'); jQuery('#success_home').attr('disabled', 'true'); jQuery.ajax({ type: "POST", url: url, data: jQuery("#send_mail_home").serialize(), // serializes the form's elements. success: function(data) { if (data == 1) { jQuery('#captcha_home_error').show(); jQuery('#success_home').removeAttr('disabled'); jQuery('#success_home').html('Submit'); } else { /*jQuery('html, body').animate({scrollTop : (jQuery(".success_message").offset().top)-200},500); jQuery('.success_message').fadeIn( "5000", function() { }); jQuery('.success_message').fadeOut( 10000, function() { }); jQuery('#captcha_home_error').hide(); jQuery('#send_mail_home').trigger("reset"); jQuery('#success_home').removeAttr('disabled'); jQuery('#success_home').html('Submit'); grecaptcha.reset(recaptcha1);*/ window.location.href = "https://oneteam.us/thank-you/"; } } }); } }); /********home page form submit end*********/ /*****highlighter******/ var pathname = window.location.pathname; parts = pathname.split('/'); last_part = parts[parts.length - 2]; last_part = (last_part.replace(/[^a-z0-9\s]/gi, '').replace(/-/g, "")).substring(0, 11); last_part = last_part.toLowerCase(); jQuery(".wpb_wrapper .widget_nav_menu .menu-item").each(function() { title = jQuery(this).text(); title = (title.replace(/[^a-zA-Z0-9]+/g, "")).substring(0, 11); title = title.toLowerCase(); if (last_part == title) jQuery(this).children('a').addClass("highlight_menu"); }); /**********highlighter end***********/ });