

var objDialog = null;

function bytesConvert(bytes) {
        var ext = new Array("B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
        var unitCount = 0;
        for(; bytes > 1024; unitCount++) bytes /= 1024;
        return (Math.round(bytes * 100) / 100) + " " + ext[unitCount];
}

function ImageUploader_UploadFileCountChange() {
	var obj = jQuery("#FMFileCount").get(0);
	if (obj != null) {
		var ou = getImageUploader("FMImageUploader");
		if (ou != null) {
			var c = ou.getUploadFileCount();
			jQuery(obj).html(c + " billede" + (c != 1 ? "r" : "") +" valgt");		
		}
	}
}

function ImageUploader_Progress(Status, Progress, ValueMax, Value, StatusText) {
	var objBar = jQuery("#FMUploadProgressBar");
	var objTxt = jQuery("#FMUploadProgressText");
	var objSel = jQuery("#FMFileSelector");

	switch(Status)
	{
		case "START":
			jQuery(objBar).progressbar({
				value: 0
			});
			jQuery(objSel).hide();
			jQuery(objDialog).dialog("open");

			break;

		case "PREPARE":
			jQuery(objDialog).dialog("option", "title", "Forbereder billeder til overførsel ("+ Value +" / " + ValueMax +")");
			jQuery(objTxt).html("<p>Aktuelt billede: " + StatusText + "</p>");
			jQuery(objBar).progressbar("value", Math.round(Value/ValueMax*100));
			break;

		case "UPLOAD":
			jQuery(objDialog).dialog("option", "title", "Overfører billeder "+ Math.round(Value/ValueMax*100) + "%");
			jQuery(objTxt).html("<p>Overført: " + bytesConvert(Value) + " ud af " + bytesConvert(ValueMax) + "</p><p>Aktuelt billede: " + StatusText + "</p>");
			jQuery(objBar).progressbar("value", Math.round(Value/ValueMax*100));

			break;

		case "COMPLETE":
			jQuery(objTxt).html("<p>Billederne er overført. Vent venligst...</p>");
			break;

		case "CANCEL":
			jQuery(objDialog).dialog("close");
			jQuery(objSel).show();
			break;

		case "ERROR":
			jQuery(objDialog).dialog("close");
			jQuery(objSel).show();
			alert("<p>Error arrised during uploading." + StatusText + "</p>");
			break;
	}
}       





function createXMLHttpRequest() {
	var oxml;  

	if(window.XMLHttpRequest) {    
		try {      
			oxml = new XMLHttpRequest();
		} catch(e) {      
			oxml = false;    
		}  
	} else if(window.ActiveXObject) {
		try {
			oxml = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {      
			oxml = false;    
		}  
	}  
	return oxml;
}

var req = createXMLHttpRequest();


function sendRequest(xml_url) {
	if (req) {
		req.open("GET", xml_url, false);
		req.onreadystatechange = handleResponse;  
		if (ua["iewin"]) {
			req.send();
		}
		else {
			req.send(null);	
		}
	} else {

	}
}


function handleResponse() {  
	if(req.readyState == 4) {    
		if (req.status==200) {
			var response = req.responseText;
			//alert(response);
		}
		else {
			//problem retrieving XML data		
		}
	}
}


function writeEventHandler(method) {
	if (ua["dom"]) {
		var str = "";
		switch(method) {
			case "xupload" :
				if (ua["iewin"]) {
					str += "<script type=\"text/vbscript\" language=\"vbscript\" src=\"/scripts/i_vb_xupload.asp\"></script>";
				}
				break;

			case "html" :
				break;
		}
		if (str.length > 0) {
			document.write(str);
		}
	}
}


function writeUploadForm(method) {
	if (ua["dom"]) {
		var str = "";
		switch (method) {
			case "iupload" :
				//do nothing
				break;

			case "xupload" :
				//do nothing ...
				break;

			case "html" :
				//do nothing ...
				break;
		}
		if (str.length > 0) {
			document.write(str);
		}
	}
}


function writeAddButton(method) {
	if (ua["dom"]) {
		var str = "";
		switch(method) {
			case "iupload" :
				str += "<a class=\"btn white\" title=\"Find enkelte filer til fremkaldelse\" href=\"#\"";
				str += " onmouseover=\"window.status='Find filer'; return true;\"";
				str += " onmouseout=\"window.status=''; return true;\"";
				str += " onclick=\"return b.opendialog();\">";
				str += "Find filer</a>";
				break;

			case "xupload" :
				if (ua["iewin"]) {
					str += "<a class=\"btn white\" title=\"Find enkelte filer til fremkaldelse\" href=\"#\"";
					str += " onmouseover=\"window.status='Find filer'; return true;\"";
					str += " onmouseout=\"window.status=''; return true;\"";
					str += " onclick=\"return b.opendialog();\">";
					str += "Find filer</a>";
				}
				break;

			case "html" :
				break;
		}
		if (str.length > 0) {
			document.write(str);
		}
	}
}

function writeAddFolderButton(method) {
	if (ua["dom"]) {
		var str = "";
		switch(method) {
			case "iupload" :
				str += "<a class=\"btn white\" title=\"Find mapper\" href=\"#\"";
				str += " onmouseover=\"window.status='Find mapper'; return true;\"";
				str += " onmouseout=\"window.status=''; return true;\"";
				str += " onclick=\"return b.openfolderdialog();\">";
				str += "Find mapper</a>";
				break;

			case "xupload" :
				if (ua["iewin"]) {
					str += "<a class=\"btn white\" title=\"Find mappe til fremkaldelse\" href=\"#\"";
					str += " onmouseover=\"window.status='Find mapper'; return true;\"";
					str += " onmouseout=\"window.status=''; return true;\"";
					str += " onclick=\"return b.openfolderdialog();\">";
					str += "Find mapper</a>";
				}
				break;
			case "html" :
				break;
		}
		if (str.length > 0) {
			document.write(str);
		}
	}
}

function writeRemoveButton(method) {
	if (ua["dom"]) {
		var str = "";
		switch(method) {
			case "iupload" : 
				str += "<a class=\"btn white\" title=\"Fjern markerede filer\" href=\"#\"";
				str += " onclick=\"return b.remove('iupload');\"";
				str += " onmouseover=\"window.status='Fjern markerede filer'; return true;\"";
				str += " onmouseout=\"window.status=''; return true;\""
				str += ">Fjern</a>";
				break;

			case "xupload" :
				if (ua["iewin"]) {
					str += "<a class=\"btn white\" title=\"Fjern markerede filer\" href=\"#\"";
					str += " onclick=\"return b.remove('xupload');\"";
					str += " onmouseover=\"window.status='Fjern'; return true;\"";
					str += " onmouseout=\"window.status=''; return true;\"";
					str += ">Fjern</a>";
				}
				break;

			case "html" :
				str += "<a class=\"btn white\" title=\"Fjern markerede filer\" href=\"#\"";
				str += " onclick=\"return b.resetFiles();\"";
				str += " onmouseover=\"window.status='Fjern alle'; return true;\"";
				str += " onmouseout=\"window.status=''; return true;\">";
				str += "Fjern alle";
				str += "</a>";
				break;
		}
		if (str.length > 0) {
			document.write(str);
		}
	}
}


function writeSubmit(method) {
	if (ua["dom"]) {
		var str = "";
		switch (method) {
			case "iupload" : 
				str += "<a class=\"btn white\" title=\"Start overf&oslash;rsel\" href=\"#\"";
				str += " onclick=\"return b.submitform('iupload');\""
				str += " onmouseover=\"window.status='Start overf&oslash;rsel'; return true;\""
				str += " onmouseout=\"window.status=''; return true;\">";
				str += "Start overf&oslash;rsel"
				str += "</a>";
				break;

			case "xupload" :
				if (ua["iewin"]) {
					str += "<a class=\"btn white\" title=\"Starter overf&oslash;relse\" href=\"#\"";
					str += " onclick=\"return b.submitform('xupload');\"";
					str += " onmouseover=\"window.status='Start overf&oslash;rsel'; return true;\"";
					str += " onmouseout=\"window.status=''; return true;\">";
					str += "Start overf&oslash;rsel";
					str += "</a>";
				}
				break;
			case "html" :
				str += "<a class=\"btn white\" title=\"Starter overf&oslash;relse\" href=\"#\"";
				str += " onclick=\"return b.submitform('html');\"";
				str += " onmouseover=\"window.status='Start overf&oslash;rsel'; return true;\"";
				str += " onmouseout=\"window.status=''; return true;\">";
				str += "Start overførsel";
				str += "</a>";

				break;
		}
		if (str.length > 0)	{
			document.write(str);
		}
	}
}


function writeAlternateOptions(method) {
	if (ua["dom"]) {
		var str = "";
		
		switch(method) {
			case "iupload" :
				if (ua["iewin"]) {
					str += "<div>Du kan også benytte disse overførselsmetoder:</div>";
					str += "<ol class=\"options\">";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/xupload/\">ActiveX-baseret</a></strong></div><div class=\"description\">Kræver installation af en ActiveX komponent.</div></li>";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/html/\">Simpel</a></strong></div><div class=\"description\">Kræver ingen ekstra programmer.</div></li>";
					str += "</ol>";
				}
				else {
					str += "<div class=\"method\">Du kan også bruge den <strong><a href=\"/upload/html/\">simple</a></strong> overførselsmetode.</div><div class=\"description\">Kræver ingen ekstra programmer.</div>";	
				}

				break;

			case "xupload" :
				if (ua["iewin"]) {
					str += "<div>Du kan også benytte disse overførselsmetoder:</div>";
					str += "<ol class=\"options\">";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/iupload/\">Avanceret</a></strong></div><div class=\"description\">Kræver Java-plugin</div></li>";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/html/\">Simpel</a></strong></div><div class=\"description\">Kræver ingen ekstra programmer.</div></li>";
					str += "</ol>";
				}
				break;

			case "html" :
				if (ua["iewin"]) {
					str += "<div>Du kan også benytte disse mere avancerede overførselsmetoder:</div>";
					str += "<ol class=\"options\">";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/xupload/\">ActiveX-baseret</a></strong></div><div class=\"description\">Kræver installation af en ActiveX komponent.</div></li>";
					str += "<li><div class=\"method\"><strong><a href=\"/upload/iupload/\">Java-baseret</a></strong></div><div class=\"description\">Kræver Java-plugin.</div></li>";
					str += "</ol>";
				}
				else {
					str += "<div>Du kan også benytte den <strong><a href=\"/upload/iupload/\">avancerede</a></strong> overførselsmetode (kræver Java-plugin)</div>";	
				}
				break;
		}

		if (str.length > 0) {
			str = "<h1>Muligheder</h1>" + str;
			document.write(str);
		}
	}
}






/* upload / broken upload / resumed upload functions */
function batch() {
	if (ua["dom"]) {
		this.uploadbatch = "";
		this.uploadtype = "";

		this.addfile = function(file_name) {
			switch(this.uploadtype) {
				case "xupload" :
					//do nothing...
					break;
				case "html" :
					//do nothing...
					break;
			}
		}

		/* Only accept files with given extensions */
		this.validateFile = function(field) {
			var ftypeRegex = /.+\.(jpg|jpeg|png|tif|tiff|bmp)$/gi;
			var res = field.value.match(ftypeRegex);
			var msg = document.getElementById(field.id + "msg");
			if (res != null) {
				msg.innerHTML = "";
				return true;
			}
			else {
				msg.innerHTML = "<img src=\"/images/icons/icon_error.gif\" width=\"20\" height=\"20\" alt=\"\" title=\"Filformatet er ikke underst&oslash;ttet\" />";
				return false;
			}
		}

		this.initFileInput = function(field) {
			if (!ua["iemac"]) {
				var mybatch = this;
				field.onchange = function() {
					mybatch.validateFile(this);
				}
			}
		}

		this.initFileInputs = function() {
			var frm = document.forms["fileupload"];
			var aInput = frm.getElementsByTagName("INPUT");
			for (var i = 0;  i < aInput.length; i++) {
				if (aInput[i].type == "file") {
					if (aInput[i].parentNode.className == "filecontainer") {
						this.initFileInput(aInput[i]);
					}
				}
			}
		}


		this.remove = function(method) {
			var uploadbatch = this.uploadbatch;
			switch(method) {
				case "iupload" :
					var ou = getImageUploader("FMImageUploader");
					if (ou != null) {
						ou.RemoveFromUploadList();	
					}

					break;
				case "xupload" :
					var ou = document.xupload;
					if (ou != null)	{
						ou.RemoveHighlighted();
					}
					break;

				case "html" :
					break;
			}
			return false;
		}

	

		this.removeFile = function(fieldname) {
			var elm = document.getElementById(fieldname + "container");
			if (elm) {
				//NOTE: IE/Mac crashes on onchange event, so we won't handle this.
				//Validation of files will wait until final submit.
				elm.innerHTML =	"<input"
								+ " type=\"file\""
								+ " class=\"file\""
								+ " name=\"" + fieldname + "\""
								+ " id=\"" + fieldname + "\""
								+ " size=\"50\""
								+ (!ua["iemac"] ? " onchange=\"b.validateFile(this)\"" : "")
								+ " />";

				var elmpath = document.getElementById(fieldname + "path");
				if (elmpath) {
					elmpath.value = "";
				}
				var elmmsg = document.getElementById(fieldname + "msg");
				if (elmmsg)	{
					elmmsg.innerHTML = "";
				}
			}
		}

		this.resetFiles = function() {
			var frm = document.forms["fileupload"];
			var aInput = frm.getElementsByTagName("INPUT");
			for (var i = 0; i < aInput.length; i++) {
				if (aInput[i].type == "file") {
					this.removeFile(aInput[i].id);
				}			
			}
			return false;
		}

		this.submitform = function(uploadtype) {
			switch (uploadtype) {
				case "iupload" :
					var ou = getImageUploader("FMImageUploader");
					if (ou != null) {
						if (ou.getUploadFileCount() > 0) {

							if (!ua["iewin"]) {
								alert("VIGTIGT: Rør venligst ikke ved tastatur eller knapper under overførslen!\nSiden kan fryse og du vil blive nødt til at starte forfra.");
							}

							if (this.initializetransfer(uploadtype)) {

							}
						}
					}
					break;

				case "xupload" :
					if (this.initializetransfer(uploadtype)) {
						//...
					}
					break;

				case "html" :
					if (this.initializetransfer(uploadtype)) {
						open_dialog_wait();
						document.forms["fileupload"].submit();
					}
					break;
			}
			return false;
		}


		//Preregister file for batch
		this.registerFile = function(batch, file, size) {
			var src = "";
			src = "/upload/server/regfile.asp"
					+ "?batch=" + batch
					+ "&file=" + (ua["iemac"] ? escape(file) : encodeURIComponent(file))
					+ "&size=" + size;
			sendRequest(src);
		}


		//Unregisters file from batch
		this.unregisterFile = function(batch, file) {
			var src = "";
			src = "/upload/server/remfile.asp"
						+ "?batch=" + batch
						+ "&file=" + encodeURIComponent(file);
			sendRequest(src);
		}

		//Unregisters all files from batch
		this.unregisterAllFiles = function(batch) {
			var src = "";
			src = "/upload/server/remfile.asp?batch=" + batch;
			sendRequest(src);
		}

		//initialize imagelib
		this.initializelib = function(batch) {
			var src = "";
			src = "/upload/server/initializelib.asp"
						+ "?batch=" + batch
			sendRequest(src);
		}


		//Initializes file upload
		this.initializetransfer = function(uploadtype) {
			var uploadbatch = this.uploadbatch;

			switch(uploadtype) {
				case "iupload" :
					var ou = getImageUploader("FMImageUploader");
					if (ou != null) {
						var now = new Date();
						fixDate(now);
						now.setTime(now.getTime() + 1 * 24 * 60 * 60 * 1000);

						
						var oig = document.getElementById("imagegroup_id");
						if (oig) {
							var p = "&imagegroup_id=" + oig[oig.selectedIndex].value;
							ou.setAction("/upload/server/default.asp?transfermethod=iupload" + p);
							ou.setRedirectUrl("/upload/server/transfer.asp?transfermethod=iupload" + p);
						}

						this.initializelib(uploadbatch);
						setCookie("uploadbatch", uploadbatch, now, "/");
						ou.Send();

					}
					break;

				case "xupload" :
					var ou = document.xupload;
					if (ou != null) {
						var now = new Date();
						fixDate(now);
						now.setTime(now.getTime() + 1 * 24 * 60 * 60 * 1000);

						if (ou.FileCount > 0) {
							open_dialog_wait();

							var oig = document.getElementById("imagegroup_id");
							if (oig) {
								ou.RedirectUrl = document.getElementById("redirecturl").value + "&imagegroup_id=" + oig(oig.selectedIndex).value;
							}

							this.unregisterAllFiles(uploadbatch);
							this.initializelib(uploadbatch);

							setCookie("uploadbatch", uploadbatch, now, "/");

							for (var i = 1; i <= ou.FileCount; i++) {
								this.registerFile(uploadbatch, ou.SelectedFiles(i).Path, ou.SelectedFiles(i).Size);
							}

							ou.Upload();
						}
					}
					break;

				case "html" :
					var aInput = document.forms["fileupload"].getElementsByTagName("INPUT");
					var aFiles = Array();
					var validfiles = true;
				
					for (var i = 0; i < aInput.length; i++) {
						if (aInput[i].type == "file") {
							file_name = trim(aInput[i].value);
							if (file_name != "") {
								if (this.validateFile(aInput[i])) {
									aFiles[aFiles.length] = file_name;
									var file_path_input = document.getElementById(aInput[i].id + "path");
									if (file_path_input) {
										file_path_input.value = file_name;
									}
								}
								else {
									validfiles = false;
								}
							}
						}
					}

					/* Only submit if all files are valid: */
					if (validfiles)	{
						if (aFiles.length > 0) {
							return true;
						}
					}
					else {
						alert("En eller flere af de valgte filer er af forkert format.\nFotom@ail understøtter billeder af typen JPG, PNG, TIF og BMP");
					}

					return false;
					break;
			}
		}


		//Opens file dialog
		this.opendialog = function() {
			switch(this.uploadtype) {
				case "iupload" :
					var ou = getImageUploader("FMImageUploader");		
					if (ou != null) {
						ou.AddFiles();
					}
					break;

				case "xupload" :
					if (ua["iewin"]) {
						var ou = document.xupload;
						if (ou != null) {
							ou.Select();
						}
					}
					break;

				case "html" :
					//do nothing
					break;
			}
			return false;
		}

		this.openfolderdialog = function() {
			switch(this.uploadtype) {
				case "iupload" :
					var ou = getImageUploader("FMImageUploader");
					if (ou != null) {
						ou.AddFolders();
					}
					break;

				case "xupload" :
					if (ua["iewin"]) {
						var ou = document.xupload;
						if (ou != null) {
							ou.SelectFolder();
						}
					}
					break;

				case "html" :
					//do nothing
					break;
			}
			return false;
		}

		this.addFiles = function() {
			switch(this.uploadtype) {
				case "xupload" :
					if (ua["iewin"]) {
						var ou = document.xupload;
						if (ou != null) {
							if (ou.FileCount > 749) {				
								for (i = ou.FileCount; i > 749; i--) {
									ou.Remove(i);
								}

								alert("Der kan overføres max 750 filer ad gangen. Vælg op til 750 filer og overfør disse. Klik herefter på \"Tilføj billeder\" i bunden af siden, hvorved du kommer tilbage og kan overføre de næste (igen max 750 stk.).");
							}
						}
					}
					break;

				case "html" :
					//do nothing
					break;
			}
			return false;
		}
	}
}

