
// true while uploading in progress
var re_uploading = false;

// uploaded urls
var re_uploaded_urls = [];

// number of urls to upload
var re_uploaded_urls_num = 0;

// uploading error messages
var re_uploading_errors = [];

// stored path index (used to remember the path choice so that wont need
// to select path again)
var re_upload_path_index = null;

// upload all remote objects
function re_upload_remote_resources(path_index) {
	// jQuery required
	if (!window.jQuery) return;

	if (re_uploading) {
		return;
	} else {
		re_uploading = true;
	}

var name = active_rich.name;

//re_upload_resource('http://localhost/rich/files/asdf/aqer/002.gif', path_index);
//re_upload_resource('http://localhost/rich/files/asdf/aqer/003.gif', path_index);
//return;

var doc = active_rich.document;

// images
var images = doc.getElementsByTagName("IMG");
var img_length = images.length;

	// calc number of urls to upload
	for (i=0; i<img_length; i++) {

		var src = images[i].getAttribute('src', 2);
//		var src = images[i].src;
//alert(src);


		// flash & video
		if (!$.browser.msie) {
			var k = images[i].id;
			var className = images[i].className;
//if (re_video_imgs[active_rich.name][k]) alert('# => ' + re_video_imgs[active_rich.name][k]['src']);
			if (className == 're_flash_img' &&
				re_flash_imgs[name] && re_flash_imgs[name][k]) {
//alert(k + ' => ' + className + ' => ' + re_flash_imgs[name][k]['src']);
				src = re_flash_imgs[name][k]['src'];
			}

			if (className == 're_video_img' &&
				re_video_imgs[name] && re_video_imgs[name][k]) {
//alert(k + ' => ' + className + ' => ' + re_video_imgs[name][k]['src']);
//alert(images[i].className + ' => ' + k);
				src = re_video_imgs[name][k]['src'];
			}
		}

//alert(src + ' => ' + re_uploaded_urls[src] + ' => ' + re_is_resource_remote(src));
		if (!re_uploaded_urls[src] && re_is_resource_remote(src)) {
//alert('# ' + src);
			re_uploaded_urls[src] = true;
			re_uploaded_urls_num++;
		}
	}


	// IE flash and video
	if ($.browser.msie) {

		var flash = doc.getElementsByTagName("OBJECT");
		var flash_length = flash.length;

		// calc number of urls to upload
		for (i=0; i<flash_length; i++) {

			var src = '';
			for (var j=0; j<flash[i].childNodes.length; j++) {
				var child = flash[i].childNodes(j);
				if (child.tagName == 'PARAM' &&
					String(child.name).toUpperCase() == 'SRC') {

					src = child.value;
					break;
				}
			}

			if (src == '') continue;

			if (!re_uploaded_urls[src] && re_is_resource_remote(src)) {
				re_uploaded_urls[src] = true;
				re_uploaded_urls_num++;
			}

//alert($('Src', flash[i]).val('value'));
//var obj = $('Src', flash[i]).val('value');
//for (j in obj) if (obj[j]) alert(j + ' => ' + obj[j]);
		}


		var videos = doc.getElementsByTagName("EMBED");
		var video_length = videos.length;

		// calc number of urls to upload
		for (i=0; i<video_length; i++) {
			var src = videos[i].getAttribute('src', 2);

			if (!re_uploaded_urls[src] && re_is_resource_remote(src)) {
				re_uploaded_urls[src] = true;
				re_uploaded_urls_num++;
			}

		}

	}


//alert(re_uploaded_urls + ' => ' + re_uploaded_urls_num);
	// upload urls found
	for (var i in re_uploaded_urls) {
		if (re_uploaded_urls[i] == true) {
			re_upload_resource(i, path_index);
		}
	}

	// nothing to upload
	if (re_uploaded_urls.length == 0) {
		re_uploading = false;
	}

}

// check if url is remote
function re_is_resource_remote(url) {
	// remote url must start with http:// or https://
	var re = new RegExp('^https?:\/\/', 'i');

	if (!re.test(url)) {
		return false;
	}


	var is_remote = true;

	var files_url  = eval(active_rich.name+"_files_url");

	if (typeof(files_url) == 'object') {
		var i;
		// take first path/url
		for (i in files_url) {
			var re = new RegExp('^' + files_url[i], 'i');

			if (re.test(url)) {
				is_remote = false;
				break;
			}

		}
	} else {
		var re = new RegExp('^' + files_url, 'i');
		is_remote = !re.test(url);
	}

	return is_remote;
}

// uploads resource
function re_upload_resource(url, path_index) {
var name = active_rich.name;
var files_path = eval(name+"_files_path");
var files_url  = eval(name+"_files_url");

	if (typeof(files_path) == 'object') {

		if (path_index) {
			var used_path = files_path[path_index];
			var used_url = files_url[path_index];
		} else {
			var i;
			// take first path/url
			for (i in files_path) {
				var used_path = files_path[i];
				var used_url = files_url[i];
				break;
			}
		}

	} else {
		var used_path = files_path;
		var used_url = files_url;
	}

//alert('Upload ' + url);
//alert(rich_class_path+"re_upload.php"+(rich_sess_param!=''?'?'.rich_sess_param:''));
	$.post(rich_class_path+"re_upload"+rich_dialog_ext+(rich_sess_param!=''?'?'.rich_sess_param:''),
		{
			url: url,
			files_path: used_path,
			lang: eval(active_rich.name+"_lang")

		},
		function(xml) {
			var error = $('#error', xml).text();
//alert(url + ' => ' + error);

			if (error != '') {
				re_uploading_errors[re_uploading_errors.length] = url + ': ' + error;

				// mark the url as failed to upload
				re_uploaded_urls[url] = false;
//				alert(error);
			} else {
				re_uploaded_urls[url] = $('#src', xml).text();
//alert(url + ' => Upload succeeded!');
//alert($('#src', xml).text());
			}
//				else alert('Upload succeeded!');

			re_uploaded_urls_num--;

			// uploading finished
			if (re_uploaded_urls_num == 0) {
				re_fix_uploaded_urls(used_url);
			}
//alert(url + ' => ' + xml);
//alert($('#src', xml).text() + ' => ' + $('#error', xml).text());

		}
	);

}

// replace sucessfully uploaded urls with local ones
function re_fix_uploaded_urls(files_url) {

	eval('var mode = '+active_rich.name+'_rich_mode;');
	// nothing to fix if in source mode
	if (!mode) return;


var name = active_rich.name;

var doc = active_rich.document;
var images = doc.getElementsByTagName("IMG");
var img_length = images.length;

	// calc number of urls to upload
	for (i=0; i<img_length; i++) {
		var src = images[i].src;


		// flash or video
		if (!$.browser.msie) {
			var k = images[i].id;
			var className = images[i].className;

			if (className == 're_flash_img' &&
				re_flash_imgs[name] && re_flash_imgs[name][k]) {
				src = re_flash_imgs[name][k]['src'];
			}

			if (className == 're_video_img' &&
				re_video_imgs[name] && re_video_imgs[name][k]) {
				src = re_video_imgs[name][k]['src'];
			}
		}


//alert(src + ' => ' + re_uploaded_urls[src]);
		if (re_uploaded_urls[src] &&
			re_uploaded_urls[src] != false && re_uploaded_urls[src] != true) {

			var new_src = files_url + re_uploaded_urls[src];

//alert(src + ' new => ' + new_src);
			// flash or video
			if (!$.browser.msie) {
				var k = images[i].id;
				if (className == 're_flash_img' && re_flash_imgs[name][k]) {
					re_flash_imgs[name][k]['src'] = new_src;
					continue;
				}

				if (className == 're_video_img' && re_video_imgs[name][k]) {
					re_video_imgs[name][k]['src'] = new_src;
					continue;
				}
			}

			images[i].setAttribute('src', new_src);
		}

	}


	// IE flash and video
	if ($.browser.msie) {

		var flash = doc.getElementsByTagName("OBJECT");
		var flash_length = flash.length;

		// calc number of urls to upload
		for (i=0; i<flash_length; i++) {
			var srcObj = $('param[@name="Src"]', flash[i]);

			if (srcObj) {
				var src = srcObj.attr('value');
			} else {
				continue;
			}

			if (re_uploaded_urls[src] &&
				re_uploaded_urls[src] != false && re_uploaded_urls[src] != true) {

				var new_src = files_url + re_uploaded_urls[src];


				var re = new RegExp(src, 'gi');
				flash[i].outerHTML = String(flash[i].outerHTML).replace(re, new_src);
			}

		}


		var videos = doc.getElementsByTagName("EMBED");
		var video_length = videos.length;

		// calc number of urls to upload
		for (i=0; i<video_length; i++) {
			var src = videos[i].getAttribute('src', 2);

			if (re_uploaded_urls[src] &&
				re_uploaded_urls[src] != false && re_uploaded_urls[src] != true) {

				var new_src = files_url + re_uploaded_urls[src];

				videos[i].setAttribute('src', new_src);
			}

		}

	}


	var lang = eval(active_rich.name+"_lang");

	if (re_uploading_errors.length > 0) {

		var errorMsg = re_uploading_errors.join('\n');
		alert(re_uploading_msg[lang] + ' "' + files_url + '":\n' + errorMsg);

	} else {

		alert(re_uploading_msg[lang] + ' "' + files_url + '":\n' + re_uploading_successful[lang]);

	}

	re_uploaded_urls = [];
	re_uploaded_urls_num = 0;
	re_uploading_errors = [];

	re_uploading = false;

}

