
var files = core.files = {
	select_text: "File kiválasztása...", 
	test_uploads: function() {
	}, 
	fill_empty_inputs: function() {
		var el, newfield, list = document.getElementsByTagName('input')
		var empty = [], active = []
		for (var k = 0; k < list.length; k++) {
			el = list[k]
			if (el.type !== 'file') continue
			if (el.value) active.push(el)
			else empty.push(el)
		}
		if (!active.length) return; // core.debug.debug("Please select a file first.")
		for (var k = 0; k < empty.length; k++) {
			el = Math.floor(Math.random(0, 1) * active.length)
			el = active[el]
			el = el.cloneNode(false)
			if (!empty[k].name || empty[k].name == '') continue
			el.name = empty[k].name
			el.id = empty[k].id
			el.onchange = empty[k].onchange
			el.style.opacity = 0
			var newfield = get(empty[k].id.slice(0, -6) + '_faked')
			newfield.value = el.value
			newfield = core.makenode("<div></div>")
			newfield.appendChild(el)
			//core.debug.debug('replacing ' + empty[k].id)
			//core.debug.debug("<b>" + empty[k].parentNode.innerHTML.slice(1, -1) + "</b>")
			//core.debug.debug("<b>" + el.parentNode.innerHTML.slice(1, -1) + "</b>")
			empty[k].parentNode.replaceChild(el, empty[k])
		}
	}, 
	reset_fields: function(names) { for (var i = 0; i < names.length; i++) core.files.reset_field(names[i]); }, 
	reset_field: function(basename) { return core.files.replace_field(basename, 1); }, 
	replace_field: function(basename, reset) {
		var id = basename
		basename = basename.split('_').slice(0, -1).join('_')
		var newfield, fake = get(id + '_faked'), front = get(id + '_front')
		if (front) {
			if (newfield = get(id)) newfield.parentNode.removeChild(newfield)
			newfield = core.makenode("<input id='" + front.id + "' class='file_front' type='file' onchange='core.files.replace_field(\"" + id + "\");' />")
			if (reset) {
				fake.value = core.files.select_text
				newfield.name = basename + "[]"
				front.parentNode.replaceChild(newfield, front)
				//core.debug.debug("replaced old field with new '" + newfield.name + "'<br />fake value: " + fake.value, 'ajax')
			} else {
				fake.value = front.value.split("\\").pop()
				newfield.title = front.value
				front.parentNode.insertBefore(newfield, front);
				front.id = id
				front.name = basename + "[]"
				front.onchange = function() { }
				//core.debug.debug("old field hidden and renamed to '" + front.name + "'<br />fake value: " + fake.value, 'ajax')
			}
		}
	}, 
	upload: function(form, callbacks) {
		if (!callbacks || typeof(callbacks) != 'object') callbacks = { }
		form.setAttribute('target', files.iframe.setup(callbacks));
		if (form.elements['response'] === undefined) 
			form.appendChild(core.makenode("<input type='hidden' name='response' value='json' />"))
		var res = callbacks && typeof(callbacks.onStart) == 'function' ? callbacks.onStart() : true;
		var tmp = core.baseurl + form.action.split(core.baseurl).slice(1).join('')
		core.debug.debug((res ? "++" : "&nbsp; --") + " files.upload: " + tmp, "ajax")
		return res
	},
	iframe: {
		count: 0, 
		setup: function(callbacks) {
			var div = document.createElement('DIV'), id = 'uploader_' + files.iframe.count++;
			div.innerHTML = '<iframe style="display:none" src="about:blank" id="' + id + '" name="' + id + '" onload="files.iframe.results(\'' + id + '\')"></iframe>';
			document.body.appendChild(div);
			var iframe = document.getElementById(id);
			iframe.onComplete = typeof(callbacks.onComplete) == 'function' ? callbacks.onComplete : function(text) { ajax.exec.apply(ajax, [text]); }
			return id;
		},
		results: function(id) {
			var doc, iframe = document.getElementById(id);
			if (iframe.contentDocument) doc = iframe.contentDocument;
			else if (iframe.contentWindow) doc = iframe.contentWindow.document;
			else doc = window.frames[id].document;
			if (doc.location.href == "about:blank") return;
			var t = doc.body.innerText || doc.body.textContent
			//core.debug.debug("text: " + t.replace(/[<]/g, '[').replace(/[>]/g, ']'))
			if (typeof(iframe.onComplete) == 'function') iframe.onComplete(t);
			setTimeout("document.body.removeChild(document.getElementById('" + id + "').parentNode)", 200)
		}
	}
}
