public static function renderJavaScript()
    {
        $uploadSizeInBytes = min(MainWPHelper::return_bytes(ini_get('upload_max_filesize')), MainWPHelper::return_bytes(ini_get('post_max_size')));
        $uploadSize = MainWPHelper::human_filesize($uploadSizeInBytes);
        ?>
    <div id="mainwp-child_clone_status" title="Restore process"></div>
    <script language="javascript">
        jQuery(document).on('change', '#file', function()
        {
            var maxSize = <?php 
        echo $uploadSizeInBytes;
        ?>
;
            var humanSize = '<?php 
        echo $uploadSize;
        ?>
';

            if (this.files[0].size > maxSize)
            {
                jQuery('#filesubmit').attr('disabled', 'disabled');
                alert('The selected file is bigger than your maximum allowed filesize. (Maximum: '+humanSize+')');
            }
            else
            {
                jQuery('#filesubmit').removeAttr('disabled');
            }
        });
        jQuery(document).on('click', '#mainwp-child_displayby_sitename', function() {
            jQuery('#mainwp-child_displayby_url').removeClass('mainwp-child_action_down');
            jQuery(this).addClass('mainwp-child_action_down');
            jQuery('.mainwp-child_url_label').hide();
            jQuery('.mainwp-child_name_label').show();
            return false;
        });
        jQuery(document).on('click', '#mainwp-child_displayby_url', function() {
            jQuery('#mainwp-child_displayby_sitename').removeClass('mainwp-child_action_down');
            jQuery(this).addClass('mainwp-child_action_down');
            jQuery('.mainwp-child_name_label').hide();
            jQuery('.mainwp-child_url_label').show();
            return false;
        });
        jQuery(document).on('click', '.clonesite_select_site_item', function() {
            jQuery('.clonesite_select_site_item').removeClass('selected');
            jQuery(this).addClass('selected');
        });

        var pollingCreation = undefined;
        var backupCreationFinished = false;

        var pollingDownloading = undefined;
        var backupDownloadFinished = false;

        handleCloneError = function(resp)
        {
            updateClonePopup(resp.error, true, 'red');
        };

        updateClonePopup = function(pText, pShowDate, pColor)
        {
            if (pShowDate == undefined) pShowDate = true;

            var theDiv = jQuery('#mainwp-child_clone_status');
            theDiv.append('<br /><span style="color: ' + pColor + ';">' + (pShowDate ? cloneDateToHMS(new Date()) + ' ' : '') + pText + '</span>');
            theDiv.animate({scrollTop: theDiv.height() * 2}, 100);
        };

        cloneDateToHMS = function(date) {
            var h = date.getHours();
            var m = date.getMinutes();
            var s = date.getSeconds();
            return '' + (h <= 9 ? '0' + h : h) + ':' + (m<=9 ? '0' + m : m) + ':' + (s <= 9 ? '0' + s : s);
        };

        var translations = [] ;
        translations['large_site'] = "<?php 
        _e('This is a large site (%dMB), the restore process will more than likely fail.', 'mainwp-child');
        ?>
";
        translations['continue_anyway'] = "<?php 
        _e('Continue Anyway?', 'mainwp-child');
        ?>
";
        translations['creating_backup'] = "<?php 
        _e('Creating backup on %s expected size: %dMB (estimated time: %d seconds)', 'mainwp-child');
        ?>
";
        translations['backup_created'] = "<?php 
        _e('Backup created on %s total size to download: %dMB', 'mainwp-child');
        ?>
";
        translations['downloading_backup'] = "<?php 
        _e('Downloading backup', 'mainwp-child');
        ?>
";
        translations['backup_downloaded'] = "<?php 
        _e('Backup downloaded', 'mainwp-child');
        ?>
";
        translations['extracting_backup'] = "<?php 
        _e('Extracting backup and updating your database, this might take a while. Please be patient.', 'mainwp-child');
        ?>
";
        translations['clone_complete'] = "<?php 
        _e('Cloning process completed successfully!', 'mainwp-child');
        ?>
";

        cloneInitiateBackupCreation = function(siteId, siteName, size, rand, continueAnyway)
        {
            if ((continueAnyway == undefined) && (size > 256))
            {
                updateClonePopup(mwp_sprintf(translations['large_site'], size)+' <a href="#" class="button continueCloneButton" onClick="cloneInitiateBackupCreation('+"'"+siteId+"'"+', '+"'"+siteName+"'"+', '+size+', '+"'"+rand+"'"+', true); return false;">'+translations['continue_anyway']+'</a>');
                return;
            }
            else
            {
                jQuery('.continueCloneButton').hide();
            }

            size = size / 2.4; //Guessing how large the zip will be

            //5 mb every 10 seconds
            updateClonePopup(mwp_sprintf(translations['creating_backup'], siteName, size.toFixed(2), (size / 5 * 3).toFixed(2)));

            updateClonePopup('<div id="mainwp-child-clone-create-progress" style="margin-top: 1em !important;"></div>', false);
            jQuery('#mainwp-child-clone-create-progress').progressbar({value: 0, max: (size * 1024)});

            var data = {
                action:'mainwp-child_clone_backupcreate',
                siteId: siteId,
                rand: rand
            };

            jQuery.post(ajaxurl, data, function(pSiteId, pSiteName) { return function(resp) {
                backupCreationFinished = true;
                clearTimeout(pollingCreation);

                var progressBar = jQuery('#mainwp-child-clone-create-progress');
                progressBar.progressbar('value', parseFloat(progressBar.progressbar('option', 'max')));

                if (resp.error)
                {
                    handleCloneError(resp);
                    return;
                }
                updateClonePopup(mwp_sprintf(translations['backup_created'], pSiteName, (resp.size / 1024).toFixed(2)));
                //update view;
                cloneInitiateBackupDownload(pSiteId, resp.url, resp.size);
            } }(siteId, siteName), 'json');

            //Poll for filesize 'till it's complete
            pollingCreation = setTimeout(function() { cloneBackupCreationPolling(siteId, rand); }, 1000);
        };

        cloneBackupCreationPolling = function(siteId, rand)
        {
            if (backupCreationFinished) return;

            var data = {
                action:'mainwp-child_clone_backupcreatepoll',
                siteId: siteId,
                rand: rand
            };

            jQuery.post(ajaxurl, data, function(pSiteId, pRand) { return function(resp) {
                if (backupCreationFinished) return;
                if (resp.size)
                {
                    var progressBar = jQuery('#mainwp-child-clone-create-progress');
                    if (progressBar.progressbar('option', 'value') < progressBar.progressbar('option', 'max'))
                    {
                        progressBar.progressbar('value', resp.size);
                    }

                    //Also update estimated time?? ETA??
                }
                pollingCreation = setTimeout(function() { cloneBackupCreationPolling(pSiteId, pRand); }, 1000);
            } }(siteId, rand), 'json');
        };

        cloneInitiateBackupDownload = function(pSiteId, pFile, pSize)
        {
            updateClonePopup(translations['downloading_backup']);

            updateClonePopup('<div id="mainwp-child-clone-download-progress" style="margin-top: 1em !important;"></div>', false);
            jQuery('#mainwp-child-clone-download-progress').progressbar({value: 0, max: pSize});

            var data = {
                action:'mainwp-child_clone_backupdownload',
                file: pFile
            };

            if (pSiteId != undefined) data['siteId'] = pSiteId;

            jQuery.post(ajaxurl, data, function(siteId) { return function(resp) {
                backupDownloadFinished = true;
                clearTimeout(pollingDownloading);

                var progressBar = jQuery('#mainwp-child-clone-download-progress');
                progressBar.progressbar('value', parseFloat(progressBar.progressbar('option', 'max')));

                if (resp.error)
                {
                    handleCloneError(resp);
                    return;
                }
                updateClonePopup(translations['backup_downloaded']);

                //update view
                cloneInitiateExtractBackup();
            }}(pSiteId), 'json');

            //Poll for filesize 'till it's complete
            pollingDownloading = setTimeout(function() { cloneBackupDownloadPolling(pSiteId, pFile); }, 1000);
        };

        cloneBackupDownloadPolling = function(siteId, pFile)
        {
            if (backupDownloadFinished) return;

            var data = {
                action:'mainwp-child_clone_backupdownloadpoll',
                siteId: siteId,
                file: pFile
            };

            jQuery.post(ajaxurl, data, function(pSiteId) { return function(resp) {
                if (backupDownloadFinished) return;
                if (resp.size)
                {
                    var progressBar = jQuery('#mainwp-child-clone-download-progress');
                    if (progressBar.progressbar('option', 'value') < progressBar.progressbar('option', 'max'))
                    {
                        progressBar.progressbar('value', resp.size);
                    }
                }

                pollingDownloading = setTimeout(function() { cloneBackupDownloadPolling(pSiteId); }, 1000);
            } }(siteId), 'json');
        };

        cloneInitiateExtractBackup = function(file)
        {
            if (file == undefined) file = '';

            updateClonePopup(translations['extracting_backup']);
            //Extract & install SQL
            var data = {
                action:'mainwp-child_clone_backupextract',
                f: file
            };

            jQuery.ajax({
                type:"POST",
                url: ajaxurl,
                data: data,
                success: function(resp) {
                    if (resp.error)
                    {
                        handleCloneError(resp);
                        return;
                    }

                    updateClonePopup(translations['clone_complete']);

                    setTimeout(function() {
                    jQuery('#mainwp-child_clone_status').dialog('close');
                    jQuery('.mainwp-child_select_sites_box').hide();
                    jQuery('.mainwp-child_info-box-green').show();
                    jQuery('#mainwp-child_uploadclonebutton').hide();
                    jQuery('#mainwp-child_clonebutton').hide();
                    jQuery('.mainwp-hide-after-restore').hide();
                    }, 1000);
                },
                dataType: 'json'});
        };

        jQuery(document).on('click', '#mainwp-child-restore', function() {
            jQuery('#mainwp-child_clone_status').dialog({
                resizable: false,
                height: 400,
                width: 750,
                modal: true,
                close: function(event, ui) {bulkTaskRunning = false; jQuery('#mainwp-child_clone_status').dialog('destroy'); }});

            cloneInitiateBackupDownload(undefined, jQuery(this).attr('file'), jQuery(this).attr('size'));
            return false;
        });

        jQuery(document).on('click', '#mainwp-child_uploadclonebutton', function()
        {
            var file = jQuery(this).attr('file');
            jQuery('#mainwp-child_clone_status').dialog({
                resizable: false,
                height: 400,
                width: 750,
                modal: true,
                close: function(event, ui) {bulkTaskRunning = false; jQuery('#mainwp-child_clone_status').dialog('destroy'); }});

            cloneInitiateExtractBackup(file);
            return false;
        });

        jQuery(document).on('click', '#mainwp-child_clonebutton', function() {
            jQuery('#mainwp-child_clone_status').dialog({
                resizable: false,
                height: 400,
                width: 750,
                modal: true,
                close: function(event, ui) {bulkTaskRunning = false; jQuery('#mainwp-child_clone_status').dialog('destroy'); }});

            //Initiate backup creation on other child
            var siteElement = jQuery('.clonesite_select_site_item.selected');
            var siteId = siteElement.attr('id');
            var siteName = siteElement.find('.mainwp-child_name_label').html();
            var siteSize = siteElement.find('.mainwp-child_size_label').attr('size');
            var siteRand = siteElement.attr('rand');
            cloneInitiateBackupCreation(siteId, siteName, siteSize, siteRand);

            return false;
        });

        function mwp_sprintf()
  		{
  			if (!arguments || arguments.length < 1 || !RegExp)
  			{
  				return;
  			}
  			var str = arguments[0];
  			var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
  			var a = b = [], numSubstitutions = 0, numMatches = 0;
  			while (a = re.exec(str))
  			{
  				var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
  				var pPrecision = a[5], pType = a[6], rightPart = a[7];

  				//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

  				numMatches++;
  				if (pType == '%')
  				{
  					subst = '%';
  				}
  				else
  				{
  					numSubstitutions++;
  					if (numSubstitutions >= arguments.length)
  					{
  						alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
  					}
  					var param = arguments[numSubstitutions];
  					var pad = '';
  					       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
  					  else if (pPad) pad = pPad;
  					var justifyRight = true;
  					       if (pJustify && pJustify === "-") justifyRight = false;
  					var minLength = -1;
  					       if (pMinLength) minLength = parseInt(pMinLength);
  					var precision = -1;
  					       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
  					var subst = param;
  					       if (pType == 'b') subst = parseInt(param).toString(2);
  					  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
  					  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
  					  else if (pType == 'u') subst = Math.abs(param);
  					  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
  					  else if (pType == 'o') subst = parseInt(param).toString(8);
  					  else if (pType == 's') subst = param;
  					  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
  					  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
  				}
  				str = leftpart + subst + rightPart;
  			}
  			return str;
  		}
                
        jQuery(document).on('click', '#mainwp-child_clonebutton_from_server', function()
        {
            var cur_dir = jQuery('#clonesite_from_server_current_dir').val();    
            var file = cur_dir + '/' + jQuery('.clonesite_select_site_item.selected span').html();
            jQuery('#mainwp-child_clone_status').dialog({
                resizable: false,
                height: 400,
                width: 750,
                modal: true,
                close: function(event, ui) {bulkTaskRunning = false; jQuery('#mainwp-child_clone_status').dialog('destroy'); }});

            cloneInitiateExtractBackup(file);
            return false;
        });
        
    </script>
    <?php 
        self::renderFooter();
    }