var Upload = {};

Upload._startDateMilliseconds = null;
Upload._uploadInProgress = false;
Upload._uploadFinished = false;
Upload._currentFileID = null;
Upload._tempFolder = null;
Upload._uploadedFileID = null;
Upload._onUploadCallback = null;

Upload.Form_Load = function(sender, e){
	if(Upload._uploadInProgress){
		var frame = document.getElementById("UploadFrame");
		//frame.style.height = "242px";
		//frame.style.width = "630px";
		frame.style.display = "";
		Upload._uploadInProgress = false;
		Upload._uploadFinished = true;
		var textContainer = document.getElementById("ProgressBarText");
		textContainer.innerHTML = "Готово!";
		var pbar = document.getElementById("ProgressBarContainer");
		pbar.style.display = "none";
	}
}

Upload.Upload_Click = function(sender, e){
	var srcElement = Controls.EventHelper.GetSourceElement(e);
	if(srcElement.tagName.toLowerCase() != 'a')
		srcElement = srcElement.parentNode;
	if(srcElement.tagName.toLowerCase() != 'a')
		srcElement = srcElement.parentNode;
	var d = srcElement.ownerDocument;
	var file = d.getElementById("FileInput");
	if(file.value == ""){
		alert("Моля, изберете файл!");
		return;
	}
	
	var arFilePath = file.value.split('\\');
	Upload._uploadedFileID = arFilePath[arFilePath.length - 1];
	Upload._tempFolder = d.getElementById("TempFolder").value;
	Upload._currentFileID = srcElement.getAttribute("FileID");
	if(srcElement.getAttribute("OnUploadCallback"))
		Upload._onUploadCallback = eval(srcElement.getAttribute("OnUploadCallback"));
	else
		Upload._onUploadCallback = null;
	//alert(Upload._currentFileID);
	//file.disabled = true;
	sender.disabled = true;
	
	var form = d.getElementById("UploadForm");
	form.submit();
	
	var frame = document.getElementById("UploadFrame");
	//frame.style.height = "50px";
	frame.style.display = "none";
	
	var bar = document.getElementById("ProgressBarImage");
	bar.style.width = "0%";
	var pbar = document.getElementById("ProgressBarContainer");
	pbar.style.display = "";
	Upload.CheckProgress();
	Upload._uploadInProgress = true;
	var time = new Date();
	Upload._startDateMilliseconds = time.valueOf();
}

Upload.CheckProgress = function(){
	//alert("CheckProgress");
	var request = new CHttpRequest();
	request.QueryString = "AjaxType=HTML&RequestFile=Templates.Upload.Frame&MethodName=XCheckProgress";
	request.AddProperty("Arguments[FileID]", Upload._currentFileID);
	request.AsyncCall = true;
	request.OnResponse = Upload.CheckProgress_Callback;
	request.Send();
}

Upload.CheckProgress_Callback = function(request, state){
	var textContainer = document.getElementById("ProgressBarText");
	if(textContainer == null)
		return;
	var bar = document.getElementById("ProgressBarImage");
	var infoArray = request.responseText.split(";");
	var read = isNaN(infoArray[0]) ? 0 : new Number(infoArray[0]);
	var total = isNaN(infoArray[1]) ? 0 : new Number(infoArray[1]);
	var percent = 0;
	var speed = 0;
	if(total > 0){
		percent = read / total * 100;
		var time = new Date();
		var mills = time.valueOf();
		var ellapsedSeconds = (mills - Upload._startDateMilliseconds) / 1000;
		speed = read / 1024 / ellapsedSeconds;
	}
	if(total > 0){
		if(percent == 100){
			var pbar = document.getElementById("ProgressBarContainer");
			pbar.style.display = "none";
			var pbar = document.getElementById("UploadFrame");
			pbar.style.display = "";
			
			var filesContainer = document.getElementById("FilesContainer");
			if(filesContainer != null){
				var fileContainer = document.createElement("span");
				fileContainer.name = Upload._uploadedFileID + "_Container";
				fileContainer.id =  Upload._uploadedFileID + "_Container";
				//fileContainer.style.verticalAlign = "top";
				filesContainer.appendChild(fileContainer);
				
				var fileImage = document.createElement("img");
				fileImage.src = "ApplicationFiles/Resources/Images/File.png";
				fileContainer.appendChild(fileImage);
				
				var fileLink = document.createElement("a");
				fileLink.className = "OpenFileLink";
				fileLink.href = "Temp/" + Upload._tempFolder + "/" + Upload._currentFileID + '.' + Upload._uploadedFileID;
				fileLink.target = "_blank";
				fileLink.innerHTML = Upload._uploadedFileID;
				fileLink.style.lineHeight = "25px";
				fileLink.style.verticalAlign = "3px";
				fileLink.style.marginRight = "5px";
				fileLink.style.marginLeft = "3px";
				fileContainer.appendChild(fileLink);
				
				fileLink = document.createElement("a");
				fileLink.fileID = Upload._tempFolder + "/" + Upload._currentFileID + '.' + Upload._uploadedFileID;
				fileLink.className = "OpenFileLink";
				fileLink.href = "javascript:void(0)";
				fileLink.innerHTML = "(изтрий)";
				fileLink.style.lineHeight = "25px";
				fileLink.style.verticalAlign = "3px";
				fileLink.style.marginRight = "5px";
				//fileLink.style.marginLeft = "3px";
				//fileLink.onclick = Upload.js
				fileContainer.appendChild(fileLink);
				Controls.EventHelper.RegisterEventHandler(fileLink, "onclick", Upload.RemoveFile_Click);
			}
			if(Upload._onUploadCallback)
				Upload._onUploadCallback();
		}else{
			var text = "";
			text += "<div class='UploadStatusLabel'>Качване...</div>";
			text += "<div style=''><b>Качено (KB):</b>&nbsp;"+ Controls.Number.Format(read / 1024 / 1024, 2, ",") +" MB от "+ Controls.Number.Format(total / 1024 / 1024, 2, ",") +" MB</div>";
			text += "<div style=''><b>Качено (%):</b>&nbsp;"+ Controls.Number.Format(percent, 2, ",") +"%</div>";
			text += "<div style=''><b>Скорост (KB/sec):</b>&nbsp;"+ Controls.Number.Format(speed, 2, ",") + "</div>";
			textContainer.innerHTML = text;
		}
		bar.style.width = percent + "%";
	}else{
		textContainer.innerHTML =  "<div class='UploadStatusLabel'>Започване...</div>";
	}
	
	if(total == 0 || total > read)
		window.setTimeout("Upload.CheckProgress()", 500);
}

Upload.RemoveFile_Click = function(e){
	var sender = Controls.EventHelper.GetSourceElement(e);
	//alert(sender.parentNode.childNodes[1].innerHTML);
	var request = new CHttpRequest();
	request.QueryString = "AjaxType=HTML&RequestFile=Templates.Upload.Frame&MethodName=XRemoveFile";
	request.AddProperty("Arguments[FileID]", sender.fileID);
	request.AsyncCall = true;
	request.Send();
	
	sender.parentNode.parentNode.removeChild(sender.parentNode);
}