var AJAXFTP = {
	
	response: document.getElementById("ajaxFTPResponse"),
	browser: document.getElementById("ajaxFTPBrowser"),
	currentPath: "",
	currentFile: "",
	currentFileNode: "",
	currentSlideDown: "",
	
	getPreviousPath: function() {
		if (AJAXFTP.currentPath == "" || AJAXFTP.currentPath == null) {
			return false;
		}
		return AJAXFTP.currentPath.substring(0, AJAXFTP.currentPath.lastIndexOf("/"));
	},
	
	connect: function(directory, highlightFile) {
		AJAXFTP.clear();
		
		aju = document.getElementById("ajaxFTPUser").value;
		ajp = document.getElementById("ajaxFTPPassword").value;
		ajs = document.getElementById("ajaxFTPServer").value;
		ajr = document.getElementById("ajaxFTPRoot").value;
		
		if(ajp == '') aju ='anonymous@' + ajs;
		
		pa = "server=" + ajs + "&password=" + ajp + "&user=" + aju;
		
		if(directory == "") {
		    directory = ajr;
		}
		if (directory) {
			pa += "&directory=" + directory;
		}	

		ar = new Ajax.Request(ajaxFTPBaseURL + "/ajaxftp/process.xml.php", {parameters: pa, onSuccess: function(xm) {
			xmr = xm.responseXML;
			tRes = xmr.getElementsByTagName("result");
			tMsg = xmr.getElementsByTagName("message");
			if (tRes[0].firstChild.nodeValue == 0) {
				AJAXFTP.response.className = "ajaxFTPError";
				AJAXFTP.hideDetails();
			} else {
				AJAXFTP.response.className = "ajaxFTPSuccess";
				AJAXFTP.showDetails();
				AJAXFTP.setInfoPane('directory');
				
				itemNodes = xmr.getElementsByTagName("node");
				brs = AJAXFTP.browser; 
				var _toHighlight;
				var _scrollTo = 0;
				var _scrollToSet = 0;
				setTimeout(function() {
					if (directory) {
						upNode = document.createElement("DIV");
						upNode.className = "up";
						upNode.onclick = function() {
							prevPath = AJAXFTP.getPreviousPath();
							AJAXFTP.connect(prevPath);
						}
						AJAXFTP.currentPath = directory;
						upNode.innerHTML = 'Up a level';
						
						if(ajr != directory)
						brs.appendChild(upNode);
						
						//var urldirectory = ajs + '/' + aju + '/' + directory.replace(/\//gi," /");
						document.getElementById("lblFTPDirectory").innerHTML = directory.replace(/\//gi," /");

					} else {
						AJAXFTP.currentPath = "";
						document.getElementById("lblFTPDirectory").innerHTML = "";
					}
					
					document.getElementById("files-current-directory").innerHTML = itemNodes.length + " item(s)";
					document.getElementById("btn-remove-directory").disabled = (itemNodes.length == 0) ? false : true;
					
					for (i = 0; i < itemNodes.length; i++) {
						nodeObj = document.createElement("DIV");
						try {
							itemType = itemNodes[i].attributes["type"].value;
						} catch (ex) {
							itemType = itemNodes[i].getAttribute("type");
						}
						nodeObj.className = itemType;
						
						highlightClass = '';
						if (highlightFile) {
							if (highlightFile == itemNodes[i].firstChild.nodeValue) {
								_toHighlight = i;
								_scrollToSet = _scrollTo;
								highlightClass = " class=\"highlighted\" ";
							}
						}
						
						
						//nodeObj.innerHTML = (itemType == "directory") ? '<a ' + highlightClass + ' id="ajn' + i +'" href="javascript:AJAXFTP.connect(\'' + AJAXFTP.currentPath + "/" + itemNodes[i].firstChild.nodeValue + '\')">' + itemNodes[i].firstChild.nodeValue + '</a>' 
						//: '<a ' + highlightClass + ' id="ajn' + i +'" href="' + AJAXFTP.currentPath + "/" + itemNodes[i].firstChild.nodeValue + '">' + itemNodes[i].firstChild.nodeValue + '</a>';
						
						attribs = tooltip = '';
						/*if (itemType == 'directory') {
							attribs = 'date="' + itemNodes[i].getAttribute("date") + '" time="' + itemNodes[i].getAttribute("time") + '"';
						} else {
							attribs = 'size="' + itemNodes[i].getAttribute("size") + '" date="' + itemNodes[i].getAttribute("date") + '" time="' + itemNodes[i].getAttribute("time") + '"';
						}*/
						
						nodeObj.innerHTML = "<span " + attribs  + " id=\"ajn" + i + "\" " + highlightClass + ">" + itemNodes[i].firstChild.nodeValue + "</span>";
						
						if(itemType == "file") {
						    var size = "<span class=\"cell\"  >"+ itemNodes[i].getAttribute("size")+"</span>";
						    var datetime = "<span class=\"cell\"  >"+ itemNodes[i].getAttribute("date")+ " " + itemNodes[i].getAttribute("time") + "</span>";
						    nodeObj.innerHTML += size + datetime;   
					    }
						  //nodeObj.innerHTML = "<span title=\"" + attribs + "\" id=\"ajn" + i + "\" " + highlightClass + ">" + itemNodes[i].firstChild.nodeValue + "</span>"
						    //                  + "<span " + highlightClass + "> " + itemNodes[i].getAttribute("date") + " " + itemNodes[i].getAttribute("time") + "</span>"
						;
						if (itemType == "directory") {
							nodeObj.onclick = function() {
								sp = this.getElementsByTagName("SPAN");
								AJAXFTP.connect(AJAXFTP.currentPath + "/" + sp[0].firstChild.nodeValue);
							}
							
						    /*nodeObj.onclick = function() {
								sp = this.getElementsByTagName("SPAN");
								//alert(AJAXFTP.currentPath + "/" + sp[0].firstChild.nodeValue);
								AJAXFTP.selectFile(this, AJAXFTP.currentPath + "/" + sp[0].firstChild.nodeValue, true);
							}*/
						
						} else {
						    nodeObj.onclick = function() {
		  						sp = this.getElementsByTagName("SPAN");
								AJAXFTP.selectFile(this, AJAXFTP.currentPath + "/" + sp[0].firstChild.nodeValue);
							}
							
        				    /*nodeObj.onmouseover = function() {
        				        sp = this.getElementsByTagName("SPAN");
							
							    var fip = document.getElementById("file-info");
							    fip.innerHTML = "<strong>Name</strong>: " + sp[0].firstChild.nodeValue + "<br/>";
							    fip.innerHTML += "<strong>Size</strong>: " + sp[0].getAttribute("size") + "<br/>";
	                        	fip.innerHTML += "<strong>Modified</strong>: " + sp[0].getAttribute("date") + " " + sp[0].getAttribute("time");
	                	    }
							nodeObj.onmouseout = function() {
							    var fip = document.getElementById("file-info");
							    fip.innerHTML = "<strong>Name</strong>: " + "<br/>";
							    fip.innerHTML += "<strong>Size</strong>: " + "<br/>";
	                        	fip.innerHTML += "<strong>Modified</strong>: ";
						    }*/
						}
						
						brs.appendChild(nodeObj);
						_scrollTo += nodeObj.offsetHeight;
						
						
						if (_toHighlight == i) {
							_scrollToSet = _scrollTo - nodeObj.offsetHeight;
						}
						
					}
					
					if (_toHighlight) {
						brs.scrollTop = _scrollToSet;
						new Effect.Highlight(document.getElementById("ajn" + _toHighlight));
					}

					
				},
				50);
				
				connectButton = document.getElementById("btnConnect");
				/*
				addButton = document.getElementById("btnAdd");
				addButton.style.display = "inline";
				addButtonDir = document.getElementById("btnAddDirectory");
				addButtonDir.style.display = "inline";
				*/
				connectButton.style.display = "none";
				disconnectButton = document.getElementById("btnDisconnect");
				disconnectButton.style.display = "inline";
				
				
				disconnectButton.onclick = function() {
					window.location.href="/";

					AJAXFTP.clear();
					AJAXFTP.currentPath = "";
					AJAXFTP.hideDetails();
					disconnectButton.style.display = "none";
					connectButton.style.display = "inline";
					//addButton.style.display = "none";
					//addButtonDir.style.display = "none";
					document.getElementById("ajaxFTPAddForm").style.display = "none";
					document.getElementById("ajaxFTPAddDirectoryForm").style.display = "none";
					document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "none";

					document.getElementById("btnAdd").onclick = function() {
						AJAXFTP.addFile();
					};
				}							
			}
			
			AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;
			
			setcookie('AjaxFTPUser', aju, 1);
			setcookie('AjaxFTPPass', ajp, 1);
			
			
		}});
	},
	
	selectFile: function(node, path, isDirectory) {
		node.className = isDirectory?"selected-directory":"selected-file";
		
		if (AJAXFTP.currentFile != path && AJAXFTP.currentFile != "") {
			AJAXFTP.currentFileNode.className = "file";
		}
		
		if(AJAXFTP.currentFileNode.isDirectory) {
		    AJAXFTP.currentFileNode.className = "directory";
		}
		
		
		
		AJAXFTP.currentFileNode = node;
		AJAXFTP.currentFile = path;
    	AJAXFTP.currentFileNode.isDirectory = isDirectory;
		

		AJAXFTP.setInfoPane(isDirectory?'directory':'file');
		fip = document.getElementById("file-info");
		sp = node.getElementsByTagName("SPAN");
		fip.innerHTML = "<strong>name:</strong>: " + sp[0].firstChild.nodeValue;
		//fip.innerHTML = "<strong>File Size</strong>: " + sp[0].getAttribute("size") + "<br/>";
		//fip.innerHTML += "<strong>Modified</strong>: " + sp[0].getAttribute("date") + " " + sp[0].getAttribute("time");*/
		
	},
	
	downloadFile: function() {
		path = AJAXFTP.currentFile;
		aju = document.getElementById("ajaxFTPUser").value;
		ajp = document.getElementById("ajaxFTPPassword").value;
		ajs = document.getElementById("ajaxFTPServer").value;
		ajr = document.getElementById("ajaxFTPRoot").value;
		//psotfix = "@" + ajs;
		location.href = "http://imalpha.us/usr/" + path;
		
		
		/*pa = "server=" + ajs + "&password=" + ajp + "&user=" + aju + "&filePath=" + path;
		AJAXFTP.response.innerHTML = "Attempting to Download File...";
		ar = new Ajax.Request("ajaxftp/process.xml.php", {parameters: pa, onSuccess: function(xm) {
			xmr = xm.responseXML;
			tRes = xmr.getElementsByTagName("result");
			tMsg = xmr.getElementsByTagName("message");
			tFile = xmr.getElementsByTagName("file");
			if (tRes[0].firstChild.nodeValue == 0) {
				AJAXFTP.response.className = "ajaxFTPError";
			} else {
				AJAXFTP.response.className = "ajaxFTPSuccess";
				// file is available
				// pass the file through a php script that will force download
				location.href = "ajaxftp/force_download.php?file=" + tFile[0].firstChild.nodeValue;
			}
			AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;
		}});*/
	},
	
	setInfoPane: function(state) {
		document.getElementById("info-pane-inner").style.display="block";
		switch(state) {
			case "file":
				document.getElementById("info-current-directory").style.display = "none";
				document.getElementById("directory-controls").style.display = "none";
				document.getElementById("files-current-directory").style.display = "none";
				document.getElementById("directory-info").style.display = "none";
				
				document.getElementById("file-info").style.display = "block";
				document.getElementById("title-selected-file").style.display = "block";
				document.getElementById("file-controls").style.display = "block";
			
				break;
		
			default: // directory
				document.getElementById("title-selected-file").style.display = "none";
				document.getElementById("file-controls").style.display = "none";
				//document.getElementById("file-info").style.display = "none";
				
				document.getElementById("directory-info").style.display = "block";
				document.getElementById("info-current-directory").style.display = "block";
				document.getElementById("directory-controls").style.display = "block";
				document.getElementById("files-current-directory").style.display = "block";
			
				break;
		}	
	},
	
	addFile: function() {
		
		if (AJAXFTP.currentSlideDown == "") {
			Effect.SlideDown('ajaxFTPAddForm',  0.1);
		} else {
			document.getElementById("ajaxFTPAddForm").style.display = "block";
		}
		
		document.getElementById("ajaxFTPAddDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameFileForm").style.display = "none";
		
	
		AJAXFTP.currentSlideDown = "file";
	},
	
	doAddFile: function() {
		if(this.validate("ajaxFTPAddSRC") == false) return;
		
		document.getElementById("ajaxFTPProcessTask").value = "addFile";
		document.getElementById("ajaxFTPForm").action = document.getElementById("ajaxFTPProcessFileAdd").value;
		document.getElementById("ajaxFTPForm").target = "ajaxFTPIFrame";
		document.getElementById("ajaxFTPDirectory").value = AJAXFTP.currentPath;
		document.getElementById("ajaxFTPForm").onsubmit = function() {};
		document.getElementById("ajaxFTPForm").submit();
		
		
		    
        //showPopWin('/storage/ajaxftp/modalContent.html', 450, 70, null);
        //document.getElementById("popupMask").style.display = "block";
		document.getElementById("busydiv").style.display = "block";
		document.getElementById("btn-remove-directory").disabled=true;
		document.getElementById("btnAdd").disabled=true;
		document.getElementById("btnAdd").disabled=true;
		document.getElementById("btn-rename-directory").disabled=true;
		document.getElementById("btn-remove-file").disabled=true;
		document.getElementById("btn-rename-file").disabled=true;
		document.getElementById("btnAddDirectory").disabled=true;
		document.getElementById("ajaxFTPAddMore").disabled=true;
		document.getElementById("ajaxFTPAddFileBtn").disabled=true;
		
	},
	
	validate: function(input) {
	    if(document.getElementById(input).value == "") {
		    alert("No item to operate ? too bad... è¬äº‹çš†ç©º? å†æ€.");
		    return false;
		}
		return true;
	},

	doAddDirectory: function() {
		document.getElementById("ajaxFTPProcessTask").value = "addDirectory";
		document.getElementById("ajaxFTPForm").action = document.getElementById("ajaxFTPProcessFileAdd").value;
		document.getElementById("ajaxFTPDirectory").value = AJAXFTP.currentPath;
		document.getElementById("ajaxFTPForm").target = "ajaxFTPIFrame";
		document.getElementById("ajaxFTPForm").onsubmit = function() {};
		document.getElementById("ajaxFTPForm").submit();
	},

	doRenameDirectory: function() {
		document.getElementById("ajaxFTPProcessTask").value = "renameDirectory";
		document.getElementById("ajaxFTPForm").action = document.getElementById("ajaxFTPProcessFileAdd").value;
		document.getElementById("ajaxFTPDirectory").value = AJAXFTP.currentPath;
		document.getElementById("ajaxFTPForm").target = "ajaxFTPIFrame";
		document.getElementById("ajaxFTPForm").onsubmit = function() {};
		document.getElementById("ajaxFTPForm").submit();
	},

	doRenameFile: function() {
		document.getElementById("ajaxFTPProcessTask").value = "renameFile";
		document.getElementById("ajaxFTPForm").action = document.getElementById("ajaxFTPProcessFileAdd").value;
		document.getElementById("ajaxFTPFilePath").value = AJAXFTP.currentFile;
		document.getElementById("ajaxFTPForm").target = "ajaxFTPIFrame";
		document.getElementById("ajaxFTPForm").onsubmit = function() {};
		document.getElementById("ajaxFTPForm").submit();
	},

	addDirectory: function() {
		document.getElementById("ajaxFTPAddForm").style.display = "none";
		document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameFileForm").style.display = "none";
		if (AJAXFTP.currentSlideDown == "") {
			Effect.SlideDown('ajaxFTPAddDirectoryForm',  0.1);
		} else {
			document.getElementById("ajaxFTPAddDirectoryForm").style.display = "block";
		}

		AJAXFTP.currentSlideDown = "directory";

	},

	renameDirectory: function() {
		document.getElementById("ajaxFTPAddForm").style.display = "none";
		document.getElementById("ajaxFTPAddDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameFileForm").style.display = "none";
		if (AJAXFTP.currentSlideDown == "") {
			Effect.SlideDown('ajaxFTPRenameDirectoryForm',  0.1);
		} else {
			document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "block";
		}

		AJAXFTP.currentSlideDown = "rename_directory";

	},

	renameFile: function() {
		document.getElementById("ajaxFTPAddForm").style.display = "none";
		document.getElementById("ajaxFTPAddDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "none";
		if (AJAXFTP.currentSlideDown == "") {
			Effect.SlideDown('ajaxFTPRenameFileForm',  0.1);
		} else {
			document.getElementById("ajaxFTPRenameFileForm").style.display = "block";
		}
		
		/*if(AJAXFTP.currentFile != '') {
		    document.getElementById("ajaxFTPRenameFileName").value = AJAXFTP.currentFile;
		}*/

		AJAXFTP.currentSlideDown = "rename_file";

	},

	removeFile: function() {
		if (confirm('Remove selected file?') && AJAXFTP.currentFile != "") {
			aju = document.getElementById("ajaxFTPUser").value;
			ajp = document.getElementById("ajaxFTPPassword").value;
			ajs = document.getElementById("ajaxFTPServer").value;
			pa = "server=" + ajs + "&password=" + ajp + "&user=" + aju + "&filePath=" + AJAXFTP.currentFile + "&task=rmfile";

			ar = new Ajax.Request(ajaxFTPBaseURL + "/ajaxftp/process.xml.php", {parameters: pa, onSuccess: function(xm) {
				xmr = xm.responseXML;
				tRes = xmr.getElementsByTagName("result");
				tMsg = xmr.getElementsByTagName("message");
				if (tRes[0].firstChild.nodeValue == 0) {
					AJAXFTP.response.className = "ajaxFTPError";
					AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;

				} else {
					AJAXFTP.response.className = "ajaxFTPSuccess";
					AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;
					setTimeout(function() {
						AJAXFTP.connect(AJAXFTP.currentPath);
					}, 1000);
				}
			}});
		}
	},

	removeDirectory: function() {
		if (confirm('Remove current directory?')) {
			aju = document.getElementById("ajaxFTPUser").value;
			ajp = document.getElementById("ajaxFTPPassword").value;
			ajs = document.getElementById("ajaxFTPServer").value;
			pa = "server=" + ajs + "&password=" + ajp + "&user=" + aju + "&directory=" + AJAXFTP.currentPath + "&task=rmdir";

			ar = new Ajax.Request(ajaxFTPBaseURL + "/ajaxftp/process.xml.php", {parameters: pa, onSuccess: function(xm) {
				xmr = xm.responseXML;
				tRes = xmr.getElementsByTagName("result");
				tMsg = xmr.getElementsByTagName("message");
				if (tRes[0].firstChild.nodeValue == 0) {
					AJAXFTP.response.className = "ajaxFTPError";
					AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;

				} else {
					AJAXFTP.response.className = "ajaxFTPSuccess";
					AJAXFTP.response.innerHTML = tMsg[0].firstChild.nodeValue;
					setTimeout(function() {
						AJAXFTP.connect(AJAXFTP.getPreviousPath());
					}, 1000);
				}
			}});
		}
	},

	toggleAddLocal: function(btnObj) {
		if (btnObj.checked) {
			ajaf = document.getElementById("ajaxFTPAddTypeContent");
			ajaf.innerHTML = '<input type="file" name="ajaxFTPAddSRC" id="ajaxFTPAddSRC" />';
		}
	},

	toggleAddRemote: function(btnObj) {
		if (btnObj.checked) {
			ajaf = document.getElementById("ajaxFTPAddTypeContent");
			ajaf.innerHTML = '<input type="text" name="ajaxFTPAddRemote" id="ajaxFTPAddRemote" value="http://" />';
		}
	},

	totalNumberOfUploads:1,

	toggleAddMore: function(btnObj) {
	    if (btnObj.checked)
    	    this.addMoreFileSrcFields();
    	else {
    	    btnObj.checked = false;
    	}    
	},

	addMoreFileSrcFields : function() {
	    var addedNum = 5;
         for(var i = this.totalNumberOfUploads; i < (this.totalNumberOfUploads+addedNum); i++) {
            var addFileContainer = document.getElementById('ajaxFTPAddContainer');
            var fileInputField = document.createElement('input');
            fileInputField.setAttribute('id', 'ajaxFTPAddSRC' + i);
            fileInputField.setAttribute('name', 'ajaxFTPAddSRC' + i);
            fileInputField.setAttribute('type', 'file');
            fileInputField.setAttribute('size', '28');
            addFileContainer.appendChild(fileInputField);
        }
        this.totalNumberOfUploads+=addedNum;
    },

	clear: function() {
		AJAXFTP.response.innerHTML = "&nbsp;";
		document.getElementById("info-pane-inner").style.display = "none";
		AJAXFTP.currentSlideDown = "";
		document.getElementById("ajaxFTPAddForm").style.display = "none";
		document.getElementById("ajaxFTPAddDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameDirectoryForm").style.display = "none";
		document.getElementById("ajaxFTPRenameFileForm").style.display = "none";		
		brs = AJAXFTP.browser;
		if (document.all) { // stupid IE
			currentLength= brs.childNodes.length;
			for (x = 0; x < currentLength; x++) {
				if (brs.childNodes[x]) {
					brs.removeChild(brs.childNodes[x]);
				}
			}
		}
		brs.innerHTML = "";
	},
	
	showDetails: function() {
		rows = document.getElementsByTagName("TR");
		for (j = 0; j < rows.length; j++) {
			if (rows[j].className == "ftp-detail") {
				rows[j].style.display = (document.all) ? "block" : "table-row";
			} else if (rows[j].className == "ftp-disconnected") {
				rows[j].style.display = "none";
			}
		}
		document.getElementById("lblFTPDirectory").style.display = "inline";
	},
	
	hideDetails: function() {
		rows = document.getElementsByTagName("TR");
		for (j = 0; j < rows.length; j++) {
			if (rows[j].className == "ftp-detail") {
				rows[j].style.display = "none";
			} else if (rows[j].className == "ftp-disconnected") {
				rows[j].style.display = (document.all) ? "block" : "table-row";
			}
		}
	},
	
	hideNotification:function() {
	    var notificationNode = document.getElementById("busydiv");
	    
	    notificationNode.style.display='none';
	    document.getElementById("busydiv").style.display = "none";
	    
	    document.getElementById("btn-remove-directory").disabled=false;
		document.getElementById("btnAdd").disabled=false;
		document.getElementById("btnAdd").disabled=false;
		document.getElementById("btn-rename-directory").disabled=false;
		document.getElementById("btn-remove-file").disabled=false;
		document.getElementById("btn-rename-file").disabled=false;
		document.getElementById("btnAddDirectory").disabled=false;
		document.getElementById("ajaxFTPAddMore").disabled=false;
		document.getElementById("ajaxFTPAddFileBtn").disabled=false;
	}

}


function setcookie(cookieName,cookieValue,nDays) {
     var today = new Date();
     var expire = new Date();
     if (nDays==null || nDays==0) nDays=1;
     expire.setTime(today.getTime() + 3600000*24*nDays);
     document.cookie = cookieName+"="+escape(cookieValue)
                     + ";expires="+expire.toGMTString();
}

function getcookie(c_name) {
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
    return null;
}

