Array.prototype.ismember = function(element) 
{
    for (var i=0, len=this.length; i<len; i++)
    {
        if (this[i] == element)
        {
            return true;
        }
    }
    return false;
};
Array.prototype.remove = function(element) 
{
    for (var i=0, len=this.length; i<len; i++)
    {
        if (this[i] == element)
        {
            this.splice(i,1);
        }
    }
    return false;
};

var ajaxDir = {

    data : [],
    dir : "",
    dload : "tmp/archive.zip",
    
    init : function(dir,w)
    {
        Droppables.add("target", {
        onDrop: function(element) 
        {
            if (!ajaxDir.data.ismember($(element.id).getAttribute("title")))
            {
				var e = document.createElement("p");
                e.setAttribute("id","data_"+ajaxDir.data.length-1);
				var s = document.createElement("span");
				s.onclick = function()
                {
                    this.parentNode.parentNode.removeChild(
                        this.parentNode
                    );
                    ajaxDir.data.splice(
                        this.parentNode.getAttribute("id"),
                        1
                    );
                }
                s.appendChild( document.createTextNode("DEL") );
				s.setAttribute("style","margin-left:10px;");
				e.innerHTML = $(element.id).innerHTML;
				e.appendChild(s);
				s = document.createElement("span");
				s.setAttribute("style","margin-left:10px;");
                s.onclick = function() 
                {
                    ajaxDir.showContent(
                        ajaxDir.data[ajaxDir.data.length-1]
                    ); 
                }    				
                s.appendChild( document.createTextNode("INFO") );
				e.appendChild(s);
				$("zip").appendChild(e);
                ajaxDir.data.push($(element.id).getAttribute("title"));                
            }
            else alert("Element bereits in der Packliste");
		}
        });
        
        if (w==1)
        {
            var _tmp;
            _tmp = this.dir;
            var b = _tmp.split("/");
            b.shift();
            b.pop();
            if (b.length == 0)
            {
                dir = "";
                this.dir = "";
            }
            else
            {
                b.pop();
                this.dir = b.join("/");
            }
        }
         
        if (dir) this.dir += "/"+dir;
	    new Ajax.Request(
            "dir.php?dir="+this.dir,
            {
                onLoading:function()
                {
                    $("info").innerHTML = "<img src=\"img/loading.gif\" /> loading ...";
                },
                onSuccess:function(r)
                {
				   ajaxDir.drawDir(JSON.parse(r.responseText));
                   $("info").innerHTML = "";
                }
            }
        );
    },
    
    drawDir : function(json)
    {
		var d = [];
		var path = json.path;
        var dirs = json.dirs;
		var data = json.data;
        var b = this.dir.split("/");
        $("dir").innerHTML = "dir: "+this.dir+"<hr/>";
        b.pop()
        
        if (this.dir!="")
        {
            $("dir").innerHTML += "<a href='#'  onclick='ajaxDir.init(\""+b[b.length-1]+"\",1)'><img src='img/back.gif' /> parent directory</a><br />";
        }

		for (var i=0, len=dirs.length; i<len; i++)
		{
			$("dir").innerHTML += "<img src='img/folder.gif' /> ";
            $("dir").innerHTML += "<a href='#' title='"+dirs[i]+"' onclick=\"ajaxDir.init('"+dirs[i]+"')\">" +dirs[i]+ "/<a/><br />\n";
		}
		for (var i=0, len=data.length; i<len; i++)
		{
			$("dir").innerHTML += "<span id='f"+i+"' title='"+(path+"/"+data[i])+"'><img src='img/file.gif' /> " +data[i] + "</span><br />\n";
		}
		for (var i=0, len=data.length; i<len; i++)
		{
    		new Draggable('f'+i,{revert:true});
		}
	},
	
    zipIt : function()
    {
        if (this.data.length>0)
        {
        new Ajax.Request(
            "zip.php?data="+JSON.stringify(this.data),
            {
                onSuccess:function(r)
                {  
				   $("dl").innerHTML = "<img src='img/zip.gif' /> <a href='"+ajaxDir.dload+"'>Zip-Archiv downloaden<a/><br />\n";
                }
            }
        );
        
        }
        else alert("Die Packliste ist leer.");
		
    },
	
    showContent : function(file)
    {
        new Ajax.Request(
            "file.php?data="+file,
            {
                onSuccess:function(r)
                {  
				   $("msg").innerHTML = "<pre>"+r.responseText+"</pre>";
                   $("msg").style.display = "block";
                }
            }
        );
    }
};

window.onload = function()
{
    ajaxDir.init();
    new Draggable("target");
    new Draggable("tool");
    new Draggable("msg");
}