var muck_ref_set = false;
var el_muck_strlen_rest;
var el_muck_maxlength;
var el_muck_submit_button = new Array();
var el_muck;
var el_ref_uri;
var el_ref_title;
var el_ref_show;
var el_ref_title_area;
var el_unset_ref_button;
var uri_check_on_req = false;

function unset_muck_ref() {
	el_ref_show.innerHTML = '';
	el_ref_title.value = '';
	el_ref_uri.value = '';
	el_unset_ref_button.style.display = 'none';
	el_ref_title.style.display = 'none';
	muck_ref_set = false;
	el_muck.onkeyup();
}

//window.onload = function() {
Event.observe(window, 'load', function() {

	el_muck = document.getElementById('muck');
	if(el_muck) {
		el_muck.focus();
	}

	el_muck_strlen_rest = document.getElementById('muck_strlen_rest');
	el_muck_maxlength = document.getElementById('muck_maxlength');
	el_muck_strlen_rest4ext = document.getElementById('muck_strlen_rest4ext');
	el_muck_maxlength4ext = document.getElementById('muck_maxlength4ext');
//	el_muck_submit_button.push = document.getElementById('muck_submit_button');
	var el_inputs = document.getElementsByTagName('input');
	if(el_inputs) {
		for(i = 0; i < el_inputs.length; i++) {
			switch(el_inputs[i].type) {
			case 'button':
			case 'submit':
				if(el_inputs[i].name == 'muck_submit_button') {
					el_muck_submit_button.push(el_inputs[i]);
				}
			}
			
		}
	}
	el_ref_uri = document.getElementById('muck_ref_uri');
	el_ref_title = document.getElementById('muck_ref_title');
	el_ref_show = document.getElementById('muck_ref_show');
	el_unset_ref_button = document.getElementById('unset_muck_ref_button');

	if(el_muck) {
		if(el_unset_ref_button) {
			el_unset_ref_button.style.display = 'none';
		}
		el_muck.onkeyup = function(event) {
//			el_muck_submit_button.disabled = (this.value.length == '');
			for(i = 0; i < el_muck_submit_button.length; i++) {
				el_muck_submit_button[i].disabled = (this.value.length == '');
			}
			var length_rest = el_muck_maxlength.value - this.value.length;
			el_muck_strlen_rest.style.color = (length_rest >= 0 ? 'silver' : 'red');
			el_muck_strlen_rest.innerHTML = length_rest;
			if(el_muck_maxlength4ext) {
				var length_rest4ext = el_muck_maxlength4ext.value - this.value.length;
				if(el_ref_uri && el_ref_uri.value.length) {
					length_rest4ext -= el_ref_uri.value.length + 1;
				}
				el_muck_strlen_rest4ext.style.color = (length_rest4ext >= 0 ? 'silver' : 'red');
				el_muck_strlen_rest4ext.innerHTML = length_rest4ext;
			}
			if(el_ref_uri) {
				if(!muck_ref_set && !uri_check_on_req) {
					var index_of_nl = null;
					index_of_nl = this.value.indexOf('\r');
					if(index_of_nl < 0) {
						index_of_nl = this.value.indexOf('\n');
						if(index_of_nl < 0) {
							return;
						}
					}
					uri_check_request(this, index_of_nl);
				}
			}
		}
		el_muck.onkeyup();
	}
	function uri_check_request(el, index_of_nl) {
		if(el.value.substring(0, index_of_nl).match(/^(.*)\:\/\/(.*)$/)) {
			var uri = RegExp.$1 + '://' + RegExp.$2;
			uri_check_on_req = true;
			sendRequest(
				function(oj) {
					if(el_ref_uri && el_ref_title && el_ref_show) {
						var data;
//						eval('data=' + decodeURI(oj.responseText));
						eval('data=' + oj.responseText);
						if(data.error) {
							el_ref_show.innerHTML = data.error;
						} else if(data.muck_ref_uri) {
							if(el_muck.value.indexOf(uri) == 0) {
								el_ref_show.innerHTML = '';
								el_muck.value = el_muck.value.slice(index_of_nl).replace(/^\s+/g, '');
								el_ref_title.value = data.muck_ref_title;
								el_ref_uri.value = data.muck_ref_uri;
								el_ref_title.style.display = 'inline';
								el_unset_ref_button.style.display = 'inline';
								muck_ref_set = true;
								el_muck.onkeyup();
//								if(data.warning) {
//									alert(data.warning);
//								}
							}
						}
					}
					uri_check_on_req = false;
				},
				{'muck_ref_uri' : uri},
				'GET',
				'/mem/mem_muck_ref_uri_json.php'
			);

		}
	}
//}
});

var el_dump, muck_no2dump;
function dump_confirm(el_dump, muck_no2dump) {
	sendRequest(
		function(oj) {
			var data;
			eval('data='+ decodeURI(oj.responseText));
			switch(data.type) {
			case 'confirm':
				if(confirm(data.confirm)) {
					location.href = el_dump.href;
				}
				break;
			case 'alert':
				alert(data.alert);
				break;
			case 'prompt':
				break;
			}
		},
		{'muck_no' : muck_no2dump},
		'GET',
		'/mem/mem_dump_check_json.php'
	);

	return false;
}
