Code:
window.onload = init;
function init() {
xhr = createRequest();
xhr2 = createRequest();
submit = document.getElementById("inputSubmit");
submit.onclick = inputSubmit;
//submit onclick for Next Page Button
/*np = document.getElementById("np");
np.onclick = NextPage;
pp = document.getElementById("pp");
pp.onclick = PreviousPage;*/
//first ajax call to load images at beginning
xhr2.onreadystatechange = getImage;
xhr2.open("GET", 'http://kdmalik.com/DEVDERBY/scripts/upload.php',true);
xhr2.send(null);
//Start of DRAG AND DROP INFORMATION
//VARIABLES SHOULD BE CHANGED AS VERY SIMILAR VARIABLES PREVIOUSLY, COMBINE THEM
}
function getImage() {
if (xhr2.readyState === 4 && xhr2.status === 200) {
var imageNames = JSON.parse(xhr2.responseText);
var objSize = getObjectCount(imageNames);
createImageHtml(imageNames);
var imagesContainer = document.getElementById("images");
/*var allImages = document.querySelectorAll('#images img');
console.log(allImages);
console.log(allImages.length);*/
//Drag and drop listener to each
deleteBtn = document.getElementById("DeleteDrag");
allImages = imagesContainer.getElementsByTagName("img");
for (i=0; i < allImages.length; i++) {
addEventHandler(allImages[i], 'dragstart', handleDragStart);
addEventHandler(allImages[i], 'dragenter', handleDragEnter);
addEventHandler(allImages[i], 'dragover', handleDragOver);
addEventHandler(allImages[i], 'dragleave', handleDragLeave);
addEventHandler(allImages[i],'drop',handleDrop);
addEventHandler(allImages[i],'dragend',handleDragEnd);
}
//EVENT LISTENER FOR DIV
//GRAB MAIN DIV
mainPicture = document.getElementById("mainPictureArea")
addEventHandler(mainPicture, 'dragstart', handleDragStart);
addEventHandler(mainPicture, 'dragenter', handleDragEnter);
addEventHandler(mainPicture, 'dragover', handleDragOver);
addEventHandler(mainPicture, 'dragleave', handleDragLeave);
addEventHandler(mainPicture,'drop',handleDrop);
addEventHandler(mainPicture,'dragend',handleDragEnd);
//DELETE BUTTON HOVER
deleteBtn = document.getElementById("DeleteDrag");
addEventHandler(deleteBtn, 'dragstart', handleDragStart);
addEventHandler(deleteBtn, 'dragenter', handleDragEnter);
addEventHandler(deleteBtn, 'dragover', handleDragOver);
addEventHandler(deleteBtn, 'dragleave', handleDragLeave);
addEventHandler(deleteBtn,'drop',handleDrop);
addEventHandler(deleteBtn,'dragend',handleDragEnd);
} else if (xhr2.status === 404 || xhr2.status === 500) {
alert("Your Upload Request failed.");
}
}
function handleDragEnd(e) {
// this/e.target is the source node.
[].forEach.call(allImages, function (imgs) {
imgs.classList.remove('over');
imgs.style.opacity = '1.0';
});
}
var dragSrcEl = null;
function handleDrop(e) {
// this / e.target is current target element.
if (e.stopPropagation) {
e.stopPropagation(); // stops the browser from redirecting.
}
if (e.preventDefault) {
e.preventDefault(); // stops the browser from redirecting.
}
if (dragSrcEl.src != this.src) {
if(this == mainPicture) {
var imgCopy = e.dataTransfer.getData('text/html');
var mainImage = document.createElement("img");
mainImage.setAttribute('src', imgCopy);
mainImage.setAttribute('height', '300');
mainImage.setAttribute('width', '300');
mainPicture.innerHTML = "";
mainPicture.appendChild(mainImage);
this.classList.remove('over');
return;
}
if (this == deleteBtn) {
var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
if ("http://kdmalik.com/DEVDERBY/" +imgs[i].getAttribute("src") == dragSrcEl.src) {
imgs[i].parentNode.removeChild(imgs[i]);
}
}
//AJAX CALL TO UPLOAD
var mainPictureImage = mainPicture.getElementsByTagName("img");
for (var i=0;i<mainPictureImage.length;i++) {
if(mainPictureImage[i].getAttribute("src") == dragSrcEl.src)
mainPicture.removeChild(mainPictureImage[i]);
mainPicture.innerHTML = "<p>Drag here to view picture!</p>";
}
//CALL AJAX FUNCTION TO DELETE!
xhr3 = createRequest();
xhr3.onreadystatechange = deleteImage;
xhr3.open("POST", 'http://kdmalik.com/DEVDERBY/scripts/delete.php',true);
xhr3.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr3.send(dragSrcEl.src);
//dragSrcEl.src
this.classList.remove('over');
return;
}
//set thes oruce colum's html to the html of the colum we dropped
var imageDrop = this.src;
dragSrcEl.src = imageDrop;
this.src = e.dataTransfer.getData('text/html');
}
return false;
}
function deleteImage() {
if (xhr3.readyState === 4 && xhr3.status === 200) {
var deletePhrase = document.getElementById("deleteSuccess");
deletePhrase.innerHTML = "Your File Has Been Deleted";
} else if (xhr3.status === 404 || xhr3.status === 500) {
alert("Your delete Request failed.");
}
}
function handleDragStart(e) {
//alert("test");
this.style.opacity = '0.4';
dragSrcEl = this;
//alert(dragSrcEl);
e.dataTransfer.effectAllowed='all';
e.dataTransfer.setData("text/html",dragSrcEl.src);
}
function handleDragOver(e) {
if (e.preventDefault) {
e.preventDefault(); //necessary, allows us to drop
}
e.dataTransfer.dropEffect = 'move'; // See the section on the DataTransfer object.
return false;
}
function handleDragEnter(e) {
//this / e.target is the current hover target
this.classList.add('over'); // this / e.target is the current hover target.
}
function handleDragLeave(e) {
//alert(this.classList);
this.classList.remove('over');
// this /e.target is previous target element.
//alert(this.classList);
}
function inputSubmit(evt) {
evt.preventDefault();
loadFile();
}
/*$(document).ready(function() {
// Handler for .ready() called.
$('.heading').click(function() {
if($(this).find('li').is(':visible')) {
$(this).find('li').slideUp('slow');
}else {
$('.heading').find('li').slideUp('slow');
$(this).find('li').slideDown('slow');
}
})
});*/
function loadFile() {
//retrieve the FileList object from the referenced element ID
var myFileList = document.getElementById('upload_file').files;
//grab the first file object from the filelist
var myFile = myFileList[0];
//set some variables containing attributes of file
var myFileName = myFile.name;
var myFileSize = myFile.size;
var myFileType = myFile.type;
//alert the information gathered and if it is right
//alert("FileName: " + myFileName + "- FileSize: " + myFileSize + " - FileType: " + myFileType);
//check above by alert if file size is below a certain MB and of image type JPEG, PNG, GIF
//Let's upload the complete file object
uploadFile(myFile);
}
function uploadFile(myFileObject) {
// Open Our formData Object
var formData = new FormData();
// Append our file to the formData object
// Notice the first argument "file" and keep it in mind
formData.append('my_uploaded_file', myFileObject);
// Create our XMLHttpRequest Object
xhr.onreadystatechange = addImage;
// Open our connection using the POST method
xhr.open("POST", 'http://kdmalik.com/DEVDERBY/scripts/upload.php',true);
//Send the proper header information along with the request
// Send the file
xhr.send(formData);
}
function getObjectCount(obj) {
for(var i in obj) {
i++;
}
return i;
}
function createImageHtml(imageNames) {
var imageContainer = document.getElementById("images");
imageContainer.innerHTML = '';
var objSize = getObjectCount(imageNames);
for(var i=1;i < objSize; i++) {
if(imageNames[i] == "File Upload Successfully") {return;}
var cImg = document.createElement("img");
cImg.setAttribute('src',"images/" + imageNames[i]);
cImg.setAttribute('height', '150');
cImg.setAttribute('width','150' );
var parentDiv = document.getElementById("images");
parentDiv.appendChild(cImg);
}
}
function addImage() {
var progressBar = document.getElementById("pbar");
var progressText = "";
progressStatus = document.getElementById("status");
if (xhr.readyState === 4 && xhr.status === 200) {
progressBar.value="100";
progressText = "Upload Complete!";
progressStatus.innerHTML = progressText;
var imageNames = JSON.parse(xhr.responseText);
createImageHtml(imageNames);
} else if (xhr.readyState === 0 || xhr.readyState === 1) {
progressBar.value = "25";
progressText = "Starting Upload..";
progressStatus.innerHTML = progressText;
} else if (xhr.readyState === 2) {
progressBar.value = "50";
progressText = "Almost Done...";
progressStatus.innerHTML = progressText;
} else if (xhr.readyState === 3) {
progressBar.value = "75";
progressText = "So Close!";
progressStatus.innerHTML = progressText;
} else if (xhr.status === 404 || xhr.status === 500) {
alert("Your Upload Request failed.");
}
}
//DRAG SECTION
Bookmarks