$(function () {
function checkMimeTypes(mimeTypesTest) {
var mimeDetect=false;
Config_mimeTypes.forEach(function(item, index, array) {
var regex = item.replace(/\//g, "\\\/");
if (mimeTypesTest.match(regex) != undefined) {
mimeDetect=true;
}
});
if ((Config_mimeTypesConduct == 'allow' && mimeDetect)
|| (Config_mimeTypesConduct == 'deny' && !mimeDetect)) {
return true;
} else {
return false;
}
}
/**
* Function called to upload one file.
* @param file
* @param item
*/
function uploadFile(item, file, expire, random, resize, key) {
// Add progress bar
$('.progress').show();
$('.progress').append('' + file.name + '
');
// Create object XMLHttpRequest
var request = new XMLHttpRequest();
// Event progress to change value of progress bar
request.upload.addEventListener('progress', function (e) {
$('.progress-' + item).css('display', 'block');
var value = Math.round((e.loaded / e.total) * 100);
$('.progress-' + item).attr("value", value);
}, false);
// Create object FormData
var formData = new FormData();
// Add file to FormData
formData.append('random', random);
formData.append('item', item);
formData.append('file', file);
formData.append('expire', expire);
formData.append('resize', resize);
formData.append('key', key);
// File to call
request.open('post', 'upload.php');
// Function called when request ended
request.onload = function (e) {
$('#result').append(request.response);
};
// Send request
request.send(formData);
}
/**
* Function called to upload files.
*/
function upload() {
// Vide les messages si jamais il y en avait
$( "#preUpload" ).html( "" );
var upload = true;
// Get files
var files = $('#files')[0].files;
var expire = Math.floor(Date.now() / 1000 + $('#expire').val() * 86400);
var random = Math.floor(Math.random() * Math.floor(99));
// Check size and mime
var fileAlreadyUploadSizeTotal = 0;
for (var i = 0; i < files.length; i++) {
// Size
fileAlreadyUploadSizeTotal = fileAlreadyUploadSizeTotal + document.getElementById("files").files[i].size;
if (document.getElementById("files").files[i].size > Config_maxUploadPerFile) {
$('#preUpload').append('
' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileSize + '
');
upload = false;
}
// Mime
if (!checkMimeTypes(document.getElementById("files").files[i].type)) {
$('#preUpload').append('' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileType + '
');
upload = false;
}
}
if (fileAlreadyUploadSizeTotal > Config_maxUploadTotal) {
$('#preUpload').append('' + Msg_errorTotalSize + '
');
upload = false;
}
if (files.length > Config_maxUploadNb) {
$('#preUpload').append('' + Msg_errorUploadNb + '
');
upload = false;
}
if (files.length == 0) {
upload = false;
}
// Upload file by file
if (upload == true) {
// Session pour compter le nombre de fichier en cours de download
sessionStorage.setItem('uploadWait', files.length);
$( ".uploadArea" ).hide();
// On lance l'upload fichier par fichier:
for (var i = 0; i < files.length; i++) {
if (i == 0) {
// On mémorise l'upload dans le localStorage
if (localStorage.getItem('myFiles')) {
var data = JSON.parse(localStorage.getItem('myFiles'));
} else {
var data = {items: []};
}
var keyGen = Math.floor(Math.random() * (999999999999 - 100000000000) + 100000000000);
data.items.push(
{id: expire + '-' + random, key: keyGen}
);
localStorage.setItem('myFiles', JSON.stringify(data));
}
uploadFile(i, files[i], expire, random, $('#resize').val(), keyGen);
}
}
}
// Copy on clipart : https://stackoverflow.com/questions/44888884/copying-to-clipboard-textbox-value-using-jquery-javascript
function copyToClipboard(text) {
var textArea = document.createElement( "textarea" );
textArea.value = text;
document.body.appendChild( textArea );
textArea.select();
try {
var successful = document.execCommand( 'copy' );
var msg = successful ? 'successful' : 'unsuccessful';
} catch (err) {
console.log('Oops, unable to copy');
}
document.body.removeChild( textArea );
}
$('.btn-upload').on('click', upload);
$( "#similarServices" ).click(function() {
$('.similarHref').hide();
$('.similarLink').show();
});
$(document).on('click', '.copy', function(){
copyToClipboard($(this).val());
$(this).select();
});
$("input[type=file]").on('change',function(){
$('#resizeForm').hide();
for (var i = 0; i < this.files.length; i++) {
var mime = this.files[i].type;
if (mime.match('^image\/(jpeg|gif)$')) {
$('#resizeForm').show();
}
}
});
/* infobulles http://javascript.developpez.com/tutoriels/javascript/creer-info-bulles-css-et-javascript-simplement-avec-jquery/ */
// Sélectionner tous les liens ayant l'attribut rel valant tooltip
$('a[rel=tooltip]').mouseover(function(e) {
// Récupérer la valeur de l'attribut title et l'assigner à une variable
var tip = $(this).attr('title');
// Supprimer la valeur de l'attribut title pour éviter l'infobulle native
$(this).attr('title','');
// Insérer notre infobulle avec son texte dans la page
$(this).append('');
// Ajuster les coordonnées de l'infobulle
$('#tooltip').css('top', e.pageY - 30 );
$('#tooltip').css('left', e.pageX - 145 );
// Faire apparaitre l'infobulle avec un effet fadeIn
}).mousemove(function(e) {
// Ajuster la position de l'infobulle au déplacement de la souris
$('#tooltip').css('top', e.pageY - 30 );
$('#tooltip').css('left', e.pageX - 145 );
}).mouseout(function() {
// Réaffecter la valeur de l'attribut title
$(this).attr('title',$('.tipBody').html());
// Supprimer notre infobulle
$(this).children('div#tooltip').remove();
});
});