// html5 drag and drop reference
// http://www.w3.org/html/wg/drafts/html/master/editing.html#dnd
var love_drag_id=false;
function love_list_drag_start(ev)
{
ev.stopPropagation();
var target=ev.target;
while(!target.id){ target=target.parentNode; } // could look for the class name...
var dragHide=document.createElement('ul');
dragHide.setAttribute("id","love_list_draghide");
dragHide.setAttribute("class","love_list");
dragHide.setAttribute("style","width:"+target.offsetWidth+"px");
dragHide.innerHTML='
'+target.innerHTML+'';
document.getElementById("love_content").appendChild(dragHide);
ev.dataTransfer.setDragImage(dragHide,0,0);
target.style.opacity="0.3";
ev.dataTransfer.effectAllowed="move";// not sure what this does ?
ev.dataTransfer.setData("text",target.id);
love_drag_id=target.id; // because for some asinine reason this data is not available during the drag
return false;
}
function love_list_drag_over(ev)
{
var data=ev.dataTransfer.getData("text");
ev.preventDefault();
ev.stopPropagation();
var target=ev.target;
while(!target.id){ target=target.parentNode; }
//console.log("target.id!=data: "+target.id+"!="+data);
if(target.id!=love_drag_id) target.classList.add("love_list_dragover");
return false;
}
function love_list_drag_enter(ev)
{
ev.stopPropagation();
ev.preventDefault();
/*var data=ev.dataTransfer.getData("text");
var target=ev.target;
while(!target.id){ target=target.parentNode; } // could look for the class name...
target.classList.add("love_list_dragover");*/
return false;
}
function love_list_drag_leave(ev)
{
ev.stopPropagation();
ev.preventDefault();
var target=ev.target;
while(!target.id){ target=target.parentNode; } // could look for the class name...
target.classList.remove("love_list_dragover");
/*var dz=document.getElementById("love_drop_zone_"+target.id);
if(dz)dz.parentNode.remove(dz);*/
return false;
}
// i came up with this to help fix failed drags and it doesn't work.
function love_list_drag_end(ev)
{
ev.stopPropagation();
ev.preventDefault();
var data=ev.dataTransfer.getData("text");
var dragged=document.getElementById(data);
if(dragged&&dragged.style)dragged.style.opacity="1";
return false;
}
function love_list_drag_drop(ev)
{
ev.stopPropagation();
ev.preventDefault();
ev.dataTransfer.dropEffect="move";
var data=ev.dataTransfer.getData("text");
love_drag_id=false;
var dragged=document.getElementById(data);
dragged.style.opacity="1";
var target=ev.target;
while(!target.id){ target=target.parentNode; }
target.parentNode.insertBefore(dragged,target);
target.classList.remove("love_list_dragover");
var items=target.parentNode.getElementsByClassName("love_drag_item");
for(i=0;i-1) items[i].classList.remove("love_alt"); }else{
items[i].classList.add("love_alt");
console.log("adding class to: "+i);}
document.getElementById(items[i].id+"_sort").value=i+1;
}
if(dragHide=document.getElementById("love_list_draghide"))
dragHide.parentNode.removeChild(dragHide);
return false;
}
function love_file_selected(input)
{
if(input.value>""){
var node=document.getElementById("love_upload_template");
node.parentNode.insertBefore(node.cloneNode(true),document.getElementById("love_upload_button"));
}
}
function love_file_selected(input)
{
if(input.value>""){
var node=document.getElementById("love_upload_template");
node.parentNode.insertBefore(node.cloneNode(true),document.getElementById("love_upload_button"));
}
}